Files
Aurora.3/code/game/objects/effects/holodeck_landmarks.dm
Geeves 1cbb70abaf Holodeck Combat Training (#19837)
* Added a combat training simulator to the holodeck, which spawns
holocarp that deal pain damage.
2025-02-10 15:18:37 +00:00

109 lines
3.5 KiB
Plaintext

ABSTRACT_TYPE(/obj/effect/landmark/holodeck)
name = "holodeck landmark"
/// The computer our landmark is linked to
var/obj/machinery/computer/holodeck_control/console
/obj/effect/landmark/holodeck/Destroy()
console = null
return ..()
/// Sets up the landmark to work with the provided console
/obj/effect/landmark/holodeck/proc/initialize_holodeck_landmark(var/obj/machinery/computer/holodeck_control/set_console)
console = set_console
console.holodeck_landmarks += src
/// Gets called by the console configured above every machine tick as long as the console as active
/obj/effect/landmark/holodeck/proc/handle_process(seconds_per_tick)
return
/obj/effect/landmark/holodeck/atmos_test
name = "atmospheric test start"
/obj/effect/landmark/holodeck/atmos_test/initialize_holodeck_landmark(var/obj/machinery/computer/holodeck_control/set_console)
. = ..()
var/turf/turf = get_turf(src)
spark(turf, 2, GLOB.alldirs)
if(turf)
turf.temperature = 5000
turf.hotspot_expose(50000,50000,1)
/obj/effect/landmark/holodeck/holocarp_spawn
name = "holocarp spawn"
/obj/effect/landmark/holodeck/holocarp_spawn/initialize_holodeck_landmark(var/obj/machinery/computer/holodeck_control/set_console)
. = ..()
console.holographic_mobs += new /mob/living/simple_animal/hostile/carp/holodeck(loc)
/obj/effect/landmark/holodeck/holocarp_spawn_random
name = "holocarp spawn random"
/obj/effect/landmark/holodeck/holocarp_spawn_random/initialize_holodeck_landmark(var/obj/machinery/computer/holodeck_control/set_console)
. = ..()
if(prob(4)) // With 4 spawn points, carp should only appear 15% of the time.
console.holographic_mobs += new /mob/living/simple_animal/hostile/carp/holodeck(loc)
/obj/effect/landmark/holodeck/holocarp_spawn_pain
name = "holocarp spawn pain"
var/mob/pain_carp
/obj/effect/landmark/holodeck/holocarp_spawn_pain/Destroy()
QDEL_NULL(pain_carp)
return ..()
/// Handles spawning in space carp on initialize and process
/obj/effect/landmark/holodeck/holocarp_spawn_pain/proc/spawn_pain_carp()
pain_carp = new /mob/living/simple_animal/hostile/carp/holodeck/pain(loc)
console.holographic_mobs += pain_carp
/obj/effect/landmark/holodeck/holocarp_spawn_pain/initialize_holodeck_landmark(var/obj/machinery/computer/holodeck_control/set_console)
. = ..()
spawn_pain_carp()
/obj/effect/landmark/holodeck/holocarp_spawn_pain/handle_process(seconds_per_tick)
. = ..()
if(QDELETED(pain_carp))
spawn_pain_carp()
/obj/effect/landmark/holodeck/penguin_spawn_random
name = "penguin spawn random"
/obj/effect/landmark/holodeck/penguin_spawn_random/initialize_holodeck_landmark(var/obj/machinery/computer/holodeck_control/set_console)
. = ..()
if(prob(50))
console.holographic_mobs += new /mob/living/simple_animal/penguin/holodeck(loc)
else
console.holographic_mobs += new /mob/living/simple_animal/penguin/holodeck/baby(loc)
/obj/effect/landmark/holodeck/penguin_spawn_emperor
name = "penguin spawn emperor"
/obj/effect/landmark/holodeck/penguin_spawn_emperor/initialize_holodeck_landmark(var/obj/machinery/computer/holodeck_control/set_console)
. = ..()
console.holographic_mobs += new /mob/living/simple_animal/penguin/holodeck/emperor(loc)
/obj/effect/landmark/holodeck/animal_baby_random
name = "animal baby random"
/obj/effect/landmark/holodeck/animal_baby_random/initialize_holodeck_landmark(var/obj/machinery/computer/holodeck_control/set_console)
. = ..()
if(prob(50))
console.holographic_mobs += new /mob/living/simple_animal/corgi/puppy/holodeck(loc)
else
console.holographic_mobs += new /mob/living/simple_animal/cat/kitten/holodeck(loc)