From cebf24fb8e5f2e13172863c1aad971ee900dc6e2 Mon Sep 17 00:00:00 2001 From: lalien Date: Sat, 13 May 2006 15:29:30 +0000 Subject: [PATCH] Little Alien New feature: Rearrange sector inventory - Press Shift+S in tactical to rearrange sector inventory - Tactical militia command: "Find Items" menu disabled - Tactical militia command: orders to dying militia now not possible git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@69 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- Strategic/Map Screen Interface.h | 2 +- Tactical/Militia Control.cpp | 275 ++++++++++++++++--------------- Tactical/Turn Based Input.cpp | 35 +++- 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, 183 insertions(+), 143 deletions(-) diff --git a/Strategic/Map Screen Interface.h b/Strategic/Map Screen Interface.h index eb28320b..bafe7b55 100644 --- a/Strategic/Map Screen Interface.h +++ b/Strategic/Map Screen Interface.h @@ -67,7 +67,7 @@ enum{ MILCON_MENU_ALL_COMETOME, MILCON_MENU_ALL_GETDOWN, MILCON_MENU_ALL_TAKE_COVER, - MILCON_MENU_ALL_TAKE_ITEMS, + //MILCON_MENU_ALL_TAKE_ITEMS, MILCON_MENU_CANCEL, MAX_MILCON_STRING_COUNT, }; diff --git a/Tactical/Militia Control.cpp b/Tactical/Militia Control.cpp index 22014f9e..139dd3cc 100644 --- a/Tactical/Militia Control.cpp +++ b/Tactical/Militia Control.cpp @@ -938,7 +938,7 @@ void HandleShadingOfLinesForMilitiaControlMenu( void ) UnShadeStringInBox( ghMilitiaControlBox, MILCON_MENU_ALL_COMETOME ); UnShadeStringInBox( ghMilitiaControlBox, MILCON_MENU_ALL_GETDOWN ); UnShadeStringInBox( ghMilitiaControlBox, MILCON_MENU_ALL_TAKE_COVER ); - UnShadeStringInBox( ghMilitiaControlBox, MILCON_MENU_ALL_TAKE_ITEMS ); + //UnShadeStringInBox( ghMilitiaControlBox, MILCON_MENU_ALL_TAKE_ITEMS ); } else { @@ -948,7 +948,7 @@ void HandleShadingOfLinesForMilitiaControlMenu( void ) ShadeStringInBox( ghMilitiaControlBox, MILCON_MENU_ALL_COMETOME ); ShadeStringInBox( ghMilitiaControlBox, MILCON_MENU_ALL_GETDOWN ); ShadeStringInBox( ghMilitiaControlBox, MILCON_MENU_ALL_TAKE_COVER ); - ShadeStringInBox( ghMilitiaControlBox, MILCON_MENU_ALL_TAKE_ITEMS ); + //ShadeStringInBox( ghMilitiaControlBox, MILCON_MENU_ALL_TAKE_ITEMS ); } return; @@ -1159,16 +1159,19 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) { case( MILCON_MENU_ATTACK ): { - // Attack !!! - - pTMilitiaSoldier->bOrders = SEEKENEMY; - pTMilitiaSoldier->bAttitude = AGGRESSIVE; - pTMilitiaSoldier->usUIMovementMode = RUNNING; - - if ( GetSoldier( &pSoldier, gusSelectedSoldier ) ) + if ( (pTMilitiaSoldier->bActive) && (pTMilitiaSoldier->bInSector) && (pTMilitiaSoldier->bLife >= OKLIFE) ) { - //ubVolume = CalcScreamVolume( pSoldier, 10 ); - MakeNoise( pSoldier->ubID, pSoldier->sGridNo, pSoldier->bLevel, pSoldier->bOverTerrainType, ubVolume, NOISE_SCREAM); + // Attack !!! + + pTMilitiaSoldier->bOrders = SEEKENEMY; + pTMilitiaSoldier->bAttitude = AGGRESSIVE; + pTMilitiaSoldier->usUIMovementMode = RUNNING; + + if ( GetSoldier( &pSoldier, gusSelectedSoldier ) ) + { + //ubVolume = CalcScreamVolume( pSoldier, 10 ); + MakeNoise( pSoldier->ubID, pSoldier->sGridNo, pSoldier->bLevel, pSoldier->bOverTerrainType, ubVolume, NOISE_SCREAM); + } } // stop showing menu @@ -1183,11 +1186,14 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) case( MILCON_MENU_HOLD ): { - //Hold Position !!! - //ScreenMsg( FONT_WHITE, MSG_INTERFACE, L"Hold Position" ); - pTMilitiaSoldier->bOrders = STATIONARY; - //pTMilitiaSoldier->bAttitude = DEFENSIVE; - + if ( (pTMilitiaSoldier->bActive) && (pTMilitiaSoldier->bInSector) && (pTMilitiaSoldier->bLife >= OKLIFE) ) + { + //Hold Position !!! + //ScreenMsg( FONT_WHITE, MSG_INTERFACE, L"Hold Position" ); + pTMilitiaSoldier->bOrders = STATIONARY; + //pTMilitiaSoldier->bAttitude = DEFENSIVE; + } + // stop showing menu fShowMilitiaControlMenu = FALSE; giAssignHighLine = -1; @@ -1200,32 +1206,34 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) case( MILCON_MENU_RETREAT ): { - INT16 sActionGridNo; - - pTMilitiaSoldier->bOrders = FARPATROL; - pTMilitiaSoldier->bAttitude = DEFENSIVE; - pTMilitiaSoldier->usUIMovementMode = RUNNING; - - // set up next action to run away - sActionGridNo = FindSpotMaxDistFromOpponents( pTMilitiaSoldier ); - - pTMilitiaSoldier->usNextActionData = sActionGridNo; - - if ( pTMilitiaSoldier->usNextActionData != NOWHERE ) + if ( (pTMilitiaSoldier->bActive) && (pTMilitiaSoldier->bInSector) && (pTMilitiaSoldier->bLife >= OKLIFE) ) { - pTMilitiaSoldier->bNextAction = AI_ACTION_RUN_AWAY; - pTMilitiaSoldier->usActionData = ANIM_STAND; + INT16 sActionGridNo; - // SEND PENDING ACTION - pTMilitiaSoldier->sPendingActionData2 = sActionGridNo; - pTMilitiaSoldier->ubPendingActionAnimCount = 0; - } - - if ( pTMilitiaSoldier->sGridNo != sActionGridNo ) - { - SendGetNewSoldierPathEvent( pTMilitiaSoldier, sActionGridNo, pTMilitiaSoldier->usUIMovementMode ); - } + pTMilitiaSoldier->bOrders = FARPATROL; + pTMilitiaSoldier->bAttitude = DEFENSIVE; + pTMilitiaSoldier->usUIMovementMode = RUNNING; + // set up next action to run away + sActionGridNo = FindSpotMaxDistFromOpponents( pTMilitiaSoldier ); + + pTMilitiaSoldier->usNextActionData = sActionGridNo; + + if ( pTMilitiaSoldier->usNextActionData != NOWHERE ) + { + pTMilitiaSoldier->bNextAction = AI_ACTION_RUN_AWAY; + pTMilitiaSoldier->usActionData = ANIM_STAND; + + // SEND PENDING ACTION + pTMilitiaSoldier->sPendingActionData2 = sActionGridNo; + pTMilitiaSoldier->ubPendingActionAnimCount = 0; + } + + if ( pTMilitiaSoldier->sGridNo != sActionGridNo ) + { + SendGetNewSoldierPathEvent( pTMilitiaSoldier, sActionGridNo, pTMilitiaSoldier->usUIMovementMode ); + } + } // stop showing menu fShowMilitiaControlMenu = FALSE; giAssignHighLine = -1; @@ -1237,35 +1245,37 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) break; case( MILCON_MENU_COMETOME ): - { - INT16 sActionGridNo, sGridNo, sAdjustedGridNo; - UINT8 ubDirection; - - if ( GetSoldier( &pSoldier, gusSelectedSoldier ) ) + { + if ( (pTMilitiaSoldier->bActive) && (pTMilitiaSoldier->bInSector) && (pTMilitiaSoldier->bLife >= OKLIFE) ) { - // OK, find an adjacent gridno.... - sGridNo = pSoldier->sGridNo; + INT16 sActionGridNo, sGridNo, sAdjustedGridNo; + UINT8 ubDirection; - // See if we can get there - sActionGridNo = FindAdjacentGridEx( pSoldier, sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); - if ( sActionGridNo != -1 ) + if ( GetSoldier( &pSoldier, gusSelectedSoldier ) ) { - // SEND PENDING ACTION - //pTMilitiaSoldier->ubPendingAction = MERC_STEAL; - pTMilitiaSoldier->sPendingActionData2 = pSoldier->sGridNo; - //pTMilitiaSoldier->bPendingActionData3 = ubDirection; - pTMilitiaSoldier->ubPendingActionAnimCount = 0; - pTMilitiaSoldier->usUIMovementMode = RUNNING; + // OK, find an adjacent gridno.... + sGridNo = pSoldier->sGridNo; - // CHECK IF WE ARE AT THIS GRIDNO NOW - if ( pTMilitiaSoldier->sGridNo != sActionGridNo ) + // See if we can get there + sActionGridNo = FindAdjacentGridEx( pSoldier, sGridNo, &ubDirection, &sAdjustedGridNo, TRUE, FALSE ); + if ( sActionGridNo != -1 ) { - // WALK UP TO DEST FIRST - SendGetNewSoldierPathEvent( pTMilitiaSoldier, sActionGridNo, pTMilitiaSoldier->usUIMovementMode ); + // SEND PENDING ACTION + //pTMilitiaSoldier->ubPendingAction = MERC_STEAL; + pTMilitiaSoldier->sPendingActionData2 = pSoldier->sGridNo; + //pTMilitiaSoldier->bPendingActionData3 = ubDirection; + pTMilitiaSoldier->ubPendingActionAnimCount = 0; + pTMilitiaSoldier->usUIMovementMode = RUNNING; + + // CHECK IF WE ARE AT THIS GRIDNO NOW + if ( pTMilitiaSoldier->sGridNo != sActionGridNo ) + { + // WALK UP TO DEST FIRST + SendGetNewSoldierPathEvent( pTMilitiaSoldier, sActionGridNo, pTMilitiaSoldier->usUIMovementMode ); + } } } } - // stop showing menu fShowMilitiaControlMenu = FALSE; giAssignHighLine = -1; @@ -1278,10 +1288,13 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) case( MILCON_MENU_GETDOWN ): { - //if ( SoldierCanAffordNewStance( pTeamSoldier, ANIM_PRONE ) ) + if ( (pTMilitiaSoldier->bActive) && (pTMilitiaSoldier->bInSector) && (pTMilitiaSoldier->bLife >= OKLIFE) ) { - SendChangeSoldierStanceEvent( pTMilitiaSoldier, ANIM_PRONE ); - //SendChangeSoldierStanceEvent( pTMilitiaSoldier, ANIM_CROUCH ); + //if ( SoldierCanAffordNewStance( pTeamSoldier, ANIM_PRONE ) ) + { + SendChangeSoldierStanceEvent( pTMilitiaSoldier, ANIM_PRONE ); + //SendChangeSoldierStanceEvent( pTMilitiaSoldier, ANIM_CROUCH ); + } } // stop showing menu @@ -1296,26 +1309,28 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) case( MILCON_MENU_TAKE_COVER ): - { - INT16 sActionGridNo; - INT32 iDummy; - - sActionGridNo = FindBestNearbyCover(pTMilitiaSoldier,pTMilitiaSoldier->bAIMorale,&iDummy); - - if ( sActionGridNo != NOWHERE ) + { + if ( (pTMilitiaSoldier->bActive) && (pTMilitiaSoldier->bInSector) && (pTMilitiaSoldier->bLife >= OKLIFE) ) { - // SEND PENDING ACTION - pTMilitiaSoldier->sPendingActionData2 = sActionGridNo; - pTMilitiaSoldier->ubPendingActionAnimCount = 0; - pTMilitiaSoldier->usUIMovementMode = RUNNING; + INT16 sActionGridNo; + INT32 iDummy; - // CHECK IF WE ARE AT THIS GRIDNO NOW - if ( pTMilitiaSoldier->sGridNo != sActionGridNo ) + sActionGridNo = FindBestNearbyCover(pTMilitiaSoldier,pTMilitiaSoldier->bAIMorale,&iDummy); + + if ( sActionGridNo != NOWHERE ) { - SendGetNewSoldierPathEvent( pTMilitiaSoldier, sActionGridNo, pTMilitiaSoldier->usUIMovementMode ); + // SEND PENDING ACTION + pTMilitiaSoldier->sPendingActionData2 = sActionGridNo; + pTMilitiaSoldier->ubPendingActionAnimCount = 0; + pTMilitiaSoldier->usUIMovementMode = RUNNING; + + // CHECK IF WE ARE AT THIS GRIDNO NOW + if ( pTMilitiaSoldier->sGridNo != sActionGridNo ) + { + SendGetNewSoldierPathEvent( pTMilitiaSoldier, sActionGridNo, pTMilitiaSoldier->usUIMovementMode ); + } } } - // stop showing menu fShowMilitiaControlMenu = FALSE; giAssignHighLine = -1; @@ -1336,7 +1351,7 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; cnt++, pTeamSoldier++) { - if ( pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bLife > 0 ) + if ( (pTeamSoldier->bActive) && (pTeamSoldier->bInSector) && (pTeamSoldier->bLife >= OKLIFE) ) { pTeamSoldier->bOrders = SEEKENEMY; pTeamSoldier->bAttitude = AGGRESSIVE; @@ -1363,7 +1378,7 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; cnt++, pTeamSoldier++) { - if ( pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bLife > 0 ) + if ( (pTeamSoldier->bActive) && (pTeamSoldier->bInSector) && (pTeamSoldier->bLife >= OKLIFE) ) { pTeamSoldier->bOrders = STATIONARY; pTeamSoldier->bAttitude = DEFENSIVE; @@ -1390,7 +1405,7 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; cnt++, pTeamSoldier++) { - if ( pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bLife > 0 ) + if ( (pTeamSoldier->bActive) && (pTeamSoldier->bInSector) && (pTeamSoldier->bLife >= OKLIFE) ) { pTeamSoldier->bOrders = FARPATROL; pTeamSoldier->bAttitude = DEFENSIVE; @@ -1447,7 +1462,7 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; cnt++, pTeamSoldier++) { - if ( pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bLife > 0 ) + if ( (pTeamSoldier->bActive) && (pTeamSoldier->bInSector) && (pTeamSoldier->bLife >= OKLIFE) ) { if ( GetSoldier( &pSoldier, gusSelectedSoldier ) ) { @@ -1494,7 +1509,7 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; cnt++, pTeamSoldier++) { - if ( pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bLife > 0 ) + if ( (pTeamSoldier->bActive) && (pTeamSoldier->bInSector) && (pTeamSoldier->bLife >= OKLIFE) ) { //if ( SoldierCanAffordNewStance( pTeamSoldier, ANIM_PRONE ) ) { @@ -1550,7 +1565,7 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; cnt++, pTeamSoldier++) { - if ( pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bLife > 0 ) + if ( (pTeamSoldier->bActive) && (pTeamSoldier->bInSector) && (pTeamSoldier->bLife >= OKLIFE) ) { // See if we can get there sActionGridNo = FindBestNearbyCover(pTeamSoldier,pTeamSoldier->bAIMorale,&iDummy); @@ -1585,64 +1600,58 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) - case( MILCON_MENU_ALL_TAKE_ITEMS ): - { - UINT8 cnt; - SOLDIERTYPE *pTeamSoldier; - - cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; + //case( MILCON_MENU_ALL_TAKE_ITEMS ): + //{ + // UINT8 cnt; + // SOLDIERTYPE *pTeamSoldier; + // + // cnt = gTacticalStatus.Team[ MILITIA_TEAM ].bFirstID; - for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; cnt++, pTeamSoldier++) - { - if ( pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bLife > 0 ) - { + // for ( pTeamSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ MILITIA_TEAM ].bLastID; cnt++, pTeamSoldier++) + // { + // if ( pTeamSoldier->bActive && pTeamSoldier->bInSector && pTeamSoldier->bLife > 0 ) + // { - //CREATURE_IMMOBILE = 2 - if ( (pTeamSoldier->bMobility != 2) && (pTeamSoldier->bActionPoints >= MinPtsToMove(pTeamSoldier)) ) - { - //SEARCH_GENERAL_ITEMS=0 - pTeamSoldier->bAction = SearchForItems( pTeamSoldier, 0, pTeamSoldier->inv[HANDPOS].usItem ); + // //CREATURE_IMMOBILE = 2 + // if ( (pTeamSoldier->bMobility != 2) && (pTeamSoldier->bActionPoints >= MinPtsToMove(pTeamSoldier)) ) + // { + // //SEARCH_GENERAL_ITEMS=0 + // pTeamSoldier->bAction = SearchForItems( pTeamSoldier, 0, pTeamSoldier->inv[HANDPOS].usItem ); - pTeamSoldier->usNextActionData = SearchForItems( pTeamSoldier, 0, pTeamSoldier->inv[HANDPOS].usItem ); + // pTeamSoldier->usNextActionData = SearchForItems( pTeamSoldier, 0, pTeamSoldier->inv[HANDPOS].usItem ); - //if ( pTeamSoldier->usNextActionData != NOWHERE ) - { - pTeamSoldier->bNextAction = AI_ACTION_PICKUP_ITEM; - //pTeamSoldier->usActionData = ANIM_STAND; - } + // //if ( pTeamSoldier->usNextActionData != NOWHERE ) + // { + // pTeamSoldier->bNextAction = AI_ACTION_PICKUP_ITEM; + // //pTeamSoldier->usActionData = ANIM_STAND; + // } - if (pTeamSoldier->bAction == AI_ACTION_PICKUP_ITEM) - { - // the item pool index was stored in the special data field - pTeamSoldier->uiPendingActionData1 = pTeamSoldier->iNextActionSpecialData; - } - - + // if (pTeamSoldier->bAction == AI_ACTION_PICKUP_ITEM) + // { + // // the item pool index was stored in the special data field + // pTeamSoldier->uiPendingActionData1 = pTeamSoldier->iNextActionSpecialData; + // } + // //if (pTeamSoldier->bAction != AI_ACTION_NONE) + // //{ + // // return( pTeamSoldier->bAction ); + // //} + // } + // } + // } + // // stop showing menu + // fShowMilitiaControlMenu = FALSE; + // giAssignHighLine = -1; - //if (pTeamSoldier->bAction != AI_ACTION_NONE) - //{ - // return( pTeamSoldier->bAction ); - //} - } + // // set dirty flag + // fTeamPanelDirty = TRUE; + // fMapScreenBottomDirty = TRUE; + //} + //break; - - } - } - - // stop showing menu - fShowMilitiaControlMenu = FALSE; - giAssignHighLine = -1; - - // set dirty flag - fTeamPanelDirty = TRUE; - fMapScreenBottomDirty = TRUE; - } - break; - - case( MILCON_MENU_CANCEL ): + case( MILCON_MENU_CANCEL ): { //Cancel //ScreenMsg( FONT_WHITE, MSG_INTERFACE, L"Cancel" ); @@ -1658,7 +1667,7 @@ void MilitiaControlMenuBtnCallBack( MOUSE_REGION * pRegion, INT32 iReason ) // reset list of characters ResetSelectedListForMapScreen( ); } - break; + break; } } diff --git a/Tactical/Turn Based Input.cpp b/Tactical/Turn Based Input.cpp index 851d71f0..397dabb6 100644 --- a/Tactical/Turn Based Input.cpp +++ b/Tactical/Turn Based Input.cpp @@ -224,7 +224,7 @@ void HandleStealthChangeFromUIKeys( ); UINT8 gubCheatLevel = STARTING_CHEAT_LEVEL; - +extern void StackObjs( OBJECTTYPE * pSourceObj, OBJECTTYPE * pTargetObj, UINT8 ubNumberToCopy ); extern BOOLEAN CompatibleAmmoForGun( OBJECTTYPE *pTryObject, OBJECTTYPE *pTestObject ); extern void DetermineWhichAssignmentMenusCanBeShown( void ); extern void DetermineWhichMilitiaControlMenusCanBeShown( void ); //lal @@ -3067,6 +3067,8 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) HandleStanceChangeFromUIKeys( ANIM_PRONE ); break; + + // Make auto reload with magazines from sector inventory case 'R': if (! (gTacticalStatus.uiFlags & INCOMBAT) ) @@ -3094,7 +3096,7 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) // Search for ammo in sector for ( UINT32 uiLoop = 0; uiLoop < guiNumWorldItems; uiLoop++ ) { - if ( gWorldItems[ uiLoop ].fExists) //item exists + if ( gWorldItems[ uiLoop ].fExists) //item exists && (gWorldItems[ uiLoop ].usFlags & WORLD_ITEM_REACHABLE) { if ( ( Item[ gWorldItems[ uiLoop ].o.usItem ].usItemClass & IC_AMMO ) ) // the item is ammo { @@ -3188,6 +3190,35 @@ void GetKeyboardInput( UINT32 *puiNewEvent ) + + + case 'S': + + if (! (gTacticalStatus.uiFlags & INCOMBAT) ) + { + for ( UINT32 uiLoop = 0; uiLoop < guiNumWorldItems; uiLoop++ ) + { + if ( ( gWorldItems[ uiLoop ].fExists) && (gWorldItems[ uiLoop ].usFlags & WORLD_ITEM_REACHABLE) )//item exists and is reachable + { + //find out how many items can be put in a big slot + INT8 ubSlotLimit = ItemSlotLimit( gWorldItems[ uiLoop ].o.usItem, BIGPOCK1POS ); + + //if we still have some space + if ( gWorldItems[ uiLoop ].o.ubNumberOfObjects < ubSlotLimit ) + { + //if the next item is the same + if ( gWorldItems[ uiLoop ].o.usItem == gWorldItems[ uiLoop + 1 ].o.usItem ) + { + INT8 ubObjCount = ubSlotLimit - gWorldItems[ uiLoop ].o.ubNumberOfObjects; + INT8 bPointsToMove = __min( ubObjCount, gWorldItems[ uiLoop +1 ].o.ubNumberOfObjects ); + + StackObjs( &(gWorldItems[ uiLoop +1 ].o), &(gWorldItems[ uiLoop ].o), bPointsToMove); + } + } + } + } + } + break; case 's': if( fCtrl ) diff --git a/Utils/_DutchText.cpp b/Utils/_DutchText.cpp index 18f9d034..c1b58d5c 100644 --- a/Utils/_DutchText.cpp +++ b/Utils/_DutchText.cpp @@ -614,7 +614,7 @@ STR16 pMilitiaControlMenuStrings[] = L"All: Come to me", L"All: Get down", L"All: Take cover", - L"All: Find items", + //L"All: Find items", L"Cancel", // cancel this menu }; diff --git a/Utils/_EnglishText.cpp b/Utils/_EnglishText.cpp index de39d394..4bea1779 100644 --- a/Utils/_EnglishText.cpp +++ b/Utils/_EnglishText.cpp @@ -628,7 +628,7 @@ STR16 pMilitiaControlMenuStrings[] = L"All: Come to me", L"All: Get down", L"All: Take cover", - L"All: Find items", + //L"All: Find items", L"Cancel", // cancel this menu }; diff --git a/Utils/_FrenchText.cpp b/Utils/_FrenchText.cpp index 66196fb3..2f329a5b 100644 --- a/Utils/_FrenchText.cpp +++ b/Utils/_FrenchText.cpp @@ -620,7 +620,7 @@ STR16 pMilitiaControlMenuStrings[] = L"All: Come to me", L"All: Get down", L"All: Take cover", - L"All: Find items", + //L"All: Find items", L"Cancel", // cancel this menu }; diff --git a/Utils/_GermanText.cpp b/Utils/_GermanText.cpp index 9f0fa98d..0b183ca0 100644 --- a/Utils/_GermanText.cpp +++ b/Utils/_GermanText.cpp @@ -603,7 +603,7 @@ STR16 pMilitiaControlMenuStrings[] = L"All: Come to me", L"All: Get down", L"All: Take cover", - L"All: Find items", + //L"All: Find items", L"Cancel", // cancel this menu }; diff --git a/Utils/_ItalianText.cpp b/Utils/_ItalianText.cpp index 9845c16a..7d167bc1 100644 --- a/Utils/_ItalianText.cpp +++ b/Utils/_ItalianText.cpp @@ -613,7 +613,7 @@ STR16 pMilitiaControlMenuStrings[] = L"All: Come to me", L"All: Get down", L"All: Take cover", - L"All: Find items", + //L"All: Find items", L"Cancel", // cancel this menu }; diff --git a/Utils/_PolishText.cpp b/Utils/_PolishText.cpp index a782a4d9..16b504c4 100644 --- a/Utils/_PolishText.cpp +++ b/Utils/_PolishText.cpp @@ -614,7 +614,7 @@ STR16 pMilitiaControlMenuStrings[] = L"All: Come to me", L"All: Get down", L"All: Take cover", - L"All: Find items", + //L"All: Find items", L"Cancel", // cancel this menu }; diff --git a/Utils/_RussianText.cpp b/Utils/_RussianText.cpp index d8d4c0bf..16b552bd 100644 --- a/Utils/_RussianText.cpp +++ b/Utils/_RussianText.cpp @@ -620,7 +620,7 @@ STR16 pMilitiaControlMenuStrings[] = L"All: Come to me", L"All: Get down", L"All: Take cover", - L"All: Find items", + //L"All: Find items", L"Cancel", // cancel this menu };