mirror of
https://github.com/1dot13/source.git
synced 2026-09-16 14:47:17 +02:00
- Bugfixes (by Buggler)
o Fixed Restrict Mouse Region for Stack Popup Screen. Also a Dirty CTD fix for illegal Holster/Backpack pickup in Strategic Key Panel Popup o Fixed Item Transfer Exploit in Stack Popup Screen/Item in Hand during Combat mode by using hotkeys to select other mercs in Strategic & Tactical Interface o Corrected Numerator & Denominator Order for Armor Protection Raw Values in Popup Info text git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@5632 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -2342,6 +2342,12 @@ BOOLEAN ValidSelectableCharForNextOrPrev( INT32 iNewCharSlot )
|
|||||||
{
|
{
|
||||||
BOOLEAN fHoldingItem = FALSE;
|
BOOLEAN fHoldingItem = FALSE;
|
||||||
|
|
||||||
|
// not in popup
|
||||||
|
if ( InItemStackPopup( ) || InSectorStackPopup( ) || InKeyRingPopup( ) )
|
||||||
|
{
|
||||||
|
return( FALSE );
|
||||||
|
}
|
||||||
|
|
||||||
// if holding an item
|
// if holding an item
|
||||||
if ( ( gMPanelRegion.Cursor == EXTERN_CURSOR ) || gpItemPointer || fMapInventoryItem )
|
if ( ( gMPanelRegion.Cursor == EXTERN_CURSOR ) || gpItemPointer || fMapInventoryItem )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -16106,6 +16106,12 @@ void ChangeCharacterListSortMethod( INT32 iValue )
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// not in popup or item in hand
|
||||||
|
if( InItemStackPopup( ) || InSectorStackPopup( ) || InKeyRingPopup( ) || gpItemPointer != NULL )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if( ( bSelectedDestChar != -1 ) || ( fPlotForHelicopter == TRUE ) )
|
if( ( bSelectedDestChar != -1 ) || ( fPlotForHelicopter == TRUE ) )
|
||||||
{
|
{
|
||||||
AbortMovementPlottingMode( );
|
AbortMovementPlottingMode( );
|
||||||
|
|||||||
@@ -8990,11 +8990,11 @@ BOOLEAN InitSectorStackPopup( SOLDIERTYPE *pSoldier, WORLDITEM *pInventoryPoolLi
|
|||||||
gfInSectorStackPopup = TRUE;
|
gfInSectorStackPopup = TRUE;
|
||||||
fShowInventoryFlag = TRUE;
|
fShowInventoryFlag = TRUE;
|
||||||
|
|
||||||
//Reserict mouse cursor to panel
|
//Restrict mouse cursor to panel
|
||||||
aRect.iLeft = sInvX + sOffSetX;
|
aRect.iLeft = sInvX + sOffSetX;
|
||||||
aRect.iTop = sInvY + sOffSetY;
|
aRect.iTop = sInvY + sOffSetY;
|
||||||
aRect.iRight = aRect.iLeft + sItemWidth * usPopupWidth;
|
aRect.iRight = aRect.iLeft + sItemWidth * usPopupWidth;
|
||||||
aRect.iBottom = aRect.iTop + (INT32)(ceil((float)cnt/(float)sItemWidth)+1) * usPopupHeight;
|
aRect.iBottom = aRect.iTop + (INT32)(ceil((float)cnt/(float)sItemWidth)) * usPopupHeight;
|
||||||
|
|
||||||
RestrictMouseCursor( &aRect );
|
RestrictMouseCursor( &aRect );
|
||||||
|
|
||||||
@@ -9160,11 +9160,11 @@ BOOLEAN InitItemStackPopup( SOLDIERTYPE *pSoldier, UINT8 ubPosition, INT16 sInvX
|
|||||||
|
|
||||||
gfInItemStackPopup = TRUE;
|
gfInItemStackPopup = TRUE;
|
||||||
|
|
||||||
//Reserict mouse cursor to panel
|
//Restrict mouse cursor to panel
|
||||||
aRect.iLeft = sInvX + xResOffset;
|
aRect.iLeft = sInvX + xResOffset;
|
||||||
aRect.iTop = sInvY + sOffSetY;
|
aRect.iTop = sInvY + sOffSetY;
|
||||||
aRect.iRight = aRect.iLeft + sItemWidth * usPopupWidth;
|
aRect.iRight = aRect.iLeft + min(cnt,sItemWidth) * usPopupWidth;
|
||||||
aRect.iBottom = aRect.iTop + (INT32)(ceil((float)cnt/(float)sItemWidth)+1) * usPopupHeight;
|
aRect.iBottom = aRect.iTop + (INT32)(ceil((float)cnt/(float)sItemWidth)) * usPopupHeight;
|
||||||
//aRect.iTop = sInvY;
|
//aRect.iTop = sInvY;
|
||||||
//aRect.iLeft = sInvX;
|
//aRect.iLeft = sInvX;
|
||||||
//aRect.iBottom = sInvY + sInvHeight;
|
//aRect.iBottom = sInvY + sInvHeight;
|
||||||
@@ -9469,11 +9469,11 @@ BOOLEAN InitKeyRingPopup( SOLDIERTYPE *pSoldier, INT16 sInvX, INT16 sInvY, INT16
|
|||||||
|
|
||||||
gfInKeyRingPopup = TRUE;
|
gfInKeyRingPopup = TRUE;
|
||||||
|
|
||||||
//Reserict mouse cursor to panel
|
//Restrict mouse cursor to panel
|
||||||
aRect.iLeft = gsKeyRingPopupInvX + sOffSetX;
|
aRect.iLeft = gsKeyRingPopupInvX + sOffSetX;
|
||||||
aRect.iTop = sInvY + sOffSetY;
|
aRect.iTop = sInvY + sOffSetY;
|
||||||
aRect.iRight = aRect.iLeft + sKeyRingItemWidth * usPopupWidth;
|
aRect.iRight = aRect.iLeft + sKeyRingItemWidth * usPopupWidth;
|
||||||
aRect.iBottom = aRect.iTop + (INT32)(ceil((float)cnt/(float)sKeyRingItemWidth)+1) * usPopupHeight;
|
aRect.iBottom = aRect.iTop + (INT32)(ceil((float)cnt/(float)sKeyRingItemWidth)) * usPopupHeight;
|
||||||
|
|
||||||
RestrictMouseCursor( &aRect );
|
RestrictMouseCursor( &aRect );
|
||||||
|
|
||||||
@@ -11961,8 +11961,8 @@ void GetHelpTextForItem( STR16 pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldier
|
|||||||
sThreshold, //repair threshold
|
sThreshold, //repair threshold
|
||||||
pInvPanelTitleStrings[ 4 ], //Protection string
|
pInvPanelTitleStrings[ 4 ], //Protection string
|
||||||
iProtection, //Protection rating in % based on best armor
|
iProtection, //Protection rating in % based on best armor
|
||||||
Armour[ Item[ usItem ].ubClassIndex ].ubProtection, //Protection (raw data)
|
|
||||||
Armour[ Item[ usItem ].ubClassIndex ].ubProtection * sValue / 100,
|
Armour[ Item[ usItem ].ubClassIndex ].ubProtection * sValue / 100,
|
||||||
|
Armour[ Item[ usItem ].ubClassIndex ].ubProtection, //Protection (raw data)
|
||||||
pInvPanelTitleStrings[ 3 ], //Camo string
|
pInvPanelTitleStrings[ 3 ], //Camo string
|
||||||
GetCamoBonus(pObject)+GetUrbanCamoBonus(pObject)+GetDesertCamoBonus(pObject)+GetSnowCamoBonus(pObject), //Camo bonus
|
GetCamoBonus(pObject)+GetUrbanCamoBonus(pObject)+GetDesertCamoBonus(pObject)+GetSnowCamoBonus(pObject), //Camo bonus
|
||||||
gWeaponStatsDesc[ 12 ], //Weight string
|
gWeaponStatsDesc[ 12 ], //Weight string
|
||||||
@@ -11982,8 +11982,8 @@ void GetHelpTextForItem( STR16 pzStr, OBJECTTYPE *pObject, SOLDIERTYPE *pSoldier
|
|||||||
sValue, //Item condition
|
sValue, //Item condition
|
||||||
pInvPanelTitleStrings[ 4 ], //Protection string
|
pInvPanelTitleStrings[ 4 ], //Protection string
|
||||||
iProtection, //Protection rating in % based on best armor
|
iProtection, //Protection rating in % based on best armor
|
||||||
Armour[ Item[ usItem ].ubClassIndex ].ubProtection, //Protection (raw data)
|
|
||||||
Armour[ Item[ usItem ].ubClassIndex ].ubProtection * sValue / 100,
|
Armour[ Item[ usItem ].ubClassIndex ].ubProtection * sValue / 100,
|
||||||
|
Armour[ Item[ usItem ].ubClassIndex ].ubProtection, //Protection (raw data)
|
||||||
pInvPanelTitleStrings[ 3 ], //Camo string
|
pInvPanelTitleStrings[ 3 ], //Camo string
|
||||||
GetCamoBonus(pObject)+GetUrbanCamoBonus(pObject)+GetDesertCamoBonus(pObject)+GetSnowCamoBonus(pObject), //Camo bonus
|
GetCamoBonus(pObject)+GetUrbanCamoBonus(pObject)+GetDesertCamoBonus(pObject)+GetSnowCamoBonus(pObject), //Camo bonus
|
||||||
gWeaponStatsDesc[ 12 ], //Weight string
|
gWeaponStatsDesc[ 12 ], //Weight string
|
||||||
|
|||||||
@@ -736,6 +736,18 @@ void SetSMPanelCurrentMerc( UINT8 ubNewID )
|
|||||||
DeleteItemDescriptionBox( );
|
DeleteItemDescriptionBox( );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Remove stack popup panel if one up....
|
||||||
|
if ( InItemStackPopup( ) || InSectorStackPopup( ) )
|
||||||
|
{
|
||||||
|
DeleteItemStackPopup( );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove keyring popup panel if one up....
|
||||||
|
if ( InKeyRingPopup( ) )
|
||||||
|
{
|
||||||
|
DeleteKeyRingPopup( );
|
||||||
|
}
|
||||||
|
|
||||||
if ( gfInItemPickupMenu )
|
if ( gfInItemPickupMenu )
|
||||||
{
|
{
|
||||||
gfSMDisableForItems = TRUE;
|
gfSMDisableForItems = TRUE;
|
||||||
|
|||||||
Reference in New Issue
Block a user