Merge remote-tracking branch 'upstream/master'
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
#include "map_files\PubbyStation\PubbyStation.dmm"
|
||||
#include "map_files\BoxStation\BoxStation.dmm"
|
||||
#include "map_files\LambdaStation\lambda.dmm"
|
||||
#include "map_files\SpookyStation\SpookyStation.dmm"
|
||||
|
||||
#ifdef CIBUILDING
|
||||
#include "templates.dm"
|
||||
|
||||
@@ -365,13 +365,6 @@
|
||||
/obj/machinery/door/firedoor,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/central)
|
||||
"aQ" = (
|
||||
/obj/machinery/door/airlock/hatch{
|
||||
name = "Telecomms Control Room";
|
||||
req_one_access_txt = "19; 61"
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/tcommsat/chamber)
|
||||
"aR" = (
|
||||
/obj/item/electropack/shockcollar,
|
||||
/obj/item/assembly/signaler,
|
||||
@@ -3201,6 +3194,12 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/service/hydroponics/garden/monastery)
|
||||
"iA" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/tcommsat/chamber)
|
||||
"iC" = (
|
||||
/obj/effect/turf_decal/tile/neutral{
|
||||
dir = 1
|
||||
@@ -5602,6 +5601,12 @@
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/solars/starboard)
|
||||
"ox" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/space/nearstation)
|
||||
"oy" = (
|
||||
/obj/structure/railing{
|
||||
dir = 4;
|
||||
@@ -7714,12 +7719,6 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3,
|
||||
/turf/open/floor/carpet/blue,
|
||||
/area/commons/vacant_room/office)
|
||||
"tS" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "0-2"
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/tcommsat/chamber)
|
||||
"tT" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
@@ -14697,6 +14696,15 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/commons/fitness/recreation)
|
||||
"LG" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/obj/structure/cable{
|
||||
icon_state = "2-4"
|
||||
},
|
||||
/turf/open/floor/plating/airless,
|
||||
/area/space/nearstation)
|
||||
"LH" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
@@ -37240,11 +37248,11 @@ lQ
|
||||
Yv
|
||||
Yv
|
||||
Yv
|
||||
dh
|
||||
Yv
|
||||
Yv
|
||||
aQ
|
||||
tS
|
||||
LG
|
||||
ox
|
||||
ox
|
||||
kF
|
||||
iA
|
||||
kF
|
||||
Gq
|
||||
LC
|
||||
|
||||
@@ -13476,24 +13476,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/ai_monitored/security/armory)
|
||||
"ayl" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/effect/turf_decal/tile/red{
|
||||
dir = 1
|
||||
},
|
||||
/obj/item/storage/secure/briefcase{
|
||||
pixel_x = -2
|
||||
},
|
||||
/obj/item/book/manual/wiki/security_space_law,
|
||||
/obj/item/cartridge/detective,
|
||||
/obj/machinery/power/apc{
|
||||
areastring = "/area/command/heads_quarters/hos";
|
||||
dir = 1;
|
||||
name = "Head of Security's Office APC";
|
||||
pixel_y = 23
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/command/heads_quarters/hos)
|
||||
"aym" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/effect/turf_decal/tile/red{
|
||||
@@ -14825,15 +14807,6 @@
|
||||
/obj/effect/turf_decal/bot,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/command/heads_quarters/hos)
|
||||
"aAy" = (
|
||||
/obj/machinery/computer/prisoner{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/tile/red{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/command/heads_quarters/hos)
|
||||
"aAz" = (
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
/obj/structure/cable,
|
||||
@@ -34520,13 +34493,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/exit/departure_lounge)
|
||||
"bpO" = (
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
/obj/structure/cable{
|
||||
icon_state = "0-4"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/hallway/secondary/exit/departure_lounge)
|
||||
"bpP" = (
|
||||
/obj/structure/lattice/catwalk,
|
||||
/obj/item/wrench,
|
||||
@@ -49053,18 +49019,6 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engineering/main)
|
||||
"cgv" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/power/apc/highcap/fifteen_k{
|
||||
areastring = "/area/engineering/main";
|
||||
dir = 1;
|
||||
name = "Engine Room APC";
|
||||
pixel_y = 23
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engineering/main)
|
||||
"cgw" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
@@ -63058,6 +63012,37 @@
|
||||
/obj/effect/landmark/start/prisoner,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/security/prison)
|
||||
"cZR" = (
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
/obj/structure/cable{
|
||||
icon_state = "0-4"
|
||||
},
|
||||
/obj/structure/cable{
|
||||
icon_state = "0-2"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/hallway/secondary/exit/departure_lounge)
|
||||
"dbH" = (
|
||||
/obj/structure/table/wood,
|
||||
/obj/effect/turf_decal/tile/red{
|
||||
dir = 1
|
||||
},
|
||||
/obj/item/storage/secure/briefcase{
|
||||
pixel_x = -2
|
||||
},
|
||||
/obj/item/book/manual/wiki/security_space_law,
|
||||
/obj/item/cartridge/detective,
|
||||
/obj/machinery/power/apc{
|
||||
areastring = "/area/command/heads_quarters/hos";
|
||||
dir = 1;
|
||||
name = "Head of Security's Office APC";
|
||||
pixel_y = 23
|
||||
},
|
||||
/obj/structure/cable{
|
||||
icon_state = "0-2"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/command/heads_quarters/hos)
|
||||
"dcB" = (
|
||||
/obj/effect/turf_decal/trimline/neutral/filled/line{
|
||||
dir = 4
|
||||
@@ -64982,6 +64967,21 @@
|
||||
/obj/structure/stairs/south,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/maintenance/department/cargo)
|
||||
"gci" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/power/apc/highcap/fifteen_k{
|
||||
areastring = "/area/engineering/main";
|
||||
dir = 1;
|
||||
name = "Engine Room APC";
|
||||
pixel_y = 23
|
||||
},
|
||||
/obj/structure/cable{
|
||||
icon_state = "0-2"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engineering/main)
|
||||
"gcM" = (
|
||||
/obj/effect/turf_decal/tile/red{
|
||||
dir = 8
|
||||
@@ -66100,6 +66100,15 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"igd" = (
|
||||
/obj/effect/turf_decal/tile/red{
|
||||
dir = 4
|
||||
},
|
||||
/obj/machinery/computer/secure_data{
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/command/heads_quarters/hos)
|
||||
"igf" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -117845,7 +117854,7 @@ axW
|
||||
awm
|
||||
axd
|
||||
axF
|
||||
ayl
|
||||
dbH
|
||||
azp
|
||||
aAr
|
||||
aBS
|
||||
@@ -119645,7 +119654,7 @@ ayO
|
||||
aCD
|
||||
axF
|
||||
ays
|
||||
aAy
|
||||
igd
|
||||
aBz
|
||||
cAp
|
||||
cJw
|
||||
@@ -120782,7 +120791,7 @@ lQs
|
||||
ceh
|
||||
ceP
|
||||
cXQ
|
||||
cgv
|
||||
gci
|
||||
chh
|
||||
cia
|
||||
cku
|
||||
@@ -128946,7 +128955,7 @@ bnL
|
||||
bot
|
||||
boJ
|
||||
blZ
|
||||
bpO
|
||||
cZR
|
||||
bqG
|
||||
brm
|
||||
blZ
|
||||
@@ -129202,7 +129211,7 @@ jqb
|
||||
bnL
|
||||
bot
|
||||
eec
|
||||
bpO
|
||||
cZR
|
||||
bip
|
||||
bqH
|
||||
brn
|
||||
|
||||
@@ -1504,7 +1504,6 @@
|
||||
areastring = "/area/security/prison/upper";
|
||||
damage_deflection = 21;
|
||||
desc = "A control terminal for the area's electrical systems. It's secured with a durable antitampering plasteel cage.";
|
||||
dir = 2;
|
||||
name = "Armored Prison Wing Cells APC";
|
||||
pixel_y = -26
|
||||
},
|
||||
@@ -12552,9 +12551,7 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"aWV" = (
|
||||
/obj/effect/turf_decal/stripes/corner{
|
||||
dir = 2
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/corner,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/secondary/entry)
|
||||
"aWW" = (
|
||||
@@ -43635,7 +43632,8 @@
|
||||
idDoor = "xeno_airlock_exterior";
|
||||
idSelf = "xeno_airlock_control";
|
||||
name = "Access Button";
|
||||
pixel_x = -24
|
||||
pixel_x = -24;
|
||||
req_access_txt = "47"
|
||||
},
|
||||
/obj/structure/cable/yellow{
|
||||
icon_state = "1-2"
|
||||
@@ -45280,7 +45278,7 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/starboard)
|
||||
"dbl" = (
|
||||
/obj/structure/easel,
|
||||
/obj/structure/loot_pile/maint,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/starboard/aft)
|
||||
"dbo" = (
|
||||
@@ -45465,7 +45463,8 @@
|
||||
idSelf = "xeno_airlock_control";
|
||||
name = "Access Button";
|
||||
pixel_x = 29;
|
||||
pixel_y = -8
|
||||
pixel_y = -8;
|
||||
req_access_txt = "47"
|
||||
},
|
||||
/obj/machinery/firealarm{
|
||||
pixel_y = 24
|
||||
@@ -45640,7 +45639,8 @@
|
||||
idSelf = "xeno_airlock_control";
|
||||
name = "Access Console";
|
||||
pixel_x = -25;
|
||||
pixel_y = -25
|
||||
pixel_y = -25;
|
||||
req_access_txt = "47"
|
||||
},
|
||||
/obj/effect/turf_decal/tile/purple{
|
||||
dir = 1
|
||||
@@ -46619,10 +46619,10 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/fore)
|
||||
"dht" = (
|
||||
/obj/item/cigbutt,
|
||||
/obj/structure/sign/poster/contraband/random{
|
||||
pixel_x = -32
|
||||
},
|
||||
/obj/structure/loot_pile/maint,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/starboard/fore)
|
||||
"dhu" = (
|
||||
@@ -52041,6 +52041,7 @@
|
||||
/obj/structure/extinguisher_cabinet{
|
||||
pixel_y = -30
|
||||
},
|
||||
/obj/structure/loot_pile/maint,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/port/aft)
|
||||
"fpg" = (
|
||||
@@ -56725,6 +56726,13 @@
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/service/hydroponics)
|
||||
"iaH" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
dir = 9
|
||||
},
|
||||
/obj/structure/loot_pile/maint,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/starboard)
|
||||
"ibn" = (
|
||||
/obj/structure/cable/yellow{
|
||||
icon_state = "1-2"
|
||||
@@ -65226,6 +65234,10 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/cargo/storage)
|
||||
"mKY" = (
|
||||
/obj/structure/loot_pile/maint,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/port)
|
||||
"mLh" = (
|
||||
/obj/structure/cable/yellow{
|
||||
icon_state = "4-8"
|
||||
@@ -67942,6 +67954,10 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
|
||||
/turf/closed/wall,
|
||||
/area/security/brig)
|
||||
"osn" = (
|
||||
/obj/structure/loot_pile/maint,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/starboard/fore)
|
||||
"osB" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/airlock/external{
|
||||
@@ -73549,7 +73565,6 @@
|
||||
/area/commons/fitness/recreation)
|
||||
"rta" = (
|
||||
/obj/machinery/door/airlock/external{
|
||||
dir = 2;
|
||||
name = "Public Mining Dock"
|
||||
},
|
||||
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
|
||||
@@ -74329,6 +74344,10 @@
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/command/bridge)
|
||||
"rPp" = (
|
||||
/obj/structure/loot_pile/maint,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/port/fore)
|
||||
"rPB" = (
|
||||
/obj/effect/spawner/structure/window,
|
||||
/turf/open/floor/plating,
|
||||
@@ -78146,7 +78165,6 @@
|
||||
/obj/structure/bed/roller,
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Prison Hallway Fore";
|
||||
dir = 2;
|
||||
network = list("ss13","prison")
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -99568,7 +99586,7 @@ arX
|
||||
dne
|
||||
dne
|
||||
dne
|
||||
aRG
|
||||
rPp
|
||||
aoc
|
||||
drQ
|
||||
dne
|
||||
@@ -99866,7 +99884,7 @@ auF
|
||||
bCJ
|
||||
tUa
|
||||
alK
|
||||
apz
|
||||
mKY
|
||||
aob
|
||||
alC
|
||||
aqK
|
||||
@@ -104958,7 +104976,7 @@ aji
|
||||
dnd
|
||||
alE
|
||||
vhj
|
||||
aRG
|
||||
rPp
|
||||
alE
|
||||
dou
|
||||
dne
|
||||
@@ -122203,7 +122221,7 @@ nQW
|
||||
yeJ
|
||||
pSY
|
||||
avD
|
||||
dnR
|
||||
osn
|
||||
dtS
|
||||
tMD
|
||||
eoN
|
||||
@@ -125064,7 +125082,7 @@ alq
|
||||
diu
|
||||
bWZ
|
||||
bYs
|
||||
bZB
|
||||
iaH
|
||||
bZE
|
||||
ccG
|
||||
ceb
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,354 @@
|
||||
//Halloween Fluff Papers!
|
||||
|
||||
/obj/item/paper/fluff/balls/spookyasylum/memo/cookmemo
|
||||
name = "Memo: Cooks"
|
||||
info = "If you're reading this, thank you for volunteering your culinary services! Not only are you helping to keep costs down by rendering bluespace catering unnecessary, but you're also helping to give this event an 'organic' touch!<br>This isn't your typical day on the job, so be sure to focus on quality, not quantity. People are expecting better food than normal, and we've given you higher-quality cuts than usual to work with. Ideally you'll have botany to help with produce - if not, we may be able to deliver you some.<br>Remember to account for crew dietary concerns and provide those with less flexible digestive systems with more than one option if possible. Lastly, be sure to avoid foods that are particularly dangerous, we aren't looking for meals to \"die for\"<br>-Generated by Organic Resources Department Bot #7004"
|
||||
|
||||
/obj/item/paper/fluff/balls/spookyasylum/memo/botanymemo
|
||||
name = "Memo: Botanists"
|
||||
info = "If you're reading this, thank you for lending us your \"green thumbs\"! Provided a cook is on duty, you'll save us the trouble of bluespace shipping produce, as well as giving us the privilege of saying it was \"locally sourced\"! If there isn't a chef...we may be able to put what you grow to good use yet.<br>Remember, your primary goal here is to produce produce. Not cannabis, not tomatoes that mutate people, we want things people can safely eat. Do what you can for the cook if there is one - otherwise, aspire for variety.<br>-Generated by Organic Resources Department Bot #7004"
|
||||
|
||||
/obj/item/paper/fluff/balls/spookyasylum/memo/janniememo
|
||||
name = "Memo: Janitors"
|
||||
info = "If you're reading this, thanks for volunteering your janitorial services! You're greatly appreciated today, as this event will likely remind you why Citadel custodians command a higher salary than their counterparts in other sectors.<br>On the bright side, you shouldn't expect much in the way of danger.<br>-Generated by Organic Resources Department Bot #7004"
|
||||
|
||||
/obj/item/paper/fluff/balls/spookyasylum/memo/securitymemo
|
||||
name = "Security Debrief"
|
||||
info = "<b>Greetings Security Officers,</b><br>Whether you've chosen or been chosen to help oversee this event, we appreciate your service today. Although this may come as a disappointment to some of you, we can absolutely confirm a lack of credible threats for once. As such, your primary mission is to keep the peace.<br>Central Command understands this may be difficult for those of you from military backgrounds - fortunately, we intend to be far more accessible for the sake of this event. Feel free to contact us if you have any uncertainties how to handle a situation, as cost is not the concern it normally is. However, you're expected to follow any orders we give to the best of your ability.<br>Some other things you should be aware of:<br>- You may see civilians in security apparel - this is to be expected as \"shitsec\" costumes are trending on the NTnet. For this reason we have issued you special uniforms. If you see a partygoer in THOSE, THEN you may have reason for concern.<br>- Items that may normally be cause for alarm can generally be assumed to be toys and/or replicas, potentially as part of a costume. You'll be informed whether an item is to be of concern, as Central Command will be handling much of the surveillance work.<br>- Speaking of surveillance, the chapel and larger building to the east are not equipped with cameras. The chapel has been fully investigated by an Inquistion, but due to \[REDACTED] they were unable to do the same for the east compound. You are not responsible for what goes on in these areas and partygoers have been warned to enter at their own risk.<br>-Central Command"
|
||||
|
||||
/obj/item/paper/fluff/balls/spookyasylum/diary/diary01
|
||||
name = "7/31/2559"
|
||||
info = "People who say they can't afford any more than a nanoapartment really need to broaden their horizons. You'd be amazed by what you can find if you're willing to put up with a longer commute! I mean look at me, I got a place with square footage that'd put First Victorians to shame!<br>Part of why this place was so cheap was because some \"terrible things\" happened here in the past, apparently. Still, what's in the past is in the past, is it not?"
|
||||
|
||||
/obj/item/paper/fluff/balls/spookyasylum/diary/diary02
|
||||
name = "8/2/2559"
|
||||
info = "Nice as this place is, it's kind of lonely. It also might be a bit tough to maintain all by myself, so what if I made it a hotel? Something like this'd surely stand out, especially when most of the hotels around here are Twin Nexuses.<br>It's not that they're not nice places - it's just that when you've been to one, you've been to them all. A hotel here? It'd be one of a kind!"
|
||||
|
||||
/obj/item/paper/fluff/balls/spookyasylum/diary/diary03
|
||||
name = "9/13/2559"
|
||||
info = "<center>All hell has broken loose.</center><br>In the early evening, hundreds, maybe thousands of ghosts burst out of the chapel and old medical wing. They rushed through the halls, breaking any lights they passed. Then it happened.<br>We had quite a few doctors present that night, and suddenly they all went insane. One barged into the kitchen and dove headfirst into the gibber. The rest charged into medbay, each seeming to choose a unique method of suicide. Lethal injections, the electric chair, self-lobotomy - each seemed to top the last in absurdity. Then the ghosts all converged back in the chapel, appearing to vanish as quickly as they arrived.<br>All my remaining guests and staff have fled. Everyone seemed to have somewhere they could go...except for me. I can only pray these spirits don't take me in my sleep..."
|
||||
|
||||
/obj/item/paper/fluff/balls/spookyasylum/diary/diary04
|
||||
name = "9/16/2559"
|
||||
info = "Word travels a lot faster than I thought, I haven't seen a customer in days...<br>The good news is that whatever happened a few days hasn't repeated itself. It's just me here - any staff I had resigned immediately after what went down on the 13th. I'm sure I could handle a few guests but am I gonna see one anytime soon?"
|
||||
|
||||
/obj/item/paper/fluff/balls/spookyasylum/diary/diary05
|
||||
name = "10/7/2559"
|
||||
info = "Finally, I'm free of this nightmare.<br>Some folks showed up for the first time in weeks, said they were a part of \"NanoTransen\" or something. They seemed shocked I haven't heard of them, but all I care about is the fact they were willing to buy this place. I figured I'd at least get what I invested at this place, but for a \"megacorporation\" they sure seemed like a bunch of tightwads. Still, I took their offer.<br>It's their problem now."
|
||||
|
||||
/obj/item/paper/fluff/balls/spookyasylum/cell03
|
||||
name = "Cell 3 Patient Information"
|
||||
info = "<b>Name:</b> J. Crane<br><b>Age:</b> 46 <b>Gender:</b> M <b>Height:</b> 183cm <b>Weight:</b> 81kg<br><b>Notes:</b> Patient exhibits violent tendencies and is not to be released from restraints under any circumstances. To reduce risk of violent outbreaks, birds; which patient has a strong phobia towards; are no longer allowed in proximity of cells, this includes the chief of staff's pet parrot."
|
||||
|
||||
/obj/item/paper/fluff/balls/spookyasylum/cell04
|
||||
name = "Cell 4 Patient Information"
|
||||
info = "<b>Name:</b> Fidel S.<br><b>Age:</b> 20 <b>Gender:</b> M <b>Height:</b> 170cm <b>Weight:</b> 68kg<br><b>Notes:</b> Patient appears to be under the delusion that he is a dog, suffers from incontinence, and bites staff. Patient to be kept restrained in cell after attacking orderly Robinson, do not remove patient's muzzle outside designated meal periods."
|
||||
|
||||
/obj/item/paper/fluff/balls/spookyasylum/traffickingvictim
|
||||
name = "Cell 1 Patient Information"
|
||||
info = "<b>Name:</b> S. Albright<br><b>Age:</b> 26 <b>Gender:</b> F <b>Height:</b> 174cm <b>Weight:</b> 63kg<br><b>Notes:</b> \[The notes are crossed out and unreadable, but there is writing on the back of the paper] Buyer found in Sol system, wealthy Martian man looking for a cheap bride, doesn't mind poor condition of the merchandise. Will be packaging with the next supply ship for transport."
|
||||
|
||||
/obj/item/paper/fluff/balls/spookyasylum/healstaffnote
|
||||
name = "Shipping Manifest 'Healing Staves'"
|
||||
info = "Contained in this chest are several magical healing staves created by NT sanctioned warlocks, please use them in the event an employee is injured during the festivities. We hope you have a safe and enjoyable celebration, remember you are expected to return to work promptly at its conclusion.<br>We apologize in the unlikely event the contents of the crate are scattered around the asylum by its teleportation."
|
||||
|
||||
//Dorm Buttons
|
||||
|
||||
/obj/machinery/button/door/dorms/dorm01
|
||||
name = "dorm 1 button"
|
||||
id = "D100"
|
||||
normaldoorcontrol = 1
|
||||
pixel_x = 24
|
||||
specialfunctions = 4
|
||||
|
||||
/obj/machinery/button/door/dorms/dorm02
|
||||
name = "dorm 2 button"
|
||||
id = "D101"
|
||||
normaldoorcontrol = 1
|
||||
pixel_x = 24
|
||||
specialfunctions = 4
|
||||
|
||||
/obj/machinery/button/door/dorms/dorm03
|
||||
name = "dorm 3 button"
|
||||
id = "D102"
|
||||
normaldoorcontrol = 1
|
||||
pixel_x = 24
|
||||
specialfunctions = 4
|
||||
|
||||
/obj/machinery/button/door/dorms/dorm04
|
||||
name = "dorm 4 button"
|
||||
id = "D103"
|
||||
normaldoorcontrol = 1
|
||||
pixel_x = 24
|
||||
specialfunctions = 4
|
||||
|
||||
/obj/machinery/button/door/dorms/dorm05
|
||||
name = "dorm 5 button"
|
||||
id = "D104"
|
||||
normaldoorcontrol = 1
|
||||
pixel_x = -24
|
||||
specialfunctions = 4
|
||||
|
||||
/obj/machinery/button/door/dorms/dorm06
|
||||
name = "dorm 6 button"
|
||||
id = "D105"
|
||||
normaldoorcontrol = 1
|
||||
pixel_x = -24
|
||||
specialfunctions = 4
|
||||
|
||||
/obj/machinery/button/door/dorms/dorm07
|
||||
name = "dorm 7 button"
|
||||
id = "D106"
|
||||
normaldoorcontrol = 1
|
||||
pixel_x = -24
|
||||
specialfunctions = 4
|
||||
|
||||
/obj/machinery/button/door/dorms/dorm08
|
||||
name = "dorm 8 button"
|
||||
id = "D107"
|
||||
normaldoorcontrol = 1
|
||||
pixel_x = 24
|
||||
specialfunctions = 4
|
||||
|
||||
/obj/machinery/button/door/dorms/dorm09
|
||||
name = "dorm 9 button"
|
||||
id = "D108"
|
||||
normaldoorcontrol = 1
|
||||
pixel_x = 24
|
||||
specialfunctions = 4
|
||||
|
||||
/obj/machinery/button/door/dorms/dorm10
|
||||
name = "dorm 10 button"
|
||||
id = "D109"
|
||||
normaldoorcontrol = 1
|
||||
pixel_x = 24
|
||||
specialfunctions = 4
|
||||
|
||||
/obj/machinery/button/door/dorms/dorm11
|
||||
name = "dorm 11 button"
|
||||
id = "D110"
|
||||
normaldoorcontrol = 1
|
||||
pixel_x = -24
|
||||
specialfunctions = 4
|
||||
|
||||
/obj/machinery/button/door/dorms/dorm12
|
||||
name = "dorm 12 button"
|
||||
id = "D111"
|
||||
normaldoorcontrol = 1
|
||||
pixel_x = -24
|
||||
specialfunctions = 4
|
||||
|
||||
/obj/machinery/button/door/dorms/dorm13
|
||||
name = "dorm 13 button"
|
||||
id = "D112"
|
||||
normaldoorcontrol = 1
|
||||
pixel_x = -24
|
||||
specialfunctions = 4
|
||||
|
||||
/obj/machinery/button/door/dorms/dorm14
|
||||
name = "dorm 14 button"
|
||||
id = "D113"
|
||||
normaldoorcontrol = 1
|
||||
pixel_x = 24
|
||||
specialfunctions = 4
|
||||
|
||||
/obj/machinery/button/door/dorms/dorm15
|
||||
name = "dorm 15 button"
|
||||
id = "D114"
|
||||
normaldoorcontrol = 1
|
||||
pixel_x = 24
|
||||
specialfunctions = 4
|
||||
|
||||
/obj/machinery/button/door/dorms/dorm16
|
||||
name = "dorm 16 button"
|
||||
id = "D115"
|
||||
normaldoorcontrol = 1
|
||||
pixel_x = 24
|
||||
specialfunctions = 4
|
||||
|
||||
/obj/machinery/button/door/dorms/dorm17
|
||||
name = "dorm 17 button"
|
||||
id = "D116"
|
||||
normaldoorcontrol = 1
|
||||
pixel_x = -24
|
||||
specialfunctions = 4
|
||||
|
||||
/obj/machinery/button/door/dorms/dorm18
|
||||
name = "dorm 18 button"
|
||||
id = "D117"
|
||||
normaldoorcontrol = 1
|
||||
pixel_x = -24
|
||||
specialfunctions = 4
|
||||
|
||||
/obj/machinery/button/door/dorms/dorm19
|
||||
name = "dorm 19 button"
|
||||
id = "D118"
|
||||
normaldoorcontrol = 1
|
||||
pixel_x = -24
|
||||
specialfunctions = 4
|
||||
|
||||
/obj/machinery/button/door/dorms/dorm20
|
||||
name = "dorm 20 button"
|
||||
id = "D119"
|
||||
normaldoorcontrol = 1
|
||||
pixel_x = -24
|
||||
specialfunctions = 4
|
||||
|
||||
/obj/machinery/button/door/dorms/patient1
|
||||
name = "door bolt"
|
||||
id = "D120"
|
||||
normaldoorcontrol = 1
|
||||
pixel_x = 24
|
||||
pixel_y = -8
|
||||
specialfunctions = 4
|
||||
|
||||
/obj/machinery/button/door/dorms/patient2
|
||||
name = "door bolt"
|
||||
id = "D121"
|
||||
normaldoorcontrol = 1
|
||||
pixel_x = 24
|
||||
pixel_y = -8
|
||||
specialfunctions = 4
|
||||
|
||||
/obj/machinery/button/door/dorms/luxury1
|
||||
name = "Privacy Shutter Control"
|
||||
id = "L00"
|
||||
pixel_x = -8
|
||||
pixel_y = -24
|
||||
|
||||
/obj/machinery/button/door/dorms/luxury2
|
||||
name = "Privacy Shutter Control"
|
||||
id = "L01"
|
||||
pixel_x = 8
|
||||
pixel_y = -24
|
||||
|
||||
/obj/machinery/button/door/dorms/luxury3
|
||||
name = "Privacy Shutter Control"
|
||||
id = "L02"
|
||||
pixel_x = 8
|
||||
pixel_y = 24
|
||||
|
||||
/obj/machinery/button/door/dorms/luxury4
|
||||
name = "Privacy Shutter Control"
|
||||
id = "L03"
|
||||
pixel_x = -24
|
||||
pixel_y = 8
|
||||
|
||||
//Dorm Doors
|
||||
|
||||
/obj/machinery/door/airlock/wood/dorms/dorm01
|
||||
name = "Room 1"
|
||||
id_tag = "D100"
|
||||
|
||||
/obj/machinery/door/airlock/wood/dorms/dorm02
|
||||
name = "Room 2"
|
||||
id_tag = "D101"
|
||||
|
||||
/obj/machinery/door/airlock/wood/dorms/dorm03
|
||||
name = "Room 3"
|
||||
id_tag = "D102"
|
||||
|
||||
/obj/machinery/door/airlock/wood/dorms/dorm04
|
||||
name = "Room 4"
|
||||
id_tag = "D103"
|
||||
|
||||
/obj/machinery/door/airlock/wood/dorms/dorm05
|
||||
name = "Room 5"
|
||||
id_tag = "D104"
|
||||
|
||||
/obj/machinery/door/airlock/wood/dorms/dorm06
|
||||
name = "Room 6"
|
||||
id_tag = "D105"
|
||||
|
||||
/obj/machinery/door/airlock/wood/dorms/dorm07
|
||||
name = "Room 7"
|
||||
id_tag = "D106"
|
||||
|
||||
/obj/machinery/door/airlock/wood/dorms/dorm08
|
||||
name = "Room 8"
|
||||
id_tag = "D107"
|
||||
|
||||
/obj/machinery/door/airlock/wood/dorms/dorm09
|
||||
name = "Room 9"
|
||||
id_tag = "D108"
|
||||
|
||||
/obj/machinery/door/airlock/wood/dorms/dorm10
|
||||
name = "Room 10"
|
||||
id_tag = "D109"
|
||||
|
||||
/obj/machinery/door/airlock/wood/dorms/dorm11
|
||||
name = "Room 11"
|
||||
id_tag = "D110"
|
||||
|
||||
/obj/machinery/door/airlock/wood/dorms/dorm12
|
||||
name = "Room 12"
|
||||
id_tag = "D111"
|
||||
|
||||
/obj/machinery/door/airlock/wood/dorms/dorm13
|
||||
name = "Room 13"
|
||||
id_tag = "D112"
|
||||
|
||||
/obj/machinery/door/airlock/wood/dorms/dorm14
|
||||
name = "Room 14"
|
||||
id_tag = "D113"
|
||||
|
||||
/obj/machinery/door/airlock/wood/dorms/dorm15
|
||||
name = "Room 15"
|
||||
id_tag = "D114"
|
||||
|
||||
/obj/machinery/door/airlock/wood/dorms/dorm16
|
||||
name = "Room 16"
|
||||
id_tag = "D115"
|
||||
|
||||
/obj/machinery/door/airlock/wood/dorms/dorm17
|
||||
name = "Room 17"
|
||||
id_tag = "D116"
|
||||
|
||||
/obj/machinery/door/airlock/wood/dorms/dorm18
|
||||
name = "Room 18"
|
||||
id_tag = "D117"
|
||||
|
||||
/obj/machinery/door/airlock/wood/dorms/dorm19
|
||||
name = "Room 19"
|
||||
id_tag = "D118"
|
||||
|
||||
/obj/machinery/door/airlock/wood/dorms/dorm20
|
||||
name = "Room 20"
|
||||
id_tag = "D119"
|
||||
|
||||
/obj/machinery/door/airlock/wood/dorms/patient1
|
||||
name = "Recovery Room 1"
|
||||
id_tag = "D120"
|
||||
|
||||
/obj/machinery/door/airlock/wood/dorms/patient2
|
||||
name = "Recovery Room 2"
|
||||
id_tag = "D121"
|
||||
|
||||
//Luxury Dorm Shutters
|
||||
|
||||
/obj/machinery/door/poddoor/shutters/preopen/luxury_dorms/luxury01
|
||||
name = "Luxury Dorm 1"
|
||||
id = "L00"
|
||||
|
||||
/obj/machinery/door/poddoor/shutters/preopen/luxury_dorms/luxury02
|
||||
name = "Luxury Dorm 2"
|
||||
id = "L01"
|
||||
|
||||
/obj/machinery/door/poddoor/shutters/preopen/luxury_dorms/luxury03
|
||||
name = "Luxury Dorm 3"
|
||||
id = "L02"
|
||||
|
||||
/obj/machinery/door/poddoor/shutters/preopen/luxury_dorms/luxury04
|
||||
name = "Luxury Dorm 4"
|
||||
id = "L03"
|
||||
|
||||
//This is just so I don't have to mass varedit!
|
||||
|
||||
/obj/structure/falsewall/halloweenBall/wood
|
||||
name = "wooden wall"
|
||||
desc = "A wall with wooden plating. Stiff."
|
||||
icon = 'icons/turf/walls/wood_wall.dmi'
|
||||
icon_state = "wood"
|
||||
mineral = /obj/item/stack/sheet/mineral/wood
|
||||
walltype = /turf/closed/wall/mineral/wood
|
||||
canSmoothWith = list(/obj/structure/falsewall/wood, /turf/closed/wall/mineral/wood, /turf/closed/indestructible/wood)
|
||||
@@ -0,0 +1,12 @@
|
||||
#define JOB_MODIFICATION_MAP_NAME "SpookyStation"
|
||||
|
||||
/turf
|
||||
baseturfs = /turf/open/floor/spooktime/spooktimegrass
|
||||
|
||||
MAP_REMOVE_JOB(geneticist)
|
||||
MAP_REMOVE_JOB(virologist)
|
||||
MAP_REMOVE_JOB(lawyer)
|
||||
MAP_REMOVE_JOB(scientist)
|
||||
MAP_REMOVE_JOB(lawyer)
|
||||
MAP_REMOVE_JOB(shaft_miner)
|
||||
MAP_REMOVE_JOB(AI)
|
||||
@@ -0,0 +1,4 @@
|
||||
#define FORCE_MAP "_maps/spookystation.json"
|
||||
|
||||
/turf
|
||||
baseturfs = /turf/open/floor/plating/spookbase/dirtattachmentpoint
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"map_name": "SpookyStation",
|
||||
"map_path": "map_files/SpookyStation",
|
||||
"map_file": "SpookyStation.dmm",
|
||||
"shuttles": {
|
||||
"emergency": "emergency_pubby",
|
||||
"whiteship": "whiteship_pubby",
|
||||
"ferry": "ferry_fancy",
|
||||
"cargo": "cargo_box"
|
||||
}
|
||||
}
|
||||
@@ -17,6 +17,7 @@ GLOBAL_LIST_EMPTY(all_clockwork_mobs) //All clockwork SERVANTS (not creatures) i
|
||||
GLOBAL_VAR_INIT(ratvar_approaches, 0) //The servants can choose to "herald" Ratvar, permanently buffing them but announcing their presence to the crew.
|
||||
GLOBAL_VAR_INIT(ratvar_awakens, 0) //If Ratvar has been summoned; not a boolean, for proper handling of multiple Ratvars
|
||||
GLOBAL_VAR_INIT(ark_of_the_clockwork_justiciar, FALSE) //The Ark on the Reebe z-level
|
||||
GLOBAL_VAR_INIT(reebe_loaded, FALSE) //Is reebe loaded right now? If two seperate things in one round try loading reebe.
|
||||
|
||||
GLOBAL_VAR_INIT(clockwork_gateway_activated, FALSE) //if a gateway to the celestial derelict has ever been successfully activated
|
||||
GLOBAL_VAR_INIT(script_scripture_unlocked, FALSE) //If script scripture is available, through converting at least one crewmember
|
||||
|
||||
@@ -173,23 +173,20 @@
|
||||
/proc/typecache_filter_list(list/atoms, list/typecache)
|
||||
RETURN_TYPE(/list)
|
||||
. = list()
|
||||
for(var/thing in atoms)
|
||||
var/atom/A = thing
|
||||
for(var/atom/A as anything in atoms)
|
||||
if (typecache[A.type])
|
||||
. += A
|
||||
|
||||
/proc/typecache_filter_list_reverse(list/atoms, list/typecache)
|
||||
RETURN_TYPE(/list)
|
||||
. = list()
|
||||
for(var/thing in atoms)
|
||||
var/atom/A = thing
|
||||
for(var/atom/A as anything in atoms)
|
||||
if(!typecache[A.type])
|
||||
. += A
|
||||
|
||||
/proc/typecache_filter_multi_list_exclusion(list/atoms, list/typecache_include, list/typecache_exclude)
|
||||
. = list()
|
||||
for(var/thing in atoms)
|
||||
var/atom/A = thing
|
||||
for(var/atom/A as anything in atoms)
|
||||
if(typecache_include[A.type] && !typecache_exclude[A.type])
|
||||
. += A
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
minimum_pressure = HAZARD_LOW_PRESSURE + 10
|
||||
maximum_pressure = LAVALAND_EQUIPMENT_EFFECT_PRESSURE - 1
|
||||
|
||||
minimum_temp = 270
|
||||
minimum_temp = 281
|
||||
maximum_temp = 320
|
||||
|
||||
/datum/atmosphere/lavaland/check_for_sanity(datum/gas_mixture/mix)
|
||||
|
||||
@@ -327,7 +327,7 @@
|
||||
/atom/movable/fov_holder/has_gravity(turf/T)
|
||||
return FALSE
|
||||
|
||||
/atom/movable/fov_holder/ex_act(severity)
|
||||
/atom/movable/fov_holder/ex_act(severity, target, origin)
|
||||
return FALSE
|
||||
|
||||
/atom/movable/fov_holder/singularity_act()
|
||||
|
||||
@@ -253,7 +253,7 @@ GLOBAL_LIST_EMPTY(explosions)
|
||||
if(dist > EXPLODE_NONE)
|
||||
T.explosion_level = max(T.explosion_level, dist) //let the bigger one have it
|
||||
T.explosion_id = id
|
||||
T.ex_act(dist)
|
||||
T.ex_act(dist, origin = src)
|
||||
exploded_this_tick += T
|
||||
|
||||
//--- THROW ITEMS AROUND ---
|
||||
|
||||
+15
-15
@@ -319,38 +319,38 @@ GLOBAL_LIST_EMPTY(teleportlocs)
|
||||
*
|
||||
* Sends to all ai players, alert consoles, drones and alarm monitor programs in the world
|
||||
*/
|
||||
/area/proc/poweralert(state, obj/source)
|
||||
/area/proc/poweralert(set_alarm, obj/source)
|
||||
if (area_flags & NO_ALERTS)
|
||||
return
|
||||
if (state != poweralm)
|
||||
poweralm = state
|
||||
if (set_alarm != poweralm)
|
||||
poweralm = set_alarm
|
||||
if(istype(source)) //Only report power alarms on the z-level where the source is located.
|
||||
for (var/item in GLOB.silicon_mobs)
|
||||
var/mob/living/silicon/aiPlayer = item
|
||||
if (state == 1)
|
||||
aiPlayer.cancelAlarm("Power", src, source)
|
||||
else
|
||||
if (set_alarm)
|
||||
aiPlayer.triggerAlarm("Power", src, cameras, source)
|
||||
else
|
||||
aiPlayer.cancelAlarm("Power", src, source)
|
||||
|
||||
for (var/item in GLOB.alert_consoles)
|
||||
var/obj/machinery/computer/station_alert/a = item
|
||||
if(state == 1)
|
||||
a.cancelAlarm("Power", src, source)
|
||||
else
|
||||
if (set_alarm)
|
||||
a.triggerAlarm("Power", src, cameras, source)
|
||||
else
|
||||
a.cancelAlarm("Power", src, source)
|
||||
|
||||
for (var/item in GLOB.drones_list)
|
||||
var/mob/living/simple_animal/drone/D = item
|
||||
if(state == 1)
|
||||
D.cancelAlarm("Power", src, source)
|
||||
else
|
||||
if (set_alarm)
|
||||
D.triggerAlarm("Power", src, cameras, source)
|
||||
else
|
||||
D.cancelAlarm("Power", src, source)
|
||||
for(var/item in GLOB.alarmdisplay)
|
||||
var/datum/computer_file/program/alarm_monitor/p = item
|
||||
if(state == 1)
|
||||
p.cancelAlarm("Power", src, source)
|
||||
else
|
||||
if (set_alarm)
|
||||
p.triggerAlarm("Power", src, cameras, source)
|
||||
else
|
||||
p.cancelAlarm("Power", src, source)
|
||||
|
||||
/area/proc/atmosalert(danger_level, obj/source)
|
||||
if (area_flags & NO_ALERTS)
|
||||
|
||||
+3
-3
@@ -610,12 +610,12 @@
|
||||
user.buckle_message_cooldown = world.time + 50
|
||||
to_chat(user, "<span class='warning'>You can't move while buckled to [src]!</span>")
|
||||
|
||||
/atom/proc/contents_explosion(severity, target)
|
||||
/atom/proc/contents_explosion(severity, target, origin)
|
||||
return //For handling the effects of explosions on contents that would not normally be effected
|
||||
|
||||
/atom/proc/ex_act(severity, target, datum/explosion/E)
|
||||
/atom/proc/ex_act(severity, target, origin)
|
||||
set waitfor = FALSE
|
||||
contents_explosion(severity, target)
|
||||
contents_explosion(severity, target, origin)
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_EX_ACT, severity, target)
|
||||
|
||||
/**
|
||||
|
||||
@@ -151,14 +151,8 @@ Credit where due:
|
||||
var/datum/team/clockcult/main_clockcult
|
||||
|
||||
/datum/game_mode/clockwork_cult/pre_setup() //Gamemode and job code is pain. Have fun codediving all of that stuff, whoever works on this next - Delta
|
||||
var/list/errorList = list()
|
||||
var/list/reebes = SSmapping.LoadGroup(errorList, "Reebe", "map_files/generic", "City_of_Cogs.dmm", default_traits = ZTRAITS_REEBE, silent = TRUE)
|
||||
if(errorList.len) // reebe failed to load
|
||||
message_admins("Reebe failed to load!")
|
||||
log_game("Reebe failed to load!")
|
||||
if(!load_reebe())
|
||||
return FALSE
|
||||
for(var/datum/parsed_map/PM in reebes) //Temporarily commented because of z-level loading reliably segfaulting the server.
|
||||
PM.initTemplateBounds()
|
||||
if(CONFIG_GET(flag/protect_roles_from_antagonist))
|
||||
restricted_jobs += protected_jobs
|
||||
if(CONFIG_GET(flag/protect_assistant_from_antagonist))
|
||||
|
||||
@@ -653,6 +653,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1)
|
||||
if (drafted_rules.len > 0)
|
||||
pick_midround_rule(drafted_rules)
|
||||
else if (random_event_hijacked == HIJACKED_TOO_SOON)
|
||||
message_admins("DYNAMIC: Midround injection failed when random event was hijacked. Spawning another random event in its place.")
|
||||
log_game("DYNAMIC: Midround injection failed when random event was hijacked. Spawning another random event in its place.")
|
||||
|
||||
// A random event antag would have rolled had this injection check passed.
|
||||
|
||||
@@ -58,9 +58,9 @@
|
||||
storedpda.forceMove(loc)
|
||||
storedpda = null
|
||||
|
||||
/obj/machinery/pdapainter/contents_explosion(severity, target)
|
||||
/obj/machinery/pdapainter/contents_explosion(severity, target, origin)
|
||||
if(storedpda)
|
||||
storedpda.ex_act(severity, target)
|
||||
storedpda.ex_act(severity, target, origin)
|
||||
|
||||
/obj/machinery/pdapainter/handle_atom_del(atom/A)
|
||||
if(A == storedpda)
|
||||
|
||||
@@ -405,9 +405,9 @@ Class Procs:
|
||||
update_appearance()
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/contents_explosion(severity, target)
|
||||
/obj/machinery/contents_explosion(severity, target, origin)
|
||||
if(occupant)
|
||||
occupant.ex_act(severity, target)
|
||||
occupant.ex_act(severity, target, origin)
|
||||
|
||||
/obj/machinery/handle_atom_del(atom/A)
|
||||
if(A == occupant)
|
||||
|
||||
@@ -55,9 +55,9 @@
|
||||
storedpart.forceMove(loc)
|
||||
storedpart = null
|
||||
|
||||
/obj/machinery/aug_manipulator/contents_explosion(severity, target)
|
||||
/obj/machinery/aug_manipulator/contents_explosion(severity, target, origin)
|
||||
if(storedpart)
|
||||
storedpart.ex_act(severity, target)
|
||||
storedpart.ex_act(severity, target, origin)
|
||||
|
||||
/obj/machinery/aug_manipulator/handle_atom_del(atom/A)
|
||||
if(A == storedpart)
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
M.reset_perspective(null)
|
||||
to_chat(M, "The screen bursts into static.")
|
||||
|
||||
/obj/machinery/camera/ex_act(severity, target)
|
||||
/obj/machinery/camera/ex_act(severity, target, origin)
|
||||
if(invuln)
|
||||
return
|
||||
..()
|
||||
|
||||
@@ -439,7 +439,7 @@
|
||||
mob_occupant.copy_from_prefs_vr()
|
||||
go_out()
|
||||
|
||||
/obj/machinery/clonepod/ex_act(severity, target)
|
||||
/obj/machinery/clonepod/ex_act(severity, target, origin)
|
||||
..()
|
||||
if(!QDELETED(src))
|
||||
go_out()
|
||||
|
||||
@@ -258,8 +258,8 @@
|
||||
|
||||
//heccing chonker passive, only gives more HP at the start of a new game but has one of the hardest weakpoint to trigger.
|
||||
if(LAZYACCESS(enemy_passive, "chonker"))
|
||||
if(weakpoint_check("chonker","power_attack","power_attack","power_attack"))
|
||||
list_temp += "<br><center><h3>After a lot of power attacks you manage to tip over [enemy_name] as they fall over their enormous weight<center><h3> "
|
||||
if(weakpoint_check("chonker","attack","attack","power_attack"))
|
||||
list_temp += "<br><center><h3>After attacking twice, your power attack manages to tip over [enemy_name] as they fall over their enormous weight<center><h3> "
|
||||
enemy_hp -= 30
|
||||
|
||||
//smart passive trait, mainly works in tandem with other traits, makes the enemy unable to be counter_attacked
|
||||
@@ -302,7 +302,7 @@
|
||||
else if(!enemy_stance)
|
||||
var/added_temp
|
||||
|
||||
if(rand())
|
||||
if(prob(80))
|
||||
added_temp = "you for [attack_amount + 5] damage!"
|
||||
player_hp -= attack_amount + 5
|
||||
enemy_stance = "attack"
|
||||
@@ -451,7 +451,7 @@
|
||||
msg += "\t<span class='info'>shotgun -> defend, defend, power attack</span>"
|
||||
msg += "\t<span class='info'>short temper -> counter, counter, counter</span>"
|
||||
msg += "\t<span class='info'>poisonous -> light attack, light attack, light attack</span>"
|
||||
msg += "\t<span class='info'>chonker -> power attack, power attack, power attack</span>"
|
||||
msg += "\t<span class='info'>chonker -> light attack, light attack, power attack</span>"
|
||||
return msg
|
||||
|
||||
/obj/machinery/computer/arcade/battle/emag_act(mob/user)
|
||||
|
||||
@@ -158,12 +158,9 @@
|
||||
name = "Circuit board (Cryogenic Oversight Console)"
|
||||
build_path = "/obj/machinery/computer/cryopod"
|
||||
|
||||
/obj/machinery/computer/cryopod/contents_explosion()
|
||||
/obj/machinery/computer/cryopod/contents_explosion(severity, target, origin)
|
||||
return
|
||||
|
||||
/obj/machinery/computer/cryopod/contents_explosion()
|
||||
return //don't blow everyone's shit up.
|
||||
|
||||
/// The box
|
||||
/obj/item/storage/box/blue/cryostorage_items
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
|
||||
@@ -407,7 +407,7 @@
|
||||
if(!stat) //Opens only powered doors.
|
||||
open() //Open everything!
|
||||
|
||||
/obj/machinery/door/ex_act(severity, target)
|
||||
/obj/machinery/door/ex_act(severity, target, origin)
|
||||
//if it blows up a wall it should blow up a door
|
||||
..(severity ? max(1, severity - 1) : 0, target)
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
/obj/machinery/door/password/emp_act(severity)
|
||||
return
|
||||
|
||||
/obj/machinery/door/password/ex_act(severity, target)
|
||||
/obj/machinery/door/password/ex_act(severity, target, origin)
|
||||
return
|
||||
|
||||
/obj/machinery/door/password/wave_ex_act(power, datum/wave_explosion/explosion, dir)
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
return ..()
|
||||
|
||||
//"BLAST" doors are obviously stronger than regular doors when it comes to BLASTS.
|
||||
/obj/machinery/door/poddoor/ex_act(severity, target)
|
||||
/obj/machinery/door/poddoor/ex_act(severity, target, origin)
|
||||
if(severity == 3)
|
||||
return
|
||||
..()
|
||||
|
||||
@@ -270,7 +270,7 @@
|
||||
var/range_light = 17
|
||||
var/range_flame = 17
|
||||
|
||||
/obj/item/bombcore/ex_act(severity, target) // Little boom can chain a big boom.
|
||||
/obj/item/bombcore/ex_act(severity, target, origin) // Little boom can chain a big boom.
|
||||
detonate()
|
||||
|
||||
|
||||
|
||||
@@ -84,6 +84,8 @@
|
||||
icon = 'icons/obj/clockwork_objects.dmi'
|
||||
hide = TRUE
|
||||
autolinkers = list("h_relay")
|
||||
flags_1 = DEFAULT_RICOCHET_1 | NODECONSTRUCT_1
|
||||
resistance_flags = INDESTRUCTIBLE
|
||||
|
||||
//Generic preset relay
|
||||
/obj/machinery/telecomms/relay/preset/auto
|
||||
|
||||
@@ -111,23 +111,23 @@
|
||||
mecha_log_message("Hit by projectile. Type: [Proj.name]([Proj.flag]).", color="red")
|
||||
. = ..()
|
||||
|
||||
/obj/mecha/ex_act(severity, target)
|
||||
/obj/mecha/ex_act(severity, target, origin)
|
||||
mecha_log_message("Affected by explosion of severity: [severity].", color="red")
|
||||
if(prob(deflect_chance))
|
||||
severity++
|
||||
log_append_to_last("Armor saved, changing severity to [severity].")
|
||||
. = ..()
|
||||
|
||||
/obj/mecha/contents_explosion(severity, target)
|
||||
/obj/mecha/contents_explosion(severity, target, origin)
|
||||
severity++
|
||||
for(var/X in equipment)
|
||||
var/obj/item/mecha_parts/mecha_equipment/ME = X
|
||||
ME.ex_act(severity,target)
|
||||
ME.ex_act(severity, target, origin)
|
||||
for(var/Y in trackers)
|
||||
var/obj/item/mecha_parts/mecha_tracking/MT = Y
|
||||
MT.ex_act(severity, target)
|
||||
MT.ex_act(severity, target, origin)
|
||||
if(occupant)
|
||||
occupant.ex_act(severity,target)
|
||||
occupant.ex_act(severity, target, origin)
|
||||
|
||||
/obj/mecha/handle_atom_del(atom/A)
|
||||
if(A == occupant)
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/mecha/working/ripley/contents_explosion(severity, target)
|
||||
/obj/mecha/working/ripley/contents_explosion(severity, target, origin)
|
||||
for(var/X in cargo)
|
||||
var/obj/O = X
|
||||
if(prob(30/severity))
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
/obj/effect/anomaly/proc/detonate()
|
||||
return
|
||||
|
||||
/obj/effect/anomaly/ex_act(severity, target)
|
||||
/obj/effect/anomaly/ex_act(severity, target, origin)
|
||||
if(severity == 1)
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
STOP_PROCESSING(SSfastprocess, src)
|
||||
. = ..()
|
||||
|
||||
/obj/effect/countdown/ex_act(severity, target) //immune to explosions
|
||||
/obj/effect/countdown/ex_act(severity, target, origin) //immune to explosions
|
||||
return
|
||||
|
||||
/obj/effect/countdown/syndicatebomb
|
||||
|
||||
@@ -77,10 +77,10 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/effect/decal/cleanable/ex_act()
|
||||
/obj/effect/decal/cleanable/ex_act(severity, target, origin)
|
||||
if(reagents)
|
||||
for(var/datum/reagent/R in reagents.reagent_list)
|
||||
R.on_ex_act()
|
||||
R.on_ex_act(severity)
|
||||
..()
|
||||
|
||||
/obj/effect/decal/cleanable/fire_act(exposed_temperature, exposed_volume)
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
. = ..()
|
||||
return /obj/effect/decal/cleanable/blood/gibs/old
|
||||
|
||||
/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target)
|
||||
/obj/effect/decal/cleanable/blood/gibs/ex_act(severity, target, origin)
|
||||
return
|
||||
|
||||
/obj/effect/decal/cleanable/blood/gibs/Crossed(mob/living/L)
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
. = ..()
|
||||
setDir(pick(GLOB.cardinals))
|
||||
|
||||
/obj/effect/decal/cleanable/glass/ex_act()
|
||||
/obj/effect/decal/cleanable/glass/ex_act(severity, target, origin)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/decal/cleanable/glass/wave_ex_act(power, datum/wave_explosion/explosion, dir)
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
if (!step_to(src, get_step(src, direction), 0))
|
||||
break
|
||||
|
||||
/obj/effect/decal/cleanable/robot_debris/ex_act()
|
||||
/obj/effect/decal/cleanable/robot_debris/ex_act(severity, target, origin)
|
||||
return
|
||||
|
||||
/obj/effect/decal/cleanable/robot_debris/limb
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
/obj/effect/decal/proc/NeverShouldHaveComeHere(turf/T)
|
||||
return isclosedturf(T) || isgroundlessturf(T)
|
||||
|
||||
/obj/effect/decal/ex_act(severity, target)
|
||||
/obj/effect/decal/ex_act(severity, target, origin)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/decal/fire_act(exposed_temperature, exposed_volume)
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
/obj/effect/experience_pressure_difference()
|
||||
return
|
||||
|
||||
/obj/effect/ex_act(severity, target)
|
||||
/obj/effect/ex_act(severity, target, origin)
|
||||
if(target == src)
|
||||
qdel(src)
|
||||
else
|
||||
@@ -51,7 +51,7 @@
|
||||
/obj/effect/ConveyorMove()
|
||||
return
|
||||
|
||||
/obj/effect/abstract/ex_act(severity, target)
|
||||
/obj/effect/abstract/ex_act(severity, target, origin)
|
||||
return
|
||||
|
||||
/obj/effect/abstract/singularity_pull()
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
return
|
||||
|
||||
// Please stop bombing the Observer-Start landmark.
|
||||
/obj/effect/landmark/ex_act()
|
||||
/obj/effect/landmark/ex_act(severity, target, origin)
|
||||
return
|
||||
|
||||
/obj/effect/landmark/singularity_pull()
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
/obj/effect/temp_visual/singularity_pull()
|
||||
return
|
||||
|
||||
/obj/effect/temp_visual/ex_act()
|
||||
/obj/effect/temp_visual/ex_act(severity, target, origin)
|
||||
return
|
||||
|
||||
/obj/effect/temp_visual/dir_setting
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
/obj/item/wallframe/apc/try_build(turf/on_wall, user)
|
||||
if(!..())
|
||||
return
|
||||
var/turf/T = get_turf(on_wall) //the user is not where it needs to be.
|
||||
var/turf/T = get_turf(user)
|
||||
var/area/A = get_area(T)
|
||||
if(A.get_apc())
|
||||
to_chat(user, "<span class='warning'>This area already has an APC!</span>")
|
||||
|
||||
@@ -266,7 +266,7 @@
|
||||
/obj/effect/chrono_field/singularity_pull()
|
||||
return
|
||||
|
||||
/obj/effect/chrono_field/ex_act()
|
||||
/obj/effect/chrono_field/ex_act(severity, target, origin)
|
||||
return
|
||||
|
||||
/obj/effect/chrono_field/blob_act(obj/structure/blob/B)
|
||||
|
||||
@@ -72,6 +72,10 @@
|
||||
var/datum/team/gang/gang //For marking territory.
|
||||
var/gang_tag_delay = 30 //this is the delay for gang mode tag applications on anything that gang = true on.
|
||||
|
||||
var/precision_mode = FALSE
|
||||
var/precision_x = 0
|
||||
var/precision_y = 0
|
||||
|
||||
/obj/item/toy/crayon/proc/isValidSurface(surface)
|
||||
return istype(surface, /turf/open/floor)
|
||||
|
||||
@@ -228,6 +232,12 @@
|
||||
.["can_change_colour"] = can_change_colour
|
||||
.["current_colour"] = paint_color
|
||||
|
||||
.["precision_mode"] = precision_mode
|
||||
.["x"] = precision_x
|
||||
.["y"] = precision_y
|
||||
.["min_offset"] = -world.icon_size/2
|
||||
.["max_offset"] = world.icon_size/2
|
||||
|
||||
/obj/item/toy/crayon/ui_act(action, list/params)
|
||||
if(..())
|
||||
return
|
||||
@@ -256,6 +266,17 @@
|
||||
. = TRUE
|
||||
paint_mode = PAINT_NORMAL
|
||||
drawtype = "a"
|
||||
if("toggle_precision")
|
||||
precision_mode = !precision_mode
|
||||
. = TRUE
|
||||
if("set_precision_x")
|
||||
var/x = text2num(params["x"])
|
||||
precision_x = x
|
||||
. = TRUE
|
||||
if("set_precision_y")
|
||||
var/y = text2num(params["y"])
|
||||
precision_y = y
|
||||
. = TRUE
|
||||
update_icon()
|
||||
|
||||
/obj/item/toy/crayon/proc/select_colour(mob/user)
|
||||
@@ -400,8 +421,12 @@
|
||||
if(PAINT_NORMAL)
|
||||
var/obj/effect/decal/cleanable/crayon/C = new(target, paint_color, drawing, temp, graf_rot)
|
||||
C.add_hiddenprint(user)
|
||||
C.pixel_x = clickx
|
||||
C.pixel_y = clicky
|
||||
if(precision_mode)
|
||||
C.pixel_x = clamp(precision_x, -(world.icon_size/2), world.icon_size/2)
|
||||
C.pixel_y = clamp(precision_y, -(world.icon_size/2), world.icon_size/2)
|
||||
else
|
||||
C.pixel_x = clickx
|
||||
C.pixel_y = clicky
|
||||
affected_turfs += target
|
||||
if(PAINT_LARGE_HORIZONTAL)
|
||||
var/turf/left = locate(target.x-1,target.y,target.z)
|
||||
|
||||
@@ -144,8 +144,8 @@
|
||||
/obj/effect/dummy/chameleon/attack_alien()
|
||||
master.disrupt()
|
||||
|
||||
/obj/effect/dummy/chameleon/ex_act(S, T)
|
||||
contents_explosion(S, T)
|
||||
/obj/effect/dummy/chameleon/ex_act(severity, target, origin)
|
||||
contents_explosion(severity, target, origin)
|
||||
master.disrupt()
|
||||
|
||||
/obj/effect/dummy/chameleon/bullet_act()
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
attack_verb = list("blown up", "exploded", "detonated")
|
||||
custom_materials = list(/datum/material/iron=50, /datum/material/glass=30)
|
||||
|
||||
/obj/item/doorCharge/ex_act(severity, target)
|
||||
/obj/item/doorCharge/ex_act(severity, target, origin)
|
||||
switch(severity)
|
||||
if(EXPLODE_DEVASTATE)
|
||||
visible_message("<span class='warning'>[src] detonates!</span>")
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
QDEL_NULL(beaker)
|
||||
return ..()
|
||||
|
||||
/obj/item/storage/portable_chem_mixer/ex_act(severity, target)
|
||||
/obj/item/storage/portable_chem_mixer/ex_act(severity, target, origin)
|
||||
if(severity < 3)
|
||||
..()
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
user.update_inv_hands()
|
||||
loc.assume_air(air_contents)
|
||||
|
||||
/obj/item/latexballon/ex_act(severity, target)
|
||||
/obj/item/latexballon/ex_act(severity, target, origin)
|
||||
burst()
|
||||
switch(severity)
|
||||
if (1)
|
||||
|
||||
@@ -557,7 +557,7 @@
|
||||
..()
|
||||
balanced = 0
|
||||
|
||||
/obj/item/melee/supermatter_sword/ex_act(severity, target)
|
||||
/obj/item/melee/supermatter_sword/ex_act(severity, target, origin)
|
||||
visible_message("<span class='danger'>The blast wave smacks into [src] and rapidly flashes to ash.</span>",\
|
||||
"<span class='italics'>You hear a loud crack as you are washed with a wave of heat.</span>")
|
||||
consume_everything()
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
/obj/machinery/door/keycard/emp_act(severity)
|
||||
return
|
||||
|
||||
/obj/machinery/door/keycard/ex_act(severity, target)
|
||||
/obj/machinery/door/keycard/ex_act(severity, target, origin)
|
||||
return
|
||||
|
||||
/obj/machinery/door/keycard/try_to_activate_door(mob/user)
|
||||
|
||||
@@ -18,10 +18,10 @@
|
||||
/obj/item/storage/AllowDrop()
|
||||
return TRUE
|
||||
|
||||
/obj/item/storage/contents_explosion(severity, target)
|
||||
/obj/item/storage/contents_explosion(severity, target, origin)
|
||||
var/in_storage = istype(loc, /obj/item/storage)? (max(0, severity - 1)) : (severity)
|
||||
for(var/atom/A in contents)
|
||||
A.ex_act(in_storage, target)
|
||||
A.ex_act(in_storage, target, origin)
|
||||
CHECK_TICK
|
||||
|
||||
//Cyberboss says: "USE THIS TO FILL IT, NOT INITIALIZE OR NEW"
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
throwdamage = 0
|
||||
take_damage(throwdamage, BRUTE, "melee", 1, get_dir(src, AM))
|
||||
|
||||
/obj/ex_act(severity, target)
|
||||
/obj/ex_act(severity, target, origin)
|
||||
if(resistance_flags & INDESTRUCTIBLE)
|
||||
return
|
||||
..() //contents explosion
|
||||
|
||||
@@ -554,9 +554,9 @@
|
||||
if(!QDELETED(lockerelectronics))
|
||||
lockerelectronics.accesses = req_access
|
||||
|
||||
/obj/structure/closet/contents_explosion(severity, target)
|
||||
/obj/structure/closet/contents_explosion(severity, target, origin)
|
||||
for(var/atom/A in contents)
|
||||
A.ex_act(severity, target)
|
||||
A.ex_act(severity, target, origin)
|
||||
CHECK_TICK
|
||||
|
||||
/obj/structure/closet/singularity_act()
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
if(.) //if we actually closed the locker
|
||||
recursive_organ_check(src)
|
||||
|
||||
/obj/structure/closet/secure_closet/freezer/ex_act()
|
||||
/obj/structure/closet/secure_closet/freezer/ex_act(severity, target, origin)
|
||||
if(!jones)
|
||||
jones = TRUE
|
||||
else
|
||||
|
||||
@@ -32,9 +32,9 @@
|
||||
stored_extinguisher = null
|
||||
return ..()
|
||||
|
||||
/obj/structure/extinguisher_cabinet/contents_explosion(severity, target)
|
||||
/obj/structure/extinguisher_cabinet/contents_explosion(severity, target, origin)
|
||||
if(stored_extinguisher)
|
||||
stored_extinguisher.ex_act(severity, target)
|
||||
stored_extinguisher.ex_act(severity, target, origin)
|
||||
|
||||
/obj/structure/extinguisher_cabinet/handle_atom_del(atom/A)
|
||||
if(A == stored_extinguisher)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#define LOG_BURN_TIMER 150
|
||||
#define LOG_BURN_TIMER 400
|
||||
#define PAPER_BURN_TIMER 5
|
||||
#define MAXIMUM_BURN_TIMER 3000
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
pixel_x = -16
|
||||
resistance_flags = FIRE_PROOF
|
||||
var/lit = FALSE
|
||||
light_color = "#E38C2D"
|
||||
|
||||
var/fuel_added = 0
|
||||
var/flame_expiry_timer
|
||||
@@ -64,6 +65,12 @@
|
||||
</span>")
|
||||
adjust_fuel_timer(PAPER_BURN_TIMER)
|
||||
qdel(T)
|
||||
else if(istype(T,/obj/item/grown/log))
|
||||
user.visible_message("<span class='notice'>[user] tosses some \
|
||||
wood into [src].</span>", "<span class='notice'>You add \
|
||||
some fuel to [src].</span>")
|
||||
adjust_fuel_timer(LOG_BURN_TIMER)
|
||||
qdel(T)
|
||||
else if(try_light(T,user))
|
||||
return
|
||||
else
|
||||
|
||||
@@ -40,6 +40,16 @@
|
||||
density = FALSE
|
||||
pixel_x = -16
|
||||
|
||||
/obj/structure/flora/stump/attackby(obj/item/W, mob/user, params)
|
||||
if((W.tool_behaviour == TOOL_SHOVEL) && params)
|
||||
playsound(src, 'sound/effects/shovel_dig.ogg', 50, 1)
|
||||
if(do_after(user, 20))
|
||||
new /obj/item/grown/log/tree(get_turf(src))
|
||||
user.visible_message("[user] digs up [src].", "<span class='notice'>You dig up [src].</span>")
|
||||
qdel(src)
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/structure/flora/tree/pine
|
||||
name = "pine tree"
|
||||
desc = "A coniferous pine tree."
|
||||
|
||||
@@ -91,9 +91,9 @@
|
||||
/obj/structure/guncase/handle_atom_del(atom/A)
|
||||
update_icon()
|
||||
|
||||
/obj/structure/guncase/contents_explosion(severity, target)
|
||||
/obj/structure/guncase/contents_explosion(severity, target, origin)
|
||||
for(var/atom/A in contents)
|
||||
A.ex_act(severity++, target)
|
||||
A.ex_act(severity++, target, origin)
|
||||
CHECK_TICK
|
||||
|
||||
/obj/structure/guncase/shotgun
|
||||
|
||||
@@ -249,7 +249,7 @@
|
||||
P.setAngle(rotation_angle)
|
||||
return ..()
|
||||
|
||||
/obj/structure/reflector/ex_act()
|
||||
/obj/structure/reflector/ex_act(severity, target, origin)
|
||||
if(admin)
|
||||
return
|
||||
else
|
||||
|
||||
@@ -84,7 +84,7 @@ FLOOR SAFES
|
||||
/obj/structure/safe/blob_act(obj/structure/blob/B)
|
||||
return
|
||||
|
||||
/obj/structure/safe/ex_act(severity, target)
|
||||
/obj/structure/safe/ex_act(severity, target, origin)
|
||||
if(((severity == 2 && target == src) || severity == 1) && explosion_count < BROKEN_THRESHOLD)
|
||||
explosion_count++
|
||||
switch(explosion_count)
|
||||
|
||||
@@ -50,14 +50,14 @@
|
||||
empty_pod(location)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/transit_tube_pod/ex_act(severity, target)
|
||||
/obj/structure/transit_tube_pod/ex_act(severity, target, origin)
|
||||
..()
|
||||
if(!QDELETED(src))
|
||||
empty_pod()
|
||||
|
||||
/obj/structure/transit_tube_pod/contents_explosion(severity, target)
|
||||
/obj/structure/transit_tube_pod/contents_explosion(severity, target, origin)
|
||||
for(var/atom/movable/AM in contents)
|
||||
AM.ex_act(severity, target)
|
||||
AM.ex_act(severity, target, origin)
|
||||
|
||||
/obj/structure/transit_tube_pod/singularity_pull(S, current_size)
|
||||
..()
|
||||
|
||||
@@ -70,6 +70,7 @@
|
||||
icon_state = "wood"
|
||||
baseturfs = /turf/closed/indestructible/wood
|
||||
smooth = SMOOTH_TRUE
|
||||
canSmoothWith = list(/obj/structure/falsewall/wood, /turf/closed/wall/mineral/wood, /turf/closed/indestructible/wood)
|
||||
|
||||
/turf/closed/indestructible/oldshuttle/corner
|
||||
icon_state = "corner"
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
if(mapload && prob(66)) // 2/3 instead of 1/3 (default)
|
||||
MakeDirty()
|
||||
|
||||
/turf/open/floor/ex_act(severity, target)
|
||||
/turf/open/floor/ex_act(severity, target, origin)
|
||||
var/shielded = is_shielded()
|
||||
..()
|
||||
if(severity != 1 && shielded && target != src)
|
||||
|
||||
@@ -195,7 +195,7 @@
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/turf/open/floor/plating/foam/ex_act()
|
||||
/turf/open/floor/plating/foam/ex_act(severity, target, origin)
|
||||
..()
|
||||
ScrapeAway(flags = CHANGETURF_INHERIT_AIR)
|
||||
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
for(var/obj/item/stack/ore/O in src)
|
||||
SEND_SIGNAL(W, COMSIG_PARENT_ATTACKBY, O)
|
||||
|
||||
/turf/open/floor/plating/asteroid/ex_act(severity, target)
|
||||
/turf/open/floor/plating/asteroid/ex_act(severity, target, origin)
|
||||
. = SEND_SIGNAL(src, COMSIG_ATOM_EX_ACT, severity, target)
|
||||
contents_explosion(severity, target)
|
||||
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
/turf/open/floor/plating/beach/try_replace_tile(obj/item/stack/tile/T, mob/user, params)
|
||||
return
|
||||
|
||||
/turf/open/floor/plating/beach/ex_act(severity, target)
|
||||
/turf/open/floor/plating/beach/ex_act(severity, target, origin)
|
||||
contents_explosion(severity, target)
|
||||
|
||||
/turf/open/floor/plating/beach/sand
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
acidpwr = min(acidpwr, 50) //we reduce the power so reinf floor never get melted.
|
||||
. = ..()
|
||||
|
||||
/turf/open/floor/engine/ex_act(severity,target)
|
||||
/turf/open/floor/engine/ex_act(severity,target, origin)
|
||||
var/shielded = is_shielded()
|
||||
contents_explosion(severity, target)
|
||||
if(severity != 1 && shielded && target != src)
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
clawfootstep = FOOTSTEP_LAVA
|
||||
heavyfootstep = FOOTSTEP_LAVA
|
||||
|
||||
/turf/open/lava/ex_act(severity, target)
|
||||
contents_explosion(severity, target)
|
||||
/turf/open/lava/ex_act(severity, target, origin)
|
||||
contents_explosion(severity, target, origin)
|
||||
|
||||
/turf/open/lava/MakeSlippery(wet_setting, min_wet_time, wet_time_to_add, max_wet_time, permanent)
|
||||
return
|
||||
|
||||
@@ -171,7 +171,7 @@
|
||||
/turf/closed/mineral/acid_melt()
|
||||
ScrapeAway()
|
||||
|
||||
/turf/closed/mineral/ex_act(severity, target)
|
||||
/turf/closed/mineral/ex_act(severity, target, origin)
|
||||
..()
|
||||
switch(severity)
|
||||
if(3)
|
||||
@@ -661,7 +661,7 @@
|
||||
/turf/closed/mineral/strong/acid_melt()
|
||||
return
|
||||
|
||||
/turf/closed/mineral/strong/ex_act(severity, target)
|
||||
/turf/closed/mineral/strong/ex_act(severity, target, origin)
|
||||
return
|
||||
|
||||
#undef MINING_MESSAGE_COOLDOWN
|
||||
|
||||
@@ -272,12 +272,10 @@
|
||||
icon_state = "map-overspace"
|
||||
fixed_underlay = list("space"=1)
|
||||
|
||||
/turf/closed/wall/mineral/plastitanium/explosive/ex_act(severity)
|
||||
/turf/closed/wall/mineral/plastitanium/explosive/ex_act(severity, target, origin)
|
||||
var/datum/explosion/acted_explosion = null
|
||||
for(var/datum/explosion/E in GLOB.explosions)
|
||||
if(E.explosion_id == explosion_id)
|
||||
acted_explosion = E
|
||||
break
|
||||
if(istype(origin, /datum/explosion))
|
||||
acted_explosion = origin
|
||||
if(acted_explosion && istype(acted_explosion.explosion_source, /obj/item/bombcore))
|
||||
var/obj/item/bombcore/large/bombcore = new(get_turf(src))
|
||||
bombcore.detonate()
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
if(girder_type)
|
||||
new /obj/item/stack/sheet/metal(src)
|
||||
|
||||
/turf/closed/wall/ex_act(severity, target)
|
||||
/turf/closed/wall/ex_act(severity, target, origin)
|
||||
if(target == src)
|
||||
dismantle_wall(1,1)
|
||||
return
|
||||
@@ -88,7 +88,7 @@
|
||||
if(1)
|
||||
//SN src = null
|
||||
var/turf/NT = ScrapeAway()
|
||||
NT.contents_explosion(severity, target)
|
||||
NT.contents_explosion(severity, target, origin)
|
||||
return
|
||||
if(2)
|
||||
if (prob(50))
|
||||
|
||||
@@ -451,7 +451,7 @@ GLOBAL_LIST_EMPTY(station_turfs)
|
||||
|
||||
/turf/proc/is_shielded()
|
||||
|
||||
/turf/contents_explosion(severity, target)
|
||||
/turf/contents_explosion(severity, target, origin)
|
||||
var/affecting_level
|
||||
if(severity == 1)
|
||||
affecting_level = 1
|
||||
@@ -469,7 +469,7 @@ GLOBAL_LIST_EMPTY(station_turfs)
|
||||
var/atom/movable/AM = A
|
||||
if(!AM.ex_check(explosion_id))
|
||||
continue
|
||||
A.ex_act(severity, target)
|
||||
A.ex_act(severity, target, origin)
|
||||
CHECK_TICK
|
||||
|
||||
/turf/wave_ex_act(power, datum/wave_explosion/explosion, dir)
|
||||
|
||||
@@ -1592,7 +1592,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
light_range = 2
|
||||
duration = 9
|
||||
|
||||
/obj/effect/temp_visual/target/ex_act()
|
||||
/obj/effect/temp_visual/target/ex_act(severity, target, origin)
|
||||
return
|
||||
|
||||
/obj/effect/temp_visual/target/Initialize(mapload, list/flame_hit)
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
GLOB.poi_list -= src
|
||||
return ..()
|
||||
|
||||
/obj/structure/blob/core/ex_act(severity, target)
|
||||
/obj/structure/blob/core/ex_act(severity, target, origin)
|
||||
var/damage = 50 - 10 * severity //remember, the core takes half brute damage, so this is 20/15/10 damage based on severity
|
||||
take_damage(damage, BRUTE, "bomb", 0)
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
linked.examine(user)
|
||||
return ..()
|
||||
|
||||
/obj/effect/clockwork/overlay/ex_act()
|
||||
/obj/effect/clockwork/overlay/ex_act(severity, target, origin)
|
||||
return FALSE
|
||||
|
||||
/obj/effect/clockwork/overlay/singularity_act()
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
return TRUE
|
||||
. = ..()
|
||||
|
||||
/obj/effect/clockwork/sigil/ex_act(severity)
|
||||
/obj/effect/clockwork/sigil/ex_act(severity, target, origin)
|
||||
visible_message("<span class='warning'>[src] scatters into thousands of particles.</span>")
|
||||
qdel(src)
|
||||
|
||||
@@ -204,7 +204,7 @@
|
||||
. = ..()
|
||||
update_icon()
|
||||
|
||||
/obj/effect/clockwork/sigil/transmission/ex_act(severity)
|
||||
/obj/effect/clockwork/sigil/transmission/ex_act(severity, target, origin)
|
||||
if(severity == 3)
|
||||
adjust_clockwork_power(500) //Light explosions charge the network!
|
||||
visible_message("<span class='warning'>[src] flares a brilliant orange!</span>")
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
/obj/effect/clockwork/servant_blocker/singularity_pull()
|
||||
return
|
||||
|
||||
/obj/effect/clockwork/servant_blocker/ex_act(severity, target)
|
||||
/obj/effect/clockwork/servant_blocker/ex_act(severity, target, origin)
|
||||
return
|
||||
|
||||
/obj/effect/clockwork/servant_blocker/safe_throw_at()
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
/obj/effect/clockwork/spatial_gateway/ex_act(severity)
|
||||
/obj/effect/clockwork/spatial_gateway/ex_act(severity, target, origin)
|
||||
if(severity == 1 && uses)
|
||||
uses = 0
|
||||
visible_message("<span class='warning'>[src] is disrupted!</span>")
|
||||
@@ -251,7 +251,7 @@
|
||||
name = "stable gateway"
|
||||
is_stable = TRUE
|
||||
|
||||
/obj/effect/clockwork/spatial_gateway/stable/ex_act(severity)
|
||||
/obj/effect/clockwork/spatial_gateway/stable/ex_act(severity, target, origin)
|
||||
if(severity == 1)
|
||||
start_shutdown() //Yes, you can chain devastation-level explosions to delay a gateway shutdown, if you somehow manage to do it without breaking the obelisk. Is it worth it? Probably not.
|
||||
return TRUE
|
||||
|
||||
@@ -214,5 +214,5 @@
|
||||
sleep(3) //so the animation completes properly
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/clockwork/judicial_marker/ex_act(severity)
|
||||
/obj/effect/clockwork/judicial_marker/ex_act(severity, target, origin)
|
||||
return
|
||||
|
||||
+1
-1
@@ -197,7 +197,7 @@
|
||||
glow = new /obj/effect/clockwork/overlay/gateway_glow(get_turf(src))
|
||||
glow.linked = src
|
||||
|
||||
/obj/structure/destructible/clockwork/massive/celestial_gateway/ex_act(severity)
|
||||
/obj/structure/destructible/clockwork/massive/celestial_gateway/ex_act(severity, target, origin)
|
||||
var/damage = max((obj_integrity * 0.7) / severity, 100) //requires multiple bombs to take down
|
||||
take_damage(damage, BRUTE, "bomb", 0)
|
||||
|
||||
|
||||
@@ -240,3 +240,18 @@
|
||||
parts += printplayerlist(members - eminence)
|
||||
|
||||
return "<div class='panel clockborder'>[parts.Join("<br>")]</div>"
|
||||
|
||||
//I have no idea where to put this so I'm leaving it here. Loads reebe. Only one reebe can exist, so it's checked via a global var.
|
||||
/proc/load_reebe()
|
||||
if(GLOB.reebe_loaded)
|
||||
return TRUE
|
||||
var/list/errorList = list()
|
||||
var/list/reebes = SSmapping.LoadGroup(errorList, "Reebe", "map_files/generic", "City_of_Cogs.dmm", default_traits = ZTRAITS_REEBE, silent = TRUE)
|
||||
if(errorList.len) // reebe failed to load
|
||||
message_admins("Reebe failed to load!")
|
||||
log_game("Reebe failed to load!")
|
||||
return FALSE
|
||||
for(var/datum/parsed_map/PM in reebes)
|
||||
PM.initTemplateBounds()
|
||||
GLOB.reebe_loaded = TRUE
|
||||
return TRUE
|
||||
|
||||
@@ -179,7 +179,7 @@
|
||||
/mob/living/carbon/true_devil/is_literate()
|
||||
return 1
|
||||
|
||||
/mob/living/carbon/true_devil/ex_act(severity, ex_target)
|
||||
/mob/living/carbon/true_devil/ex_act(severity, target, origin)
|
||||
if(!ascended)
|
||||
var/b_loss
|
||||
switch (severity)
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
|
||||
//Immunities
|
||||
|
||||
/mob/living/simple_animal/revenant/ex_act(severity, target)
|
||||
/mob/living/simple_animal/revenant/ex_act(severity, target, origin)
|
||||
return 1 //Immune to the effects of explosions.
|
||||
|
||||
/mob/living/simple_animal/revenant/wave_ex_act(power, datum/wave_explosion/explosion, dir)
|
||||
|
||||
@@ -249,7 +249,7 @@
|
||||
released and fully healed, because in the end it's just a jape, \
|
||||
sibling!</B>"
|
||||
|
||||
/mob/living/simple_animal/slaughter/laughter/ex_act(severity)
|
||||
/mob/living/simple_animal/slaughter/laughter/ex_act(severity, target, origin)
|
||||
switch(severity)
|
||||
if(1)
|
||||
death()
|
||||
|
||||
@@ -72,10 +72,10 @@
|
||||
QDEL_NULL(beaker)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/cryo_cell/contents_explosion(severity, target)
|
||||
/obj/machinery/atmospherics/components/unary/cryo_cell/contents_explosion(severity, target, origin)
|
||||
..()
|
||||
if(beaker)
|
||||
beaker.ex_act(severity, target)
|
||||
beaker.ex_act(severity, target, origin)
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/cryo_cell/handle_atom_del(atom/A)
|
||||
..()
|
||||
|
||||
@@ -59,10 +59,10 @@
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/thermomachine/examine(mob/user)
|
||||
. = ..()
|
||||
. += "<span class='notice'>The thermostat is set to [target_temperature]K ([(T0C-target_temperature)*-1]C).</span>"
|
||||
. += "<span class='notice'>The thermostat is set to [target_temperature]K ([target_temperature-T0C]C).</span>"
|
||||
if(in_range(user, src) || isobserver(user))
|
||||
. += "<span class='notice'>The status display reads: Efficiency <b>[(heat_capacity/5000)*100]%</b>.</span>"
|
||||
. += "<span class='notice'>Temperature range <b>[min_temperature]K - [max_temperature]K ([(T0C-min_temperature)*-1]C - [(T0C-max_temperature)*-1]C)</b>.</span>"
|
||||
. += "<span class='notice'>The status display reads: Effective heat capacity <b>[heat_capacity] J/K</b>.</span>"
|
||||
. += "<span class='notice'>Temperature range <b>[min_temperature]K - [max_temperature]K ([min_temperature-T0C]C - [max_temperature-T0C]C)</b>.</span>"
|
||||
|
||||
/obj/machinery/atmospherics/components/unary/thermomachine/process_atmos()
|
||||
..()
|
||||
|
||||
@@ -149,5 +149,5 @@ GLOBAL_VAR_INIT(sc_safecode5, "[rand(0,9)]")
|
||||
if(prob(25))
|
||||
mezzer()
|
||||
|
||||
/obj/singularity/narsie/mini/ex_act()
|
||||
/obj/singularity/narsie/mini/ex_act(severity, target, origin)
|
||||
return
|
||||
|
||||
@@ -187,10 +187,10 @@
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/structure/closet/supplypod/ex_act() //Explosions dont do SHIT TO US! This is because supplypods create explosions when they land.
|
||||
/obj/structure/closet/supplypod/ex_act(severity, target, origin) //Explosions dont do SHIT TO US! This is because supplypods create explosions when they land.
|
||||
return
|
||||
|
||||
/obj/structure/closet/supplypod/contents_explosion() //Supplypods also protect their contents from the harmful effects of fucking exploding.
|
||||
/obj/structure/closet/supplypod/contents_explosion(severity, target, origin) //Supplypods also protect their contents from the harmful effects of fucking exploding.
|
||||
return
|
||||
|
||||
/obj/structure/closet/supplypod/toggle(mob/living/user)
|
||||
|
||||
@@ -82,6 +82,10 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
|
||||
if(CONFIG_GET(flag/emergency_tgui_logging))
|
||||
log_href("[src] (usr:[usr]\[[COORD(usr)]\]) : [hsrc ? "[hsrc] " : ""][href]")
|
||||
return
|
||||
if(href_list["reload_tguipanel"])
|
||||
nuke_chat()
|
||||
if(href_list["reload_statbrowser"])
|
||||
src << browse(file('html/statbrowser.html'), "window=statbrowser")
|
||||
|
||||
last_activity = world.time
|
||||
|
||||
@@ -355,7 +359,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
|
||||
// Initialize tgui panel
|
||||
tgui_panel.initialize()
|
||||
src << browse(file('html/statbrowser.html'), "window=statbrowser")
|
||||
|
||||
addtimer(CALLBACK(src, .proc/check_panel_loaded), 30 SECONDS)
|
||||
|
||||
if(alert_mob_dupe_login)
|
||||
spawn()
|
||||
@@ -1091,6 +1095,11 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
|
||||
verblist[++verblist.len] = list(verb_to_init.category, verb_to_init.name)
|
||||
src << output("[url_encode(json_encode(verb_tabs))];[url_encode(json_encode(verblist))]", "statbrowser:init_verbs")
|
||||
|
||||
/client/proc/check_panel_loaded()
|
||||
if(statbrowser_ready)
|
||||
return
|
||||
to_chat(src, span_userdanger("Statpanel failed to load, click <a href='?src=[REF(src)];reload_statbrowser=1'>here</a> to reload the panel "))
|
||||
|
||||
//increment progress for an unlockable loadout item
|
||||
/client/proc/increment_progress(key, amount)
|
||||
if(prefs)
|
||||
|
||||
@@ -99,7 +99,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
|
||||
walk(src,0)
|
||||
walk_towards(src, destination, 1)
|
||||
|
||||
/obj/effect/immovablerod/ex_act(severity, target)
|
||||
/obj/effect/immovablerod/ex_act(severity, target, origin)
|
||||
return 0
|
||||
|
||||
/obj/effect/immovablerod/singularity_act()
|
||||
|
||||
@@ -507,7 +507,7 @@
|
||||
if(master)
|
||||
master.spawn_spacevine_piece(stepturf, src)
|
||||
|
||||
/obj/structure/spacevine/ex_act(severity, target)
|
||||
/obj/structure/spacevine/ex_act(severity, target, origin)
|
||||
if(istype(target, type)) //if its agressive spread vine dont do anything
|
||||
return
|
||||
var/i
|
||||
|
||||
@@ -10,8 +10,12 @@
|
||||
speech_span = "spooky"
|
||||
resistance_flags = INDESTRUCTIBLE
|
||||
var/active = TRUE
|
||||
var/BallTutorial = FALSE
|
||||
|
||||
/obj/item/barthpot/attackby(obj/item/I, mob/user, params)
|
||||
if(BallTutorial)
|
||||
say("Hello and welcome to the annual Citadelstation Spookyball 2021! CENTCOM requisitioned this old hospital as a new colony site two years ago, and we’re back again after a few additions here and there. Next to me you can find all the tools you’ll need to build a nice private house, if you’re here for that kind of thing. The axes will chop trees, and give you wood. Shovels will remove grass and things, which you can use the grass to make beds and backets. The pickaxe will allow you pick out the nearby rocks, if you’re more interested in building a cave dwelling. Finally the umbrella and light sources are because it’s spooky, and it might rain! As for interesting spots; There’s the old abandoned mansion which you can get to by going through the entrance and towards the east. There’s also a mech arena directly south, and a racetrack in the caves to the right of the arena, follow the lanterns. And make sure to explore the caves too! Lots of neat things to find!")
|
||||
return
|
||||
if(!active)
|
||||
say("Meow!")
|
||||
return
|
||||
@@ -27,6 +31,9 @@
|
||||
say("It doesn't seem like that's magical enough!")
|
||||
|
||||
/obj/item/barthpot/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
|
||||
if(BallTutorial)
|
||||
say("Hello and welcome to the annual Citadelstation Spookyball 2021! CENTCOM requisitioned this old hospital as a new colony site two years ago, and we’re back again after a few additions here and there. Next to me you can find all the tools you’ll need to build a nice private house, if you’re here for that kind of thing. The axes will chop trees, and give you wood. Shovels will remove grass and things, which you can use the grass to make beds and backets. The pickaxe will allow you pick out the nearby rocks, if you’re more interested in building a cave dwelling. Finally the umbrella and light sources are because it’s spooky, and it might rain! As for interesting spots; There’s the old abandoned mansion which you can get to by going through the entrance and towards the east. There’s also a mech arena directly south, and a racetrack in the caves to the right of the arena, follow the lanterns. And make sure to explore the caves too! Lots of neat things to find!")
|
||||
return
|
||||
if(!active)
|
||||
say("Meow!")
|
||||
return
|
||||
|
||||
@@ -268,3 +268,65 @@
|
||||
category = "Holiday"
|
||||
item = /obj/item/card/emag/halloween
|
||||
surplus = 0
|
||||
|
||||
/////////////////////////
|
||||
// Ball map Items //
|
||||
/////////////////////////
|
||||
|
||||
|
||||
/obj/item/wisp_lantern/pumpkin
|
||||
name = "Pumpkin lantern"
|
||||
desc = "This lantern gives off no light, but is home to a friendly Jacq o' latern."
|
||||
icon_state = "lantern-on"
|
||||
var/obj/effect/wisp/pumpkin/wisp2
|
||||
|
||||
//Hoooo boy that's some wild code there.
|
||||
/obj/item/wisp_lantern/pumpkin/Initialize()
|
||||
. = ..()
|
||||
qdel(wisp)
|
||||
wisp2 = new(src)
|
||||
wisp = wisp2
|
||||
|
||||
/obj/effect/wisp/pumpkin
|
||||
name = "Friendly pumpkin"
|
||||
desc = "Happy to spook your way."
|
||||
icon = 'icons/obj/clothing/hats.dmi'
|
||||
icon_state = "hardhat1_pumpkin_j"
|
||||
light_range = 5
|
||||
light_color = "#EE9933"
|
||||
layer = 0
|
||||
sight_flags = SEE_MOBS
|
||||
lighting_alpha = 0
|
||||
|
||||
/obj/effect/wisp/pumpkin/update_user_sight(mob/user) //Disables SUPERLIGHTS
|
||||
return
|
||||
|
||||
//Damnit LazyBones
|
||||
/mob/living/simple_animal/lazy_bones
|
||||
name = "Lazy Bones"
|
||||
desc = "Simply refuses to get out of bed!"
|
||||
icon = 'icons/mob/simple_human.dmi'
|
||||
icon_state = "skeleton"
|
||||
icon_living = "skeleton"
|
||||
icon_dead = "skeleton"
|
||||
gender = NEUTER
|
||||
mob_biotypes = list(MOB_UNDEAD, MOB_HUMANOID)
|
||||
turns_per_move = 5
|
||||
speak_emote = list("rattles")
|
||||
emote_see = list("rattles")
|
||||
maxHealth = 40
|
||||
health = 40
|
||||
speed = 0
|
||||
harm_intent_damage = 0
|
||||
melee_damage_lower = 0
|
||||
melee_damage_upper = 0
|
||||
minbodytemp = 0
|
||||
maxbodytemp = 1500
|
||||
faction = list("skeleton")
|
||||
see_in_dark = 8
|
||||
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
|
||||
deathmessage = "collapses into a pile of bones!"
|
||||
del_on_death = 1
|
||||
loot = list(/obj/effect/decal/remains/human)
|
||||
|
||||
stop_automated_movement = 1
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
var/cached_z
|
||||
/// I'm busy, don't move.
|
||||
var/busy = FALSE
|
||||
var/spawn_cars = FALSE
|
||||
|
||||
var/static/blacklisted_items = typecacheof(list(
|
||||
/obj/effect,
|
||||
@@ -91,6 +92,9 @@
|
||||
poof()
|
||||
|
||||
/mob/living/simple_animal/jacq/on_attack_hand(mob/living/carbon/human/M)
|
||||
if(spawn_cars)
|
||||
spawn_cars(M)
|
||||
return ..()
|
||||
if(!active)
|
||||
say("Hello there [gender_check(M)]!")
|
||||
return ..()
|
||||
@@ -101,6 +105,9 @@
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/jacq/attack_paw(mob/living/carbon/monkey/M)
|
||||
if(spawn_cars)
|
||||
spawn_cars(M)
|
||||
return ..()
|
||||
if(!active)
|
||||
say("Hello there [gender_check(M)]!")
|
||||
return ..()
|
||||
@@ -128,6 +135,8 @@
|
||||
|
||||
|
||||
/mob/living/simple_animal/jacq/proc/poof()
|
||||
if(!active)//if disabled, don't poof
|
||||
return
|
||||
last_poof = world.realtime
|
||||
var/datum/reagents/R = new/datum/reagents(100)//Hey, just in case.
|
||||
var/datum/effect_system/smoke_spread/chem/s = new()
|
||||
@@ -470,6 +479,30 @@
|
||||
sleep(20)
|
||||
poof()
|
||||
|
||||
/mob/living/simple_animal/jacq/proc/spawn_cars(mob/living/carbon/C)
|
||||
visible_message("<b>[src]</b> gives off a glowing smile, <span class='spooky'>\"What ken Ah offer ye? I can magic up a vectorcraft in manual or automatic fer ye.\"</span>")
|
||||
var/choices_reward = list("Manual", "Automatic", "How do Automatics work?", "Nothing, thanks")
|
||||
var/choice_reward = input(usr, "Trick or Treat?", "Trick or Treat?") in choices_reward
|
||||
|
||||
switch(choice_reward)
|
||||
if("Manual")
|
||||
visible_message("<b>[src]</b> waves their arms around, <span class='spooky'>\"Great choice! 'Ere's yer car.\"</span>")
|
||||
jacqrunes("Great choice! 'Ere's yer car.", C)
|
||||
new /obj/vehicle/sealed/vectorcraft(loc)
|
||||
if("Automatic")
|
||||
visible_message("<b>[src]</b> waves their arms around, <span class='spooky'>\"'Ere's yer car. Not as fast as an automatic mind.\"</span>")
|
||||
jacqrunes("'Ere's yer car. Not as fast as an automatic mind.", C)
|
||||
new /obj/vehicle/sealed/vectorcraft/auto(loc)
|
||||
if("How do Automatics work?")
|
||||
visible_message("<b>[src]</b> smiles, <span class='spooky'>\"Hold wasd to gain speed in a direction, c to enable/disable the clutch, 1 2 3 4 to change gears (help is gear 1, disarm is gear 2, grab is gear 3 and harm is gear 4) while holding a direction (make sure the clutch is enabled when you change gears, you should hear a sound when you've successfully changed gears), r to toggle handbrake, hold alt for brake and press shift for boost (the machine will beep when the boost is recharged)! If you hear an ebbing sound like \"brbrbrbrbr\" you need to gear down, the whining sound means you need to gear up. Hearing a pleasant \"whumwhumwhum\" is optimal gearage! It can be a lil slow to start, so make sure you're in the 1st gear, andusing a boost to get you started is a good idea. If you've got a good speed you'll likely never need to dip down to gear 1 again, and make sure to hold the acceleration pedal down while changing gears (hold a direction). 1st gear is for slow movement, and it's a good idea to mvoe to 2nd gear as quick as you can, you can coldstart a car from gear one by slowly moving, then using the boost to jump you up to gear 2 speeds. The upper gears are for unlimiting your top speed.\"</span>")
|
||||
jacqrunes("They're a bit tricky, aye. Basically;", C)
|
||||
if("Nothing, thanks")
|
||||
visible_message("<b>[src]</b> shrugs, <span class='spooky'>\"Suit yerself.\"</span>")
|
||||
jacqrunes("Suit yerself.", C)
|
||||
|
||||
visible_message("<b>[src]</b> shrugs, <span class='spooky'>\"Oh and look after the crafts, aye? They can get a wee bit... explosive if banged up a tad too much. They move slower damaged too like. Ye can repair 'em with the welders o'er there.\"</span>")
|
||||
jacqrunes("Oh and look after the crafts, aye? They can get a wee bit... explosive if banged up a tad too much. They move slower damaged too like. Ye can repair 'em with the welders o'er there. ", C)
|
||||
|
||||
/mob/living/simple_animal/jacq/update_mobility()
|
||||
. = ..()
|
||||
if(busy)
|
||||
|
||||
@@ -203,7 +203,7 @@
|
||||
return
|
||||
emergency_shutdown()
|
||||
|
||||
/obj/machinery/computer/holodeck/ex_act(severity, target)
|
||||
/obj/machinery/computer/holodeck/ex_act(severity, target, origin)
|
||||
emergency_shutdown()
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -27,10 +27,10 @@
|
||||
QDEL_NULL(beaker)
|
||||
return ..()
|
||||
|
||||
/obj/machinery/biogenerator/contents_explosion(severity, target)
|
||||
/obj/machinery/biogenerator/contents_explosion(severity, target, origin)
|
||||
..()
|
||||
if(beaker)
|
||||
beaker.ex_act(severity, target)
|
||||
beaker.ex_act(severity, target, origin)
|
||||
|
||||
/obj/machinery/biogenerator/handle_atom_del(atom/A)
|
||||
..()
|
||||
|
||||
@@ -173,7 +173,7 @@
|
||||
var/mob/M = loc
|
||||
M.dropItemToGround(src)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/firelemon/ex_act(severity)
|
||||
/obj/item/reagent_containers/food/snacks/grown/firelemon/ex_act(severity, target, origin)
|
||||
qdel(src) //Ensuring that it's deleted by its own explosion
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/firelemon/proc/prime(mob/living/lanced_by)
|
||||
|
||||
@@ -224,7 +224,7 @@
|
||||
if(!QDELETED(src))
|
||||
qdel(src)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/ex_act(severity)
|
||||
/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/ex_act(severity, target, origin)
|
||||
qdel(src) //Ensuring that it's deleted by its own explosion. Also prevents mass chain reaction with piles of cherry bombs
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/cherry_bomb/proc/prime(mob/living/lanced_by)
|
||||
@@ -500,7 +500,7 @@
|
||||
log_game("Coconut bomb detonation at [AREACOORD(T)], location [loc]")
|
||||
qdel(src)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/coconut/ex_act(severity)
|
||||
/obj/item/reagent_containers/food/snacks/grown/coconut/ex_act(severity, target, origin)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/reagent_containers/food/snacks/grown/coconut/deconstruct(disassembled = TRUE)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user