Skip to content

Latest commit

 

History

History
423 lines (348 loc) · 12.1 KB

floodlab.md

File metadata and controls

423 lines (348 loc) · 12.1 KB

04b_floodlab (The Oracle) unfinished doc.


(sleep_until (= (volume_test_objects vol_lab_enter (players)) TRUE))

(data_mine_set_mission_segment "04b_7_flood_lab_start")
(game_save_no_timeout)

(set silo_killer_power FALSE)

(ai_place lab_heretics_01 1)
(ai_place lab_turret_grunts_01 2)
(ai_place lab_exit_turrets 2)
(ai_place lab_carriers_01/init1)
(ai_place lab_carriers_01/init2)
(ai_place lab_carriers_01/init3)
  • wait permanently until the player is within volume 'vol_lab_enter'

  • set mission segment to '04b_7_flood_lab_start'

  • "permanently" attempt to create a checkpoint when the player is "safe".

  • (set silo_killer_power FALSE)

  • spawn 1 AI unit from the squad 'lab_heretics_01'
  • spawn 2 AI units from the squad 'lab_turret_grunts_01'
  • spawn 2 AI units from the squad 'lab_exit_turrets'
  • spawn AI unit from the squad 'lab_carriers_01' who's starting location is 'init1'
  • spawn AI unit from the squad 'lab_carriers_01' who's starting location is 'init2'
  • spawn AI unit from the squad 'lab_carriers_01' who's starting location is 'init3'

(wake lab_barricades)
(if (difficulty_legendary)
  (wake famine_flavor)
)

(wake music_04b_03_start)

(sleep_until
  (AND
    (= (volume_test_objects_all vol_lab_floor (players)) TRUE)
    (> (player_count) 0)
  )
30 900)
  • wake the function 'lab_barricades'

  • -- if on legendary, (wake famine_flavor) (skull)

  • (wake music_04b_03_start)

  • scan every 30 frames (time_here)

    • if the player is within volume 'vol_lab_floor'
    • if the player is still alive
    • or wait 900 frames (time_here) until resuming script actions.

(if
    (AND
			(= (volume_test_objects_all vol_lab_floor (players)) FALSE)
			(> (player_count) 0)
		)
			(begin_random
				(begin
					(ai_place lab_combatforms_02/r1)
					(sleep (random_range 5 45))
				)
				(begin
					(ai_place lab_combatforms_02/r2)
					(sleep (random_range 5 45))
				)
				(begin
					(ai_place lab_combatforms_02/r3)
					(sleep (random_range 5 45))
				)
				(begin
					(ai_place lab_combatforms_02/r4)
					(sleep (random_range 5 45))
				)
			)
)
  • check if the player is not in the volume 'vol_lab_floor'.
  • check if the player is still alive.
  • then spawn the following AI units in any random order
    • (ai_place lab_combatforms_02/r1)
    • (ai_place lab_combatforms_02/r2)
    • (ai_place lab_combatforms_02/r3)
    • (ai_place lab_combatforms_02/r4)
  • then after immediately wait for a random amount of time between 5 frames and 45 frames (time_here or time_here) after each single spawn.

(sleep_until
		(AND
			(= (volume_test_objects_all vol_lab_floor (players)) TRUE)
			(> (player_count) 0)
		)
	)
	(game_save_no_timeout)
	(ai_set_orders arm02_allies allies_lab_lower)
  • wait permanently until

    • the player is within volume 'vol_lab_enter'
    • the player is alive.
  • "permanently" attempt to create a checkpoint when the player is "safe".

  • (ai_set_orders arm02_allies allies_lab_lower)


(sleep_until
		(AND
			(= (ai_nonswarm_count lab_flood) 0)
			(= (ai_living_count lab_heretics) 0)
			(= (volume_test_objects_all vol_lab_floor (players)) TRUE)
			(> (player_count) 0)
		)
	30 8000)
	(data_mine_set_mission_segment "04b_8_flood_lab_mid_01")
	(game_save_no_timeout)
	(ai_place lab_heretics_above 3)
	(sleep 15)
	(ai_magically_see_object lab_heretics_above (player0))
	(ai_magically_see_object lab_heretics_above (player1))
  • scan every 30 frames (time_here)

    • if there's no AI alive that are in the squad 'lab_flood' who are also not flagged with having a "swarm count".
    • if there's no AI alive that are in the squad 'lab_heretics'.
    • if the player is within volume 'vol_lab_floor'
    • if the player is still alive
    • or wait 8000 frames (time_here) until resuming script actions.
  • set mission segment to '04b_8_flood_lab_mid_01'

  • "permanently" attempt to create a checkpoint when the player is "safe".

  • (ai_place lab_heretics_above 3)

  • (sleep 15)

  • (ai_magically_see_object lab_heretics_above (player0))

  • (ai_magically_see_object lab_heretics_above (player1))


