]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge remote-tracking branch 'origin/divVerent/csqcmodel'
authorRudolf Polzer <divverent@alientrap.org>
Fri, 16 Dec 2011 15:48:38 +0000 (16:48 +0100)
committerRudolf Polzer <divverent@alientrap.org>
Fri, 16 Dec 2011 15:48:38 +0000 (16:48 +0100)
15 files changed:
balanceXonotic.cfg
defaultXonotic.cfg
effectinfo.txt
menu.dat.es.po
qcsrc/client/projectile.qc
qcsrc/dpdefs/menudefs.qc
qcsrc/menu/menu.qc
qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c
qcsrc/server/autocvars.qh
qcsrc/server/cl_client.qc
qcsrc/server/clientcommands.qc
qcsrc/server/g_world.qc
qcsrc/server/t_items.qc
qcsrc/server/teamplay.qc
qcsrc/server/waypointsprites.qc

index e3c0ecff45b358bc23aa789f995e7878e6b1daea..4d893d60942bdcfd1f8f9ec5877d6b4a40e5173d 100644 (file)
@@ -282,7 +282,7 @@ set g_balance_shotgun_secondary_melee_traces 10
 set g_balance_shotgun_secondary_melee_no_doubleslap 1
 set g_balance_shotgun_secondary_melee_nonplayerdamage 40
 set g_balance_shotgun_secondary_melee_multihit 1
-set g_balance_shotgun_secondary_damage 100
+set g_balance_shotgun_secondary_damage 70
 set g_balance_shotgun_secondary_force 200
 set g_balance_shotgun_secondary_refire 1.25
 set g_balance_shotgun_secondary_animtime 1
@@ -445,16 +445,16 @@ set g_balance_crylink_primary_damage 10
 set g_balance_crylink_primary_edgedamage 5
 set g_balance_crylink_primary_force -55
 set g_balance_crylink_primary_radius 80
-set g_balance_crylink_primary_speed 1800
-set g_balance_crylink_primary_spread 0.075
-set g_balance_crylink_primary_shots 7
+set g_balance_crylink_primary_speed 2000
+set g_balance_crylink_primary_spread 0.08
+set g_balance_crylink_primary_shots 6
 set g_balance_crylink_primary_bounces 1
 set g_balance_crylink_primary_refire 0.7
 set g_balance_crylink_primary_animtime 0.3
 set g_balance_crylink_primary_ammo 3
 set g_balance_crylink_primary_bouncedamagefactor 0.5
-set g_balance_crylink_primary_joindelay 0
-set g_balance_crylink_primary_joinspread 0.4
+set g_balance_crylink_primary_joindelay 0.1
+set g_balance_crylink_primary_joinspread 0.2
 set g_balance_crylink_primary_jointime 0
 set g_balance_crylink_primary_joinexplode 1
 set g_balance_crylink_primary_joinexplode_damage 0
index 87076513dea8e17fdba0e044e9683abd68869f18..2db0a55347eea89b13bddb09a34a245dd4bf0284 100644 (file)
@@ -500,12 +500,9 @@ set g_shootfromfixedorigin "" "if set to a string like 0 y z, the gun is moved t
 set g_pinata 0 "if set to 1 you will not only drop your current weapon when you are killed, but you will drop all weapons that you possessed"
 set g_weapon_stay 0 "if set to 1 or 2, weapons stay after they were picked up (1: weapons you don't have yet give you ammo of their type and they can not be dropped, 2: weapons don't give ammo, but instead players start with one pickup-load of ammo by default, 3: weapons give ammo, weapons only stay as ammo-less ghosts)"
 set g_weapon_throwable 1 "if set to 1, weapons can be dropped"
-set g_powerup_superhealth 1 "if set to 0 the mega health powerup will not spawn on the map"
-set g_powerup_strength 1 "if set to 0 the strength powerup will not spawn on the map"
-set g_powerup_shield 1 "if set to 0 the shield (invincibility) powerup will not spawn on the map"
-set g_balance_powerup_timer 1 "if set to 0 the powerups dont wear off"
+set g_powerups -1 "if set to 0 the strength and shield (invincibility) will not spawn on the map, if 1 they will spawn in all game modes, -1 is game mode default"
 set g_use_ammunition 1 "if set to 0 all weapons have unlimited ammunition"
