diff --git a/source/player/player.cpp b/source/player/player.cpp index d30d0b505..981f2657f 100644 --- a/source/player/player.cpp +++ b/source/player/player.cpp @@ -768,10 +768,10 @@ if(PadGetDown(0)&PAD_TRIANGLE) // Only do the weapon change stuff on the first frame. As the buttons pressed do not // change over these frames there is no point in doing it every frame - if(i==0) + if(i==0&&m_currentPlayerModeClass->getState()!=STATE_CELEBRATE) { -m_tryingToManuallyPickupWeapon=false; -m_tryingToAutomaticallyPickupWeapon=false; + m_tryingToManuallyPickupWeapon=false; + m_tryingToAutomaticallyPickupWeapon=false; // Weapon collect/drop/swap stuff.. if(m_currentMode==PLAYER_MODE_BASICUNARMED) diff --git a/source/player/pmodes.cpp b/source/player/pmodes.cpp index da3177886..f448b3a67 100644 --- a/source/player/pmodes.cpp +++ b/source/player/pmodes.cpp @@ -462,18 +462,27 @@ const struct PlayerMetrics *CPlayerModeBase::getPlayerMetrics() ---------------------------------------------------------------------- */ int CPlayerModeBase::setState(int _state) { - CPlayerState *nextState; int ret=false; - nextState=getStateTable()[_state]; - if(nextState) + if(m_currentState==STATE_CELEBRATE&&_state!=STATE_IDLE) { - m_player->resetPlayerCollisionSizeToBase(); - m_currentStateClass=nextState; - m_currentStateClass->enter(this); - m_currentState=(PLAYER_STATE)_state; ret=true; } + else + { + CPlayerState *nextState; + + nextState=getStateTable()[_state]; + if(nextState) + { + m_player->resetPlayerCollisionSizeToBase(); + m_currentStateClass=nextState; + m_currentStateClass->enter(this); + m_currentState=(PLAYER_STATE)_state; + ret=true; + } + } + return ret; }