]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/monsters/monster/fish.qc
Fix some fish & tarbaby issues
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / monsters / monster / fish.qc
index def58600db9b38e29973fe56dec21f841545a14c..677a496f883ff3d5bea8a1f5397598af2c9d4330 100644 (file)
@@ -1,7 +1,14 @@
+#ifndef MENUQC
 // size
 const vector FISH_MIN = '-16 -16 -24';
 const vector FISH_MAX = '16 16 16';
 
+// model
+string FISH_MODEL = "models/monsters/fish.mdl";
+
+#endif
+
+#ifdef SVQC
 // cvars
 float autocvar_g_monster_fish;
 float autocvar_g_monster_fish_health;
@@ -10,40 +17,34 @@ float autocvar_g_monster_fish_speed_walk;
 float autocvar_g_monster_fish_speed_run;
 
 // animations
-#define fish_anim_attack 0
-#define fish_anim_death  1
-#define fish_anim_swim   2
-#define fish_anim_pain   3
+const float fish_anim_attack = 0;
+const float fish_anim_death  = 1;
+const float fish_anim_swim   = 2;
+const float fish_anim_pain   = 3;
 
 void fish_think ()
 {
        self.think = fish_think;
-       self.nextthink = time + 0.1;
+       self.nextthink = time + self.ticrate;
        
        monster_move(autocvar_g_monster_fish_speed_run, autocvar_g_monster_fish_speed_walk, 10, fish_anim_swim, fish_anim_swim, fish_anim_swim);
 }
 
 void fish_attack ()
 {
-       float bigdmg = autocvar_g_monster_fish_damage * self.scale;
-       
-       self.frame = fish_anim_attack;
+       monsters_setframe(fish_anim_attack);
        self.attack_finished_single = time + 0.5;
 
-       monster_melee(self.enemy, bigdmg * monster_skill, 60, DEATH_MONSTER_FISH);
+       monster_melee(self.enemy, autocvar_g_monster_fish_damage, 0.1, DEATH_MONSTER_FISH, FALSE);
 }
 
 void fish_die ()
 {
        Monster_CheckDropCvars ("fish");
        
-       self.solid                      = SOLID_NOT;
-       self.takedamage         = DAMAGE_NO;
-       self.event_damage   = func_null;
-       self.enemy                      = world;
-       self.frame                      = fish_anim_death;
-       self.think                      = Monster_Fade;
-       self.nextthink          = time + 2.1;
+       self.think = Monster_Fade;
+       self.nextthink = time + 5;
+       monsters_setframe(fish_anim_death);
        
        monster_hook_death(); // for post-death mods
 }
@@ -60,7 +61,7 @@ void fish_spawn ()
        self.flags                         |= FL_SWIM;
        self.nextthink                  = time + random() * 0.5 + 0.1;
        self.think                              = fish_think;
-       self.sprite_height              = 20 * self.scale;
+       self.sprite_height              = 20;
        
        monster_hook_spawn(); // for post-spawn mods
 }
@@ -71,19 +72,14 @@ void spawnfunc_monster_fish ()
        
        self.monster_spawnfunc = spawnfunc_monster_fish;
        
-       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(
-                        "Rotfish",
-                        "models/monsters/fish.mdl",
+                        "Rotfish", MONSTER_FISH,
+                        FISH_MODEL,
                         FISH_MIN, FISH_MAX,
                         TRUE,
                         fish_die, fish_spawn))
@@ -92,3 +88,5 @@ void spawnfunc_monster_fish ()
                return;
        }
 }
+
+#endif // SVQC