-set g_pickup_items 1 "if set to 0 all items (health, armor, ammo, weapons...) are removed from the map"
+set g_pickup_items -1 "if set to 0 all items (health, armor, ammo, weapons...) are removed from the map, if 1 they are forced to spawn"
 set g_minstagib 0      "enable minstagib"
 set g_minstagib_extralives 2   "how many extra lives you will get per powerup"
 set g_minstagib_ammo_start 10  "starting ammo"
@@ -838,7 +835,6 @@ set g_arena 0 "Arena: many one-on-one rounds are played to find the winner"
 set g_arena_maxspawned 2       "maximum number of players to spawn at once (the rest is spectating, waiting for their turn)"
 set g_arena_roundbased 1       "if disabled, the next player will spawn as soon as someone dies"
 set g_arena_warmup 5   "time, newly spawned players have to prepare themselves in round based matches"
-set g_arena_powerups 0 "enables powerups (superhealth, strength and shield), which are removed by default"
 
 // ca
 set g_ca 0 "Clan Arena: Played in rounds, once you're dead you're out! The team with survivors wins the round."
index 07061642b2f3e746b270870ac1ceafce194c6c09..0d464f5f7740d4dc7e9d26e4242fb4b7cd974182 100644 (file)
@@ -1219,7 +1219,7 @@ stretchfactor 2.5
 
 
 
-// hagar trail
+// mortar trail
 // smoke
 // used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("TR_GRENADE"), from, to)
 // used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("TR_GRENADE"), from, to)
@@ -1265,7 +1265,7 @@ velocityjitter 16 16 16
 
 
 
-// mortar trail
+// hookbomb trail
 // smoke
 // used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("TR_KNIGHTSPIKE"), from, to)
 // used in qcsrc/client/projectile.qc:                 trailparticles(self, particleeffectnum("TR_KNIGHTSPIKE"), from, to)
@@ -6644,3 +6644,45 @@ velocityjitter 96 96 96
 velocitymultiplier 5
 staincolor 0x808080 0x808080
 staintex 16 24
+
+// hagar trail
+// smoke
+effect tr_hagar
+trailspacing 4
+type smoke
+color 0x101010 0x000000
+tex 0 8
+size 3 2
+bounce 1
+sizeincrease 10
+alpha 300 400 780
+originjitter 1 1 1
+velocityjitter 1 1 1
+velocitymultiplier -0.02
+//gravity -0.11
+// fire
+effect tr_hagar
+notunderwater
+trailspacing 4
+type static
+color 0xffdf72 0x811200
+tex 48 55
+size 5 2
+sizeincrease -15
+alpha 100 144 988
+airfriction 8
+velocityjitter 32 32 32
+velocitymultiplier -1.0
+// bubbles
+effect tr_hagar
+underwater
+trailspacing 16
+type bubble
+tex 62 62
+color 0x404040 0x808080
+size 1 1
+alpha 256 256 256
+gravity -0.125
+bounce 1.5
+liquidfriction 4
+velocityjitter 16 16 16
index 47ba9ac194d249a281b9ffddab4668f9c5d98155..65636cfccf65d6e119114112b0160f6aec01e31b 100644 (file)
@@ -8,7 +8,8 @@ msgstr ""
 "Project-Id-Version: Xonotic 0.1preview\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2011-09-02 07:51+0200\n"
-"Last-Translator: Rodrigo Mouton Laudin <ratogenesis@gmail.com>\n"
+"Author: Rodrigo Mouton Laudin <ratogenesis@gmail.com>\n"
+"Last-Translator: mand1nga <mand1nga@xonotic.org>\n"
 "Language: es\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
index e8274c8cd95d44a9ca61904e43ea20b3627c883c..426ef78250a6d49909e36dafb3a71a5096e6483f 100644 (file)
@@ -289,8 +289,8 @@ void Ent_Projectile()
                        case PROJECTILE_PORTO_RED: setmodel(self, "models/grenademodel.md3");self.traileffect = particleeffectnum("TR_WIZSPIKE"); self.scale = 4; break;
                        case PROJECTILE_PORTO_BLUE: setmodel(self, "models/grenademodel.md3");self.traileffect = particleeffectnum("TR_WIZSPIKE"); self.scale = 4; break;
                        case PROJECTILE_HOOKBOMB: setmodel(self, "models/grenademodel.md3");self.traileffect = particleeffectnum("TR_KNIGHTSPIKE"); break;
