2 const vector DOG_MIN = '-16 -16 -24';
3 const vector DOG_MAX = '16 16 12';
6 string DOG_MODEL = "models/monsters/dog.dpm";
10 float autocvar_g_monster_dog;
11 float autocvar_g_monster_dog_health;
12 float autocvar_g_monster_dog_bite_damage;
13 float autocvar_g_monster_dog_attack_jump_damage;
14 float autocvar_g_monster_dog_speed_walk;
15 float autocvar_g_monster_dog_speed_run;
18 const float dog_anim_idle = 0;
19 const float dog_anim_walk = 1;
20 const float dog_anim_run = 2;
21 const float dog_anim_attack = 3;
22 const float dog_anim_die = 4;
23 const float dog_anim_pain = 5;
32 if (vlen(self.velocity) > 300)
33 Damage(self.enemy, self, self, autocvar_g_monster_dog_attack_jump_damage * monster_skill, DEATH_MONSTER_DOG_JUMP, self.enemy.origin, normalize(self.enemy.origin - self.origin));
36 if(self.flags & FL_ONGROUND)
37 self.touch = MonsterTouch;
42 self.think = dog_think;
43 self.nextthink = time + self.ticrate;
45 monster_move(autocvar_g_monster_dog_speed_run, autocvar_g_monster_dog_speed_walk, 50, dog_anim_run, dog_anim_walk, dog_anim_idle);
50 monsters_setframe(dog_anim_attack);
51 self.attack_finished_single = time + 0.7;
53 monster_melee(self.enemy, autocvar_g_monster_dog_bite_damage, 0.2, DEATH_MONSTER_DOG_BITE, TRUE);
60 makevectors(self.angles);
61 if(monster_leap(dog_anim_attack, Dog_JumpTouch, v_forward * 300 + '0 0 200', 0.8))
69 Monster_CheckDropCvars ("dog");
71 self.think = monster_dead_think;
72 self.nextthink = time + self.ticrate;
73 self.ltime = time + 5;
74 monsters_setframe(dog_anim_die);
76 monster_hook_death(); // for post-death mods
82 self.health = autocvar_g_monster_dog_health;
84 self.damageforcescale = 0;
85 self.classname = "monster_dog";
86 self.attack_melee = dog_attack;
87 self.attack_ranged = dog_jump;
88 self.checkattack = GenericCheckAttack;
89 self.nextthink = time + random() * 0.5 + 0.1;
90 self.think = dog_think;
92 monsters_setframe(dog_anim_idle);
94 monster_setupsounds("dog");
96 monster_hook_spawn(); // for post-spawn mods
99 void spawnfunc_monster_dog ()
101 if not(autocvar_g_monster_dog) { remove(self); return; }
103 self.monster_spawnfunc = spawnfunc_monster_dog;
105 if(Monster_CheckAppearFlags(self))
108 if not (monster_initialize(
109 "Cerberus", MONSTER_DOG,