]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Add a flag to make flying monsters not fly up or down
authorMario <mario.mario@y7mail.com>
Sat, 31 Aug 2013 22:39:26 +0000 (08:39 +1000)
committerMario <mario.mario@y7mail.com>
Sat, 31 Aug 2013 22:39:26 +0000 (08:39 +1000)
qcsrc/common/monsters/sv_monsters.qc
qcsrc/common/monsters/sv_monsters.qh

index 4336fc19bef284ad51adf0b7470ae000efb7ac5c..24794a08f21a399c045ec75352e19a78f36351a0 100644 (file)
@@ -389,7 +389,7 @@ vector monster_pickmovetarget(entity targ)
                makevectors(self.angles);
                self.monster_movestate = MONSTER_MOVE_ENEMY;
                self.last_trace = time + 1.2;
-               return self.enemy.origin * 0.9 + ((self.origin + v_forward * 500) + randomvec() * 400) * 0.1;
+               return self.enemy.origin;
        }
        
        switch(self.monster_moveflags)
@@ -604,11 +604,10 @@ void monster_move(float runspeed, float walkspeed, float stopspeed, float manim_
        if(self.enemy && self.enemy.vehicle)
                runspeed = 0;
        
-       if not(self.flags & FL_FLY || self.flags & FL_SWIM)
-               self.moveto_z = self.origin_z; 
-       
-       if(self.flags & FL_FLY || self.flags & FL_SWIM)
+       if(((self.flags & FL_FLY) || (self.flags & FL_SWIM)) && self.spawnflags & MONSTERFLAG_FLY_VERTICAL)
                v_forward = normalize(self.moveto - self.origin);
+       else
+               self.moveto_z = self.origin_z; 
 
        if(vlen(self.origin - self.moveto) > 64)
        {
@@ -616,9 +615,10 @@ void monster_move(float runspeed, float walkspeed, float stopspeed, float manim_
                        movelib_move_simple(v_forward, ((self.enemy) ? runspeed : walkspeed), 0.6);
                else
                        movelib_move_simple_gravity(v_forward, ((self.enemy) ? runspeed : walkspeed), 0.6);
+                       
                if(time > self.pain_finished)
                if(time > self.attack_finished_single)
-               if(vlen(self.velocity) > 0)
+               if(vlen(self.velocity) > 10)
                        monsters_setframe((self.enemy) ? manim_run : manim_walk);
                else
                        monsters_setframe(manim_idle);
@@ -659,7 +659,8 @@ void monster_dead_think()
        self.nextthink = time + 0.3; // don't need to update so often now
        
        self.deadflag = DEAD_DEAD;
-
+       
+       if(self.ltime != 0)
        if(time >= self.ltime)
        {
                Monster_Fade();
index f27ce0072ff45e0030755f035f6b3b07c73f72ef..2cedf240e757c3258a5a3051d74080f5f6a7beb1 100644 (file)
@@ -42,6 +42,7 @@ const float MONSTERSKILL_NOTNIGHTMARE = 4096; // monster will not spawn on skill
 const float MONSTERFLAG_MINIBOSS = 1;  // monster spawns as mini-boss (also has a chance of naturally becoming one)
 const float MONSTERFLAG_APPEAR = 2; // delay spawn until triggered
 const float MONSTERFLAG_NORESPAWN = 4;
+const float MONSTERFLAG_FLY_VERTICAL = 8; // fly/swim vertically
 const float MONSTERFLAG_SPAWNED = 512; // flag for spawned monsters
 
 .float msound_delay; // restricts some monster sounds