diff --git a/src/items/attachment.cpp b/src/items/attachment.cpp index a4ca51aa9..c6e267261 100644 --- a/src/items/attachment.cpp +++ b/src/items/attachment.cpp @@ -111,10 +111,13 @@ void Attachment::hitBanana(Item *item, int new_attachment) { float leftover_time = 0.0f; + bool add_a_new_item = true; + switch(getType()) // If there already is an attachment, make it worse :) { case ATTACH_BOMB: { + add_a_new_item = false; projectile_manager->newExplosion(m_kart->getXYZ()); m_kart->handleExplosion(m_kart->getXYZ(), /*direct_hit*/ true); clear(); @@ -133,11 +136,11 @@ void Attachment::hitBanana(Item *item, int new_attachment) // if the kart already has an anvil, attach a new anvil, // and increase the overall time new_attachment = 2; - leftover_time = m_time_left; + leftover_time = m_time_left; break; case ATTACH_PARACHUTE: - new_attachment = 2; // anvil - leftover_time = m_time_left; + new_attachment = 2; + leftover_time = m_time_left; break; default: // There is no attachment currently, but there will be one @@ -157,30 +160,33 @@ void Attachment::hitBanana(Item *item, int new_attachment) new_attachment); } - switch (new_attachment) + if (add_a_new_item) { - case 0: - set( ATTACH_PARACHUTE,stk_config->m_parachute_time+leftover_time); - m_initial_speed = m_kart->getSpeed(); - if(m_initial_speed <= 1.5) m_initial_speed = 1.5; // if going very slowly or backwards, braking won't remove parachute - // if ( m_kart == m_kart[0] ) - // sound -> playSfx ( SOUND_SHOOMF ) ; - break ; - case 1: - set( ATTACH_BOMB, stk_config->m_bomb_time+leftover_time); - // if ( m_kart == m_kart[0] ) - // sound -> playSfx ( SOUND_SHOOMF ) ; - break ; - case 2: - set( ATTACH_ANVIL, stk_config->m_anvil_time+leftover_time); - // if ( m_kart == m_kart[0] ) - // sound -> playSfx ( SOUND_SHOOMF ) ; - // Reduce speed once (see description above), all other changes are - // handled in Kart::updatePhysics - m_kart->adjustSpeed(stk_config->m_anvil_speed_factor); - m_kart->updatedWeight(); - break ; - } // switch + switch (new_attachment) + { + case 0: + set( ATTACH_PARACHUTE,stk_config->m_parachute_time+leftover_time); + m_initial_speed = m_kart->getSpeed(); + if(m_initial_speed <= 1.5) m_initial_speed = 1.5; // if going very slowly or backwards, braking won't remove parachute + // if ( m_kart == m_kart[0] ) + // sound -> playSfx ( SOUND_SHOOMF ) ; + break ; + case 1: + set( ATTACH_BOMB, stk_config->m_bomb_time+leftover_time); + // if ( m_kart == m_kart[0] ) + // sound -> playSfx ( SOUND_SHOOMF ) ; + break ; + case 2: + set( ATTACH_ANVIL, stk_config->m_anvil_time+leftover_time); + // if ( m_kart == m_kart[0] ) + // sound -> playSfx ( SOUND_SHOOMF ) ; + // Reduce speed once (see description above), all other changes are + // handled in Kart::updatePhysics + m_kart->adjustSpeed(stk_config->m_anvil_speed_factor); + m_kart->updatedWeight(); + break ; + } // switch + } } // hitBanana //-----------------------------------------------------------------------------