diff --git a/source/enemy/npc.cpp b/source/enemy/npc.cpp index 87e31c836..0451c044f 100644 --- a/source/enemy/npc.cpp +++ b/source/enemy/npc.cpp @@ -96,6 +96,18 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = 2048, }, + { // NPC_PENDULUM + NPC_INIT_PENDULUM, + NPC_SENSOR_NONE, + NPC_MOVEMENT_PENDULUM, + NPC_MOVEMENT_MODIFIER_NONE, + NPC_CLOSE_NONE, + NPC_TIMER_NONE, + false, + 3, + 2048, + }, + { // NPC_SMALL_JELLYFISH_1 NPC_INIT_DEFAULT, NPC_SENSOR_JELLYFISH_USER_CLOSE, @@ -471,7 +483,7 @@ CNpc::NPC_DATA CNpc::m_data[NPC_UNIT_TYPE_MAX] = void CNpc::init() { - m_type = NPC_DUST_DEVIL; + m_type = NPC_PENDULUM; m_heading = m_fireHeading = 0; m_movementTimer = 0; @@ -617,6 +629,15 @@ void CNpc::init() break; } + case NPC_INIT_PENDULUM: + { + m_extendDir = EXTEND_LEFT; + m_extension = 0; + m_heading = 1024; + + break; + } + default: break; @@ -1118,6 +1139,13 @@ void CNpc::processMovement(int _frames) break; } + case NPC_MOVEMENT_PENDULUM: + { + processPendulumMovement( _frames ); + + break; + } + default: break; diff --git a/source/enemy/npc.h b/source/enemy/npc.h index c2524e6f6..a18e9aa05 100644 --- a/source/enemy/npc.h +++ b/source/enemy/npc.h @@ -33,6 +33,7 @@ public: NPC_FALLING_ITEM = 1, NPC_FISH_HOOK, NPC_DUST_DEVIL, + NPC_PENDULUM, NPC_SMALL_JELLYFISH_1, NPC_SMALL_JELLYFISH_2, NPC_LARGE_JELLYFISH, @@ -90,6 +91,7 @@ protected: NPC_INIT_IRON_DOGFISH, NPC_INIT_FALLING_ITEM, NPC_INIT_FISH_HOOK, + NPC_INIT_PENDULUM, }; enum NPC_CONTROL_FUNC @@ -152,6 +154,7 @@ protected: NPC_MOVEMENT_SUB_SHARK, NPC_MOVEMENT_FLYING_DUTCHMAN, NPC_MOVEMENT_IRON_DOGFISH, + NPC_MOVEMENT_PENDULUM, }; enum NPC_MOVEMENT_MODIFIER_FUNC @@ -300,6 +303,7 @@ protected: void processCloseFallingItemFall( int _frames ); void processCloseFishHookRise( int _frames ); + void processPendulumMovement( int _frames ); // data