]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/monsters/monster/knight.qc
Some fixes for mage shield
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / monsters / monster / knight.qc
index 48026e621fff2decd856ceced06d2e08f4dd4499..7421945216f449afa5687b5233abd3079c8187d4 100644 (file)
@@ -1,7 +1,11 @@
 // size
 const vector KNIGHT_MIN = '-16 -16 -24';
 const vector KNIGHT_MAX = '16 16 32';
-       
+
+// model
+string KNIGHT_MODEL = "models/monsters/knight.mdl";
+
+#ifdef SVQC
 // cvars
 float autocvar_g_monster_knight;
 float autocvar_g_monster_knight_health;
@@ -10,50 +14,45 @@ float autocvar_g_monster_knight_speed_walk;
 float autocvar_g_monster_knight_speed_run;
 
 // animations
-#define knight_anim_stand              0
-#define knight_anim_run                1
-#define knight_anim_runattack  2
-#define knight_anim_pain1              3
-#define knight_anim_pain2              4
-#define knight_anim_attack             5
-#define knight_anim_walk               6
-#define knight_anim_kneel              7
-#define knight_anim_standing   8
-#define knight_anim_death1             9
-#define knight_anim_death2             10
+const float knight_anim_stand          = 0;
+const float knight_anim_run            = 1;
+const float knight_anim_runattack      = 2;
+const float knight_anim_pain1          = 3;
+const float knight_anim_pain2          = 4;
+const float knight_anim_attack                 = 5;
+const float knight_anim_walk           = 6;
+const float knight_anim_kneel          = 7;
+const float knight_anim_standing       = 8;
+const float knight_anim_death1                 = 9;
+const float knight_anim_death2                 = 10;
 
 void knight_think ()
 {
        self.think = knight_think;
-       self.nextthink = time + 0.1;
+       self.nextthink = time + self.ticrate;
        
        monster_move(autocvar_g_monster_knight_speed_run, autocvar_g_monster_knight_speed_walk, 50, knight_anim_run, knight_anim_walk, knight_anim_stand);
 }
 
 void knight_attack ()
 {
-       local float len = vlen(self.velocity);
+       float len = vlen(self.velocity);
 
-       self.frame = ((len < 50) ? knight_anim_attack : knight_anim_runattack);
+       monsters_setframe((len < 50) ? knight_anim_attack : knight_anim_runattack);
        
-       self.attack_finished_single = time + 0.9;
+       self.attack_finished_single = time + 1.25;
        
-       monster_melee(self.enemy, autocvar_g_monster_knight_melee_damage, 80, DEATH_MONSTER_MELEE);
+       monster_melee(self.enemy, autocvar_g_monster_knight_melee_damage, 0.3, DEATH_MONSTER_KNIGHT, FALSE);
 }
 
 void knight_die ()
 {
        Monster_CheckDropCvars ("knight");
-               
-       self.frame                      = ((random() > 0.5) ? knight_anim_death1 : knight_anim_death2);
-       self.solid                      = SOLID_NOT;
-       self.takedamage         = DAMAGE_NO;
-       self.event_damage   = func_null;
-       self.enemy                      = world;
-       self.think                      = Monster_Fade;
-       self.movetype           = MOVETYPE_TOSS;
-       self.nextthink          = time + 2.1;
-       self.pain_finished  = self.nextthink;
+       
+       self.think = monster_dead_think;
+       self.nextthink = time + self.ticrate;
+       self.ltime = time + 5;
+       monsters_setframe((random() > 0.5) ? knight_anim_death1 : knight_anim_death2);
        
        monster_hook_death(); // for post-death mods
 }
@@ -69,8 +68,10 @@ void knight_spawn ()
        self.attack_melee               = knight_attack;
        self.nextthink                  = time + random() * 0.5 + 0.1;
        self.think                              = knight_think;
-       self.sprite_height              = 30 * self.scale;
-       self.frame                              = knight_anim_stand;
+       
+       monsters_setframe(knight_anim_stand);
+       
+       monster_setupsounds("knight");
        
        monster_hook_spawn(); // for post-spawn mods
 }
@@ -81,19 +82,13 @@ void spawnfunc_monster_knight ()
        
        self.monster_spawnfunc = spawnfunc_monster_knight;
        
-       if(self.spawnflags & MONSTERFLAG_APPEAR)
-       {
-               self.think = func_null;
-               self.nextthink = -1;
-               self.use = Monster_Appear;
+       if(Monster_CheckAppearFlags(self))
                return;
-       }
        
        self.scale = 1.3;
        
        if not (monster_initialize(
-                        "Knight",
-                        "models/monsters/knight.mdl",
+                        "Knight", MONSTER_KNIGHT,
                         KNIGHT_MIN, KNIGHT_MAX,
                         FALSE,
                         knight_die, knight_spawn))
@@ -102,3 +97,5 @@ void spawnfunc_monster_knight ()
                return;
        }
 }
+
+#endif // SVQC