(sleep_until (= (objects_can_see_object (players) (list_get (ai_actors lab_heretics_above) 0) 60) TRUE) 30 450)
  • scan every 30 frames (time_here)
    • if the AI unit with the starting location 'h1' from the squad 'lab_heretics_above' is looking within 60 degrees of the player
    • or wait 450 frames (time_here) until resuming script actions.

(sleep_until
  (OR
    (= (ai_living_count allies_elites) 0)
    (ai_scene lab_heretic_ally_scene lab_heretics_ally all_allies)
  )
30 300)

(ai_place lab_combatforms_02/r2)
(ai_place lab_carriers_02/r4)
(ai_set_orders lab_flood lab_above)

-- todo

(ai_place lab_combatforms_02/r2) (ai_place lab_carriers_02/r4) (ai_set_orders lab_flood lab_above)


(sleep_until
		(begin
			(begin_random
				(if (< (ai_nonswarm_count lab_flood) 4)
					(begin
						(ai_place lab_combatforms_02/r1)
						(sleep (random_range 10 40))
					)
				)
				(if (< (ai_nonswarm_count lab_flood) 4)
					(begin
						(ai_place lab_combatforms_02/r2)
						(sleep (random_range 10 40))
					)
				)
				(if (< (ai_nonswarm_count lab_flood) 4)
					(begin
						(ai_place lab_combatforms_02/r3)
						(sleep (random_range 10 40))
					)
				)
				(if (< (ai_nonswarm_count lab_flood) 4)
					(begin
						(ai_place lab_combatforms_02/r4)
						(sleep (random_range 10 40))
					)
				)
				(if (< (ai_nonswarm_count lab_flood) 4)
					(begin
						(ai_place lab_combatforms_02/r5)
						(sleep (random_range 10 40))
					)
				)
				(if (< (ai_nonswarm_count lab_flood) 4)
					(begin
						(ai_place lab_carriers_02/r1)
						(sleep (random_range 10 40))
					)
				)
				(if (< (ai_nonswarm_count lab_flood) 4)
					(begin
						(ai_place lab_carriers_02/r2)
						(sleep (random_range 10 40))
					)
				)
				(if (< (ai_nonswarm_count lab_flood) 4)
					(begin
						(ai_place lab_carriers_02/r3)
						(sleep (random_range 10 40))
					)
				)
				(if (< (ai_nonswarm_count lab_flood) 4)
					(begin
						(ai_place lab_carriers_02/r4)
						(sleep (random_range 10 40))
					)
				)
				(if (< (ai_nonswarm_count lab_flood) 4)
					(begin
						(ai_place lab_carriers_02/r5)
						(sleep (random_range 10 40))
					)
				)
			)
			(OR
				(< (ai_living_count lab_heretics_above) 1)
				(AND
					(= (volume_test_objects_all vol_lab_floor (ai_actors lab_heretics_above)) TRUE)
					(> (player_count) 0)
				)
			)
		)
	30 4000)
  • scan every 30 frames (time_here)

    • check to spawn the following AI units in any random order.
      • if the total amount of AI units in the squad 'lab_flood' that don't have the "swarm count" flag is less than 4
      • then (ai_place lab_combatforms_02/r1)
      • if the total amount of AI units in the squad 'lab_flood' that don't have the "swarm count" flag is less than 4
      • then (ai_place lab_combatforms_02/r2)
      • if the total amount of AI units in the squad 'lab_flood' that don't have the "swarm count" flag is less than 4
      • then (ai_place lab_combatforms_02/r3)
      • if the total amount of AI units in the squad 'lab_flood' that don't have the "swarm count" flag is less than 4
      • then (ai_place lab_combatforms_02/r4)
      • if the total amount of AI units in the squad 'lab_flood' that don't have the "swarm count" flag is less than 4
      • then (ai_place lab_combatforms_02/r5)
      • if the total amount of AI units in the squad 'lab_flood' that don't have the "swarm count" flag is less than 4
      • then (ai_place lab_carriers_02/r1)
      • if the total amount of AI units in the squad 'lab_flood' that don't have the "swarm count" flag is less than 4
      • then (ai_place lab_carriers_02/r2)
      • if the total amount of AI units in the squad 'lab_flood' that don't have the "swarm count" flag is less than 4
      • then (ai_place lab_carriers_02/r3)
      • if the total amount of AI units in the squad 'lab_flood' that don't have the "swarm count" flag is less than 4
      • then (ai_place lab_carriers_02/r4)
      • if the total amount of AI units in the squad 'lab_flood' that don't have the "swarm count" flag is less than 4
      • then (ai_place lab_carriers_02/r5)
    • then after immediately wait for a random amount of time between 10 frames and 40 frames (time_here or time_here) after each single spawn.
    • or if the total amount of AI units in squad 'lab_heretics_above' is less than 1
    • and a AI unit from the squad 'lab_heretics_above' is within volume 'vol_lab_floor'
    • and the player is still alive.
    • or wait 4000 frames (time_here) until resuming script actions.

