1 #ifdef REGISTER_MONSTER
3 /* MON_##id */ CERBERUS,
4 /* function */ m_cerberus,
6 /* mins,maxs */ '-16 -16 -24', '16 16 12',
8 /* netname */ "cerberus",
9 /* fullname */ _("Cerberus")
14 float autocvar_g_monster_cerberus;
15 float autocvar_g_monster_cerberus_health;
16 float autocvar_g_monster_cerberus_bite_damage;
17 float autocvar_g_monster_cerberus_attack_jump_damage;
18 float autocvar_g_monster_cerberus_speed_walk;
19 float autocvar_g_monster_cerberus_speed_run;
21 const float cerberus_anim_idle = 0;
22 const float cerberus_anim_walk = 1;
23 const float cerberus_anim_run = 2;
24 const float cerberus_anim_attack = 3;
25 const float cerberus_anim_die = 4;
26 const float cerberus_anim_pain = 5;
28 void cerberus_touch_jump()
31 if (vlen(self.velocity) > 300)
33 Damage(self.enemy, self, self, autocvar_g_monster_cerberus_attack_jump_damage * monster_skill, DEATH_MONSTER_CERBERUS_JUMP, self.enemy.origin, normalize(self.enemy.origin - self.origin));
34 self.touch = MonsterTouch;
37 if(trace_dphitcontents)
38 self.touch = MonsterTouch;
41 float cerberus_attack(float attack_type)
45 case MONSTER_ATTACK_MELEE:
47 monsters_setframe(cerberus_anim_attack);
48 self.attack_finished_single = time + 0.7;
49 monster_melee(self.enemy, autocvar_g_monster_cerberus_bite_damage, 0.2, DEATH_MONSTER_CERBERUS_BITE, TRUE);
53 case MONSTER_ATTACK_RANGED:
55 makevectors(self.angles);
56 if(monster_leap(cerberus_anim_attack, cerberus_touch_jump, v_forward * 300 + '0 0 200', 0.8))
64 void spawnfunc_monster_cerberus()
66 if not(autocvar_g_monster_cerberus) { remove(self); return; }
68 self.classname = "monster_cerberus";
70 self.monster_spawnfunc = spawnfunc_monster_cerberus;
72 if(Monster_CheckAppearFlags(self))
75 if not(monster_initialize(MON_CERBERUS, FALSE)) { remove(self); return; }
78 // compatibility with old spawns
79 void spawnfunc_monster_dog() { spawnfunc_monster_cerberus(); }
81 float m_cerberus(float req)
87 monster_move(autocvar_g_monster_cerberus_speed_run, autocvar_g_monster_cerberus_speed_walk, 50, cerberus_anim_run, cerberus_anim_walk, cerberus_anim_idle);
92 monsters_setframe(cerberus_anim_die);
97 if not(self.health) self.health = autocvar_g_monster_cerberus_health;
99 self.monster_attackfunc = cerberus_attack;
100 monsters_setframe(cerberus_anim_idle);
116 float m_cerberus(float req)
127 precache_model ("models/monsters/dog.dpm");
136 #endif // REGISTER_MONSTER