]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Fix more bad use of .think
authorMario <mario.mario@y7mail.com>
Thu, 18 Apr 2013 05:16:09 +0000 (15:16 +1000)
committerMario <mario.mario@y7mail.com>
Thu, 18 Apr 2013 05:16:09 +0000 (15:16 +1000)
qcsrc/server/monsters/lib/monsters.qc
qcsrc/server/monsters/monster/ogre.qc
qcsrc/server/monsters/monster/shalrath.qc
qcsrc/server/monsters/monster/shambler.qc

index 89911d57f785ef302d6a9f62a83942787c088718..531ad97089e044509fe709742beb2928fc0ac2f1 100644 (file)
@@ -349,9 +349,16 @@ float monster_leap (float anm, void() touchfunc, vector vel, float anim_finished
 float GenericCheckAttack ()
 {
        // checking attack while dead?
-       if (self.health <= 0 || self.enemy == world)
+       if (self.health <= 0)
                return FALSE;
                
+       // reset delays when we have no enemy
+       if not(self.enemy)
+       {
+               self.monster_delayedattack = func_null;
+               self.delay = -1;
+       }
+               
        if(self.monster_delayedattack && self.delay != -1)
        {
                if(time < self.delay)
index 64128af788acbb65613ecc8d9d47cc56ae6f50c1..a340d552cbfb95e5f60c055b31992f9fd86149ae 100644 (file)
@@ -59,8 +59,8 @@ void ogre_swing()
        if(self.ogre_cycles == 1)
                self.attack_finished_single = time + 1.3;
        self.angles_y = self.angles_y + random()* 25;
-       self.nextthink = time + 0.2;
-       self.think = ogre_swing;
+       self.delay = time + 0.2;
+       self.monster_delayedattack = ogre_swing;
        
        if(self.ogre_cycles <= 2)
                chainsaw();
@@ -70,7 +70,10 @@ void ogre_swing()
                chainsaw();
        
        if(self.ogre_cycles >= 4)
-               self.think = ogre_think;
+       {
+               self.monster_delayedattack = func_null;
+               self.delay = -1;
+       }
 }
 
 void ogre_uzi_fire()
index e7eff4cfec078d26fb408aa226a08185d806ae7e..7d495c42e36fc2d837609a58b1c212c63346f909 100644 (file)
@@ -163,8 +163,15 @@ float ShalrathCheckAttack ()
 {
        vector spot1 = '0 0 0', spot2 = '0 0 0';
 
-       if (self.health <= 0 || self.enemy == world || self.enemy.health < 1)
+       if (self.health <= 0)
                return FALSE;
+               
+       // reset delays when we have no enemy
+       if not(self.enemy)
+       {
+               self.monster_delayedattack = func_null;
+               self.delay = -1;
+       }
        
        if(self.monster_delayedattack && self.delay != -1)
        {
index 72f02fee44b194cf76661b9fd55fefe4c7048577..a3ba1e736bcbf39afb7f697a6479eab794e0b784 100644 (file)
@@ -36,54 +36,47 @@ void shambler_think ()
 
 void shambler_smash ()
 {
-       float bigdmg = autocvar_g_monster_shambler_damage * self.scale;
-       
-       self.think = shambler_think;
-       self.attack_finished_single = time + 0.4;
-       self.nextthink = self.attack_finished_single;
-
-       if (!self.enemy)
-               return;
-
-       if (vlen(self.enemy.origin - self.origin) > 100 * self.scale)
-               return;
+       self.monster_delayedattack = func_null;
+       self.delay = -1;
        
-       Damage(self.enemy, self, self, bigdmg * monster_skill, DEATH_MONSTER_SHAMBLER_SMASH, self.enemy.origin, normalize(self.enemy.origin - self.origin));
+       monster_melee(self.enemy, autocvar_g_monster_shambler_damage, 0.3, DEATH_MONSTER_SHAMBLER_SMASH, TRUE);
 }
 
 void shambler_delayedsmash ()
 {
        monsters_setframe(shambler_anim_smash);
-       self.think = shambler_smash;
-       self.nextthink = time + 0.7;
-}
-
-void ShamClaw (float side)
-{
-       monster_melee(self.enemy, autocvar_g_monster_shambler_attack_claw_damage, 0.3, DEATH_MONSTER_SHAMBLER_CLAW, TRUE);
+       self.monster_delayedattack = shambler_smash;
+       self.delay = time + 0.7;
+       self.attack_finished_single = time + 1.1;
 }
 
 void() shambler_swing_right;
 void shambler_swing_left ()
 {
        monsters_setframe(shambler_anim_swingl);
-       ShamClaw(250);
+       monster_melee(self.enemy, autocvar_g_monster_shambler_attack_claw_damage, 0.3, DEATH_MONSTER_SHAMBLER_CLAW, TRUE);
        self.attack_finished_single = time + 0.8;
-       self.nextthink = self.attack_finished_single;
-       self.think = shambler_think;
+       self.delay = -1;
+       self.monster_delayedattack = func_null;
        if(random() < 0.5)
-               self.think = shambler_swing_right;
+       {
+               self.monster_delayedattack = shambler_swing_right;
+               self.delay = time + 0.5;
+       }
 }
 
 void shambler_swing_right ()
 {
        monsters_setframe(shambler_anim_swingr);
-       ShamClaw(-250);
+       monster_melee(self.enemy, autocvar_g_monster_shambler_attack_claw_damage, 0.3, DEATH_MONSTER_SHAMBLER_CLAW, TRUE);
        self.attack_finished_single = time + 0.8;
-       self.nextthink = self.attack_finished_single;
-       self.think = shambler_think;
+       self.monster_delayedattack = func_null;
+       self.delay = -1;
        if(random() < 0.5)
-               self.think = shambler_swing_left;
+       {
+               self.monster_delayedattack = shambler_swing_left;
+               self.delay = time + 0.5;
+       }
 }
 
 void sham_melee ()