(game_save_no_timeout)
(ai_set_orders lab_heretics_above lab_flood_all)
(ai_set_orders lab_flood lab_flood_all)
(ai_set_orders arm02_allies allies_lab_wagons)

(sleep_until
		(AND
			(< (ai_nonswarm_count lab_flood) 1)
			(< (ai_living_count lab_heretics_above) 1)
		)
	30 2000)
	(game_save_no_timeout)

	(music_04b_03_start_alt)

	(set lab_flood_count 0)
	(wake lab_wave_new_02)
	(sleep 1800)
  • "permanently" attempt to create a checkpoint when the player is "safe".

  • (ai_set_orders lab_heretics_above lab_flood_all)

  • (ai_set_orders lab_flood lab_flood_all)

  • (ai_set_orders arm02_allies allies_lab_wagons)

  • scan every 30 frames (time_here)

    • if the total amount of AI units in the squad 'lab_flood' is less than 1.
    • and if the total amount of AI units in the squad 'lab_heretics_above' is less than 1.
    • or wait 2000 frames (time_here) until resuming script actions.
  • "permanently" attempt to create a checkpoint when the player is "safe".

  • (music_04b_03_start_alt)

  • (set lab_flood_count 0)

  • (wake lab_wave_new_02)

  • (sleep 1800)


(sleep_until (< (ai_nonswarm_count lab_flood) 1) 30 3600)
	(sleep_until (= (ai_trigger_test "done_fighting" lab_flood) TRUE) 30 1800)
	(data_mine_set_mission_segment "04b_9_flood_lab_mid_02")
	(game_save_no_timeout)

	(music_04b_03_stop_alt)

	(set lab_flood_count 0)
	(wake lab_wave_new_01)
  • scan every 30 frames (time_here)

    • if the total amount of AI units in the squad (GROUP?) 'lab_flood' that don't have the "swarm count" flag is less than 1.
    • or wait 3600 frames (time_here) until resuming script actions.
  • -- (sleep_until (= (ai_trigger_test "done_fighting" lab_flood) TRUE) 30 1800)

  • scan every 30 frames (time_here)

    • if all AI units in the squad 'lab_flood' are flagged with the AI trigger of 'done_fighting' that returns true when 0 or fewer AI units are alive.
    • or wait 1800 frames (time_here) until resuming script actions.
  • set mission segment to '04b_9_flood_lab_mid_02'

  • "permanently" attempt to create a checkpoint when the player is "safe".

  • (music_04b_03_stop_alt)

  • (set lab_flood_count 0)

  • wake the function 'lab_wave_new_01'


(data_mine_set_mission_segment "04b_10_flood_lab_end")
	(sleep 90)
	(device_operates_automatically_set lab_exit_int TRUE)
	(ai_place lab_heretics_02 2)
	(ai_place lab_grunts_02 3)
	(ai_set_orders arm02_allies allies_lab_end)
	(wake fuck_this_turret_shit)

	(wake music_04b_03_stop)
  • set mission segment to '04b_10_flood_lab_end'

  • (sleep 90)

  • (device_operates_automatically_set lab_exit_int TRUE)

  • (ai_place lab_heretics_02 2)

  • (ai_place lab_grunts_02 3)

  • (ai_set_orders arm02_allies allies_lab_end)

  • wake the function 'fuck_this_turret_shit'

  • (wake music_04b_03_stop)


(sleep_until
  (OR
    (= (ai_living_count lab_heretics) 0)
    (AND
      (= (volume_test_objects_all vol_research_arm_swap (players)) TRUE)
      (> (player_count) 0)
    )
  )
)
(game_save_no_timeout)
(ai_set_orders all_allies allies_airlock)
(wake research_arm_bsp_swap)
)
  • wait permanently until

    • the total amount of AI units in the squad 'lab_heretics' is equal to 0.
      • and if the player is within volume 'vol_research_arm_swap'.
      • and if the player is still alive.
  • "permanently" attempt to create a checkpoint when the player is "safe".

  • (ai_set_orders all_allies allies_airlock)

  • wake the function 'research_arm_bsp_swap'.