From: Mario Date: Sat, 26 Jan 2013 09:39:43 +0000 (+1100) Subject: Remove redundant global generator entity X-Git-Tag: xonotic-v0.8.0~241^2^2~564 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=f7727b2466b3ee8f633f6c017f52bf8010ad17d8;p=xonotic%2Fxonotic-data.pk3dir.git Remove redundant global generator entity --- diff --git a/qcsrc/server/mutators/gamemode_td.qc b/qcsrc/server/mutators/gamemode_td.qc index 6b5fa810a..bb5df89ca 100644 --- a/qcsrc/server/mutators/gamemode_td.qc +++ b/qcsrc/server/mutators/gamemode_td.qc @@ -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; } diff --git a/qcsrc/server/mutators/gamemode_td.qh b/qcsrc/server/mutators/gamemode_td.qh index 471eaae65..e6ece9698 100644 --- a/qcsrc/server/mutators/gamemode_td.qh +++ b/qcsrc/server/mutators/gamemode_td.qh @@ -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