diff --git a/stepmania/Themes/default/Languages/en.ini b/stepmania/Themes/default/Languages/en.ini index 32f7b8fe21..5fdebb8458 100644 --- a/stepmania/Themes/default/Languages/en.ini +++ b/stepmania/Themes/default/Languages/en.ini @@ -476,6 +476,7 @@ Always=Always Animations=Animations Arcade Style=Arcade Style Ask=Ask +AttackMines=AttackMines Auto=Auto Autogen To Fill Width=Autogen To Fill Width AutosyncMachine=AutosyncMachine diff --git a/stepmania/Themes/default/metrics.ini b/stepmania/Themes/default/metrics.ini index f2fb57fb6a..fa2e72de65 100644 --- a/stepmania/Themes/default/metrics.ini +++ b/stepmania/Themes/default/metrics.ini @@ -3676,11 +3676,12 @@ Holds,3="mod,planted;name,Planted" Holds,4="mod,twister;name,Twister" Holds,5="mod,nojumps;name,NoJumps" Holds,6="mod,nohands;name,NoHands" -Mines="3" -MinesDefault="mod,no nomines,no mines" +Mines="4" +MinesDefault="mod,no nomines,no mines, no attackmines" Mines,1="mod,nomines;name,Off" Mines,2="name,On" Mines,3="mod,mines;name,Add" +Mines,4="mod,attackmines;name,AttackMines" Attacks="2" AttacksDefault="mod,no randomattacks" Attacks,1="name,Off" diff --git a/stepmania/src/Player.cpp b/stepmania/src/Player.cpp index 80962fee30..a5688c1a90 100644 --- a/stepmania/src/Player.cpp +++ b/stepmania/src/Player.cpp @@ -621,7 +621,7 @@ void Player::Update( float fDeltaTime ) Attack attRandomAttack; attRandomAttack.sModifiers = ApplyRandomAttack(); attRandomAttack.fSecsRemaining = fAttackRunTime; - m_pPlayerState->LaunchAttack( attRandomAttack); + m_pPlayerState->LaunchAttack( attRandomAttack ); } } } @@ -2326,7 +2326,24 @@ void Player::UpdateJudgedRows() else if( g_bEnableMineSoundPlayback ) setSounds.insert( &m_soundMine ); - ChangeLife( tn.result.tns ); + /* Attack Mines: + * Only difference is these launch an attack rather than affecting the lifebar. All the + * other mine impacts (score, dance points, etc.) are still applied. */ + if( m_pPlayerState->m_PlayerOptions.GetCurrent().m_bTransforms[PlayerOptions::TRANSFORM_ATTACKMINES] ) + { + // Should we hardcode this, or make it a preference/theme metric? ~ Mike + const float fAttackRunTime = 7.0f; + + Attack attMineAttack; + attMineAttack.sModifiers = ApplyRandomAttack(); + attMineAttack.fStartSecond = -1.0f; + attMineAttack.fSecsRemaining = fAttackRunTime; + + m_pPlayerState->LaunchAttack( attMineAttack ); + } + else + ChangeLife( tn.result.tns ); + if( m_pScoreDisplay ) m_pScoreDisplay->OnJudgment( tn.result.tns ); if( m_pSecondaryScoreDisplay ) diff --git a/stepmania/src/PlayerOptions.cpp b/stepmania/src/PlayerOptions.cpp index 7e92400ca5..6d486bd06a 100644 --- a/stepmania/src/PlayerOptions.cpp +++ b/stepmania/src/PlayerOptions.cpp @@ -187,6 +187,7 @@ void PlayerOptions::GetMods( vector &AddTo, bool bForceNoteSkin ) const if( m_bTransforms[TRANSFORM_BMRIZE] ) AddTo.push_back( "BMRize" ); if( m_bTransforms[TRANSFORM_SKIPPY] ) AddTo.push_back( "Skippy" ); if( m_bTransforms[TRANSFORM_MINES] ) AddTo.push_back( "Mines" ); + if( m_bTransforms[TRANSFORM_ATTACKMINES] ) AddTo.push_back( "AttackMines" ); if( m_bTransforms[TRANSFORM_ECHO] ) AddTo.push_back( "Echo" ); if( m_bTransforms[TRANSFORM_STOMP] ) AddTo.push_back( "Stomp" ); if( m_bTransforms[TRANSFORM_PLANTED] ) AddTo.push_back( "Planted" ); @@ -356,6 +357,7 @@ bool PlayerOptions::FromOneModString( const RString &sOneMod, RString &sErrorOut else if( sBit == "bmrize" ) m_bTransforms[TRANSFORM_BMRIZE] = on; else if( sBit == "skippy" ) m_bTransforms[TRANSFORM_SKIPPY] = on; else if( sBit == "mines" ) m_bTransforms[TRANSFORM_MINES] = on; + else if( sBit == "attackmines" ) m_bTransforms[TRANSFORM_ATTACKMINES] = on; else if( sBit == "echo" ) m_bTransforms[TRANSFORM_ECHO] = on; else if( sBit == "stomp" ) m_bTransforms[TRANSFORM_STOMP] = on; else if( sBit == "planted" ) m_bTransforms[TRANSFORM_PLANTED] = on; diff --git a/stepmania/src/PlayerOptions.h b/stepmania/src/PlayerOptions.h index 05b2c45641..2801927cdf 100644 --- a/stepmania/src/PlayerOptions.h +++ b/stepmania/src/PlayerOptions.h @@ -83,6 +83,7 @@ public: TRANSFORM_BMRIZE, TRANSFORM_SKIPPY, TRANSFORM_MINES, + TRANSFORM_ATTACKMINES, TRANSFORM_ECHO, TRANSFORM_STOMP, TRANSFORM_PLANTED,