Added support for turnbased mode to extended disarm dialog (by Sevenfm)

- AP/BP costs:
o Disarm: AP_DISARM_MINE, BP_DISARM_MINE
o Inspect: AP_DISARM_MINE/2, BP_DISARM_MINE/2
o Remove Blue Flag: AP_DISARM_MINE/2, BP_DISARM_MINE/2
o Blow Up: AP_DISARM_MINE/4, BP_DISARM_MINE/4
- Note: AP_DISARM_MINE value is modified if merc has ambidextrous trait.

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@6685 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Wanne
2013-12-06 16:53:01 +00:00
parent 0bae7724a0
commit 6a538f1ef8
+50 -1
View File
@@ -6881,10 +6881,29 @@ INT32 CheckBombDisarmChance(void)
void ExtendedDisarmMessageBox(void) void ExtendedDisarmMessageBox(void)
{ {
CHAR16 buf[256];
INT16 disarmAP;
disarmAP = GetAPsToDisarmMine( gpBoobyTrapSoldier );
if( (gTacticalStatus.uiFlags & TURNBASED ) && (gTacticalStatus.uiFlags & INCOMBAT) )
{
swprintf( buf, L"%s %d", TacticalStr[ DISARM_DIALOG_DISARM ], disarmAP );
wcscpy( gzUserDefinedButton[0], buf );
swprintf( buf, L"%s %d", TacticalStr[ DISARM_DIALOG_INSPECT ], disarmAP / 2 );
wcscpy( gzUserDefinedButton[1], buf );
swprintf( buf, L"%s %d", TacticalStr[ DISARM_DIALOG_REMOVE_BLUEFLAG ], disarmAP /2 );
wcscpy( gzUserDefinedButton[2], buf );
swprintf( buf, L"%s %d", TacticalStr[ DISARM_DIALOG_BLOWUP ], disarmAP /4 );
wcscpy( gzUserDefinedButton[3], buf );
}
else
{
wcscpy( gzUserDefinedButton[0], TacticalStr[ DISARM_DIALOG_DISARM ] ); wcscpy( gzUserDefinedButton[0], TacticalStr[ DISARM_DIALOG_DISARM ] );
wcscpy( gzUserDefinedButton[1], TacticalStr[ DISARM_DIALOG_INSPECT ] ); wcscpy( gzUserDefinedButton[1], TacticalStr[ DISARM_DIALOG_INSPECT ] );
wcscpy( gzUserDefinedButton[2], TacticalStr[ DISARM_DIALOG_REMOVE_BLUEFLAG ] ); wcscpy( gzUserDefinedButton[2], TacticalStr[ DISARM_DIALOG_REMOVE_BLUEFLAG ] );
wcscpy( gzUserDefinedButton[3], TacticalStr[ DISARM_DIALOG_BLOWUP ] ); wcscpy( gzUserDefinedButton[3], TacticalStr[ DISARM_DIALOG_BLOWUP ] );
}
DoMessageBox( MSG_BOX_BASIC_MEDIUM_BUTTONS, TacticalStr[ DISARM_BOOBYTRAP_PROMPT ], guiCurrentScreen, MSG_BOX_FLAG_GENERIC_FOUR_BUTTONS, ExtendedBoobyTrapMessageBoxCallBack, NULL ); DoMessageBox( MSG_BOX_BASIC_MEDIUM_BUTTONS, TacticalStr[ DISARM_BOOBYTRAP_PROMPT ], guiCurrentScreen, MSG_BOX_FLAG_GENERIC_FOUR_BUTTONS, ExtendedBoobyTrapMessageBoxCallBack, NULL );
} }
@@ -6892,16 +6911,32 @@ void ExtendedBoobyTrapMessageBoxCallBack( UINT8 ubExitValue )
{ {
INT32 iCheckResult; INT32 iCheckResult;
BOOLEAN playerMine = FALSE; BOOLEAN playerMine = FALSE;
INT16 disarmAP;
INT16 disarmBP;
BOOLEAN turnbased = FALSE;
disarmAP = GetAPsToDisarmMine( gpBoobyTrapSoldier );
disarmBP = APBPConstants[BP_DISARM_MINE];
if( (gTacticalStatus.uiFlags & TURNBASED ) && (gTacticalStatus.uiFlags & INCOMBAT) )
turnbased = TRUE;
if(gpWorldLevelData[gsBoobyTrapGridNo].uiFlags & MAPELEMENT_PLAYER_MINE_PRESENT) if(gpWorldLevelData[gsBoobyTrapGridNo].uiFlags & MAPELEMENT_PLAYER_MINE_PRESENT)
playerMine=TRUE; playerMine=TRUE;
if (ubExitValue == 1) if (ubExitValue == 1)
{ {
// this already checks AP in turnbased
BoobyTrapMessageBoxCallBack(MSG_BOX_RETURN_YES); BoobyTrapMessageBoxCallBack(MSG_BOX_RETURN_YES);
} }
else if (ubExitValue == 2) else if (ubExitValue == 2)
{ {
if( turnbased )
{
if(EnoughPoints(gpBoobyTrapSoldier, disarmAP / 2, disarmBP / 2 , TRUE))
DeductPoints(gpBoobyTrapSoldier, disarmAP /2, disarmBP /2, AFTERACTION_INTERRUPT);
else
return;
}
iCheckResult=CheckBombDisarmChance(); iCheckResult=CheckBombDisarmChance();
if(iCheckResult>60) if(iCheckResult>60)
ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[ INSPECT_RESULT_SAFE ] ); ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[ INSPECT_RESULT_SAFE ] );
@@ -6916,12 +6951,26 @@ void ExtendedBoobyTrapMessageBoxCallBack( UINT8 ubExitValue )
} }
else if (ubExitValue == 3) else if (ubExitValue == 3)
{ {
if( turnbased )
{
if(EnoughPoints(gpBoobyTrapSoldier, disarmAP / 2 , disarmBP / 2 , TRUE))
DeductPoints(gpBoobyTrapSoldier, disarmAP / 2, disarmBP / 2, AFTERACTION_INTERRUPT);
else
return;
}
RemoveBlueFlag( gsBoobyTrapGridNo, gbBoobyTrapLevel ); RemoveBlueFlag( gsBoobyTrapGridNo, gbBoobyTrapLevel );
if(playerMine) if( playerMine )
gpWorldLevelData[gsBoobyTrapGridNo].uiFlags |= MAPELEMENT_PLAYER_MINE_PRESENT; gpWorldLevelData[gsBoobyTrapGridNo].uiFlags |= MAPELEMENT_PLAYER_MINE_PRESENT;
} }
else if (ubExitValue == 4) else if (ubExitValue == 4)
{ {
if( turnbased )
{
if(EnoughPoints(gpBoobyTrapSoldier, disarmAP / 4 , disarmBP / 4 , TRUE))
DeductPoints(gpBoobyTrapSoldier, disarmAP / 4, disarmBP / 4, AFTERACTION_INTERRUPT);
else
return;
}
/* if(_KeyDown( SHIFT ) && gGameExternalOptions.bDontRevealTripwire ) /* if(_KeyDown( SHIFT ) && gGameExternalOptions.bDontRevealTripwire )
gRevealTripwire = TRUE; gRevealTripwire = TRUE;
else else