From 5cf9a21626ee033c3b7a7a7f4fdc1c8bcd503f15 Mon Sep 17 00:00:00 2001 From: Mario Date: Sat, 2 Mar 2013 10:05:18 +1100 Subject: [PATCH] Add a setting to stop monsters from attacking turrets --- gamemodes.cfg | 1 + qcsrc/server/autocvars.qh | 1 + qcsrc/server/monsters/lib/monsters.qc | 1 + qcsrc/server/mutators/gamemode_td.qc | 6 ++++++ qcsrc/server/mutators/gamemode_td.qh | 2 ++ 5 files changed, 11 insertions(+) diff --git a/gamemodes.cfg b/gamemodes.cfg index 2ede763d8..9a62eb26c 100644 --- a/gamemodes.cfg +++ b/gamemodes.cfg @@ -499,6 +499,7 @@ set g_td_pvp 0 set g_td_monsters_skill_start 1 "set to 0 to use g_monsters_skill instead" set g_td_monsters_skill_increment 0.1 set g_td_monsters_spawnshield_time 2 +set g_td_monsters_ignore_turrets 0 set g_td_max_waves 8 set g_td_kill_points 5 set g_td_turretkill_points 3 diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index 641bf0cd2..1be6305d2 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -1297,6 +1297,7 @@ float autocvar_g_td_monsters_speed_walk; float autocvar_g_td_monsters_speed_run; float autocvar_g_td_monsters_spawn_delay; float autocvar_g_td_monsters_spawnshield_time; +float autocvar_g_td_monsters_ignore_turrets; float autocvar_g_td_turret_upgrade_cost; float autocvar_g_td_turret_repair_cost; float autocvar_g_td_barricade_damage; diff --git a/qcsrc/server/monsters/lib/monsters.qc b/qcsrc/server/monsters/lib/monsters.qc index 330349eb6..dc7ea6fa2 100644 --- a/qcsrc/server/monsters/lib/monsters.qc +++ b/qcsrc/server/monsters/lib/monsters.qc @@ -580,6 +580,7 @@ void monsters_damage (entity inflictor, entity attacker, float damage, float dea if(self.frozen) return; + if((ignore_turrets && !(attacker.turrcaps_flags & TFL_TURRCAPS_ISTURRET)) || !ignore_turrets) if(monster_isvalidtarget(attacker, self, FALSE)) self.enemy = attacker; diff --git a/qcsrc/server/mutators/gamemode_td.qc b/qcsrc/server/mutators/gamemode_td.qc index 1a0a78719..77394c482 100644 --- a/qcsrc/server/mutators/gamemode_td.qc +++ b/qcsrc/server/mutators/gamemode_td.qc @@ -31,6 +31,7 @@ void spawnfunc_td_controller() m_speed_run = ((self.mspeed_run) ? self.mspeed_run : autocvar_g_td_monsters_speed_run); spawn_delay = ((self.spawndelay) ? self.spawndelay : autocvar_g_td_monsters_spawn_delay); max_current = ((self.maxcurrent) ? self.maxcurrent : autocvar_g_td_current_monsters); + ignore_turrets = ((self.ignoreturrets) ? self.ignoreturrets : autocvar_g_td_monsters_ignore_turrets); wave_end(TRUE); } @@ -172,6 +173,7 @@ void spawnfunc_monster_swarm() default: break; } + // TODO: fix this classname mess switch(self.spawnflags) { case SWARM_STRONG: self.classname = "swarm_strong"; break; @@ -923,6 +925,10 @@ MUTATOR_HOOKFUNCTION(td_MonsterFindTarget) for(e = world;(e = findflags(e, monster_attack, TRUE)); ) { + if(ignore_turrets) + if(e.turrcaps_flags & TFL_TURRCAPS_ISTURRET) + continue; + if(monster_isvalidtarget(e, self, FALSE)) if((vlen(trace_endpos - self.origin) < 200 && 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")) { diff --git a/qcsrc/server/mutators/gamemode_td.qh b/qcsrc/server/mutators/gamemode_td.qh index b3a567d87..b199fd5e8 100644 --- a/qcsrc/server/mutators/gamemode_td.qh +++ b/qcsrc/server/mutators/gamemode_td.qh @@ -20,6 +20,7 @@ float m_speed_walk; .float spawntype; float spawn_delay; float max_current; +float ignore_turrets; float SWARM_NORMAL = 0; float SWARM_WEAK = 1; float SWARM_STRONG = 2; @@ -53,6 +54,7 @@ float current_phase; .float mspeed_walk; .float spawndelay; .float maxcurrent; +.float ignoreturrets; // Generator float gendestroyed; -- 2.39.2