From: Mario Date: Sat, 4 May 2013 20:48:43 +0000 (+1000) Subject: Add waypoint option to main Freeze function X-Git-Tag: xonotic-v0.8.0~241^2^2~253 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=bf0a7db219b1a7355160a3765df150963b5c3a31;p=xonotic%2Fxonotic-data.pk3dir.git Add waypoint option to main Freeze function --- diff --git a/qcsrc/client/waypointsprites.qc b/qcsrc/client/waypointsprites.qc index 2066aec68..462dc8620 100644 --- a/qcsrc/client/waypointsprites.qc +++ b/qcsrc/client/waypointsprites.qc @@ -316,7 +316,7 @@ string spritelookuptext(string s) case "item-shield": return _("Shield"); case "item-fuelregen": return _("Fuel regen"); case "item-jetpack": return _("Jet Pack"); - case "freezetag_frozen": return _("Frozen!"); + case "frozen": return _("Frozen!"); case "tagged-target": return _("Tagged"); case "vehicle": return _("Vehicle"); default: return s; diff --git a/qcsrc/server/g_damage.qc b/qcsrc/server/g_damage.qc index fb9873061..468e83a92 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_type) +void Freeze (entity targ, float freeze_time, float frozen_type, float show_waypoint) { float monster = (targ.flags & FL_MONSTER); float player = (targ.flags & FL_CLIENT); @@ -605,6 +605,10 @@ void Freeze (entity targ, float freeze_time, float frozen_type) self = oldself; RemoveGrapplingHook(targ); + + // add waypoint + if(show_waypoint) + WaypointSprite_Spawn("frozen", 0, 0, targ, '0 0 64', world, targ.team, targ, waypointsprite_attached, TRUE, RADARICON_WAYPOINT, '0.25 0.90 1'); } void Unfreeze (entity targ) @@ -612,6 +616,8 @@ void Unfreeze (entity targ) targ.frozen = 0; targ.revive_progress = 0; targ.health = ((targ.classname == STR_PLAYER) ? autocvar_g_balance_health_start : targ.max_health); + + WaypointSprite_Kill(targ.waypointsprite_attached); // remove the ice block entity ice; diff --git a/qcsrc/server/monsters/monster/spider.qc b/qcsrc/server/monsters/monster/spider.qc index 4487ba726..e23224141 100644 --- a/qcsrc/server/monsters/monster/spider.qc +++ b/qcsrc/server/monsters/monster/spider.qc @@ -64,7 +64,7 @@ void spider_web_touch () switch(self.realowner.spider_type) { case SPIDER_TYPE_ICE: - Freeze(other, 0.3, 2); + Freeze(other, 0.3, 2, FALSE); break; case SPIDER_TYPE_FIRE: Fire_AddDamage(other, self.realowner, 5 * monster_skill, autocvar_g_monster_spider_attack_fire_time, DEATH_MONSTER_SPIDER_FIRE); diff --git a/qcsrc/server/mutators/gamemode_freezetag.qc b/qcsrc/server/mutators/gamemode_freezetag.qc index f87f2861a..51d9ca531 100644 --- a/qcsrc/server/mutators/gamemode_freezetag.qc +++ b/qcsrc/server/mutators/gamemode_freezetag.qc @@ -56,13 +56,8 @@ void freezetag_Freeze(entity attacker) { if(self.frozen) return; - - self.health = 1; - Freeze(self, 0, 1); - - // 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'); + Freeze(self, 0, 1, TRUE); if(attacker == self) { @@ -83,15 +78,6 @@ void freezetag_Freeze(entity attacker) } } -void freezetag_Unfreeze(entity attacker) -{ - Unfreeze(self); - - // remove waypoint - if(self.waypointsprite_attached) - WaypointSprite_Kill(self.waypointsprite_attached); -} - // ================ // Bot player logic @@ -219,7 +205,7 @@ MUTATOR_HOOKFUNCTION(freezetag_RemovePlayer) if(total_players > 2) // only check for winners if we had more than two players (one of them left, don't let the other player win just because of that) freezetag_CheckWinner(); - freezetag_Unfreeze(world); + Unfreeze(self); return 1; } @@ -265,7 +251,7 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerDies) MUTATOR_HOOKFUNCTION(freezetag_PlayerSpawn) { - freezetag_Unfreeze(world); // start by making sure that all ice blocks are removed + Unfreeze(self); // start by making sure that all ice blocks are removed if(total_players == 1 && time > game_starttime) // only one player active on server, start a new match immediately if(!next_round && warmup && (time < warmup - autocvar_g_freezetag_warmup || time > warmup)) // not awaiting next round @@ -321,7 +307,7 @@ MUTATOR_HOOKFUNCTION(freezetag_PlayerPreThink) if(self.revive_progress >= 1) { - freezetag_Unfreeze(self); + Unfreeze(self); // EVERY team mate nearby gets a point (even if multiple!) FOR_EACH_PLAYER(other) if(self != other)