471 lines
15 KiB
Python
Executable File
471 lines
15 KiB
Python
Executable File
//////////////////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// SCRIPT NAME : spaceshipScraps.sc //
|
|
// AUTHOR : Joanna Wright //
|
|
// DESCRIPTION : Sets up 50 spaceship scraps around the map for the //
|
|
// player to collect //
|
|
// //
|
|
//////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//Compile out Title Update changes to header functions.
|
|
//Must be before includes.
|
|
//CONST_INT USE_TU_CHANGES 0 // Removed by Kenneth R.
|
|
|
|
|
|
//----------------------
|
|
// INCLUDES
|
|
//----------------------
|
|
USING "email_public.sch"
|
|
USING "rgeneral_include.sch"
|
|
USING "RC_Helper_Functions.sch"
|
|
USING "CompletionPercentage_public.sch"
|
|
USING "savegame_public.sch"
|
|
USING "scrap_common.sch"
|
|
USING "pickups_spaceship.sch"
|
|
USING "achievement_public.sch"
|
|
USING "net_system_activity_feed.sch"
|
|
|
|
//----------------------
|
|
// CONSTS
|
|
//----------------------
|
|
CONST_INT XVERSION_NUMBER 102
|
|
|
|
//---------------------
|
|
// VARIABLES
|
|
//----------------------
|
|
SCRAP_MISSION_DATA sMissionData
|
|
SCRAP_PICKUP_DATA sPickupData[NUMBER_OF_SPACESHIP_PARTS]
|
|
INT scrapInInterior = 15
|
|
INT iMessageStage = 0
|
|
BOOL bFinalTextRegistered = FALSE
|
|
SCALEFORM_INDEX siMessage
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
WIDGET_GROUP_ID mWidgetGroup
|
|
BOOL bMapAllScraps
|
|
BOOL bCollectAllScraps
|
|
BOOL bResetScrapCollection
|
|
BOOL bDebugAllowWarping
|
|
BOOL bWarpToScrap[NUMBER_OF_SPACESHIP_PARTS]
|
|
BOOL bDebugQuitScript = FALSE
|
|
|
|
BOOL bSimulateScrapCollect
|
|
INT iSimulateScrapCollect = 1
|
|
#ENDIF
|
|
|
|
//----------------------
|
|
// FUNCTIONS
|
|
//----------------------
|
|
|
|
PROC INITIALIZE_SPACESHIP_PARTS()
|
|
iMessageStage = 0
|
|
// Mission is running
|
|
g_savedGlobals.sAmbient.sSpaceshipPartData.bMissionActive = TRUE
|
|
|
|
// Initialise spaceship parts
|
|
INT i
|
|
REPEAT NUMBER_OF_SPACESHIP_PARTS i
|
|
sPickupData[i].vCoords = GET_UFOSCRAP_PICKUP_COORDS(i)
|
|
sPickupData[i].bActive = FALSE
|
|
ENDREPEAT
|
|
|
|
sPickupData[0].fHeading = 179.4746
|
|
sPickupData[1].fHeading = 198.0000
|
|
sPickupData[2].fHeading = 104.0000
|
|
sPickupData[3].fHeading = 321.5000
|
|
sPickupData[4].fHeading = 256.2500
|
|
sPickupData[5].fHeading = 286.5000
|
|
sPickupData[6].fHeading = 0.00
|
|
sPickupData[6].vRot = << 0.0, 0.0, 1.0 >>
|
|
sPickupData[7].fHeading = -165.6051
|
|
sPickupData[8].fHeading = 91.5000
|
|
sPickupData[9].fHeading = 116.0000
|
|
sPickupData[10].fHeading = 15.0000
|
|
|
|
sPickupData[11].fHeading = 305.5000
|
|
sPickupData[12].fHeading = 0.0000
|
|
sPickupData[13].fHeading = 95.0000
|
|
sPickupData[14].fHeading = 40.0000
|
|
sPickupData[15].fHeading = 40.0000
|
|
sPickupData[16].fHeading = 40.0000
|
|
sPickupData[17].fHeading = 40.0000
|
|
sPickupData[18].fHeading = 40.0000
|
|
sPickupData[19].fHeading = 40.0000
|
|
sPickupData[20].fHeading = 40.0000
|
|
|
|
sPickupData[21].vRot = << 90.00, 0.00, 57.00 >>
|
|
sPickupData[22].fHeading = 40.0000
|
|
sPickupData[23].fHeading = 40.0000
|
|
sPickupData[24].fHeading = 40.0000
|
|
sPickupData[25].fHeading = 40.0000
|
|
sPickupData[26].fHeading = 40.0000
|
|
sPickupData[27].fHeading = 40.0000
|
|
sPickupData[28].fHeading = 40.0000
|
|
sPickupData[29].fHeading = 40.0000
|
|
sPickupData[29].vRot = << -24.35, 15.74, 14.31 >>
|
|
sPickupData[30].fHeading = 40.0000
|
|
|
|
sPickupData[31].fHeading = 40.0000
|
|
sPickupData[32].fHeading = 40.0000
|
|
sPickupData[33].fHeading = 40.0000
|
|
sPickupData[34].vRot = << 0.00, 0.00, -15.00 >>
|
|
sPickupData[35].fHeading = 40.0000
|
|
sPickupData[36].fHeading = 40.0000
|
|
sPickupData[37].fHeading = 40.0000
|
|
sPickupData[38].fHeading = 40.0000
|
|
sPickupData[38].vRot = << 20.18, -0.87, 20.46 >>
|
|
sPickupData[39].vRot = << 0.0, 0.0, -4.39 >>
|
|
sPickupData[40].fHeading = 40.0000
|
|
|
|
sPickupData[41].fHeading = 80.0000
|
|
sPickupData[42].fHeading = 198.0000
|
|
sPickupData[43].fHeading = 198.0000
|
|
sPickupData[44].fHeading = 198.0000
|
|
sPickupData[45].fHeading = 198.0000
|
|
sPickupData[46].fHeading = 198.0000
|
|
sPickupData[47].fHeading = 198.0000
|
|
sPickupData[48].fHeading = 198.0000
|
|
sPickupData[49].fHeading = 198.0000
|
|
ENDPROC
|
|
|
|
|
|
/// PURPOSE:
|
|
/// Updates the spaceship part array
|
|
FUNC BOOL UPDATE_SPACESHIP_PARTS(SCRAP_MISSION_DATA &missionData, SCRAP_PICKUP_DATA &pickupData[])
|
|
|
|
IF NOT IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_DIRECTOR)
|
|
AND NOT IS_SCREEN_FADED_OUT()
|
|
INT i
|
|
BOOL bScrapCollected
|
|
VECTOR vPlayerPos
|
|
|
|
// cache the player position and do is injured check to stop asserts
|
|
IS_PED_INJURED(PLAYER_PED_ID())
|
|
vPlayerPos = GET_ENTITY_COORDS(PLAYER_PED_ID())
|
|
|
|
// Check through spaceship parts...
|
|
REPEAT SCRAPS_TO_CHECK_PER_FRAME i
|
|
bScrapCollected = HAS_SCRAP_BEEN_COLLECTED(missionData.scrapData, missionData.iCurrentCheckIndex)
|
|
|
|
// If scrap isn't active...
|
|
IF (NOT pickupData[missionData.iCurrentCheckIndex].bActive)
|
|
|
|
// And hasn't been collected..
|
|
IF NOT bScrapCollected
|
|
|
|
// Interior check
|
|
IF missionData.iCurrentCheckIndex = scrapInInterior
|
|
|
|
CREATE_SCRAP_WHEN_IN_RANGE(pickupData[missionData.iCurrentCheckIndex], missionData.packageMdl, PICKUP_CUSTOM_SCRIPT, TRUE)
|
|
IF DOES_PICKUP_EXIST(pickupData[missionData.iCurrentCheckIndex].pickup)
|
|
ADD_PICKUP_TO_INTERIOR_ROOM_BY_NAME(pickupData[missionData.iCurrentCheckIndex].pickup, "GtaMloRoomTun5")
|
|
ENDIF
|
|
|
|
// Need to force rotation
|
|
ELIF missionData.iCurrentCheckIndex = 6
|
|
OR missionData.iCurrentCheckIndex = 14
|
|
OR missionData.iCurrentCheckIndex = 21
|
|
OR missionData.iCurrentCheckIndex = 34
|
|
OR missionData.iCurrentCheckIndex = 39
|
|
CREATE_SCRAP_WHEN_IN_RANGE(pickupData[missionData.iCurrentCheckIndex], missionData.packageMdl, PICKUP_CUSTOM_SCRIPT, FALSE, TRUE)
|
|
ELSE
|
|
CREATE_SCRAP_WHEN_IN_RANGE(pickupData[missionData.iCurrentCheckIndex], missionData.packageMdl)
|
|
ENDIF
|
|
ENDIF
|
|
ELSE
|
|
// Check for collection...
|
|
IF (NOT bScrapCollected)
|
|
UPDATE_SCRAP_PICKUP(missionData, pickupData, vPlayerPos)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// Increase the current index - make sure it doesn't over run
|
|
missionData.iCurrentCheckIndex++
|
|
IF (missionData.iCurrentCheckIndex >= COUNT_OF(pickupData))
|
|
missionData.iCurrentCheckIndex = 0
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
IF NOT g_bResultScreenDisplaying
|
|
UPDATE_DISPLAY_MESSAGE(missionData.bDisplayMessage, missionData.bMessageOnDisplay, missionData.iMessageTimer, SCRAP_SHIP, iMessageStage, siMessage, "SSHIP_TITLE", "SSHIP_COLLECT")
|
|
ELSE
|
|
CDEBUG1LN(debug_ambient,"Can't display spaceship parts message, results screen is currently active")
|
|
ENDIF
|
|
|
|
IF NOT bFinalTextRegistered
|
|
IF missionData.scrapData.iScrapsCollected >= missionData.scrapData.iMaxScraps
|
|
bFinalTextRegistered = REGISTER_TEXT_MESSAGE_FROM_CHARACTER_TO_PLAYER(TEXT_UFOPARTS_DONE, CT_FLOW, BIT_FRANKLIN, CHAR_OMEGA, 5000, 10000, VID_BLANK, CID_OMEGA1_COMPLETE_SPACESHIP_PARTS, FLOW_CHECK_NONE, COMM_FLAG_ADD_CONTACT)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// Send the complete flag once everything is collected and messsage has stopped
|
|
IF NOT missionData.bMessageOnDisplay
|
|
AND NOT missionData.bDisplayMessage
|
|
RETURN (missionData.scrapData.iScrapsCollected >= missionData.scrapData.iMaxScraps)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
RETURN FALSE
|
|
ENDFUNC
|
|
|
|
//----------------------
|
|
// DEBUG FUNCTIONS
|
|
//----------------------
|
|
#IF IS_DEBUG_BUILD
|
|
|
|
/// PURPOSE:
|
|
/// Setups Debug Widgets
|
|
PROC SETUP_DEBUG_WIDGETS(SCRAP_MISSION_DATA &missionData, SCRAP_PICKUP_DATA &pickupData[])
|
|
INT iScrap
|
|
TEXT_LABEL_63 tlTemp
|
|
|
|
mWidgetGroup = START_WIDGET_GROUP("Spaceship Parts")
|
|
ADD_WIDGET_BOOL("Show all scraps on map", bMapAllScraps)
|
|
ADD_WIDGET_BOOL("Force Quit Script", bDebugQuitScript)
|
|
ADD_WIDGET_BOOL("Allow debug warp", bDebugAllowWarping)
|
|
ADD_WIDGET_BOOL("Allow debug tty", bShowScrapDebugTTY)
|
|
|
|
START_WIDGET_GROUP("Collection")
|
|
ADD_WIDGET_BOOL("Collect all scraps", bCollectAllScraps)
|
|
ADD_WIDGET_BOOL("Reset scraps collection", bResetScrapCollection)
|
|
ADD_WIDGET_BOOL("Simulate Scrap Collect", bSimulateScrapCollect)
|
|
ADD_WIDGET_INT_SLIDER("Sim Scraps to Collect", iSimulateScrapCollect, 1, COUNT_OF(pickupData), 1)
|
|
STOP_WIDGET_GROUP()
|
|
|
|
START_WIDGET_GROUP("Stats")
|
|
ADD_WIDGET_INT_READ_ONLY("Scraps Collected", missionData.scrapData.iScrapsCollected)
|
|
ADD_WIDGET_INT_READ_ONLY("Total Scraps", missionData.scrapData.iMaxScraps)
|
|
STOP_WIDGET_GROUP()
|
|
|
|
START_WIDGET_GROUP("Positions")
|
|
|
|
REPEAT COUNT_OF(pickupData) iScrap
|
|
tlTemp = "Scrap "
|
|
tlTemp += iScrap
|
|
|
|
START_WIDGET_GROUP(tlTemp)
|
|
ADD_WIDGET_BOOL("bWarp", bWarpToScrap[iScrap])
|
|
ADD_WIDGET_FLOAT_READ_ONLY("X Position", pickupData[iScrap].vCoords.x)
|
|
ADD_WIDGET_FLOAT_READ_ONLY("Y Position", pickupData[iScrap].vCoords.y)
|
|
ADD_WIDGET_FLOAT_READ_ONLY("Z Position", pickupData[iScrap].vCoords.z)
|
|
STOP_WIDGET_GROUP()
|
|
|
|
ENDREPEAT
|
|
STOP_WIDGET_GROUP()
|
|
|
|
STOP_WIDGET_GROUP()
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Updates all The Widgets
|
|
PROC UPDATE_DEBUG_WIDGETS(SCRAP_MISSION_DATA &missionData, SCRAP_PICKUP_DATA &pickupData[])
|
|
INT i
|
|
INT cnt = 0
|
|
IF (bResetScrapCollection)
|
|
CPRINTLN(DEBUG_AMBIENT, "Resetting Scrap Collection")
|
|
STAT_SET_INT(missionData.packageStat, 0)
|
|
REPEAT COUNT_OF(pickupData) i
|
|
SAFE_REMOVE_PICKUP(pickupData[i].pickup)
|
|
SAFE_REMOVE_BLIP(pickupData[i].blip)
|
|
SET_SCRAP_AS_COLLECTED(missionData.scrapData, i, FALSE)
|
|
UPDATE_GLOBAL_SCRAP_DATA(missionData.missionType, i, FALSE)
|
|
pickupData[i].bActive = FALSE
|
|
ENDREPEAT
|
|
|
|
SET_PACKED_STATS_FROM_SCRAP_COLLECT_DATA(missionData.scrapData)
|
|
bResetScrapCollection = FALSE
|
|
bMapAllScraps = TRUE
|
|
MAKE_AUTOSAVE_REQUEST()
|
|
ENDIF
|
|
|
|
IF (bSimulateScrapCollect)
|
|
CPRINTLN(DEBUG_AMBIENT, "Simulating Collecting ", iSimulateScrapCollect, "Scraps")
|
|
|
|
REPEAT COUNT_OF(pickupData) i
|
|
IF NOT HAS_SCRAP_BEEN_COLLECTED(missionData.scrapData, i)
|
|
COLLECT_SCRAP(missionData, pickupData, i)
|
|
cnt ++
|
|
ENDIF
|
|
|
|
IF (cnt >= iSimulateScrapCollect)
|
|
i = COUNT_OF(pickupData) + 1 // so we break out of array
|
|
ENDIF
|
|
ENDREPEAT
|
|
|
|
bMapAllScraps = TRUE
|
|
|
|
MAKE_AUTOSAVE_REQUEST()
|
|
bSimulateScrapCollect = FALSE
|
|
ENDIF
|
|
|
|
IF (bCollectAllScraps)
|
|
CPRINTLN(DEBUG_AMBIENT, "Collecting All Scraps")
|
|
STAT_SET_INT(missionData.packageStat, 0)
|
|
|
|
REPEAT COUNT_OF(pickupData) i
|
|
COLLECT_SCRAP(missionData, pickupData, i)
|
|
ENDREPEAT
|
|
|
|
bCollectAllScraps = FALSE
|
|
bMapAllScraps = TRUE
|
|
MAKE_AUTOSAVE_REQUEST()
|
|
ENDIF
|
|
|
|
IF (bMapAllScraps)
|
|
BLIP_SCRAP_POSITIONS(missionData, pickupData)
|
|
bMapAllScraps = FALSE
|
|
ENDIF
|
|
|
|
// handle warping
|
|
IF (bDebugAllowWarping = FALSE)
|
|
EXIT
|
|
ENDIF
|
|
|
|
REPEAT COUNT_OF(pickupData) i
|
|
IF (bWarpToScrap[i])
|
|
CPRINTLN(DEBUG_AMBIENT, "Warping To Scrap:", i)
|
|
|
|
IF i = scrapInInterior
|
|
|
|
INTERIOR_INSTANCE_INDEX intScrap = GET_INTERIOR_AT_COORDS(pickupData[i].vCoords)
|
|
PIN_INTERIOR_IN_MEMORY(intScrap)
|
|
|
|
WHILE NOT IS_INTERIOR_READY(intScrap)
|
|
WAIT(0)
|
|
ENDWHILE
|
|
|
|
CHECK_WARP_TO_PACKAGE(bWarpToScrap[i], pickupData[i].vCoords)
|
|
|
|
WAIT(0)
|
|
UNPIN_INTERIOR(intScrap)
|
|
|
|
bWarpToScrap[i] = FALSE
|
|
|
|
ELSE //normal warp
|
|
IF i = 22
|
|
CHECK_WARP_TO_PACKAGE(bWarpToScrap[i], <<28.3896, 646.5005, 189.6085>>)
|
|
ELIF i = 1 //underwater warps not behaving
|
|
OR i = 20
|
|
OR i = 22
|
|
OR i = 40
|
|
CHECK_WARP_TO_PACKAGE(bWarpToScrap[i], (pickupData[i].vCoords+ <<0.0, -4.5, 0.0>>))
|
|
ELSE
|
|
CHECK_WARP_TO_PACKAGE(bWarpToScrap[i], pickupData[i].vCoords)
|
|
ENDIF
|
|
ENDIF
|
|
|
|
bWarpToScrap[i] = FALSE
|
|
ENDIF
|
|
ENDREPEAT
|
|
ENDPROC
|
|
|
|
/// PURPOSE:
|
|
/// Cleans up All The Widgets
|
|
PROC CLEANUP_DEBUG_WIDGETS()
|
|
IF DOES_WIDGET_GROUP_EXIST(mWidgetGroup)
|
|
DELETE_WIDGET_GROUP(mWidgetGroup)
|
|
ENDIF
|
|
ENDPROC
|
|
#ENDIF
|
|
|
|
//----------------------
|
|
// SCRIPT FUNCTIONS
|
|
//----------------------
|
|
|
|
/// PURPOSE:
|
|
/// Script Cleanup
|
|
PROC SCRIPT_CLEANUP()
|
|
INT i
|
|
|
|
CPRINTLN(DEBUG_AMBIENT, "Cleanup Spaceship Part Collection")
|
|
#IF IS_DEBUG_BUILD
|
|
CLEANUP_DEBUG_WIDGETS()
|
|
#ENDIF
|
|
|
|
// Mission script is no longer active
|
|
g_savedGlobals.sAmbient.sSpaceshipPartData.bMissionActive = FALSE
|
|
|
|
REPEAT COUNT_OF(sPickupData) i
|
|
SAFE_REMOVE_BLIP(sPickupData[i].blip)
|
|
SAFE_REMOVE_PICKUP(sPickupData[i].pickup)
|
|
ENDREPEAT
|
|
|
|
IF HAVE_ALL_SCRAPS_BEEN_COLLECTED(sMissionData.scrapData)
|
|
OR GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_SPACESHIP_PARTS_DONE) = TRUE
|
|
|
|
// Set the flow flag to allow Omega 2 to proceed
|
|
Set_Mission_Flow_Flag_State(FLOWFLAG_SPACESHIP_PARTS_DONE, TRUE)
|
|
|
|
// Push a message to the PS4 activity feed.
|
|
REQUEST_SYSTEM_ACTIVITY_TYPE_COLLECTED_SPACESHIP()
|
|
|
|
// No longer require the script to be relaunched when loading from a savegame.
|
|
Remove_Script_From_Relaunch_List(LAUNCH_BIT_RC_AMB_SPACESHIP_PARTS)
|
|
ENDIF
|
|
|
|
SET_MODEL_AS_NO_LONGER_NEEDED(sMissionData.packageMdl)
|
|
TERMINATE_THIS_THREAD()
|
|
ENDPROC
|
|
|
|
//----------------------
|
|
// MAIN SCRIPT
|
|
//----------------------
|
|
SCRIPT
|
|
|
|
// Setup callbacks
|
|
IF HAS_FORCE_CLEANUP_OCCURRED(FORCE_CLEANUP_FLAG_DEBUG_MENU|FORCE_CLEANUP_FLAG_SP_TO_MP|FORCE_CLEANUP_FLAG_REPEAT_PLAY|FORCE_CLEANUP_FLAG_DIRECTOR)
|
|
SCRIPT_CLEANUP()
|
|
ENDIF
|
|
|
|
// Close down in the event that this script is already running
|
|
IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH (HASH("spaceshipParts")) > 1
|
|
CPRINTLN(DEBUG_AMBIENT, "Spaceship Parts is attempting to launch with an instance already active.")
|
|
TERMINATE_THIS_THREAD()
|
|
ENDIF
|
|
|
|
// Register the script so that it can be relaunched when loading from a savegame.
|
|
Register_Script_To_Relaunch_List(LAUNCH_BIT_RC_AMB_SPACESHIP_PARTS)
|
|
|
|
// Setup arrays and everything else
|
|
CPRINTLN(DEBUG_AMBIENT, "Initializing Spaceship Part Collection - Version:", XVERSION_NUMBER)
|
|
INITIALIZE_SPACESHIP_PARTS()
|
|
SETUP_SCRAP_MISSION(sMissionData, SCRAP_SHIP, PROP_POWER_CELL, "SSHIP_COLLECT")
|
|
SETUP_SCRAP_MISSION_STATS(sMissionData, NUM_HIDDEN_PACKAGES_1, PACKSTAT_UFO_START, NUMBER_OF_SPACESHIP_PARTS)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
//SET_PROFILING_OF_THIS_SCRIPT(TRUE)
|
|
SETUP_DEBUG_WIDGETS(sMissionData, sPickupData)
|
|
#ENDIF
|
|
|
|
// main loop
|
|
WHILE (TRUE)
|
|
|
|
WAIT(0)
|
|
|
|
IS_ENTITY_OK(PLAYER_PED_ID())
|
|
|
|
// Clean up when all items are collected
|
|
IF UPDATE_SPACESHIP_PARTS(sMissionData, sPickupData)
|
|
OR (GET_MISSION_FLOW_FLAG_STATE(FLOWFLAG_SPACESHIP_PARTS_DONE) = TRUE)
|
|
|
|
CPRINTLN(DEBUG_AMBIENT, "Spaceship Parts: All scraps have been collected")
|
|
IF NOT bFinalTextRegistered
|
|
bFinalTextRegistered = REGISTER_TEXT_MESSAGE_FROM_CHARACTER_TO_PLAYER(TEXT_UFOPARTS_DONE, CT_FLOW, BIT_FRANKLIN, CHAR_OMEGA, 5000, 10000, VID_BLANK, CID_OMEGA1_COMPLETE_SPACESHIP_PARTS, FLOW_CHECK_NONE, COMM_FLAG_ADD_CONTACT)
|
|
ENDIF
|
|
IF bFinalTextRegistered
|
|
IF NOT (GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN)
|
|
ADD_HELP_TO_FLOW_QUEUE("SSHIP_SWITCH", FHP_MEDIUM, 0, 20000, DEFAULT_HELP_TEXT_TIME, BIT_MICHAEL|BIT_FRANKLIN)
|
|
ENDIF
|
|
SCRIPT_CLEANUP()
|
|
ENDIF
|
|
ENDIF
|
|
|
|
// Update debug
|
|
#IF IS_DEBUG_BUILD
|
|
UPDATE_DEBUG_WIDGETS(sMissionData, sPickupData)
|
|
#ENDIF
|
|
ENDWHILE
|
|
ENDSCRIPT
|
|
|