Merged from revision: 6981

Enabled auto-taking for concertina/sandbags (by Sevenfm)
- items are taken from current merc's inventory
- works only in realtime
- when filling sandbags, filled sandbag is dropped, and new empty is taken from inventory
- you need to press [shift] while clicking with hammer for this feature to be activated

Autofire bullets (by Sevenfm)
Set default number of autofire bullets:
0 = Max bullets allowed with max aiming
1..10 = Set default number of bullets

1. For MPs and SMGs
SET_DEFAULT_AUTOFIRE_BULLETS_SMG = 1
2. For ARs, Rifles and Shotguns
SET_DEFAULT_AUTOFIRE_BULLETS_AR = 1
3. For MGs
SET_DEFAULT_AUTOFIRE_BULLETS_MG = 1

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@6982 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Wanne
2014-02-26 18:56:22 +00:00
parent 8923608027
commit cfed0ed8a1
8 changed files with 153 additions and 28 deletions
+12 -12
View File
@@ -115,7 +115,7 @@ void RemoveBlueFlagDialogueCallBack( UINT8 ubExitValue );
INT32 CheckBombDisarmChance(void);
void ExtendedDisarmMessageBox(void);
void ExtendedBoobyTrapMessageBoxCallBack( UINT8 ubExitValue );
void HandleTakeNewBombFromIventory(SOLDIERTYPE* pSoldier, OBJECTTYPE* pObj);
void HandleTakeNewBombFromInventory(SOLDIERTYPE* pSoldier, OBJECTTYPE* pObj);
void MineSpottedMessageBoxCallBack( UINT8 ubExitValue );
void CheckForPickedOwnership( void );
void BoobyTrapInMapScreenMessageBoxCallBack( UINT8 ubExitValue );
@@ -235,6 +235,12 @@ INT32 HandleItem( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT16 usHa
// "attached weapon"
pSoldier->usAttackingWeapon = usHandItem;
// sevenfm: set shift flag for auto-taking of next item from inventory
if( fFromUI && _KeyDown(SHIFT) )
gfShiftBombPlant = TRUE;
else
gfShiftBombPlant = FALSE;
// Find soldier flags depend on if it's our own merc firing or a NPC
//if ( FindSoldier( sGridNo, &usSoldierIndex, &uiMercFlags, FIND_SOLDIER_GRIDNO ) )
if ( ( usSoldierIndex = WhoIsThere2( sGridNo, bLevel ) ) != NOBODY )
@@ -1517,13 +1523,7 @@ INT32 HandleItem( SOLDIERTYPE *pSoldier, INT32 sGridNo, INT8 bLevel, UINT16 usHa
if ( fDropBomb )
{
// Save gridno....
pSoldier->aiData.sPendingActionData2 = sGridNo;
// sevenfm: set shift flag for auto-taking of next mine from inventory (Improved Bomb Planting)
if( fFromUI && _KeyDown(SHIFT) )
gfShiftBombPlant = TRUE;
else
gfShiftBombPlant = FALSE;
pSoldier->aiData.sPendingActionData2 = sGridNo;
if ( pSoldier->sGridNo != sGridNo )
{
@@ -1842,7 +1842,7 @@ void HandleSoldierDropBomb( SOLDIERTYPE *pSoldier, INT32 sGridNo )
{
AddItemToPool( sGridNo, &gTempObject, BURIED, pSoldier->pathing.bLevel, WORLD_ITEM_ARMED_BOMB, 0 );
// sevenfm: take another item with same id from inventory, only REALTIME
HandleTakeNewBombFromIventory(pSoldier, &gTempObject);
HandleTakeNewBombFromInventory(pSoldier, &gTempObject);
// sevenfm: change cursor back to action if successfully taken new bomb
if ( gfShiftBombPlant && pSoldier->inv[ pSoldier->ubAttackingHand ].exists() )
guiPendingOverrideEvent = M_CHANGE_TO_ACTION;
@@ -5123,7 +5123,7 @@ void BombMessageBoxCallBack( UINT8 ubExitValue )
AddItemToPool( gsTempGridNo, &gTempObject, BURIED, gpTempSoldier->pathing.bLevel, WORLD_ITEM_ARMED_BOMB, 0 );
// sevenfm: set flag only if planting tripwire
gpWorldLevelData[ gsTempGridNo ].uiFlags |= MAPELEMENT_PLAYER_MINE_PRESENT;
HandleTakeNewBombFromIventory(gpTempSoldier, &gTempObject);
HandleTakeNewBombFromInventory(gpTempSoldier, &gTempObject);
// sevenfm: change cursor back to action if successfully taken new bomb (also change mode back to action if using tripwire roll)
if ( gfShiftBombPlant && gpTempSoldier->inv[ gpTempSoldier->ubAttackingHand ].exists() )
guiPendingOverrideEvent = M_CHANGE_TO_ACTION;
@@ -7000,11 +7000,11 @@ void ExtendedBoobyTrapMessageBoxCallBack( UINT8 ubExitValue )
}
}
void HandleTakeNewBombFromIventory(SOLDIERTYPE* pSoldier, OBJECTTYPE* pObj)
void HandleTakeNewBombFromInventory(SOLDIERTYPE* pSoldier, OBJECTTYPE* pObj)
{
if( !( (gTacticalStatus.uiFlags & TURNBASED ) && (gTacticalStatus.uiFlags & INCOMBAT) ) &&
!pSoldier->inv[HANDPOS].exists() && gfShiftBombPlant )
{
pSoldier->TakeNewBombFromIventory(pObj->usItem);
pSoldier->TakeNewBombFromInventory(pObj->usItem);
}
}