mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2024-11-10 07:12:07 +00:00
game: restore rerelease target_actor used in biggun
This commit is contained in:
parent
081d0fffa4
commit
6aece83adb
4 changed files with 1179 additions and 0 deletions
1
Makefile
1
Makefile
|
@ -891,6 +891,7 @@ GAME_OBJS_ = \
|
||||||
src/game/dm/ball.o \
|
src/game/dm/ball.o \
|
||||||
src/game/dm/tag.o \
|
src/game/dm/tag.o \
|
||||||
src/game/menu/menu.o \
|
src/game/menu/menu.o \
|
||||||
|
src/game/monster/actor/actor.o \
|
||||||
src/game/monster/arachnid/arachnid.o \
|
src/game/monster/arachnid/arachnid.o \
|
||||||
src/game/monster/berserker/berserker.o \
|
src/game/monster/berserker/berserker.o \
|
||||||
src/game/monster/boss2/boss2.o \
|
src/game/monster/boss2/boss2.o \
|
||||||
|
|
|
@ -275,6 +275,7 @@ static spawn_t spawns[] = {
|
||||||
{"target_crosslevel_target", SP_target_crosslevel_target},
|
{"target_crosslevel_target", SP_target_crosslevel_target},
|
||||||
{"target_laser", SP_target_laser},
|
{"target_laser", SP_target_laser},
|
||||||
{"target_help", SP_target_help},
|
{"target_help", SP_target_help},
|
||||||
|
{"target_actor", SP_target_actor},
|
||||||
{"target_lightramp", SP_target_lightramp},
|
{"target_lightramp", SP_target_lightramp},
|
||||||
{"target_earthquake", SP_target_earthquake},
|
{"target_earthquake", SP_target_earthquake},
|
||||||
{"target_music", SP_target_music},
|
{"target_music", SP_target_music},
|
||||||
|
@ -299,6 +300,7 @@ static spawn_t spawns[] = {
|
||||||
{"misc_banner", SP_misc_banner},
|
{"misc_banner", SP_misc_banner},
|
||||||
{"misc_ctf_banner", SP_misc_ctf_banner},
|
{"misc_ctf_banner", SP_misc_ctf_banner},
|
||||||
{"misc_ctf_small_banner", SP_misc_ctf_small_banner},
|
{"misc_ctf_small_banner", SP_misc_ctf_small_banner},
|
||||||
|
{"misc_actor", SP_misc_actor},
|
||||||
{"misc_satellite_dish", SP_misc_satellite_dish},
|
{"misc_satellite_dish", SP_misc_satellite_dish},
|
||||||
{"misc_gib_arm", SP_misc_gib_arm},
|
{"misc_gib_arm", SP_misc_gib_arm},
|
||||||
{"misc_gib_leg", SP_misc_gib_leg},
|
{"misc_gib_leg", SP_misc_gib_leg},
|
||||||
|
|
671
src/game/monster/actor/actor.c
Normal file
671
src/game/monster/actor/actor.c
Normal file
|
@ -0,0 +1,671 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 1997-2001 Id Software, Inc.
|
||||||
|
* Copyright (c) ZeniMax Media Inc.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or (at
|
||||||
|
* your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
*
|
||||||
|
* See the GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||||
|
* 02111-1307, USA.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "../../header/local.h"
|
||||||
|
#include "actor.h"
|
||||||
|
|
||||||
|
#define MAX_ACTOR_NAMES 8
|
||||||
|
char *actor_names[MAX_ACTOR_NAMES] =
|
||||||
|
{
|
||||||
|
"Hellrot",
|
||||||
|
"Tokay",
|
||||||
|
"Killme",
|
||||||
|
"Disruptor",
|
||||||
|
"Adrianator",
|
||||||
|
"Rambear",
|
||||||
|
"Titus",
|
||||||
|
"Bitterman"
|
||||||
|
};
|
||||||
|
|
||||||
|
static mframe_t actor_frames_stand [] =
|
||||||
|
{
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL},
|
||||||
|
{ai_stand, 0, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
mmove_t actor_move_stand = {
|
||||||
|
FRAME_stand101,
|
||||||
|
FRAME_stand140,
|
||||||
|
actor_frames_stand,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
void actor_stand (edict_t *self)
|
||||||
|
{
|
||||||
|
self->monsterinfo.currentmove = &actor_move_stand;
|
||||||
|
|
||||||
|
// randomize on startup
|
||||||
|
if (level.time < 1.0)
|
||||||
|
{
|
||||||
|
self->s.frame = self->monsterinfo.currentmove->firstframe + (rand() % (self->monsterinfo.currentmove->lastframe - self->monsterinfo.currentmove->firstframe + 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static mframe_t actor_frames_walk [] =
|
||||||
|
{
|
||||||
|
{ai_walk, 0, NULL},
|
||||||
|
{ai_walk, 6, NULL},
|
||||||
|
{ai_walk, 10, NULL},
|
||||||
|
{ai_walk, 3, NULL},
|
||||||
|
{ai_walk, 2, NULL},
|
||||||
|
{ai_walk, 7, NULL},
|
||||||
|
{ai_walk, 10, NULL},
|
||||||
|
{ai_walk, 1, NULL},
|
||||||
|
{ai_walk, 4, NULL},
|
||||||
|
{ai_walk, 0, NULL},
|
||||||
|
{ai_walk, 0, NULL}
|
||||||
|
};
|
||||||
|
mmove_t actor_move_walk = {
|
||||||
|
FRAME_walk01,
|
||||||
|
FRAME_walk08,
|
||||||
|
actor_frames_walk,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
void actor_walk (edict_t *self)
|
||||||
|
{
|
||||||
|
self->monsterinfo.currentmove = &actor_move_walk;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static mframe_t actor_frames_run [] =
|
||||||
|
{
|
||||||
|
{ai_run, 4, NULL},
|
||||||
|
{ai_run, 15, NULL},
|
||||||
|
{ai_run, 15, NULL},
|
||||||
|
{ai_run, 8, NULL},
|
||||||
|
{ai_run, 20, NULL},
|
||||||
|
{ai_run, 15, NULL},
|
||||||
|
{ai_run, 8, NULL},
|
||||||
|
{ai_run, 17, NULL},
|
||||||
|
{ai_run, 12, NULL},
|
||||||
|
{ai_run, -2, NULL},
|
||||||
|
{ai_run, -2, NULL},
|
||||||
|
{ai_run, -1, NULL}
|
||||||
|
};
|
||||||
|
mmove_t actor_move_run = {FRAME_run02, FRAME_run07, actor_frames_run, NULL};
|
||||||
|
|
||||||
|
void actor_run (edict_t *self)
|
||||||
|
{
|
||||||
|
if ((level.time < self->pain_debounce_time) && (!self->enemy))
|
||||||
|
{
|
||||||
|
if (self->movetarget)
|
||||||
|
{
|
||||||
|
actor_walk(self);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
actor_stand(self);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (self->monsterinfo.aiflags & AI_STAND_GROUND)
|
||||||
|
{
|
||||||
|
actor_stand(self);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
self->monsterinfo.currentmove = &actor_move_run;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static mframe_t actor_frames_pain1 [] =
|
||||||
|
{
|
||||||
|
{ai_move, -5, NULL},
|
||||||
|
{ai_move, 4, NULL},
|
||||||
|
{ai_move, 1, NULL}
|
||||||
|
};
|
||||||
|
mmove_t actor_move_pain1 = {
|
||||||
|
FRAME_pain101,
|
||||||
|
FRAME_pain103,
|
||||||
|
actor_frames_pain1,
|
||||||
|
actor_run
|
||||||
|
};
|
||||||
|
|
||||||
|
static mframe_t actor_frames_pain2 [] =
|
||||||
|
{
|
||||||
|
{ai_move, -4, NULL},
|
||||||
|
{ai_move, 4, NULL},
|
||||||
|
{ai_move, 0, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
mmove_t actor_move_pain2 = {
|
||||||
|
FRAME_pain201,
|
||||||
|
FRAME_pain203,
|
||||||
|
actor_frames_pain2,
|
||||||
|
actor_run
|
||||||
|
};
|
||||||
|
|
||||||
|
static mframe_t actor_frames_pain3 [] =
|
||||||
|
{
|
||||||
|
{ai_move, -1, NULL},
|
||||||
|
{ai_move, 1, NULL},
|
||||||
|
{ai_move, 0, NULL}
|
||||||
|
};
|
||||||
|
mmove_t actor_move_pain3 = {
|
||||||
|
FRAME_pain301,
|
||||||
|
FRAME_pain303,
|
||||||
|
actor_frames_pain3,
|
||||||
|
actor_run
|
||||||
|
};
|
||||||
|
|
||||||
|
static mframe_t actor_frames_flipoff [] =
|
||||||
|
{
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL}
|
||||||
|
};
|
||||||
|
mmove_t actor_move_flipoff = {
|
||||||
|
FRAME_flip01,
|
||||||
|
FRAME_flip14,
|
||||||
|
actor_frames_flipoff,
|
||||||
|
actor_run
|
||||||
|
};
|
||||||
|
|
||||||
|
static mframe_t actor_frames_taunt [] =
|
||||||
|
{
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL},
|
||||||
|
{ai_turn, 0, NULL}
|
||||||
|
};
|
||||||
|
mmove_t actor_move_taunt = {
|
||||||
|
FRAME_taunt01,
|
||||||
|
FRAME_taunt17,
|
||||||
|
actor_frames_taunt,
|
||||||
|
actor_run
|
||||||
|
};
|
||||||
|
|
||||||
|
char *messages[] =
|
||||||
|
{
|
||||||
|
"Watch it",
|
||||||
|
"#$@*&",
|
||||||
|
"Idiot",
|
||||||
|
"Check your targets"
|
||||||
|
};
|
||||||
|
|
||||||
|
void actor_pain (edict_t *self, edict_t *other, float kick, int damage)
|
||||||
|
{
|
||||||
|
int n;
|
||||||
|
|
||||||
|
if (self->health < (self->max_health / 2))
|
||||||
|
self->s.skinnum = 1;
|
||||||
|
|
||||||
|
if (level.time < self->pain_debounce_time)
|
||||||
|
return;
|
||||||
|
|
||||||
|
self->pain_debounce_time = level.time + 3;
|
||||||
|
// gi.sound (self, CHAN_VOICE, actor.sound_pain, 1, ATTN_NORM, 0);
|
||||||
|
|
||||||
|
if ((other->client) && (random() < 0.4))
|
||||||
|
{
|
||||||
|
vec3_t v;
|
||||||
|
char *name;
|
||||||
|
|
||||||
|
VectorSubtract (other->s.origin, self->s.origin, v);
|
||||||
|
self->ideal_yaw = vectoyaw (v);
|
||||||
|
if (random() < 0.5)
|
||||||
|
self->monsterinfo.currentmove = &actor_move_flipoff;
|
||||||
|
else
|
||||||
|
self->monsterinfo.currentmove = &actor_move_taunt;
|
||||||
|
name = actor_names[(self - g_edicts)%MAX_ACTOR_NAMES];
|
||||||
|
gi.cprintf (other, PRINT_CHAT, "%s: %s!\n", name, messages[rand()%3]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
n = rand() % 3;
|
||||||
|
if (n == 0)
|
||||||
|
self->monsterinfo.currentmove = &actor_move_pain1;
|
||||||
|
else if (n == 1)
|
||||||
|
self->monsterinfo.currentmove = &actor_move_pain2;
|
||||||
|
else
|
||||||
|
self->monsterinfo.currentmove = &actor_move_pain3;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void actorMachineGun (edict_t *self)
|
||||||
|
{
|
||||||
|
vec3_t start, target;
|
||||||
|
vec3_t forward, right;
|
||||||
|
|
||||||
|
AngleVectors (self->s.angles, forward, right, NULL);
|
||||||
|
G_ProjectSource (self->s.origin, monster_flash_offset[MZ2_ACTOR_MACHINEGUN_1], forward, right, start);
|
||||||
|
if (self->enemy)
|
||||||
|
{
|
||||||
|
if (self->enemy->health > 0)
|
||||||
|
{
|
||||||
|
VectorMA (self->enemy->s.origin, -0.2, self->enemy->velocity, target);
|
||||||
|
target[2] += self->enemy->viewheight;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
VectorCopy (self->enemy->absmin, target);
|
||||||
|
target[2] += (self->enemy->size[2] / 2);
|
||||||
|
}
|
||||||
|
VectorSubtract (target, start, forward);
|
||||||
|
VectorNormalize (forward);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
AngleVectors (self->s.angles, forward, NULL, NULL);
|
||||||
|
}
|
||||||
|
monster_fire_bullet (self, start, forward, 3, 4, DEFAULT_BULLET_HSPREAD, DEFAULT_BULLET_VSPREAD, MZ2_ACTOR_MACHINEGUN_1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void actor_dead (edict_t *self)
|
||||||
|
{
|
||||||
|
VectorSet (self->mins, -16, -16, -24);
|
||||||
|
VectorSet (self->maxs, 16, 16, -8);
|
||||||
|
self->movetype = MOVETYPE_TOSS;
|
||||||
|
self->svflags |= SVF_DEADMONSTER;
|
||||||
|
self->nextthink = 0;
|
||||||
|
gi.linkentity (self);
|
||||||
|
}
|
||||||
|
|
||||||
|
static mframe_t actor_frames_death1 [] =
|
||||||
|
{
|
||||||
|
{ai_move, 0, NULL},
|
||||||
|
{ai_move, 0, NULL},
|
||||||
|
{ai_move, -13, NULL},
|
||||||
|
{ai_move, 14, NULL},
|
||||||
|
{ai_move, 3, NULL},
|
||||||
|
{ai_move, -2, NULL},
|
||||||
|
{ai_move, 1, NULL}
|
||||||
|
};
|
||||||
|
mmove_t actor_move_death1 = {
|
||||||
|
FRAME_death101,
|
||||||
|
FRAME_death107,
|
||||||
|
actor_frames_death1,
|
||||||
|
actor_dead
|
||||||
|
};
|
||||||
|
|
||||||
|
static mframe_t actor_frames_death2 [] =
|
||||||
|
{
|
||||||
|
{ai_move, 0, NULL},
|
||||||
|
{ai_move, 7, NULL},
|
||||||
|
{ai_move, -6, NULL},
|
||||||
|
{ai_move, -5, NULL},
|
||||||
|
{ai_move, 1, NULL},
|
||||||
|
{ai_move, 0, NULL},
|
||||||
|
{ai_move, -1, NULL},
|
||||||
|
{ai_move, -2, NULL},
|
||||||
|
{ai_move, -1, NULL},
|
||||||
|
{ai_move, -9, NULL},
|
||||||
|
{ai_move, -13, NULL},
|
||||||
|
{ai_move, -13, NULL},
|
||||||
|
{ai_move, 0, NULL}
|
||||||
|
};
|
||||||
|
mmove_t actor_move_death2 = {
|
||||||
|
FRAME_death201,
|
||||||
|
FRAME_death213,
|
||||||
|
actor_frames_death2,
|
||||||
|
actor_dead
|
||||||
|
};
|
||||||
|
|
||||||
|
void actor_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point)
|
||||||
|
{
|
||||||
|
int n;
|
||||||
|
|
||||||
|
// check for gib
|
||||||
|
if (self->health <= -80)
|
||||||
|
{
|
||||||
|
// gi.sound (self, CHAN_VOICE, actor.sound_gib, 1, ATTN_NORM, 0);
|
||||||
|
for (n= 0; n < 2; n++)
|
||||||
|
ThrowGib (self, "models/objects/gibs/bone/tris.md2", damage, GIB_ORGANIC);
|
||||||
|
for (n= 0; n < 4; n++)
|
||||||
|
ThrowGib (self, "models/objects/gibs/sm_meat/tris.md2", damage, GIB_ORGANIC);
|
||||||
|
ThrowHead (self, "models/objects/gibs/head2/tris.md2", damage, GIB_ORGANIC);
|
||||||
|
self->deadflag = DEAD_DEAD;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (self->deadflag == DEAD_DEAD)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// regular death
|
||||||
|
// gi.sound (self, CHAN_VOICE, actor.sound_die, 1, ATTN_NORM, 0);
|
||||||
|
self->deadflag = DEAD_DEAD;
|
||||||
|
self->takedamage = DAMAGE_YES;
|
||||||
|
|
||||||
|
n = rand() % 2;
|
||||||
|
if (n == 0)
|
||||||
|
self->monsterinfo.currentmove = &actor_move_death1;
|
||||||
|
else
|
||||||
|
self->monsterinfo.currentmove = &actor_move_death2;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void actor_fire (edict_t *self)
|
||||||
|
{
|
||||||
|
actorMachineGun (self);
|
||||||
|
|
||||||
|
if (level.time >= self->monsterinfo.pausetime)
|
||||||
|
self->monsterinfo.aiflags &= ~AI_HOLD_FRAME;
|
||||||
|
else
|
||||||
|
self->monsterinfo.aiflags |= AI_HOLD_FRAME;
|
||||||
|
}
|
||||||
|
|
||||||
|
static mframe_t actor_frames_attack [] =
|
||||||
|
{
|
||||||
|
{ai_charge, -2, actor_fire},
|
||||||
|
{ai_charge, -2, NULL},
|
||||||
|
{ai_charge, 3, NULL},
|
||||||
|
{ai_charge, 2, NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
mmove_t actor_move_attack = {
|
||||||
|
FRAME_attak01,
|
||||||
|
FRAME_attak04,
|
||||||
|
actor_frames_attack,
|
||||||
|
actor_run
|
||||||
|
};
|
||||||
|
|
||||||
|
void actor_attack(edict_t *self)
|
||||||
|
{
|
||||||
|
int n;
|
||||||
|
|
||||||
|
self->monsterinfo.currentmove = &actor_move_attack;
|
||||||
|
n = (rand() & 15) + 3 + 7;
|
||||||
|
self->monsterinfo.pausetime = level.time + n * FRAMETIME;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void actor_use (edict_t *self, edict_t *other, edict_t *activator)
|
||||||
|
{
|
||||||
|
vec3_t v;
|
||||||
|
|
||||||
|
self->goalentity = self->movetarget = G_PickTarget(self->target);
|
||||||
|
if ((!self->movetarget) || (strcmp(self->movetarget->classname, "target_actor") != 0))
|
||||||
|
{
|
||||||
|
gi.dprintf ("%s has bad target %s at %s\n", self->classname, self->target, vtos(self->s.origin));
|
||||||
|
self->target = NULL;
|
||||||
|
self->monsterinfo.pausetime = 100000000;
|
||||||
|
self->monsterinfo.stand (self);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
VectorSubtract (self->goalentity->s.origin, self->s.origin, v);
|
||||||
|
self->ideal_yaw = self->s.angles[YAW] = vectoyaw(v);
|
||||||
|
self->monsterinfo.walk (self);
|
||||||
|
self->target = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*QUAKED misc_actor (1 .5 0) (-16 -16 -24) (16 16 32)
|
||||||
|
*/
|
||||||
|
|
||||||
|
void SP_misc_actor (edict_t *self)
|
||||||
|
{
|
||||||
|
if (deathmatch->value)
|
||||||
|
{
|
||||||
|
G_FreeEdict (self);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!self->targetname)
|
||||||
|
{
|
||||||
|
gi.dprintf("untargeted %s at %s\n", self->classname, vtos(self->s.origin));
|
||||||
|
G_FreeEdict (self);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!self->target)
|
||||||
|
{
|
||||||
|
gi.dprintf("%s with no target at %s\n", self->classname, vtos(self->s.origin));
|
||||||
|
G_FreeEdict (self);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
self->movetype = MOVETYPE_STEP;
|
||||||
|
self->solid = SOLID_BBOX;
|
||||||
|
self->s.modelindex = gi.modelindex("players/male/tris.md2");
|
||||||
|
VectorSet (self->mins, -16, -16, -24);
|
||||||
|
VectorSet (self->maxs, 16, 16, 32);
|
||||||
|
|
||||||
|
if (!self->health)
|
||||||
|
self->health = 100;
|
||||||
|
self->mass = 200;
|
||||||
|
|
||||||
|
self->pain = actor_pain;
|
||||||
|
self->die = actor_die;
|
||||||
|
|
||||||
|
self->monsterinfo.stand = actor_stand;
|
||||||
|
self->monsterinfo.walk = actor_walk;
|
||||||
|
self->monsterinfo.run = actor_run;
|
||||||
|
self->monsterinfo.attack = actor_attack;
|
||||||
|
self->monsterinfo.melee = NULL;
|
||||||
|
self->monsterinfo.sight = NULL;
|
||||||
|
|
||||||
|
self->monsterinfo.aiflags |= AI_GOOD_GUY;
|
||||||
|
|
||||||
|
gi.linkentity (self);
|
||||||
|
|
||||||
|
self->monsterinfo.currentmove = &actor_move_stand;
|
||||||
|
self->monsterinfo.scale = MODEL_SCALE;
|
||||||
|
|
||||||
|
walkmonster_start (self);
|
||||||
|
|
||||||
|
// actors always start in a dormant state, they *must* be used to get going
|
||||||
|
self->use = actor_use;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*QUAKED target_actor (.5 .3 0) (-8 -8 -8) (8 8 8) JUMP SHOOT ATTACK x HOLD BRUTAL
|
||||||
|
JUMP jump in set direction upon reaching this target
|
||||||
|
SHOOT take a single shot at the pathtarget
|
||||||
|
ATTACK attack pathtarget until it or actor is dead
|
||||||
|
|
||||||
|
"target" next target_actor
|
||||||
|
"pathtarget" target of any action to be taken at this point
|
||||||
|
"wait" amount of time actor should pause at this point
|
||||||
|
"message" actor will "say" this to the player
|
||||||
|
|
||||||
|
for JUMP only:
|
||||||
|
"speed" speed thrown forward (default 200)
|
||||||
|
"height" speed thrown upwards (default 200)
|
||||||
|
*/
|
||||||
|
|
||||||
|
void target_actor_touch (edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf)
|
||||||
|
{
|
||||||
|
vec3_t v;
|
||||||
|
|
||||||
|
if (other->movetarget != self)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (other->enemy)
|
||||||
|
return;
|
||||||
|
|
||||||
|
other->goalentity = other->movetarget = NULL;
|
||||||
|
|
||||||
|
if (self->message)
|
||||||
|
{
|
||||||
|
int n;
|
||||||
|
edict_t *ent;
|
||||||
|
|
||||||
|
for (n = 1; n <= game.maxclients; n++)
|
||||||
|
{
|
||||||
|
ent = &g_edicts[n];
|
||||||
|
if (!ent->inuse)
|
||||||
|
continue;
|
||||||
|
gi.cprintf (ent, PRINT_CHAT, "%s: %s\n", actor_names[(other - g_edicts)%MAX_ACTOR_NAMES], self->message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (self->spawnflags & 1) //jump
|
||||||
|
{
|
||||||
|
other->velocity[0] = self->movedir[0] * self->speed;
|
||||||
|
other->velocity[1] = self->movedir[1] * self->speed;
|
||||||
|
|
||||||
|
if (other->groundentity)
|
||||||
|
{
|
||||||
|
other->groundentity = NULL;
|
||||||
|
other->velocity[2] = self->movedir[2];
|
||||||
|
gi.sound(other, CHAN_VOICE, gi.soundindex("player/male/jump1.wav"), 1, ATTN_NORM, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (self->spawnflags & 2) //shoot
|
||||||
|
{
|
||||||
|
}
|
||||||
|
else if (self->spawnflags & 4) //attack
|
||||||
|
{
|
||||||
|
other->enemy = G_PickTarget(self->pathtarget);
|
||||||
|
if (other->enemy)
|
||||||
|
{
|
||||||
|
other->goalentity = other->enemy;
|
||||||
|
if (self->spawnflags & 32)
|
||||||
|
other->monsterinfo.aiflags |= AI_BRUTAL;
|
||||||
|
if (self->spawnflags & 16)
|
||||||
|
{
|
||||||
|
other->monsterinfo.aiflags |= AI_STAND_GROUND;
|
||||||
|
actor_stand (other);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
actor_run (other);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!(self->spawnflags & 6) && (self->pathtarget))
|
||||||
|
{
|
||||||
|
char *savetarget;
|
||||||
|
|
||||||
|
savetarget = self->target;
|
||||||
|
self->target = self->pathtarget;
|
||||||
|
G_UseTargets (self, other);
|
||||||
|
self->target = savetarget;
|
||||||
|
}
|
||||||
|
|
||||||
|
other->movetarget = G_PickTarget(self->target);
|
||||||
|
|
||||||
|
if (!other->goalentity)
|
||||||
|
other->goalentity = other->movetarget;
|
||||||
|
|
||||||
|
if (!other->movetarget && !other->enemy)
|
||||||
|
{
|
||||||
|
other->monsterinfo.pausetime = level.time + 100000000;
|
||||||
|
other->monsterinfo.stand (other);
|
||||||
|
}
|
||||||
|
else if (other->movetarget == other->goalentity)
|
||||||
|
{
|
||||||
|
VectorSubtract (other->movetarget->s.origin, other->s.origin, v);
|
||||||
|
other->ideal_yaw = vectoyaw (v);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SP_target_actor (edict_t *self)
|
||||||
|
{
|
||||||
|
if (!self->targetname)
|
||||||
|
{
|
||||||
|
gi.dprintf ("%s with no targetname at %s\n",
|
||||||
|
self->classname, vtos(self->s.origin));
|
||||||
|
}
|
||||||
|
|
||||||
|
self->solid = SOLID_TRIGGER;
|
||||||
|
self->touch = target_actor_touch;
|
||||||
|
VectorSet (self->mins, -8, -8, -8);
|
||||||
|
VectorSet (self->maxs, 8, 8, 8);
|
||||||
|
self->svflags = SVF_NOCLIENT;
|
||||||
|
|
||||||
|
if (self->spawnflags & 1)
|
||||||
|
{
|
||||||
|
if (!self->speed)
|
||||||
|
self->speed = 200;
|
||||||
|
if (!st.height)
|
||||||
|
st.height = 200;
|
||||||
|
if (self->s.angles[YAW] == 0)
|
||||||
|
self->s.angles[YAW] = 360;
|
||||||
|
G_SetMovedir (self->s.angles, self->movedir);
|
||||||
|
self->movedir[2] = st.height;
|
||||||
|
}
|
||||||
|
|
||||||
|
gi.linkentity (self);
|
||||||
|
}
|
505
src/game/monster/actor/actor.h
Normal file
505
src/game/monster/actor/actor.h
Normal file
|
@ -0,0 +1,505 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 1997-2001 Id Software, Inc.
|
||||||
|
* Copyright (c) ZeniMax Media Inc.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or (at
|
||||||
|
* your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
*
|
||||||
|
* See the GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||||
|
* 02111-1307, USA.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define FRAME_attak01 0
|
||||||
|
#define FRAME_attak02 1
|
||||||
|
#define FRAME_attak03 2
|
||||||
|
#define FRAME_attak04 3
|
||||||
|
#define FRAME_death101 4
|
||||||
|
#define FRAME_death102 5
|
||||||
|
#define FRAME_death103 6
|
||||||
|
#define FRAME_death104 7
|
||||||
|
#define FRAME_death105 8
|
||||||
|
#define FRAME_death106 9
|
||||||
|
#define FRAME_death107 10
|
||||||
|
#define FRAME_death201 11
|
||||||
|
#define FRAME_death202 12
|
||||||
|
#define FRAME_death203 13
|
||||||
|
#define FRAME_death204 14
|
||||||
|
#define FRAME_death205 15
|
||||||
|
#define FRAME_death206 16
|
||||||
|
#define FRAME_death207 17
|
||||||
|
#define FRAME_death208 18
|
||||||
|
#define FRAME_death209 19
|
||||||
|
#define FRAME_death210 20
|
||||||
|
#define FRAME_death211 21
|
||||||
|
#define FRAME_death212 22
|
||||||
|
#define FRAME_death213 23
|
||||||
|
#define FRAME_death301 24
|
||||||
|
#define FRAME_death302 25
|
||||||
|
#define FRAME_death303 26
|
||||||
|
#define FRAME_death304 27
|
||||||
|
#define FRAME_death305 28
|
||||||
|
#define FRAME_death306 29
|
||||||
|
#define FRAME_death307 30
|
||||||
|
#define FRAME_death308 31
|
||||||
|
#define FRAME_death309 32
|
||||||
|
#define FRAME_death310 33
|
||||||
|
#define FRAME_death311 34
|
||||||
|
#define FRAME_death312 35
|
||||||
|
#define FRAME_death313 36
|
||||||
|
#define FRAME_death314 37
|
||||||
|
#define FRAME_death315 38
|
||||||
|
#define FRAME_flip01 39
|
||||||
|
#define FRAME_flip02 40
|
||||||
|
#define FRAME_flip03 41
|
||||||
|
#define FRAME_flip04 42
|
||||||
|
#define FRAME_flip05 43
|
||||||
|
#define FRAME_flip06 44
|
||||||
|
#define FRAME_flip07 45
|
||||||
|
#define FRAME_flip08 46
|
||||||
|
#define FRAME_flip09 47
|
||||||
|
#define FRAME_flip10 48
|
||||||
|
#define FRAME_flip11 49
|
||||||
|
#define FRAME_flip12 50
|
||||||
|
#define FRAME_flip13 51
|
||||||
|
#define FRAME_flip14 52
|
||||||
|
#define FRAME_grenad01 53
|
||||||
|
#define FRAME_grenad02 54
|
||||||
|
#define FRAME_grenad03 55
|
||||||
|
#define FRAME_grenad04 56
|
||||||
|
#define FRAME_grenad05 57
|
||||||
|
#define FRAME_grenad06 58
|
||||||
|
#define FRAME_grenad07 59
|
||||||
|
#define FRAME_grenad08 60
|
||||||
|
#define FRAME_grenad09 61
|
||||||
|
#define FRAME_grenad10 62
|
||||||
|
#define FRAME_grenad11 63
|
||||||
|
#define FRAME_grenad12 64
|
||||||
|
#define FRAME_grenad13 65
|
||||||
|
#define FRAME_grenad14 66
|
||||||
|
#define FRAME_grenad15 67
|
||||||
|
#define FRAME_jump01 68
|
||||||
|
#define FRAME_jump02 69
|
||||||
|
#define FRAME_jump03 70
|
||||||
|
#define FRAME_jump04 71
|
||||||
|
#define FRAME_jump05 72
|
||||||
|
#define FRAME_jump06 73
|
||||||
|
#define FRAME_pain101 74
|
||||||
|
#define FRAME_pain102 75
|
||||||
|
#define FRAME_pain103 76
|
||||||
|
#define FRAME_pain201 77
|
||||||
|
#define FRAME_pain202 78
|
||||||
|
#define FRAME_pain203 79
|
||||||
|
#define FRAME_pain301 80
|
||||||
|
#define FRAME_pain302 81
|
||||||
|
#define FRAME_pain303 82
|
||||||
|
#define FRAME_push01 83
|
||||||
|
#define FRAME_push02 84
|
||||||
|
#define FRAME_push03 85
|
||||||
|
#define FRAME_push04 86
|
||||||
|
#define FRAME_push05 87
|
||||||
|
#define FRAME_push06 88
|
||||||
|
#define FRAME_push07 89
|
||||||
|
#define FRAME_push08 90
|
||||||
|
#define FRAME_push09 91
|
||||||
|
#define FRAME_run01 92
|
||||||
|
#define FRAME_run02 93
|
||||||
|
#define FRAME_run03 94
|
||||||
|
#define FRAME_run04 95
|
||||||
|
#define FRAME_run05 96
|
||||||
|
#define FRAME_run06 97
|
||||||
|
#define FRAME_run07 98
|
||||||
|
#define FRAME_run08 99
|
||||||
|
#define FRAME_run09 100
|
||||||
|
#define FRAME_run10 101
|
||||||
|
#define FRAME_run11 102
|
||||||
|
#define FRAME_run12 103
|
||||||
|
#define FRAME_runs01 104
|
||||||
|
#define FRAME_runs02 105
|
||||||
|
#define FRAME_runs03 106
|
||||||
|
#define FRAME_runs04 107
|
||||||
|
#define FRAME_runs05 108
|
||||||
|
#define FRAME_runs06 109
|
||||||
|
#define FRAME_runs07 110
|
||||||
|
#define FRAME_runs08 111
|
||||||
|
#define FRAME_runs09 112
|
||||||
|
#define FRAME_runs10 113
|
||||||
|
#define FRAME_runs11 114
|
||||||
|
#define FRAME_runs12 115
|
||||||
|
#define FRAME_salute01 116
|
||||||
|
#define FRAME_salute02 117
|
||||||
|
#define FRAME_salute03 118
|
||||||
|
#define FRAME_salute04 119
|
||||||
|
#define FRAME_salute05 120
|
||||||
|
#define FRAME_salute06 121
|
||||||
|
#define FRAME_salute07 122
|
||||||
|
#define FRAME_salute08 123
|
||||||
|
#define FRAME_salute09 124
|
||||||
|
#define FRAME_salute10 125
|
||||||
|
#define FRAME_salute11 126
|
||||||
|
#define FRAME_salute12 127
|
||||||
|
#define FRAME_stand101 128
|
||||||
|
#define FRAME_stand102 129
|
||||||
|
#define FRAME_stand103 130
|
||||||
|
#define FRAME_stand104 131
|
||||||
|
#define FRAME_stand105 132
|
||||||
|
#define FRAME_stand106 133
|
||||||
|
#define FRAME_stand107 134
|
||||||
|
#define FRAME_stand108 135
|
||||||
|
#define FRAME_stand109 136
|
||||||
|
#define FRAME_stand110 137
|
||||||
|
#define FRAME_stand111 138
|
||||||
|
#define FRAME_stand112 139
|
||||||
|
#define FRAME_stand113 140
|
||||||
|
#define FRAME_stand114 141
|
||||||
|
#define FRAME_stand115 142
|
||||||
|
#define FRAME_stand116 143
|
||||||
|
#define FRAME_stand117 144
|
||||||
|
#define FRAME_stand118 145
|
||||||
|
#define FRAME_stand119 146
|
||||||
|
#define FRAME_stand120 147
|
||||||
|
#define FRAME_stand121 148
|
||||||
|
#define FRAME_stand122 149
|
||||||
|
#define FRAME_stand123 150
|
||||||
|
#define FRAME_stand124 151
|
||||||
|
#define FRAME_stand125 152
|
||||||
|
#define FRAME_stand126 153
|
||||||
|
#define FRAME_stand127 154
|
||||||
|
#define FRAME_stand128 155
|
||||||
|
#define FRAME_stand129 156
|
||||||
|
#define FRAME_stand130 157
|
||||||
|
#define FRAME_stand131 158
|
||||||
|
#define FRAME_stand132 159
|
||||||
|
#define FRAME_stand133 160
|
||||||
|
#define FRAME_stand134 161
|
||||||
|
#define FRAME_stand135 162
|
||||||
|
#define FRAME_stand136 163
|
||||||
|
#define FRAME_stand137 164
|
||||||
|
#define FRAME_stand138 165
|
||||||
|
#define FRAME_stand139 166
|
||||||
|
#define FRAME_stand140 167
|
||||||
|
#define FRAME_stand201 168
|
||||||
|
#define FRAME_stand202 169
|
||||||
|
#define FRAME_stand203 170
|
||||||
|
#define FRAME_stand204 171
|
||||||
|
#define FRAME_stand205 172
|
||||||
|
#define FRAME_stand206 173
|
||||||
|
#define FRAME_stand207 174
|
||||||
|
#define FRAME_stand208 175
|
||||||
|
#define FRAME_stand209 176
|
||||||
|
#define FRAME_stand210 177
|
||||||
|
#define FRAME_stand211 178
|
||||||
|
#define FRAME_stand212 179
|
||||||
|
#define FRAME_stand213 180
|
||||||
|
#define FRAME_stand214 181
|
||||||
|
#define FRAME_stand215 182
|
||||||
|
#define FRAME_stand216 183
|
||||||
|
#define FRAME_stand217 184
|
||||||
|
#define FRAME_stand218 185
|
||||||
|
#define FRAME_stand219 186
|
||||||
|
#define FRAME_stand220 187
|
||||||
|
#define FRAME_stand221 188
|
||||||
|
#define FRAME_stand222 189
|
||||||
|
#define FRAME_stand223 190
|
||||||
|
#define FRAME_swim01 191
|
||||||
|
#define FRAME_swim02 192
|
||||||
|
#define FRAME_swim03 193
|
||||||
|
#define FRAME_swim04 194
|
||||||
|
#define FRAME_swim05 195
|
||||||
|
#define FRAME_swim06 196
|
||||||
|
#define FRAME_swim07 197
|
||||||
|
#define FRAME_swim08 198
|
||||||
|
#define FRAME_swim09 199
|
||||||
|
#define FRAME_swim10 200
|
||||||
|
#define FRAME_swim11 201
|
||||||
|
#define FRAME_swim12 202
|
||||||
|
#define FRAME_sw_atk01 203
|
||||||
|
#define FRAME_sw_atk02 204
|
||||||
|
#define FRAME_sw_atk03 205
|
||||||
|
#define FRAME_sw_atk04 206
|
||||||
|
#define FRAME_sw_atk05 207
|
||||||
|
#define FRAME_sw_atk06 208
|
||||||
|
#define FRAME_sw_pan01 209
|
||||||
|
#define FRAME_sw_pan02 210
|
||||||
|
#define FRAME_sw_pan03 211
|
||||||
|
#define FRAME_sw_pan04 212
|
||||||
|
#define FRAME_sw_pan05 213
|
||||||
|
#define FRAME_sw_std01 214
|
||||||
|
#define FRAME_sw_std02 215
|
||||||
|
#define FRAME_sw_std03 216
|
||||||
|
#define FRAME_sw_std04 217
|
||||||
|
#define FRAME_sw_std05 218
|
||||||
|
#define FRAME_sw_std06 219
|
||||||
|
#define FRAME_sw_std07 220
|
||||||
|
#define FRAME_sw_std08 221
|
||||||
|
#define FRAME_sw_std09 222
|
||||||
|
#define FRAME_sw_std10 223
|
||||||
|
#define FRAME_sw_std11 224
|
||||||
|
#define FRAME_sw_std12 225
|
||||||
|
#define FRAME_sw_std13 226
|
||||||
|
#define FRAME_sw_std14 227
|
||||||
|
#define FRAME_sw_std15 228
|
||||||
|
#define FRAME_sw_std16 229
|
||||||
|
#define FRAME_sw_std17 230
|
||||||
|
#define FRAME_sw_std18 231
|
||||||
|
#define FRAME_sw_std19 232
|
||||||
|
#define FRAME_sw_std20 233
|
||||||
|
#define FRAME_taunt01 234
|
||||||
|
#define FRAME_taunt02 235
|
||||||
|
#define FRAME_taunt03 236
|
||||||
|
#define FRAME_taunt04 237
|
||||||
|
#define FRAME_taunt05 238
|
||||||
|
#define FRAME_taunt06 239
|
||||||
|
#define FRAME_taunt07 240
|
||||||
|
#define FRAME_taunt08 241
|
||||||
|
#define FRAME_taunt09 242
|
||||||
|
#define FRAME_taunt10 243
|
||||||
|
#define FRAME_taunt11 244
|
||||||
|
#define FRAME_taunt12 245
|
||||||
|
#define FRAME_taunt13 246
|
||||||
|
#define FRAME_taunt14 247
|
||||||
|
#define FRAME_taunt15 248
|
||||||
|
#define FRAME_taunt16 249
|
||||||
|
#define FRAME_taunt17 250
|
||||||
|
#define FRAME_walk01 251
|
||||||
|
#define FRAME_walk02 252
|
||||||
|
#define FRAME_walk03 253
|
||||||
|
#define FRAME_walk04 254
|
||||||
|
#define FRAME_walk05 255
|
||||||
|
#define FRAME_walk06 256
|
||||||
|
#define FRAME_walk07 257
|
||||||
|
#define FRAME_walk08 258
|
||||||
|
#define FRAME_walk09 259
|
||||||
|
#define FRAME_walk10 260
|
||||||
|
#define FRAME_walk11 261
|
||||||
|
#define FRAME_wave01 262
|
||||||
|
#define FRAME_wave02 263
|
||||||
|
#define FRAME_wave03 264
|
||||||
|
#define FRAME_wave04 265
|
||||||
|
#define FRAME_wave05 266
|
||||||
|
#define FRAME_wave06 267
|
||||||
|
#define FRAME_wave07 268
|
||||||
|
#define FRAME_wave08 269
|
||||||
|
#define FRAME_wave09 270
|
||||||
|
#define FRAME_wave10 271
|
||||||
|
#define FRAME_wave11 272
|
||||||
|
#define FRAME_wave12 273
|
||||||
|
#define FRAME_wave13 274
|
||||||
|
#define FRAME_wave14 275
|
||||||
|
#define FRAME_wave15 276
|
||||||
|
#define FRAME_wave16 277
|
||||||
|
#define FRAME_wave17 278
|
||||||
|
#define FRAME_wave18 279
|
||||||
|
#define FRAME_wave19 280
|
||||||
|
#define FRAME_wave20 281
|
||||||
|
#define FRAME_wave21 282
|
||||||
|
#define FRAME_bl_atk01 283
|
||||||
|
#define FRAME_bl_atk02 284
|
||||||
|
#define FRAME_bl_atk03 285
|
||||||
|
#define FRAME_bl_atk04 286
|
||||||
|
#define FRAME_bl_atk05 287
|
||||||
|
#define FRAME_bl_atk06 288
|
||||||
|
#define FRAME_bl_flp01 289
|
||||||
|
#define FRAME_bl_flp02 290
|
||||||
|
#define FRAME_bl_flp13 291
|
||||||
|
#define FRAME_bl_flp14 292
|
||||||
|
#define FRAME_bl_flp15 293
|
||||||
|
#define FRAME_bl_jmp01 294
|
||||||
|
#define FRAME_bl_jmp02 295
|
||||||
|
#define FRAME_bl_jmp03 296
|
||||||
|
#define FRAME_bl_jmp04 297
|
||||||
|
#define FRAME_bl_jmp05 298
|
||||||
|
#define FRAME_bl_jmp06 299
|
||||||
|
#define FRAME_bl_pn101 300
|
||||||
|
#define FRAME_bl_pn102 301
|
||||||
|
#define FRAME_bl_pn103 302
|
||||||
|
#define FRAME_bl_pn201 303
|
||||||
|
#define FRAME_bl_pn202 304
|
||||||
|
#define FRAME_bl_pn203 305
|
||||||
|
#define FRAME_bl_pn301 306
|
||||||
|
#define FRAME_bl_pn302 307
|
||||||
|
#define FRAME_bl_pn303 308
|
||||||
|
#define FRAME_bl_psh08 309
|
||||||
|
#define FRAME_bl_psh09 310
|
||||||
|
#define FRAME_bl_run01 311
|
||||||
|
#define FRAME_bl_run02 312
|
||||||
|
#define FRAME_bl_run03 313
|
||||||
|
#define FRAME_bl_run04 314
|
||||||
|
#define FRAME_bl_run05 315
|
||||||
|
#define FRAME_bl_run06 316
|
||||||
|
#define FRAME_bl_run07 317
|
||||||
|
#define FRAME_bl_run08 318
|
||||||
|
#define FRAME_bl_run09 319
|
||||||
|
#define FRAME_bl_run10 320
|
||||||
|
#define FRAME_bl_run11 321
|
||||||
|
#define FRAME_bl_run12 322
|
||||||
|
#define FRAME_bl_rns03 323
|
||||||
|
#define FRAME_bl_rns04 324
|
||||||
|
#define FRAME_bl_rns05 325
|
||||||
|
#define FRAME_bl_rns06 326
|
||||||
|
#define FRAME_bl_rns07 327
|
||||||
|
#define FRAME_bl_rns08 328
|
||||||
|
#define FRAME_bl_rns09 329
|
||||||
|
#define FRAME_bl_sal10 330
|
||||||
|
#define FRAME_bl_sal11 331
|
||||||
|
#define FRAME_bl_sal12 332
|
||||||
|
#define FRAME_bl_std01 333
|
||||||
|
#define FRAME_bl_std02 334
|
||||||
|
#define FRAME_bl_std03 335
|
||||||
|
#define FRAME_bl_std04 336
|
||||||
|
#define FRAME_bl_std05 337
|
||||||
|
#define FRAME_bl_std06 338
|
||||||
|
#define FRAME_bl_std07 339
|
||||||
|
#define FRAME_bl_std08 340
|
||||||
|
#define FRAME_bl_std09 341
|
||||||
|
#define FRAME_bl_std10 342
|
||||||
|
#define FRAME_bl_std11 343
|
||||||
|
#define FRAME_bl_std12 344
|
||||||
|
#define FRAME_bl_std13 345
|
||||||
|
#define FRAME_bl_std14 346
|
||||||
|
#define FRAME_bl_std15 347
|
||||||
|
#define FRAME_bl_std16 348
|
||||||
|
#define FRAME_bl_std17 349
|
||||||
|
#define FRAME_bl_std18 350
|
||||||
|
#define FRAME_bl_std19 351
|
||||||
|
#define FRAME_bl_std20 352
|
||||||
|
#define FRAME_bl_std21 353
|
||||||
|
#define FRAME_bl_std22 354
|
||||||
|
#define FRAME_bl_std23 355
|
||||||
|
#define FRAME_bl_std24 356
|
||||||
|
#define FRAME_bl_std25 357
|
||||||
|
#define FRAME_bl_std26 358
|
||||||
|
#define FRAME_bl_std27 359
|
||||||
|
#define FRAME_bl_std28 360
|
||||||
|
#define FRAME_bl_std29 361
|
||||||
|
#define FRAME_bl_std30 362
|
||||||
|
#define FRAME_bl_std31 363
|
||||||
|
#define FRAME_bl_std32 364
|
||||||
|
#define FRAME_bl_std33 365
|
||||||
|
#define FRAME_bl_std34 366
|
||||||
|
#define FRAME_bl_std35 367
|
||||||
|
#define FRAME_bl_std36 368
|
||||||
|
#define FRAME_bl_std37 369
|
||||||
|
#define FRAME_bl_std38 370
|
||||||
|
#define FRAME_bl_std39 371
|
||||||
|
#define FRAME_bl_std40 372
|
||||||
|
#define FRAME_bl_swm01 373
|
||||||
|
#define FRAME_bl_swm02 374
|
||||||
|
#define FRAME_bl_swm03 375
|
||||||
|
#define FRAME_bl_swm04 376
|
||||||
|
#define FRAME_bl_swm05 377
|
||||||
|
#define FRAME_bl_swm06 378
|
||||||
|
#define FRAME_bl_swm07 379
|
||||||
|
#define FRAME_bl_swm08 380
|
||||||
|
#define FRAME_bl_swm09 381
|
||||||
|
#define FRAME_bl_swm10 382
|
||||||
|
#define FRAME_bl_swm11 383
|
||||||
|
#define FRAME_bl_swm12 384
|
||||||
|
#define FRAME_bl_swk01 385
|
||||||
|
#define FRAME_bl_swk02 386
|
||||||
|
#define FRAME_bl_swk03 387
|
||||||
|
#define FRAME_bl_swk04 388
|
||||||
|
#define FRAME_bl_swk05 389
|
||||||
|
#define FRAME_bl_swk06 390
|
||||||
|
#define FRAME_bl_swp01 391
|
||||||
|
#define FRAME_bl_swp02 392
|
||||||
|
#define FRAME_bl_swp03 393
|
||||||
|
#define FRAME_bl_swp04 394
|
||||||
|
#define FRAME_bl_swp05 395
|
||||||
|
#define FRAME_bl_sws01 396
|
||||||
|
#define FRAME_bl_sws02 397
|
||||||
|
#define FRAME_bl_sws03 398
|
||||||
|
#define FRAME_bl_sws04 399
|
||||||
|
#define FRAME_bl_sws05 400
|
||||||
|
#define FRAME_bl_sws06 401
|
||||||
|
#define FRAME_bl_sws07 402
|
||||||
|
#define FRAME_bl_sws08 403
|
||||||
|
#define FRAME_bl_sws09 404
|
||||||
|
#define FRAME_bl_sws10 405
|
||||||
|
#define FRAME_bl_sws11 406
|
||||||
|
#define FRAME_bl_sws12 407
|
||||||
|
#define FRAME_bl_sws13 408
|
||||||
|
#define FRAME_bl_sws14 409
|
||||||
|
#define FRAME_bl_tau14 410
|
||||||
|
#define FRAME_bl_tau15 411
|
||||||
|
#define FRAME_bl_tau16 412
|
||||||
|
#define FRAME_bl_tau17 413
|
||||||
|
#define FRAME_bl_wlk01 414
|
||||||
|
#define FRAME_bl_wlk02 415
|
||||||
|
#define FRAME_bl_wlk03 416
|
||||||
|
#define FRAME_bl_wlk04 417
|
||||||
|
#define FRAME_bl_wlk05 418
|
||||||
|
#define FRAME_bl_wlk06 419
|
||||||
|
#define FRAME_bl_wlk07 420
|
||||||
|
#define FRAME_bl_wlk08 421
|
||||||
|
#define FRAME_bl_wlk09 422
|
||||||
|
#define FRAME_bl_wlk10 423
|
||||||
|
#define FRAME_bl_wlk11 424
|
||||||
|
#define FRAME_bl_wav19 425
|
||||||
|
#define FRAME_bl_wav20 426
|
||||||
|
#define FRAME_bl_wav21 427
|
||||||
|
#define FRAME_cr_atk01 428
|
||||||
|
#define FRAME_cr_atk02 429
|
||||||
|
#define FRAME_cr_atk03 430
|
||||||
|
#define FRAME_cr_atk04 431
|
||||||
|
#define FRAME_cr_atk05 432
|
||||||
|
#define FRAME_cr_atk06 433
|
||||||
|
#define FRAME_cr_atk07 434
|
||||||
|
#define FRAME_cr_atk08 435
|
||||||
|
#define FRAME_cr_pan01 436
|
||||||
|
#define FRAME_cr_pan02 437
|
||||||
|
#define FRAME_cr_pan03 438
|
||||||
|
#define FRAME_cr_pan04 439
|
||||||
|
#define FRAME_cr_std01 440
|
||||||
|
#define FRAME_cr_std02 441
|
||||||
|
#define FRAME_cr_std03 442
|
||||||
|
#define FRAME_cr_std04 443
|
||||||
|
#define FRAME_cr_std05 444
|
||||||
|
#define FRAME_cr_std06 445
|
||||||
|
#define FRAME_cr_std07 446
|
||||||
|
#define FRAME_cr_std08 447
|
||||||
|
#define FRAME_cr_wlk01 448
|
||||||
|
#define FRAME_cr_wlk02 449
|
||||||
|
#define FRAME_cr_wlk03 450
|
||||||
|
#define FRAME_cr_wlk04 451
|
||||||
|
#define FRAME_cr_wlk05 452
|
||||||
|
#define FRAME_cr_wlk06 453
|
||||||
|
#define FRAME_cr_wlk07 454
|
||||||
|
#define FRAME_crbl_a01 455
|
||||||
|
#define FRAME_crbl_a02 456
|
||||||
|
#define FRAME_crbl_a03 457
|
||||||
|
#define FRAME_crbl_a04 458
|
||||||
|
#define FRAME_crbl_a05 459
|
||||||
|
#define FRAME_crbl_a06 460
|
||||||
|
#define FRAME_crbl_a07 461
|
||||||
|
#define FRAME_crbl_p01 462
|
||||||
|
#define FRAME_crbl_p02 463
|
||||||
|
#define FRAME_crbl_p03 464
|
||||||
|
#define FRAME_crbl_p04 465
|
||||||
|
#define FRAME_crbl_s01 466
|
||||||
|
#define FRAME_crbl_s02 467
|
||||||
|
#define FRAME_crbl_s03 468
|
||||||
|
#define FRAME_crbl_s04 469
|
||||||
|
#define FRAME_crbl_s05 470
|
||||||
|
#define FRAME_crbl_s06 471
|
||||||
|
#define FRAME_crbl_s07 472
|
||||||
|
#define FRAME_crbl_s08 473
|
||||||
|
#define FRAME_crbl_w01 474
|
||||||
|
#define FRAME_crbl_w02 475
|
||||||
|
#define FRAME_crbl_w03 476
|
||||||
|
#define FRAME_crbl_w04 477
|
||||||
|
#define FRAME_crbl_w05 478
|
||||||
|
#define FRAME_crbl_w06 479
|
||||||
|
#define FRAME_crbl_w07 480
|
||||||
|
|
||||||
|
#define MODEL_SCALE 1.000000
|
Loading…
Reference in a new issue