]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge the frozen flags
authorMario <mario.mario@y7mail.com>
Thu, 18 Apr 2013 09:56:23 +0000 (19:56 +1000)
committerMario <mario.mario@y7mail.com>
Thu, 18 Apr 2013 09:56:23 +0000 (19:56 +1000)
16 files changed:
qcsrc/server/arena.qc
qcsrc/server/attic/bot/havocbot/role_freezetag.qc
qcsrc/server/bot/aim.qc
qcsrc/server/cl_client.qc
qcsrc/server/cl_physics.qc
qcsrc/server/cl_player.qc
qcsrc/server/cl_weapons.qc
qcsrc/server/defs.qh
qcsrc/server/g_damage.qc
qcsrc/server/g_hook.qc
qcsrc/server/g_world.qc
qcsrc/server/monsters/lib/monsters.qc
qcsrc/server/monsters/monster/shalrath.qc
qcsrc/server/monsters/monster/spider.qc
qcsrc/server/mutators/gamemode_freezetag.qc
qcsrc/server/w_electro.qc

index 8a4a404307a1a87749fd88613f1418d79b4f5ed5..b54678a4f33a796615802d61905822e56d3303e7 100644 (file)
@@ -338,22 +338,22 @@ void count_alive_players()
        {
                // count amount of alive players in each team
                FOR_EACH_PLAYER(self) {
-                       if (self.team == NUM_TEAM_1 && self.freezetag_frozen == 0 && self.health >= 1)
+                       if (self.team == NUM_TEAM_1 && self.frozen != 1 && self.health >= 1)
                        {
                                redalive += 1;
                                totalalive += 1;
                        }
-                       else if (self.team == NUM_TEAM_2 && self.freezetag_frozen == 0 && self.health >= 1)
+                       else if (self.team == NUM_TEAM_2 && self.frozen != 1 && self.health >= 1)
                        {
                                bluealive += 1;
                                totalalive += 1;
                        }
-                       else if (self.team == NUM_TEAM_3 && self.freezetag_frozen == 0 && self.health >= 1)
+                       else if (self.team == NUM_TEAM_3 && self.frozen != 1 && self.health >= 1)
                        {
                                yellowalive += 1;
                                totalalive += 1;
                        }
-                       else if (self.team == NUM_TEAM_4 && self.freezetag_frozen == 0 && self.health >= 1)
+                       else if (self.team == NUM_TEAM_4 && self.frozen != 1 && self.health >= 1)
                        {
                                pinkalive += 1;
                                totalalive += 1;
index 4e5669eb2ecad7642fbd75b4c9f89f458efaf757..5a0aa87b0542439e68e65f18fc74be34f0b0d71a 100644 (file)
@@ -10,7 +10,7 @@ void havocbot_goalrating_freeplayers(float ratingscale, vector org, float sradiu
        {
                if ((head != self) && (head.team == self.team))
                {
-                       if (head.freezetag_frozen)
+                       if (head.frozen == 1)
                        {
                                distance = vlen(head.origin - org);
                                if (distance > sradius)
@@ -42,12 +42,12 @@ void havocbot_role_ft_offense()
        unfrozen = 0;
        FOR_EACH_PLAYER(head)
        {
-               if ((head.team == self.team) && (!head.freezetag_frozen))
+               if ((head.team == self.team) && (head.frozen != 1))
                        unfrozen++;
        }
 
        // If only one left on team or if role has timed out then start trying to free players.
-       if (((unfrozen == 0) && (!self.freezetag_frozen)) || (time > self.havocbot_role_timeout))
+       if (((unfrozen == 0) && (self.frozen != 1)) || (time > self.havocbot_role_timeout))
        {
                dprint("changing role to freeing\n");
                self.havocbot_role = havocbot_role_ft_freeing;
index 3bff21ecf00a4801bd083ba12315087312f28931..31f1c4fbe334b56c6d00f3b7deb1130fb0a90577 100644 (file)
@@ -111,9 +111,8 @@ float bot_shouldattack(entity e)
                        return FALSE;
        }
 
-       if(g_freezetag)
-               if(e.freezetag_frozen)
-                       return FALSE;
+       if(e.frozen)
+               return FALSE;
 
        // If neither player has ball then don't attack unless the ball is on the
        // ground.
index d96e14e72bbcf54aa91744a45ec1cdc808850023..4fbe81304e6c6de8e51afb114f05734dfa3f2fec 100644 (file)
@@ -907,7 +907,7 @@ void PutClientInServer (void)
                        activator = world;
                self = oldself;
                
-               Unfreeze(self, frozen, revive_progress);
+               Unfreeze(self, revive_progress);
 
                spawn_spot = spot;
                MUTATOR_CALLHOOK(PlayerSpawn);
@@ -1271,7 +1271,7 @@ void ClientKill (void)
        {
                // do nothing
        }
-    else if(self.freezetag_frozen)
+    else if(self.frozen == 1)
     {
         // do nothing
     }
@@ -2599,7 +2599,7 @@ void PlayerPreThink (void)
                self.health = max(1, self.revive_progress * autocvar_g_balance_health_start);
 
                if(self.revive_progress >= 1)
-                       Unfreeze(self, frozen, revive_progress);
+                       Unfreeze(self, revive_progress);
        }
 
        MUTATOR_CALLHOOK(PlayerPreThink);
@@ -2768,7 +2768,7 @@ void PlayerPreThink (void)
                        do_crouch = 1;
                if(self.vehicle)
                        do_crouch = 0;
-               if(self.freezetag_frozen || self.frozen)
+               if(self.frozen)
                        do_crouch = 0;
                if(self.weapon == WEP_SHOTGUN && self.weaponentity.wframe == WFRAME_FIRE2 && time < self.weapon_nextthink)
                        do_crouch = 0;
index 9affe67e00c1a17e4d13bcd4afeb61e9fdfbdf67..9debb4def314eb375f3984eb04a637d2a498a18d 100644 (file)
@@ -23,7 +23,7 @@ When you press the jump key
 */
 void PlayerJump (void)
 {
-       if(self.freezetag_frozen || self.frozen)
+       if(self.frozen)
                return; // no jumping in freezetag when frozen
 
        float mjumpheight;
@@ -1063,7 +1063,7 @@ void SV_PlayerPhysics()
                        PM_Accelerate(wishdir, wishspeed, wishspeed, autocvar_sv_accelerate*maxspd_mod, 1, 0, 0, 0);
                }
        }
-       else if ((self.items & IT_JETPACK) && self.BUTTON_HOOK && (!autocvar_g_jetpack_fuel || self.ammo_fuel >= 0.01 || self.items & IT_UNLIMITED_WEAPON_AMMO) && !self.freezetag_frozen && !self.frozen)
+       else if ((self.items & IT_JETPACK) && self.BUTTON_HOOK && (!autocvar_g_jetpack_fuel || self.ammo_fuel >= 0.01 || self.items & IT_UNLIMITED_WEAPON_AMMO) && !self.frozen)
        {
                //makevectors(self.v_angle_y * '0 1 0');
                makevectors(self.v_angle);
index a92d15b2b42e067be4d1545c4b2dee9da94172ee..33a69ae6a79f45c62101e27fff8e02c1074f7027 100644 (file)
@@ -245,7 +245,7 @@ void player_anim (void)
                else
                        deadbits = ANIMSTATE_DEAD2;
        float animbits = deadbits;
-       if(self.freezetag_frozen || self.frozen)
+       if(self.frozen)
                animbits |= ANIMSTATE_FROZEN;
        if(self.crouch)
                animbits |= ANIMSTATE_DUCK;
index 498ced32ff91411369904a4ee9d7c5b481ae931f..ca1f83bfee910922d2f4d47c766bc23bc79dea35 100644 (file)
@@ -367,7 +367,7 @@ void W_WeaponFrame()
        if(((arena_roundbased || g_ca || g_freezetag) && time < warmup) || ((time < game_starttime) && !autocvar_sv_ready_restart_after_countdown))
                return;
 
-       if(self.freezetag_frozen == 1 || self.frozen == 1)
+       if(self.frozen)
                return;
 
        if (!self.weaponentity || self.health < 1)
index d88da22fc0dd82e4708b98f609868d9cb2a3cef2..f98b68d2a9b01837187613e4a12ad8f830913b27 100644 (file)
@@ -590,7 +590,6 @@ float serverflags;
 
 .float player_blocked;
 
-.float freezetag_frozen;
 .float freezetag_revive_progress;
 
 .float frozen; // for freeze attacks
index d98a097b1ab3f0c622fd30495422e9bc498a3674..75401b0dd374e70abe805314f18ee81d5769a4ce 100644 (file)
@@ -572,7 +572,7 @@ void Ice_Think()
        self.nextthink = time;
 }
 
-void Freeze (entity targ, float freeze_time, .float frozen_flag, .float revive_flag)
+void Freeze (entity targ, float freeze_time, float frozen_type, .float revive_flag)
 {
        float monster = (targ.flags & FL_MONSTER);
        float player = (targ.flags & FL_CLIENT);
@@ -580,10 +580,10 @@ void Freeze (entity targ, float freeze_time, .float frozen_flag, .float revive_f
        if(!player && !monster) // only specified entities can be freezed
                return;
                
-       if(targ.frozen_flag)
+       if(targ.frozen)
                return;
                
-       targ.frozen_flag = 1;
+       targ.frozen = frozen_type;
        targ.revive_flag = 0;
        targ.health = 1;
        targ.revive_speed = freeze_time;
@@ -607,9 +607,9 @@ void Freeze (entity targ, float freeze_time, .float frozen_flag, .float revive_f
        RemoveGrapplingHook(targ);
 }
 
-void Unfreeze (entity targ, .float frozen_flag, .float revive_flag)
+void Unfreeze (entity targ, .float revive_flag)
 {
-       targ.frozen_flag = 0;
+       targ.frozen = 0;
        targ.revive_flag = 0;
        targ.health = ((targ.classname == STR_PLAYER) ? autocvar_g_balance_health_start : targ.max_health);
 
@@ -1350,7 +1350,7 @@ void Fire_ApplyDamage(entity e)
                e.fire_endtime = 0;
 
        // ice stops fire
-       if(e.freezetag_frozen || e.frozen)
+       if(e.frozen)
                e.fire_endtime = 0;
 
        t = min(frametime, e.fire_endtime - time);
index ad1da10f7f4be77db9181e8f87cb89cbc963f640..2238f4660ae307d4419dc7089ba7eeb18d375408 100644 (file)
@@ -302,7 +302,7 @@ void FireGrapplingHook (void)
        if((arena_roundbased && time < warmup) || (time < game_starttime))
                return;
 
-  if(self.freezetag_frozen || self.frozen)
+  if(self.frozen)
                return;
        
        if(self.vehicle)
index 15f9ed8c70683530a5a53cf3152548527fc2b31e..54d5d75143cda7e026aec74e9cf83406f9a60629 100644 (file)
@@ -814,10 +814,7 @@ void spawnfunc_worldspawn (void)
                addstat(STAT_PINKALIVE, AS_INT, pinkalive_stat);
        }
        if(g_freezetag)
-       {
-               addstat(STAT_FROZEN, AS_INT, freezetag_frozen);
                addstat(STAT_REVIVE_PROGRESS, AS_FLOAT, freezetag_revive_progress);
-       }
        
        if(g_td)
        {
index 5e5ceb38d5f2715bd30df1afa83ad7ffeb7c20bf..45a0007662daaa15d56cdc242eab8cc213fcb362 100644 (file)
@@ -494,7 +494,7 @@ void monster_move(float runspeed, float walkspeed, float stopspeed, float manim_
                self.nextthink = time + 0.1;
                
                if(self.revive_progress >= 1)
-                       Unfreeze(self, frozen, revive_progress); // wait for next think before attacking
+                       Unfreeze(self, revive_progress); // wait for next think before attacking
                        
                self.SendFlags |= MSF_MOVE;
                        
index 4914a4bff383697a6f1d463c65a826085541c336..8eb48dd11b7b5a1e779e67de2492772c28c14e57 100644 (file)
@@ -253,7 +253,7 @@ void shalrath_heal()
        for(head = world; (head = findfloat(head, monster_attack, TRUE)); )
        {
                if(head.health > 0)
-               if not(head.frozen || head.freezetag_frozen)
+               if not(head.frozen)
                if(vlen(head.origin - self.origin) < autocvar_g_monster_shalrath_heal_range * self.scale)
                if not(IsDifferentTeam(head, self))
                {
index a08cdb87ded001525219bc0777130b882ef1faad..4c9edb1899c93103546e3760a5ca5ec747765d37 100644 (file)
@@ -65,7 +65,7 @@ void spider_web_touch ()
        switch(self.realowner.spider_type)
        {
                case SPIDER_TYPE_ICE:
-                       Freeze(other, 0.3, frozen, revive_progress);
+                       Freeze(other, 0.3, 2, revive_progress);
                        break;
                case SPIDER_TYPE_FIRE:
                        Fire_AddDamage(other, self.realowner, 5 * monster_skill, autocvar_g_monster_spider_attack_fire_time, DEATH_MONSTER_SPIDER_FIRE);
@@ -151,7 +151,7 @@ void spider_attack_leap()
 
 float spider_attack_ranged()
 {
-       if(self.enemy.frozen || self.enemy.freezetag_frozen)
+       if(self.enemy.frozen)
                return FALSE;
                
        spider_attack_leap();
index c73309b62756a7e1628ea15c4f0e9eecb03e0fa1..7e23c0bfe3bfaaf616ca2874319f4c4dae912530 100644 (file)
@@ -26,7 +26,7 @@ void freezetag_CheckWinner()
 
        FOR_EACH_PLAYER(e)
        {
-               if(e.freezetag_frozen == 0 && e.health >= 1) // here's one player from the winning team... good
+               if(e.frozen != 1 && e.health >= 1) // here's one player from the winning team... good
                {
                        winner = e;
                        break; // break, we found the winner
@@ -54,12 +54,15 @@ void freezetag_Ice_Think()
 
 void freezetag_Freeze(entity attacker)
 {
-       if(self.freezetag_frozen)
+       if(self.frozen)
                return;
                
        self.health = 1;
        
-       Freeze(self, 0, freezetag_frozen, freezetag_revive_progress);
+       Freeze(self, 0, 1, freezetag_revive_progress);
+       
+       // add waypoint
+       WaypointSprite_Spawn("freezetag_frozen", 0, 0, self, '0 0 64', world, self.team, self, waypointsprite_attached, TRUE, RADARICON_WAYPOINT, '0.25 0.90 1');
 
        if(attacker == self)
        {
@@ -82,7 +85,7 @@ void freezetag_Freeze(entity attacker)
 
 void freezetag_Unfreeze(entity attacker)
 {
-       Unfreeze(self, freezetag_frozen, freezetag_revive_progress);
+       Unfreeze(self, freezetag_revive_progress);
 
        // remove waypoint
        if(self.waypointsprite_attached)
@@ -106,7 +109,7 @@ void havocbot_goalrating_freeplayers(float ratingscale, vector org, float sradiu
        {
                if ((head != self) && (head.team == self.team))
                {
-                       if (head.freezetag_frozen)
+                       if (head.frozen == 1)
                        {
                                distance = vlen(head.origin - org);
                                if (distance > sradius)
@@ -138,12 +141,12 @@ void havocbot_role_ft_offense()
        unfrozen = 0;
        FOR_EACH_PLAYER(head)
        {
-               if ((head.team == self.team) && (!head.freezetag_frozen))
+               if ((head.team == self.team) && (head.frozen != 1))
                        unfrozen++;
        }
 
        // If only one left on team or if role has timed out then start trying to free players.
-       if (((unfrozen == 0) && (!self.freezetag_frozen)) || (time > self.havocbot_role_timeout))
+       if (((unfrozen == 0) && (self.frozen != 1)) || (time > self.havocbot_role_timeout))
        {
                dprint("changing role to freeing\n");
                self.havocbot_role = havocbot_role_ft_freeing;
@@ -200,7 +203,7 @@ void havocbot_role_ft_freeing()
 
 MUTATOR_HOOKFUNCTION(freezetag_RemovePlayer)
 {
-       if(self.freezetag_frozen == 0 && self.health >= 1)
+       if(self.frozen != 1 && self.health >= 1)
        {
                if(self.team == NUM_TEAM_1)
                        --redalive;
@@ -223,7 +226,7 @@ MUTATOR_HOOKFUNCTION(freezetag_RemovePlayer)
 
 MUTATOR_HOOKFUNCTION(freezetag_PlayerDies)
 {
-       if(self.freezetag_frozen == 0)
+       if(self.frozen != 1)
        {
                if(self.team == NUM_TEAM_1)
                        --redalive;
@@ -290,18 +293,14 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerPreThink)
        float n;
        vector revive_extra_size;
 
-       revive_extra_size = '1 1 1' * autocvar_g_freezetag_revive_extra_size;
-       
-       // add waypoint
-       if(self.freezetag_frozen && self.waypointsprite_attached == world)
-               WaypointSprite_Spawn("freezetag_frozen", 0, 0, self, '0 0 64', world, self.team, self, waypointsprite_attached, TRUE, RADARICON_WAYPOINT, '0.25 0.90 1');
+       revive_extra_size = '1 1 1' * autocvar_g_freezetag_revive_extra_size;   
        
        entity o;
        o = world;
        n = 0;
        FOR_EACH_PLAYER(other) if(self != other)
        {
-               if(other.freezetag_frozen == 0)
+               if(other.frozen != 1)
                {
                        if(other.team == self.team)
                        {
@@ -315,7 +314,7 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerPreThink)
                }
        }
 
-       if(n && self.freezetag_frozen) // OK, there is at least one teammate reviving us
+       if(n && self.frozen == 1) // OK, there is at least one teammate reviving us
        {
                self.freezetag_revive_progress = bound(0, self.freezetag_revive_progress + frametime * autocvar_g_freezetag_revive_speed, 1);
                self.health = max(1, self.freezetag_revive_progress * autocvar_g_balance_health_start);
@@ -327,7 +326,7 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerPreThink)
                        // EVERY team mate nearby gets a point (even if multiple!)
                        FOR_EACH_PLAYER(other) if(self != other)
                        {
-                               if(other.freezetag_frozen == 0)
+                               if(other.frozen != 1)
                                {
                                        if(other.team == self.team)
                                        {
@@ -348,7 +347,7 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerPreThink)
                // now find EVERY teammate within reviving radius, set their revive_progress values correct
                FOR_EACH_PLAYER(other) if(self != other)
                {
-                       if(other.freezetag_frozen == 0)
+                       if(other.frozen != 1)
                        {
                                if(other.team == self.team)
                                {
@@ -358,7 +357,7 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerPreThink)
                        }
                }
        }
-       else if(!n && self.freezetag_frozen) // only if no teammate is nearby will we reset
+       else if(!n && self.frozen == 1) // only if no teammate is nearby will we reset
        {
                self.freezetag_revive_progress = bound(0, self.freezetag_revive_progress - frametime * autocvar_g_freezetag_revive_clearspeed, 1);
                self.health = max(1, self.freezetag_revive_progress * autocvar_g_balance_health_start);
@@ -371,21 +370,11 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerPreThink)
        return 1;
 }
 
-MUTATOR_HOOKFUNCTION(freezetag_PlayerPhysics)
-{
-       if(self.freezetag_frozen)
-       {
-               self.movement = '0 0 0';
-               self.disableclientprediction = 1;
-       }
-       return 1;
-}
-
 MUTATOR_HOOKFUNCTION(freezetag_PlayerDamage_Calculate)
 {
     if(g_freezetag)
     {
-        if(frag_target.freezetag_frozen == 1 && frag_deathtype != DEATH_HURTTRIGGER)
+        if(frag_target.frozen == 1 && frag_deathtype != DEATH_HURTTRIGGER)
         {
             frag_damage = 0;
             frag_force = frag_force * autocvar_g_freezetag_frozen_force;
@@ -394,13 +383,6 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerDamage_Calculate)
     return 1;
 }
 
-MUTATOR_HOOKFUNCTION(freezetag_ForbidThrowCurrentWeapon)
-{
-       if (self.freezetag_frozen)
-               return 1;
-       return 0;
-}
-
 MUTATOR_HOOKFUNCTION(freezetag_BotRoles)
 {
        if not(self.deadflag)
@@ -422,9 +404,7 @@ MUTATOR_DEFINITION(gamemode_freezetag)
        MUTATOR_HOOK(PlayerSpawn, freezetag_PlayerSpawn, CBC_ORDER_ANY);
        MUTATOR_HOOK(GiveFragsForKill, freezetag_GiveFragsForKill, CBC_ORDER_FIRST);
        MUTATOR_HOOK(PlayerPreThink, freezetag_PlayerPreThink, CBC_ORDER_FIRST);
-       MUTATOR_HOOK(PlayerPhysics, freezetag_PlayerPhysics, CBC_ORDER_FIRST);
        MUTATOR_HOOK(PlayerDamage_Calculate, freezetag_PlayerDamage_Calculate, CBC_ORDER_ANY);
-       MUTATOR_HOOK(ForbidThrowCurrentWeapon, freezetag_ForbidThrowCurrentWeapon, CBC_ORDER_FIRST); //first, last or any? dunno.
        MUTATOR_HOOK(HavocBot_ChooseRule, freezetag_BotRoles, CBC_ORDER_ANY);
 
        MUTATOR_ONADD
index cd32dae4f8b4340f100b9ada7254d33c2db41cc1..8a41bf6cde41943f58aec7d89fbeae48b5e3ac99 100644 (file)
@@ -253,7 +253,7 @@ void lgbeam_think()
                return;
        }
 
-       if (owner_player.weaponentity.state != WS_INUSE || !lgbeam_checkammo() || owner_player.deadflag != DEAD_NO || !owner_player.BUTTON_ATCK || owner_player.freezetag_frozen || owner_player.frozen)
+       if (owner_player.weaponentity.state != WS_INUSE || !lgbeam_checkammo() || owner_player.deadflag != DEAD_NO || !owner_player.BUTTON_ATCK || owner_player.frozen)
        {
                if(self == owner_player.lgbeam)
                        owner_player.lgbeam = world;