]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Add waypoint option to main Freeze function
authorMario <mario.mario@y7mail.com>
Sat, 4 May 2013 20:48:43 +0000 (06:48 +1000)
committerMario <mario.mario@y7mail.com>
Sat, 4 May 2013 20:48:43 +0000 (06:48 +1000)
qcsrc/client/waypointsprites.qc
qcsrc/server/g_damage.qc
qcsrc/server/monsters/monster/spider.qc
qcsrc/server/mutators/gamemode_freezetag.qc

index 2066aec68c7dd189bfcd8c30e48f27b8f94f4ce9..462dc8620c159bb940cba329c01c726c357bb9c3 100644 (file)
@@ -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;
index fb9873061efc5089c379d7c8edf0c0839076dd98..468e83a9290250335ef6eb66c73fc86fe98e6208 100644 (file)
@@ -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;
index 4487ba72672f9de5e98b6f7f79d38d2ab21f5362..e23224141bc1a8e39cd2aa762aed5bf2d0f3077e 100644 (file)
@@ -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);
index f87f2861a554c309d842079aef52438e3ec1012a..51d9ca531323da20b8bc00177a347c70fb1f4b58 100644 (file)
@@ -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)