Merged New Inventory Project into main branch

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@1871 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
lalien
2008-03-08 15:15:25 +00:00
parent e16d166277
commit 43ca24dda8
649 changed files with 93359 additions and 82507 deletions
+218 -171
View File
@@ -20,7 +20,6 @@
#include "Item Statistics.h"
#include "Text Input.h"
#include "Action Items.h"
#include "Item types.h"
#include "video.h"
#include "Simple Render Utils.h"
#include "Weapons.h"
@@ -39,7 +38,7 @@ INT32 giSciFiCheckboxButton = -1;
INT32 giAlarmTriggerButton = -1;
INT32 giOwnershipGroupButton = -1;
CHAR16 gszActionItemDesc[ NUM_ACTIONITEMS ][ 30 ] =
CHAR16 gszActionItemDesc[ NUM_ACTIONITEMS ][ 30 ] =
{
L"Klaxon Mine",
L"Flare Mine",
@@ -81,9 +80,9 @@ const STR16 GetActionItemName( OBJECTTYPE *pItem )
{
if( !pItem || pItem->usItem != ACTION_ITEM )
return NULL;
if( pItem->ItemData.Trigger.bActionValue != ACTION_ITEM_BLOW_UP )
if( (*pItem)[0]->data.misc.bActionValue != ACTION_ITEM_BLOW_UP )
{
switch( pItem->ItemData.Trigger.bActionValue )
switch( (*pItem)[0]->data.misc.bActionValue )
{
case ACTION_ITEM_OPEN_DOOR: return gszActionItemDesc[ ACTIONITEM_OPEN ];
case ACTION_ITEM_CLOSE_DOOR: return gszActionItemDesc[ ACTIONITEM_CLOSE ];
@@ -111,7 +110,7 @@ const STR16 GetActionItemName( OBJECTTYPE *pItem )
default: return NULL;
}
}
else switch( pItem->ItemData.Trigger.usBombItem )
else switch( (*pItem)[0]->data.misc.usBombItem )
{
case STUN_GRENADE: return gszActionItemDesc[ ACTIONITEM_STUN ];
case SMOKE_GRENADE: return gszActionItemDesc[ ACTIONITEM_SMOKE ];
@@ -165,6 +164,7 @@ enum
EDITING_GUNS,
EDITING_AMMO,
EDITING_ARMOUR,
EDITING_LBEGEAR,
EDITING_EQUIPMENT,
EDITING_EXPLOSIVES,
EDITING_MONEY,
@@ -198,6 +198,10 @@ void SetupArmourGUI();
void ExtractAndUpdateArmourGUI();
void RemoveArmourGUI();
void SetupLBEGUI();
void ExtractAndUpdateLBEGUI();
void RemoveLBEGUI();
void SetupEquipGUI();
void ExtractAndUpdateEquipGUI();
void RemoveEquipGUI();
@@ -277,6 +281,7 @@ void ExecuteItemStatsCmd( UINT8 ubAction )
case EDITING_GUNS: ExtractAndUpdateGunGUI(); break;
case EDITING_AMMO: ExtractAndUpdateAmmoGUI(); break;
case EDITING_ARMOUR: ExtractAndUpdateArmourGUI(); break;
case EDITING_LBEGEAR: ExtractAndUpdateLBEGUI(); break;
case EDITING_EQUIPMENT: ExtractAndUpdateEquipGUI(); break;
case EDITING_EXPLOSIVES: ExtractAndUpdateExplosivesGUI(); break;
case EDITING_MONEY: ExtractAndUpdateMoneyGUI(); break;
@@ -328,6 +333,7 @@ void RemoveItemGUI()
case EDITING_GUNS: RemoveGunGUI(); break;
case EDITING_AMMO: RemoveAmmoGUI(); break;
case EDITING_ARMOUR: RemoveArmourGUI(); break;
case EDITING_LBEGEAR: RemoveLBEGUI(); break;
case EDITING_EQUIPMENT: RemoveEquipGUI(); break;
case EDITING_EXPLOSIVES: RemoveExplosivesGUI(); break;
case EDITING_MONEY: RemoveMoneyGUI(); break;
@@ -412,6 +418,10 @@ void SpecifyItemToEdit( OBJECTTYPE *pItem, INT32 iMapIndex )
gbEditingMode = EDITING_ARMOUR;
SetupArmourGUI();
break;
case IC_LBEGEAR:
gbEditingMode = EDITING_LBEGEAR;
SetupLBEGUI();
break;
case IC_MEDKIT:
case IC_KIT:
case IC_MISC:
@@ -435,7 +445,7 @@ void SpecifyItemToEdit( OBJECTTYPE *pItem, INT32 iMapIndex )
SetupKeysGUI();
break;
case IC_PUNCH:
if ( gpItem->usItem != NOTHING)
if ( gpItem->exists() == true)
{
gbEditingMode = EDITING_EQUIPMENT;
SetupEquipGUI();
@@ -444,7 +454,7 @@ void SpecifyItemToEdit( OBJECTTYPE *pItem, INT32 iMapIndex )
// else fall through and act as nothing
case IC_NONE:
gbEditingMode = EDITING_NOTHING;
if( !(gpItem->fFlags & OBJECT_UNDROPPABLE) )
if( !((*gpItem).fFlags & OBJECT_UNDROPPABLE) )
gbEditingMode = EDITING_DROPPABLE;
break;
default:
@@ -473,7 +483,7 @@ void UpdateItemStatsPanel()
SetFontForeground( FONT_GRAY2 );
SetFontShadow( FONT_NEARBLACK );
SetFontBackground( FONT_BLACK );
if( gpItem && iCurrentTaskbar == TASK_ITEMS &&
if( gpItem && iCurrentTaskbar == TASK_ITEMS &&
gbEditingMode != EDITING_TRIGGERS && gbEditingMode != EDITING_ACTIONITEMS )
{
mprintf( iScreenWidthOffset + 500, 2 * iScreenHeightOffset + 366, L"Toggle hide flag" );
@@ -516,6 +526,7 @@ void UpdateItemStatsPanel()
mprintf( iScreenWidthOffset + 512, 2 * iScreenHeightOffset + 404, L"Trap Level" );
break;
case EDITING_ARMOUR:
case EDITING_LBEGEAR:
case EDITING_EQUIPMENT:
mprintf( iScreenWidthOffset + 512, 2 * iScreenHeightOffset + 384, L"Status" );
mprintf( iScreenWidthOffset + 512, 2 * iScreenHeightOffset + 404, L"Trap Level" );
@@ -535,7 +546,7 @@ void UpdateItemStatsPanel()
case EDITING_TRIGGERS:
mprintf( iScreenWidthOffset + 512, 2 * iScreenHeightOffset + 369, L"Trap Level");
mprintf( iScreenWidthOffset + 512, 2 * iScreenHeightOffset + 389, L"Tolerance" );
if( gpEditingItemPool && gpItem->ItemData.Trigger.BombTrigger.bFrequency >= PANIC_FREQUENCY_3 && gpItem->ItemData.Trigger.BombTrigger.bFrequency <= PANIC_FREQUENCY )
if( gpEditingItemPool && (*gpItem)[0]->data.misc.bFrequency >= PANIC_FREQUENCY_3 && (*gpItem)[0]->data.misc.bFrequency <= PANIC_FREQUENCY )
mprintf( iScreenWidthOffset + 500, 2 * iScreenHeightOffset + 407, L"Alarm Trigger" );
break;
}
@@ -546,7 +557,7 @@ void UpdateItemStatsPanel()
SetFontForeground( FONT_YELLOW );
else if( iPercent >= 50 )
SetFontForeground( FONT_ORANGE );
else
else
SetFontForeground( FONT_RED );
mprintf( iScreenWidthOffset + 512, 2 * iScreenHeightOffset + 444, L"Exist Chance" );
mprintf( iScreenWidthOffset + 587, 2 * iScreenHeightOffset + 366, L"B" );
@@ -601,16 +612,16 @@ void SetupGameTypeFlags()
{
if( gpEditingItemPool )
{
giBothCheckboxButton =
giBothCheckboxButton =
CreateCheckBoxButton( iScreenWidthOffset + 573, 2 * iScreenHeightOffset + 365, "EDITOR//radiobutton.sti", MSYS_PRIORITY_NORMAL, BothModesCheckboxCallback );
SetButtonFastHelpText( giBothCheckboxButton, L"Item appears in both Sci-Fi and Realistic modes. (|B)" );
giRealisticCheckboxButton =
giRealisticCheckboxButton =
CreateCheckBoxButton( iScreenWidthOffset + 595, 2 * iScreenHeightOffset + 365, "EDITOR//radiobutton.sti", MSYS_PRIORITY_NORMAL, RealisticOnlyCheckboxCallback );
SetButtonFastHelpText( giRealisticCheckboxButton, L"Item appears in |Realistic mode only." );
giSciFiCheckboxButton =
giSciFiCheckboxButton =
CreateCheckBoxButton( iScreenWidthOffset + 616, 2 * iScreenHeightOffset + 365, "EDITOR//radiobutton.sti", MSYS_PRIORITY_NORMAL, SciFiOnlyCheckboxCallback );
SetButtonFastHelpText( giSciFiCheckboxButton, L"Item appears in |Sci-Fi mode only." );
if( gWorldItems[ gpEditingItemPool->iItemIndex ].usFlags & WORLD_ITEM_REALISTIC_ONLY )
ButtonList[ giRealisticCheckboxButton ]->uiFlags |= (BUTTON_CLICKED_ON | BUTTON_DIRTY);
else if( gWorldItems[ gpEditingItemPool->iItemIndex ].usFlags & WORLD_ITEM_SCIFI_ONLY )
@@ -644,28 +655,28 @@ void SetupGunGUI()
CHAR16 str[20];
INT16 yp;
memset( gfAttachment, 0, NUM_ATTACHMENT_BUTTONS );
swprintf( str, L"%d", gpItem->ItemData.Gun.bGunStatus );
swprintf( str, L"%d", (*gpItem)[0]->data.gun.bGunStatus );
AddTextInputField( iScreenWidthOffset + 485, 2 * iScreenHeightOffset + 380, 25, 15, MSYS_PRIORITY_NORMAL, str, 3, INPUTTYPE_NUMERICSTRICT );
swprintf( str, L"%d", gpItem->ItemData.Gun.ubGunShotsLeft );
swprintf( str, L"%d", (*gpItem)[0]->data.gun.ubGunShotsLeft );
AddTextInputField( iScreenWidthOffset + 485, 2 * iScreenHeightOffset + 400, 25, 15, MSYS_PRIORITY_NORMAL, str, 3, INPUTTYPE_NUMERICSTRICT );
swprintf( str, L"%d", gpItem->bTrap );
swprintf( str, L"%d", (*gpItem)[0]->data.bTrap );
AddTextInputField( iScreenWidthOffset + 485, 2 * iScreenHeightOffset + 420, 25, 15, MSYS_PRIORITY_NORMAL, str, 2, INPUTTYPE_NUMERICSTRICT );
if( gpEditingItemPool )
{
swprintf( str, L"%d", 100 - gWorldItems[ gpEditingItemPool->iItemIndex ].ubNonExistChance );
AddTextInputField( iScreenWidthOffset + 485, 2 * iScreenHeightOffset + 440, 25, 15, MSYS_PRIORITY_NORMAL, str, 3, INPUTTYPE_NUMERICSTRICT );
}
//Attachments are a dynamic part of guns. None, some, or all attachments could be available
//for a particular weapon. Show only the ones that we can apply to this gun.
//Attachments are a dynamic part of guns. None, some, or all attachments could be available
//for a particular weapon. Show only the ones that we can apply to this gun.
yp = 2 * iScreenHeightOffset + 383;
guiAttachmentButton[ SILENCER_ATTACHMENT_BUTTON ] = -1;
if( ValidAttachment( SILENCER, gpItem->usItem ) )
{
guiAttachmentButton[ SILENCER_ATTACHMENT_BUTTON ] =
guiAttachmentButton[ SILENCER_ATTACHMENT_BUTTON ] =
CreateTextButton( L"SILENCER", SMALLCOMPFONT, FONT_YELLOW, FONT_BLACK, BUTTON_USE_DEFAULT,
iScreenWidthOffset + 570, yp, 60, 12, BUTTON_TOGGLE, MSYS_PRIORITY_NORMAL, DEFAULT_MOVE_CALLBACK, ToggleAttachment );
yp += 14;
if( FindAttachment( gpItem, SILENCER ) != -1 )
if( FindAttachment( gpItem, SILENCER ) )
{
ButtonList[ guiAttachmentButton[ SILENCER_ATTACHMENT_BUTTON ] ]->uiFlags |= BUTTON_CLICKED_ON;
gfAttachment[0] = TRUE;
@@ -674,11 +685,11 @@ void SetupGunGUI()
guiAttachmentButton[ SNIPERSCOPE_ATTACHMENT_BUTTON ] = -1;
if( ValidAttachment( SNIPERSCOPE, gpItem->usItem ) )
{
guiAttachmentButton[ SNIPERSCOPE_ATTACHMENT_BUTTON ] =
guiAttachmentButton[ SNIPERSCOPE_ATTACHMENT_BUTTON ] =
CreateTextButton( L"SNIPERSCOPE", SMALLCOMPFONT, FONT_YELLOW, FONT_BLACK, BUTTON_USE_DEFAULT,
iScreenWidthOffset + 570, yp, 60, 12, BUTTON_TOGGLE, MSYS_PRIORITY_NORMAL, DEFAULT_MOVE_CALLBACK, ToggleAttachment );
yp += 14;
if( FindAttachment( gpItem, SNIPERSCOPE ) != -1 )
if( FindAttachment( gpItem, SNIPERSCOPE ) )
{
ButtonList[ guiAttachmentButton[ SNIPERSCOPE_ATTACHMENT_BUTTON ] ]->uiFlags |= BUTTON_CLICKED_ON;
gfAttachment[1] = TRUE;
@@ -687,11 +698,11 @@ void SetupGunGUI()
guiAttachmentButton[ LASERSCOPE_ATTACHMENT_BUTTON ] = -1;
if( ValidAttachment( LASERSCOPE, gpItem->usItem ) )
{
guiAttachmentButton[ LASERSCOPE_ATTACHMENT_BUTTON ] =
guiAttachmentButton[ LASERSCOPE_ATTACHMENT_BUTTON ] =
CreateTextButton( L"LASERSCOPE", SMALLCOMPFONT, FONT_YELLOW, FONT_BLACK, BUTTON_USE_DEFAULT,
iScreenWidthOffset + 570, yp, 60, 12, BUTTON_TOGGLE, MSYS_PRIORITY_NORMAL, DEFAULT_MOVE_CALLBACK, ToggleAttachment );
yp += 14;
if( FindAttachment( gpItem, LASERSCOPE ) != -1 )
if( FindAttachment( gpItem, LASERSCOPE ) )
{
ButtonList[ guiAttachmentButton[ LASERSCOPE_ATTACHMENT_BUTTON ] ]->uiFlags |= BUTTON_CLICKED_ON;
gfAttachment[2] = TRUE;
@@ -700,11 +711,11 @@ void SetupGunGUI()
guiAttachmentButton[ BIPOD_ATTACHMENT_BUTTON ] = -1;
if( ValidAttachment( BIPOD, gpItem->usItem ) )
{
guiAttachmentButton[ BIPOD_ATTACHMENT_BUTTON ] =
guiAttachmentButton[ BIPOD_ATTACHMENT_BUTTON ] =
CreateTextButton( L"BIPOD", SMALLCOMPFONT, FONT_YELLOW, FONT_BLACK, BUTTON_USE_DEFAULT,
iScreenWidthOffset + 570, yp, 60, 12, BUTTON_TOGGLE, MSYS_PRIORITY_NORMAL, DEFAULT_MOVE_CALLBACK, ToggleAttachment );
yp += 14;
if( FindAttachment( gpItem, BIPOD ) != -1 )
if( FindAttachment( gpItem, BIPOD ) )
{
ButtonList[ guiAttachmentButton[ BIPOD_ATTACHMENT_BUTTON ] ]->uiFlags |= BUTTON_CLICKED_ON;
gfAttachment[3] = TRUE;
@@ -713,11 +724,11 @@ void SetupGunGUI()
guiAttachmentButton[ DUCKBILL_ATTACHMENT_BUTTON ] = -1;
if( ValidAttachment( DUCKBILL, gpItem->usItem ) )
{
guiAttachmentButton[ DUCKBILL_ATTACHMENT_BUTTON ] =
guiAttachmentButton[ DUCKBILL_ATTACHMENT_BUTTON ] =
CreateTextButton( L"DUCKBILL", SMALLCOMPFONT, FONT_YELLOW, FONT_BLACK, BUTTON_USE_DEFAULT,
iScreenWidthOffset + 570, yp, 60, 12, BUTTON_TOGGLE, MSYS_PRIORITY_NORMAL, DEFAULT_MOVE_CALLBACK, ToggleAttachment );
yp += 14;
if( FindAttachment( gpItem, DUCKBILL ) != -1 )
if( FindAttachment( gpItem, DUCKBILL ) )
{
ButtonList[ guiAttachmentButton[ DUCKBILL_ATTACHMENT_BUTTON ] ]->uiFlags |= BUTTON_CLICKED_ON;
gfAttachment[4] = TRUE;
@@ -726,11 +737,11 @@ void SetupGunGUI()
guiAttachmentButton[ GLAUNCHER_ATTACHMENT_BUTTON ] = -1;
if( ValidAttachment( UNDER_GLAUNCHER, gpItem->usItem ) )
{
guiAttachmentButton[ GLAUNCHER_ATTACHMENT_BUTTON ] =
guiAttachmentButton[ GLAUNCHER_ATTACHMENT_BUTTON ] =
CreateTextButton( L"G-LAUNCHER", SMALLCOMPFONT, FONT_YELLOW, FONT_BLACK, BUTTON_USE_DEFAULT,
iScreenWidthOffset + 570, yp, 60, 12, BUTTON_TOGGLE, MSYS_PRIORITY_NORMAL, DEFAULT_MOVE_CALLBACK, ToggleAttachment );
yp += 14;
if( FindAttachment( gpItem, UNDER_GLAUNCHER ) != -1 )
if( FindAttachment( gpItem, UNDER_GLAUNCHER ) )
{
ButtonList[ guiAttachmentButton[ GLAUNCHER_ATTACHMENT_BUTTON ] ]->uiFlags |= BUTTON_CLICKED_ON;
gfAttachment[5] = TRUE;
@@ -761,7 +772,7 @@ void ExtractAndUpdateGunGUI()
i = 20 + Random( 81 );
else
i = min( i, 100 );
gpItem->ItemData.Gun.bGunStatus = (INT8)i;
(*gpItem)[0]->data.gun.bGunStatus = (INT8)i;
SetInputFieldStringWithNumericStrictValue( 1, i );
//Update the ammo
i = GetNumericStrictValueFromField( 2 );
@@ -769,12 +780,12 @@ void ExtractAndUpdateGunGUI()
i = Random( 1 + Weapon[ gpItem->usItem ].ubMagSize );
else
i = min( i, Weapon[ gpItem->usItem ].ubMagSize );
gpItem->ItemData.Gun.ubGunShotsLeft = (UINT8)i;
(*gpItem)[0]->data.gun.ubGunShotsLeft = (UINT8)i;
SetInputFieldStringWithNumericStrictValue( 2, i );
//Update the trap level
i = GetNumericStrictValueFromField( 3 );
i = ( i == -1 ) ? 0 : min( i, 20 );
gpItem->bTrap = (INT8)i;
(*gpItem)[0]->data.bTrap = (INT8)i;
SetInputFieldStringWithNumericStrictValue( 3, i );
if( gpEditingItemPool )
{
@@ -790,7 +801,7 @@ void SetupAmmoGUI()
CHAR16 str[20];
swprintf( str, L"%d", gpItem->ubNumberOfObjects );
AddTextInputField( iScreenWidthOffset + 485, 2 * iScreenHeightOffset + 380, 25, 15, MSYS_PRIORITY_NORMAL, str, 1, INPUTTYPE_NUMERICSTRICT );
swprintf( str, L"%d", gpItem->bTrap );
swprintf( str, L"%d", (*gpItem)[0]->data.bTrap );
AddTextInputField( iScreenWidthOffset + 485, 2 * iScreenHeightOffset + 400, 25, 15, MSYS_PRIORITY_NORMAL, str, 2, INPUTTYPE_NUMERICSTRICT );
if( gpEditingItemPool )
{
@@ -810,16 +821,15 @@ void ExtractAndUpdateAmmoGUI()
//Update the number of clips
i = GetNumericStrictValueFromField( 1 );
if( i == -1 )
i = 1 + Random( Item[ gpItem->usItem ].ubPerPocket );
i = 1 + Random( ItemSlotLimit(gpItem, STACK_SIZE_LIMIT) );
else
i = max( 1, min( i, Item[ gpItem->usItem ].ubPerPocket ) );
gpItem->ubNumberOfObjects = (UINT8)i;
i = max( 1, min( i, ItemSlotLimit(gpItem, STACK_SIZE_LIMIT) ) );
SetInputFieldStringWithNumericStrictValue( 1, i );
CreateItems( gpItem->usItem, 100, gpItem->ubNumberOfObjects, gpItem );
CreateItems( gpItem->usItem, 100, i, gpItem );
//Update the trap level
i = GetNumericStrictValueFromField( 2 );
i = ( i == -1 ) ? 0 : min( i, 20 );
gpItem->bTrap = (INT8)i;
(*gpItem)[0]->data.bTrap = (INT8)i;
SetInputFieldStringWithNumericStrictValue( 2, i );
if( gpEditingItemPool )
{
@@ -833,9 +843,9 @@ void ExtractAndUpdateAmmoGUI()
void SetupArmourGUI()
{
CHAR16 str[20];
swprintf( str, L"%d", gpItem->ItemData.Generic.bStatus[0] );
swprintf( str, L"%d", (*gpItem)[0]->data.objectStatus );
AddTextInputField( iScreenWidthOffset + 485, 2 * iScreenHeightOffset + 380, 25, 15, MSYS_PRIORITY_NORMAL, str, 3, INPUTTYPE_NUMERICSTRICT );
swprintf( str, L"%d", gpItem->bTrap );
swprintf( str, L"%d", (*gpItem)[0]->data.bTrap );
AddTextInputField( iScreenWidthOffset + 485, 2 * iScreenHeightOffset + 400, 25, 15, MSYS_PRIORITY_NORMAL, str, 2, INPUTTYPE_NUMERICSTRICT );
if( gpEditingItemPool )
{
@@ -846,10 +856,10 @@ void SetupArmourGUI()
guiCeramicPlatesButton = -1;
if( ValidAttachment( CERAMIC_PLATES, gpItem->usItem ) )
{
guiCeramicPlatesButton =
guiCeramicPlatesButton =
CreateTextButton( L"CERAMIC PLATES", SMALLCOMPFONT, FONT_YELLOW, FONT_BLACK, BUTTON_USE_DEFAULT,
iScreenWidthOffset + 558, 2 * iScreenHeightOffset + 375, 72, 12, BUTTON_TOGGLE, MSYS_PRIORITY_NORMAL, DEFAULT_MOVE_CALLBACK, ToggleCeramicPlates );
if( FindAttachment( gpItem, CERAMIC_PLATES ) != -1 )
if( FindAttachment( gpItem, CERAMIC_PLATES ) )
{
ButtonList[ guiCeramicPlatesButton ]->uiFlags |= BUTTON_CLICKED_ON;
gfCeramicPlates = TRUE;
@@ -875,12 +885,56 @@ void ExtractAndUpdateArmourGUI()
i = 20 + Random( 81 );
else
i = min( i, 100 );
gpItem->ItemData.Generic.bStatus[0] = (INT8)i;
(*gpItem)[0]->data.objectStatus = (INT8)i;
SetInputFieldStringWithNumericStrictValue( 1, i );
//Update the trap level
i = GetNumericStrictValueFromField( 2 );
i = ( i == -1 ) ? 0 : min( i, 20 );
gpItem->bTrap = (INT8)i;
(*gpItem)[0]->data.bTrap = (INT8)i;
SetInputFieldStringWithNumericStrictValue( 2, i );
if( gpEditingItemPool )
{
giDefaultExistChance = GetNumericStrictValueFromField( 3 );
giDefaultExistChance = ( giDefaultExistChance == -1 ) ? 100 : max( 1, min( giDefaultExistChance, 100 ) );
gWorldItems[ gpEditingItemPool->iItemIndex ].ubNonExistChance = (UINT8)(100 - giDefaultExistChance );
SetInputFieldStringWithNumericStrictValue( 3, giDefaultExistChance );
}
}
void SetupLBEGUI()
{
CHAR16 str[20];
swprintf( str, L"%d", (*gpItem)[0]->data.objectStatus );
AddTextInputField( iScreenWidthOffset + 485, 2 * iScreenHeightOffset + 380, 25, 15, MSYS_PRIORITY_NORMAL, str, 3, INPUTTYPE_NUMERICSTRICT );
swprintf( str, L"%d", (*gpItem)[0]->data.bTrap );
AddTextInputField( iScreenWidthOffset + 485, 2 * iScreenHeightOffset + 400, 25, 15, MSYS_PRIORITY_NORMAL, str, 2, INPUTTYPE_NUMERICSTRICT );
if( gpEditingItemPool )
{
swprintf( str, L"%d", 100 - gWorldItems[ gpEditingItemPool->iItemIndex ].ubNonExistChance );
AddTextInputField( iScreenWidthOffset + 485, 2 * iScreenHeightOffset + 440, 25, 15, MSYS_PRIORITY_NORMAL, str, 3, INPUTTYPE_NUMERICSTRICT );
}
}
void RemoveLBEGUI()
{
//nothing to remove
}
void ExtractAndUpdateLBEGUI()
{
INT32 i;
//Update the equipment status
i = GetNumericStrictValueFromField( 1 );
if( i == -1 )
i = 20 + Random( 81 );
else
i = min( i, 100 );
(*gpItem)[0]->data.objectStatus = (INT8)i;
SetInputFieldStringWithNumericStrictValue( 1, i );
//Update the trap level
i = GetNumericStrictValueFromField( 2 );
i = ( i == -1 ) ? 0 : min( i, 20 );
(*gpItem)[0]->data.bTrap = (INT8)i;
SetInputFieldStringWithNumericStrictValue( 2, i );
if( gpEditingItemPool )
{
@@ -894,9 +948,9 @@ void ExtractAndUpdateArmourGUI()
void SetupEquipGUI()
{
CHAR16 str[20];
swprintf( str, L"%d", gpItem->ItemData.Generic.bStatus[0] );
swprintf( str, L"%d", (*gpItem)[0]->data.objectStatus );
AddTextInputField( iScreenWidthOffset + 485, 2 * iScreenHeightOffset + 380, 25, 15, MSYS_PRIORITY_NORMAL, str, 3, INPUTTYPE_NUMERICSTRICT );
swprintf( str, L"%d", gpItem->bTrap );
swprintf( str, L"%d", (*gpItem)[0]->data.bTrap );
AddTextInputField( iScreenWidthOffset + 485, 2 * iScreenHeightOffset + 400, 25, 15, MSYS_PRIORITY_NORMAL, str, 2, INPUTTYPE_NUMERICSTRICT );
if( gpEditingItemPool )
{
@@ -919,12 +973,12 @@ void ExtractAndUpdateEquipGUI()
i = 20 + Random( 81 );
else
i = min( i, 100 );
gpItem->ItemData.Generic.bStatus[0] = (INT8)i;
(*gpItem)[0]->data.objectStatus = (INT8)i;
SetInputFieldStringWithNumericStrictValue( 1, i );
//Update the trap level
i = GetNumericStrictValueFromField( 2 );
i = ( i == -1 ) ? 0 : min( i, 20 );
gpItem->bTrap = (INT8)i;
(*gpItem)[0]->data.bTrap = (INT8)i;
SetInputFieldStringWithNumericStrictValue( 2, i );
if( gpEditingItemPool )
{
@@ -939,15 +993,15 @@ void SetupExplosivesGUI()
{
CHAR16 str[20];
INT16 yp;
swprintf( str, L"%d", gpItem->ItemData.Generic.bStatus[0] );
swprintf( str, L"%d", (*gpItem)[0]->data.objectStatus );
AddTextInputField( iScreenWidthOffset + 485, 2 * iScreenHeightOffset + 380, 25, 15, MSYS_PRIORITY_NORMAL, str, 3, INPUTTYPE_NUMERICSTRICT );
swprintf( str, L"%d", gpItem->ubNumberOfObjects );
AddTextInputField( iScreenWidthOffset + 485, 2 * iScreenHeightOffset + 400, 25, 15, MSYS_PRIORITY_NORMAL, str, 1, INPUTTYPE_NUMERICSTRICT );
if( Item[ gpItem->usItem ].ubPerPocket == 1 )
if( ItemSlotLimit(gpItem, STACK_SIZE_LIMIT)== 1 )
{
DisableTextField( 2 );
}
swprintf( str, L"%d", gpItem->bTrap );
swprintf( str, L"%d", (*gpItem)[0]->data.bTrap );
AddTextInputField( iScreenWidthOffset + 485, 2 * iScreenHeightOffset + 420, 25, 15, MSYS_PRIORITY_NORMAL, str, 2, INPUTTYPE_NUMERICSTRICT );
if( gpEditingItemPool )
{
@@ -959,11 +1013,11 @@ void SetupExplosivesGUI()
guiDetonatorButton = -1;
if( ValidAttachment( DETONATOR, gpItem->usItem ) )
{
guiDetonatorButton =
guiDetonatorButton =
CreateTextButton( L"DETONATOR", SMALLCOMPFONT, FONT_YELLOW, FONT_BLACK, BUTTON_USE_DEFAULT,
iScreenWidthOffset + 570, yp, 60, 12, BUTTON_TOGGLE, MSYS_PRIORITY_NORMAL, DEFAULT_MOVE_CALLBACK, ToggleDetonator );
yp += 14;
if( FindAttachment( gpItem, DETONATOR ) != -1 )
if( FindAttachment( gpItem, DETONATOR ) )
{
ButtonList[ guiDetonatorButton ]->uiFlags |= BUTTON_CLICKED_ON;
gfDetonator = TRUE;
@@ -989,24 +1043,23 @@ void ExtractAndUpdateExplosivesGUI()
i = 20 + Random( 81 );
else
i = min( i, 100 );
gpItem->ItemData.Generic.bStatus[0] = (INT8)i;
(*gpItem)[0]->data.objectStatus = (INT8)i;
SetInputFieldStringWithNumericStrictValue( 1, i );
//Update the quantity
if( Item[ gpItem->usItem ].ubPerPocket > 1 )
if( ItemSlotLimit(gpItem, STACK_SIZE_LIMIT) > 1 )
{
i = GetNumericStrictValueFromField( 2 );
if( i == -1 )
i = 1 + Random( Item[ gpItem->usItem ].ubPerPocket );
i = 1 + Random( ItemSlotLimit(gpItem, STACK_SIZE_LIMIT) );
else
i = max( 1, min( i, Item[ gpItem->usItem ].ubPerPocket ) );
gpItem->ubNumberOfObjects = (UINT8)i;
i = max( 1, min( i, ItemSlotLimit(gpItem, STACK_SIZE_LIMIT) ) );
SetInputFieldStringWithNumericStrictValue( 2, i );
CreateItems( gpItem->usItem, gpItem->ItemData.Generic.bStatus[0], gpItem->ubNumberOfObjects, gpItem );
CreateItems( gpItem->usItem, (INT8)(*gpItem)[0]->data.objectStatus, i, gpItem );
}
//Update the trap level
i = GetNumericStrictValueFromField( 3 );
i = ( i == -1 ) ? 0 : min( i, 20 );
gpItem->bTrap = (INT8)i;
i = ( i == -1 ) ? 0 : min( i, 20 );
(*gpItem)[0]->data.bTrap = (INT8)i;
SetInputFieldStringWithNumericStrictValue( 3, i );
if( gpEditingItemPool )
{
@@ -1020,7 +1073,7 @@ void ExtractAndUpdateExplosivesGUI()
void SetupMoneyGUI()
{
CHAR16 str[20];
swprintf( str, L"%d", gpItem->ItemData.Money.uiMoneyAmount );
swprintf( str, L"%d", (*gpItem)[0]->data.money.uiMoneyAmount );
AddTextInputField( iScreenWidthOffset + 485, 2 * iScreenHeightOffset + 380, 45, 15, MSYS_PRIORITY_NORMAL, str, 5, INPUTTYPE_NUMERICSTRICT );
if( gpEditingItemPool )
{
@@ -1038,8 +1091,8 @@ void ExtractAndUpdateMoneyGUI()
i = Random( 20000 );
else
i = max( 1, min( i, 20000 ) );
gpItem->ItemData.Money.uiMoneyAmount = i;
gpItem->ItemData.Money.bMoneyStatus = 100;
(*gpItem)[0]->data.money.uiMoneyAmount = i;
(*gpItem)[0]->data.objectStatus = 100;
SetInputFieldStringWithNumericStrictValue( 1, i );
if( gpEditingItemPool )
{
@@ -1058,10 +1111,10 @@ void RemoveMoneyGUI()
void SetupOwnershipGUI()
{
CHAR16 str[20];
swprintf( str, L"%d", gpItem->ItemData.Owner.ubOwnerProfile );
swprintf( str, L"%d", (*gpItem)[0]->data.owner.ubOwnerProfile );
AddTextInputField( iScreenWidthOffset + 485, 2 * iScreenHeightOffset + 380, 25, 15, MSYS_PRIORITY_NORMAL, str, 3, INPUTTYPE_NUMERICSTRICT );
giOwnershipGroupButton =
CreateTextButton( gszCivGroupNames[ gpItem->ItemData.Owner.ubOwnerCivGroup ], SMALLCOMPFONT, FONT_YELLOW, FONT_BLACK, BUTTON_USE_DEFAULT,
giOwnershipGroupButton =
CreateTextButton( gszCivGroupNames[ (*gpItem)[0]->data.owner.ubOwnerCivGroup ], SMALLCOMPFONT, FONT_YELLOW, FONT_BLACK, BUTTON_USE_DEFAULT,
iScreenWidthOffset + 485, 2 * iScreenHeightOffset + 415, 80, 25, BUTTON_TOGGLE, MSYS_PRIORITY_NORMAL, DEFAULT_MOVE_CALLBACK, OwnershipGroupButtonCallback );
}
@@ -1075,7 +1128,7 @@ void OwnershipGroupButtonCallback( GUI_BUTTON *btn, INT32 reason )
void SetOwnershipGroup( UINT8 ubNewGroup )
{
gpItem->ItemData.Owner.ubOwnerCivGroup = ubNewGroup;
(*gpItem)[0]->data.owner.ubOwnerCivGroup = ubNewGroup;
SpecifyButtonText( giOwnershipGroupButton, gszCivGroupNames[ ubNewGroup ] );
}
@@ -1088,7 +1141,7 @@ void ExtractAndUpdateOwnershipGUI()
i = Random( 0 );
else
i = max( 0, min( i, 255 ) );
gpItem->ItemData.Owner.ubOwnerProfile = (UINT8)i;
(*gpItem)[0]->data.owner.ubOwnerProfile = (UINT8)i;
SetInputFieldStringWithNumericStrictValue( 1, i );
}
@@ -1131,9 +1184,9 @@ void SetupActionItemsGUI()
{
CHAR16 str[4];
STR16 pStr;
swprintf( str, L"%d", gpItem->ItemData.Generic.bStatus[0] );
swprintf( str, L"%d", (*gpItem)[0]->data.objectStatus );
AddTextInputField( iScreenWidthOffset + 485, 2 * iScreenHeightOffset + 365, 25, 15, MSYS_PRIORITY_NORMAL, str, 3, INPUTTYPE_NUMERICSTRICT );
swprintf( str, L"%d", gpItem->bTrap );
swprintf( str, L"%d", (*gpItem)[0]->data.bTrap );
AddTextInputField( iScreenWidthOffset + 485, 2 * iScreenHeightOffset + 385, 25, 15, MSYS_PRIORITY_NORMAL, str, 2, INPUTTYPE_NUMERICSTRICT );
if( gpEditingItemPool )
{
@@ -1141,7 +1194,7 @@ void SetupActionItemsGUI()
AddTextInputField( iScreenWidthOffset + 485, 2 * iScreenHeightOffset + 440, 25, 15, MSYS_PRIORITY_NORMAL, str, 3, INPUTTYPE_NUMERICSTRICT );
}
pStr = GetActionItemName( gpItem );
guiActionItemButton =
guiActionItemButton =
CreateTextButton( pStr, FONT10ARIAL, FONT_YELLOW, FONT_BLACK, BUTTON_USE_DEFAULT,
iScreenWidthOffset + 510, 2 * iScreenHeightOffset + 410, 100, 20, BUTTON_NO_TOGGLE, MSYS_PRIORITY_NORMAL, DEFAULT_MOVE_CALLBACK, ActionItemCallback );
}
@@ -1155,14 +1208,14 @@ void ExtractAndUpdateActionItemsGUI()
i = 20 + Random( 81 );
else
i = min( i, 100 );
gpItem->ItemData.Generic.bStatus[0] = (INT8)i;
(*gpItem)[0]->data.objectStatus = (INT8)i;
SetInputFieldStringWithNumericStrictValue( 1, i );
//Update the trap level
i = GetNumericStrictValueFromField( 2 );
i = ( i == -1 ) ? 0 : min( i, 20 );
if( i != gpItem->bTrap )
if( i != (*gpItem)[0]->data.bTrap )
gbDefaultBombTrapLevel = (INT8)i;
gpItem->bTrap = (INT8)i;
(*gpItem)[0]->data.bTrap = (INT8)i;
SetInputFieldStringWithNumericStrictValue( 2, i );
if( gpEditingItemPool )
@@ -1188,29 +1241,29 @@ void AlarmTriggerCheckboxCallback( GUI_BUTTON *btn, INT32 reason )
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
if( btn->uiFlags & BUTTON_CLICKED_ON )
gpItem->fFlags |= OBJECT_ALARM_TRIGGER;
(*gpItem).fFlags |= OBJECT_ALARM_TRIGGER;
else
gpItem->fFlags &= ~OBJECT_ALARM_TRIGGER;
(*gpItem).fFlags &= ~OBJECT_ALARM_TRIGGER;
}
}
void SetupTriggersGUI()
{
CHAR16 str[4];
swprintf( str, L"%d", gpItem->bTrap );
swprintf( str, L"%d", (*gpItem)[0]->data.bTrap );
AddTextInputField( iScreenWidthOffset + 485, 2 * iScreenHeightOffset + 365, 25, 15, MSYS_PRIORITY_NORMAL, str, 3, INPUTTYPE_NUMERICSTRICT );
swprintf( str, L"%d", gpItem->ItemData.Trigger.Area.ubTolerance );
swprintf( str, L"%d", (*gpItem)[0]->data.misc.ubTolerance );
AddTextInputField( iScreenWidthOffset + 485, 2 * iScreenHeightOffset + 385, 25, 15, MSYS_PRIORITY_NORMAL, str, 3, INPUTTYPE_NUMERICSTRICT );
if( gpEditingItemPool )
{
swprintf( str, L"%d", 100 - gWorldItems[ gpEditingItemPool->iItemIndex ].ubNonExistChance );
AddTextInputField( iScreenWidthOffset + 485, 2 * iScreenHeightOffset + 440, 25, 15, MSYS_PRIORITY_NORMAL, str, 3, INPUTTYPE_NUMERICSTRICT );
if( gpItem->ItemData.Trigger.BombTrigger.bFrequency <= PANIC_FREQUENCY && gpItem->ItemData.Trigger.BombTrigger.bFrequency >= PANIC_FREQUENCY_3 )
if( (*gpItem)[0]->data.misc.bFrequency <= PANIC_FREQUENCY && (*gpItem)[0]->data.misc.bFrequency >= PANIC_FREQUENCY_3 )
{
giAlarmTriggerButton =
giAlarmTriggerButton =
CreateCheckBoxButton( iScreenWidthOffset + 485, 2 * iScreenHeightOffset + 405, "EDITOR//smCheckBox.sti", MSYS_PRIORITY_NORMAL, AlarmTriggerCheckboxCallback );
SetButtonFastHelpText( giAlarmTriggerButton, L"If the panic trigger is an alarm trigger,\nenemies won't attempt to use it if they\nare already aware of your presence.");
if( gpItem->fFlags & OBJECT_ALARM_TRIGGER )
if( (*gpItem).fFlags & OBJECT_ALARM_TRIGGER )
ButtonList[ giAlarmTriggerButton ]->uiFlags |= BUTTON_CLICKED_ON;
}
}
@@ -1222,12 +1275,12 @@ void ExtractAndUpdateTriggersGUI()
//Update the trap level
i = GetNumericStrictValueFromField( 1 );
i = ( i == -1 ) ? 0 : min( i, 20 );
gpItem->bTrap = (INT8)i;
(*gpItem)[0]->data.bTrap = (INT8)i;
SetInputFieldStringWithNumericStrictValue( 1, i );
i = GetNumericStrictValueFromField( 2 );
i = ( i == -1 ) ? 0 : max( 0, min( i, 99 ) );
gpItem->ItemData.Trigger.Area.ubTolerance = (UINT8)i;
(*gpItem)[0]->data.misc.ubTolerance = (UINT8)i;
SetInputFieldStringWithNumericStrictValue( 2, i );
if( gpEditingItemPool )
@@ -1241,7 +1294,7 @@ void ExtractAndUpdateTriggersGUI()
void RemoveTriggersGUI()
{
if( gpEditingItemPool && gpItem->ItemData.Trigger.BombTrigger.bFrequency <= PANIC_FREQUENCY && gpItem->ItemData.Trigger.BombTrigger.bFrequency >= PANIC_FREQUENCY_3 )
if( gpEditingItemPool && (*gpItem)[0]->data.misc.bFrequency <= PANIC_FREQUENCY && (*gpItem)[0]->data.misc.bFrequency >= PANIC_FREQUENCY_3 )
{
if( giAlarmTriggerButton != -1 )
{
@@ -1257,7 +1310,6 @@ void ToggleAttachment( GUI_BUTTON *btn, INT32 reason )
{
INT32 i;
UINT16 usAttachment = 0;
OBJECTTYPE temp;
for( i = 0; i < NUM_ATTACHMENT_BUTTONS; i++ )
{ //Loop through and find the button that was just modified
switch( i )
@@ -1276,17 +1328,16 @@ void ToggleAttachment( GUI_BUTTON *btn, INT32 reason )
{
gfAttachment[ i ] = TRUE;
btn->uiFlags |= BUTTON_CLICKED_ON;
CreateItem( usAttachment, gpItem->ItemData.Gun.bGunStatus, &temp );
AttachObject( NULL, gpItem, &temp );
CreateItem( usAttachment, (*gpItem)[0]->data.gun.bGunStatus, &gTempObject );
gpItem->AttachObject( NULL, &gTempObject );
}
else
{ //Button is out, so remove the attachment
INT8 slot;
gfAttachment[ i ] = FALSE;
btn->uiFlags &= ~BUTTON_CLICKED_ON;
slot = FindAttachment( gpItem, usAttachment );
if( slot != -1 )
RemoveAttachment( gpItem, slot, &temp );
OBJECTTYPE* pAttachment = FindAttachment( gpItem, usAttachment );
if( pAttachment )
gpItem->RemoveAttachment( pAttachment );
}
}
}
@@ -1298,21 +1349,19 @@ void ToggleCeramicPlates( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
OBJECTTYPE temp;
gfCeramicPlates ^= TRUE;
if( gfCeramicPlates )
{
btn->uiFlags |= BUTTON_CLICKED_ON;
CreateItem( CERAMIC_PLATES, gpItem->ItemData.Generic.bStatus[0], &temp );
AttachObject( NULL, gpItem, &temp );
CreateItem( CERAMIC_PLATES, (*gpItem)[0]->data.objectStatus, &gTempObject );
gpItem->AttachObject( NULL, &gTempObject );
}
else
{
INT8 slot;
btn->uiFlags &= ~BUTTON_CLICKED_ON;
slot = FindAttachment( gpItem, CERAMIC_PLATES );
if( slot != -1 )
RemoveAttachment( gpItem, slot, &temp );
OBJECTTYPE* pAttachment = FindAttachment( gpItem, CERAMIC_PLATES );
if( pAttachment )
gpItem->RemoveAttachment( pAttachment );
}
}
}
@@ -1321,22 +1370,20 @@ void ToggleDetonator( GUI_BUTTON *btn, INT32 reason )
{
if( reason & MSYS_CALLBACK_REASON_LBUTTON_UP )
{
OBJECTTYPE temp;
if( !gfDetonator )
{
gfDetonator = TRUE;
btn->uiFlags |= BUTTON_CLICKED_ON;
CreateItem( DETONATOR, gpItem->ItemData.Generic.bStatus[0], &temp );
AttachObject( NULL, gpItem, &temp );
CreateItem( DETONATOR, (*gpItem)[0]->data.objectStatus, &gTempObject );
gpItem->AttachObject( NULL, &gTempObject );
}
else
{ //Button is out, so remove the attachment
INT8 slot;
gfDetonator = FALSE;
btn->uiFlags &= ~BUTTON_CLICKED_ON;
slot = FindAttachment( gpItem, DETONATOR );
if( slot != -1 )
RemoveAttachment( gpItem, slot, &temp );
OBJECTTYPE* pAttachment = FindAttachment( gpItem, DETONATOR );
if( pAttachment )
gpItem->RemoveAttachment( pAttachment );
}
}
}
@@ -1352,133 +1399,133 @@ void ActionItemCallback( GUI_BUTTON *btn, INT32 reason )
void ChangeActionItem( OBJECTTYPE *pItem, INT8 bActionItemIndex )
{
pItem->usItem = ACTION_ITEM;
pItem->ItemData.Trigger.bActionValue = ACTION_ITEM_BLOW_UP;
(*pItem)[0]->data.misc.bActionValue = ACTION_ITEM_BLOW_UP;
switch( bActionItemIndex )
{
case ACTIONITEM_TRIP_KLAXON:
pItem->ItemData.Trigger.usBombItem = TRIP_KLAXON;
(*pItem)[0]->data.misc.usBombItem = TRIP_KLAXON;
break;
case ACTIONITEM_FLARE:
pItem->ItemData.Trigger.usBombItem = TRIP_FLARE;
(*pItem)[0]->data.misc.usBombItem = TRIP_FLARE;
break;
case ACTIONITEM_TEARGAS:
pItem->ItemData.Trigger.usBombItem = TEARGAS_GRENADE;
(*pItem)[0]->data.misc.usBombItem = TEARGAS_GRENADE;
break;
case ACTIONITEM_STUN:
pItem->ItemData.Trigger.usBombItem = STUN_GRENADE;
(*pItem)[0]->data.misc.usBombItem = STUN_GRENADE;
break;
case ACTIONITEM_SMOKE:
pItem->ItemData.Trigger.usBombItem = SMOKE_GRENADE;
case ACTIONITEM_SMOKE:
(*pItem)[0]->data.misc.usBombItem = SMOKE_GRENADE;
break;
case ACTIONITEM_MUSTARD:
pItem->ItemData.Trigger.usBombItem = MUSTARD_GRENADE;
(*pItem)[0]->data.misc.usBombItem = MUSTARD_GRENADE;
break;
case ACTIONITEM_MINE:
pItem->ItemData.Trigger.usBombItem = MINE;
(*pItem)[0]->data.misc.usBombItem = MINE;
break;
case ACTIONITEM_OPEN:
pItem->ItemData.Trigger.usBombItem = NOTHING;
pItem->ItemData.Trigger.bActionValue = ACTION_ITEM_OPEN_DOOR;
(*pItem)[0]->data.misc.usBombItem = NOTHING;
(*pItem)[0]->data.misc.bActionValue = ACTION_ITEM_OPEN_DOOR;
break;
case ACTIONITEM_CLOSE:
pItem->ItemData.Trigger.usBombItem = NOTHING;
pItem->ItemData.Trigger.bActionValue = ACTION_ITEM_CLOSE_DOOR;
(*pItem)[0]->data.misc.usBombItem = NOTHING;
(*pItem)[0]->data.misc.bActionValue = ACTION_ITEM_CLOSE_DOOR;
break;
case ACTIONITEM_UNLOCK_DOOR:
pItem->ItemData.Trigger.usBombItem = NOTHING;
pItem->ItemData.Trigger.bActionValue = ACTION_ITEM_UNLOCK_DOOR;
(*pItem)[0]->data.misc.usBombItem = NOTHING;
(*pItem)[0]->data.misc.bActionValue = ACTION_ITEM_UNLOCK_DOOR;
break;
case ACTIONITEM_TOGGLE_LOCK:
pItem->ItemData.Trigger.usBombItem = NOTHING;
pItem->ItemData.Trigger.bActionValue = ACTION_ITEM_TOGGLE_LOCK;
(*pItem)[0]->data.misc.usBombItem = NOTHING;
(*pItem)[0]->data.misc.bActionValue = ACTION_ITEM_TOGGLE_LOCK;
break;
case ACTIONITEM_UNTRAP_DOOR:
pItem->ItemData.Trigger.usBombItem = NOTHING;
pItem->ItemData.Trigger.bActionValue = ACTION_ITEM_UNTRAP_DOOR;
(*pItem)[0]->data.misc.usBombItem = NOTHING;
(*pItem)[0]->data.misc.bActionValue = ACTION_ITEM_UNTRAP_DOOR;
break;
case ACTIONITEM_TOGGLE_PRESSURE_ITEMS:
pItem->ItemData.Trigger.usBombItem = NOTHING;
pItem->ItemData.Trigger.bActionValue = ACTION_ITEM_TOGGLE_PRESSURE_ITEMS;
(*pItem)[0]->data.misc.usBombItem = NOTHING;
(*pItem)[0]->data.misc.bActionValue = ACTION_ITEM_TOGGLE_PRESSURE_ITEMS;
break;
case ACTIONITEM_SMPIT:
pItem->ItemData.Trigger.usBombItem = NOTHING;
pItem->ItemData.Trigger.bActionValue = ACTION_ITEM_SMALL_PIT;
(*pItem)[0]->data.misc.usBombItem = NOTHING;
(*pItem)[0]->data.misc.bActionValue = ACTION_ITEM_SMALL_PIT;
break;
case ACTIONITEM_LGPIT:
pItem->ItemData.Trigger.usBombItem = NOTHING;
pItem->ItemData.Trigger.bActionValue = ACTION_ITEM_LARGE_PIT;
(*pItem)[0]->data.misc.usBombItem = NOTHING;
(*pItem)[0]->data.misc.bActionValue = ACTION_ITEM_LARGE_PIT;
break;
case ACTIONITEM_TOGGLE_DOOR:
pItem->ItemData.Trigger.usBombItem = NOTHING;
pItem->ItemData.Trigger.bActionValue = ACTION_ITEM_TOGGLE_DOOR;
(*pItem)[0]->data.misc.usBombItem = NOTHING;
(*pItem)[0]->data.misc.bActionValue = ACTION_ITEM_TOGGLE_DOOR;
break;
case ACTIONITEM_TOGGLE_ACTION1:
pItem->ItemData.Trigger.usBombItem = NOTHING;
pItem->ItemData.Trigger.bActionValue = ACTION_ITEM_TOGGLE_ACTION1;
(*pItem)[0]->data.misc.usBombItem = NOTHING;
(*pItem)[0]->data.misc.bActionValue = ACTION_ITEM_TOGGLE_ACTION1;
break;
case ACTIONITEM_TOGGLE_ACTION2:
pItem->ItemData.Trigger.usBombItem = NOTHING;
pItem->ItemData.Trigger.bActionValue = ACTION_ITEM_TOGGLE_ACTION2;
(*pItem)[0]->data.misc.usBombItem = NOTHING;
(*pItem)[0]->data.misc.bActionValue = ACTION_ITEM_TOGGLE_ACTION2;
break;
case ACTIONITEM_TOGGLE_ACTION3:
pItem->ItemData.Trigger.usBombItem = NOTHING;
pItem->ItemData.Trigger.bActionValue = ACTION_ITEM_TOGGLE_ACTION3;
(*pItem)[0]->data.misc.usBombItem = NOTHING;
(*pItem)[0]->data.misc.bActionValue = ACTION_ITEM_TOGGLE_ACTION3;
break;
case ACTIONITEM_TOGGLE_ACTION4:
pItem->ItemData.Trigger.usBombItem = NOTHING;
pItem->ItemData.Trigger.bActionValue = ACTION_ITEM_TOGGLE_ACTION4;
(*pItem)[0]->data.misc.usBombItem = NOTHING;
(*pItem)[0]->data.misc.bActionValue = ACTION_ITEM_TOGGLE_ACTION4;
break;
case ACTIONITEM_ENTER_BROTHEL:
pItem->ItemData.Trigger.usBombItem = NOTHING;
pItem->ItemData.Trigger.bActionValue = ACTION_ITEM_ENTER_BROTHEL;
(*pItem)[0]->data.misc.usBombItem = NOTHING;
(*pItem)[0]->data.misc.bActionValue = ACTION_ITEM_ENTER_BROTHEL;
break;
case ACTIONITEM_EXIT_BROTHEL:
pItem->ItemData.Trigger.usBombItem = NOTHING;
pItem->ItemData.Trigger.bActionValue = ACTION_ITEM_EXIT_BROTHEL;
(*pItem)[0]->data.misc.usBombItem = NOTHING;
(*pItem)[0]->data.misc.bActionValue = ACTION_ITEM_EXIT_BROTHEL;
break;
case ACTIONITEM_KINGPIN_ALARM:
pItem->ItemData.Trigger.usBombItem = NOTHING;
pItem->ItemData.Trigger.bActionValue = ACTION_ITEM_KINGPIN_ALARM;
(*pItem)[0]->data.misc.usBombItem = NOTHING;
(*pItem)[0]->data.misc.bActionValue = ACTION_ITEM_KINGPIN_ALARM;
break;
case ACTIONITEM_SEX:
pItem->ItemData.Trigger.usBombItem = NOTHING;
pItem->ItemData.Trigger.bActionValue = ACTION_ITEM_SEX;
(*pItem)[0]->data.misc.usBombItem = NOTHING;
(*pItem)[0]->data.misc.bActionValue = ACTION_ITEM_SEX;
break;
case ACTIONITEM_REVEAL_ROOM:
pItem->ItemData.Trigger.usBombItem = NOTHING;
pItem->ItemData.Trigger.bActionValue = ACTION_ITEM_REVEAL_ROOM;
(*pItem)[0]->data.misc.usBombItem = NOTHING;
(*pItem)[0]->data.misc.bActionValue = ACTION_ITEM_REVEAL_ROOM;
break;
case ACTIONITEM_LOCAL_ALARM:
pItem->ItemData.Trigger.usBombItem = NOTHING;
pItem->ItemData.Trigger.bActionValue = ACTION_ITEM_LOCAL_ALARM;
(*pItem)[0]->data.misc.usBombItem = NOTHING;
(*pItem)[0]->data.misc.bActionValue = ACTION_ITEM_LOCAL_ALARM;
break;
case ACTIONITEM_GLOBAL_ALARM:
pItem->ItemData.Trigger.usBombItem = NOTHING;
pItem->ItemData.Trigger.bActionValue = ACTION_ITEM_GLOBAL_ALARM;
(*pItem)[0]->data.misc.usBombItem = NOTHING;
(*pItem)[0]->data.misc.bActionValue = ACTION_ITEM_GLOBAL_ALARM;
break;
case ACTIONITEM_KLAXON:
pItem->ItemData.Trigger.usBombItem = NOTHING;
pItem->ItemData.Trigger.bActionValue = ACTION_ITEM_KLAXON;
(*pItem)[0]->data.misc.usBombItem = NOTHING;
(*pItem)[0]->data.misc.bActionValue = ACTION_ITEM_KLAXON;
break;
case ACTIONITEM_SMALL:
pItem->ItemData.Trigger.usBombItem = HAND_GRENADE;
(*pItem)[0]->data.misc.usBombItem = HAND_GRENADE;
break;
case ACTIONITEM_MEDIUM:
pItem->ItemData.Trigger.usBombItem = TNT;
(*pItem)[0]->data.misc.usBombItem = TNT;
break;
case ACTIONITEM_LARGE:
pItem->ItemData.Trigger.usBombItem = C4;
(*pItem)[0]->data.misc.usBombItem = C4;
break;
case ACTIONITEM_MUSEUM_ALARM:
pItem->ItemData.Trigger.usBombItem = NOTHING;
pItem->ItemData.Trigger.bActionValue = ACTION_ITEM_MUSEUM_ALARM;
(*pItem)[0]->data.misc.usBombItem = NOTHING;
(*pItem)[0]->data.misc.bActionValue = ACTION_ITEM_MUSEUM_ALARM;
break;
case ACTIONITEM_BLOODCAT_ALARM:
pItem->ItemData.Trigger.usBombItem = NOTHING;
pItem->ItemData.Trigger.bActionValue = ACTION_ITEM_BLOODCAT_ALARM;
(*pItem)[0]->data.misc.usBombItem = NOTHING;
(*pItem)[0]->data.misc.bActionValue = ACTION_ITEM_BLOODCAT_ALARM;
break;
case ACTIONITEM_BIG_TEAR_GAS:
pItem->ItemData.Trigger.usBombItem = BIG_TEAR_GAS;
(*pItem)[0]->data.misc.usBombItem = BIG_TEAR_GAS;
break;
}
@@ -1494,9 +1541,9 @@ void UpdateActionItem( INT8 bActionItemIndex )
//If the previous item was a pit, remove it before changing it
if( gpItem->usItem == ACTION_ITEM )
{
if( gpItem->ItemData.Trigger.bActionValue == ACTION_ITEM_SMALL_PIT )
if( (*gpItem)[0]->data.misc.bActionValue == ACTION_ITEM_SMALL_PIT )
Remove3X3Pit( gWorldItems[ gpItemPool->iItemIndex ].sGridNo );
else if( gpItem->ItemData.Trigger.bActionValue == ACTION_ITEM_LARGE_PIT )
else if( (*gpItem)[0]->data.misc.bActionValue == ACTION_ITEM_LARGE_PIT )
Remove5X5Pit( gWorldItems[ gpItemPool->iItemIndex ].sGridNo );
}
@@ -1506,9 +1553,9 @@ void UpdateActionItem( INT8 bActionItemIndex )
//If the new item is a pit, add it so we can see how it looks.
if( gpItem->usItem == ACTION_ITEM )
{
if( gpItem->ItemData.Trigger.bActionValue == ACTION_ITEM_SMALL_PIT )
if( (*gpItem)[0]->data.misc.bActionValue == ACTION_ITEM_SMALL_PIT )
Add3X3Pit( gWorldItems[ gpItemPool->iItemIndex ].sGridNo );
else if( gpItem->ItemData.Trigger.bActionValue == ACTION_ITEM_LARGE_PIT )
else if( (*gpItem)[0]->data.misc.bActionValue == ACTION_ITEM_LARGE_PIT )
Add5X5Pit( gWorldItems[ gpItemPool->iItemIndex ].sGridNo );
}
}