-                       case PROJECTILE_HAGAR: setmodel(self, "models/hagarmissile.mdl");self.traileffect = particleeffectnum("TR_GRENADE"); self.scale = 0.75; break;
-                       case PROJECTILE_HAGAR_BOUNCING: setmodel(self, "models/hagarmissile.mdl");self.traileffect = particleeffectnum("TR_GRENADE"); self.scale = 0.75; break;
+                       case PROJECTILE_HAGAR: setmodel(self, "models/hagarmissile.mdl");self.traileffect = particleeffectnum("tr_hagar"); self.scale = 0.75; break;
+                       case PROJECTILE_HAGAR_BOUNCING: setmodel(self, "models/hagarmissile.mdl");self.traileffect = particleeffectnum("tr_hagar"); self.scale = 0.75; break;
                        case PROJECTILE_FIREBALL: self.model = ""; self.modelindex = 0; self.traileffect = particleeffectnum("fireball"); break; // particle effect is good enough
                        case PROJECTILE_FIREMINE: self.model = ""; self.modelindex = 0; self.traileffect = particleeffectnum("firemine"); break; // particle effect is good enough
                        case PROJECTILE_TAG: setmodel(self, "models/laser.mdl"); self.traileffect = particleeffectnum("TR_ROCKET"); break;
index 0a7bd6ae436fb0fcd9f34215d0e071e5e9900363..4b56257a09a42e475e367a3c1aab853eb3079393 100644 (file)
@@ -16,7 +16,7 @@ void          end_sys_fields;
 void() m_init;
 void(float keynr, float ascii) m_keydown;
 void() m_draw;
-void() m_toggle;
+void(float mode) m_toggle;
 void() m_shutdown;
 
 /////////////////////////////////////////////////////////
index f5c0f6da5d2b36fdce817b36a8e4d483272a8a7f..2b0a636bb5593307a0aff0404be495b2b9b3743c 100644 (file)
@@ -819,12 +819,20 @@ void m_hide()
        main.hideNotify(main);
 }
 
-void m_toggle()
+void m_toggle(float mode)
 {
        if(Menu_Active)
+       {
+               if (mode == 1)
+                       return;
                m_hide();
+       }
        else
+       {
+               if (mode == 0)
+                       return;
                m_display();
+       }
 }
 
 void m_shutdown()
index 2711c57e7f1eb53789d075a560557c870e5fdddc..7133eb67f1ec601a80c555ab2f75d48c5d7ca6d5 100644 (file)
@@ -96,6 +96,10 @@ string XonoticMutatorsDialog_toString(entity me)
                s = strcat(s, ", ", _("Blood loss"));
        if(cvar("g_jetpack"))
                s = strcat(s, ", ", _("Jet pack"));
+       if(cvar("g_powerups") == 0)
+               s = strcat(s, ", ", _("No powerups"));
+       if(cvar("g_powerups") > 0)
+               s = strcat(s, ", ", _("Powerups"));
        if(s == "")
                return ZCTX(_("MUT^None"));
        else
index c210f848a2955e9b0aaa17cf52af6b92fe8c21c5..c6c29817aed4a806509796e7fa28d07e4cf6d043 100644 (file)
@@ -73,7 +73,6 @@ float autocvar_g_antilag_nudge;
 float autocvar_g_arena_maxspawned;
 float autocvar_g_arena_point_leadlimit;
 float autocvar_g_arena_point_limit;
-float autocvar_g_arena_powerups;
 float autocvar_g_arena_roundbased;
 float autocvar_g_arena_warmup;
 float autocvar_g_assault;
@@ -566,7 +565,6 @@ float autocvar_g_balance_powerup_strength_force;
 float autocvar_g_balance_powerup_strength_selfdamage;
 float autocvar_g_balance_powerup_strength_selfforce;
 float autocvar_g_balance_powerup_strength_time;
-float autocvar_g_balance_powerup_timer;
 float autocvar_g_balance_rocketlauncher_ammo;
 float autocvar_g_balance_rocketlauncher_animtime;
 float autocvar_g_balance_rocketlauncher_damage;
@@ -924,9 +922,7 @@ float autocvar_g_player_alpha;
 float autocvar_g_player_brightness;
 float autocvar_g_playerclip_collisions;
 string autocvar_g_playerstats_uri;
-float autocvar_g_powerup_shield;
-float autocvar_g_powerup_strength;
-float autocvar_g_powerup_superhealth;
+float autocvar_g_powerups;
 float autocvar_g_projectiles_damage;
 float autocvar_g_projectiles_newton_style;
 float autocvar_g_projectiles_newton_style_2_maxfactor;
