From eaca08b7e90e97a17d30dde867d4bbd38ecfa14e Mon Sep 17 00:00:00 2001 From: Sevenfm Date: Sat, 25 Jun 2016 10:24:07 +0000 Subject: [PATCH] Drop/pick up backpacks using Shift+B, Ctrl+Shift+F: - added check for DropPackFlag - added message for soldiers changing backpack status git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8260 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- Tactical/Turn Based Input.cpp | 71 +++++++++++++++++++++++++++-------- Utils/Text.h | 2 + Utils/_ChineseText.cpp | 2 + Utils/_DutchText.cpp | 2 + Utils/_EnglishText.cpp | 2 + Utils/_FrenchText.cpp | 2 + Utils/_GermanText.cpp | 2 + Utils/_ItalianText.cpp | 2 + Utils/_PolishText.cpp | 2 + Utils/_RussianText.cpp | 2 + 10 files changed, 74 insertions(+), 15 deletions(-) diff --git a/Tactical/Turn Based Input.cpp b/Tactical/Turn Based Input.cpp index 482bab3e..c5546b67 100644 --- a/Tactical/Turn Based Input.cpp +++ b/Tactical/Turn Based Input.cpp @@ -7932,39 +7932,80 @@ void HandleTBLocatePrevMerc( void ) void HandleTBDropBackpacks( void ) { - if( UsingNewInventorySystem() == true ) + //if( UsingNewInventorySystem() && gusSelectedSoldier != NOBODY ) + if( UsingNewInventorySystem() ) { + //SOLDIERTYPE *pSoldier = MercPtrs[ gusSelectedSoldier ]; SOLDIERTYPE *pTeamSoldier; - INT8 bLoop; - for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++) + UINT8 ubLoop; + + INT16 sAPCost = APBPConstants[AP_BACK_PACK]; + INT32 iBPCost = APBPConstants[BP_BACK_PACK]; + + for( ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++ ) { - //if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && pTeamSoldier->bAssignment == CurrentSquad( ) && !AM_A_ROBOT( pTeamSoldier ) && pTeamSoldier->inv[BPACKPOCKPOS].exists() == true ) - if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && OK_INTERRUPT_MERC( pTeamSoldier ) && !AM_A_ROBOT( pTeamSoldier ) && pTeamSoldier->inv[BPACKPOCKPOS].exists() == true ) - { - ChangeDropPackStatus(pTeamSoldier, TRUE); + pTeamSoldier=MercPtrs[ ubLoop ]; + + if( OK_CONTROLLABLE_MERC( pTeamSoldier ) && + OK_INTERRUPT_MERC( pTeamSoldier ) && + !AM_A_ROBOT( pTeamSoldier ) && + EnoughPoints(pTeamSoldier, sAPCost, iBPCost, FALSE) && + //pTeamSoldier->bAssignment == pSoldier->bAssignment && + pTeamSoldier->bAssignment < ON_DUTY && + pTeamSoldier->inv[BPACKPOCKPOS].exists() && + !pTeamSoldier->flags.DropPackFlag ) + { + if( ChangeDropPackStatus(pTeamSoldier, TRUE) ) + { + ScreenMsg(FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, NewInvMessage[NIV_SOLDIER_DROP], pTeamSoldier->GetName()); + } } } + fCharacterInfoPanelDirty = TRUE; fInterfacePanelDirty = DIRTYLEVEL2; - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, NewInvMessage[NIV_ALL_DROP] ); + //ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, NewInvMessage[NIV_ALL_DROP] ); } } + void HandleTBPickUpBackpacks( void ) { - if( UsingNewInventorySystem() == true ) + //if( UsingNewInventorySystem() && gusSelectedSoldier != NOBODY ) + if( UsingNewInventorySystem() ) { + //SOLDIERTYPE *pSoldier = MercPtrs[ gusSelectedSoldier ]; SOLDIERTYPE *pTeamSoldier; - INT8 bLoop; - for (bLoop=gTacticalStatus.Team[gbPlayerNum].bFirstID, pTeamSoldier=MercPtrs[bLoop]; bLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; bLoop++, pTeamSoldier++) + UINT8 ubLoop; + + INT16 sAPCost = APBPConstants[AP_BACK_PACK]; + INT32 iBPCost = APBPConstants[BP_BACK_PACK]; + + for( ubLoop = gTacticalStatus.Team[gbPlayerNum].bFirstID; ubLoop <= gTacticalStatus.Team[gbPlayerNum].bLastID; ubLoop++ ) { - if ( OK_CONTROLLABLE_MERC( pTeamSoldier ) && !AM_A_ROBOT( pTeamSoldier ) && pTeamSoldier->inv[BPACKPOCKPOS].exists() == false ) - { - ChangeDropPackStatus(pTeamSoldier, FALSE); + pTeamSoldier=MercPtrs[ubLoop]; + + if( OK_CONTROLLABLE_MERC( pTeamSoldier ) && + OK_INTERRUPT_MERC( pTeamSoldier ) && + !AM_A_ROBOT( pTeamSoldier ) && + EnoughPoints(pTeamSoldier, sAPCost, iBPCost, FALSE) && + //pTeamSoldier->bAssignment == pSoldier->bAssignment && + pTeamSoldier->bAssignment < ON_DUTY && + !pTeamSoldier->inv[BPACKPOCKPOS].exists() && + pTeamSoldier->flags.DropPackFlag ) + { + if( ChangeDropPackStatus(pTeamSoldier, FALSE) ) + { + ScreenMsg(FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, NewInvMessage[NIV_SOLDIER_PICKUP], pTeamSoldier->GetName()); + } } } - ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, NewInvMessage[NIV_ALL_PICKUP] ); + + fCharacterInfoPanelDirty = TRUE; + fInterfacePanelDirty = DIRTYLEVEL2; + //ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, NewInvMessage[NIV_ALL_PICKUP] ); } } + void HandleTBSoldierRun( void ) { SOLDIERTYPE *pSoldier = MercPtrs[ gusSelectedSoldier ]; diff --git a/Utils/Text.h b/Utils/Text.h index 4a0b5a32..fa640bc9 100644 --- a/Utils/Text.h +++ b/Utils/Text.h @@ -2542,6 +2542,8 @@ enum NIV_NO_CLIMB, NIV_ALL_DROP, NIV_ALL_PICKUP, + NIV_SOLDIER_DROP, + NIV_SOLDIER_PICKUP, TEXT_NUM_NIV, }; diff --git a/Utils/_ChineseText.cpp b/Utils/_ChineseText.cpp index 25ac89b6..fa98fa1f 100644 --- a/Utils/_ChineseText.cpp +++ b/Utils/_ChineseText.cpp @@ -7528,6 +7528,8 @@ STR16 NewInvMessage[] = L"装备大背包后无法爬上房顶", L"所有人的背包已放下", L"所有人已背起所属的背包", + L"%s drops backpack", + L"%s picks up backpack", }; // WANNE - MP: Multiplayer messages diff --git a/Utils/_DutchText.cpp b/Utils/_DutchText.cpp index 5587ceee..80c2a7a5 100644 --- a/Utils/_DutchText.cpp +++ b/Utils/_DutchText.cpp @@ -7536,6 +7536,8 @@ STR16 NewInvMessage[] = L"Kan beklimmen niet terwijl het dragen van een rugzak", L"All backpacks dropped", // TODO.Translate L"All owned backpacks picked up", + L"%s drops backpack", + L"%s picks up backpack", }; // WANNE - MP: Multiplayer messages diff --git a/Utils/_EnglishText.cpp b/Utils/_EnglishText.cpp index cd30cb49..f228c7aa 100644 --- a/Utils/_EnglishText.cpp +++ b/Utils/_EnglishText.cpp @@ -7524,6 +7524,8 @@ STR16 NewInvMessage[] = L"Cannot climb while wearing a backpack", L"All backpacks dropped", L"All owned backpacks picked up", + L"%s drops backpack", + L"%s picks up backpack", }; // WANNE - MP: Multiplayer messages diff --git a/Utils/_FrenchText.cpp b/Utils/_FrenchText.cpp index 5409b053..bcd22fdf 100644 --- a/Utils/_FrenchText.cpp +++ b/Utils/_FrenchText.cpp @@ -7530,6 +7530,8 @@ STR16 NewInvMessage[] = L"Ne peut pas escalader avec un sac à dos", L"Tous les sacs à dos sont posés à terre", L"Tous les sacs à dos sont ramassés", + L"%s drops backpack", + L"%s picks up backpack", }; // WANNE - MP: Multiplayer messages diff --git a/Utils/_GermanText.cpp b/Utils/_GermanText.cpp index 0bd90fd1..d65c0d25 100644 --- a/Utils/_GermanText.cpp +++ b/Utils/_GermanText.cpp @@ -7356,6 +7356,8 @@ STR16 NewInvMessage[] = L"Kann nicht beim Tragen eines Rucksacks klettern", L"All backpacks dropped", // TODO.Translate L"All owned backpacks picked up", + L"%s drops backpack", + L"%s picks up backpack", }; // WANNE - MP: Multiplayer messages diff --git a/Utils/_ItalianText.cpp b/Utils/_ItalianText.cpp index 204988c0..cfbbd627 100644 --- a/Utils/_ItalianText.cpp +++ b/Utils/_ItalianText.cpp @@ -7527,6 +7527,8 @@ STR16 NewInvMessage[] = L"Non può arrampicarsi mentre portano uno zaino", L"All backpacks dropped", // TODO.Translate L"All owned backpacks picked up", + L"%s drops backpack", + L"%s picks up backpack", }; // WANNE - MP: Multiplayer messages diff --git a/Utils/_PolishText.cpp b/Utils/_PolishText.cpp index 0af5e13e..cc17c0d6 100644 --- a/Utils/_PolishText.cpp +++ b/Utils/_PolishText.cpp @@ -7536,6 +7536,8 @@ STR16 NewInvMessage[] = L"Nie można wspinać się z plecakiem", L"All backpacks dropped", // TODO.Translate L"All owned backpacks picked up", + L"%s drops backpack", + L"%s picks up backpack", }; // WANNE - MP: Multiplayer messages diff --git a/Utils/_RussianText.cpp b/Utils/_RussianText.cpp index bad1f747..ef1f0ea1 100644 --- a/Utils/_RussianText.cpp +++ b/Utils/_RussianText.cpp @@ -7524,6 +7524,8 @@ STR16 NewInvMessage[] = L"Тяжеловато будет взбираться с полным рюкзаком на крышу. Может, снимем?", L"Все рюкзаки сброшены", L"Все рюкзаки подняты", + L"%s drops backpack", + L"%s picks up backpack", }; // WANNE - MP: Multiplayer messages