Quake II RTX doxygen
1.0 dev
|
|
Go to the documentation of this file.
176 gi.sound(
self, CHAN_VOICE,
sound_idle, 1, ATTN_IDLE, 0);
253 if (
fire_hit(
self, aim, (10 + (rand() % 5)), 100))
254 gi.sound(
self, CHAN_WEAPON,
sound_hit, 1, ATTN_NORM, 0);
264 if (
fire_hit(
self, aim, (10 + (rand() % 5)), 100))
265 gi.sound(
self, CHAN_WEAPON,
sound_hit2, 1, ATTN_NORM, 0);
272 if (!self->enemy || !self->enemy->inuse || self->enemy->health <= 0)
302 if (self->health <= 0) {
307 if (
other->takedamage) {
308 if (VectorLength(self->velocity) > 400) {
313 VectorCopy(self->velocity, normal);
315 VectorMA(self->s.origin, self->maxs[0], normal, point);
316 damage = 40 + 10 *
random();
322 if (self->groundentity) {
338 self->s.origin[2] += 1;
339 VectorScale(
forward, 600, self->velocity);
340 self->velocity[2] = 250;
341 self->groundentity = NULL;
343 self->monsterinfo.attack_finished =
level.
time + 3;
349 if (self->groundentity) {
350 gi.sound(
self, CHAN_WEAPON,
sound_thud, 1, ATTN_NORM, 0);
351 self->monsterinfo.attack_finished = 0;
356 if (
level.
time > self->monsterinfo.attack_finished)
396 if (self->absmin[2] > (self->enemy->absmin[2] + 0.75 * self->enemy->size[2]))
399 if (self->absmax[2] < (self->enemy->absmin[2] + 0.25 * self->enemy->size[2]))
402 v[0] =
self->s.origin[0] -
self->enemy->s.origin[0];
403 v[1] =
self->s.origin[1] -
self->enemy->s.origin[1];
405 distance = VectorLength(v);
409 if (distance > 100) {
419 if (!self->enemy || self->enemy->health <= 0)
423 self->monsterinfo.attack_state =
AS_MELEE;
479 if (self->health < (self->max_health / 2))
482 if (
level.
time < self->pain_debounce_time)
485 self->pain_debounce_time =
level.
time + 3;
487 if (
skill->value == 3)
494 }
else if (r < 0.66) {
510 VectorSet(self->mins, -16, -16, -24);
511 VectorSet(self->maxs, 16, 16, -8);
513 self->svflags |= SVF_DEADMONSTER;
546 void mutant_die(edict_t *
self, edict_t *inflictor, edict_t *attacker,
int damage, vec3_t point)
550 if (self->health <= self->gib_health) {
551 gi.sound(
self, CHAN_VOICE,
gi.soundindex(
"misc/udeath.wav"), 1, ATTN_NORM, 0);
552 for (n = 0; n < 2; n++)
554 for (n = 0; n < 4; n++)
604 self->solid = SOLID_BBOX;
605 self->s.modelindex =
gi.modelindex(
"models/monsters/mutant/tris.md2");
606 VectorSet(self->mins, -32, -32, -24);
607 VectorSet(self->maxs, 32, 32, 48);
610 self->gib_health = -120;
619 self->monsterinfo.dodge = NULL;
void mutant_check_landing(edict_t *self)
void mutant_sight(edict_t *self, edict_t *other)
void ThrowGib(edict_t *self, char *gibname, int damage, int type)
void ai_charge(edict_t *self, float dist)
void mutant_run(edict_t *self)
mmove_t mutant_move_death2
void mutant_pain(edict_t *self, edict_t *other, float kick, int damage)
mmove_t mutant_move_start_walk
void mutant_hit_left(edict_t *self)
void mutant_jump(edict_t *self)
mframe_t mutant_frames_jump[]
void mutant_step(edict_t *self)
mmove_t mutant_move_pain2
mmove_t mutant_move_pain3
qboolean mutant_check_melee(edict_t *self)
mframe_t mutant_frames_attack[]
mframe_t mutant_frames_run[]
void SP_monster_mutant(edict_t *self)
qboolean fire_hit(edict_t *self, vec3_t aim, int damage, int kick)
void mutant_search(edict_t *self)
mframe_t mutant_frames_stand[]
void T_Damage(edict_t *targ, edict_t *inflictor, edict_t *attacker, vec3_t dir, vec3_t point, vec3_t normal, int damage, int knockback, int dflags, int mod)
void walkmonster_start(edict_t *self)
void mutant_jump_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
void mutant_jump_takeoff(edict_t *self)
mframe_t mutant_frames_pain3[]
mmove_t mutant_move_pain1
void G_FreeEdict(edict_t *e)
void mutant_melee(edict_t *self)
void mutant_idle(edict_t *self)
mmove_t mutant_move_death1
void ai_walk(edict_t *self, float dist)
void AngleVectors(vec3_t angles, vec3_t forward, vec3_t right, vec3_t up)
qboolean M_CheckBottom(edict_t *ent)
void mutant_check_refire(edict_t *self)
void mutant_dead(edict_t *self)
void mutant_hit_right(edict_t *self)
mframe_t mutant_frames_start_walk[]
void mutant_walk(edict_t *self)
void mutant_walk_loop(edict_t *self)
void ai_move(edict_t *self, float dist)
mframe_t mutant_frames_idle[]
mframe_t mutant_frames_pain2[]
void ai_run(edict_t *self, float dist)
void M_FlyCheck(edict_t *self)
void mutant_stand(edict_t *self)
mframe_t mutant_frames_walk[]
void ThrowHead(edict_t *self, char *gibname, int damage, int type)
mframe_t mutant_frames_pain1[]
int range(edict_t *self, edict_t *other)
qboolean mutant_checkattack(edict_t *self)
void mutant_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
mframe_t mutant_frames_death1[]
void mutant_swing(edict_t *self)
vec_t VectorNormalize(vec3_t v)
void ai_stand(edict_t *self, float dist)
mmove_t mutant_move_stand
void mutant_idle_loop(edict_t *self)
qboolean mutant_check_jump(edict_t *self)
mmove_t mutant_move_attack
mframe_t mutant_frames_death2[]