index 171fcf35b27e28a021acb742494e311debd0e0c1..d34a0c28756c05e966a1ff986dd41dc54b43addc 100644 (file)
@@ -1852,7 +1852,7 @@ void player_powerups (void)
                if (self.items & IT_INVINCIBLE)
                {
                        play_countdown(self.invincible_finished, "misc/poweroff.wav");
-                       if (time > self.invincible_finished && autocvar_g_balance_powerup_timer)
+                       if (time > self.invincible_finished)
                        {
                                self.items = self.items - (self.items & IT_INVINCIBLE);
                                sprint(self, "^3Speed has worn off\n");
@@ -1873,7 +1873,7 @@ void player_powerups (void)
                {
                        play_countdown(self.strength_finished, "misc/poweroff.wav");
                        self.effects = self.effects | (EF_BLUE | EF_ADDITIVE | EF_FULLBRIGHT);
-                       if (time > self.strength_finished && autocvar_g_balance_powerup_timer)
+                       if (time > self.strength_finished)
                        {
                                self.items = self.items - (self.items & IT_STRENGTH);
                                sprint(self, "^3Strength has worn off\n");
@@ -1891,7 +1891,7 @@ void player_powerups (void)
                {
                        play_countdown(self.invincible_finished, "misc/poweroff.wav");
                        self.effects = self.effects | (EF_RED | EF_ADDITIVE | EF_FULLBRIGHT);
-                       if (time > self.invincible_finished && autocvar_g_balance_powerup_timer)
+                       if (time > self.invincible_finished)
                        {
                                self.items = self.items - (self.items & IT_INVINCIBLE);
                                sprint(self, "^3Shield has worn off\n");
index b62f34f23320de68f6e46cf0dbe4ce8b366244f5..7f52f8f8c951fe3161eee840a2fcaf2d1dcab53c 100644 (file)
@@ -278,25 +278,33 @@ void SV_ParseClientCommand(string s) {
                } else if(lockteams) {
                        sprint( self, "^7The game has already begun, you must wait until the next map to be able to join a team.\n");
                } else if( argv(1) == "red" ) {
-                       if(self.team != COLOR_TEAM1 || self.deadflag != DEAD_NO)
-                               ClientKill_TeamChange(COLOR_TEAM1);
-                       else
+                       if(self.team == COLOR_TEAM1 && self.deadflag == DEAD_NO)
                                sprint( self, "^7You already are on that team.\n");
-               } else if( argv(1) == "blue" ) {
-                       if(self.team != COLOR_TEAM2 || self.deadflag != DEAD_NO)
-                               ClientKill_TeamChange(COLOR_TEAM2);
+                       else if (self.wasplayer && autocvar_g_changeteam_banned)
+                               sprint( self, "^1You cannot change team, forbidden by the server.\n");
                        else
+                               ClientKill_TeamChange(COLOR_TEAM1);
+               } else if( argv(1) == "blue" ) {
+                       if(self.team == COLOR_TEAM2 && self.deadflag == DEAD_NO)
                                sprint( self, "^7You already are on that team.\n");
-               } else if( argv(1) == "yellow" ) {
-                       if(self.team != COLOR_TEAM3 || self.deadflag != DEAD_NO)
-                               ClientKill_TeamChange(COLOR_TEAM3);
+                       else if (self.wasplayer && autocvar_g_changeteam_banned)
+                               sprint( self, "^1You cannot change team, forbidden by the server.\n");
                        else
+                               ClientKill_TeamChange(COLOR_TEAM2);
+               } else if( argv(1) == "yellow" ) {
+                       if(self.team == COLOR_TEAM3 && self.deadflag == DEAD_NO)
                                sprint( self, "^7You already are on that team.\n");
-               } else if( argv(1) == "pink" ) {
-                       if(self.team != COLOR_TEAM4 || self.deadflag != DEAD_NO)
-                               ClientKill_TeamChange(COLOR_TEAM4);
+                       else if (self.wasplayer && autocvar_g_changeteam_banned)
+                               sprint( self, "^1You cannot change team, forbidden by the server.\n");
                        else
+                               ClientKill_TeamChange(COLOR_TEAM3);
+               } else if( argv(1) == "pink" ) {
+                       if(self.team == COLOR_TEAM4 && self.deadflag == DEAD_NO)
                                sprint( self, "^7You already are on that team.\n");
+                       else if (self.wasplayer && autocvar_g_changeteam_banned)
+                               sprint( self, "^1You cannot change team, forbidden by the server.\n");
+                       else
+                               ClientKill_TeamChange(COLOR_TEAM4);
                } else if( argv(1) == "auto" ) {
                        ClientKill_TeamChange(-1);
                } else {
index 79641ed70eb130a7c292ecd8e4c3c9b754b85be6..bf89111c7bfdc44e29bc981d7423e3c1b13257be 100644 (file)
@@ -410,10 +410,10 @@ void cvar_changes_init()
                //   :%s,//\([^ ]*\).*,BADCVAR("\1");,
                //   :%!sort
                // yes, this does contain some redundant stuff, don't really care
+               BADCVAR("bot_config_file");
                BADCVAR("bot_number");
                BADCVAR("bot_prefix");
                BADCVAR("bot_suffix");
-               BADCVAR("bot_config_file");
                BADCVAR("capturelimit_override");
                BADCVAR("fraglimit_override");
                BADCVAR("gametype");
@@ -444,6 +444,7 @@ void cvar_changes_init()
                BADCVAR("g_minstagib");
                BADCVAR("g_mirrordamage");
                BADCVAR("g_nexball_goallimit");
+               BADCVAR("g_powerups");
                BADCVAR("g_runematch_point_limit");
                BADCVAR("g_start_delay");
                BADCVAR("g_warmup");
@@ -460,6 +461,7 @@ void cvar_changes_init()
                BADCVAR("skill");
                BADCVAR("sv_adminnick");
                BADCVAR("sv_autoscreenshot");
+               BADCVAR("sv_autotaunt");
                BADCVAR("sv_curl_defaulturl");
                BADCVAR("sv_defaultcharacter");
                BADCVAR("sv_defaultplayercolors");
@@ -471,6 +473,7 @@ void cvar_changes_init()
                BADCVAR("sv_public");
                BADCVAR("sv_ready_restart");
                BADCVAR("sv_status_privacy");
+               BADCVAR("sv_taunt");
                BADCVAR("sv_vote_call");
                BADCVAR("sv_vote_commands");
                BADCVAR("sv_vote_majority_factor");
@@ -482,6 +485,7 @@ void cvar_changes_init()
                BADCVAR("teamplay_mode");
                BADCVAR("timelimit_override");
                BADPREFIX("g_warmup_");
+               BADPREFIX("sv_ready_restart_");
 
                if(autocvar_g_minstagib)
                {
@@ -743,8 +747,10 @@ void spawnfunc_worldspawn (void)
                        s = strcat(s, ":no_use_ammunition");
 
                // initialiation stuff, not good in the mutator system
-               if(!autocvar_g_pickup_items)
+               if(autocvar_g_pickup_items == 0)
                        s = strcat(s, ":no_pickup_items");
+               if(autocvar_g_pickup_items > 0)
+                       s = strcat(s, ":pickup_items");
 
                // initialiation stuff, not good in the mutator system
                if(autocvar_g_weaponarena != "0")
@@ -762,6 +768,12 @@ void spawnfunc_worldspawn (void)
                if(autocvar_g_minstagib)
                        s = strcat(s, ":minstagib");
 
+               // TODO to mutator system
+               if(autocvar_g_powerups == 0)
+                       s = strcat(s, ":no_powerups");
+               if(autocvar_g_powerups > 0)
+                       s = strcat(s, ":powerups");
+
                GameLogEcho(s);
                GameLogEcho(":gameinfo:end");
        }
index f7a8d2aec157a966e0299a89402e2b280af92721..9a8ac71239ba807cfe8019022aae7d7473a9e605 100644 (file)
@@ -1,3 +1,40 @@
+float have_pickup_item(void)
+{
+       // minstagib: only allow filtered items
+       if(g_minstagib)
+               if(self.classname != "minstagib")
+                       return FALSE;
+
+       if(self.items == IT_STRENGTH || self.items == IT_INVINCIBLE)
+       {
+               if(autocvar_g_powerups > 0)
+                       return TRUE;
+               if(autocvar_g_powerups == 0)
+                       return FALSE;
+               if(g_lms)
+                       return FALSE;
+               if(g_ca)
+                       return FALSE;
+               if(g_arena)
+                       return FALSE;
+       }
+       else
+       {
+               if(autocvar_g_pickup_items > 0)
+                       return TRUE;
+               if(autocvar_g_pickup_items == 0)
+                       return FALSE;
+               if(g_lms)
+                       return FALSE;
+               if(g_ca)
+                       return FALSE;
+               if(g_weaponarena)
+                       if((self.weapons & WEPBIT_ALL) || (self.items & IT_AMMO))
+                               return FALSE;
+       }
+       return TRUE;
+}
+
 #define ITEM_RESPAWN_TICKS 10
 
 #define ITEM_RESPAWNTIME(i)         ((i).respawntime + crandom() * (i).respawntimejitter)
@@ -707,6 +744,13 @@ void StartItem (string itemmodel, string pickupsound, float defaultrespawntime,
                        return;
                }
 
+               if(!have_pickup_item())
+               {
+                       startitem_failed = TRUE;
+                       remove (self);
+                       return;
+               }
+
                self.reset = Item_Reset;
                // it's a level item
                if(self.spawnflags & 1)
@@ -759,35 +803,6 @@ void StartItem (string itemmodel, string pickupsound, float defaultrespawntime,
                        self.is_item = TRUE;
                }
 
-               if(g_lms || g_ca)
-               {
-                       startitem_failed = TRUE;
-                       remove(self);
-                       return;
-               }
-               else if (g_weaponarena && ((weaponid & WEPBIT_ALL) || (itemid & IT_AMMO)))
-               {
-                       startitem_failed = TRUE;
-                       remove(self);
-                       return;
-               }
-               else if (g_minstagib)
-               {
-                       // don't remove dropped items and powerups
-                       if (self.classname != "minstagib")
-                       {
-                               startitem_failed = TRUE;
-                               remove (self);
-                               return;
-                       }
-               }
-               else if (!autocvar_g_pickup_items && itemid != IT_STRENGTH && itemid != IT_INVINCIBLE && itemid != IT_HEALTH)
-               {
-                       startitem_failed = TRUE;
-                       remove (self);
-                       return;
-               }
-
                weaponsInMap |= weaponid;
 
                precache_model (itemmodel);
@@ -1220,12 +1235,6 @@ void spawnfunc_item_health_large (void) {
 }
 
 void spawnfunc_item_health_mega (void) {
-       if(!autocvar_g_powerup_superhealth)
-               return;
-
-       if((g_arena || g_ca) && !autocvar_g_arena_powerups)
-               return;
-
        if(g_minstagib) {
                minstagib_items(IT_NAILS);
        } else {
@@ -1247,12 +1256,6 @@ void spawnfunc_item_health25() { spawnfunc_item_health_medium(); }
 void spawnfunc_item_health100() { spawnfunc_item_health_mega(); }
 
 void spawnfunc_item_strength (void) {
-       if(!autocvar_g_powerup_strength)
-               return;
-
-       if((g_arena || g_ca) && !autocvar_g_arena_powerups)
-               return;
-
        if(g_minstagib) {
                minstagib_items(IT_STRENGTH);
        } else {
@@ -1263,12 +1266,6 @@ void spawnfunc_item_strength (void) {
 }
 
 void spawnfunc_item_invincible (void) {
-       if(!autocvar_g_powerup_shield)
-               return;
-
-       if((g_arena || g_ca) && !autocvar_g_arena_powerups)
-               return;
-
        if(g_minstagib) {
                minstagib_items(IT_INVINCIBLE);
        } else {
index 3d65d760d3af9604921342e4b811dc6619329d0c..66e909eec3ce9e5d26ee161a7729a9dd70462768 100644 (file)
@@ -478,6 +478,10 @@ string getwelcomemessage(void)
                modifications = strcat(modifications, ", Blood loss");
        if(g_jetpack)
                modifications = strcat(modifications, ", Jet pack");
+       if(autocvar_g_powerups == 0)
+               modifications = strcat(modifications, ", No powerups");
+       if(autocvar_g_powerups > 0)
+               modifications = strcat(modifications, ", Powerups");
        modifications = substring(modifications, 2, strlen(modifications) - 2);
 
        string versionmessage;
index 0e62df7cb2cd029a8cd0aa5d183e63f135c1e948..0e6f2168b863b50c94a7c49dd20659a9315ed879 100644 (file)
@@ -241,7 +241,7 @@ float WaypointSprite_Customize()
        // as a GENERAL rule:
        // if you have the invisibility powerup, sprites ALWAYS are restricted to your team
        // but only apply this to real players, not to spectators
-       if(g_minstagib && (self.owner.items & IT_STRENGTH) && (e == other))
+       if(g_minstagib && (self.owner.flags & FL_CLIENT) && (self.owner.items & IT_STRENGTH) && (e == other))
        {
                if(!WaypointSprite_isteammate(self.owner, e))
                        return FALSE;