From 6a538f1ef8b8cd45d61f6e7b3db7760eb1a5aa61 Mon Sep 17 00:00:00 2001 From: Wanne Date: Fri, 6 Dec 2013 16:53:01 +0000 Subject: [PATCH] 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 --- Tactical/Handle Items.cpp | 51 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/Tactical/Handle Items.cpp b/Tactical/Handle Items.cpp index b7f57dcf8..60a6746f5 100644 --- a/Tactical/Handle Items.cpp +++ b/Tactical/Handle Items.cpp @@ -6881,10 +6881,29 @@ INT32 CheckBombDisarmChance(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[1], TacticalStr[ DISARM_DIALOG_INSPECT ] ); wcscpy( gzUserDefinedButton[2], TacticalStr[ DISARM_DIALOG_REMOVE_BLUEFLAG ] ); 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 ); } @@ -6892,16 +6911,32 @@ void ExtendedBoobyTrapMessageBoxCallBack( UINT8 ubExitValue ) { INT32 iCheckResult; 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) playerMine=TRUE; if (ubExitValue == 1) { + // this already checks AP in turnbased BoobyTrapMessageBoxCallBack(MSG_BOX_RETURN_YES); } 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(); if(iCheckResult>60) ScreenMsg( FONT_MCOLOR_WHITE, MSG_INTERFACE, TacticalStr[ INSPECT_RESULT_SAFE ] ); @@ -6916,12 +6951,26 @@ void ExtendedBoobyTrapMessageBoxCallBack( UINT8 ubExitValue ) } 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 ); - if(playerMine) + if( playerMine ) gpWorldLevelData[gsBoobyTrapGridNo].uiFlags |= MAPELEMENT_PLAYER_MINE_PRESENT; } 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 ) gRevealTripwire = TRUE; else