diff --git a/source/player/player.cpp b/source/player/player.cpp index 99b34dc75..1dfd3ecb6 100644 --- a/source/player/player.cpp +++ b/source/player/player.cpp @@ -847,34 +847,48 @@ if(newmode!=-1) // If already armed then drop current weapon if(m_currentMode!=PLAYER_MODE_BASICUNARMED) { - static const int s_pickupsToDrop[NUM_PLAYERMODES]= + switch(m_currentPlayerModeClass->getState()) { - -1, // PLAYER_MODE_BASICUNARMED - -1, // PLAYER_MODE_FULLUNARMED - -1, // PLAYER_MODE_BALLOON - PICKUP__BUBBLE_WAND, // PLAYER_MODE_BUBBLE_MIXTURE - PICKUP__NET, // PLAYER_MODE_NET - PICKUP__CORAL_BLOWER, // PLAYER_MODE_CORALBLOWER - PICKUP__JELLY_LAUNCHER, // PLAYER_MODE_JELLY_LAUNCHER - -1, // PLAYER_MODE_DEAD - -1, // PLAYER_MODE_FLY - -1, // PLAYER_MODE_CART - -1, // PLAYER_MODE_SWALLOW - }; + case STATE_BUTTBOUNCE: + case STATE_BUTTFALL: + case STATE_BUTTLAND: + case STATE_BUTTBOUNCEUP: + break; - int pickupToDrop; - pickupToDrop=s_pickupsToDrop[m_currentMode]; - if(pickupToDrop!=-1) - { - DVECTOR pickupPos; - CBasePickup *pickup; - pickupPos.vx=Pos.vx; - pickupPos.vy=Pos.vy-30; - pickup=createPickup((PICKUP_TYPE)pickupToDrop,&pickupPos); - pickup->setPos(&pickupPos); - ((CBaseWeaponPickup*)pickup)->setHasBeenCollected(); + default: + { + static const int s_pickupsToDrop[NUM_PLAYERMODES]= + { + -1, // PLAYER_MODE_BASICUNARMED + -1, // PLAYER_MODE_FULLUNARMED + -1, // PLAYER_MODE_BALLOON + PICKUP__BUBBLE_WAND, // PLAYER_MODE_BUBBLE_MIXTURE + PICKUP__NET, // PLAYER_MODE_NET + PICKUP__CORAL_BLOWER, // PLAYER_MODE_CORALBLOWER + PICKUP__JELLY_LAUNCHER, // PLAYER_MODE_JELLY_LAUNCHER + -1, // PLAYER_MODE_DEAD + -1, // PLAYER_MODE_FLY + -1, // PLAYER_MODE_CART + -1, // PLAYER_MODE_SWALLOW + }; + + int pickupToDrop; + pickupToDrop=s_pickupsToDrop[m_currentMode]; + if(pickupToDrop!=-1) + { + DVECTOR pickupPos; + CBasePickup *pickup; + pickupPos.vx=Pos.vx; + pickupPos.vy=Pos.vy-30; + pickup=createPickup((PICKUP_TYPE)pickupToDrop,&pickupPos); + pickup->setPos(&pickupPos); + ((CBaseWeaponPickup*)pickup)->setHasBeenCollected(); + } + setMode(PLAYER_MODE_BASICUNARMED); + + break; + } } - setMode(PLAYER_MODE_BASICUNARMED); } // Now trying to pick up a weapon..