mirror of
https://github.com/1dot13/source.git
synced 2026-07-29 13:52:17 +02:00
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:
+218
-171
@@ -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 );
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user