This commit is contained in:
parent
d96d66810b
commit
a427c0efd8
6 changed files with 220 additions and 47 deletions
|
@ -144,7 +144,7 @@ ACTOR_SPONGEBOB_OPTS := -t:24,1,1 -s:256
|
|||
ACTOR_NPC :=
|
||||
ACTOR_NPC_OPTS := -t:25,1,1 -s:256
|
||||
|
||||
ACTOR_ENEMY := CLAM SHARKSUB
|
||||
ACTOR_ENEMY := SHARKSUB CLAM
|
||||
ACTOR_ENEMY_OPTS := -t:12,4,1 -s:256
|
||||
|
||||
ACTORS_LIST := ACTOR_SPONGEBOB ACTOR_NPC ACTOR_ENEMY
|
||||
|
|
|
@ -23,6 +23,10 @@
|
|||
#include "player\player.h"
|
||||
#endif
|
||||
|
||||
#ifndef __ANIM_CLAM_HEADER__
|
||||
#include <ACTOR_CLAM_ANIM.h>
|
||||
#endif
|
||||
|
||||
|
||||
void CNpcEnemy::processCloseClamAttack( int _frames )
|
||||
{
|
||||
|
@ -42,6 +46,13 @@ void CNpcEnemy::processCloseClamAttack( int _frames )
|
|||
|
||||
Pos.vx += ( velocity * rcos( m_heading ) ) >> 12;
|
||||
Pos.vy += ( velocity * rsin( m_heading ) ) >> 12;
|
||||
|
||||
if ( !m_animPlaying )
|
||||
{
|
||||
m_animPlaying = true;
|
||||
m_animNo = ANIM_CLAM_CLAMSIDESNAP;
|
||||
m_frame = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -69,41 +80,17 @@ void CNpcEnemy::processCloseClamAttack( int _frames )
|
|||
}
|
||||
else
|
||||
{
|
||||
m_controlFunc = NPC_CONTROL_MOVEMENT;
|
||||
m_timerFunc = NPC_TIMER_ATTACK_DONE;
|
||||
m_timerTimer = GameState::getOneSecondInFrames();
|
||||
m_sensorFunc = NPC_SENSOR_NONE;
|
||||
if ( !m_animPlaying )
|
||||
{
|
||||
m_animPlaying = true;
|
||||
m_animNo = ANIM_CLAM_CLAMSHUT;
|
||||
m_frame = 0;
|
||||
|
||||
m_controlFunc = NPC_CONTROL_MOVEMENT;
|
||||
m_timerFunc = NPC_TIMER_ATTACK_DONE;
|
||||
m_timerTimer = GameState::getOneSecondInFrames();
|
||||
m_sensorFunc = NPC_SENSOR_NONE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CNpcEnemy::processClamRetract( int _frames )
|
||||
{
|
||||
s32 velocity;
|
||||
|
||||
// retract
|
||||
|
||||
if ( m_extension > 0 )
|
||||
{
|
||||
velocity = -_frames;
|
||||
|
||||
if ( m_extension < _frames )
|
||||
{
|
||||
velocity = m_extension - _frames;
|
||||
}
|
||||
|
||||
m_extension += velocity;
|
||||
|
||||
|
||||
Pos.vx += ( velocity * rcos( m_heading ) ) >> 12;
|
||||
Pos.vy += ( velocity * rsin( m_heading ) ) >> 12;
|
||||
}
|
||||
else
|
||||
{
|
||||
// halt clam
|
||||
|
||||
m_controlFunc = NPC_CONTROL_NONE;
|
||||
m_timerFunc = NPC_TIMER_NONE;
|
||||
m_sensorFunc = NPC_SENSOR_NONE;
|
||||
}
|
||||
}
|
|
@ -206,24 +206,25 @@ void CNpcEnemy::init()
|
|||
{
|
||||
CEnemyThing::init();
|
||||
|
||||
sActorHdr *Hdr=m_skel.Load(ACTORS_CLAM_A3D);
|
||||
m_skel.Init(Hdr);
|
||||
TPLoadTex(ACTORS_ACTOR_ENEMY_TEX);
|
||||
m_skel.setAnimDatabase(CAnimDB::Load(ACTORS_CLAM_ABK));
|
||||
m_type = NPC_SUB_SHARK;
|
||||
|
||||
sActorHdr *Hdr = m_skel.Load( m_data[m_type].skelType );
|
||||
m_skel.Init( Hdr );
|
||||
TPLoadTex( ACTORS_ACTOR_ENEMY_TEX );
|
||||
m_skel.setAnimDatabase( CAnimDB::Load( m_data[m_type].animData ) );
|
||||
m_skel.setAng(1024);
|
||||
|
||||
// temporary
|
||||
m_animNo = 0;
|
||||
m_animPlaying = true;
|
||||
m_animNo = m_data[m_type].initAnim;
|
||||
m_frame = 0;
|
||||
|
||||
m_type = NPC_CLAM;
|
||||
|
||||
m_heading = m_fireHeading = 0;
|
||||
m_movementTimer = 0;
|
||||
m_timerTimer = 0;
|
||||
m_velocity = 0;
|
||||
m_extension = 0;
|
||||
m_rotation = 0;
|
||||
m_reversed = false;
|
||||
|
||||
m_extension = EXTEND_RIGHT;
|
||||
|
||||
|
@ -459,6 +460,32 @@ void CNpcEnemy::think(int _frames)
|
|||
|
||||
detectCollisionWithPlayer();
|
||||
|
||||
if ( m_animPlaying )
|
||||
{
|
||||
int frameCount = m_skel.getFrameCount();
|
||||
|
||||
if ( frameCount - m_frame > _frames )
|
||||
{
|
||||
m_frame += _frames;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_frame = frameCount;
|
||||
m_animPlaying = false;
|
||||
}
|
||||
}
|
||||
|
||||
if ( m_heading > 1024 && m_heading < 3072 )
|
||||
{
|
||||
m_skel.setAng( 3072 );
|
||||
m_reversed = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_skel.setAng( 1024 );
|
||||
m_reversed = false;
|
||||
}
|
||||
|
||||
switch ( this->m_controlFunc )
|
||||
{
|
||||
case NPC_CONTROL_NONE:
|
||||
|
@ -1130,7 +1157,15 @@ void CNpcEnemy::render()
|
|||
renderPos.vx = ( Pos.vx - offset.vx - ( VidGetScrW() >> 1 ) ) * 20;
|
||||
renderPos.vy = ( Pos.vy - offset.vy - ( VidGetScrH() >> 1 ) ) * 20;
|
||||
|
||||
m_skel.setZAng( m_heading );
|
||||
if ( m_reversed )
|
||||
{
|
||||
m_skel.setZAng( ( m_heading + 2048 ) & 4095 );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_skel.setZAng( m_heading );
|
||||
}
|
||||
|
||||
m_skel.setPos( renderPos );
|
||||
m_skel.setFrame(m_frame);
|
||||
m_skel.setAnimNo(m_animNo);
|
||||
|
|
|
@ -321,6 +321,9 @@ protected:
|
|||
|
||||
typedef struct NPC_DATA_TYPE
|
||||
{
|
||||
FileEquate skelType;
|
||||
FileEquate animData;
|
||||
u16 initAnim;
|
||||
NPC_INIT_FUNC initFunc;
|
||||
NPC_SENSOR_FUNC sensorFunc;
|
||||
NPC_MOVEMENT_FUNC movementFunc;
|
||||
|
@ -371,7 +374,6 @@ protected:
|
|||
// clam functions
|
||||
|
||||
void processCloseClamAttack( int _frames );
|
||||
void processClamRetract( int _frames );
|
||||
|
||||
// spider crab functions
|
||||
|
||||
|
@ -472,6 +474,8 @@ protected:
|
|||
DVECTOR m_base;
|
||||
u8 m_state;
|
||||
u8 m_salvoCount;
|
||||
bool m_animPlaying;
|
||||
bool m_reversed;
|
||||
|
||||
int m_frame;
|
||||
int m_animNo;
|
||||
|
|
|
@ -19,6 +19,14 @@
|
|||
#include "player\player.h"
|
||||
#endif
|
||||
|
||||
#ifndef __ANIM_CLAM_HEADER__
|
||||
#include <ACTOR_CLAM_ANIM.h>
|
||||
#endif
|
||||
|
||||
#ifndef __ANIM_SHARKSUB_HEADER__
|
||||
#include <ACTOR_SHARKSUB_ANIM.h>
|
||||
#endif
|
||||
|
||||
|
||||
CNpcFriend::NPC_FRIEND_DATA CNpcFriend::m_data[NPC_FRIEND_UNIT_TYPE_MAX] =
|
||||
{
|
||||
|
@ -54,6 +62,9 @@ CNpcFriend::NPC_FRIEND_DATA CNpcFriend::m_data[NPC_FRIEND_UNIT_TYPE_MAX] =
|
|||
CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
||||
{
|
||||
{ // NPC_FALLING_ITEM
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_DEFAULT,
|
||||
NPC_SENSOR_FALLING_ITEM_USER_CLOSE,
|
||||
NPC_MOVEMENT_STATIC,
|
||||
|
@ -68,6 +79,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_FISH_HOOK
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_FISH_HOOK,
|
||||
NPC_SENSOR_FISH_HOOK_USER_CLOSE,
|
||||
NPC_MOVEMENT_STATIC,
|
||||
|
@ -82,6 +96,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_DUST_DEVIL
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_RETURNING_HAZARD,
|
||||
NPC_SENSOR_NONE,
|
||||
NPC_MOVEMENT_RETURNING_HAZARD,
|
||||
|
@ -96,6 +113,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_PENDULUM
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_PENDULUM,
|
||||
NPC_SENSOR_NONE,
|
||||
NPC_MOVEMENT_PENDULUM,
|
||||
|
@ -110,6 +130,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_FIREBALL
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_FIREBALL,
|
||||
NPC_SENSOR_NONE,
|
||||
NPC_MOVEMENT_FIREBALL,
|
||||
|
@ -124,6 +147,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_SAW_BLADE
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_RETURNING_HAZARD,
|
||||
NPC_SENSOR_NONE,
|
||||
NPC_MOVEMENT_RETURNING_HAZARD,
|
||||
|
@ -138,6 +164,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_LINEAR_PLATFORM
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_DEFAULT,
|
||||
NPC_SENSOR_NONE,
|
||||
NPC_MOVEMENT_FIXED_PATH,
|
||||
|
@ -152,6 +181,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_CIRCULAR_PLATFORM
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_CIRCULAR_PLATFORM,
|
||||
NPC_SENSOR_NONE,
|
||||
NPC_MOVEMENT_FIXED_CIRCULAR,
|
||||
|
@ -166,6 +198,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_SMALL_JELLYFISH_1
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_DEFAULT,
|
||||
NPC_SENSOR_JELLYFISH_USER_CLOSE,
|
||||
NPC_MOVEMENT_FIXED_PATH,
|
||||
|
@ -180,6 +215,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_SMALL_JELLYFISH_2
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_DEFAULT,
|
||||
NPC_SENSOR_JELLYFISH_USER_CLOSE,
|
||||
NPC_MOVEMENT_FIXED_PATH,
|
||||
|
@ -194,6 +232,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_ANEMONE_1
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_DEFAULT,
|
||||
NPC_SENSOR_ANEMONE_USER_CLOSE,
|
||||
NPC_MOVEMENT_STATIC,
|
||||
|
@ -208,6 +249,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_ANEMONE_2
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_DEFAULT,
|
||||
NPC_SENSOR_ANEMONE_USER_CLOSE,
|
||||
NPC_MOVEMENT_STATIC,
|
||||
|
@ -222,6 +266,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_ANEMONE_3
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_DEFAULT,
|
||||
NPC_SENSOR_ANEMONE_USER_CLOSE,
|
||||
NPC_MOVEMENT_STATIC,
|
||||
|
@ -236,6 +283,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_SKELETAL_FISH
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_DEFAULT,
|
||||
NPC_SENSOR_GENERIC_USER_VISIBLE,
|
||||
NPC_MOVEMENT_FIXED_PATH,
|
||||
|
@ -250,6 +300,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_CLAM
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_DEFAULT,
|
||||
NPC_SENSOR_CLAM_USER_CLOSE,
|
||||
NPC_MOVEMENT_STATIC,
|
||||
|
@ -264,6 +317,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_SQUID_DART
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_DEFAULT,
|
||||
NPC_SENSOR_NONE,
|
||||
NPC_MOVEMENT_FIXED_PATH,
|
||||
|
@ -278,6 +334,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_FISH_FOLK
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_FISH_FOLK,
|
||||
NPC_SENSOR_NONE,
|
||||
NPC_MOVEMENT_FIXED_PATH_WALK,
|
||||
|
@ -292,6 +351,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_PRICKLY_BUG
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_DEFAULT,
|
||||
NPC_SENSOR_NONE,
|
||||
NPC_MOVEMENT_FIXED_PATH_WALK,
|
||||
|
@ -306,6 +368,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_SEA_SNAKE_1
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_DEFAULT,
|
||||
NPC_SENSOR_NONE,
|
||||
NPC_MOVEMENT_FIXED_PATH,
|
||||
|
@ -320,6 +385,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_SEA_SNAKE_2
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_DEFAULT,
|
||||
NPC_SENSOR_NONE,
|
||||
NPC_MOVEMENT_FIXED_PATH,
|
||||
|
@ -334,6 +402,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_PUFFA_FISH
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_DEFAULT,
|
||||
NPC_SENSOR_NONE,
|
||||
NPC_MOVEMENT_FIXED_PATH,
|
||||
|
@ -348,6 +419,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_ANGLER_FISH
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_DEFAULT,
|
||||
NPC_SENSOR_NONE,
|
||||
NPC_MOVEMENT_FIXED_PATH,
|
||||
|
@ -362,6 +436,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_HERMIT_CRAB
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_DEFAULT,
|
||||
NPC_SENSOR_NONE,
|
||||
NPC_MOVEMENT_FIXED_PATH_WALK,
|
||||
|
@ -376,6 +453,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_MINE
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_DEFAULT,
|
||||
NPC_SENSOR_NONE,
|
||||
NPC_MOVEMENT_STATIC,
|
||||
|
@ -390,6 +470,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_BOOGER_MONSTER
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_DEFAULT,
|
||||
NPC_SENSOR_BOOGER_MONSTER_USER_CLOSE,
|
||||
NPC_MOVEMENT_STATIC,
|
||||
|
@ -404,6 +487,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_SPIDER_CRAB
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_DEFAULT,
|
||||
NPC_SENSOR_SPIDER_CRAB_USER_CLOSE,
|
||||
NPC_MOVEMENT_FIXED_PATH_WALK,
|
||||
|
@ -418,6 +504,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_EYEBALL
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_DEFAULT,
|
||||
NPC_SENSOR_EYEBALL_USER_CLOSE,
|
||||
NPC_MOVEMENT_STATIC,
|
||||
|
@ -432,6 +521,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_BABY_OCTOPUS
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_DEFAULT,
|
||||
NPC_SENSOR_NONE,
|
||||
NPC_MOVEMENT_FIXED_PATH,
|
||||
|
@ -446,6 +538,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_ZOMBIE_FISH_FOLK
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_FISH_FOLK,
|
||||
NPC_SENSOR_NONE,
|
||||
NPC_MOVEMENT_FIXED_PATH_WALK,
|
||||
|
@ -460,6 +555,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_NINJA_STARFISH
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_DEFAULT,
|
||||
NPC_SENSOR_NINJA_STARFISH_USER_CLOSE,
|
||||
NPC_MOVEMENT_STATIC,
|
||||
|
@ -474,6 +572,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_GHOST
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_DEFAULT,
|
||||
NPC_SENSOR_NONE,
|
||||
NPC_MOVEMENT_FIXED_PATH,
|
||||
|
@ -488,6 +589,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_GHOST_PIRATE
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_GHOST_PIRATE,
|
||||
NPC_SENSOR_GHOST_PIRATE_USER_CLOSE,
|
||||
NPC_MOVEMENT_STATIC,
|
||||
|
@ -502,6 +606,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_FLAMING_SKULL
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_FLAMING_SKULL,
|
||||
NPC_SENSOR_FLAMING_SKULL_USER_CLOSE,
|
||||
NPC_MOVEMENT_STATIC,
|
||||
|
@ -516,6 +623,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_SHARK_MAN
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_DEFAULT,
|
||||
NPC_SENSOR_GENERIC_USER_VISIBLE,
|
||||
NPC_MOVEMENT_FIXED_PATH_WALK,
|
||||
|
@ -530,6 +640,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_OIL_BLOB
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_DEFAULT,
|
||||
NPC_SENSOR_OIL_BLOB_USER_CLOSE,
|
||||
NPC_MOVEMENT_STATIC,
|
||||
|
@ -544,6 +657,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_SKULL_STOMPER
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_SKULL_STOMPER,
|
||||
NPC_SENSOR_SKULL_STOMPER_USER_CLOSE,
|
||||
NPC_MOVEMENT_STATIC,
|
||||
|
@ -558,6 +674,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_MOTHER_JELLYFISH
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_MOTHER_JELLYFISH,
|
||||
NPC_SENSOR_NONE,
|
||||
NPC_MOVEMENT_MOTHER_JELLYFISH,
|
||||
|
@ -572,6 +691,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_SUB_SHARK
|
||||
ACTORS_SHARKSUB_A3D,
|
||||
ACTORS_SHARKSUB_ABK,
|
||||
ANIM_SHARKSUB_SHARKSUBSWIM,
|
||||
NPC_INIT_SUB_SHARK,
|
||||
NPC_SENSOR_NONE,
|
||||
NPC_MOVEMENT_SUB_SHARK,
|
||||
|
@ -580,12 +702,15 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
NPC_TIMER_NONE,
|
||||
false,
|
||||
3,
|
||||
256,
|
||||
64,
|
||||
false,
|
||||
DAMAGE__HIT_ENEMY,
|
||||
},
|
||||
|
||||
{ // NPC_FLYING_DUTCHMAN
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_FLYING_DUTCHMAN,
|
||||
NPC_SENSOR_NONE,
|
||||
NPC_MOVEMENT_FLYING_DUTCHMAN,
|
||||
|
@ -600,6 +725,9 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] =
|
|||
},
|
||||
|
||||
{ // NPC_IRON_DOGFISH
|
||||
ACTORS_CLAM_A3D,
|
||||
ACTORS_CLAM_ABK,
|
||||
ANIM_CLAM_CLAMSHUT,
|
||||
NPC_INIT_IRON_DOGFISH,
|
||||
NPC_SENSOR_IRON_DOGFISH_USER_CLOSE,
|
||||
NPC_MOVEMENT_IRON_DOGFISH,
|
||||
|
|
|
@ -27,8 +27,20 @@
|
|||
#include "projectl\projectl.h"
|
||||
#endif
|
||||
|
||||
#ifndef __ANIM_SHARKSUB_HEADER__
|
||||
#include <ACTOR_SHARKSUB_ANIM.h>
|
||||
#endif
|
||||
|
||||
|
||||
void CNpcEnemy::processSubSharkMovement( int _frames )
|
||||
{
|
||||
if ( !m_animPlaying )
|
||||
{
|
||||
m_animPlaying = true;
|
||||
m_animNo = ANIM_SHARKSUB_SHARKSUBSWIM;
|
||||
m_frame = 0;
|
||||
}
|
||||
|
||||
if ( m_timerTimer <= 0 )
|
||||
{
|
||||
if ( m_salvoCount > 0 )
|
||||
|
@ -86,6 +98,13 @@ void CNpcEnemy::processSubSharkMovement( int _frames )
|
|||
|
||||
void CNpcEnemy::processCloseSubSharkAttack( int _frames )
|
||||
{
|
||||
if ( !m_animPlaying )
|
||||
{
|
||||
m_animPlaying = true;
|
||||
m_animNo = ANIM_SHARKSUB_SHARKSUBCHOMP;
|
||||
m_frame = 0;
|
||||
}
|
||||
|
||||
if ( playerXDist > 0 )
|
||||
{
|
||||
m_extendDir = EXTEND_RIGHT;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue