3 const vector DOG_MAX = '16 16 12';
4 const vector DOG_MIN = '-16 -16 -24';
7 string DOG_MODEL = "models/monsters/dog.dpm";
13 float autocvar_g_monster_dog;
14 float autocvar_g_monster_dog_health;
15 float autocvar_g_monster_dog_bite_damage;
16 float autocvar_g_monster_dog_attack_jump_damage;
17 float autocvar_g_monster_dog_speed_walk;
18 float autocvar_g_monster_dog_speed_run;
21 const float dog_anim_idle = 0;
22 const float dog_anim_walk = 1;
23 const float dog_anim_run = 2;
24 const float dog_anim_attack = 3;
25 const float dog_anim_die = 4;
26 const float dog_anim_pain = 5;
30 float bigdmg = autocvar_g_monster_dog_attack_jump_damage * self.scale;
36 if (vlen(self.velocity) > 300)
37 Damage(self.enemy, self, self, bigdmg * monster_skill, DEATH_MONSTER_DOG_JUMP, self.enemy.origin, normalize(self.enemy.origin - self.origin));
40 if(self.flags & FL_ONGROUND)
41 self.touch = MonsterTouch;
46 self.think = dog_think;
47 self.nextthink = time + self.ticrate;
49 monster_move(autocvar_g_monster_dog_speed_run, autocvar_g_monster_dog_speed_walk, 50, dog_anim_run, dog_anim_walk, dog_anim_idle);
54 monsters_setframe(dog_anim_attack);
55 self.attack_finished_single = time + 0.7;
57 monster_melee(self.enemy, autocvar_g_monster_dog_bite_damage, 0.2, DEATH_MONSTER_DOG_BITE, TRUE);
62 makevectors(self.angles);
63 if(monster_leap(dog_anim_attack, Dog_JumpTouch, v_forward * 300 + '0 0 200', 0.8))
71 Monster_CheckDropCvars ("dog");
73 self.think = Monster_Fade;
74 self.nextthink = time + 5;
75 monsters_setframe(dog_anim_die);
77 monster_hook_death(); // for post-death mods
83 self.health = autocvar_g_monster_dog_health * self.scale;
85 self.damageforcescale = 0;
86 self.classname = "monster_dog";
87 self.attack_melee = dog_attack;
88 self.attack_ranged = dog_jump;
89 self.checkattack = GenericCheckAttack;
90 self.nextthink = time + random() * 0.5 + 0.1;
91 self.think = dog_think;
92 self.sprite_height = 20;
93 monsters_setframe(dog_anim_idle);
95 monster_hook_spawn(); // for post-spawn mods
98 void spawnfunc_monster_dog ()
100 if not(autocvar_g_monster_dog) { remove(self); return; }
102 self.monster_spawnfunc = spawnfunc_monster_dog;
104 if(Monster_CheckAppearFlags(self))
107 if not (monster_initialize(
108 "Cerberus", MONSTER_DOG,