This commit is contained in:
parent
afaccf62dd
commit
d16d2ce244
9 changed files with 104 additions and 9 deletions
|
@ -281,6 +281,7 @@ player_src := demoplay \
|
|||
pmfly \
|
||||
pmjelly \
|
||||
pmnet \
|
||||
pmswal \
|
||||
psbutt \
|
||||
pscart \
|
||||
psdance \
|
||||
|
@ -293,7 +294,8 @@ player_src := demoplay \
|
|||
psjump \
|
||||
pslook \
|
||||
psrun \
|
||||
psspring
|
||||
psspring \
|
||||
psswal
|
||||
|
||||
save_src := save
|
||||
|
||||
|
|
|
@ -67,6 +67,7 @@ void CNpcSubSharkEnemy::postInit()
|
|||
|
||||
m_timerTimer = 0;
|
||||
m_salvoCount = 5;
|
||||
m_carryPlayer = false;
|
||||
m_movementTimer = GameState::getOneSecondInFrames() * ( 1 + ( ( 7 * m_health ) / m_data[m_type].initHealth ) );
|
||||
|
||||
CNpcBossEnemy::postInit();
|
||||
|
@ -240,7 +241,7 @@ void CNpcSubSharkEnemy::processMovement( int _frames )
|
|||
if ( !m_animPlaying )
|
||||
{
|
||||
m_animPlaying = true;
|
||||
m_animNo = ANIM_SHARKSUB_SWIM;
|
||||
m_animNo = ANIM_SHARKSUB_SPRINTOPEN;
|
||||
m_frame = 0;
|
||||
}
|
||||
|
||||
|
@ -276,11 +277,23 @@ void CNpcSubSharkEnemy::processMovement( int _frames )
|
|||
|
||||
case SUB_SHARK_CHARGE:
|
||||
{
|
||||
if ( !m_animPlaying )
|
||||
if ( !m_carryPlayer && abs( playerXDist ) < 200 )
|
||||
{
|
||||
m_animPlaying = true;
|
||||
m_animNo = ANIM_SHARKSUB_SWIM;
|
||||
m_frame = 0;
|
||||
if ( m_animNo != ANIM_SHARKSUB_CHOMP || !m_animPlaying )
|
||||
{
|
||||
m_animPlaying = true;
|
||||
m_animNo = ANIM_SHARKSUB_CHOMP;
|
||||
m_frame = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( !m_animPlaying )
|
||||
{
|
||||
m_animPlaying = true;
|
||||
m_animNo = ANIM_SHARKSUB_SPRINTOPEN;
|
||||
m_frame = 0;
|
||||
}
|
||||
}
|
||||
|
||||
s32 distX, distY;
|
||||
|
@ -332,10 +345,33 @@ void CNpcSubSharkEnemy::processMovement( int _frames )
|
|||
processGenericGotoTarget( _frames, distX, distY, m_speed );
|
||||
}
|
||||
|
||||
if ( m_carryPlayer )
|
||||
{
|
||||
// spit out player
|
||||
|
||||
CPlayer *player = GameScene.getPlayer();
|
||||
player->setMode( m_oldPlayerMode );
|
||||
m_carryPlayer = false;
|
||||
|
||||
DVECTOR move;
|
||||
move.vx = 16 * _frames;
|
||||
move.vy = -16 * _frames;
|
||||
|
||||
player->shove( move );
|
||||
player->setMoveVelocity( &move );
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( m_carryPlayer )
|
||||
{
|
||||
CPlayer *player = GameScene.getPlayer();
|
||||
|
||||
player->setPos( Pos );
|
||||
}
|
||||
|
||||
|
||||
/*if ( !m_animPlaying )
|
||||
{
|
||||
|
@ -705,11 +741,19 @@ void CNpcSubSharkEnemy::collidedWith(CThing *_thisThing)
|
|||
|
||||
if(playerState==ATTACK_STATE__NONE)
|
||||
{
|
||||
if ( !player->isRecoveringFromHit() )
|
||||
CPlayer *player = GameScene.getPlayer();
|
||||
|
||||
if ( !player->isRecoveringFromHit() && !m_carryPlayer )
|
||||
{
|
||||
CPlayer *player = GameScene.getPlayer();
|
||||
player->takeDamage( m_data[m_type].damageToUserType,REACT__GET_DIRECTION_FROM_THING,(CThing*)this );
|
||||
}
|
||||
|
||||
if ( m_state == SUB_SHARK_CHARGE && player->getMode() != PLAYER_MODE_SWALLOW )
|
||||
{
|
||||
m_carryPlayer = true;
|
||||
m_oldPlayerMode = player->getMode();
|
||||
player->setMode( PLAYER_MODE_SWALLOW );
|
||||
}
|
||||
}
|
||||
else if ( m_invulnerableTimer <= 0 )
|
||||
{
|
||||
|
|
|
@ -18,6 +18,10 @@
|
|||
#include "enemy\nboss.h"
|
||||
#endif
|
||||
|
||||
#ifndef __PLAYER_PLAYER_H__
|
||||
#include "player\player.h"
|
||||
#endif
|
||||
|
||||
|
||||
class CNpcSubSharkEnemy : public CNpcBossEnemy
|
||||
{
|
||||
|
@ -53,6 +57,8 @@ protected:
|
|||
u8 m_salvoCount;
|
||||
s32 m_invulnerableTimer;
|
||||
DVECTOR m_targetPos;
|
||||
u8 m_carryPlayer;
|
||||
PLAYER_MODE m_oldPlayerMode;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -74,6 +74,10 @@
|
|||
#include "player\pmcart.h"
|
||||
#endif
|
||||
|
||||
#ifndef __PLAYER_PMSWAL_H__
|
||||
#include "player\pmswal.h"
|
||||
#endif
|
||||
|
||||
#ifndef __GFX_FONT_H__
|
||||
#include "gfx\font.h"
|
||||
#endif
|
||||
|
@ -205,6 +209,7 @@ static const char *s_modeText[NUM_PLAYERMODES]=
|
|||
"DEAD",
|
||||
"FLY",
|
||||
"CART",
|
||||
"SWALLOW",
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@ -226,6 +231,7 @@ CPlayerModeJellyLauncher PLAYERMODEJELLYLAUNCHER;
|
|||
CPlayerModeDead PLAYERMODEDEAD;
|
||||
CPlayerModeFly PLAYERMODEFLY;
|
||||
CPlayerModeCart PLAYERMODECART;
|
||||
CPlayerModeSwallow PLAYERMODESWALLOW;
|
||||
|
||||
CPlayerMode *CPlayer::s_playerModes[NUM_PLAYERMODES]=
|
||||
{
|
||||
|
@ -239,6 +245,7 @@ CPlayerMode *CPlayer::s_playerModes[NUM_PLAYERMODES]=
|
|||
&PLAYERMODEDEAD, // PLAYER_MODE_DEAD
|
||||
&PLAYERMODEFLY, // PLAYER_MODE_FLY
|
||||
&PLAYERMODECART, // PLAYER_MODE_CART
|
||||
&PLAYERMODESWALLOW, // PLAYER_MODE_SWALLOW
|
||||
};
|
||||
|
||||
|
||||
|
@ -301,6 +308,7 @@ PLAYER_ADDONS s_addonNumbers[NUM_PLAYERMODES]=
|
|||
NO_ADDON, // PLAYER_MODE_DEAD
|
||||
NO_ADDON, // PLAYER_MODE_FLY
|
||||
NO_ADDON, // PLAYER_MODE_CART
|
||||
NO_ADDON, // PLAYER_MODE_SWALLOW
|
||||
};
|
||||
|
||||
s8 s_animMapNet[NUM_PLAYER_ADDONS][NUM_ANIM_SPONGEBOB]=
|
||||
|
@ -2008,7 +2016,8 @@ void CPlayer::takeDamage(DAMAGE_TYPE _damage,REACT_DIRECTION _reactDirection,CTh
|
|||
if(m_invincibleFrameCount==0&& // Don't take damage if still recovering from the last hit
|
||||
m_invincibilityRingTimer==0&& // Or if we have the invincibility ring on
|
||||
m_currentPlayerModeClass->getState()!=STATE_SOAKUP&& // Or soaking up
|
||||
m_currentMode!=PLAYER_MODE_DEAD) // Or already dead! :)
|
||||
m_currentMode!=PLAYER_MODE_DEAD &&
|
||||
m_currentMode!=PLAYER_MODE_SWALLOW) // Or already dead! :)
|
||||
{
|
||||
int ouchThatHurt=true;
|
||||
int ouchThatHurtSoMuchThatImJustGoingToDieNow=false;
|
||||
|
|
|
@ -60,6 +60,7 @@ typedef enum
|
|||
PLAYER_MODE_FLY,
|
||||
|
||||
PLAYER_MODE_CART,
|
||||
PLAYER_MODE_SWALLOW,
|
||||
|
||||
NUM_PLAYERMODES,
|
||||
}PLAYER_MODE;
|
||||
|
@ -88,6 +89,7 @@ typedef enum
|
|||
STATE_CART,
|
||||
STATE_FLOAT,
|
||||
STATE_CELEBRATE,
|
||||
STATE_SWALLOW,
|
||||
|
||||
NUM_STATES,
|
||||
}PLAYER_STATE;
|
||||
|
@ -258,6 +260,7 @@ public:
|
|||
|
||||
public:
|
||||
void setMode(PLAYER_MODE _mode);
|
||||
PLAYER_MODE getMode() {return m_currentMode;}
|
||||
int getFacing();
|
||||
void setFacing(int _facing);
|
||||
int getAnimFrame();
|
||||
|
|
|
@ -82,6 +82,10 @@
|
|||
#include "player\psdance.h"
|
||||
#endif
|
||||
|
||||
#ifndef __PLAYER_PSSWAL_H__
|
||||
#include "player\psswal.h"
|
||||
#endif
|
||||
|
||||
|
||||
/* Std Lib
|
||||
------- */
|
||||
|
@ -138,6 +142,7 @@ static CPlayerState *s_stateTable[]=
|
|||
&s_stateCart, // STATE_CART
|
||||
&s_stateFloat, // STATE_FLOAT
|
||||
&s_stateDance, // STATE_CELEBRATE
|
||||
&s_stateSwallow, // STATE_SWALLOW
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -94,6 +94,10 @@
|
|||
#include "player\psdance.h"
|
||||
#endif
|
||||
|
||||
#ifndef __PLAYER_PSSWAL_H__
|
||||
#include "player\psswal.h"
|
||||
#endif
|
||||
|
||||
|
||||
/* Std Lib
|
||||
------- */
|
||||
|
@ -150,6 +154,7 @@ static CPlayerState *s_stateTable[]=
|
|||
&s_stateCart, // STATE_CART
|
||||
&s_stateFloat, // STATE_FLOAT
|
||||
&s_stateDance, // STATE_CELEBRATE
|
||||
&s_stateSwallow, // STATE_SWALLOW
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -74,6 +74,10 @@
|
|||
#include "player\pscart.h"
|
||||
#endif
|
||||
|
||||
#ifndef __PLAYER_PSSWAL_H__
|
||||
#include "player\psswal.h"
|
||||
#endif
|
||||
|
||||
#ifndef __PLAYER_PSFLOAT_H__
|
||||
#include "player\psfloat.h"
|
||||
#endif
|
||||
|
@ -142,6 +146,7 @@ static CPlayerState *s_stateTable[]=
|
|||
&s_stateCart, // STATE_CART
|
||||
&s_stateFloat, // STATE_FLOAT
|
||||
&s_stateDance, // STATE_CELEBRATE
|
||||
&s_stateSwallow, // STATE_SWALLOW
|
||||
};
|
||||
|
||||
static PlayerMetrics s_playerMetrics=
|
||||
|
|
|
@ -1858,6 +1858,14 @@ SOURCE=..\..\..\source\player\pmodes.cpp
|
|||
|
||||
SOURCE=..\..\..\source\player\pmodes.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\source\player\pmswal.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\source\player\pmswal.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "states"
|
||||
|
||||
|
@ -1968,6 +1976,14 @@ SOURCE=..\..\..\source\player\psspring.h
|
|||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\source\player\psswal.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\source\player\psswal.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\source\player\pstates.h
|
||||
# End Source File
|
||||
# End Group
|
||||
|
|
Loading…
Add table
Reference in a new issue