171 lines
3.7 KiB
Python
Executable File
171 lines
3.7 KiB
Python
Executable File
///
|
|
/// 100% UFO EASTER EGG
|
|
///
|
|
/// STEVE R LDS.
|
|
|
|
|
|
//Compile out Title Update changes to header functions.
|
|
//Must be before includes.
|
|
//CONST_INT USE_TU_CHANGES 0 // Removed by Kenneth R.
|
|
|
|
|
|
USING "rage_builtins.sch"
|
|
USING "globals.sch"
|
|
USING "brains.sch"
|
|
USING "script_player.sch"
|
|
USING "commands_player.sch"
|
|
USING "commands_brains.sch"
|
|
USING "commands_script.sch"
|
|
USING "commands_clock.sch"
|
|
USING "commands_streaming.sch"
|
|
USING "building_control_public.sch"
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
BOOL bUFODebugSpam = FALSE
|
|
#ENDIF
|
|
|
|
ENUM eUFO_STATE
|
|
|
|
UFO_STATE_WAITING_TO_START = 0,
|
|
UFO_STATE_SPAWNING_UFO,
|
|
UFO_STATE_MONITORING_UFO
|
|
|
|
ENDENUM
|
|
|
|
eUFO_STATE eUFOState = UFO_STATE_WAITING_TO_START
|
|
|
|
|
|
PROC missionCleanup()
|
|
|
|
SET_BUILDING_STATE(BUILDINGNAME_IPL_UFO_EYE, BUILDINGSTATE_NORMAL, TRUE)
|
|
|
|
IF IS_AMBIENT_ZONE_ENABLED("AZ_SPECIAL_UFO_03")
|
|
SET_AMBIENT_ZONE_STATE("AZ_SPECIAL_UFO_03",FALSE,TRUE)
|
|
ENDIF
|
|
|
|
CPRINTLN( DEBUG_AMBIENT, GET_THIS_SCRIPT_NAME(), " script cleaning up.")
|
|
TERMINATE_THIS_THREAD()
|
|
|
|
ENDPROC
|
|
|
|
|
|
/// PURPOSE:
|
|
/// Checks if the weather is right for the UFO spawn
|
|
/// RETURNS:
|
|
///
|
|
FUNC BOOL IS_UFO_WEATHER_CORRECT()
|
|
|
|
IF IS_NEXT_WEATHER_TYPE("RAIN")
|
|
OR IS_NEXT_WEATHER_TYPE("THUNDER")
|
|
OR IS_PREV_WEATHER_TYPE("RAIN")
|
|
OR IS_PREV_WEATHER_TYPE("THUNDER")
|
|
#IF IS_DEBUG_BUILD
|
|
IF bUFODebugSpam
|
|
CPRINTLN( DEBUG_AMBIENT, GET_THIS_SCRIPT_NAME(), " weather is correct")
|
|
ENDIF
|
|
#ENDIF
|
|
RETURN TRUE
|
|
ENDIF
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF bUFODebugSpam
|
|
CPRINTLN( DEBUG_AMBIENT, GET_THIS_SCRIPT_NAME(), " weather isn't correct")
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
RETURN FALSE
|
|
|
|
ENDFUNC
|
|
|
|
|
|
|
|
|
|
SCRIPT (coords_struct in_coords)
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
PRINTNL()
|
|
PRINTLN("100% UFO")
|
|
PRINTVECTOR(in_coords.vec_coord[0])
|
|
PRINTNL()
|
|
#ENDIF
|
|
|
|
#IF IS_FINAL_BUILD
|
|
UNUSED_PARAMETER(in_coords)
|
|
#ENDIF
|
|
|
|
IF g_savedGlobals.sCompletionPercentageData.b_g_OneHundredPercentReached = FALSE
|
|
CPRINTLN( DEBUG_AMBIENT, GET_THIS_SCRIPT_NAME(), " - 100% completion hasn't been reached - terminating script")
|
|
missionCleanup()
|
|
ENDIF
|
|
|
|
IF HAS_FORCE_CLEANUP_OCCURRED(FORCE_CLEANUP_FLAG_DEBUG_MENU|FORCE_CLEANUP_FLAG_SP_TO_MP)
|
|
//AND NOT bReplay
|
|
missionCleanup()
|
|
ENDIF
|
|
|
|
WHILE TRUE
|
|
WAIT(0)
|
|
|
|
IF NOT IS_WORLD_POINT_WITHIN_BRAIN_ACTIVATION_RANGE()
|
|
CPRINTLN( DEBUG_AMBIENT, GET_THIS_SCRIPT_NAME(), " is not within world point brain activation range.")
|
|
missionCleanup()
|
|
ENDIF
|
|
|
|
SWITCH eUFOState
|
|
|
|
CASE UFO_STATE_WAITING_TO_START
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF bUFODebugSpam
|
|
CPRINTLN( DEBUG_AMBIENT, GET_THIS_SCRIPT_NAME(), " is waiting for rainy/thundery weather at 3AM")
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
// Only activate UFO at 3AM in Rainy weather
|
|
IF GET_CLOCK_HOURS() = 3
|
|
AND IS_UFO_WEATHER_CORRECT()
|
|
eUFOState = UFO_STATE_SPAWNING_UFO
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
|
|
CASE UFO_STATE_SPAWNING_UFO
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF bUFODebugSpam
|
|
CPRINTLN( DEBUG_AMBIENT, GET_THIS_SCRIPT_NAME(), " Waiting for ufo to spawn")
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
SET_BUILDING_STATE(BUILDINGNAME_IPL_UFO_EYE, BUILDINGSTATE_DESTROYED)
|
|
|
|
eUFOState = UFO_STATE_MONITORING_UFO
|
|
|
|
IF NOT IS_AMBIENT_ZONE_ENABLED("AZ_SPECIAL_UFO_03")
|
|
SET_AMBIENT_ZONE_STATE("AZ_SPECIAL_UFO_03",TRUE,TRUE)
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
CASE UFO_STATE_MONITORING_UFO
|
|
|
|
#IF IS_DEBUG_BUILD
|
|
IF bUFODebugSpam
|
|
CPRINTLN( DEBUG_AMBIENT, GET_THIS_SCRIPT_NAME(), " Monitoring UFO spawn conditions")
|
|
ENDIF
|
|
#ENDIF
|
|
|
|
IF GET_CLOCK_HOURS() != 3
|
|
OR NOT IS_UFO_WEATHER_CORRECT()
|
|
missionCleanup()
|
|
ENDIF
|
|
|
|
BREAK
|
|
|
|
ENDSWITCH
|
|
|
|
ENDWHILE
|
|
|
|
ENDSCRIPT
|