mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2024-11-21 20:21:09 +00:00
game: fix save of quake monsters
This commit is contained in:
parent
5709e2c746
commit
e00ab4ffde
17 changed files with 598 additions and 280 deletions
|
@ -322,7 +322,7 @@ The build dependencies can be installed with:
|
|||
curl sdl2`
|
||||
* On Debian based distributions: `apt install build-essential
|
||||
libgl1-mesa-dev libsdl2-dev libopenal-dev libcurl4-openssl-dev
|
||||
libavformat-dev libvulkan-dev`
|
||||
libavformat-dev libswscale-dev libvulkan-dev`
|
||||
* On FreeBSD: `pkg install gmake libGL sdl2 openal-soft curl`
|
||||
* On NetBSD: `pkgin install gmake SDL2 openal-soft curl`
|
||||
* On OpenBSD: `pkg_add gmake sdl2 openal curl`
|
||||
|
|
|
@ -1747,7 +1747,7 @@ qboolean Pickup_Sphere(edict_t * ent, edict_t * other);
|
|||
* implementation. (-Wmissing-prototypes )
|
||||
*
|
||||
*/
|
||||
#if 0
|
||||
#if 1
|
||||
#include "../savegame/savegame.h"
|
||||
#include "../savegame/tables/gamefunc_decs.h"
|
||||
#endif
|
||||
|
|
|
@ -49,7 +49,8 @@ mmove_t army_move_stand =
|
|||
NULL
|
||||
};
|
||||
|
||||
void army_stand(edict_t *self)
|
||||
void
|
||||
army_stand(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &army_move_stand;
|
||||
}
|
||||
|
@ -75,12 +76,14 @@ mmove_t army_move_run =
|
|||
NULL
|
||||
};
|
||||
|
||||
void army_run(edict_t *self)
|
||||
void
|
||||
army_run(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &army_move_run;
|
||||
}
|
||||
|
||||
void FireArmy(edict_t *self)
|
||||
static void
|
||||
army_fire(edict_t *self)
|
||||
{
|
||||
vec3_t start;
|
||||
vec3_t end;
|
||||
|
@ -104,7 +107,7 @@ static mframe_t army_frames_attack [] =
|
|||
{ai_charge, 0, NULL},
|
||||
{ai_charge, 0, NULL},
|
||||
|
||||
{ai_charge, 0, FireArmy},
|
||||
{ai_charge, 0, army_fire},
|
||||
{ai_charge, 0, NULL},
|
||||
{ai_charge, 0, NULL},
|
||||
{ai_charge, 0, NULL},
|
||||
|
@ -119,19 +122,22 @@ mmove_t army_move_attack =
|
|||
army_run
|
||||
};
|
||||
|
||||
void army_attack(edict_t *self)
|
||||
void
|
||||
army_attack(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &army_move_attack;
|
||||
}
|
||||
|
||||
// Sight
|
||||
void army_sight(edict_t *self, edict_t *other /* unused */)
|
||||
void
|
||||
army_sight(edict_t *self, edict_t *other /* unused */)
|
||||
{
|
||||
gi.sound(self, CHAN_VOICE, sound_sight, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
// Search
|
||||
void army_search(edict_t *self)
|
||||
void
|
||||
army_search(edict_t *self)
|
||||
{
|
||||
gi.sound(self, CHAN_VOICE, sound_search, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
@ -212,7 +218,8 @@ mmove_t army_move_pain3 =
|
|||
army_run
|
||||
};
|
||||
|
||||
void army_pain(edict_t *self, edict_t *other /* unused */,
|
||||
void
|
||||
army_pain(edict_t *self, edict_t *other /* unused */,
|
||||
float kick /* unused */, int damage)
|
||||
{
|
||||
float r;
|
||||
|
@ -244,7 +251,8 @@ void army_pain(edict_t *self, edict_t *other /* unused */,
|
|||
}
|
||||
}
|
||||
|
||||
void army_dead(edict_t *self)
|
||||
void
|
||||
army_dead(edict_t *self)
|
||||
{
|
||||
VectorSet(self->mins, -16, -16, -24);
|
||||
VectorSet(self->maxs, 16, 16, -8);
|
||||
|
@ -303,7 +311,8 @@ mmove_t army_move_death2 =
|
|||
army_dead
|
||||
};
|
||||
|
||||
void army_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
|
||||
void
|
||||
army_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
|
||||
{
|
||||
int n;
|
||||
|
||||
|
@ -346,7 +355,8 @@ void army_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage,
|
|||
}
|
||||
}
|
||||
|
||||
void SP_monster_army(edict_t *self)
|
||||
void
|
||||
SP_monster_army(edict_t *self)
|
||||
{
|
||||
self->s.modelindex = gi.modelindex("models/monsters/army/tris.md2");
|
||||
VectorSet(self->mins, -16, -16, -24);
|
||||
|
@ -376,7 +386,7 @@ void SP_monster_army(edict_t *self)
|
|||
self->pain = army_pain;
|
||||
self->die = army_die;
|
||||
|
||||
self->monsterinfo.scale = 1.000000;
|
||||
self->monsterinfo.scale = MODEL_SCALE;
|
||||
gi.linkentity(self);
|
||||
|
||||
walkmonster_start(self);
|
||||
|
|
|
@ -57,7 +57,8 @@ mmove_t demon_move_stand =
|
|||
NULL
|
||||
};
|
||||
|
||||
void demon_stand(edict_t *self)
|
||||
void
|
||||
demon_stand(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &demon_move_stand;
|
||||
}
|
||||
|
@ -81,12 +82,14 @@ mmove_t demon_move_run =
|
|||
NULL
|
||||
};
|
||||
|
||||
void demon_run(edict_t *self)
|
||||
void
|
||||
demon_run(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &demon_move_run;
|
||||
}
|
||||
|
||||
qboolean CheckDemonJump(edict_t *self)
|
||||
static qboolean
|
||||
check_demon_jump(edict_t *self)
|
||||
{
|
||||
vec3_t dir;
|
||||
float distance;
|
||||
|
@ -113,7 +116,8 @@ qboolean CheckDemonJump(edict_t *self)
|
|||
return true;
|
||||
};
|
||||
|
||||
void DemonJumpTouch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
|
||||
void
|
||||
demon_jump_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
|
||||
{
|
||||
if (self->health < 1)
|
||||
return;
|
||||
|
@ -141,7 +145,8 @@ void DemonJumpTouch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *
|
|||
}
|
||||
}
|
||||
|
||||
void DemonJump(edict_t *self)
|
||||
static void
|
||||
demon_jump(edict_t *self)
|
||||
{
|
||||
vec3_t forward;
|
||||
|
||||
|
@ -151,10 +156,11 @@ void DemonJump(edict_t *self)
|
|||
self->velocity[2] = 250;
|
||||
|
||||
self->groundentity = NULL;
|
||||
self->touch = DemonJumpTouch;
|
||||
self->touch = demon_jump_touch;
|
||||
}
|
||||
|
||||
void demon_roar(edict_t *self)
|
||||
static void
|
||||
demon_roar(edict_t *self)
|
||||
{
|
||||
gi.sound(self, CHAN_VOICE, sound_jump, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
@ -165,7 +171,7 @@ static mframe_t demon_frames_jump [] =
|
|||
{ai_charge, 0, demon_roar},
|
||||
{ai_charge, 0, NULL},
|
||||
{ai_charge, 0, NULL},
|
||||
{ai_charge, 0, DemonJump},
|
||||
{ai_charge, 0, demon_jump},
|
||||
|
||||
{ai_move, 0, NULL},
|
||||
{ai_move, 0, NULL},
|
||||
|
@ -185,13 +191,17 @@ mmove_t demon_move_jump =
|
|||
demon_run
|
||||
};
|
||||
|
||||
void demon_attack(edict_t *self)
|
||||
void
|
||||
demon_attack(edict_t *self)
|
||||
{
|
||||
if (check_demon_jump(self))
|
||||
{
|
||||
//if (CheckDemonJump(self))
|
||||
self->monsterinfo.currentmove = &demon_move_jump;
|
||||
}
|
||||
}
|
||||
|
||||
void DemonMelee(edict_t *self)
|
||||
static void
|
||||
demon_melee_step(edict_t *self)
|
||||
{
|
||||
vec3_t dir;
|
||||
static vec3_t aim = {100, 0, -24};
|
||||
|
@ -217,14 +227,14 @@ static mframe_t demon_frames_melee [] =
|
|||
{ai_charge, 0, NULL},
|
||||
{ai_charge, 1, NULL},
|
||||
|
||||
{ai_charge, 14, DemonMelee},
|
||||
{ai_charge, 14, demon_melee_step},
|
||||
{ai_charge, 1, NULL},
|
||||
{ai_charge, 6, NULL},
|
||||
{ai_charge, 8, NULL},
|
||||
|
||||
{ai_charge, 4, NULL},
|
||||
{ai_charge, 2, NULL},
|
||||
{ai_charge, 12, DemonMelee},
|
||||
{ai_charge, 12, demon_melee_step},
|
||||
{ai_charge, 5, NULL},
|
||||
|
||||
{ai_charge, 8, NULL},
|
||||
|
@ -239,7 +249,8 @@ mmove_t demon_move_melee =
|
|||
demon_run
|
||||
};
|
||||
|
||||
void demon_melee(edict_t *self)
|
||||
void
|
||||
demon_melee(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &demon_move_melee;
|
||||
}
|
||||
|
@ -263,12 +274,13 @@ mmove_t demon_move_pain =
|
|||
demon_run
|
||||
};
|
||||
|
||||
void demon_pain(edict_t *self, edict_t *other, float kick, int damage)
|
||||
void
|
||||
demon_pain(edict_t *self, edict_t *other, float kick, int damage)
|
||||
{
|
||||
// decino: No pain animations in Nightmare mode
|
||||
if (skill->value == SKILL_HARDPLUS)
|
||||
return;
|
||||
if (self->touch == DemonJumpTouch)
|
||||
if (self->touch == demon_jump_touch)
|
||||
return;
|
||||
if (self->pain_debounce_time > level.time)
|
||||
return;
|
||||
|
@ -280,7 +292,8 @@ void demon_pain(edict_t *self, edict_t *other, float kick, int damage)
|
|||
self->monsterinfo.currentmove = &demon_move_pain;
|
||||
}
|
||||
|
||||
void demon_dead(edict_t *self)
|
||||
void
|
||||
demon_dead(edict_t *self)
|
||||
{
|
||||
VectorSet(self->mins, -32, -32, -24);
|
||||
VectorSet(self->maxs, 32, 32, -8);
|
||||
|
@ -313,7 +326,8 @@ mmove_t demon_move_die =
|
|||
demon_dead
|
||||
};
|
||||
|
||||
void demon_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
|
||||
void
|
||||
demon_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
|
||||
{
|
||||
int n;
|
||||
|
||||
|
@ -340,18 +354,21 @@ void demon_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage,
|
|||
}
|
||||
|
||||
// Sight
|
||||
void demon_sight(edict_t *self, edict_t *other /* unused */)
|
||||
void
|
||||
demon_sight(edict_t *self, edict_t *other /* unused */)
|
||||
{
|
||||
gi.sound (self, CHAN_VOICE, sound_sight, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
// Search
|
||||
void demon_search(edict_t *self)
|
||||
void
|
||||
demon_search(edict_t *self)
|
||||
{
|
||||
gi.sound (self, CHAN_VOICE, sound_search, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
void SP_monster_demon(edict_t *self)
|
||||
void
|
||||
SP_monster_demon(edict_t *self)
|
||||
{
|
||||
self->s.modelindex = gi.modelindex("models/monsters/demon/tris.md2");
|
||||
VectorSet(self->mins, -32, -32, -24);
|
||||
|
@ -383,7 +400,7 @@ void SP_monster_demon(edict_t *self)
|
|||
self->pain = demon_pain;
|
||||
self->die = demon_die;
|
||||
|
||||
self->monsterinfo.scale = 1.000000;
|
||||
self->monsterinfo.scale = MODEL_SCALE;
|
||||
gi.linkentity(self);
|
||||
|
||||
walkmonster_start(self);
|
||||
|
|
|
@ -52,7 +52,8 @@ mmove_t dog_move_stand =
|
|||
NULL
|
||||
};
|
||||
|
||||
void dog_stand(edict_t *self)
|
||||
void
|
||||
dog_stand(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &dog_move_stand;
|
||||
}
|
||||
|
@ -83,12 +84,14 @@ mmove_t dog_move_run =
|
|||
NULL
|
||||
};
|
||||
|
||||
void dog_run(edict_t *self)
|
||||
void
|
||||
dog_run(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &dog_move_run;
|
||||
}
|
||||
|
||||
void DogLeapTouch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
|
||||
void
|
||||
dog_leap_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
|
||||
{
|
||||
if (self->health < 1)
|
||||
return;
|
||||
|
@ -114,7 +117,8 @@ void DogLeapTouch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *su
|
|||
}
|
||||
}
|
||||
|
||||
void DogLeap(edict_t *self)
|
||||
static void
|
||||
dog_leap_step(edict_t *self)
|
||||
{
|
||||
vec3_t forward;
|
||||
|
||||
|
@ -124,14 +128,14 @@ void DogLeap(edict_t *self)
|
|||
self->velocity[2] = 200;
|
||||
|
||||
self->groundentity = NULL;
|
||||
self->touch = DogLeapTouch;
|
||||
self->touch = dog_leap_touch;
|
||||
}
|
||||
|
||||
// Leap
|
||||
static mframe_t dog_frames_leap [] =
|
||||
{
|
||||
{ai_charge, 0, NULL},
|
||||
{ai_charge, 0, DogLeap},
|
||||
{ai_charge, 0, dog_leap_step},
|
||||
{ai_move, 0, NULL},
|
||||
{ai_move, 0, NULL},
|
||||
|
||||
|
@ -150,12 +154,14 @@ mmove_t dog_move_leap =
|
|||
dog_run
|
||||
};
|
||||
|
||||
void dog_leap(edict_t *self)
|
||||
void
|
||||
dog_leap(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &dog_move_leap;
|
||||
}
|
||||
|
||||
void DogBite(edict_t *self)
|
||||
static void
|
||||
dogbite_step(edict_t *self)
|
||||
{
|
||||
vec3_t dir;
|
||||
static vec3_t aim = {100, 0, -24};
|
||||
|
@ -180,7 +186,7 @@ static mframe_t dog_frames_melee [] =
|
|||
{ai_charge, 10, NULL},
|
||||
{ai_charge, 10, NULL},
|
||||
{ai_charge, 10, NULL},
|
||||
{ai_charge, 10, DogBite},
|
||||
{ai_charge, 10, dogbite_step},
|
||||
|
||||
{ai_charge, 10, NULL},
|
||||
{ai_charge, 10, NULL},
|
||||
|
@ -195,19 +201,22 @@ mmove_t dog_move_melee =
|
|||
dog_run
|
||||
};
|
||||
|
||||
void dog_melee(edict_t *self)
|
||||
void
|
||||
dog_melee(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &dog_move_melee;
|
||||
}
|
||||
|
||||
// Sight
|
||||
void dog_sight(edict_t *self, edict_t *other /* unused */)
|
||||
void
|
||||
dog_sight(edict_t *self, edict_t *other /* unused */)
|
||||
{
|
||||
gi.sound(self, CHAN_VOICE, sound_sight, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
// Search
|
||||
void dog_search(edict_t *self)
|
||||
void
|
||||
dog_search(edict_t *self)
|
||||
{
|
||||
gi.sound(self, CHAN_VOICE, sound_search, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
@ -262,7 +271,8 @@ mmove_t dog_move_pain2 =
|
|||
dog_run
|
||||
};
|
||||
|
||||
void dog_pain(edict_t *self, edict_t *other /* unused */,
|
||||
void
|
||||
dog_pain(edict_t *self, edict_t *other /* unused */,
|
||||
float kick /* unused */, int damage)
|
||||
{
|
||||
// decino: No pain animations in Nightmare mode
|
||||
|
@ -275,7 +285,8 @@ void dog_pain(edict_t *self, edict_t *other /* unused */,
|
|||
gi.sound(self, CHAN_VOICE, sound_pain, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
void dog_dead(edict_t *self)
|
||||
void
|
||||
dog_dead(edict_t *self)
|
||||
{
|
||||
VectorSet(self->mins, -32, -32, -24);
|
||||
VectorSet(self->maxs, 32, 32, -8);
|
||||
|
@ -331,7 +342,8 @@ mmove_t dog_move_die2 =
|
|||
dog_dead
|
||||
};
|
||||
|
||||
void dog_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
|
||||
void
|
||||
dog_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
|
||||
{
|
||||
int n;
|
||||
|
||||
|
@ -360,7 +372,8 @@ void dog_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, v
|
|||
self->monsterinfo.currentmove = &dog_move_die2;
|
||||
}
|
||||
|
||||
void SP_monster_dog(edict_t *self)
|
||||
void
|
||||
SP_monster_dog(edict_t *self)
|
||||
{
|
||||
self->s.modelindex = gi.modelindex("models/monsters/dog/tris.md2");
|
||||
VectorSet(self->mins, -32, -32, -24);
|
||||
|
@ -382,7 +395,7 @@ void SP_monster_dog(edict_t *self)
|
|||
self->monsterinfo.stand = dog_stand;
|
||||
self->monsterinfo.walk = dog_run;
|
||||
self->monsterinfo.run = dog_run;
|
||||
//self->monsterinfo.attack = dog_leap;
|
||||
self->monsterinfo.attack = dog_leap;
|
||||
self->monsterinfo.melee = dog_melee;
|
||||
self->monsterinfo.sight = dog_sight;
|
||||
self->monsterinfo.search = dog_search;
|
||||
|
@ -390,7 +403,7 @@ void SP_monster_dog(edict_t *self)
|
|||
self->pain = dog_pain;
|
||||
self->die = dog_die;
|
||||
|
||||
self->monsterinfo.scale = 1.000000;
|
||||
self->monsterinfo.scale = MODEL_SCALE;
|
||||
gi.linkentity(self);
|
||||
|
||||
walkmonster_start(self);
|
||||
|
|
|
@ -199,7 +199,7 @@ fire_enfbolt(edict_t *self, vec3_t start, vec3_t dir, int damage, int speed)
|
|||
}
|
||||
|
||||
static void
|
||||
FireEnforcerBolt(edict_t *self)
|
||||
enforcer_fire_bolt(edict_t *self)
|
||||
{
|
||||
vec3_t forward, right;
|
||||
vec3_t start;
|
||||
|
@ -222,7 +222,7 @@ FireEnforcerBolt(edict_t *self)
|
|||
static mframe_t enforcer_frames_attack2 [] =
|
||||
{
|
||||
{ai_charge, 0, NULL},
|
||||
{ai_charge, 0, FireEnforcerBolt},
|
||||
{ai_charge, 0, enforcer_fire_bolt},
|
||||
{ai_charge, 0, NULL},
|
||||
{ai_charge, 0, NULL},
|
||||
{ai_charge, 0, NULL},
|
||||
|
@ -252,7 +252,7 @@ static mframe_t enforcer_frames_attack1 [] =
|
|||
{ai_charge, 0, NULL},
|
||||
|
||||
{ai_charge, 0, NULL},
|
||||
{ai_charge, 0, FireEnforcerBolt},
|
||||
{ai_charge, 0, enforcer_fire_bolt},
|
||||
{ai_charge, 0, NULL},
|
||||
{ai_charge, 0, NULL}
|
||||
};
|
||||
|
@ -554,7 +554,7 @@ SP_monster_enforcer(edict_t *self)
|
|||
self->pain = enforcer_pain;
|
||||
self->die = enforcer_die;
|
||||
|
||||
self->monsterinfo.scale = 1.000000;
|
||||
self->monsterinfo.scale = MODEL_SCALE;
|
||||
gi.linkentity(self);
|
||||
|
||||
walkmonster_start(self);
|
||||
|
|
|
@ -59,7 +59,8 @@ mmove_t fish_move_stand =
|
|||
NULL
|
||||
};
|
||||
|
||||
void fish_stand(edict_t *self)
|
||||
void
|
||||
fish_stand(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &fish_move_stand;
|
||||
}
|
||||
|
@ -98,12 +99,14 @@ mmove_t fish_move_run =
|
|||
NULL
|
||||
};
|
||||
|
||||
void fish_run(edict_t *self)
|
||||
void
|
||||
fish_run(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &fish_move_run;
|
||||
}
|
||||
|
||||
void FishBite(edict_t *self)
|
||||
static void
|
||||
fish_bite_step(edict_t *self)
|
||||
{
|
||||
vec3_t dir;
|
||||
static vec3_t aim = {100, 0, 0};
|
||||
|
@ -127,7 +130,7 @@ static mframe_t fish_frames_melee [] =
|
|||
{
|
||||
{ai_run, 10, NULL},
|
||||
{ai_run, 10, NULL},
|
||||
{ai_run, 0, FishBite},
|
||||
{ai_run, 0, fish_bite_step},
|
||||
{ai_run, 10, NULL},
|
||||
|
||||
{ai_run, 10, NULL},
|
||||
|
@ -135,14 +138,14 @@ static mframe_t fish_frames_melee [] =
|
|||
{ai_run, 10, NULL},
|
||||
{ai_run, 10, NULL},
|
||||
|
||||
{ai_run, 0, FishBite},
|
||||
{ai_run, 0, fish_bite_step},
|
||||
{ai_run, 10, NULL},
|
||||
{ai_run, 10, NULL},
|
||||
{ai_run, 10, NULL},
|
||||
|
||||
{ai_run, 10, NULL},
|
||||
{ai_run, 10, NULL},
|
||||
{ai_run, 0, FishBite},
|
||||
{ai_run, 0, fish_bite_step},
|
||||
{ai_run, 10, NULL},
|
||||
|
||||
{ai_run, 10, NULL},
|
||||
|
@ -156,18 +159,21 @@ mmove_t fish_move_melee =
|
|||
fish_run
|
||||
};
|
||||
|
||||
void fish_melee(edict_t *self)
|
||||
void
|
||||
fish_melee(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &fish_move_melee;
|
||||
}
|
||||
|
||||
// Search
|
||||
void fish_search(edict_t *self)
|
||||
void
|
||||
fish_search(edict_t *self)
|
||||
{
|
||||
gi.sound(self, CHAN_VOICE, sound_search, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
void fish_dead(edict_t *self)
|
||||
void
|
||||
fish_dead(edict_t *self)
|
||||
{
|
||||
VectorSet(self->mins, -16, -16, -24);
|
||||
VectorSet(self->maxs, 16, 16, -8);
|
||||
|
@ -215,7 +221,8 @@ mmove_t fish_move_death =
|
|||
fish_dead
|
||||
};
|
||||
|
||||
void fish_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
|
||||
void
|
||||
fish_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
|
||||
{
|
||||
int n;
|
||||
|
||||
|
@ -274,7 +281,8 @@ mmove_t fish_move_pain =
|
|||
fish_run
|
||||
};
|
||||
|
||||
void fish_pain(edict_t *self, edict_t *other /* unused */,
|
||||
void
|
||||
fish_pain(edict_t *self, edict_t *other /* unused */,
|
||||
float kick /* unused */, int damage)
|
||||
{
|
||||
if (level.time < self->pain_debounce_time)
|
||||
|
@ -287,7 +295,8 @@ void fish_pain(edict_t *self, edict_t *other /* unused */,
|
|||
self->monsterinfo.currentmove = &fish_move_pain;
|
||||
}
|
||||
|
||||
void SP_monster_fish(edict_t *self)
|
||||
void
|
||||
SP_monster_fish(edict_t *self)
|
||||
{
|
||||
self->s.modelindex = gi.modelindex("models/monsters/fish/tris.md2");
|
||||
VectorSet(self->mins, -16, -16, -24);
|
||||
|
@ -313,7 +322,7 @@ void SP_monster_fish(edict_t *self)
|
|||
self->pain = fish_pain;
|
||||
self->die = fish_die;
|
||||
|
||||
self->monsterinfo.scale = 1.000000;
|
||||
self->monsterinfo.scale = MODEL_SCALE;
|
||||
gi.linkentity(self);
|
||||
|
||||
flymonster_start(self);
|
||||
|
|
|
@ -30,7 +30,7 @@ static int sound_search;
|
|||
static int sound_pain;
|
||||
|
||||
void hknight_run(edict_t *self);
|
||||
void SwingSword(edict_t *self);
|
||||
void swing_sword_step(edict_t *self);
|
||||
|
||||
// Stand
|
||||
static mframe_t hknight_frames_stand [] =
|
||||
|
@ -55,7 +55,8 @@ mmove_t hknight_move_stand =
|
|||
NULL
|
||||
};
|
||||
|
||||
void hknight_stand(edict_t *self)
|
||||
void
|
||||
hknight_stand(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &hknight_move_stand;
|
||||
}
|
||||
|
@ -69,13 +70,13 @@ static mframe_t hknight_frames_charge [] =
|
|||
{ai_charge, 16, NULL},
|
||||
|
||||
{ai_charge, 14, NULL},
|
||||
{ai_charge, 20, SwingSword},
|
||||
{ai_charge, 21, SwingSword},
|
||||
{ai_charge, 13, SwingSword},
|
||||
{ai_charge, 20, swing_sword_step},
|
||||
{ai_charge, 21, swing_sword_step},
|
||||
{ai_charge, 13, swing_sword_step},
|
||||
|
||||
{ai_charge, 20, SwingSword},
|
||||
{ai_charge, 20, SwingSword},
|
||||
{ai_charge, 18, SwingSword},
|
||||
{ai_charge, 20, swing_sword_step},
|
||||
{ai_charge, 20, swing_sword_step},
|
||||
{ai_charge, 18, swing_sword_step},
|
||||
{ai_charge, 16, NULL},
|
||||
|
||||
{ai_charge, 20, NULL},
|
||||
|
@ -91,7 +92,8 @@ mmove_t hknight_move_charge =
|
|||
hknight_run
|
||||
};
|
||||
|
||||
qboolean CheckForCharge(edict_t *self)
|
||||
static qboolean
|
||||
check_for_charge(edict_t *self)
|
||||
{
|
||||
if (!self->enemy)
|
||||
return false;
|
||||
|
@ -125,12 +127,14 @@ mmove_t hknight_move_run =
|
|||
NULL
|
||||
};
|
||||
|
||||
void hknight_run(edict_t *self)
|
||||
void
|
||||
hknight_run(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &hknight_move_run;
|
||||
}
|
||||
|
||||
void hknight_reset_magic(edict_t *self)
|
||||
static void
|
||||
hknight_reset_magic(edict_t *self)
|
||||
{
|
||||
self->radius_dmg = -2;
|
||||
|
||||
|
@ -140,7 +144,8 @@ void hknight_reset_magic(edict_t *self)
|
|||
}
|
||||
}
|
||||
|
||||
void magic_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
|
||||
void
|
||||
magic_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
|
||||
{
|
||||
if (other == self->owner)
|
||||
{
|
||||
|
@ -169,7 +174,8 @@ void magic_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *sur
|
|||
G_FreeEdict(self);
|
||||
}
|
||||
|
||||
void fire_magic(edict_t *self, vec3_t start, vec3_t dir, int damage, int speed)
|
||||
static void
|
||||
fire_magic(edict_t *self, vec3_t start, vec3_t dir, int damage, int speed)
|
||||
{
|
||||
edict_t *magic;
|
||||
trace_t tr;
|
||||
|
@ -212,7 +218,8 @@ void fire_magic(edict_t *self, vec3_t start, vec3_t dir, int damage, int speed)
|
|||
gi.sound(self, CHAN_WEAPON, sound_attack, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
void FireMagic(edict_t *self)
|
||||
static void
|
||||
fire_magic_step(edict_t *self)
|
||||
{
|
||||
vec3_t dir;
|
||||
|
||||
|
@ -233,13 +240,13 @@ static mframe_t hknight_frames_attack [] =
|
|||
{ai_charge, 0, NULL},
|
||||
|
||||
{ai_charge, 0, hknight_reset_magic},
|
||||
{ai_charge, 0, FireMagic},
|
||||
{ai_charge, 0, FireMagic},
|
||||
{ai_charge, 0, FireMagic},
|
||||
{ai_charge, 0, fire_magic_step},
|
||||
{ai_charge, 0, fire_magic_step},
|
||||
{ai_charge, 0, fire_magic_step},
|
||||
|
||||
{ai_charge, 0, FireMagic},
|
||||
{ai_charge, 0, FireMagic},
|
||||
{ai_charge, 0, FireMagic}
|
||||
{ai_charge, 0, fire_magic_step},
|
||||
{ai_charge, 0, fire_magic_step},
|
||||
{ai_charge, 0, fire_magic_step}
|
||||
};
|
||||
mmove_t hknight_move_attack =
|
||||
{
|
||||
|
@ -249,9 +256,10 @@ mmove_t hknight_move_attack =
|
|||
hknight_run
|
||||
};
|
||||
|
||||
void hknight_attack(edict_t *self)
|
||||
void
|
||||
hknight_attack(edict_t *self)
|
||||
{
|
||||
if (CheckForCharge(self))
|
||||
if (check_for_charge(self))
|
||||
self->monsterinfo.currentmove = &hknight_move_charge;
|
||||
else if (self->monsterinfo.attack_finished < level.time)
|
||||
self->monsterinfo.currentmove = &hknight_move_attack;
|
||||
|
@ -267,12 +275,12 @@ static mframe_t hknight_frames_slice [] =
|
|||
{ai_charge, 13, NULL},
|
||||
{ai_charge, 4, NULL},
|
||||
|
||||
{ai_charge, 7, SwingSword},
|
||||
{ai_charge, 15, SwingSword},
|
||||
{ai_charge, 8, SwingSword},
|
||||
{ai_charge, 2, SwingSword},
|
||||
{ai_charge, 7, swing_sword_step},
|
||||
{ai_charge, 15, swing_sword_step},
|
||||
{ai_charge, 8, swing_sword_step},
|
||||
{ai_charge, 2, swing_sword_step},
|
||||
|
||||
{ai_charge, 0, SwingSword},
|
||||
{ai_charge, 0, swing_sword_step},
|
||||
{ai_charge, 3, NULL}
|
||||
};
|
||||
mmove_t hknight_move_slice =
|
||||
|
@ -291,12 +299,12 @@ static mframe_t hknight_frames_smash [] =
|
|||
{ai_charge, 9, NULL},
|
||||
{ai_charge, 11, NULL},
|
||||
|
||||
{ai_charge, 10, SwingSword},
|
||||
{ai_charge, 7, SwingSword},
|
||||
{ai_charge, 12, SwingSword},
|
||||
{ai_charge, 2, SwingSword},
|
||||
{ai_charge, 10, swing_sword_step},
|
||||
{ai_charge, 7, swing_sword_step},
|
||||
{ai_charge, 12, swing_sword_step},
|
||||
{ai_charge, 2, swing_sword_step},
|
||||
|
||||
{ai_charge, 3, SwingSword},
|
||||
{ai_charge, 3, swing_sword_step},
|
||||
{ai_charge, 0, NULL},
|
||||
{ai_charge, 0, NULL}
|
||||
};
|
||||
|
@ -314,26 +322,26 @@ static mframe_t hknight_frames_watk [] =
|
|||
{ai_charge, 2, NULL},
|
||||
{ai_charge, 0, NULL},
|
||||
{ai_charge, 0, NULL},
|
||||
{ai_charge, 0, SwingSword},
|
||||
{ai_charge, 0, swing_sword_step},
|
||||
|
||||
{ai_charge, 0, SwingSword},
|
||||
{ai_charge, 0, SwingSword},
|
||||
{ai_charge, 0, swing_sword_step},
|
||||
{ai_charge, 0, swing_sword_step},
|
||||
{ai_charge, 1, NULL},
|
||||
{ai_charge, 4, NULL},
|
||||
|
||||
{ai_charge, 5, NULL},
|
||||
{ai_charge, 3, SwingSword},
|
||||
{ai_charge, 2, SwingSword},
|
||||
{ai_charge, 2, SwingSword},
|
||||
{ai_charge, 3, swing_sword_step},
|
||||
{ai_charge, 2, swing_sword_step},
|
||||
{ai_charge, 2, swing_sword_step},
|
||||
|
||||
{ai_charge, 0, NULL},
|
||||
{ai_charge, 0, NULL},
|
||||
{ai_charge, 0, NULL},
|
||||
{ai_charge, 1, NULL},
|
||||
|
||||
{ai_charge, 1, SwingSword},
|
||||
{ai_charge, 3, SwingSword},
|
||||
{ai_charge, 4, SwingSword},
|
||||
{ai_charge, 1, swing_sword_step},
|
||||
{ai_charge, 3, swing_sword_step},
|
||||
{ai_charge, 4, swing_sword_step},
|
||||
{ai_charge, 6, NULL},
|
||||
|
||||
{ai_charge, 7, NULL},
|
||||
|
@ -349,7 +357,8 @@ mmove_t hknight_move_watk =
|
|||
};
|
||||
|
||||
// Melee
|
||||
void hknight_melee(edict_t *self)
|
||||
void
|
||||
hknight_melee(edict_t *self)
|
||||
{
|
||||
self->dmg_radius++;
|
||||
|
||||
|
@ -383,7 +392,8 @@ mmove_t hknight_move_pain =
|
|||
hknight_run
|
||||
};
|
||||
|
||||
void hknight_pain(edict_t *self, edict_t *other, float kick, int damage)
|
||||
void
|
||||
hknight_pain(edict_t *self, edict_t *other, float kick, int damage)
|
||||
{
|
||||
// decino: No pain animations in Nightmare mode
|
||||
if (skill->value == SKILL_HARDPLUS)
|
||||
|
@ -405,7 +415,8 @@ void hknight_pain(edict_t *self, edict_t *other, float kick, int damage)
|
|||
gi.sound(self, CHAN_VOICE, sound_pain, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
void hknight_dead(edict_t *self)
|
||||
void
|
||||
hknight_dead(edict_t *self)
|
||||
{
|
||||
VectorSet(self->mins, -16, -16, -24);
|
||||
VectorSet(self->maxs, 16, 16, -8);
|
||||
|
@ -464,7 +475,8 @@ mmove_t hknight_move_die2 =
|
|||
hknight_dead
|
||||
};
|
||||
|
||||
void hknight_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
|
||||
void
|
||||
hknight_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
|
||||
{
|
||||
int n;
|
||||
|
||||
|
@ -494,18 +506,21 @@ void hknight_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damag
|
|||
}
|
||||
|
||||
// Sight
|
||||
void hknight_sight(edict_t *self, edict_t *other /* unused */)
|
||||
void
|
||||
hknight_sight(edict_t *self, edict_t *other /* unused */)
|
||||
{
|
||||
gi.sound(self, CHAN_VOICE, sound_sight, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
// Search
|
||||
void hknight_search(edict_t *self)
|
||||
void
|
||||
hknight_search(edict_t *self)
|
||||
{
|
||||
gi.sound(self, CHAN_VOICE, sound_search, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
void SP_monster_hknight(edict_t *self)
|
||||
void
|
||||
SP_monster_hknight(edict_t *self)
|
||||
{
|
||||
self->s.modelindex = gi.modelindex("models/monsters/hknight/tris.md2");
|
||||
VectorSet(self->mins, -16, -16, -24);
|
||||
|
@ -537,7 +552,7 @@ void SP_monster_hknight(edict_t *self)
|
|||
self->pain = hknight_pain;
|
||||
self->die = hknight_die;
|
||||
|
||||
self->monsterinfo.scale = 1.000000;
|
||||
self->monsterinfo.scale = MODEL_SCALE;
|
||||
gi.linkentity(self);
|
||||
|
||||
walkmonster_start(self);
|
||||
|
|
|
@ -53,7 +53,8 @@ mmove_t knight_move_stand =
|
|||
NULL
|
||||
};
|
||||
|
||||
void knight_stand(edict_t *self)
|
||||
void
|
||||
knight_stand(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &knight_move_stand;
|
||||
}
|
||||
|
@ -79,12 +80,14 @@ mmove_t knight_move_run =
|
|||
NULL
|
||||
};
|
||||
|
||||
void knight_run(edict_t *self)
|
||||
void
|
||||
knight_run(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &knight_move_run;
|
||||
}
|
||||
|
||||
void knight_attack_swing(edict_t *self)
|
||||
static void
|
||||
knight_attack_swing(edict_t *self)
|
||||
{
|
||||
if (random() > 0.5)
|
||||
{
|
||||
|
@ -96,7 +99,8 @@ void knight_attack_swing(edict_t *self)
|
|||
}
|
||||
}
|
||||
|
||||
void SwingSword(edict_t *self)
|
||||
void
|
||||
swing_sword_step(edict_t *self)
|
||||
{
|
||||
vec3_t dir;
|
||||
static vec3_t aim = {100, 0, -24};
|
||||
|
@ -127,12 +131,12 @@ static mframe_t knight_frames_attack [] =
|
|||
{ai_charge, 13, NULL},
|
||||
{ai_charge, 7, NULL},
|
||||
|
||||
{ai_charge, 16, SwingSword},
|
||||
{ai_charge, 20, SwingSword},
|
||||
{ai_charge, 14, SwingSword},
|
||||
{ai_charge, 6, SwingSword},
|
||||
{ai_charge, 16, swing_sword_step},
|
||||
{ai_charge, 20, swing_sword_step},
|
||||
{ai_charge, 14, swing_sword_step},
|
||||
{ai_charge, 6, swing_sword_step},
|
||||
|
||||
{ai_charge, 14, SwingSword},
|
||||
{ai_charge, 14, swing_sword_step},
|
||||
{ai_charge, 10, NULL},
|
||||
{ai_charge, 7, NULL}
|
||||
};
|
||||
|
@ -144,7 +148,8 @@ mmove_t knight_move_attack =
|
|||
knight_run
|
||||
};
|
||||
|
||||
void knight_attack(edict_t *self)
|
||||
void
|
||||
knight_attack(edict_t *self)
|
||||
{
|
||||
if (self->enemy && realrange(self, self->enemy) < (MELEE_DISTANCE * 4))
|
||||
{
|
||||
|
@ -156,7 +161,8 @@ void knight_attack(edict_t *self)
|
|||
}
|
||||
}
|
||||
|
||||
void knight_melee_swing(edict_t *self)
|
||||
static void
|
||||
knight_melee_swing(edict_t *self)
|
||||
{
|
||||
gi.sound(self, CHAN_WEAPON, sound_melee1, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
@ -170,9 +176,9 @@ static mframe_t knight_frames_melee [] =
|
|||
{ai_charge, 0, NULL},
|
||||
{ai_charge, 0, NULL},
|
||||
|
||||
{ai_charge, 4, SwingSword},
|
||||
{ai_charge, 4, SwingSword},
|
||||
{ai_charge, 1, SwingSword},
|
||||
{ai_charge, 4, swing_sword_step},
|
||||
{ai_charge, 4, swing_sword_step},
|
||||
{ai_charge, 1, swing_sword_step},
|
||||
{ai_charge, 3, NULL},
|
||||
|
||||
{ai_charge, 1, NULL},
|
||||
|
@ -186,7 +192,8 @@ mmove_t knight_move_melee =
|
|||
knight_run
|
||||
};
|
||||
|
||||
void knight_melee(edict_t *self)
|
||||
void
|
||||
knight_melee(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &knight_move_melee;
|
||||
}
|
||||
|
@ -231,7 +238,8 @@ mmove_t knight_move_pain2 =
|
|||
knight_run
|
||||
};
|
||||
|
||||
void knight_pain(edict_t *self, edict_t *other /* unused */,
|
||||
void
|
||||
knight_pain(edict_t *self, edict_t *other /* unused */,
|
||||
float kick /* unused */, int damage)
|
||||
{
|
||||
// decino: No pain animations in Nightmare mode
|
||||
|
@ -247,7 +255,8 @@ void knight_pain(edict_t *self, edict_t *other /* unused */,
|
|||
gi.sound (self, CHAN_VOICE, sound_pain, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
void knight_dead(edict_t *self)
|
||||
void
|
||||
knight_dead(edict_t *self)
|
||||
{
|
||||
VectorSet(self->mins, -16, -16, -24);
|
||||
VectorSet(self->maxs, 16, 16, -8);
|
||||
|
@ -306,7 +315,8 @@ mmove_t knight_move_die2 =
|
|||
knight_dead
|
||||
};
|
||||
|
||||
void knight_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
|
||||
void
|
||||
knight_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
|
||||
{
|
||||
int n;
|
||||
|
||||
|
@ -336,18 +346,21 @@ void knight_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage
|
|||
}
|
||||
|
||||
// Search
|
||||
void knight_search(edict_t *self)
|
||||
void
|
||||
knight_search(edict_t *self)
|
||||
{
|
||||
gi.sound(self, CHAN_VOICE, sound_search, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
// Sight
|
||||
void knight_sight(edict_t *self, edict_t *other /* unused */)
|
||||
void
|
||||
knight_sight(edict_t *self, edict_t *other /* unused */)
|
||||
{
|
||||
gi.sound(self, CHAN_VOICE, sound_sight, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
void SP_monster_knight(edict_t *self)
|
||||
void
|
||||
SP_monster_knight(edict_t *self)
|
||||
{
|
||||
self->s.modelindex = gi.modelindex("models/monsters/knight/tris.md2");
|
||||
VectorSet(self->mins, -16, -16, -24);
|
||||
|
@ -370,7 +383,7 @@ void SP_monster_knight(edict_t *self)
|
|||
self->monsterinfo.stand = knight_stand;
|
||||
self->monsterinfo.walk = knight_run;
|
||||
self->monsterinfo.run = knight_run;
|
||||
//self->monsterinfo.attack = knight_attack;
|
||||
self->monsterinfo.attack = knight_attack;
|
||||
self->monsterinfo.melee = knight_melee;
|
||||
self->monsterinfo.sight = knight_sight;
|
||||
self->monsterinfo.search = knight_search;
|
||||
|
@ -378,7 +391,7 @@ void SP_monster_knight(edict_t *self)
|
|||
self->pain = knight_pain;
|
||||
self->die = knight_die;
|
||||
|
||||
self->monsterinfo.scale = 1.000000;
|
||||
self->monsterinfo.scale = MODEL_SCALE;
|
||||
gi.linkentity(self);
|
||||
|
||||
walkmonster_start(self);
|
||||
|
|
|
@ -29,7 +29,8 @@ static int sound_search;
|
|||
static int sound_idle;
|
||||
static int sound_pain;
|
||||
|
||||
void ogre_idle(edict_t *self)
|
||||
static void
|
||||
ogre_idle(edict_t *self)
|
||||
{
|
||||
if (random() < 0.2)
|
||||
gi.sound(self, CHAN_VOICE, sound_idle, 1, ATTN_NORM, 0);
|
||||
|
@ -58,7 +59,8 @@ mmove_t ogre_move_stand =
|
|||
NULL
|
||||
};
|
||||
|
||||
void ogre_stand(edict_t *self)
|
||||
void
|
||||
ogre_stand(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &ogre_move_stand;
|
||||
}
|
||||
|
@ -84,12 +86,14 @@ mmove_t ogre_move_run =
|
|||
NULL
|
||||
};
|
||||
|
||||
void ogre_run(edict_t *self)
|
||||
void
|
||||
ogre_run(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &ogre_move_run;
|
||||
}
|
||||
|
||||
void OgreChainsaw(edict_t *self)
|
||||
static void
|
||||
OgreChainsaw(edict_t *self)
|
||||
{
|
||||
vec3_t dir;
|
||||
static vec3_t aim = {100, 0, -24};
|
||||
|
@ -165,7 +169,8 @@ mmove_t ogre_move_swing =
|
|||
};
|
||||
|
||||
// Melee
|
||||
void ogre_melee(edict_t *self)
|
||||
void
|
||||
ogre_melee(edict_t *self)
|
||||
{
|
||||
if (random() > 0.5)
|
||||
self->monsterinfo.currentmove = &ogre_move_smash;
|
||||
|
@ -174,7 +179,8 @@ void ogre_melee(edict_t *self)
|
|||
gi.sound(self, CHAN_WEAPON, sound_melee, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
void FireOgreGrenade(edict_t *self)
|
||||
static void
|
||||
FireOgreGrenade(edict_t *self)
|
||||
{
|
||||
vec3_t start;
|
||||
vec3_t forward, right;
|
||||
|
@ -207,7 +213,8 @@ mmove_t ogre_move_attack =
|
|||
ogre_run
|
||||
};
|
||||
|
||||
void ogre_attack(edict_t *self)
|
||||
void
|
||||
ogre_attack(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &ogre_move_attack;
|
||||
}
|
||||
|
@ -326,7 +333,8 @@ mmove_t ogre_move_pain5 =
|
|||
};
|
||||
|
||||
// Pain
|
||||
void ogre_pain(edict_t *self, edict_t *other /* unused */,
|
||||
void
|
||||
ogre_pain(edict_t *self, edict_t *other /* unused */,
|
||||
float kick /* unused */, int damage)
|
||||
{
|
||||
float r;
|
||||
|
@ -366,7 +374,8 @@ void ogre_pain(edict_t *self, edict_t *other /* unused */,
|
|||
}
|
||||
}
|
||||
|
||||
void ogre_dead(edict_t *self)
|
||||
void
|
||||
ogre_dead(edict_t *self)
|
||||
{
|
||||
VectorSet(self->mins, -32, -32, -24);
|
||||
VectorSet(self->maxs, 32, 32, -8);
|
||||
|
@ -430,7 +439,8 @@ mmove_t ogre_move_death2 =
|
|||
};
|
||||
|
||||
// Death
|
||||
void ogre_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
|
||||
void
|
||||
ogre_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
|
||||
{
|
||||
int n;
|
||||
|
||||
|
@ -460,18 +470,21 @@ void ogre_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage,
|
|||
}
|
||||
|
||||
// Sight
|
||||
void ogre_sight(edict_t *self, edict_t *other /* unused */)
|
||||
void
|
||||
ogre_sight(edict_t *self, edict_t *other /* unused */)
|
||||
{
|
||||
gi.sound(self, CHAN_VOICE, sound_sight, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
// Search
|
||||
void ogre_search(edict_t *self)
|
||||
void
|
||||
ogre_search(edict_t *self)
|
||||
{
|
||||
gi.sound(self, CHAN_VOICE, sound_search, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
void SP_monster_ogre(edict_t *self)
|
||||
void
|
||||
SP_monster_ogre(edict_t *self)
|
||||
{
|
||||
self->s.modelindex = gi.modelindex("models/monsters/ogre/tris.md2");
|
||||
VectorSet(self->mins, -32, -32, -24);
|
||||
|
@ -503,7 +516,7 @@ void SP_monster_ogre(edict_t *self)
|
|||
self->pain = ogre_pain;
|
||||
self->die = ogre_die;
|
||||
|
||||
self->monsterinfo.scale = 1.000000;
|
||||
self->monsterinfo.scale = MODEL_SCALE;
|
||||
gi.linkentity(self);
|
||||
|
||||
walkmonster_start(self);
|
||||
|
|
|
@ -42,7 +42,8 @@ mmove_t shalrath_move_stand =
|
|||
NULL
|
||||
};
|
||||
|
||||
void shalrath_stand(edict_t *self)
|
||||
void
|
||||
shalrath_stand(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &shalrath_move_stand;
|
||||
}
|
||||
|
@ -73,17 +74,20 @@ mmove_t shalrath_move_run =
|
|||
NULL
|
||||
};
|
||||
|
||||
void shalrath_run(edict_t *self)
|
||||
void
|
||||
shalrath_run(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &shalrath_move_run;
|
||||
}
|
||||
|
||||
void shalrath_roar(edict_t *self)
|
||||
static void
|
||||
shalrath_roar(edict_t *self)
|
||||
{
|
||||
gi.sound(self, CHAN_VOICE, sound_attack, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
void shalrath_pod_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
|
||||
void
|
||||
shalrath_pod_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
|
||||
{
|
||||
if (other == self->owner)
|
||||
return;
|
||||
|
@ -99,7 +103,8 @@ void shalrath_pod_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface
|
|||
G_FreeEdict(self);
|
||||
}
|
||||
|
||||
void shalrath_pod_home(edict_t *self)
|
||||
void
|
||||
shalrath_pod_home(edict_t *self)
|
||||
{
|
||||
static qboolean think = false;
|
||||
vec3_t end;
|
||||
|
@ -142,7 +147,8 @@ void shalrath_pod_home(edict_t *self)
|
|||
think = !think;
|
||||
}
|
||||
|
||||
void fire_shalrath_pod(edict_t *self, vec3_t start, vec3_t dir, int damage, int speed)
|
||||
static void
|
||||
fire_shalrath_pod(edict_t *self, vec3_t start, vec3_t dir, int damage, int speed)
|
||||
{
|
||||
edict_t *pod;
|
||||
|
||||
|
@ -176,7 +182,8 @@ void fire_shalrath_pod(edict_t *self, vec3_t start, vec3_t dir, int damage, int
|
|||
gi.sound(self, CHAN_WEAPON, sound_fire, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
void FireShalrathPod(edict_t *self)
|
||||
static void
|
||||
FireShalrathPod(edict_t *self)
|
||||
{
|
||||
vec3_t forward, right;
|
||||
vec3_t start;
|
||||
|
@ -220,7 +227,8 @@ mmove_t shalrath_move_attack =
|
|||
shalrath_run
|
||||
};
|
||||
|
||||
void shalrath_attack(edict_t *self)
|
||||
void
|
||||
shalrath_attack(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &shalrath_move_attack;
|
||||
}
|
||||
|
@ -243,7 +251,8 @@ mmove_t shalrath_move_pain =
|
|||
shalrath_run
|
||||
};
|
||||
|
||||
void shalrath_pain(edict_t *self, edict_t *other /* unused */,
|
||||
void
|
||||
shalrath_pain(edict_t *self, edict_t *other /* unused */,
|
||||
float kick /* unused */, int damage)
|
||||
{
|
||||
// decino: No pain animations in Nightmare mode
|
||||
|
@ -257,7 +266,8 @@ void shalrath_pain(edict_t *self, edict_t *other /* unused */,
|
|||
gi.sound(self, CHAN_VOICE, sound_pain, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
void shalrath_dead(edict_t *self)
|
||||
void
|
||||
shalrath_dead(edict_t *self)
|
||||
{
|
||||
VectorSet(self->mins, -32, -32, -24);
|
||||
VectorSet(self->maxs, 32, 32, -8);
|
||||
|
@ -287,7 +297,8 @@ mmove_t shalrath_move_death =
|
|||
shalrath_dead
|
||||
};
|
||||
|
||||
void shalrath_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
|
||||
void
|
||||
shalrath_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
|
||||
{
|
||||
int n;
|
||||
|
||||
|
@ -313,18 +324,21 @@ void shalrath_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int dama
|
|||
}
|
||||
|
||||
// Sight
|
||||
void shalrath_sight(edict_t *self, edict_t *other /* unused */)
|
||||
void
|
||||
shalrath_sight(edict_t *self, edict_t *other /* unused */)
|
||||
{
|
||||
gi.sound(self, CHAN_VOICE, sound_sight, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
// Search
|
||||
void shalrath_search(edict_t *self)
|
||||
void
|
||||
shalrath_search(edict_t *self)
|
||||
{
|
||||
gi.sound(self, CHAN_VOICE, sound_search, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
void SP_monster_shalrath(edict_t *self)
|
||||
void
|
||||
SP_monster_shalrath(edict_t *self)
|
||||
{
|
||||
self->s.modelindex = gi.modelindex("models/monsters/shalrath/tris.md2");
|
||||
VectorSet(self->mins, -32, -32, -24);
|
||||
|
@ -354,7 +368,7 @@ void SP_monster_shalrath(edict_t *self)
|
|||
self->pain = shalrath_pain;
|
||||
self->die = shalrath_die;
|
||||
|
||||
self->monsterinfo.scale = 1.000000;
|
||||
self->monsterinfo.scale = MODEL_SCALE;
|
||||
gi.linkentity(self);
|
||||
|
||||
walkmonster_start(self);
|
||||
|
|
|
@ -438,11 +438,11 @@ shambler_melee2(edict_t* self)
|
|||
gi.sound(self, CHAN_WEAPON, sound_melee2, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
void sham_swingl9(edict_t* self);
|
||||
void sham_swingr9(edict_t* self);
|
||||
static void sham_swingl9_step(edict_t* self);
|
||||
static void sham_swingr9_step(edict_t* self);
|
||||
|
||||
void
|
||||
sham_smash10(edict_t* self)
|
||||
static void
|
||||
sham_smash10_step(edict_t* self)
|
||||
{
|
||||
if (!self->enemy)
|
||||
return;
|
||||
|
@ -489,7 +489,7 @@ static mframe_t shambler_frames_smash[] = {
|
|||
{ai_charge, 0},
|
||||
{ai_charge, 0},
|
||||
{ai_charge, 0},
|
||||
{ai_charge, 0, sham_smash10},
|
||||
{ai_charge, 0, sham_smash10_step},
|
||||
{ai_charge, 5},
|
||||
{ai_charge, 4},
|
||||
};
|
||||
|
@ -511,7 +511,7 @@ static mframe_t shambler_frames_swingl[] = {
|
|||
{ai_charge, 9},
|
||||
{ai_charge, 5, ShamClaw},
|
||||
{ai_charge, 4},
|
||||
{ai_charge, 8, sham_swingl9},
|
||||
{ai_charge, 8, sham_swingl9_step},
|
||||
};
|
||||
|
||||
mmove_t shambler_attack_swingl =
|
||||
|
@ -531,7 +531,7 @@ static mframe_t shambler_frames_swingr[] = {
|
|||
{ai_charge, 6},
|
||||
{ai_charge, 6, ShamClaw},
|
||||
{ai_charge, 3},
|
||||
{ai_charge, 8, sham_swingr9},
|
||||
{ai_charge, 8, sham_swingr9_step},
|
||||
};
|
||||
|
||||
mmove_t shambler_attack_swingr =
|
||||
|
@ -542,8 +542,8 @@ mmove_t shambler_attack_swingr =
|
|||
shambler_run
|
||||
};
|
||||
|
||||
void
|
||||
sham_swingl9(edict_t* self)
|
||||
static void
|
||||
sham_swingl9_step(edict_t* self)
|
||||
{
|
||||
if (!self)
|
||||
{
|
||||
|
@ -565,8 +565,8 @@ sham_swingl9(edict_t* self)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
sham_swingr9(edict_t* self)
|
||||
static void
|
||||
sham_swingr9_step(edict_t* self)
|
||||
{
|
||||
if (!self)
|
||||
{
|
||||
|
@ -627,7 +627,7 @@ shambler_dead(edict_t* self)
|
|||
gi.linkentity(self);
|
||||
}
|
||||
|
||||
void
|
||||
static void
|
||||
shambler_shrink(edict_t* self)
|
||||
{
|
||||
self->maxs[2] = 0;
|
||||
|
|
|
@ -28,7 +28,8 @@ static int sound_sight;
|
|||
|
||||
void tarbaby_rejump(edict_t *self);
|
||||
|
||||
void tarbaby_unbounce(edict_t *self)
|
||||
static void
|
||||
tarbaby_unbounce(edict_t *self)
|
||||
{
|
||||
self->movetype = MOVETYPE_STEP;
|
||||
}
|
||||
|
@ -46,7 +47,8 @@ mmove_t tarbaby_move_stand =
|
|||
NULL
|
||||
};
|
||||
|
||||
void tarbaby_stand(edict_t *self)
|
||||
void
|
||||
tarbaby_stand(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &tarbaby_move_stand;
|
||||
}
|
||||
|
@ -94,18 +96,21 @@ mmove_t tarbaby_move_run =
|
|||
NULL
|
||||
};
|
||||
|
||||
void tarbaby_run(edict_t *self)
|
||||
void
|
||||
tarbaby_run(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &tarbaby_move_run;
|
||||
}
|
||||
|
||||
// Sight
|
||||
void tarbaby_sight(edict_t *self, edict_t *other /* unused */)
|
||||
void
|
||||
tarbaby_sight(edict_t *self, edict_t *other /* unused */)
|
||||
{
|
||||
gi.sound(self, CHAN_VOICE, sound_sight, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
void tarbaby_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
|
||||
void
|
||||
tarbaby_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
|
||||
{
|
||||
if (other->takedamage)
|
||||
{
|
||||
|
@ -132,7 +137,8 @@ void tarbaby_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *s
|
|||
}
|
||||
}
|
||||
|
||||
void TarBabyJump(edict_t *self)
|
||||
static void
|
||||
tarbaby_jump_step(edict_t *self)
|
||||
{
|
||||
vec3_t forward;
|
||||
|
||||
|
@ -162,7 +168,8 @@ mmove_t tarbaby_move_fly =
|
|||
tarbaby_rejump
|
||||
};
|
||||
|
||||
void tarbaby_fly(edict_t *self)
|
||||
void
|
||||
tarbaby_fly(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &tarbaby_move_fly;
|
||||
}
|
||||
|
@ -175,7 +182,7 @@ static mframe_t tarbaby_frames_jump [] =
|
|||
{ai_charge, 0, NULL},
|
||||
{ai_charge, 0, NULL},
|
||||
|
||||
{ai_charge, 0, TarBabyJump},
|
||||
{ai_charge, 0, tarbaby_jump_step},
|
||||
{ai_charge, 0, NULL}
|
||||
};
|
||||
mmove_t tarbaby_move_jump =
|
||||
|
@ -186,19 +193,22 @@ mmove_t tarbaby_move_jump =
|
|||
tarbaby_fly
|
||||
};
|
||||
|
||||
void tarbaby_rejump(edict_t *self)
|
||||
void
|
||||
tarbaby_rejump(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &tarbaby_move_jump;
|
||||
self->monsterinfo.nextframe = 54;
|
||||
}
|
||||
|
||||
// Attack
|
||||
void tarbaby_attack(edict_t *self)
|
||||
void
|
||||
tarbaby_attack(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &tarbaby_move_jump;
|
||||
}
|
||||
|
||||
void tarbaby_explode(edict_t *self)
|
||||
void
|
||||
tarbaby_explode(edict_t *self)
|
||||
{
|
||||
T_RadiusDamage(self, self, 120, NULL, 160, 0);
|
||||
gi.sound(self, CHAN_VOICE, sound_death, 1, ATTN_NORM, 0);
|
||||
|
@ -217,9 +227,9 @@ void tarbaby_explode(edict_t *self)
|
|||
}
|
||||
|
||||
// Death
|
||||
void tarbaby_die(edict_t *self, edict_t *inflictor /* unused */,
|
||||
edict_t *attacker /* unused */, int damage,
|
||||
vec3_t point /* unused */)
|
||||
void
|
||||
tarbaby_die(edict_t *self, edict_t *inflictor /* unused */,
|
||||
edict_t *attacker /* unused */, int damage, vec3_t point /* unused */)
|
||||
{
|
||||
if (self->deadflag == DEAD_DEAD)
|
||||
return;
|
||||
|
@ -230,14 +240,15 @@ void tarbaby_die(edict_t *self, edict_t *inflictor /* unused */,
|
|||
}
|
||||
|
||||
// Pain
|
||||
void tarbaby_pain(edict_t *self, edict_t *other /* unused */,
|
||||
void
|
||||
tarbaby_pain(edict_t *self, edict_t *other /* unused */,
|
||||
float kick /* unused */, int damage)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
void SP_monster_tarbaby(edict_t *self)
|
||||
void
|
||||
SP_monster_tarbaby(edict_t *self)
|
||||
{
|
||||
self->s.modelindex = gi.modelindex("models/monsters/tarbaby/tris.md2");
|
||||
VectorSet(self->mins, -16, -16, -24);
|
||||
|
@ -264,7 +275,7 @@ void SP_monster_tarbaby(edict_t *self)
|
|||
self->die = tarbaby_die;
|
||||
self->pain = tarbaby_pain;
|
||||
|
||||
self->monsterinfo.scale = 1.000000;
|
||||
self->monsterinfo.scale = MODEL_SCALE;
|
||||
gi.linkentity(self);
|
||||
|
||||
walkmonster_start(self);
|
||||
|
|
|
@ -59,7 +59,8 @@ mmove_t wizard_move_stand =
|
|||
NULL
|
||||
};
|
||||
|
||||
void wizard_stand(edict_t *self)
|
||||
void
|
||||
wizard_stand(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &wizard_move_stand;
|
||||
}
|
||||
|
@ -94,12 +95,14 @@ mmove_t wizard_move_run =
|
|||
NULL
|
||||
};
|
||||
|
||||
void wizard_run(edict_t *self)
|
||||
void
|
||||
wizard_run(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &wizard_move_run;
|
||||
}
|
||||
|
||||
void wizard_frame(edict_t *self)
|
||||
static void
|
||||
wizard_frame(edict_t *self)
|
||||
{
|
||||
static int frame = 0;
|
||||
|
||||
|
@ -130,12 +133,14 @@ mmove_t wizard_move_finish =
|
|||
wizard_run
|
||||
};
|
||||
|
||||
void wizard_finish_attack(edict_t *self)
|
||||
void
|
||||
wizard_finish_attack(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &wizard_move_finish;
|
||||
}
|
||||
|
||||
void spit_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
|
||||
void
|
||||
spit_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
|
||||
{
|
||||
if (other == self->owner)
|
||||
{
|
||||
|
@ -164,7 +169,8 @@ void spit_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf
|
|||
G_FreeEdict(self);
|
||||
}
|
||||
|
||||
void fire_spit(edict_t *self, vec3_t start, vec3_t dir, int damage, int speed)
|
||||
static void
|
||||
spit_fire(edict_t *self, vec3_t start, vec3_t dir, int damage, int speed)
|
||||
{
|
||||
edict_t *spit;
|
||||
trace_t tr;
|
||||
|
@ -206,7 +212,8 @@ void fire_spit(edict_t *self, vec3_t start, vec3_t dir, int damage, int speed)
|
|||
}
|
||||
}
|
||||
|
||||
void WizardSpit(edict_t *self)
|
||||
static void
|
||||
wizard_spit(edict_t *self)
|
||||
{
|
||||
vec3_t forward, right;
|
||||
vec3_t start;
|
||||
|
@ -222,10 +229,11 @@ void WizardSpit(edict_t *self)
|
|||
VectorSubtract(vec, start, dir);
|
||||
VectorNormalize(dir);
|
||||
|
||||
fire_spit(self, start, dir, 9, 600);
|
||||
spit_fire(self, start, dir, 9, 600);
|
||||
}
|
||||
|
||||
void wizard_prespit(edict_t *self)
|
||||
static void
|
||||
wizard_prespit(edict_t *self)
|
||||
{
|
||||
gi.sound(self, CHAN_WEAPON, sound_attack, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
@ -234,11 +242,11 @@ void wizard_prespit(edict_t *self)
|
|||
static mframe_t wizard_frames_attack [] =
|
||||
{
|
||||
{ai_charge, 0, wizard_prespit},
|
||||
{ai_charge, 0, WizardSpit},
|
||||
{ai_charge, 0, wizard_spit},
|
||||
{ai_charge, 0, NULL},
|
||||
{ai_charge, 0, NULL},
|
||||
|
||||
{ai_charge, 0, WizardSpit},
|
||||
{ai_charge, 0, wizard_spit},
|
||||
{ai_charge, 0, NULL}
|
||||
};
|
||||
mmove_t wizard_move_attack =
|
||||
|
@ -249,7 +257,8 @@ mmove_t wizard_move_attack =
|
|||
wizard_finish_attack
|
||||
};
|
||||
|
||||
void wizard_attack(edict_t *self)
|
||||
void
|
||||
wizard_attack(edict_t *self)
|
||||
{
|
||||
self->monsterinfo.currentmove = &wizard_move_attack;
|
||||
}
|
||||
|
@ -270,7 +279,8 @@ mmove_t wizard_move_pain =
|
|||
wizard_run
|
||||
};
|
||||
|
||||
void wizard_pain(edict_t *self, edict_t *other /* unused */,
|
||||
void
|
||||
wizard_pain(edict_t *self, edict_t *other /* unused */,
|
||||
float kick /* unused */, int damage)
|
||||
{
|
||||
if (level.time < self->pain_debounce_time)
|
||||
|
@ -284,7 +294,8 @@ void wizard_pain(edict_t *self, edict_t *other /* unused */,
|
|||
self->monsterinfo.currentmove = &wizard_move_pain;
|
||||
}
|
||||
|
||||
void wizard_fling(edict_t *self)
|
||||
static void
|
||||
wizard_fling(edict_t *self)
|
||||
{
|
||||
self->velocity[0] = -200 + 400 * random();
|
||||
self->velocity[1] = -200 + 400 * random();
|
||||
|
@ -297,7 +308,8 @@ void wizard_fling(edict_t *self)
|
|||
self->svflags |= SVF_DEADMONSTER;
|
||||
}
|
||||
|
||||
void wizard_dead(edict_t *self)
|
||||
void
|
||||
wizard_dead(edict_t *self)
|
||||
{
|
||||
self->nextthink = 0;
|
||||
gi.linkentity(self);
|
||||
|
@ -324,7 +336,8 @@ mmove_t wizard_move_death =
|
|||
wizard_dead
|
||||
};
|
||||
|
||||
void wizard_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
|
||||
void
|
||||
wizard_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
|
||||
{
|
||||
int n;
|
||||
|
||||
|
@ -349,12 +362,14 @@ void wizard_die(edict_t *self, edict_t *inflictor, edict_t *attacker, int damage
|
|||
self->monsterinfo.currentmove = &wizard_move_death;
|
||||
}
|
||||
|
||||
void wizard_sight(edict_t *self, edict_t *other /* unused */)
|
||||
void
|
||||
wizard_sight(edict_t *self, edict_t *other /* unused */)
|
||||
{
|
||||
gi.sound(self, CHAN_VOICE, sound_sight, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
void wizard_search(edict_t *self)
|
||||
void
|
||||
wizard_search(edict_t *self)
|
||||
{
|
||||
float r;
|
||||
r = random() * 5;
|
||||
|
@ -365,7 +380,8 @@ void wizard_search(edict_t *self)
|
|||
gi.sound(self, CHAN_VOICE, sound_idle2, 1, ATTN_NORM, 0);
|
||||
}
|
||||
|
||||
void SP_monster_wizard(edict_t *self)
|
||||
void
|
||||
SP_monster_wizard(edict_t *self)
|
||||
{
|
||||
self->s.modelindex = gi.modelindex("models/monsters/wizard/tris.md2");
|
||||
VectorSet(self->mins, -16, -16, -24);
|
||||
|
@ -396,7 +412,7 @@ void SP_monster_wizard(edict_t *self)
|
|||
self->pain = wizard_pain;
|
||||
self->die = wizard_die;
|
||||
|
||||
self->monsterinfo.scale = 1.000000;
|
||||
self->monsterinfo.scale = MODEL_SCALE;
|
||||
gi.linkentity(self);
|
||||
|
||||
flymonster_start(self);
|
||||
|
|
|
@ -228,7 +228,7 @@ fire_zombie_gib(edict_t *self, vec3_t start, vec3_t aimdir, int damage, int spee
|
|||
}
|
||||
|
||||
static void
|
||||
FireZombieGib(edict_t *self)
|
||||
zombie_fire_gib_step(edict_t *self)
|
||||
{
|
||||
vec3_t start;
|
||||
vec3_t forward, right;
|
||||
|
@ -260,7 +260,7 @@ static mframe_t zombie_frames_attack1 [] =
|
|||
{ai_charge, 0, NULL},
|
||||
{ai_charge, 0, NULL},
|
||||
|
||||
{ai_charge, 0, FireZombieGib}
|
||||
{ai_charge, 0, zombie_fire_gib_step}
|
||||
};
|
||||
mmove_t zombie_move_attack1 =
|
||||
{
|
||||
|
@ -289,7 +289,7 @@ static mframe_t zombie_frames_attack2 [] =
|
|||
{ai_charge, 0, NULL},
|
||||
|
||||
{ai_charge, 0, NULL},
|
||||
{ai_charge, 0, FireZombieGib}
|
||||
{ai_charge, 0, zombie_fire_gib_step}
|
||||
};
|
||||
mmove_t zombie_move_attack2 =
|
||||
{
|
||||
|
@ -315,7 +315,7 @@ static mframe_t zombie_frames_attack3 [] =
|
|||
{ai_charge, 0, NULL},
|
||||
{ai_charge, 0, NULL},
|
||||
{ai_charge, 0, NULL},
|
||||
{ai_charge, 0, FireZombieGib},
|
||||
{ai_charge, 0, zombie_fire_gib_step},
|
||||
};
|
||||
mmove_t zombie_move_attack3 =
|
||||
{
|
||||
|
@ -755,7 +755,7 @@ SP_monster_zombie(edict_t *self)
|
|||
self->pain = zombie_pain;
|
||||
self->die = zombie_die;
|
||||
|
||||
self->monsterinfo.scale = 1.000000;
|
||||
self->monsterinfo.scale = MODEL_SCALE;
|
||||
gi.linkentity(self);
|
||||
|
||||
walkmonster_start(self);
|
||||
|
|
|
@ -253,7 +253,6 @@ extern void SV_Physics_Toss ( edict_t * ent ) ;
|
|||
extern void SetRespawn ( edict_t * ent , float delay ) ;
|
||||
extern void SetTriggeredSpawn ( edict_t * ent ) ;
|
||||
extern void SpawnItem ( edict_t * ent , gitem_t * item ) ;
|
||||
extern void viewthing_think ( edict_t * ent ) ;
|
||||
extern void Tag_DogTag ( edict_t * ent , edict_t * killer , char * * pic ) ;
|
||||
extern void Tag_DropToken ( edict_t * ent , gitem_t * item ) ;
|
||||
extern void Tag_KillItBonus ( edict_t * self ) ;
|
||||
|
@ -409,16 +408,24 @@ extern void amb4_think ( edict_t * ent ) ;
|
|||
extern void arachnid_attack ( edict_t * self ) ;
|
||||
extern void arachnid_charge_rail ( edict_t * self ) ;
|
||||
extern void arachnid_dead ( edict_t * self ) ;
|
||||
extern void arachnid_die(edict_t *self, edict_t *inflictor /* unused */, edict_t *attacker /* unused */, int damage, vec3_t point /* unused */);
|
||||
extern void arachnid_die ( edict_t * self , edict_t *inflictor , edict_t *attacker , int damage, vec3_t point ) ;
|
||||
extern void arachnid_footstep ( edict_t * self ) ;
|
||||
extern void arachnid_melee_charge ( edict_t * self ) ;
|
||||
extern void arachnid_melee_hit ( edict_t * self ) ;
|
||||
extern void arachnid_pain(edict_t *self, edict_t *other /* other */, float kick /* other */, int damage);
|
||||
extern void arachnid_pain ( edict_t * self , edict_t *other , float kick , int damage);
|
||||
extern void arachnid_rail ( edict_t * self ) ;
|
||||
extern void arachnid_run ( edict_t * self ) ;
|
||||
extern void arachnid_sight(edict_t *self, edict_t *other /* unused */);
|
||||
extern void arachnid_sight ( edict_t * self , edict_t *other );
|
||||
extern void arachnid_stand ( edict_t * self ) ;
|
||||
extern void arachnid_walk ( edict_t * self ) ;
|
||||
extern void army_attack ( edict_t * self ) ;
|
||||
extern void army_dead ( edict_t * self ) ;
|
||||
extern void army_die ( edict_t * self , edict_t * inflictor , edict_t * attacker , int damage, vec3_t point ) ;
|
||||
extern void army_pain ( edict_t * self , edict_t * other , float kick , int damage ) ;
|
||||
extern void army_run ( edict_t * self ) ;
|
||||
extern void army_search ( edict_t * self ) ;
|
||||
extern void army_sight ( edict_t * self , edict_t *other ) ;
|
||||
extern void army_stand ( edict_t * self ) ;
|
||||
extern void badarea_touch ( edict_t * ent , edict_t * other , cplane_t * plane , csurface_t * surf ) ;
|
||||
extern void barrel_delay ( edict_t * self , edict_t * inflictor , edict_t * attacker , int damage , vec3_t point ) ;
|
||||
extern void barrel_explode ( edict_t * self ) ;
|
||||
|
@ -563,6 +570,26 @@ extern void debris_die ( edict_t * self , edict_t * inflictor , edict_t * attack
|
|||
extern void defender_pain ( edict_t * self , edict_t * other , float kick , int damage ) ;
|
||||
extern void defender_shoot ( edict_t * self , edict_t * enemy ) ;
|
||||
extern void defender_think ( edict_t * self ) ;
|
||||
extern void demon_attack ( edict_t * self ) ;
|
||||
extern void demon_dead ( edict_t * self ) ;
|
||||
extern void demon_die ( edict_t * self , edict_t * inflictor , edict_t * attacker , int damage, vec3_t point);
|
||||
extern void demon_jump_touch ( edict_t * self , edict_t * other , cplane_t *plane, csurface_t *surf);
|
||||
extern void demon_melee ( edict_t * self ) ;
|
||||
extern void demon_pain ( edict_t * self , edict_t * other , float kick, int damage);
|
||||
extern void demon_run ( edict_t * self ) ;
|
||||
extern void demon_search ( edict_t * self ) ;
|
||||
extern void demon_sight ( edict_t * self , edict_t *other );
|
||||
extern void demon_stand ( edict_t * self ) ;
|
||||
extern void dog_dead ( edict_t * self ) ;
|
||||
extern void dog_die ( edict_t * self , edict_t * inflictor , edict_t * attacker , int damage, vec3_t point);
|
||||
extern void dog_leap ( edict_t * self ) ;
|
||||
extern void dog_leap_touch ( edict_t * self , edict_t * other , cplane_t *plane, csurface_t *surf);
|
||||
extern void dog_melee ( edict_t * self ) ;
|
||||
extern void dog_pain ( edict_t * self , edict_t * other , float kick , int damage);
|
||||
extern void dog_run ( edict_t * self ) ;
|
||||
extern void dog_search ( edict_t * self ) ;
|
||||
extern void dog_sight ( edict_t * self , edict_t *other );
|
||||
extern void dog_stand ( edict_t * self ) ;
|
||||
extern void door_blocked ( edict_t * self , edict_t * other ) ;
|
||||
extern void door_go_down ( edict_t * self ) ;
|
||||
extern void door_go_up ( edict_t * self , edict_t * activator ) ;
|
||||
|
@ -592,10 +619,13 @@ extern void droptofloor ( edict_t * ent ) ;
|
|||
extern void enfbolt_touch ( edict_t * self , edict_t * other , cplane_t * plane, csurface_t *surf);
|
||||
extern void enforcer_attack ( edict_t * self ) ;
|
||||
extern void enforcer_die ( edict_t * self , edict_t * inflictor , edict_t * attacker , int damage , vec3_t point ) ;
|
||||
extern void enforcer_die ( edict_t * self , edict_t * inflictor , edict_t * attacker , int damage, vec3_t point);
|
||||
extern void enforcer_pain ( edict_t * self , edict_t * other , float kick , int damage ) ;
|
||||
extern void enforcer_pain ( edict_t * self , edict_t * other , float kick , int damage);
|
||||
extern void enforcer_run ( edict_t * self ) ;
|
||||
extern void enforcer_search ( edict_t * self ) ;
|
||||
extern void enforcer_sight ( edict_t * self , edict_t * other ) ;
|
||||
extern void enforcer_sight ( edict_t * self , edict_t *other );
|
||||
extern void enforcer_stand ( edict_t * self ) ;
|
||||
extern void enforcer_walk ( edict_t * self ) ;
|
||||
extern void fd_secret_done ( edict_t * self ) ;
|
||||
|
@ -632,6 +662,13 @@ extern void fire_shotgun ( edict_t * self , vec3_t start , vec3_t aimdir , int d
|
|||
extern void fire_tesla ( edict_t * self , vec3_t start , vec3_t aimdir , int damage_multiplier , int speed ) ;
|
||||
extern void fire_tracker ( edict_t * self , vec3_t start , vec3_t dir , int damage , int speed , edict_t * enemy ) ;
|
||||
extern void fire_trap ( edict_t * self , vec3_t start , vec3_t aimdir , int damage , int speed , float timer , float damage_radius , qboolean held ) ;
|
||||
extern void fish_dead ( edict_t * self ) ;
|
||||
extern void fish_die ( edict_t * self , edict_t * inflictor , edict_t * attacker , int damage, vec3_t point ) ;
|
||||
extern void fish_melee ( edict_t * self ) ;
|
||||
extern void fish_pain ( edict_t * self , edict_t * other , float kick , int damage ) ;
|
||||
extern void fish_run ( edict_t * self ) ;
|
||||
extern void fish_search ( edict_t * self ) ;
|
||||
extern void fish_stand ( edict_t * self ) ;
|
||||
extern void fixbot_attack ( edict_t * self ) ;
|
||||
extern void fixbot_dead ( edict_t * self ) ;
|
||||
extern void fixbot_die ( edict_t * self , edict_t * inflictor , edict_t * attacker , int damage , vec3_t point ) ;
|
||||
|
@ -787,14 +824,14 @@ extern void guardian_atk2 ( edict_t * self ) ;
|
|||
extern void guardian_atk2_out ( edict_t * self ) ;
|
||||
extern void guardian_attack ( edict_t * self ) ;
|
||||
extern void guardian_dead ( edict_t * self ) ;
|
||||
extern void guardian_die(edict_t *self, edict_t *inflictor /* unused */, edict_t *attacker /* unused */, int damage, vec3_t point /* unused */);
|
||||
extern void guardian_die ( edict_t * self , edict_t *inflictor , edict_t *attacker , int damage, vec3_t point );
|
||||
extern void guardian_explode ( edict_t * self ) ;
|
||||
extern void guardian_fire_blaster ( edict_t * self ) ;
|
||||
extern void guardian_footstep ( edict_t * self ) ;
|
||||
extern void guardian_hyper_sound ( edict_t * self ) ;
|
||||
extern void guardian_kick ( edict_t * self ) ;
|
||||
extern void guardian_laser_fire ( edict_t * self ) ;
|
||||
extern void guardian_pain(edict_t *self, edict_t *other /* other */, float kick /* other */, int damage);
|
||||
extern void guardian_pain ( edict_t * self , edict_t * other , float kick , int damage);
|
||||
extern void guardian_run ( edict_t * self ) ;
|
||||
extern void guardian_stand ( edict_t * self ) ;
|
||||
extern void guardian_walk ( edict_t * self ) ;
|
||||
|
@ -829,6 +866,15 @@ extern void heat_think ( edict_t * self ) ;
|
|||
extern void hint_path_touch ( edict_t * self , edict_t * other , cplane_t * plane , csurface_t * surf ) ;
|
||||
extern void hintpath_go ( edict_t * self , edict_t * point ) ;
|
||||
extern void hintpath_stop ( edict_t * self ) ;
|
||||
extern void hknight_attack ( edict_t * self ) ;
|
||||
extern void hknight_dead ( edict_t * self ) ;
|
||||
extern void hknight_die ( edict_t * self , edict_t * inflictor , edict_t * attacker , int damage, vec3_t point) ;
|
||||
extern void hknight_melee ( edict_t * self ) ;
|
||||
extern void hknight_pain ( edict_t * self , edict_t * other , float kick, int damage) ;
|
||||
extern void hknight_run ( edict_t * self ) ;
|
||||
extern void hknight_search ( edict_t * self ) ;
|
||||
extern void hknight_sight ( edict_t * self , edict_t *other ) ;
|
||||
extern void hknight_stand ( edict_t * self ) ;
|
||||
extern void hover_attack ( edict_t * self ) ;
|
||||
extern void hover_dead ( edict_t * self ) ;
|
||||
extern void hover_deadthink ( edict_t * self ) ;
|
||||
|
@ -909,11 +955,21 @@ extern void jorg_stand ( edict_t * self ) ;
|
|||
extern void jorg_step_left ( edict_t * self ) ;
|
||||
extern void jorg_step_right ( edict_t * self ) ;
|
||||
extern void jorg_walk ( edict_t * self ) ;
|
||||
extern void knight_attack ( edict_t * self ) ;
|
||||
extern void knight_dead ( edict_t * self ) ;
|
||||
extern void knight_die ( edict_t * self , edict_t * inflictor , edict_t * attacker , int damage, vec3_t point) ;
|
||||
extern void knight_melee ( edict_t * self ) ;
|
||||
extern void knight_pain (edict_t * self , edict_t * other , float kick , int damage) ;
|
||||
extern void knight_run ( edict_t * self ) ;
|
||||
extern void knight_search ( edict_t * self ) ;
|
||||
extern void knight_sight ( edict_t * self , edict_t *other ) ;
|
||||
extern void knight_stand ( edict_t * self ) ;
|
||||
extern void land_to_water ( edict_t * self ) ;
|
||||
extern void landing_goal ( edict_t * self ) ;
|
||||
extern void light_use ( edict_t * self , edict_t * other , edict_t * activator ) ;
|
||||
extern void loogie ( edict_t * self ) ;
|
||||
extern void loogie_touch ( edict_t * self , edict_t * other , cplane_t * plane , csurface_t * surf ) ;
|
||||
extern void magic_touch ( edict_t * self, edict_t * other , cplane_t *plane, csurface_t *surf) ;
|
||||
extern void makronBFG ( edict_t * self ) ;
|
||||
extern void makron_attack ( edict_t * self ) ;
|
||||
extern void makron_brainsplorch ( edict_t * self ) ;
|
||||
|
@ -1031,6 +1087,15 @@ extern void nuke_die ( edict_t * self , edict_t * inflictor , edict_t * attacker
|
|||
extern void object_repair_dead ( edict_t * ent ) ;
|
||||
extern void object_repair_fx ( edict_t * ent ) ;
|
||||
extern void object_repair_sparks ( edict_t * ent ) ;
|
||||
extern void ogre_attack ( edict_t * self ) ;
|
||||
extern void ogre_dead ( edict_t * self ) ;
|
||||
extern void ogre_die ( edict_t * self , edict_t * inflictor , edict_t * attacker , int damage, vec3_t point ) ;
|
||||
extern void ogre_melee ( edict_t * self ) ;
|
||||
extern void ogre_pain ( edict_t * self , edict_t * other , float kick , int damage ) ;
|
||||
extern void ogre_run ( edict_t * self ) ;
|
||||
extern void ogre_search ( edict_t * self ) ;
|
||||
extern void ogre_sight ( edict_t * self , edict_t *other ) ;
|
||||
extern void ogre_stand ( edict_t * self ) ;
|
||||
extern void orb_think ( edict_t * self ) ;
|
||||
extern void parasite_attack ( edict_t * self ) ;
|
||||
extern void parasite_dead ( edict_t * self ) ;
|
||||
|
@ -1094,21 +1159,27 @@ extern void rotating_touch ( edict_t * self , edict_t * other , cplane_t * plane
|
|||
extern void rotating_use ( edict_t * self , edict_t * other , edict_t * activator ) ;
|
||||
extern void secret_blocked ( edict_t * self , edict_t * other ) ;
|
||||
extern void secret_touch ( edict_t * self , edict_t * other , cplane_t * plane , csurface_t * surf ) ;
|
||||
extern void sham_smash10(edict_t* self);
|
||||
extern void sham_swingl9(edict_t* self);
|
||||
extern void sham_swingr9(edict_t* self);
|
||||
extern void shalrath_attack ( edict_t * self ) ;
|
||||
extern void shalrath_dead ( edict_t * self ) ;
|
||||
extern void shalrath_die ( edict_t * self , edict_t * inflictor , edict_t * attacker , int damage, vec3_t point ) ;
|
||||
extern void shalrath_pain ( edict_t * self , edict_t * other , float kick , int damage ) ;
|
||||
extern void shalrath_pod_home ( edict_t * self ) ;
|
||||
extern void shalrath_pod_touch ( edict_t * self , edict_t * other , cplane_t *plane, csurface_t * surf ) ;
|
||||
extern void shalrath_run ( edict_t * self ) ;
|
||||
extern void shalrath_search ( edict_t * self ) ;
|
||||
extern void shalrath_sight ( edict_t * self , edict_t *other ) ;
|
||||
extern void shalrath_stand ( edict_t * self ) ;
|
||||
extern void shambler_attack ( edict_t * self ) ;
|
||||
extern void shambler_dead (edict_t * self ) ;
|
||||
extern void shambler_die(edict_t *self, edict_t *inflictor /* unused */, edict_t *attacker /* unused */, int damage, vec3_t point /* unused */);
|
||||
extern void shambler_die ( edict_t * self , edict_t * inflictor , edict_t * attacker , int damage, vec3_t point ) ;
|
||||
extern void shambler_idle ( edict_t * self);
|
||||
extern void shambler_lightning_update ( edict_t * self ) ;
|
||||
extern void shambler_maybe_idle ( edict_t * self);
|
||||
extern void shambler_melee (edict_t* self);
|
||||
extern void shambler_melee1 (edict_t* self);
|
||||
extern void shambler_melee2 (edict_t* self);
|
||||
extern void shambler_pain(edict_t *self, edict_t *other /* unused */, float kick /* unused */, int damage /* unused */);
|
||||
extern void shambler_pain ( edict_t * self , edict_t * other , float kick , int damage );
|
||||
extern void shambler_run ( edict_t * self );
|
||||
extern void shambler_shrink(edict_t* self);
|
||||
extern void shambler_sight ( edict_t * self, edict_t* other);
|
||||
extern void shambler_stand ( edict_t * self);
|
||||
extern void shambler_walk ( edict_t * self);
|
||||
|
@ -1199,6 +1270,7 @@ extern void sphere_fly ( edict_t * self ) ;
|
|||
extern void sphere_if_idle_die ( edict_t * self , edict_t * inflictor , edict_t * attacker , int damage , vec3_t point ) ;
|
||||
extern void sphere_think_explode ( edict_t * self ) ;
|
||||
extern void sphere_touch ( edict_t * self , edict_t * other , cplane_t * plane , csurface_t * surf , int mod ) ;
|
||||
extern void spit_touch ( edict_t * self , edict_t * other , cplane_t *plane, csurface_t *surf);
|
||||
extern void stalker_attack_melee ( edict_t * self ) ;
|
||||
extern void stalker_attack_ranged ( edict_t * self ) ;
|
||||
extern void stalker_dead ( edict_t * self ) ;
|
||||
|
@ -1243,6 +1315,7 @@ extern void supertank_stand ( edict_t * self ) ;
|
|||
extern void supertank_walk ( edict_t * self ) ;
|
||||
extern void swimmonster_start ( edict_t * self ) ;
|
||||
extern void swimmonster_start_go ( edict_t * self ) ;
|
||||
extern void swing_sword_step ( edict_t * self ) ;
|
||||
extern void takeoff_goal ( edict_t * self ) ;
|
||||
extern void tank_attack ( edict_t * self ) ;
|
||||
extern void tank_dead ( edict_t * self ) ;
|
||||
|
@ -1261,6 +1334,16 @@ extern void tank_stand_think ( edict_t * self ) ;
|
|||
extern void tank_thud ( edict_t * self ) ;
|
||||
extern void tank_walk ( edict_t * self ) ;
|
||||
extern void tank_windup ( edict_t * self ) ;
|
||||
extern void tarbaby_attack ( edict_t * self ) ;
|
||||
extern void tarbaby_die ( edict_t * self , edict_t *inflictor , edict_t *attacker , int damage, vec3_t point );
|
||||
extern void tarbaby_explode ( edict_t * self ) ;
|
||||
extern void tarbaby_fly ( edict_t * self ) ;
|
||||
extern void tarbaby_pain (edict_t * self , edict_t * other , float kick , int damage);
|
||||
extern void tarbaby_rejump ( edict_t * self ) ;
|
||||
extern void tarbaby_run ( edict_t * self ) ;
|
||||
extern void tarbaby_sight ( edict_t * self , edict_t *other );
|
||||
extern void tarbaby_stand ( edict_t * self ) ;
|
||||
extern void tarbaby_touch ( edict_t * self , edict_t * other , cplane_t *plane, csurface_t *surf);
|
||||
extern void target_actor_touch ( edict_t * self , edict_t * other , cplane_t * plane , csurface_t * surf ) ;
|
||||
extern void target_anger_use ( edict_t * self , edict_t * other , edict_t * activator ) ;
|
||||
extern void target_crosslevel_target_think ( edict_t * self ) ;
|
||||
|
@ -1358,6 +1441,7 @@ extern void use_target_steam ( edict_t * self , edict_t * other , edict_t * acti
|
|||
extern void vengeance_pain ( edict_t * self , edict_t * other , float kick , int damage ) ;
|
||||
extern void vengeance_think ( edict_t * self ) ;
|
||||
extern void vengeance_touch ( edict_t * self , edict_t * other , cplane_t * plane , csurface_t * surf ) ;
|
||||
extern void viewthing_think ( edict_t * ent ) ;
|
||||
extern void wait_and_change_think ( edict_t * ent ) ;
|
||||
extern void walkmonster_start ( edict_t * self ) ;
|
||||
extern void walkmonster_start_go ( edict_t * self ) ;
|
||||
|
@ -1419,13 +1503,25 @@ extern void widow_step ( edict_t * self ) ;
|
|||
extern void widow_stepshoot ( edict_t * self ) ;
|
||||
extern void widow_walk ( edict_t * self ) ;
|
||||
extern void widowlegs_think ( edict_t * self ) ;
|
||||
extern void zombie_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf);
|
||||
extern void zombie_gib_touch(edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf);
|
||||
extern void wizard_attack ( edict_t * self ) ;
|
||||
extern void wizard_dead ( edict_t * self ) ;
|
||||
extern void wizard_die ( edict_t * self , edict_t * inflictor , edict_t * attacker , int damage, vec3_t point);
|
||||
extern void wizard_finish_attack ( edict_t * self ) ;
|
||||
extern void wizard_pain ( edict_t * self , edict_t * other , float kick , int damage);
|
||||
extern void wizard_run ( edict_t * self ) ;
|
||||
extern void wizard_search ( edict_t * self ) ;
|
||||
extern void wizard_sight ( edict_t * self , edict_t *other );
|
||||
extern void wizard_stand ( edict_t * self ) ;
|
||||
extern void zombie_attack ( edict_t * self ) ;
|
||||
extern void zombie_die ( edict_t * self , edict_t * inflictor , edict_t * attacker , int damage , vec3_t point ) ;
|
||||
extern void zombie_die (edict_t * self , edict_t * inflictor , edict_t * attacker , int damage, vec3_t point) ;
|
||||
extern void zombie_gib_touch ( edict_t * self , edict_t * other , cplane_t *plane, csurface_t *surf);
|
||||
extern void zombie_pain ( edict_t * self , edict_t * other , float kick , int damage ) ;
|
||||
extern void zombie_pain (edict_t * self , edict_t * other , float kick, int damage) ;
|
||||
extern void zombie_run ( edict_t * self ) ;
|
||||
extern void zombie_search ( edict_t * self ) ;
|
||||
extern void zombie_sight ( edict_t * self , edict_t *other ) ;
|
||||
extern void zombie_sight ( edict_t * self , edict_t * other ) ;
|
||||
extern void zombie_stand ( edict_t * self ) ;
|
||||
extern void zombie_touch ( edict_t * self , edict_t * other , cplane_t *plane, csurface_t *surf);
|
||||
extern void zombie_walk ( edict_t * self ) ;
|
||||
|
|
|
@ -202,7 +202,6 @@
|
|||
{"SetRespawn", (byte *)SetRespawn},
|
||||
{"SetTriggeredSpawn", (byte *)SetTriggeredSpawn},
|
||||
{"SpawnItem", (byte *)SpawnItem},
|
||||
{"viewthing_think", (byte *)viewthing_think},
|
||||
{"Tag_ChangeDamage", (byte *)Tag_ChangeDamage},
|
||||
{"Tag_DogTag", (byte *)Tag_DogTag},
|
||||
{"Tag_DropToken", (byte *)Tag_DropToken},
|
||||
|
@ -373,6 +372,14 @@
|
|||
{"arachnid_sight", (byte *)arachnid_sight},
|
||||
{"arachnid_stand", (byte *)arachnid_stand},
|
||||
{"arachnid_walk", (byte *)arachnid_walk},
|
||||
{"army_attack", (byte *)army_attack},
|
||||
{"army_dead", (byte *)army_dead},
|
||||
{"army_die", (byte *)army_die},
|
||||
{"army_pain", (byte *)army_pain},
|
||||
{"army_run", (byte *)army_run},
|
||||
{"army_search", (byte *)army_search},
|
||||
{"army_sight", (byte *)army_sight},
|
||||
{"army_stand", (byte *)army_stand},
|
||||
{"badarea_touch", (byte *)badarea_touch},
|
||||
{"barrel_delay", (byte *)barrel_delay},
|
||||
{"barrel_explode", (byte *)barrel_explode},
|
||||
|
@ -525,6 +532,26 @@
|
|||
{"defender_pain", (byte *)defender_pain},
|
||||
{"defender_shoot", (byte *)defender_shoot},
|
||||
{"defender_think", (byte *)defender_think},
|
||||
{"demon_attack", (byte *)demon_attack},
|
||||
{"demon_dead", (byte *)demon_dead},
|
||||
{"demon_die", (byte *)demon_die},
|
||||
{"demon_jump_touch", (byte *)demon_jump_touch},
|
||||
{"demon_melee", (byte *)demon_melee},
|
||||
{"demon_pain", (byte *)demon_pain},
|
||||
{"demon_run", (byte *)demon_run},
|
||||
{"demon_search", (byte *)demon_search},
|
||||
{"demon_sight", (byte *)demon_sight},
|
||||
{"demon_stand", (byte *)demon_stand},
|
||||
{"dog_dead", (byte *)dog_dead},
|
||||
{"dog_die", (byte *)dog_die},
|
||||
{"dog_leap", (byte *)dog_leap},
|
||||
{"dog_leap_touch", (byte *)dog_leap_touch},
|
||||
{"dog_melee", (byte *)dog_melee},
|
||||
{"dog_pain", (byte *)dog_pain},
|
||||
{"dog_run", (byte *)dog_run},
|
||||
{"dog_search", (byte *)dog_search},
|
||||
{"dog_sight", (byte *)dog_sight},
|
||||
{"dog_stand", (byte *)dog_stand},
|
||||
{"door_blocked", (byte *)door_blocked},
|
||||
{"door_go_down", (byte *)door_go_down},
|
||||
{"door_go_up", (byte *)door_go_up},
|
||||
|
@ -581,6 +608,7 @@
|
|||
{"fire_grenade", (byte *)fire_grenade},
|
||||
{"fire_grenade2", (byte *)fire_grenade2},
|
||||
{"fire_heat", (byte *)fire_heat},
|
||||
{"fire_heatbeam", (byte *)fire_heatbeam},
|
||||
{"fire_hit", (byte *)fire_hit},
|
||||
{"fire_ionripper", (byte *)fire_ionripper},
|
||||
{"fire_lead", (byte *)fire_lead},
|
||||
|
@ -595,6 +623,13 @@
|
|||
{"fire_tesla", (byte *)fire_tesla},
|
||||
{"fire_tracker", (byte *)fire_tracker},
|
||||
{"fire_trap", (byte *)fire_trap},
|
||||
{"fish_dead", (byte *)fish_dead},
|
||||
{"fish_die", (byte *)fish_die},
|
||||
{"fish_melee", (byte *)fish_melee},
|
||||
{"fish_pain", (byte *)fish_pain},
|
||||
{"fish_run", (byte *)fish_run},
|
||||
{"fish_search", (byte *)fish_search},
|
||||
{"fish_stand", (byte *)fish_stand},
|
||||
{"fixbot_attack", (byte *)fixbot_attack},
|
||||
{"fixbot_dead", (byte *)fixbot_dead},
|
||||
{"fixbot_die", (byte *)fixbot_die},
|
||||
|
@ -803,6 +838,15 @@
|
|||
{"hint_path_touch", (byte *)hint_path_touch},
|
||||
{"hintpath_go", (byte *)hintpath_go},
|
||||
{"hintpath_stop", (byte *)hintpath_stop},
|
||||
{"hknight_attack", (byte *)hknight_attack},
|
||||
{"hknight_dead", (byte *)hknight_dead},
|
||||
{"hknight_die", (byte *)hknight_die},
|
||||
{"hknight_melee", (byte *)hknight_melee},
|
||||
{"hknight_pain", (byte *)hknight_pain},
|
||||
{"hknight_run", (byte *)hknight_run},
|
||||
{"hknight_search", (byte *)hknight_search},
|
||||
{"hknight_sight", (byte *)hknight_sight},
|
||||
{"hknight_stand", (byte *)hknight_stand},
|
||||
{"hover_attack", (byte *)hover_attack},
|
||||
{"hover_blocked", (byte *)hover_blocked},
|
||||
{"hover_dead", (byte *)hover_dead},
|
||||
|
@ -887,11 +931,21 @@
|
|||
{"jorg_step_left", (byte *)jorg_step_left},
|
||||
{"jorg_step_right", (byte *)jorg_step_right},
|
||||
{"jorg_walk", (byte *)jorg_walk},
|
||||
{"knight_attack", (byte *)knight_attack},
|
||||
{"knight_dead", (byte *)knight_dead},
|
||||
{"knight_die", (byte *)knight_die},
|
||||
{"knight_melee", (byte *)knight_melee},
|
||||
{"knight_pain", (byte *)knight_pain},
|
||||
{"knight_run", (byte *)knight_run},
|
||||
{"knight_search", (byte *)knight_search},
|
||||
{"knight_sight", (byte *)knight_sight},
|
||||
{"knight_stand", (byte *)knight_stand},
|
||||
{"land_to_water", (byte *)land_to_water},
|
||||
{"landing_goal", (byte *)landing_goal},
|
||||
{"light_use", (byte *)light_use},
|
||||
{"loogie", (byte *)loogie},
|
||||
{"loogie_touch", (byte *)loogie_touch},
|
||||
{"magic_touch", (byte *)magic_touch},
|
||||
{"makronBFG", (byte *)makronBFG},
|
||||
{"makron_attack", (byte *)makron_attack},
|
||||
{"makron_brainsplorch", (byte *)makron_brainsplorch},
|
||||
|
@ -1018,6 +1072,15 @@
|
|||
{"object_repair_dead", (byte *)object_repair_dead},
|
||||
{"object_repair_fx", (byte *)object_repair_fx},
|
||||
{"object_repair_sparks", (byte *)object_repair_sparks},
|
||||
{"ogre_attack", (byte *)ogre_attack},
|
||||
{"ogre_dead", (byte *)ogre_dead},
|
||||
{"ogre_die", (byte *)ogre_die},
|
||||
{"ogre_melee", (byte *)ogre_melee},
|
||||
{"ogre_pain", (byte *)ogre_pain},
|
||||
{"ogre_run", (byte *)ogre_run},
|
||||
{"ogre_search", (byte *)ogre_search},
|
||||
{"ogre_sight", (byte *)ogre_sight},
|
||||
{"ogre_stand", (byte *)ogre_stand},
|
||||
{"orb_think", (byte *)orb_think},
|
||||
{"parasite_attack", (byte *)parasite_attack},
|
||||
{"parasite_blocked", (byte *)parasite_blocked},
|
||||
|
@ -1084,9 +1147,16 @@
|
|||
{"rotating_use", (byte *)rotating_use},
|
||||
{"secret_blocked", (byte *)secret_blocked},
|
||||
{"secret_touch", (byte *)secret_touch},
|
||||
{"sham_smash10", (byte *)sham_smash10},
|
||||
{"sham_swingl9", (byte *)sham_swingl9},
|
||||
{"sham_swingr9", (byte *)sham_swingr9},
|
||||
{"shalrath_attack", (byte *)shalrath_attack},
|
||||
{"shalrath_dead", (byte *)shalrath_dead},
|
||||
{"shalrath_die", (byte *)shalrath_die},
|
||||
{"shalrath_pain", (byte *)shalrath_pain},
|
||||
{"shalrath_pod_home", (byte *)shalrath_pod_home},
|
||||
{"shalrath_pod_touch", (byte *)shalrath_pod_touch},
|
||||
{"shalrath_run", (byte *)shalrath_run},
|
||||
{"shalrath_search", (byte *)shalrath_search},
|
||||
{"shalrath_sight", (byte *)shalrath_sight},
|
||||
{"shalrath_stand", (byte *)shalrath_stand},
|
||||
{"shambler_attack", (byte *)shambler_attack},
|
||||
{"shambler_dead", (byte *)shambler_dead},
|
||||
{"shambler_die", (byte *)shambler_die},
|
||||
|
@ -1098,7 +1168,6 @@
|
|||
{"shambler_melee2", (byte *)shambler_melee2},
|
||||
{"shambler_pain", (byte *)shambler_pain},
|
||||
{"shambler_run", (byte *)shambler_run},
|
||||
{"shambler_shrink", (byte *)shambler_shrink},
|
||||
{"shambler_sight", (byte *)shambler_sight},
|
||||
{"shambler_stand", (byte *)shambler_stand},
|
||||
{"shambler_walk", (byte *)shambler_walk},
|
||||
|
@ -1190,6 +1259,7 @@
|
|||
{"sphere_if_idle_die", (byte *)sphere_if_idle_die},
|
||||
{"sphere_think_explode", (byte *)sphere_think_explode},
|
||||
{"sphere_touch", (byte *)sphere_touch},
|
||||
{"spit_touch", (byte *)spit_touch},
|
||||
{"stalker_attack_melee", (byte *)stalker_attack_melee},
|
||||
{"stalker_attack_ranged", (byte *)stalker_attack_ranged},
|
||||
{"stalker_blocked", (byte *)stalker_blocked},
|
||||
|
@ -1238,6 +1308,7 @@
|
|||
{"supertank_walk", (byte *)supertank_walk},
|
||||
{"swimmonster_start", (byte *)swimmonster_start},
|
||||
{"swimmonster_start_go", (byte *)swimmonster_start_go},
|
||||
{"swing_sword_step", (byte *)swing_sword_step},
|
||||
{"takeoff_goal", (byte *)takeoff_goal},
|
||||
{"tank_attack", (byte *)tank_attack},
|
||||
{"tank_blocked", (byte *)tank_blocked},
|
||||
|
@ -1257,6 +1328,16 @@
|
|||
{"tank_thud", (byte *)tank_thud},
|
||||
{"tank_walk", (byte *)tank_walk},
|
||||
{"tank_windup", (byte *)tank_windup},
|
||||
{"tarbaby_attack", (byte *)tarbaby_attack},
|
||||
{"tarbaby_die", (byte *)tarbaby_die},
|
||||
{"tarbaby_explode", (byte *)tarbaby_explode},
|
||||
{"tarbaby_fly", (byte *)tarbaby_fly},
|
||||
{"tarbaby_pain", (byte *)tarbaby_pain},
|
||||
{"tarbaby_rejump", (byte *)tarbaby_rejump},
|
||||
{"tarbaby_run", (byte *)tarbaby_run},
|
||||
{"tarbaby_sight", (byte *)tarbaby_sight},
|
||||
{"tarbaby_stand", (byte *)tarbaby_stand},
|
||||
{"tarbaby_touch", (byte *)tarbaby_touch},
|
||||
{"target_actor_touch", (byte *)target_actor_touch},
|
||||
{"target_anger_use", (byte *)target_anger_use},
|
||||
{"target_angle", (byte *)target_angle},
|
||||
|
@ -1356,6 +1437,7 @@
|
|||
{"vengeance_pain", (byte *)vengeance_pain},
|
||||
{"vengeance_think", (byte *)vengeance_think},
|
||||
{"vengeance_touch", (byte *)vengeance_touch},
|
||||
{"viewthing_think", (byte *)viewthing_think},
|
||||
{"visible", (byte *)visible},
|
||||
{"wait_and_change_think", (byte *)wait_and_change_think},
|
||||
{"walkmonster_start", (byte *)walkmonster_start},
|
||||
|
@ -1419,14 +1501,23 @@
|
|||
{"widow_stepshoot", (byte *)widow_stepshoot},
|
||||
{"widow_walk", (byte *)widow_walk},
|
||||
{"widowlegs_think", (byte *)widowlegs_think},
|
||||
{"zombie_touch", (byte *)zombie_touch},
|
||||
{"zombie_gib_touch", (byte *)zombie_gib_touch},
|
||||
{"wizard_attack", (byte *)wizard_attack},
|
||||
{"wizard_dead", (byte *)wizard_dead},
|
||||
{"wizard_die", (byte *)wizard_die},
|
||||
{"wizard_finish_attack", (byte *)wizard_finish_attack},
|
||||
{"wizard_pain", (byte *)wizard_pain},
|
||||
{"wizard_run", (byte *)wizard_run},
|
||||
{"wizard_search", (byte *)wizard_search},
|
||||
{"wizard_sight", (byte *)wizard_sight},
|
||||
{"wizard_stand", (byte *)wizard_stand},
|
||||
{"zombie_attack", (byte *)zombie_attack},
|
||||
{"zombie_die", (byte *)zombie_die},
|
||||
{"zombie_gib_touch", (byte *)zombie_gib_touch},
|
||||
{"zombie_pain", (byte *)zombie_pain},
|
||||
{"zombie_run", (byte *)zombie_run},
|
||||
{"zombie_search", (byte *)zombie_search},
|
||||
{"zombie_sight", (byte *)zombie_sight},
|
||||
{"zombie_stand", (byte *)zombie_stand},
|
||||
{"zombie_touch", (byte *)zombie_touch},
|
||||
{"zombie_walk", (byte *)zombie_walk},
|
||||
{0, 0}
|
||||
|
|
Loading…
Reference in a new issue