]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Remove redundant global generator entity
authorMario <mario.mario@y7mail.com>
Sat, 26 Jan 2013 09:39:43 +0000 (20:39 +1100)
committerMario <mario.mario@y7mail.com>
Sat, 26 Jan 2013 09:39:43 +0000 (20:39 +1100)
qcsrc/server/mutators/gamemode_td.qc
qcsrc/server/mutators/gamemode_td.qh

index 6b5fa810a44e38e5c3ad5583021936414e612f98..bb5df89cad6665f3753382fe4f67012dc67f69ec 100644 (file)
@@ -121,6 +121,23 @@ void spawnfunc_td_generator()
        WaypointSprite_UpdateHealth(self.sprite, self.health);
 }
 
+entity PickGenerator()
+{
+       entity generator, head;
+       if(td_gencount == 1)
+               generator = find(world, classname, "td_generator");
+       else
+       {
+               RandomSelection_Init();
+               for(head = world;(head = find(head, classname, "td_generator")); )
+               {
+                       RandomSelection_Add(head, 0, string_null, 1, 1);
+               }
+               generator = RandomSelection_chosen_ent; 
+       }
+       return generator;
+}
+
 void spawn_td_fuel(float fuel_size)
 {
        if not(g_td)
@@ -772,7 +789,7 @@ MUTATOR_HOOKFUNCTION(td_MonsterMove)
        }
        
        if(self.goalentity == world)
-               self.goalentity = generator;
+               self.goalentity = PickGenerator();
        
        monster_speed_run = 110 * monster_skill;
        monster_speed_walk = 75 * monster_skill;
@@ -875,33 +892,21 @@ MUTATOR_HOOKFUNCTION(td_MonsterDies)
 MUTATOR_HOOKFUNCTION(td_MonsterFindTarget)
 {
        float n_players = 0;
-       entity head, player;
+       entity player;
        local entity e;
        
        FOR_EACH_PLAYER(player) { ++n_players; }
        
        if(n_players < 1) // no players online, so do nothing
-               return TRUE;
-       
-       if(generator == world)
        {
-               if(td_gencount == 1)
-                       generator = find(world, classname, "td_generator");
-               else
-               {
-                       RandomSelection_Init();
-                       for(head = world;(head = find(head, classname, "td_generator")); )
-                       {
-                               RandomSelection_Add(head, 0, string_null, 1, 1);
-                       }
-                       generator = RandomSelection_chosen_ent; 
-               }
+               self.enemy = world;
+               return TRUE;
        }
        
        for(e = world;(e = findflags(e, monster_attack, TRUE)); ) 
        {
                if(monster_isvalidtarget(e, self, FALSE))
-               if((vlen(trace_endpos - self.origin) < 100 && e.turrcaps_flags & TFL_TURRCAPS_ISTURRET) || (vlen(trace_endpos - self.origin) < 200 && e != generator) || (vlen(trace_endpos - self.origin) < 500 && e == generator))
+               if((vlen(trace_endpos - self.origin) < 100 && e.turrcaps_flags & TFL_TURRCAPS_ISTURRET) || (vlen(trace_endpos - self.origin) < 200 && e.classname != "td_generator") || (vlen(trace_endpos - self.origin) < 500 && e.classname == "td_generator"))
                {
                        self.enemy = e;
                }
index 471eaae65e38ab447d08e4c335e11f7ca3c237b1..e6ece9698110dfe18dc769e3a55b358286e77e64 100644 (file)
@@ -53,7 +53,6 @@ float current_phase;
 
 // Generator
 float gendestroyed;
-entity generator; // global generator entity (TODO: replace with a script for multi generator support?)
 float gendmg;
 #define GENERATOR_MIN '-52 -52 -14'
 #define GENERATOR_MAX '52 52 75'
\ No newline at end of file