This commit is contained in:
Charles 2001-02-28 21:05:39 +00:00
parent d96d66810b
commit a427c0efd8
6 changed files with 220 additions and 47 deletions

View File

@ -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

View File

@ -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;
}
}

View File

@ -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);

View File

@ -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;

View File

@ -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,

View File

@ -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;