diff --git a/source/enemy/nclam.cpp b/source/enemy/nclam.cpp index c24627811..9b5c2e32c 100644 --- a/source/enemy/nclam.cpp +++ b/source/enemy/nclam.cpp @@ -164,7 +164,7 @@ void CNpcStaticClamEnemy::processClose( int _frames ) } } -void CNpcStaticClamEnemy::processShot() +void CNpcStaticClamEnemy::processShot( int _frames ) { if ( !m_isStunned ) { diff --git a/source/enemy/nclam.h b/source/enemy/nclam.h index d2fdcb64f..0834f0d50 100644 --- a/source/enemy/nclam.h +++ b/source/enemy/nclam.h @@ -36,7 +36,7 @@ public: virtual int checkCollisionAgainst(CThing *_thisThing, int _frames); protected: virtual void collidedWith(CThing *_thisThing); - virtual void processShot(); + virtual void processShot( int _frames ); virtual void processClose( int _frames ); u8 m_isStunned; diff --git a/source/enemy/npc.cpp b/source/enemy/npc.cpp index 2e5df9084..412ffd708 100644 --- a/source/enemy/npc.cpp +++ b/source/enemy/npc.cpp @@ -801,7 +801,7 @@ void CNpcEnemy::think(int _frames) break; case NPC_CONTROL_SHOT: - processShot(); + processShot( moveFrames ); break; @@ -1145,7 +1145,7 @@ void CNpcEnemy::hasBeenAttacked() //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -void CNpcEnemy::processShot() +void CNpcEnemy::processShot( int _frames ) { switch( m_data[m_type].shotFunc ) { @@ -1205,12 +1205,21 @@ void CNpcEnemy::processShot() m_frame = 0; m_state = NPC_GENERIC_HIT_DEATH_END; + if (m_data[m_type].skelType) + { + m_actorGfx->SetOtPos( 0 ); + } + break; } case NPC_GENERIC_HIT_DEATH_END: { - if ( !m_animPlaying ) + Pos.vy += 5 * _frames; + + DVECTOR offset = CLevel::getCameraPos(); + + if ( Pos.vy - offset.vy > VidGetScrH() ) { if ( m_data[m_type].respawning ) { diff --git a/source/enemy/npc.h b/source/enemy/npc.h index ee964ed55..1538c3ef0 100644 --- a/source/enemy/npc.h +++ b/source/enemy/npc.h @@ -235,7 +235,7 @@ protected: virtual bool processSensor(); virtual void processMovement( int _frames ); virtual void processMovementModifier( int _frames, s32 distX, s32 distY, s32 dist, s16 headingChange ); - virtual void processShot(); + virtual void processShot( int _frames ); virtual void processClose( int _frames ); virtual void processCollision(); virtual void processAttackCollision(); diff --git a/source/enemy/nprojjf.cpp b/source/enemy/nprojjf.cpp index 549ce7112..36929ff82 100644 --- a/source/enemy/nprojjf.cpp +++ b/source/enemy/nprojjf.cpp @@ -108,7 +108,7 @@ void CNpcSmallJellyfishProjectileEnemy::think(int _frames) break; case NPC_CONTROL_SHOT: - processShot(); + processShot( moveFrames ); break; diff --git a/source/platform/platform.h b/source/platform/platform.h index c4f668a84..18f2ce429 100644 --- a/source/platform/platform.h +++ b/source/platform/platform.h @@ -161,7 +161,6 @@ protected: bool processSensor(); virtual void processMovement( int _frames ); virtual void processLifetime( int _frames ); - void processShot(); void processClose( int _frames ); void processCollision(); virtual void processTimer( int _frames );