mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-26 22:57:39 +01:00
Adds Maintenance Predator random event
This commit is contained in:
@@ -1,4 +1,9 @@
|
||||
/datum/ghost_query/morph
|
||||
role_name = "Morph"
|
||||
question = "A weird morphic creature appears to have snuck onstation. Do you want to play as it? ((Expect to be treated as vore predator))"
|
||||
question = "A weird morphic creature appears to have snuck onstation. Do you want to play as it? ((Expect to be treated as vore predator.))"
|
||||
cutoff_number = 1
|
||||
|
||||
/datum/ghost_query/maints_pred
|
||||
role_name = "Maintenance Predator"
|
||||
question = "It appears a predatory critter is lurking in the maintenance. Do you want to play as it? ((You get to choose type of critter. Expect to be treated as vore predator.))"
|
||||
cutoff_number = 1
|
||||
@@ -82,7 +82,8 @@
|
||||
//Evil grubs that drain station power slightly
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grub Infestation", /datum/event/grub_infestation, 0, list(ASSIGNMENT_SECURITY = 10, ASSIGNMENT_ENGINEER = 30), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Drone Pod Drop", /datum/event/drone_pod_drop, 10, list(ASSIGNMENT_SCIENTIST = 40), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Morph Spawn", /datum/event/morph_spawn, 75, list(ASSIGNMENT_SECURITY = 35), 1)
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Morph Spawn", /datum/event/morph_spawn, 75, list(ASSIGNMENT_SECURITY = 35), 1),
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Maintenance Predator", /datum/event/maintenance_predator, 75, list(ASSIGNMENT_SECURITY = 25, ASSIGNMENT_SCIENTIST = 10), 1)
|
||||
)
|
||||
add_disabled_events(list(
|
||||
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 30), 1),
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
/datum/event/maintenance_predator
|
||||
startWhen = 1
|
||||
announceWhen = 50
|
||||
endWhen = 100
|
||||
var/announceProb = 35
|
||||
var/list/possible_mobs = list("Space Bumblebee" = /mob/living/simple_mob/vore/bee,
|
||||
"Voracious Lizard" = /mob/living/simple_mob/vore/aggressive/dino,
|
||||
"Giant Frog" = /mob/living/simple_mob/vore/aggressive/frog,
|
||||
"Giant Rat" = /mob/living/simple_mob/vore/aggressive/rat,
|
||||
"Crate Mimic" = /mob/living/simple_mob/vore/aggressive/mimic,
|
||||
"Juvenile Solargrub" = /mob/living/simple_mob/vore/solargrub,
|
||||
"Red Panda" = /mob/living/simple_mob/vore/redpanda,
|
||||
"Fennec" = /mob/living/simple_mob/vore/fennec,
|
||||
"Fennix" = /mob/living/simple_mob/vore/fennix,
|
||||
"Jelly Blob" = /mob/living/simple_mob/animal/space/jelly,
|
||||
"Wolf" = /mob/living/simple_mob/animal/wolf)
|
||||
|
||||
/datum/event/maintenance_predator/start()
|
||||
|
||||
var/obj/effect/landmark/spawnspot = null
|
||||
var/list/possibleSpawnspots = list()
|
||||
for(var/obj/effect/landmark/L in landmarks_list)
|
||||
if(L.name == "maint_pred")
|
||||
possibleSpawnspots += L
|
||||
if(possibleSpawnspots.len)
|
||||
spawnspot = pick(possibleSpawnspots)
|
||||
else
|
||||
kill() // To prevent fake announcements
|
||||
return
|
||||
|
||||
if(!spawnspot)
|
||||
kill() // To prevent fake announcements
|
||||
return
|
||||
|
||||
var/datum/ghost_query/Q = new /datum/ghost_query/maints_pred()
|
||||
var/list/winner = Q.query()
|
||||
|
||||
if(winner.len)
|
||||
var/mob/observer/dead/D = winner[1]
|
||||
var/choice
|
||||
var/randomize
|
||||
var/finalized = "No"
|
||||
|
||||
while(finalized == "No" && D.client)
|
||||
choice = input(D,"What type of predator do you want to play as?") as null|anything in possible_mobs
|
||||
if(!choice)
|
||||
randomize = TRUE
|
||||
break
|
||||
|
||||
if(choice)
|
||||
finalized = alert(D, "Are you sure you want to play as [choice]?","Confirmation","No","Yes")
|
||||
|
||||
if(randomize)
|
||||
choice = pick(possible_mobs)
|
||||
|
||||
var/mobtype = possible_mobs[choice]
|
||||
var/mob/living/simple_mob/newPred = new mobtype(get_turf(spawnspot))
|
||||
newPred.movement_cooldown = 0 // Remove the needless artificial speed cap
|
||||
if(D.mind)
|
||||
D.mind.transfer_to(newPred)
|
||||
to_chat(D, "<span class='notice'>You are <b>[newPred]</b>, somehow having gotten aboard the station in search of food. \
|
||||
You are wary of environment around you, but you do feel rather peckish. Stick around dark, secluded places to avoid danger or, \
|
||||
if you are cute enough, try to make friends with this place's inhabitants.</span>")
|
||||
newPred.ckey = D.ckey
|
||||
newPred.visible_message("<span class='warning'>[newPred] emerges from somewhere!</span>")
|
||||
else
|
||||
kill() // To prevent fake announcements
|
||||
return
|
||||
|
||||
|
||||
/datum/event/maintenance_predator/announce()
|
||||
if(prob(announceProb))
|
||||
command_announcement.Announce("Unexpected biosignature detected in the maintenance tunnels of [station_name()].", "Lifesign Alert")
|
||||
@@ -32277,6 +32277,20 @@
|
||||
},
|
||||
/turf/simulated/floor/outdoors/grass/sif/virgo3b,
|
||||
/area/tether/surfacebase/outside/outside1)
|
||||
"bcW" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/landmark{
|
||||
name = "maint_pred"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lower/research)
|
||||
"bcX" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/obj/effect/landmark{
|
||||
name = "maint_pred"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lower/atmos)
|
||||
"cGJ" = (
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lower/mining_eva)
|
||||
@@ -41487,7 +41501,7 @@ aah
|
||||
aah
|
||||
aah
|
||||
aBO
|
||||
aHZ
|
||||
bcW
|
||||
aHc
|
||||
aJF
|
||||
aKk
|
||||
@@ -42650,7 +42664,7 @@ aUT
|
||||
aVn
|
||||
aVn
|
||||
aTZ
|
||||
aUE
|
||||
bcX
|
||||
aVn
|
||||
aVn
|
||||
aXz
|
||||
|
||||
@@ -2142,6 +2142,9 @@
|
||||
/obj/effect/floor_decal/techfloor{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/landmark{
|
||||
name = "maint_pred"
|
||||
},
|
||||
/turf/simulated/floor/tiled/techfloor,
|
||||
/area/maintenance/lower/north)
|
||||
"aeD" = (
|
||||
@@ -14060,6 +14063,9 @@
|
||||
/obj/effect/floor_decal/corner_techfloor_grid/full{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/landmark{
|
||||
name = "maint_pred"
|
||||
},
|
||||
/turf/simulated/floor/tiled/techfloor,
|
||||
/area/maintenance/lower/south)
|
||||
"azV" = (
|
||||
@@ -21560,6 +21566,13 @@
|
||||
/obj/structure/window/reinforced,
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lower/atmos)
|
||||
"aOt" = (
|
||||
/obj/structure/catwalk,
|
||||
/obj/effect/landmark{
|
||||
name = "maint_pred"
|
||||
},
|
||||
/turf/simulated/floor/plating,
|
||||
/area/maintenance/lower/atmos)
|
||||
"aOw" = (
|
||||
/obj/machinery/camera/network/command{
|
||||
icon_state = "camera";
|
||||
@@ -39158,7 +39171,7 @@ aMq
|
||||
aMq
|
||||
aDS
|
||||
aNG
|
||||
aEp
|
||||
aOt
|
||||
aDS
|
||||
aac
|
||||
aac
|
||||
|
||||
@@ -15688,6 +15688,12 @@
|
||||
},
|
||||
/turf/simulated/floor/tiled/white,
|
||||
/area/medical/biostorage)
|
||||
"xL" = (
|
||||
/obj/effect/landmark{
|
||||
name = "maint_pred"
|
||||
},
|
||||
/turf/simulated/floor,
|
||||
/area/maintenance/station/sec_lower)
|
||||
"xO" = (
|
||||
/obj/structure/table/standard,
|
||||
/obj/item/weapon/storage/box/syringegun,
|
||||
@@ -32131,7 +32137,7 @@ aP
|
||||
at
|
||||
TW
|
||||
OY
|
||||
RS
|
||||
xL
|
||||
at
|
||||
RS
|
||||
RS
|
||||
|
||||
@@ -29232,13 +29232,11 @@
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/security/hallwayaux)
|
||||
"UD" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
dir = 8;
|
||||
icon_state = "propulsion_l"
|
||||
/obj/effect/landmark{
|
||||
name = "maint_pred"
|
||||
},
|
||||
/turf/simulated/floor/tiled/asteroid_steel/airless,
|
||||
/turf/simulated/shuttle/plating/airless/carry,
|
||||
/area/shuttle/belter/station)
|
||||
/turf/simulated/floor,
|
||||
/area/maintenance/station/ai)
|
||||
"UE" = (
|
||||
/obj/structure/bed/chair/shuttle,
|
||||
/turf/simulated/floor/tiled,
|
||||
@@ -29415,12 +29413,12 @@
|
||||
/turf/simulated/floor/tiled,
|
||||
/area/quartermaster/belterdock)
|
||||
"UY" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
dir = 8
|
||||
/obj/structure/catwalk,
|
||||
/obj/effect/landmark{
|
||||
name = "maint_pred"
|
||||
},
|
||||
/turf/simulated/floor/tiled/asteroid_steel/airless,
|
||||
/turf/simulated/shuttle/plating/airless/carry,
|
||||
/area/shuttle/belter/station)
|
||||
/turf/simulated/floor,
|
||||
/area/maintenance/cargo)
|
||||
"UZ" = (
|
||||
/obj/structure/shuttle/engine/heater{
|
||||
dir = 8
|
||||
@@ -29651,7 +29649,7 @@
|
||||
"Vz" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
dir = 8;
|
||||
icon_state = "propulsion_r"
|
||||
icon_state = "propulsion_l"
|
||||
},
|
||||
/turf/simulated/floor/tiled/asteroid_steel/airless,
|
||||
/turf/simulated/shuttle/plating/airless/carry,
|
||||
@@ -29683,12 +29681,11 @@
|
||||
/area/shuttle/excursion/tether)
|
||||
"VC" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
dir = 8;
|
||||
icon_state = "propulsion_l"
|
||||
dir = 8
|
||||
},
|
||||
/turf/space,
|
||||
/turf/simulated/floor/tiled/asteroid_steel/airless,
|
||||
/turf/simulated/shuttle/plating/airless/carry,
|
||||
/area/shuttle/large_escape_pod1/station)
|
||||
/area/shuttle/belter/station)
|
||||
"VD" = (
|
||||
/obj/machinery/atmospherics/binary/pump,
|
||||
/obj/machinery/atmospherics/pipe/simple/hidden/universal{
|
||||
@@ -29766,15 +29763,23 @@
|
||||
/area/ai_core_foyer)
|
||||
"VN" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
dir = 8
|
||||
dir = 8;
|
||||
icon_state = "propulsion_r"
|
||||
},
|
||||
/turf/simulated/floor/tiled/asteroid_steel/airless,
|
||||
/turf/simulated/shuttle/plating/airless/carry,
|
||||
/area/shuttle/belter/station)
|
||||
"VO" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
dir = 8;
|
||||
icon_state = "propulsion_l"
|
||||
},
|
||||
/turf/space,
|
||||
/turf/simulated/shuttle/plating/airless/carry,
|
||||
/area/shuttle/large_escape_pod1/station)
|
||||
"VO" = (
|
||||
"VP" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
dir = 8;
|
||||
icon_state = "propulsion_r"
|
||||
dir = 8
|
||||
},
|
||||
/turf/space,
|
||||
/turf/simulated/shuttle/plating/airless/carry,
|
||||
@@ -29792,6 +29797,14 @@
|
||||
},
|
||||
/turf/simulated/floor/tiled/techfloor/grid,
|
||||
/area/shuttle/excursion/tether)
|
||||
"VS" = (
|
||||
/obj/structure/shuttle/engine/propulsion{
|
||||
dir = 8;
|
||||
icon_state = "propulsion_r"
|
||||
},
|
||||
/turf/space,
|
||||
/turf/simulated/shuttle/plating/airless/carry,
|
||||
/area/shuttle/large_escape_pod1/station)
|
||||
"VU" = (
|
||||
/obj/machinery/firealarm{
|
||||
dir = 2;
|
||||
@@ -40184,11 +40197,11 @@ MK
|
||||
Iy
|
||||
ab
|
||||
NL
|
||||
VC
|
||||
VN
|
||||
VN
|
||||
VN
|
||||
VO
|
||||
VP
|
||||
VP
|
||||
VP
|
||||
VS
|
||||
NL
|
||||
vt
|
||||
vt
|
||||
@@ -41415,7 +41428,7 @@ jV
|
||||
ms
|
||||
Oz
|
||||
be
|
||||
nx
|
||||
UY
|
||||
RT
|
||||
dT
|
||||
Se
|
||||
@@ -44109,7 +44122,7 @@ du
|
||||
fy
|
||||
fy
|
||||
RI
|
||||
gK
|
||||
UD
|
||||
fp
|
||||
RN
|
||||
eI
|
||||
@@ -44297,11 +44310,11 @@ Ty
|
||||
TL
|
||||
QG
|
||||
Ue
|
||||
UD
|
||||
UY
|
||||
UY
|
||||
UY
|
||||
Vz
|
||||
VC
|
||||
VC
|
||||
VC
|
||||
VN
|
||||
VH
|
||||
vt
|
||||
vt
|
||||
|
||||
@@ -1871,6 +1871,7 @@
|
||||
#include "code\modules\events\ian_storm_vr.dm"
|
||||
#include "code\modules\events\infestation.dm"
|
||||
#include "code\modules\events\ion_storm.dm"
|
||||
#include "code\modules\events\maintenance_predator_vr.dm"
|
||||
#include "code\modules\events\meteor_strike_vr.dm"
|
||||
#include "code\modules\events\meteors.dm"
|
||||
#include "code\modules\events\money_hacker.dm"
|
||||
|
||||
Reference in New Issue
Block a user