Adds Morph Spawn event

This commit is contained in:
Heroman
2020-01-11 20:15:10 +10:00
parent 24da40a882
commit 43760db7dd
14 changed files with 281 additions and 127 deletions
+2 -1
View File
@@ -21,7 +21,8 @@ SUBSYSTEM_DEF(events)
/datum/controller/subsystem/events/fire(resumed)
for(var/datum/event/E in active_events)
E.process()
if(E.processing_active) //VOREStation Edit
E.process() //VOREStation Edit
for(var/i = EVENT_LEVEL_MUNDANE to EVENT_LEVEL_MAJOR)
var/list/datum/event_container/EC = event_containers[i]
+4
View File
@@ -0,0 +1,4 @@
/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))"
cutoff_number = 1
@@ -1,7 +1,7 @@
/obj/structure/ghost_pod/manual/lost_drone/dogborg
/obj/structure/ghost_pod/manual/lost_drone/dogborg/create_occupant(var/mob/M)
var/response = alert(M, "What type of lost drone are you? Do note, that dogborgs may have experienced different type of corruption ((Potential for having vore-related laws))", "Drone Type", "Regular", "Dogborg")
var/response = alert(M, "What type of lost drone are you? Do note, that dogborgs may have experienced different type of corruption ((High potential for having vore-related laws))", "Drone Type", "Regular", "Dogborg")
if(!(response == "Dogborg")) // No response somehow or Regular
return ..()
else
+1
View File
@@ -49,6 +49,7 @@
var/isRunning = 1 //If this event is currently running. You should not change this.
var/startedAt = 0 //When this event started.
var/endedAt = 0 //When this event ended.
var/processing_active = TRUE //VOREStation Addition
var/datum/event_meta/event_meta = null
/datum/event/nothing
+2 -1
View File
@@ -81,7 +81,8 @@
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Spider Infestation", /datum/event/spider_infestation, 30, list(ASSIGNMENT_SECURITY = 30), 1),
//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, "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)
)
add_disabled_events(list(
new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 30), 1),
+46
View File
@@ -0,0 +1,46 @@
/datum/event/morph_spawn
startWhen = 1
announceWhen = 15
var/announceProb = 50
/datum/event/morph_spawn/start()
processing_active = FALSE
var/obj/effect/landmark/spawnspot = null
var/list/possibleSpawnspots = list()
for(var/obj/effect/landmark/newSpawnspot in landmarks_list)
if(newSpawnspot.name == "morphspawn")
possibleSpawnspots += newSpawnspot
if(possibleSpawnspots.len)
spawnspot = pick(possibleSpawnspots)
else
break
if(!spawnspot)
processing_active = TRUE
return
var/datum/ghost_query/Q = new /datum/ghost_query/morph()
var/list/winner = Q.query()
if(winner.len)
var/mob/living/simple_mob/vore/hostile/morph/newMorph = new /mob/living/simple_mob/vore/hostile/morph(get_turf(spawnspot))
var/mob/observer/dead/D = winner[1]
if(D.mind)
D.mind.transfer_to(newMorph)
to_chat(D, "<span class='notice'>You are a <b>Morph</b>, somehow having gotten aboard the station in your wandering. \
You are wary of environment around you, but your primal hunger still calls for you to find prey. Seek a convincing disguise, \
using your amorphous form to traverse vents to find and consume weak prey.</span>")
to_chat(D, "<span class='notice'>You can use shift + click on objects to disguise yourself as them, but your strikes are nearly useless when you are disguised. \
You can undisguise yourself by shift + clicking yourself, but disguise being switched, or turned on and off has a short cooldown.</span>")
newMorph.ckey = D.ckey
newMorph.visible_message("<span class='warning'>A morph appears to crawl out of somewhere.</span>")
else
processing_active = TRUE
return
processing_active = TRUE
/datum/event/morph_spawn/announce()
if(announceProb)
command_announcement.Announce("Unknown entitity detected boarding [station_name()]. Exercise extra caution.", "Lifesign Alert", new_sound = 'sound/AI/aliens.ogg')
@@ -32,7 +32,7 @@
..()
laws = give_random_lawset_vore()
/mob/living/silicon/proc/give_random_lawset_vore() // Should be filled out with more vorish possibilities later
/mob/living/silicon/proc/give_random_lawset_vore()
// Decide what kind of laws we want to draw from.
var/law_class = pick(
prob(25);"good",
@@ -41,7 +41,7 @@
prob(15);"corrupted",
prob(10);"bad")
var/vore_law = prob(50) // 1/2 chance of having vore-related laws
var/vore_law = prob(80) // 4/5 chance of having vore-related laws
if(vore_law)
switch(law_class)
+12
View File
@@ -6956,6 +6956,9 @@
dir = 6
},
/obj/machinery/light,
/obj/effect/landmark{
name = "morphspawn"
},
/turf/simulated/floor/tiled/techfloor,
/area/tether/surfacebase/public_garden_one)
"ami" = (
@@ -9378,6 +9381,9 @@
icon_state = "alarm0";
pixel_x = 24
},
/obj/effect/landmark{
name = "morphspawn"
},
/turf/simulated/floor/tiled,
/area/tether/surfacebase/north_stairs_one)
"aqd" = (
@@ -21765,6 +21771,9 @@
dir = 4;
pixel_x = 24
},
/obj/effect/landmark{
name = "morphspawn"
},
/turf/simulated/floor/tiled/steel_dirty,
/area/rnd/xenobiology/xenoflora_storage)
"aJD" = (
@@ -30447,6 +30456,9 @@
icon_state = "tube-construct-stage1";
dir = 1
},
/obj/effect/landmark{
name = "morphspawn"
},
/turf/simulated/floor/wood,
/area/vacant/vacant_bar)
"aZJ" = (
+38 -29
View File
@@ -9656,12 +9656,20 @@
/turf/simulated/floor/tiled/techfloor,
/area/server)
"asU" = (
/obj/effect/floor_decal/techfloor{
dir = 6
/obj/machinery/firealarm{
dir = 2;
layer = 3.3;
pixel_x = 4;
pixel_y = 26
},
/obj/structure/flora/pottedplant/dead,
/turf/simulated/floor/tiled/techfloor,
/area/server)
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 4
},
/obj/effect/landmark{
name = "morphspawn"
},
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/paramed)
"asV" = (
/obj/effect/floor_decal/borderfloor{
dir = 8;
@@ -15018,21 +15026,15 @@
/turf/simulated/floor/plating,
/area/engineering/drone_fabrication)
"aBC" = (
/obj/machinery/light_switch{
pixel_y = 28
/obj/effect/floor_decal/techfloor{
dir = 6
},
/obj/effect/floor_decal/industrial/warning/corner{
icon_state = "warningcorner";
dir = 8
/obj/structure/flora/pottedplant/dead,
/obj/effect/landmark{
name = "morphspawn"
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 10
},
/obj/machinery/light/small{
dir = 4
},
/turf/simulated/floor/plating,
/area/engineering/drone_fabrication)
/turf/simulated/floor/tiled/techfloor,
/area/server)
"aBD" = (
/obj/structure/railing{
dir = 4
@@ -22683,17 +22685,24 @@
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/storage)
"aPW" = (
/obj/machinery/firealarm{
dir = 2;
layer = 3.3;
pixel_x = 4;
pixel_y = 26
/obj/machinery/light_switch{
pixel_y = 28
},
/obj/machinery/atmospherics/unary/vent_pump/on{
/obj/effect/floor_decal/industrial/warning/corner{
icon_state = "warningcorner";
dir = 8
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 10
},
/obj/machinery/light/small{
dir = 4
},
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/paramed)
/obj/effect/landmark{
name = "morphspawn"
},
/turf/simulated/floor/plating,
/area/engineering/drone_fabrication)
"aPX" = (
/obj/machinery/alarm{
pixel_x = 0;
@@ -36510,7 +36519,7 @@ aqf
aqP
arx
asj
asU
aBC
aok
aul
aui
@@ -39362,7 +39371,7 @@ ayG
azp
aDs
aAU
aBC
aPW
aCa
aCA
aCA
@@ -41290,7 +41299,7 @@ aab
aab
aac
aNz
aPW
asU
ahh
aan
ahd
+41 -26
View File
@@ -8388,22 +8388,17 @@
/turf/simulated/floor/tiled/techfloor/grid,
/area/crew_quarters/panic_shelter)
"anW" = (
/obj/structure/extinguisher_cabinet{
pixel_y = -31
},
/obj/effect/floor_decal/techfloor,
/obj/effect/floor_decal/techfloor/hole,
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 9
},
/obj/structure/cable/green{
d1 = 1;
d2 = 8;
icon_state = "1-8"
/obj/effect/floor_decal/techfloor{
dir = 6
},
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
/turf/simulated/floor/tiled/techfloor,
/area/crew_quarters/panic_shelter)
/obj/effect/landmark{
name = "morphspawn"
},
/turf/simulated/floor/tiled/dark,
/area/tether/surfacebase/medical/triage)
"anX" = (
/obj/machinery/light/small,
/obj/effect/floor_decal/industrial/warning/corner{
@@ -8502,8 +8497,25 @@
/turf/simulated/floor/tiled/techfloor,
/area/crew_quarters/panic_shelter)
"aog" = (
/turf/simulated/floor/tiled,
/area/tether/surfacebase/north_stairs_three)
/obj/structure/extinguisher_cabinet{
pixel_y = -31
},
/obj/effect/floor_decal/techfloor,
/obj/effect/floor_decal/techfloor/hole,
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 9
},
/obj/structure/cable/green{
d1 = 1;
d2 = 8;
icon_state = "1-8"
},
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
/obj/effect/landmark{
name = "morphspawn"
},
/turf/simulated/floor/tiled/techfloor,
/area/crew_quarters/panic_shelter)
"aoh" = (
/obj/machinery/alarm{
dir = 8;
@@ -26669,14 +26681,11 @@
/turf/simulated/floor/tiled,
/area/rnd/outpost/xenobiology/outpost_main)
"aSu" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 9
/obj/effect/landmark{
name = "morphspawn"
},
/obj/effect/floor_decal/techfloor{
dir = 6
},
/turf/simulated/floor/tiled/dark,
/area/tether/surfacebase/medical/triage)
/turf/simulated/floor/tiled,
/area/tether/surfacebase/north_stairs_three)
"aSv" = (
/obj/structure/cable/green{
icon_state = "4-8"
@@ -27847,6 +27856,12 @@
/turf/simulated/floor/reinforced,
/turf/simulated/shuttle/plating/carry,
/area/shuttle/tether/surface)
"aUm" = (
/obj/effect/landmark{
name = "morphspawn"
},
/turf/simulated/floor/tiled/techfloor,
/area/tether/surfacebase/shuttle_pad)
"aUx" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -41887,7 +41902,7 @@ alQ
amA
alc
anH
aog
aSu
aoA
alc
apx
@@ -44639,7 +44654,7 @@ aOu
aNx
aPc
aPr
aPM
aUm
aQa
aPb
aac
@@ -45695,7 +45710,7 @@ aab
aaq
aag
aSo
aSu
anW
aaz
aca
aca
@@ -47566,7 +47581,7 @@ alu
amk
amL
ant
anW
aog
aop
aoO
apj
+41 -17
View File
@@ -6193,6 +6193,9 @@
/area/gateway)
"akF" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/effect/landmark{
name = "morphspawn"
},
/turf/simulated/floor/tiled/dark,
/area/gateway)
"akG" = (
@@ -17252,6 +17255,23 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor,
/area/maintenance/station/spacecommandmaint)
"aDS" = (
/obj/structure/mirror{
dir = 4;
pixel_x = 28;
pixel_y = 0
},
/obj/structure/sink{
dir = 4;
icon_state = "sink";
pixel_x = 11;
pixel_y = 0
},
/obj/effect/landmark{
name = "morphspawn"
},
/turf/simulated/floor/tiled/white,
/area/crew_quarters/sleep/engi_wash)
"aDT" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
@@ -17491,6 +17511,12 @@
},
/turf/simulated/floor/tiled,
/area/tether/station/visitorhallway/laundry)
"aEk" = (
/obj/effect/landmark{
name = "morphspawn"
},
/turf/simulated/floor/plating,
/area/maintenance/abandonedlibrary)
"aEl" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 5
@@ -17518,6 +17544,18 @@
},
/turf/simulated/floor/tiled,
/area/tether/station/dock_two)
"aEo" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 5
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 6
},
/obj/effect/landmark{
name = "morphspawn"
},
/turf/simulated/floor/tiled,
/area/tether/station/dock_two)
"aEx" = (
/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{
icon_state = "map";
@@ -17904,20 +17942,6 @@
},
/turf/simulated/floor/tiled,
/area/engineering/hallway)
"aGx" = (
/obj/structure/mirror{
dir = 4;
pixel_x = 28;
pixel_y = 0
},
/obj/structure/sink{
dir = 4;
icon_state = "sink";
pixel_x = 11;
pixel_y = 0
},
/turf/simulated/floor/tiled/white,
/area/crew_quarters/sleep/engi_wash)
"aGy" = (
/obj/structure/cable{
d1 = 1;
@@ -31321,7 +31345,7 @@ auz
aBE
aLj
aEM
aGx
aDS
aIn
aKl
aMp
@@ -31501,7 +31525,7 @@ aHw
aDK
aEn
aEO
aFt
aEo
aGb
aIR
bPF
@@ -37031,7 +37055,7 @@ amU
aoK
anY
apk
anp
aEk
aqc
amU
aac
+21 -9
View File
@@ -2540,6 +2540,9 @@
icon_state = "alarm0";
pixel_y = -22
},
/obj/effect/landmark{
name = "morphspawn"
},
/turf/simulated/floor/tiled/white,
/area/tether/exploration/showers)
"dG" = (
@@ -8651,6 +8654,9 @@
d2 = 8;
icon_state = "4-8"
},
/obj/effect/landmark{
name = "morphspawn"
},
/turf/simulated/floor/tiled/dark,
/area/storage/tech)
"mF" = (
@@ -12692,6 +12698,9 @@
/obj/machinery/hologram/holopad,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/effect/landmark{
name = "morphspawn"
},
/turf/simulated/floor/tiled/dark,
/area/ai_monitored/storage/eva)
"sR" = (
@@ -13950,6 +13959,17 @@
"uW" = (
/turf/simulated/wall,
/area/medical/morgue)
"uX" = (
/obj/machinery/alarm{
dir = 4;
pixel_x = -23;
pixel_y = 0
},
/obj/effect/landmark{
name = "morphspawn"
},
/turf/simulated/floor/tiled/white,
/area/medical/recoveryrestroom)
"uY" = (
/obj/structure/table/woodentable,
/obj/item/weapon/paper_bin{
@@ -18634,14 +18654,6 @@
},
/turf/simulated/floor/tiled/white,
/area/medical/ward)
"CM" = (
/obj/machinery/alarm{
dir = 4;
pixel_x = -23;
pixel_y = 0
},
/turf/simulated/floor/tiled/white,
/area/medical/recoveryrestroom)
"CN" = (
/obj/machinery/washing_machine,
/turf/simulated/floor/tiled/white,
@@ -33641,7 +33653,7 @@ Ay
BM
Cf
Cz
CM
uX
Ce
EG
EQ
+68 -41
View File
@@ -4560,6 +4560,9 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 9
},
/obj/effect/landmark{
name = "morphspawn"
},
/turf/simulated/floor/tiled,
/area/security/eva)
"hw" = (
@@ -6365,11 +6368,10 @@
/turf/simulated/floor/tiled,
/area/security/hallwayaux)
"jV" = (
/obj/machinery/light/small{
dir = 1
},
/turf/simulated/floor/tiled,
/area/maintenance/station/cargo)
/obj/structure/shuttle/engine/propulsion,
/turf/simulated/floor/reinforced,
/turf/simulated/shuttle/plating/airless/carry,
/area/shuttle/excursion/tether)
"jW" = (
/obj/structure/bed/chair/office/dark{
dir = 4
@@ -13152,10 +13154,17 @@
/turf/simulated/floor/wood,
/area/hallway/station/upper)
"un" = (
/obj/structure/shuttle/engine/propulsion,
/turf/simulated/floor/reinforced,
/turf/simulated/shuttle/plating/airless/carry,
/area/shuttle/excursion/tether)
/obj/effect/floor_decal/steeldecal/steel_decals10{
dir = 6
},
/obj/effect/floor_decal/steeldecal/steel_decals10{
dir = 5
},
/obj/effect/landmark{
name = "morphspawn"
},
/turf/simulated/floor/tiled,
/area/security/security_bathroom)
"uo" = (
/obj/structure/disposalpipe/segment{
dir = 4;
@@ -17512,11 +17521,14 @@
/turf/simulated/floor/tiled,
/area/tether/station/stairs_three)
"Bb" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 10
/obj/machinery/light/small{
dir = 1
},
/turf/simulated/floor/tiled/dark,
/area/security/nuke_storage)
/obj/effect/landmark{
name = "morphspawn"
},
/turf/simulated/floor/tiled,
/area/maintenance/station/cargo)
"Bc" = (
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 4
@@ -27093,24 +27105,24 @@
/turf/simulated/floor/tiled/white,
/area/medical/virology)
"Qp" = (
/obj/structure/shuttle/engine/propulsion{
dir = 8;
icon_state = "propulsion_l"
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 10
},
/turf/space,
/turf/simulated/shuttle/plating/airless/carry,
/area/shuttle/large_escape_pod1/station)
/obj/effect/landmark{
name = "morphspawn"
},
/turf/simulated/floor/tiled/dark,
/area/security/nuke_storage)
"Qq" = (
/obj/structure/shuttle/engine/propulsion{
dir = 8
/obj/effect/landmark{
name = "morphspawn"
},
/turf/space,
/turf/simulated/shuttle/plating/airless/carry,
/area/shuttle/large_escape_pod1/station)
/turf/simulated/floor/tiled/white,
/area/crew_quarters/medical_restroom)
"Qr" = (
/obj/structure/shuttle/engine/propulsion{
dir = 8;
icon_state = "propulsion_r"
icon_state = "propulsion_l"
},
/turf/space,
/turf/simulated/shuttle/plating/airless/carry,
@@ -27134,6 +27146,21 @@
"Qt" = (
/turf/simulated/wall,
/area/tether/exploration)
"Qu" = (
/obj/structure/shuttle/engine/propulsion{
dir = 8
},
/turf/space,
/turf/simulated/shuttle/plating/airless/carry,
/area/shuttle/large_escape_pod1/station)
"Qv" = (
/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)
"Qw" = (
/obj/effect/floor_decal/techfloor{
dir = 8
@@ -34189,7 +34216,7 @@ xw
xw
zf
zT
Bb
Qp
BW
CU
xw
@@ -35489,7 +35516,7 @@ Qx
Nl
Md
Nl
Nl
Qq
Yz
vt
vt
@@ -39326,11 +39353,11 @@ MK
Iy
ab
NL
Qp
Qq
Qq
Qq
Qr
Qu
Qu
Qu
Qv
NL
vt
vt
@@ -39417,7 +39444,7 @@ TX
WB
uL
Uw
UV
un
fG
af
fc
@@ -40553,7 +40580,7 @@ Zy
WG
dj
XA
un
jV
ms
Oz
be
@@ -40578,7 +40605,7 @@ vv
xS
fF
AH
jV
Bb
yP
AH
Ai
@@ -40695,7 +40722,7 @@ UJ
Xb
dj
XN
un
jV
ms
Xq
be
@@ -40837,7 +40864,7 @@ iW
WS
dj
XN
un
jV
ms
Xq
be
@@ -41120,7 +41147,7 @@ jZ
WR
Xo
XN
un
jV
cK
ms
Xq
@@ -41688,7 +41715,7 @@ ea
kx
dj
XN
un
jV
cK
ms
mq
@@ -41973,7 +42000,7 @@ kQ
TG
dj
XN
un
jV
ms
mq
be
@@ -42115,7 +42142,7 @@ kR
Vd
dj
XN
un
jV
ms
QL
be
@@ -42257,7 +42284,7 @@ ZE
ZB
dj
XB
un
jV
ms
Sq
be
+2
View File
@@ -271,6 +271,7 @@
#include "code\datums\datumvars.dm"
#include "code\datums\EPv2.dm"
#include "code\datums\ghost_query.dm"
#include "code\datums\ghost_query_vr.dm"
#include "code\datums\hierarchy.dm"
#include "code\datums\mind.dm"
#include "code\datums\mind_vr.dm"
@@ -1870,6 +1871,7 @@
#include "code\modules\events\money_hacker.dm"
#include "code\modules\events\money_lotto.dm"
#include "code\modules\events\money_spam.dm"
#include "code\modules\events\morph_spawn_vr.dm"
#include "code\modules\events\prison_break.dm"
#include "code\modules\events\radiation_storm.dm"
#include "code\modules\events\random_antagonist.dm"