diff --git a/source/enemy/nclam.cpp b/source/enemy/nclam.cpp index 213d158e4..d7b6571cc 100644 --- a/source/enemy/nclam.cpp +++ b/source/enemy/nclam.cpp @@ -28,7 +28,7 @@ #endif -void CNpcEnemy::processCloseClamAttack( int _frames ) +void CNpcEnemy::processCloseClamJumpAttack( int _frames ) { s32 velocity; @@ -50,7 +50,7 @@ void CNpcEnemy::processCloseClamAttack( int _frames ) if ( !m_animPlaying ) { m_animPlaying = true; - m_animNo = ANIM_CLAM_CLAMSIDESNAP; + m_animNo = ANIM_CLAM_CLAMSNAPUP; m_frame = 0; } } @@ -82,10 +82,6 @@ void CNpcEnemy::processCloseClamAttack( int _frames ) { 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(); @@ -94,3 +90,15 @@ void CNpcEnemy::processCloseClamAttack( int _frames ) } } } + +void CNpcEnemy::processCloseClamSnapAttack( int _frames ) +{ + if ( !m_animPlaying ) + { + m_animPlaying = true; + m_animNo = ANIM_CLAM_CLAMSIDESNAP; + m_frame = 0; + } + + m_controlFunc = NPC_CONTROL_MOVEMENT; +} diff --git a/source/enemy/npc.cpp b/source/enemy/npc.cpp index e98767050..4133b9078 100644 --- a/source/enemy/npc.cpp +++ b/source/enemy/npc.cpp @@ -206,7 +206,7 @@ void CNpcEnemy::init() { CEnemyThing::init(); - m_type = NPC_SUB_SHARK; + m_type = NPC_CLAM_STATIC; sActorHdr *Hdr = m_skel.Load( m_data[m_type].skelType ); m_skel.Init( Hdr ); @@ -998,8 +998,13 @@ void CNpcEnemy::processClose(int _frames) break; - case NPC_CLOSE_CLAM_ATTACK: - processCloseClamAttack( _frames ); + case NPC_CLOSE_CLAM_JUMP_ATTACK: + processCloseClamJumpAttack( _frames ); + + break; + + case NPC_CLOSE_CLAM_SNAP_ATTACK: + processCloseClamSnapAttack( _frames ); break; diff --git a/source/enemy/npc.h b/source/enemy/npc.h index 9a37f0d41..6d279cce7 100644 --- a/source/enemy/npc.h +++ b/source/enemy/npc.h @@ -123,7 +123,8 @@ public: NPC_ANEMONE_2, NPC_ANEMONE_3, NPC_SKELETAL_FISH, - NPC_CLAM, + NPC_CLAM_JUMP, + NPC_CLAM_STATIC, NPC_SQUID_DART, NPC_FISH_FOLK, NPC_PRICKLY_BUG, @@ -217,7 +218,8 @@ protected: { NPC_CLOSE_NONE = 0, NPC_CLOSE_JELLYFISH_EVADE = 1, - NPC_CLOSE_CLAM_ATTACK, + NPC_CLOSE_CLAM_JUMP_ATTACK, + NPC_CLOSE_CLAM_SNAP_ATTACK, NPC_CLOSE_SPIDER_CRAB_ATTACK, NPC_CLOSE_GHOST_PIRATE_ATTACK, NPC_CLOSE_SHARK_MAN_ATTACK, @@ -373,7 +375,8 @@ protected: // clam functions - void processCloseClamAttack( int _frames ); + void processCloseClamJumpAttack( int _frames ); + void processCloseClamSnapAttack( int _frames ); // spider crab functions diff --git a/source/enemy/npcdata.cpp b/source/enemy/npcdata.cpp index d5b1c85de..89ccb8130 100644 --- a/source/enemy/npcdata.cpp +++ b/source/enemy/npcdata.cpp @@ -299,7 +299,24 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = DAMAGE__HIT_ENEMY, }, - { // NPC_CLAM + { // NPC_CLAM_JUMP + ACTORS_CLAM_A3D, + ACTORS_CLAM_ABK, + ANIM_CLAM_CLAMSNAPUP, + NPC_INIT_DEFAULT, + NPC_SENSOR_CLAM_USER_CLOSE, + NPC_MOVEMENT_STATIC, + NPC_MOVEMENT_MODIFIER_NONE, + NPC_CLOSE_CLAM_JUMP_ATTACK, + NPC_TIMER_NONE, + false, + 0, + 128, + false, + DAMAGE__HIT_ENEMY, + }, + + { // NPC_CLAM_STATIC ACTORS_CLAM_A3D, ACTORS_CLAM_ABK, ANIM_CLAM_CLAMSHUT, @@ -307,7 +324,7 @@ CNpcEnemy::NPC_DATA CNpcEnemy::m_data[NPC_UNIT_TYPE_MAX] = NPC_SENSOR_CLAM_USER_CLOSE, NPC_MOVEMENT_STATIC, NPC_MOVEMENT_MODIFIER_NONE, - NPC_CLOSE_CLAM_ATTACK, + NPC_CLOSE_CLAM_SNAP_ATTACK, NPC_TIMER_NONE, false, 0,