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")
12 #define CERBERUS_SETTINGS(monster) \
13 MON_ADD_CVAR(monster, health) \
14 MON_ADD_CVAR(monster, attack_bite_damage) \
15 MON_ADD_CVAR(monster, attack_jump_damage) \
16 MON_ADD_CVAR(monster, speed_run) \
17 MON_ADD_CVAR(monster, speed_walk)
20 CERBERUS_SETTINGS(cerberus)
24 const float cerberus_anim_idle = 0;
25 const float cerberus_anim_walk = 1;
26 const float cerberus_anim_run = 2;
27 const float cerberus_anim_attack = 3;
28 const float cerberus_anim_die = 4;
29 const float cerberus_anim_pain = 5;
31 void cerberus_touch_jump()
34 if (vlen(self.velocity) > 300)
36 Damage(self.enemy, self, self, MON_CVAR(cerberus, attack_jump_damage) * monster_skill, DEATH_MONSTER_CERBERUS_JUMP, self.enemy.origin, normalize(self.enemy.origin - self.origin));
37 self.touch = MonsterTouch;
40 if(trace_dphitcontents)
41 self.touch = MonsterTouch;
44 float cerberus_attack(float attack_type)
48 case MONSTER_ATTACK_MELEE:
50 monsters_setframe(cerberus_anim_attack);
51 self.attack_finished_single = time + 0.7;
52 monster_melee(self.enemy, MON_CVAR(cerberus, attack_bite_damage), 0.2, DEATH_MONSTER_CERBERUS_BITE, TRUE);
56 case MONSTER_ATTACK_RANGED:
58 makevectors(self.angles);
59 if(monster_leap(cerberus_anim_attack, cerberus_touch_jump, v_forward * 300 + '0 0 200', 0.8))
67 void spawnfunc_monster_cerberus()
69 self.classname = "monster_cerberus";
71 self.monster_spawnfunc = spawnfunc_monster_cerberus;
73 if(Monster_CheckAppearFlags(self))
76 if not(monster_initialize(MON_CERBERUS, FALSE)) { remove(self); return; }
79 // compatibility with old spawns
80 void spawnfunc_monster_dog() { spawnfunc_monster_cerberus(); }
82 float m_cerberus(float req)
88 monster_move(MON_CVAR(cerberus, speed_run), MON_CVAR(cerberus, speed_walk), 50, cerberus_anim_run, cerberus_anim_walk, cerberus_anim_idle);
93 monsters_setframe(cerberus_anim_die);
98 if not(self.health) self.health = MON_CVAR(cerberus, health);
100 self.monster_attackfunc = cerberus_attack;
101 monsters_setframe(cerberus_anim_idle);
112 MON_CONFIG_SETTINGS(CERBERUS_SETTINGS(cerberus))
122 float m_cerberus(float req)
133 precache_model ("models/monsters/dog.dpm");
142 #endif // REGISTER_MONSTER