2 const vector DOG_MAX = '16 16 12';
3 const vector DOG_MIN = '-16 -16 -24';
6 float autocvar_g_monster_dog;
7 float autocvar_g_monster_dog_health;
8 float autocvar_g_monster_dog_bite_damage;
9 float autocvar_g_monster_dog_attack_jump_damage;
10 float autocvar_g_monster_dog_speed_walk;
11 float autocvar_g_monster_dog_speed_run;
14 #define dog_anim_idle 0
15 #define dog_anim_walk 1
16 #define dog_anim_run 2
17 #define dog_anim_attack 3
18 #define dog_anim_die 4
19 #define dog_anim_pain 5
23 float bigdmg = autocvar_g_monster_dog_attack_jump_damage * self.scale;
29 if (vlen(self.velocity) > 300)
30 Damage(self.enemy, self, self, bigdmg * monster_skill, DEATH_MONSTER_DOG_JUMP, self.enemy.origin, normalize(self.enemy.origin - self.origin));
33 if(self.flags & FL_ONGROUND)
34 self.touch = MonsterTouch;
39 self.think = dog_think;
40 self.nextthink = time + 0.3;
42 monster_move(autocvar_g_monster_dog_speed_run, autocvar_g_monster_dog_speed_walk, 50, dog_anim_run, dog_anim_walk, dog_anim_idle);
47 float bigdmg = autocvar_g_monster_dog_bite_damage * self.scale;
49 self.frame = dog_anim_attack;
50 self.attack_finished_single = time + 0.7;
52 monster_melee(self.enemy, bigdmg * monster_skill, 100, DEATH_MONSTER_DOG_BITE);
57 makevectors(self.angles);
58 if(monster_leap(dog_anim_attack, Dog_JumpTouch, v_forward * 300 + '0 0 200', 0.8))
66 Monster_CheckDropCvars ("dog");
68 self.solid = SOLID_NOT;
69 self.takedamage = DAMAGE_NO;
70 self.event_damage = func_null;
72 self.nextthink = time + 2.1;
73 self.think = Monster_Fade;
74 self.pain_finished = self.nextthink;
75 self.movetype = MOVETYPE_TOSS;
76 self.frame = dog_anim_die;
78 monster_hook_death(); // for post-death mods
84 self.health = autocvar_g_monster_dog_health * self.scale;
86 self.damageforcescale = 0;
87 self.classname = "monster_dog";
88 self.attack_melee = dog_attack;
89 self.attack_ranged = dog_jump;
90 self.checkattack = GenericCheckAttack;
91 self.nextthink = time + random() * 0.5 + 0.1;
92 self.think = dog_think;
93 self.frame = dog_anim_idle;
94 self.sprite_height = 20 * self.scale;
96 monster_hook_spawn(); // for post-spawn mods
99 void spawnfunc_monster_dog ()
101 if not(autocvar_g_monster_dog)
107 self.monster_spawnfunc = spawnfunc_monster_dog;
109 if(self.spawnflags & MONSTERFLAG_APPEAR)
111 self.think = func_null;
113 self.use = Monster_Appear;
117 if not (monster_initialize(
119 "models/monsters/dog.dpm",