mirror of
https://github.com/yquake2/xatrix.git
synced 2025-02-24 12:51:40 +00:00
commit
202513abb8
7 changed files with 19 additions and 77 deletions
|
@ -677,7 +677,7 @@ T_Damage(edict_t *targ, edict_t *inflictor, edict_t *attacker, vec3_t dir,
|
||||||
{
|
{
|
||||||
M_ReactToDamage(targ, attacker);
|
M_ReactToDamage(targ, attacker);
|
||||||
|
|
||||||
if (!(targ->monsterinfo.aiflags & AI_DUCKED) && (take))
|
if (!(targ->monsterinfo.aiflags & (AI_DUCKED|AI_IGNORE_PAIN)) && (take))
|
||||||
{
|
{
|
||||||
targ->pain(targ, attacker, knockback, take);
|
targ->pain(targ, attacker, knockback, take);
|
||||||
|
|
||||||
|
|
|
@ -128,6 +128,7 @@ typedef enum
|
||||||
#define AI_COMBAT_POINT 0x00001000
|
#define AI_COMBAT_POINT 0x00001000
|
||||||
#define AI_MEDIC 0x00002000
|
#define AI_MEDIC 0x00002000
|
||||||
#define AI_RESURRECTING 0x00004000
|
#define AI_RESURRECTING 0x00004000
|
||||||
|
#define AI_IGNORE_PAIN 0x00008000
|
||||||
|
|
||||||
/* monster attack state */
|
/* monster attack state */
|
||||||
#define AS_STRAIGHT 1
|
#define AS_STRAIGHT 1
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
#include "../../header/local.h"
|
#include "../../header/local.h"
|
||||||
#include "gekk.h"
|
#include "gekk.h"
|
||||||
|
|
||||||
|
#define SPAWNFLAG_CHANT 8
|
||||||
|
|
||||||
static int sound_swing;
|
static int sound_swing;
|
||||||
static int sound_hit;
|
static int sound_hit;
|
||||||
static int sound_hit2;
|
static int sound_hit2;
|
||||||
|
@ -25,7 +27,6 @@ static int sound_chanthigh;
|
||||||
|
|
||||||
mmove_t gekk_move_attack1;
|
mmove_t gekk_move_attack1;
|
||||||
mmove_t gekk_move_attack2;
|
mmove_t gekk_move_attack2;
|
||||||
mmove_t gekk_move_chant;
|
|
||||||
mmove_t gekk_move_swim_start;
|
mmove_t gekk_move_swim_start;
|
||||||
mmove_t gekk_move_swim_loop;
|
mmove_t gekk_move_swim_loop;
|
||||||
mmove_t gekk_move_spit;
|
mmove_t gekk_move_spit;
|
||||||
|
@ -37,7 +38,6 @@ void gekk_swim(edict_t *self);
|
||||||
void gekk_jump_takeoff(edict_t *self);
|
void gekk_jump_takeoff(edict_t *self);
|
||||||
void gekk_jump_takeoff2(edict_t *self);
|
void gekk_jump_takeoff2(edict_t *self);
|
||||||
void gekk_check_landing(edict_t *self);
|
void gekk_check_landing(edict_t *self);
|
||||||
void gekk_check_landing2(edict_t *self);
|
|
||||||
void gekk_stop_skid(edict_t *self);
|
void gekk_stop_skid(edict_t *self);
|
||||||
void water_to_land(edict_t *self);
|
void water_to_land(edict_t *self);
|
||||||
void land_to_water(edict_t *self);
|
void land_to_water(edict_t *self);
|
||||||
|
@ -224,7 +224,7 @@ gekk_search(edict_t *self)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (self->spawnflags & 8)
|
if (self->spawnflags & SPAWNFLAG_CHANT)
|
||||||
{
|
{
|
||||||
r = random();
|
r = random();
|
||||||
|
|
||||||
|
@ -297,7 +297,7 @@ ai_stand2(edict_t *self, float dist)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (self->spawnflags & 8)
|
if (self->spawnflags & SPAWNFLAG_CHANT)
|
||||||
{
|
{
|
||||||
ai_move(self, dist);
|
ai_move(self, dist);
|
||||||
|
|
||||||
|
@ -315,6 +315,10 @@ ai_stand2(edict_t *self, float dist)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (self->enemy)
|
||||||
|
{
|
||||||
|
ai_move(self, dist);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ai_stand(self, dist);
|
ai_stand(self, dist);
|
||||||
|
@ -498,17 +502,6 @@ gekk_stand(edict_t *self)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
gekk_chant(edict_t *self)
|
|
||||||
{
|
|
||||||
if (!self)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
self->monsterinfo.currentmove = &gekk_move_chant;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
gekk_idle_loop(edict_t *self)
|
gekk_idle_loop(edict_t *self)
|
||||||
{
|
{
|
||||||
|
@ -575,51 +568,6 @@ mmove_t gekk_move_idle2 = {
|
||||||
gekk_face
|
gekk_face
|
||||||
};
|
};
|
||||||
|
|
||||||
mframe_t gekk_frames_idle2[] = {
|
|
||||||
{ai_move, 0, gekk_search},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
|
|
||||||
{ai_move, 0, NULL},
|
|
||||||
{ai_move, 0, gekk_idle_loop}
|
|
||||||
};
|
|
||||||
|
|
||||||
mmove_t gekk_move_chant = {
|
|
||||||
FRAME_idle_01,
|
|
||||||
FRAME_idle_32,
|
|
||||||
gekk_frames_idle2,
|
|
||||||
gekk_chant
|
|
||||||
};
|
|
||||||
|
|
||||||
void
|
void
|
||||||
gekk_idle(edict_t *self)
|
gekk_idle(edict_t *self)
|
||||||
{
|
{
|
||||||
|
@ -1163,7 +1111,7 @@ void
|
||||||
gekk_jump_touch(edict_t *self, edict_t *other, cplane_t *plane /* unsued */,
|
gekk_jump_touch(edict_t *self, edict_t *other, cplane_t *plane /* unsued */,
|
||||||
csurface_t *surf /* unused */)
|
csurface_t *surf /* unused */)
|
||||||
{
|
{
|
||||||
if (!self || !other)
|
if (!self)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1174,7 +1122,7 @@ gekk_jump_touch(edict_t *self, edict_t *other, cplane_t *plane /* unsued */,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (other->takedamage)
|
if (other && other->takedamage)
|
||||||
{
|
{
|
||||||
if (VectorLength(self->velocity) > 200)
|
if (VectorLength(self->velocity) > 200)
|
||||||
{
|
{
|
||||||
|
@ -1196,12 +1144,14 @@ gekk_jump_touch(edict_t *self, edict_t *other, cplane_t *plane /* unsued */,
|
||||||
if (self->groundentity)
|
if (self->groundentity)
|
||||||
{
|
{
|
||||||
self->monsterinfo.nextframe = FRAME_leapatk_11;
|
self->monsterinfo.nextframe = FRAME_leapatk_11;
|
||||||
|
self->monsterinfo.aiflags &= ~AI_IGNORE_PAIN;
|
||||||
self->touch = NULL;
|
self->touch = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self->monsterinfo.aiflags &= ~AI_IGNORE_PAIN;
|
||||||
self->touch = NULL;
|
self->touch = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1232,7 +1182,7 @@ gekk_jump_takeoff(edict_t *self)
|
||||||
}
|
}
|
||||||
|
|
||||||
self->groundentity = NULL;
|
self->groundentity = NULL;
|
||||||
self->monsterinfo.aiflags |= AI_DUCKED;
|
self->monsterinfo.aiflags |= AI_IGNORE_PAIN;
|
||||||
self->monsterinfo.attack_finished = level.time + 3;
|
self->monsterinfo.attack_finished = level.time + 3;
|
||||||
self->touch = gekk_jump_touch;
|
self->touch = gekk_jump_touch;
|
||||||
}
|
}
|
||||||
|
@ -1263,7 +1213,7 @@ gekk_jump_takeoff2(edict_t *self)
|
||||||
}
|
}
|
||||||
|
|
||||||
self->groundentity = NULL;
|
self->groundentity = NULL;
|
||||||
self->monsterinfo.aiflags |= AI_DUCKED;
|
self->monsterinfo.aiflags |= AI_IGNORE_PAIN;
|
||||||
self->monsterinfo.attack_finished = level.time + 3;
|
self->monsterinfo.attack_finished = level.time + 3;
|
||||||
self->touch = gekk_jump_touch;
|
self->touch = gekk_jump_touch;
|
||||||
}
|
}
|
||||||
|
@ -1294,7 +1244,7 @@ gekk_check_landing(edict_t *self)
|
||||||
{
|
{
|
||||||
gi.sound(self, CHAN_WEAPON, sound_thud, 1, ATTN_NORM, 0);
|
gi.sound(self, CHAN_WEAPON, sound_thud, 1, ATTN_NORM, 0);
|
||||||
self->monsterinfo.attack_finished = 0;
|
self->monsterinfo.attack_finished = 0;
|
||||||
self->monsterinfo.aiflags &= ~AI_DUCKED;
|
self->monsterinfo.aiflags &= ~AI_IGNORE_PAIN;
|
||||||
|
|
||||||
VectorClear(self->velocity);
|
VectorClear(self->velocity);
|
||||||
|
|
||||||
|
@ -1415,9 +1365,9 @@ gekk_pain(edict_t *self, edict_t *other /* unused */,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (self->spawnflags & 8)
|
if (self->spawnflags & SPAWNFLAG_CHANT)
|
||||||
{
|
{
|
||||||
self->spawnflags &= ~8;
|
self->spawnflags &= ~SPAWNFLAG_CHANT;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2018,11 +1968,6 @@ SP_monster_gekk(edict_t *self)
|
||||||
|
|
||||||
self->monsterinfo.scale = MODEL_SCALE;
|
self->monsterinfo.scale = MODEL_SCALE;
|
||||||
walkmonster_start(self);
|
walkmonster_start(self);
|
||||||
|
|
||||||
if (self->spawnflags & 8)
|
|
||||||
{
|
|
||||||
self->monsterinfo.currentmove = &gekk_move_chant;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -506,7 +506,6 @@ extern void gekk_run_start ( edict_t * self ) ;
|
||||||
extern void gekk_walk ( edict_t * self ) ;
|
extern void gekk_walk ( edict_t * self ) ;
|
||||||
extern void gekk_idle ( edict_t * self ) ;
|
extern void gekk_idle ( edict_t * self ) ;
|
||||||
extern void gekk_idle_loop ( edict_t * self ) ;
|
extern void gekk_idle_loop ( edict_t * self ) ;
|
||||||
extern void gekk_chant ( edict_t * self ) ;
|
|
||||||
extern void gekk_stand ( edict_t * self ) ;
|
extern void gekk_stand ( edict_t * self ) ;
|
||||||
extern void gekk_swim ( edict_t * self ) ;
|
extern void gekk_swim ( edict_t * self ) ;
|
||||||
extern void gekk_swim_loop ( edict_t * self ) ;
|
extern void gekk_swim_loop ( edict_t * self ) ;
|
||||||
|
|
|
@ -506,7 +506,6 @@
|
||||||
{"gekk_walk", (byte *)gekk_walk},
|
{"gekk_walk", (byte *)gekk_walk},
|
||||||
{"gekk_idle", (byte *)gekk_idle},
|
{"gekk_idle", (byte *)gekk_idle},
|
||||||
{"gekk_idle_loop", (byte *)gekk_idle_loop},
|
{"gekk_idle_loop", (byte *)gekk_idle_loop},
|
||||||
{"gekk_chant", (byte *)gekk_chant},
|
|
||||||
{"gekk_stand", (byte *)gekk_stand},
|
{"gekk_stand", (byte *)gekk_stand},
|
||||||
{"gekk_swim", (byte *)gekk_swim},
|
{"gekk_swim", (byte *)gekk_swim},
|
||||||
{"gekk_swim_loop", (byte *)gekk_swim_loop},
|
{"gekk_swim_loop", (byte *)gekk_swim_loop},
|
||||||
|
|
|
@ -214,7 +214,6 @@ extern mmove_t gekk_move_spit ;
|
||||||
extern mmove_t gekk_move_run_start ;
|
extern mmove_t gekk_move_run_start ;
|
||||||
extern mmove_t gekk_move_run ;
|
extern mmove_t gekk_move_run ;
|
||||||
extern mmove_t gekk_move_walk ;
|
extern mmove_t gekk_move_walk ;
|
||||||
extern mmove_t gekk_move_chant ;
|
|
||||||
extern mmove_t gekk_move_idle2 ;
|
extern mmove_t gekk_move_idle2 ;
|
||||||
extern mmove_t gekk_move_idle ;
|
extern mmove_t gekk_move_idle ;
|
||||||
extern mmove_t gekk_move_swim_start ;
|
extern mmove_t gekk_move_swim_start ;
|
||||||
|
|
|
@ -214,7 +214,6 @@
|
||||||
{"gekk_move_run_start", &gekk_move_run_start},
|
{"gekk_move_run_start", &gekk_move_run_start},
|
||||||
{"gekk_move_run", &gekk_move_run},
|
{"gekk_move_run", &gekk_move_run},
|
||||||
{"gekk_move_walk", &gekk_move_walk},
|
{"gekk_move_walk", &gekk_move_walk},
|
||||||
{"gekk_move_chant", &gekk_move_chant},
|
|
||||||
{"gekk_move_idle2", &gekk_move_idle2},
|
{"gekk_move_idle2", &gekk_move_idle2},
|
||||||
{"gekk_move_idle", &gekk_move_idle},
|
{"gekk_move_idle", &gekk_move_idle},
|
||||||
{"gekk_move_swim_start", &gekk_move_swim_start},
|
{"gekk_move_swim_start", &gekk_move_swim_start},
|
||||||
|
|
Loading…
Reference in a new issue