From c031fb09380f67896c5d4361f16fb4df8525ce6c Mon Sep 17 00:00:00 2001 From: Mario Date: Thu, 18 Apr 2013 19:56:23 +1000 Subject: [PATCH] Merge the frozen flags --- qcsrc/server/arena.qc | 8 +-- .../attic/bot/havocbot/role_freezetag.qc | 6 +- qcsrc/server/bot/aim.qc | 5 +- qcsrc/server/cl_client.qc | 8 +-- qcsrc/server/cl_physics.qc | 4 +- qcsrc/server/cl_player.qc | 2 +- qcsrc/server/cl_weapons.qc | 2 +- qcsrc/server/defs.qh | 1 - qcsrc/server/g_damage.qc | 12 ++-- qcsrc/server/g_hook.qc | 2 +- qcsrc/server/g_world.qc | 3 - qcsrc/server/monsters/lib/monsters.qc | 2 +- qcsrc/server/monsters/monster/shalrath.qc | 2 +- qcsrc/server/monsters/monster/spider.qc | 4 +- qcsrc/server/mutators/gamemode_freezetag.qc | 58 ++++++------------- qcsrc/server/w_electro.qc | 2 +- 16 files changed, 48 insertions(+), 73 deletions(-) diff --git a/qcsrc/server/arena.qc b/qcsrc/server/arena.qc index 8a4a40430..b54678a4f 100644 --- a/qcsrc/server/arena.qc +++ b/qcsrc/server/arena.qc @@ -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; diff --git a/qcsrc/server/attic/bot/havocbot/role_freezetag.qc b/qcsrc/server/attic/bot/havocbot/role_freezetag.qc index 4e5669eb2..5a0aa87b0 100644 --- a/qcsrc/server/attic/bot/havocbot/role_freezetag.qc +++ b/qcsrc/server/attic/bot/havocbot/role_freezetag.qc @@ -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; diff --git a/qcsrc/server/bot/aim.qc b/qcsrc/server/bot/aim.qc index 3bff21ecf..31f1c4fbe 100644 --- a/qcsrc/server/bot/aim.qc +++ b/qcsrc/server/bot/aim.qc @@ -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. diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index d96e14e72..4fbe81304 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -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; diff --git a/qcsrc/server/cl_physics.qc b/qcsrc/server/cl_physics.qc index 9affe67e0..9debb4def 100644 --- a/qcsrc/server/cl_physics.qc +++ b/qcsrc/server/cl_physics.qc @@ -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); diff --git a/qcsrc/server/cl_player.qc b/qcsrc/server/cl_player.qc index a92d15b2b..33a69ae6a 100644 --- a/qcsrc/server/cl_player.qc +++ b/qcsrc/server/cl_player.qc @@ -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; diff --git a/qcsrc/server/cl_weapons.qc b/qcsrc/server/cl_weapons.qc index 498ced32f..ca1f83bfe 100644 --- a/qcsrc/server/cl_weapons.qc +++ b/qcsrc/server/cl_weapons.qc @@ -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) diff --git a/qcsrc/server/defs.qh b/qcsrc/server/defs.qh index d88da22fc..f98b68d2a 100644 --- a/qcsrc/server/defs.qh +++ b/qcsrc/server/defs.qh @@ -590,7 +590,6 @@ float serverflags; .float player_blocked; -.float freezetag_frozen; .float freezetag_revive_progress; .float frozen; // for freeze attacks diff --git a/qcsrc/server/g_damage.qc b/qcsrc/server/g_damage.qc index d98a097b1..75401b0dd 100644 --- a/qcsrc/server/g_damage.qc +++ b/qcsrc/server/g_damage.qc @@ -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); diff --git a/qcsrc/server/g_hook.qc b/qcsrc/server/g_hook.qc index ad1da10f7..2238f4660 100644 --- a/qcsrc/server/g_hook.qc +++ b/qcsrc/server/g_hook.qc @@ -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) diff --git a/qcsrc/server/g_world.qc b/qcsrc/server/g_world.qc index 15f9ed8c7..54d5d7514 100644 --- a/qcsrc/server/g_world.qc +++ b/qcsrc/server/g_world.qc @@ -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) { diff --git a/qcsrc/server/monsters/lib/monsters.qc b/qcsrc/server/monsters/lib/monsters.qc index 5e5ceb38d..45a000766 100644 --- a/qcsrc/server/monsters/lib/monsters.qc +++ b/qcsrc/server/monsters/lib/monsters.qc @@ -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; diff --git a/qcsrc/server/monsters/monster/shalrath.qc b/qcsrc/server/monsters/monster/shalrath.qc index 4914a4bff..8eb48dd11 100644 --- a/qcsrc/server/monsters/monster/shalrath.qc +++ b/qcsrc/server/monsters/monster/shalrath.qc @@ -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)) { diff --git a/qcsrc/server/monsters/monster/spider.qc b/qcsrc/server/monsters/monster/spider.qc index a08cdb87d..4c9edb189 100644 --- a/qcsrc/server/monsters/monster/spider.qc +++ b/qcsrc/server/monsters/monster/spider.qc @@ -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(); diff --git a/qcsrc/server/mutators/gamemode_freezetag.qc b/qcsrc/server/mutators/gamemode_freezetag.qc index c73309b62..7e23c0bfe 100644 --- a/qcsrc/server/mutators/gamemode_freezetag.qc +++ b/qcsrc/server/mutators/gamemode_freezetag.qc @@ -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 diff --git a/qcsrc/server/w_electro.qc b/qcsrc/server/w_electro.qc index cd32dae4f..8a41bf6cd 100644 --- a/qcsrc/server/w_electro.qc +++ b/qcsrc/server/w_electro.qc @@ -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; -- 2.39.2