]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Fix spider not freezing its prey
authorMario <mario.mario@y7mail.com>
Fri, 14 Jun 2013 08:36:53 +0000 (18:36 +1000)
committerMario <mario.mario@y7mail.com>
Fri, 14 Jun 2013 08:36:53 +0000 (18:36 +1000)
qcsrc/server/monsters/lib/monsters.qc
qcsrc/server/monsters/monster/spider.qc
qcsrc/server/mutators/gamemode_towerdefense.qc

index 1a47dc4dcc50a165c4c64e2f63f8028bcebd577d..7cc0c0f958b0d63d41db2c7f8cc43cc903ba3c0e 100644 (file)
@@ -599,13 +599,16 @@ void monster_move(float runspeed, float walkspeed, float stopspeed, float manim_
         
        //v_forward = normalize(self.moveto - self.origin);
        
-       self.steerto = steerlib_attract2(self.moveto, 0.5, 500, 0.95);
+       //self.steerto = steerlib_attract2(self.moveto, 0.5, 500, 0.95);
        
        float turny = 0;
        vector real_angle = vectoangles(self.steerto) - self.angles;
        
        if(self.state != MONSTER_STATE_ATTACK_LEAP && self.state != MONSTER_STATE_ATTACK_MELEE)
                turny = 20;
+               
+       if(g_td)
+               turny = vlen(self.angles - self.moveto);
        
        if(turny)
        {
index 2441188551e776c39a1fbc6d6deb9687f49cfb77..4b6eda73fe8791412b630ee1b1f1cdd9fc245f42 100644 (file)
@@ -41,6 +41,7 @@ void spider_web_explode()
                switch(self.realowner.spider_type)
                {
                        case SPIDER_TYPE_ICE:
+                               rad = 25;
                                pointparticles(particleeffectnum("electro_impact"), self.origin, '0 0 0', 1);
                                break;
                        case SPIDER_TYPE_FIRE:
@@ -53,13 +54,12 @@ void spider_web_explode()
                
                RadiusDamage(self, self.realowner, damg, edamg, 0, world, rad, DEATH_MONSTER_SPIDER_FIRE, world); // ice deals no damage anyway
                
-               if(self.realowner.spider_type == SPIDER_TYPE_FIRE)
                for(e = findradius(self.origin, rad); e; e = e.chain) if(e.takedamage && e.deadflag == DEAD_NO)
                {
                        switch(self.realowner.spider_type)
                        {
                                case SPIDER_TYPE_ICE:
-                                       Freeze(other, 0.3, 2, FALSE);
+                                       Freeze(e, 0.3, 2, FALSE);
                                        break;
                                case SPIDER_TYPE_FIRE:
                                        Fire_AddDamage(e, self.realowner, 5 * monster_skill, autocvar_g_monster_spider_attack_fire_time, DEATH_MONSTER_SPIDER_FIRE, FALSE);
index a0a210ed803dd5c603aac33aa432352295fa3db4..9ee912eb2edc16293a0938ef2895fd6863fb1b40 100644 (file)
@@ -734,7 +734,7 @@ MUTATOR_HOOKFUNCTION(td_PlayerSpawn)
 MUTATOR_HOOKFUNCTION(td_Damage)
 {
        if(IS_PLAYER(frag_attacker))
-       if(frag_target.flags & FL_MONSTER)
+       if(frag_target.flags & FL_MONSTER || frag_target.turrcaps_flags & TFL_TURRCAPS_ISTURRET)
                frag_damage = 0;
                
        if(IS_PLAYER(frag_attacker) || frag_attacker.turrcaps_flags & TFL_TURRCAPS_ISTURRET)