]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Add a setting to stop monsters from attacking turrets
authorMario <mario.mario@y7mail.com>
Fri, 1 Mar 2013 23:05:18 +0000 (10:05 +1100)
committerMario <mario.mario@y7mail.com>
Fri, 1 Mar 2013 23:05:18 +0000 (10:05 +1100)
gamemodes.cfg
qcsrc/server/autocvars.qh
qcsrc/server/monsters/lib/monsters.qc
qcsrc/server/mutators/gamemode_td.qc
qcsrc/server/mutators/gamemode_td.qh

index 2ede763d8c4b1dad5458c9b316e317b4be5d7344..9a62eb26c58edb01407728d193ba471d1b007986 100644 (file)
@@ -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
index 641bf0cd2b3a0fb8ad5d43b0c8af9cb3eaaaff2d..1be6305d271ddad72e2761b6da671cb32c1ab795 100644 (file)
@@ -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;
index 330349eb639748eadcfd9ca173e59745360ea59f..dc7ea6fa2db0513994310fe4e075031fb5d25a55 100644 (file)
@@ -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;
        
index 1a0a78719721749ba4fab4c6ae094eb4b0f45f8b..77394c48267522f251b3959c926d5e144360c98e 100644 (file)
@@ -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"))
                {
index b3a567d87fd57bc60e3f8c3fd90d67de9794a9e6..b199fd5e84c481eae65812ba429a3c65d13bd4ab 100644 (file)
@@ -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;