Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Timothy Teakettle
2022-02-18 21:36:45 +00:00
625 changed files with 88517 additions and 3712 deletions
+1
View File
@@ -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"
@@ -5625,7 +5625,6 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/machinery/door/firedoor,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/security/brig)
@@ -61634,7 +61633,6 @@
/area/security/prison/upper)
"qtw" = (
/obj/machinery/door/airlock/external{
dir = 2;
name = "Port Docking Bay 4"
},
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+26 -18
View File
@@ -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
+60 -51
View File
@@ -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
+34 -16
View File
@@ -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)
+4
View File
@@ -0,0 +1,4 @@
#define FORCE_MAP "_maps/spookystation.json"
/turf
baseturfs = /turf/open/floor/plating/spookbase/dirtattachmentpoint
+11
View File
@@ -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"
}
}
+1 -5
View File
@@ -5,10 +5,6 @@
#define NONE 0
//for convenience
#define ENABLE_BITFIELD(variable, flag) (variable |= (flag))
#define DISABLE_BITFIELD(variable, flag) (variable &= ~(flag))
#define CHECK_BITFIELD(variable, flag) (variable & (flag))
#define TOGGLE_BITFIELD(variable, flag) (variable ^= (flag))
#define COPY_SPECIFIC_BITFIELDS(a,b,flags)\
do{\
var/_old = a & ~(flags);\
@@ -154,7 +150,7 @@ GLOBAL_LIST_INIT(bitflags, list(
//Mob mobility var flags
/// any flag
#define CHECK_MOBILITY(target, flags) CHECK_BITFIELD(target.mobility_flags, flags)
#define CHECK_MOBILITY(target, flags) (target.mobility_flags & flags)
#define CHECK_ALL_MOBILITY(target, flags) CHECK_MULTIPLE_BITFIELDS(target.mobility_flags, flags)
/// can move
+1
View File
@@ -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
+3 -6
View File
@@ -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
+1 -1
View File
@@ -151,7 +151,7 @@ GLOBAL_LIST_INIT(typecache_powerfailure_safe_areas, typecacheof(/area/engineerin
if(!place.requires_power || (place.area_flags & NOTELEPORT) || (place.area_flags & HIDDEN_AREA))
continue // No expanding powerless rooms etc
areas[place.name] = place
var/area_choice = tgui_input_list(creator, "Choose an area to expand or make a new area.", "Area Expansion", areas)
var/area_choice = input(creator, "Choose an area to expand or make a new area.", "Area Expansion") as null|anything in areas
area_choice = areas[area_choice]
if(!area_choice)
+1 -1
View File
@@ -60,7 +60,7 @@
S["real_name"] >> name
if(name)
characters[name] = i
var/chosen_name = tgui_input_list(C, "Which character do you wish to use as your appearance.", "", characters)
var/chosen_name = input(C, "Which character do you wish to use as your appearance.") as anything in characters
if(chosen_name)
if(C.prefs.last_custom_holoform > world.time - CUSTOM_HOLOFORM_DELAY)
to_chat(C.mob, "<span class='boldwarning'>You are attempting to set your custom holoform too fast!</span>")
+1 -1
View File
@@ -11,7 +11,7 @@
if(path != root)
choices.Insert(1,"/")
var/choice = tgui_input_list(src,"Choose a file to access:","Download", choices)
var/choice = input(src,"Choose a file to access:","Download",null) as null|anything in choices
switch(choice)
if(null)
return
+1 -1
View File
@@ -59,7 +59,7 @@
for(var/gpath in subtypesof(/obj/item/organ/genital))
var/obj/item/organ/genital/G = gpath
if(!CHECK_BITFIELD(initial(G.genital_flags), GENITAL_BLACKLISTED))
if(!(initial(G.genital_flags) & GENITAL_BLACKLISTED))
GLOB.genitals_list[initial(G.name)] = gpath
//END OF CIT CHANGES
+3 -3
View File
@@ -75,11 +75,11 @@
/proc/choose_reagent_id(mob/user)
var/chosen_id
switch(tgui_alert(user, "Choose a method.", "Add Reagents", list("Search", "Choose from a list", "I'm feeling lucky")))
switch(alert(user, "Choose a method.", "Add Reagents", "Search", "Choose from a list", "I'm feeling lucky"))
if("Search")
var/valid_id
while(!valid_id)
chosen_id = tgui_input_text(user, "Enter the ID of the reagent you want to add.", "Search reagents")
chosen_id = input(user, "Enter the ID of the reagent you want to add.", "Search reagents") as null|text
if(isnull(chosen_id)) //Get me out of here!
break
if(!ispath(text2path(chosen_id)))
@@ -91,7 +91,7 @@
if(!valid_id)
to_chat(user, "<span class='warning'>A reagent with that ID doesn't exist!</span>")
if("Choose from a list")
chosen_id = tgui_input_list(user, "Choose a reagent to add.", "Choose a reagent.", subtypesof(/datum/reagent))
chosen_id = input(user, "Choose a reagent to add.", "Choose a reagent.") as null|anything in subtypesof(/datum/reagent)
if("I'm feeling lucky")
chosen_id = pick(subtypesof(/datum/reagent))
return chosen_id
+4 -4
View File
@@ -42,7 +42,7 @@
/proc/sanitize_name(t,list/repl_chars = null)
if(t == "space" || t == "floor" || t == "wall" || t == "r-wall" || t == "monkey" || t == "unknown" || t == "inactive ai") //prevents these common metagamey names
tgui_alert(usr, "Invalid name.")
alert("Invalid name.")
return ""
return sanitize(t)
@@ -93,7 +93,7 @@
// Used to get a properly sanitized input, of max_length
// no_trim is self explanatory but it prevents the input from being trimed if you intend to parse newlines or whitespace.
/proc/stripped_input(mob/user, message = "", title = "", default = "", max_length=MAX_MESSAGE_LEN, no_trim=FALSE)
var/name = tgui_input_text(user, message, title, default)
var/name = input(user, message, title, default) as text|null
if(no_trim)
return copytext(html_encode(name), 1, max_length)
else
@@ -101,7 +101,7 @@
// Used to get a properly sanitized multiline input, of max_length
/proc/stripped_multiline_input(mob/user, message = "", title = "", default = "", max_length=MAX_MESSAGE_LEN, no_trim=FALSE)
var/name = tgui_input_message(user, message, title, default)
var/name = input(user, message, title, default) as message|null
if(isnull(name)) // Return null if canceled.
return null
if(no_trim)
@@ -113,7 +113,7 @@
* stripped_multiline_input but reflects to the user instead if it's too big and returns null.
*/
/proc/stripped_multiline_input_or_reflect(mob/user, message = "", title = "", default = "", max_length=MAX_MESSAGE_LEN, no_trim=FALSE)
var/name = tgui_input_message(user, message, title, default)
var/name = input(user, message, title, default) as message|null
if(isnull(name)) // Return null if canceled.
return null
if(length(name) > max_length)
+4 -4
View File
@@ -249,7 +249,7 @@ Turf and target are separate in case you want to teleport some distance from a t
var/list/borgs = active_free_borgs()
if(borgs.len)
if(user)
. = tgui_input_list(user,"Unshackled cyborg signals detected:", "Cyborg Selection", borgs)
. = input(user,"Unshackled cyborg signals detected:", "Cyborg Selection", borgs[1]) in borgs
else
. = pick(borgs)
return .
@@ -258,7 +258,7 @@ Turf and target are separate in case you want to teleport some distance from a t
var/list/ais = active_ais()
if(ais.len)
if(user)
. = tgui_input_list(user,"AI signals detected:", "AI Selection", ais)
. = input(user,"AI signals detected:", "AI Selection", ais[1]) in ais
else
. = pick(ais)
return .
@@ -1075,7 +1075,7 @@ B --><-- A
/proc/pick_closest_path(value, list/matches = get_fancy_list_of_atom_types())
if (value == FALSE) //nothing should be calling us with a number, so this is safe
value = tgui_input_text(usr, "Enter type to find (blank for all, cancel to cancel)", "Search for type")
value = input("Enter type to find (blank for all, cancel to cancel)", "Search for type") as null|text
if (isnull(value))
return
value = trim(value)
@@ -1089,7 +1089,7 @@ B --><-- A
if(matches.len==1)
chosen = matches[1]
else
chosen = tgui_input_list(usr, "Select a type", "Pick Type", matches)
chosen = input("Select a type", "Pick Type", matches[1]) as null|anything in matches
if(!chosen)
return
chosen = matches[chosen]
+1 -1
View File
@@ -33,7 +33,7 @@
if(..())
return
var/mob/living/silicon/ai/AI = usr
var/target_name = tgui_input_list(AI, "Choose who you want to track", "Tracking", AI.trackable_mobs())
var/target_name = input(AI, "Choose who you want to track", "Tracking") as null|anything in AI.trackable_mobs()
AI.ai_camera_track(target_name)
/atom/movable/screen/ai/camera_light
+2 -2
View File
@@ -62,7 +62,7 @@
M.maptext = "Movable"
M.maptext_width = 64
var/screen_l = tgui_input_text(usr,"Where on the screen? (Formatted as 'X,Y' e.g: '1,1' for bottom left)","Spawn Movable UI Object")
var/screen_l = input(usr,"Where on the screen? (Formatted as 'X,Y' e.g: '1,1' for bottom left)","Spawn Movable UI Object") as text
if(!screen_l)
return
@@ -81,7 +81,7 @@
S.maptext = "Snap"
S.maptext_width = 64
var/screen_l = tgui_input_text(usr,"Where on the screen? (Formatted as 'X,Y' e.g: '1,1' for bottom left)","Spawn Snap UI Object")
var/screen_l = input(usr,"Where on the screen? (Formatted as 'X,Y' e.g: '1,1' for bottom left)","Spawn Snap UI Object") as text
if(!screen_l)
return
+1 -1
View File
@@ -323,7 +323,7 @@
var/obj/item/clothing/mask/M = check
if(M.mask_adjusted)
M.adjustmask(C)
if(CHECK_BITFIELD(check.clothing_flags, ALLOWINTERNALS))
if((check.clothing_flags & ALLOWINTERNALS))
internals = TRUE
if(!internals)
to_chat(C, "<span class='warning'>You are not wearing an internals mask!</span>")
+1 -1
View File
@@ -260,7 +260,7 @@
return clamp((1.5 + (w_class/5)) * ((force_override || force) / 1.5), 0, 10 SECONDS) * CONFIG_GET(number/melee_stagger_factor)
/obj/item/proc/do_stagger_action(mob/living/target, mob/living/user, force_override)
if(!CHECK_BITFIELD(target.status_flags, CANSTAGGER))
if(!(target.status_flags & CANSTAGGER))
return FALSE
if(target.combat_flags & COMBAT_FLAG_SPRINT_ACTIVE)
target.do_staggered_animation()
+1 -1
View File
@@ -80,7 +80,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/statclick)
controllers["[controller] (controller.type)"] = controller //we use an associated list to ensure clients can't hold references to controllers
controller_choices += "[controller] (controller.type)"
var/datum/controller/controller_string = tgui_input_list(src, "Select controller to debug", "Debug Controller", controller_choices)
var/datum/controller/controller_string = input("Select controller to debug", "Debug Controller") as null|anything in controller_choices
var/datum/controller/controller = controllers[controller_string]
if (!istype(controller))
+3 -3
View File
@@ -483,7 +483,7 @@ GLOBAL_LIST_EMPTY(the_station_areas)
if(!holder ||!check_rights(R_FUN))
return
var/choice = tgui_alert(src, "What kind of level would you like to load?", "Load Away/VR", list(AWAY_MISSION_NAME, VIRT_REALITY_NAME, "Cancel"))
var/choice = alert(src, "What kind of level would you like to load?", "Load Away/VR", AWAY_MISSION_NAME, VIRT_REALITY_NAME, "Cancel")
var/list/possible_options
var/list/ztraits
@@ -493,7 +493,7 @@ GLOBAL_LIST_EMPTY(the_station_areas)
ztraits = list(ZTRAIT_AWAY = TRUE, ZTRAIT_VR = TRUE)
if(AWAY_MISSION_NAME)
if(!GLOB.the_gateway)
if(tgui_alert(src, "There's no home gateway on the station. You sure you want to continue ?", "Uh oh", list("Yes", "No")) != "Yes")
if(alert("There's no home gateway on the station. You sure you want to continue ?", "Uh oh", "Yes", "No") != "Yes")
return
possible_options = GLOB.potential_away_levels
ztraits = list(ZTRAIT_AWAY = TRUE)
@@ -503,7 +503,7 @@ GLOBAL_LIST_EMPTY(the_station_areas)
var/away_name
var/datum/space_level/away_level
var/answer = tgui_input_list(src, "What kind ? ","Away/VR", list(possible_options + "Custom"))
var/answer = input("What kind ? ","Away/VR") as null|anything in list(possible_options + "Custom")
switch(answer)
if(null)
return
+1 -1
View File
@@ -943,6 +943,6 @@ SUBSYSTEM_DEF(shuttle)
SSblackbox.record_feedback("text", "shuttle_manipulator", 1, "[mdp.name]")
shuttle_loading = FALSE
if(emergency == mdp) //you just changed the emergency shuttle, there are events in game + captains that can change your snowflake choice.
var/set_purchase = tgui_alert(usr, "Do you want to also disable shuttle purchases/random events that would change the shuttle?", "Butthurt Admin Prevention", list("Yes, disable purchases/events", "No, I want to possibly get owned"))
var/set_purchase = alert(usr, "Do you want to also disable shuttle purchases/random events that would change the shuttle?", "Butthurt Admin Prevention", "Yes, disable purchases/events", "No, I want to possibly get owned")
if(set_purchase == "Yes, disable purchases/events")
SSshuttle.shuttle_purchased = SHUTTLEPURCHASE_FORCED
+2 -2
View File
@@ -453,7 +453,7 @@ SUBSYSTEM_DEF(vote)
question = stripped_input(usr,"What is the vote for?")
if(!question)
return 0
var/system_string = tgui_input_list(usr,"Which voting type?",GLOB.vote_type_names[1], GLOB.vote_type_names)
var/system_string = input(usr,"Which voting type?",GLOB.vote_type_names[1]) in GLOB.vote_type_names
vote_system = GLOB.vote_type_names[system_string]
for(var/i=1,i<=10,i++)
var/option = capitalize(stripped_input(usr,"Please enter an option or hit cancel to finish"))
@@ -469,7 +469,7 @@ SUBSYSTEM_DEF(vote)
var/bitflag = GLOB.display_vote_settings[A]
toggletext = "[toggles & bitflag ? "Show" : "Hide"] [A]"
choices[toggletext] = bitflag
var/chosen = tgui_input_list(usr, "Toggle vote display settings. Cancel to finalize.", toggles, choices)
var/chosen = input(usr, "Toggle vote display settings. Cancel to finalize.", toggles) as null|anything in choices
if(!chosen)
keep_going = FALSE
else
+2 -2
View File
@@ -564,7 +564,7 @@
var/list/areas = list()
for (var/area/a in owner.siliconaccessareas)
areas[a.name] = a
var/removeAPC = tgui_input_list(owner, "Select an APC to remove:","Remove APC Control", areas)
var/removeAPC = input("Select an APC to remove:","Remove APC Control",1) as null|anything in areas
if (!removeAPC)
return
var/area/area = areas[removeAPC]
@@ -586,7 +586,7 @@
var/list/areas = list()
for (var/area/a in owner.siliconaccessareas)
areas[a.name] = a
var/accessAPC = tgui_input_list(owner, "Select an APC to access:","Access APC Interface", areas)
var/accessAPC = input("Select an APC to access:","Access APC Interface",1) as null|anything in areas
if (!accessAPC)
return
var/area/area = areas[accessAPC]
+1 -1
View File
@@ -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)
+3 -3
View File
@@ -376,13 +376,13 @@
if ("string")
settings["mainsettings"][setting]["value"] = stripped_input(user, "Enter new value for [settings["mainsettings"][setting]["desc"]]", "Enter new value for [settings["mainsettings"][setting]["desc"]]", settings["mainsettings"][setting]["value"])
if ("number")
settings["mainsettings"][setting]["value"] = tgui_input_num(user, "Enter new value for [settings["mainsettings"][setting]["desc"]]", "Enter new value for [settings["mainsettings"][setting]["desc"]]")
settings["mainsettings"][setting]["value"] = input(user, "Enter new value for [settings["mainsettings"][setting]["desc"]]", "Enter new value for [settings["mainsettings"][setting]["desc"]]") as num
if ("color")
settings["mainsettings"][setting]["value"] = input(user, "Enter new value for [settings["mainsettings"][setting]["desc"]]", "Enter new value for [settings["mainsettings"][setting]["desc"]]", settings["mainsettings"][setting]["value"]) as color
if ("boolean")
settings["mainsettings"][setting]["value"] = tgui_input_list(user, "[settings["mainsettings"][setting]["desc"]]?", "", list("Yes","No"))
settings["mainsettings"][setting]["value"] = input(user, "[settings["mainsettings"][setting]["desc"]]?") in list("Yes","No")
if ("ckey")
settings["mainsettings"][setting]["value"] = tgui_input_list(user, "[settings["mainsettings"][setting]["desc"]]?", "", list("none") + GLOB.directory)
settings["mainsettings"][setting]["value"] = input(user, "[settings["mainsettings"][setting]["desc"]]?") in list("none") + GLOB.directory
if (settings["mainsettings"][setting]["callback"])
var/datum/callback/callback = settings["mainsettings"][setting]["callback"]
settings = callback.Invoke(settings)
+9 -5
View File
@@ -52,12 +52,16 @@
return
/**
* Properly removes the component from `parent` and cleans up references
* Setting `force` makes it not check for and remove the component from the parent
* Setting `silent` deletes the component without sending a `COMSIG_COMPONENT_REMOVING` signal
*/
* Properly removes the component from `parent` and cleans up references
*
* Arguments:
* * force - makes it not check for and remove the component from the parent
* * silent - deletes the component without sending a [COMSIG_COMPONENT_REMOVING] signal
*/
/datum/component/Destroy(force=FALSE, silent=FALSE)
if(!force && parent)
if(!parent)
return ..()
if(!force)
_RemoveFromParent()
if(!silent)
SEND_SIGNAL(parent, COMSIG_COMPONENT_REMOVING, src)
+4 -2
View File
@@ -38,9 +38,11 @@
/datum/component/acid/Destroy()
STOP_PROCESSING(SSprocessing, src)
var/obj/O = parent
level = 0
O.update_overlays()
if(parent) // So, this is how you get runtimes fellas.
UnregisterSignal(parent, list(COMSIG_ATOM_UPDATE_OVERLAYS, COMSIG_ATOM_ATTACK_HAND)) // Don't worry about isitem checks, we don't need them.
var/atom/O = parent
O.update_icon(UPDATE_OVERLAYS)
return ..()
/datum/component/acid/process()
+1 -1
View File
@@ -29,7 +29,7 @@
expire = _expire
/datum/component/anti_magic/proc/on_equip(datum/source, mob/equipper, slot)
if(!CHECK_BITFIELD(allowed_slots, slotdefine2slotbit(slot))) //Check that the slot is valid for antimagic
if(!(allowed_slots & slotdefine2slotbit(slot))) //Check that the slot is valid for antimagic
UnregisterSignal(equipper, COMSIG_MOB_RECEIVE_MAGIC)
return
RegisterSignal(equipper, COMSIG_MOB_RECEIVE_MAGIC, .proc/protect, TRUE)
+1 -1
View File
@@ -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()
+1 -1
View File
@@ -125,7 +125,7 @@
//try to get ammount to use
var/requested_amount
if(precise_insertion)
requested_amount = tgui_input_num(user, "How much do you want to insert?", "Inserting [S.singular_name]s")
requested_amount = input(user, "How much do you want to insert?", "Inserting [S.singular_name]s") as num|null
else
requested_amount= S.amount
@@ -5,7 +5,7 @@
var/list/obj/item/storage/backpack/holding/matching = typecache_filter_list(W.GetAllContents(), typecacheof(/obj/item/storage/backpack/holding))
matching -= A
if(istype(W, /obj/item/storage/backpack/holding) || matching.len)
var/safety = tgui_alert(user, "Doing this will have extremely dire consequences for the station and its crew. Be sure you know what you're doing.", "Put in [A.name]?", list("Abort", "Proceed"))
var/safety = alert(user, "Doing this will have extremely dire consequences for the station and its crew. Be sure you know what you're doing.", "Put in [A.name]?", "Abort", "Proceed")
if(safety != "Proceed" || QDELETED(A) || QDELETED(W) || QDELETED(user) || !user.canUseTopic(A, BE_CLOSE, iscarbon(user)))
return
var/turf/loccheck = get_turf(A)
+1 -1
View File
@@ -450,7 +450,7 @@
symptoms += SSdisease.list_symptoms.Copy()
do
if(user)
var/symptom = tgui_input_list(user, "Choose a symptom to add ([i] remaining)", "Choose a Symptom", symptoms)
var/symptom = input(user, "Choose a symptom to add ([i] remaining)", "Choose a Symptom") in symptoms
if(isnull(symptom))
return
else if(istext(symptom))
+1 -1
View File
@@ -112,7 +112,7 @@ GLOBAL_LIST_EMPTY(mobs_with_editable_flavor_text) //et tu, hacky code
var/datum/element/flavor_text/F = i
choices[F.flavor_name] = F
var/chosen = tgui_input_list(src, "Which flavor text would you like to modify?", "", choices)
var/chosen = input(src, "Which flavor text would you like to modify?") as null|anything in choices
if(!chosen)
return
var/datum/element/flavor_text/F = choices[chosen]
+1 -1
View File
@@ -122,7 +122,7 @@
overlays += mutable_appearance(f_icon, overlays_states[i], color = M.color)
/datum/element/polychromic/proc/set_color(atom/source, mob/user)
var/choice = tgui_input_list(user,"Polychromic options", "Recolor [source]", overlays_names)
var/choice = input(user,"Polychromic options", "Recolor [source]") as null|anything in overlays_names
if(!choice || QDELETED(source) || !user.canUseTopic(source, BE_CLOSE, NO_DEXTERY))
return
var/index = overlays_names.Find(choice)
+2 -2
View File
@@ -52,7 +52,7 @@
new /obj/effect/temp_visual/heart(target.loc)
if(pet_emote)
target.emote("me", pet_type, pet_emote)
if(pet_moodlet && !CHECK_BITFIELD(target.flags_1, HOLOGRAM_1)) //prevents unlimited happiness petting park exploit.
if(pet_moodlet && !(target.flags_1 & HOLOGRAM_1)) //prevents unlimited happiness petting park exploit.
SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, target, pet_moodlet, target)
/datum/element/wuv/proc/kick_the_dog(mob/target, mob/user)
@@ -60,5 +60,5 @@
return
if(punt_emote)
target.emote("me", punt_type, punt_emote)
if(punt_moodlet && !CHECK_BITFIELD(target.flags_1, HOLOGRAM_1))
if(punt_moodlet && !(target.flags_1 & HOLOGRAM_1))
SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, target, punt_moodlet, target)
+6 -6
View File
@@ -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 ---
@@ -385,7 +385,7 @@ GLOBAL_LIST_EMPTY(explosions)
set name = "Check Bomb Impact"
set category = "Debug"
var/newmode = tgui_alert(src, "Use reactionary explosions?","Check Bomb Impact", list("Yes", "No"))
var/newmode = alert("Use reactionary explosions?","Check Bomb Impact", "Yes", "No")
var/turf/epicenter = get_turf(mob)
if(!epicenter)
return
@@ -394,7 +394,7 @@ GLOBAL_LIST_EMPTY(explosions)
var/heavy = 0
var/light = 0
var/list/choices = list("Small Bomb","Medium Bomb","Big Bomb","Custom Bomb")
var/choice = tgui_input_list(src, "Bomb Size?", "", choices)
var/choice = input("Bomb Size?") in choices
switch(choice)
if(null)
return 0
@@ -411,9 +411,9 @@ GLOBAL_LIST_EMPTY(explosions)
heavy = 5
light = 7
if("Custom Bomb")
dev = tgui_input_num(src, "Devastation range (Tiles):")
heavy = tgui_input_num(src, "Heavy impact range (Tiles):")
light = tgui_input_num(src, "Light impact range (Tiles):")
dev = input("Devastation range (Tiles):") as num
heavy = input("Heavy impact range (Tiles):") as num
light = input("Light impact range (Tiles):") as num
var/max_range = max(dev, heavy, light)
var/x0 = epicenter.x
+11 -6
View File
@@ -141,7 +141,7 @@
if(isliving(new_character)) //New humans and such are by default enabled arousal. Let's always use the new mind's prefs.
var/mob/living/L = new_character
if(L.client?.prefs && L.client.prefs.auto_ooc && L.client.prefs.chat_toggles & CHAT_OOC)
DISABLE_BITFIELD(L.client.prefs.chat_toggles,CHAT_OOC)
L.client.prefs.chat_toggles &= ~(CHAT_OOC)
hide_ckey = current.client?.prefs?.hide_ckey
@@ -421,7 +421,7 @@
A.admin_remove(usr)
if (href_list["role_edit"])
var/new_role = tgui_input_list(usr, "Select new role", "Assigned role", get_all_jobs())
var/new_role = input("Select new role", "Assigned role", assigned_role) as null|anything in get_all_jobs()
if (!new_role)
return
assigned_role = new_role
@@ -434,6 +434,7 @@
else if (href_list["obj_edit"] || href_list["obj_add"])
var/objective_pos //Edited objectives need to keep same order in antag objective list
var/def_value
var/datum/antagonist/target_antag
var/datum/objective/old_objective //The old objective we're replacing/editing
var/datum/objective/new_objective //New objective we're be adding
@@ -461,7 +462,7 @@
if(1)
target_antag = antag_datums[1]
else
var/datum/antagonist/target = tgui_input_list(usr, "Which antagonist gets the objective:", "Antagonist", list(antag_datums + "(new custom antag)"))
var/datum/antagonist/target = input("Which antagonist gets the objective:", "Antagonist", "(new custom antag)") as null|anything in antag_datums + "(new custom antag)"
if (QDELETED(target))
return
else if(target == "(new custom antag)")
@@ -495,7 +496,11 @@
var/datum/objective/X = T
choices[initial(X.name)] = T
var/selected_type = tgui_input_list(usr, "Select objective type:", "Objective type", choices)
if(old_objective)
if(old_objective.name in choices)
def_value = old_objective.name
var/selected_type = input("Select objective type:", "Objective type", def_value) as null|anything in choices
selected_type = choices[selected_type]
if (!selected_type)
return
@@ -533,7 +538,7 @@
choices[initial(t.employer)] = C
var/datum/antagonist/traitor/T = locate(href_list["target_antag"]) in antag_datums
if(T)
var/selected_type = tgui_input_list(usr, "Select traitor class:", "Traitor class", choices)
var/selected_type = input("Select traitor class:", "Traitor class", T.traitor_kind.employer) as null|anything in choices
selected_type = choices[selected_type]
T.set_traitor_kind(selected_type)
@@ -594,7 +599,7 @@
if(check_rights(R_FUN, 0))
var/datum/component/uplink/U = find_syndicate_uplink()
if(U)
var/crystals = tgui_input_num(usr, "Amount of telecrystals for [key]","Syndicate uplink", U.telecrystals)
var/crystals = input("Amount of telecrystals for [key]","Syndicate uplink", U.telecrystals) as null | num
if(!isnull(crystals))
U.telecrystals = crystals
message_admins("[key_name_admin(usr)] changed [current]'s telecrystal count to [crystals].")
+1 -1
View File
@@ -242,7 +242,7 @@
if(!length(possible))
to_chat(user,"<span class='warning'>Despite your best efforts, there are no scents to be found on [sniffed]...</span>")
return
tracking_target = tgui_input_list(user, "Choose a scent to remember.", "Scent Tracking", sortNames(possible))
tracking_target = input(user, "Choose a scent to remember.", "Scent Tracking") as null|anything in sortNames(possible)
if(!tracking_target)
if(!old_target)
to_chat(user,"<span class='warning'>You decide against remembering any scents. Instead, you notice your own nose in your peripheral vision. This goes on to remind you of that one time you started breathing manually and couldn't stop. What an awful day that was.</span>")
+1 -1
View File
@@ -112,7 +112,7 @@
))
if(!can_contaminate || blacklisted[thing.type])
continue
if(CHECK_BITFIELD(thing.rad_flags, RAD_NO_CONTAMINATE) || SEND_SIGNAL(thing, COMSIG_ATOM_RAD_CONTAMINATING, strength) & COMPONENT_BLOCK_CONTAMINATION)
if((thing.rad_flags & RAD_NO_CONTAMINATE) || SEND_SIGNAL(thing, COMSIG_ATOM_RAD_CONTAMINATING, strength) & COMPONENT_BLOCK_CONTAMINATION)
continue
contam_atoms += thing
var/did_contam = 0
+4 -4
View File
@@ -21,7 +21,7 @@
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, "SkillPanel", "[owner.name]'s Skills")
ui.set_autoupdate(FALSE)
ui.set_autoupdate(FALSE)
ui.open()
else if(need_static_data_update)
update_static_data(user)
@@ -57,7 +57,7 @@
if(!check_rights(R_DEBUG))
return
var/skill = text2path(params["skill"])
var/number = tgui_input_num(usr, "Please insert the amount of experience/progress you'd like to add/subtract:")
var/number = input("Please insert the amount of experience/progress you'd like to add/subtract:") as num|null
if (number)
owner.set_skill_value(skill, owner.get_skill_value(skill, FALSE) + number)
return TRUE
@@ -65,7 +65,7 @@
if(!check_rights(R_DEBUG))
return
var/skill = text2path(params["skill"])
var/number = tgui_input_num(usr, "Please insert the number you want to set the player's exp/progress to:")
var/number = input("Please insert the number you want to set the player's exp/progress to:") as num|null
if (!isnull(number))
owner.set_skill_value(skill, number)
return TRUE
@@ -73,7 +73,7 @@
if(!check_rights(R_DEBUG))
return
var/datum/skill/level/S = GLOB.skill_datums[text2path(params["skill"])]
var/number = tgui_input_num(usr, "Please insert a whole number between 0[S.associative ? " ([S.unskilled_tier])" : ""] and [S.max_levels][S.associative ? " ([S.levels[S.max_levels]])" : ""] corresponding to the level you'd like to set the player to.")
var/number = input("Please insert a whole number between 0[S.associative ? " ([S.unskilled_tier])" : ""] and [S.max_levels][S.associative ? " ([S.levels[S.max_levels]])" : ""] corresponding to the level you'd like to set the player to.") as num|null
if (number >= 0 && number <= S.max_levels)
owner.set_skill_value(S.type, S.get_skill_level_value(number))
return TRUE
+15 -15
View File
@@ -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)
+18 -14
View File
@@ -596,9 +596,13 @@
//SHOULD_CALL_PARENT(TRUE)
return SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_ICON_STATE)
/// Updates the overlays of the atom
/**
* Builds a list of overlays for the atom, this will not apply them.
* If you need to update overlays, use [update_icon(UPDATE_OVERLAYS)],
* This proc is intended to be overridden.
*/
/atom/proc/update_overlays()
//SHOULD_CALL_PARENT(TRUE)
SHOULD_CALL_PARENT(TRUE)
. = list()
SEND_SIGNAL(src, COMSIG_ATOM_UPDATE_OVERLAYS, .)
@@ -610,12 +614,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)
/**
@@ -985,14 +989,14 @@
. = ..()
if(href_list[VV_HK_ADD_REAGENT] && check_rights(R_VAREDIT))
if(!reagents)
var/amount = tgui_input_num(usr, "Specify the reagent size of [src]", "Set Reagent Size", 50)
var/amount = input(usr, "Specify the reagent size of [src]", "Set Reagent Size", 50) as num
if(amount)
create_reagents(amount)
if(reagents)
var/chosen_id = choose_reagent_id(usr)
if(chosen_id)
var/amount = tgui_input_num(usr, "Choose the amount to add.", "Choose the amount.", reagents.maximum_volume)
var/amount = input(usr, "Choose the amount to add.", "Choose the amount.", reagents.maximum_volume) as num
if(amount)
reagents.add_reagent(chosen_id, amount)
log_admin("[key_name(usr)] has added [amount] units of [chosen_id] to [src]")
@@ -1002,25 +1006,25 @@
if(href_list[VV_HK_TRIGGER_EMP] && check_rights(R_FUN))
usr.client.cmd_admin_emp(src)
if(href_list[VV_HK_MODIFY_TRANSFORM] && check_rights(R_VAREDIT))
var/result = tgui_input_list(usr, "Choose the transformation to apply","Transform Mod", list("Scale","Translate","Rotate"))
var/result = input(usr, "Choose the transformation to apply","Transform Mod") as null|anything in list("Scale","Translate","Rotate")
var/matrix/M = transform
switch(result)
if("Scale")
var/x = tgui_input_num(usr, "Choose x mod","Transform Mod")
var/y = tgui_input_num(usr, "Choose y mod","Transform Mod")
var/x = input(usr, "Choose x mod","Transform Mod") as null|num
var/y = input(usr, "Choose y mod","Transform Mod") as null|num
if(!isnull(x) && !isnull(y))
transform = M.Scale(x,y)
if("Translate")
var/x = tgui_input_num(usr, "Choose x mod","Transform Mod")
var/y = tgui_input_num(usr, "Choose y mod","Transform Mod")
var/x = input(usr, "Choose x mod","Transform Mod") as null|num
var/y = input(usr, "Choose y mod","Transform Mod") as null|num
if(!isnull(x) && !isnull(y))
transform = M.Translate(x,y)
if("Rotate")
var/angle = tgui_input_num(usr, "Choose angle to rotate","Transform Mod")
var/angle = input(usr, "Choose angle to rotate","Transform Mod") as null|num
if(!isnull(angle))
transform = M.Turn(angle)
if(href_list[VV_HK_AUTO_RENAME] && check_rights(R_VAREDIT))
var/newname = tgui_input_text(usr, "What do you want to rename this to?", "Automatic Rename")
var/newname = input(usr, "What do you want to rename this to?", "Automatic Rename") as null|text
if(newname)
vv_auto_rename(newname)
if(href_list[VV_HK_EDIT_FILTERS] && check_rights(R_VAREDIT))
+1 -7
View File
@@ -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))
+5 -4
View File
@@ -201,7 +201,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1)
else if (href_list["no_stacking"])
GLOB.dynamic_no_stacking = !GLOB.dynamic_no_stacking
else if (href_list["adjustthreat"])
var/threatadd = tgui_input_num(usr, "Specify how much threat to add (negative to subtract). This can inflate the threat level.", "Adjust Threat", 0)
var/threatadd = input("Specify how much threat to add (negative to subtract). This can inflate the threat level.", "Adjust Threat", 0) as null|num
if(!threatadd)
return
if(threatadd > 0)
@@ -221,9 +221,9 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1)
else if (href_list["threatlog"])
show_threatlog(usr)
else if (href_list["stacking_limit"])
GLOB.dynamic_stacking_limit = tgui_input_num(usr,"Change the threat limit at which round-endings rulesets will start to stack.", "Change stacking limit", null)
GLOB.dynamic_stacking_limit = input(usr,"Change the threat limit at which round-endings rulesets will start to stack.", "Change stacking limit", null) as num
else if(href_list["force_latejoin_rule"])
var/added_rule = tgui_input_list(usr,"What ruleset do you want to force upon the next latejoiner? This will bypass threat level and population restrictions.", "Rigging Latejoin", sortNames(init_rulesets(/datum/dynamic_ruleset/latejoin)))
var/added_rule = input(usr,"What ruleset do you want to force upon the next latejoiner? This will bypass threat level and population restrictions.", "Rigging Latejoin", null) as null|anything in sortNames(init_rulesets(/datum/dynamic_ruleset/latejoin))
if (!added_rule)
return
forced_latejoin_rule = added_rule
@@ -234,7 +234,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1)
log_admin("[key_name(usr)] cleared the forced latejoin ruleset.")
message_admins("[key_name(usr)] cleared the forced latejoin ruleset.")
else if(href_list["force_midround_rule"])
var/added_rule = tgui_input_list(usr,"What ruleset do you want to force right now? This will bypass threat level and population restrictions.", "Execute Ruleset", sortNames(init_rulesets(/datum/dynamic_ruleset/midround)))
var/added_rule = input(usr,"What ruleset do you want to force right now? This will bypass threat level and population restrictions.", "Execute Ruleset", null) as null|anything in sortNames(init_rulesets(/datum/dynamic_ruleset/midround))
if (!added_rule)
return
log_admin("[key_name(usr)] executed the [added_rule] ruleset.")
@@ -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.
@@ -63,7 +63,7 @@
required_candidates = 1
weight = 7
cost = 5
requirements = list(40,30,20,10,10,10,10,10,10,10)
requirements = list(101,40,25,20,15,10,10,10,10,10)
repeatable = TRUE
//////////////////////////////////////////////
@@ -159,5 +159,5 @@
required_candidates = 1
weight = 4
cost = 10
requirements = list(101,101,101,50,40,10,10,10,10,10)
requirements = list(101,101,101,50,40,20,20,15,10,10)
repeatable = TRUE
@@ -254,7 +254,7 @@
antag_flag = ROLE_MALF
enemy_roles = list("Security Officer", "Warden","Detective","Head of Security", "Captain", "Scientist", "Chemist", "Research Director", "Chief Engineer")
exclusive_roles = list("AI")
required_enemies = list(4,4,4,4,4,4,2,2,2,0)
required_enemies = list(0,0,0,0,0,0,0,0,0,0)
required_candidates = 1
weight = 3
cost = 35
@@ -304,11 +304,11 @@
antag_flag = "wizard mid"
antag_flag_override = ROLE_WIZARD
enemy_roles = list("Security Officer","Detective","Head of Security", "Captain")
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
required_enemies = list(0,0,0,0,0,0,0,0,0,0)
required_candidates = 1
weight = 2
cost = 20
requirements = list(101,101,100,80,50,30,20,10,10,10)
requirements = list(101,101,100,60,40,20,20,20,10,10)
repeatable = TRUE
var/datum/mind/wizard
@@ -351,11 +351,11 @@
antag_datum = /datum/antagonist/nukeop
antag_flag_override = ROLE_OPERATIVE
enemy_roles = list("AI", "Cyborg", "Security Officer", "Warden","Detective","Head of Security", "Captain")
required_enemies = list(3,3,3,3,3,2,1,1,0,0)
required_enemies = list(0,0,0,0,0,0,0,0,0,0)
required_candidates = 5
weight = 3
cost = 35
requirements = list(101,101,101,80,50,40,30,15,10,10)
requirements = list(101,101,101,60,40,30,20,15,10,10)
var/list/operative_cap = list(2,2,3,3,3,4,5,5,5,5)
var/datum/team/nuclear/nuke_team
flags = HIGH_IMPACT_RULESET
@@ -393,11 +393,11 @@
antag_datum = /datum/antagonist/blob
antag_flag = ROLE_BLOB
enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain")
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
required_enemies = list(0,0,0,0,0,0,0,0,0,0)
required_candidates = 1
weight = 2
cost = 10
requirements = list(101,101,101,101,70,40,25,20,10,10)
requirements = list(101,101,101,101,50,40,30,20,10,10)
repeatable = TRUE
/datum/dynamic_ruleset/midround/from_ghosts/blob/generate_ruleset_body(mob/applicant)
@@ -412,11 +412,11 @@
protected_roles = list("Prisoner", "Security Officer", "Warden", "Detective", "Head of Security", "Captain")
restricted_roles = list("Cyborg", "AI", "Positronic Brain")
enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain")
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
required_enemies = list(0,0,0,0,0,0,0,0,0,0)
required_candidates = 1
weight = 2
cost = 10
requirements = list(101,101,101,101,70,40,25,20,10,10)
requirements = list(101,101,101,101,50,40,30,20,10,10)
repeatable = TRUE
/datum/dynamic_ruleset/midround/blob_infection/trim_candidates()
@@ -450,11 +450,11 @@
antag_datum = /datum/antagonist/xeno
antag_flag = ROLE_ALIEN
enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain")
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
required_enemies = list(0,0,0,0,0,0,0,0,0,0)
required_candidates = 1
weight = 3
cost = 10
requirements = list(101,101,101,101,60,50,30,20,10,10)
requirements = list(101,101,101,101,50,40,30,20,10,10)
repeatable = TRUE
var/list/vents = list()
@@ -496,11 +496,11 @@
antag_flag = "Nightmare"
antag_flag_override = ROLE_ALIEN
enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain")
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
required_enemies = list(0,0,0,0,0,0,0,0,0,0)
required_candidates = 1
weight = 4
cost = 10
requirements = list(101,101,101,40,30,20,10,10,10,10)
requirements = list(101,101,50,30,25,20,10,10,10,10)
repeatable = TRUE
var/list/spawn_locs = list()
@@ -542,11 +542,11 @@
antag_flag = ROLE_SPACE_DRAGON
antag_flag_override = ROLE_SPACE_DRAGON
enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain")
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
required_enemies = list(0,0,0,0,0,0,0,0,0,0)
required_candidates = 1
weight = 3
cost = 10
requirements = list(101,101,101,101,60,50,30,20,10,10)
requirements = list(101,101,101,101,50,40,30,20,10,10)
repeatable = TRUE
var/list/spawn_locs = list()
@@ -586,12 +586,12 @@
antag_flag = "Abductor"
antag_flag_override = ROLE_ABDUCTOR
enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain")
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
required_enemies = list(0,0,0,0,0,0,0,0,0,0)
required_candidates = 2
required_applicants = 2
weight = 3
cost = 10
requirements = list(101,101,101,101,101,40,25,20,10,10)
requirements = list(101,101,101,101,101,30,20,15,10,10)
repeatable = TRUE
var/datum/team/abductor_team/new_team
@@ -625,11 +625,11 @@
antag_flag_override = ROLE_ALIEN
required_type = /mob/dead/observer
enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain")
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
required_enemies = list(0,0,0,0,0,0,0,0,0,0)
required_candidates = 0
weight = 3
cost = 10
requirements = list(101,101,101,101,60,50,30,20,10,10)
requirements = list(101,101,101,101,50,40,30,20,10,10)
repeatable = TRUE
/datum/dynamic_ruleset/midround/swarmers/execute()
@@ -658,11 +658,11 @@
antag_flag = "Space Ninja"
antag_flag_override = ROLE_NINJA
enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain")
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
required_enemies = list(0,0,0,0,0,0,0,0,0,0)
required_candidates = 1
weight = 4
cost = 10
requirements = list(101,101,101,80,60,50,30,20,10,10)
requirements = list(101,101,101,60,50,30,10,10,10,10)
repeatable = TRUE
var/list/spawn_locs = list()
@@ -699,11 +699,11 @@
antag_flag = "Revenant"
antag_flag_override = ROLE_REVENANT
enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain")
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
required_enemies = list(0,0,0,0,0,0,0,0,0,0)
required_candidates = 1
weight = 4
cost = 10
requirements = list(101,101,101,70,50,40,20,15,10,10)
requirements = list(101,101,50,30,25,20,10,10,10,10)
repeatable = TRUE
var/dead_mobs_required = 20
var/need_extra_spawns_value = 15
@@ -748,7 +748,7 @@
required_candidates = 1
weight = 4
cost = 10
requirements = list(101,101,101,70,50,40,20,15,10,10)
requirements = list(101,101,50,30,25,20,10,10,10,10)
repeatable = TRUE
/datum/dynamic_ruleset/midround/from_ghosts/sentient_disease/generate_ruleset_body(mob/applicant)
@@ -765,11 +765,11 @@
antag_flag = "Space Pirates"
required_type = /mob/dead/observer
enemy_roles = list("Security Officer", "Detective", "Head of Security", "Captain")
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
required_enemies = list(0,0,0,0,0,0,0,0,0,0)
required_candidates = 0
weight = 4
cost = 10
requirements = list(101,101,101,50,40,25,10,10,10,10)
requirements = list(101,101,101,40,30,20,10,10,10,10)
repeatable = TRUE
/datum/dynamic_ruleset/midround/pirates/acceptable(population=0, threat=0)
@@ -103,7 +103,7 @@
weight = 3
cost = 16
scaling_cost = 10
requirements = list(101,70,60,50,40,20,20,10,10,10)
requirements = list(101,60,50,40,30,20,15,10,10,10)
antag_cap = list("denominator" = 29)
/datum/dynamic_ruleset/roundstart/changeling/pre_execute(population)
@@ -138,7 +138,7 @@
weight = 3
cost = 15
scaling_cost = 9
requirements = list(101,101,101,55,40,25,20,15,10,10)//higher because of 'round end'
requirements = list(101,101,101,50,40,20,20,15,10,10)//higher because of 'round end'
antag_cap = list("denominator" = 24)
@@ -179,7 +179,7 @@
required_candidates = 1
weight = 3
cost = 20
requirements = list(101,101,100,80,50,40,30,20,10,10)//100 because of configt, otherwise equal to nukies
requirements = list(101,101,100,60,40,20,20,20,10,10)//100 because of configt, otherwise equal to nukies
var/list/roundstart_wizards = list()
/datum/dynamic_ruleset/roundstart/wizard/acceptable(population=0, threat=0)
@@ -223,7 +223,7 @@
weight = 2 //lower weight because of easy steamroll potential
cost = 20
//requirements = list(100,90,80,60,40,30,10,10,10,10)
requirements = list(101,101,101,101,60,40,20,10,10,10)
requirements = list(101,101,101,101,50,40,20,10,10,10)
flags = HIGH_IMPACT_RULESET
antag_cap = list("denominator" = 20, "offset" = 1)
var/datum/team/cult/main_cult
@@ -279,7 +279,7 @@
required_candidates = 5
weight = 3
cost = 20
requirements = list(101,101,101,80,50,40,30,15,10,10)
requirements = list(101,101,101,60,40,30,20,15,10,10)
flags = HIGH_IMPACT_RULESET
antag_cap = list("denominator" = 18, "offset" = 1)
var/datum/team/nuclear/nuke_team
@@ -365,7 +365,7 @@
weight = 2
delay = 7 MINUTES
cost = 20
requirements = list(101,101,101,101,60,40,20,10,10,10)
requirements = list(101,101,101,101,50,40,20,10,10,10)
antag_cap = 3
flags = HIGH_IMPACT_RULESET
blocking_rules = list(/datum/dynamic_ruleset/latejoin/provocateur)
@@ -445,7 +445,7 @@
required_candidates = 2
weight = 3 //higher weight than blood cult and revs because it's more balanced
cost = 20
requirements = list(101,101,101,101,60,40,20,10,10,10) //slightly higher than nukies
requirements = list(101,101,101,101,50,40,20,10,10,10) //slightly higher than nukies
flags = HIGH_IMPACT_RULESET
antag_cap = list("denominator" = 20, "offset" = 1)
var/datum/team/clockcult/main_clockcult
@@ -72,9 +72,9 @@
set name = "Run Dynamic Simulations"
set category = "Debug"
var/simulations = tgui_input_num(usr, "Enter number of simulations")
var/roundstart_players = tgui_input_num(usr, "Enter number of round start players")
var/forced_threat_level = tgui_input_num(usr, "Enter forced threat level, if you want one")
var/simulations = input(usr, "Enter number of simulations") as num
var/roundstart_players = input(usr, "Enter number of round start players") as num
var/forced_threat_level = input(usr, "Enter forced threat level, if you want one") as num | null
SSticker.mode = new /datum/game_mode/dynamic
message_admins("Running dynamic simulations...")
+1 -1
View File
@@ -176,7 +176,7 @@
return
var/time = round(tempgang.determine_domination_time()/60,0.1)
if(tgui_alert(user,"A takeover will require [time] minutes.\nYour gang will be unable to gain influence while it is active.\nThe entire station will likely be alerted to it once it starts.\nYou have [tempgang.dom_attempts] attempt(s) remaining. Are you ready?","Confirm",list("Ready","Later")) == "Ready")
if(alert(user,"A takeover will require [time] minutes.\nYour gang will be unable to gain influence while it is active.\nThe entire station will likely be alerted to it once it starts.\nYou have [tempgang.dom_attempts] attempt(s) remaining. Are you ready?","Confirm","Ready","Later") == "Ready")
if((tempgang.domination_time != NOT_DOMINATING) || !tempgang.dom_attempts || !in_range(src, user) || !isturf(loc))
return 0
+5 -5
View File
@@ -108,11 +108,11 @@
.["Set domination time left"] = CALLBACK(src, .proc/set_dom_time_left)
/datum/antagonist/gang/admin_add(datum/mind/new_owner,mob/admin)
var/new_or_existing = tgui_input_list(admin, "Which gang do you want to be assigned to the user?", "Gangs", list("New","Existing"))
var/new_or_existing = input(admin, "Which gang do you want to be assigned to the user?", "Gangs") as null|anything in list("New","Existing")
if(isnull(new_or_existing))
return
else if(new_or_existing == "New")
var/newgang = tgui_input_list(admin, "Select a gang, or select random to pick a random one.", "New gang", GLOB.possible_gangs + "Random")
var/newgang = input(admin, "Select a gang, or select random to pick a random one.", "New gang") as null|anything in GLOB.possible_gangs + "Random"
if(isnull(newgang))
return
else if(newgang == "Random")
@@ -125,7 +125,7 @@
if(!GLOB.gangs.len) // no gangs exist
to_chat(admin, "<span class='danger'>No gangs exist, please create a new one instead.</span>")
return
var/existinggang = tgui_input_list(admin, "Select a gang, or select random to pick a random one.", "Existing gang", GLOB.gangs + "Random")
var/existinggang = input(admin, "Select a gang, or select random to pick a random one.", "Existing gang") as null|anything in GLOB.gangs + "Random"
if(isnull(existinggang))
return
else if(existinggang == "Random")
@@ -141,7 +141,7 @@
promote()
/datum/antagonist/gang/proc/admin_adjust_influence()
var/inf = tgui_input_num(usr, "Influence for [gang.name]","Gang influence", gang.influence)
var/inf = input("Influence for [gang.name]","Gang influence", gang.influence) as null | num
if(!isnull(inf))
gang.influence = inf
message_admins("[key_name_admin(usr)] changed [gang.name]'s influence to [inf].")
@@ -158,7 +158,7 @@
/datum/antagonist/gang/proc/set_dom_time_left(mob/admin)
if(gang.domination_time == NOT_DOMINATING)
return // an admin shouldn't need this
var/seconds = tgui_input_num(admin, "Set the time left for the gang to win, in seconds", "Domination time left", (gang.domination_time - world.time) * 0.1)
var/seconds = input(admin, "Set the time left for the gang to win, in seconds", "Domination time left") as null|num
if(seconds && seconds > 0)
gang.domination_time = world.time + seconds*10
gang.message_gangtools("Takeover shortened to [gang.domination_time_remaining()] seconds by your Syndicate benefactors.")
+12 -7
View File
@@ -39,11 +39,16 @@ GLOBAL_LIST_EMPTY(objectives)
//Shared by few objective types
/datum/objective/proc/admin_simple_target_pick(mob/admin)
var/list/possible_targets = list("Free objective")
var/def_value
for(var/datum/mind/possible_target in SSticker.minds)
if ((possible_target != src) && ishuman(possible_target.current))
possible_targets += possible_target.current
var/mob/new_target = tgui_input_list(admin,"Select target:", "Objective target", possible_targets)
if(target && target.current)
def_value = target.current
var/mob/new_target = input(admin,"Select target:", "Objective target", def_value) as null|anything in possible_targets
if (!new_target)
return
@@ -600,12 +605,12 @@ GLOBAL_LIST_EMPTY(possible_items)
/datum/objective/steal/admin_edit(mob/admin)
var/list/possible_items_all = GLOB.possible_items+"custom"
var/new_target = tgui_input_list(admin,"Select target:", "Objective target", possible_items_all)
var/new_target = input(admin,"Select target:", "Objective target", steal_target) as null|anything in possible_items_all
if (!new_target)
return
if (new_target == "custom") //Can set custom items.
var/custom_path = tgui_input_text(admin,"Search for target item type:","Type")
var/custom_path = input(admin,"Search for target item type:","Type") as null|text
if (!custom_path)
return
var/obj/item/custom_target = pick_closest_path(custom_path, make_types_fancy(subtypesof(/obj/item)))
@@ -722,7 +727,7 @@ GLOBAL_LIST_EMPTY(possible_items_special)
return checking.researched_nodes.len >= target_amount
/datum/objective/download/admin_edit(mob/admin)
var/count = tgui_input_num(admin,"How many nodes ?","Nodes",target_amount)
var/count = input(admin,"How many nodes ?","Nodes",target_amount) as num|null
if(count)
target_amount = count
update_explanation_text()
@@ -768,7 +773,7 @@ GLOBAL_LIST_EMPTY(possible_items_special)
return captured_amount >= target_amount
/datum/objective/capture/admin_edit(mob/admin)
var/count = tgui_input_num(admin,"How many mobs to capture ?","capture",target_amount)
var/count = input(admin,"How many mobs to capture ?","capture",target_amount) as num|null
if(count)
target_amount = count
update_explanation_text()
@@ -800,7 +805,7 @@ GLOBAL_LIST_EMPTY(possible_items_special)
explanation_text = "Extract [target_amount] compatible genome\s."
/datum/objective/absorb/admin_edit(mob/admin)
var/count = tgui_input_num(admin,"How many people to absorb?","absorb",target_amount)
var/count = input(admin,"How many people to absorb?","absorb",target_amount) as num|null
if(count)
target_amount = count
update_explanation_text()
@@ -890,7 +895,7 @@ GLOBAL_LIST_EMPTY(possible_items_special)
/datum/objective/destroy/admin_edit(mob/admin)
var/list/possible_targets = active_ais(1)
if(possible_targets.len)
var/mob/new_target = tgui_input_list(admin,"Select target:", "Objective target", possible_targets)
var/mob/new_target = input(admin,"Select target:", "Objective target") as null|anything in possible_targets
target = new_target.mind
else
to_chat(admin, "No active AIs with minds")
+3 -3
View File
@@ -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)
@@ -112,7 +112,7 @@
if(!storedpda)
to_chat(user, "<span class='notice'>[src] is empty.</span>")
return
var/choice = tgui_input_list(user, "Select the new skin!", "PDA Painting", colorlist)
var/choice = input(user, "Select the new skin!", "PDA Painting") as null|anything in colorlist
if(!choice || !storedpda || !in_range(src, user))
return
var/list/P = colorlist[choice]
+2 -2
View File
@@ -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)
+11 -11
View File
@@ -8,14 +8,14 @@
max_integrity = 200
var/obj/item/bodypart/storedpart
var/initial_icon_state
var/static/list/style_list_icons = list("standard" = 'icons/mob/augmentation/augments.dmi',
"engineer" = 'icons/mob/augmentation/augments_engineer.dmi',
"security" = 'icons/mob/augmentation/augments_security.dmi',
"mining" = 'icons/mob/augmentation/augments_mining.dmi',
"Talon" = 'icons/mob/augmentation/cosmetic_prosthetic/talon.dmi',
"Nanotrasen" = 'icons/mob/augmentation/cosmetic_prosthetic/nanotrasen.dmi',
"Hephaesthus" = 'icons/mob/augmentation/cosmetic_prosthetic/hephaestus.dmi',
"Bishop" = 'icons/mob/augmentation/cosmetic_prosthetic/bishop.dmi',
var/static/list/style_list_icons = list("standard" = 'icons/mob/augmentation/augments.dmi',
"engineer" = 'icons/mob/augmentation/augments_engineer.dmi',
"security" = 'icons/mob/augmentation/augments_security.dmi',
"mining" = 'icons/mob/augmentation/augments_mining.dmi',
"Talon" = 'icons/mob/augmentation/cosmetic_prosthetic/talon.dmi',
"Nanotrasen" = 'icons/mob/augmentation/cosmetic_prosthetic/nanotrasen.dmi',
"Hephaesthus" = 'icons/mob/augmentation/cosmetic_prosthetic/hephaestus.dmi',
"Bishop" = 'icons/mob/augmentation/cosmetic_prosthetic/bishop.dmi',
"Xion" = 'icons/mob/augmentation/cosmetic_prosthetic/xion.dmi',
"Grayson" = 'icons/mob/augmentation/cosmetic_prosthetic/grayson.dmi',
"Cybersolutions" = 'icons/mob/augmentation/cosmetic_prosthetic/cybersolutions.dmi',
@@ -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)
@@ -116,7 +116,7 @@
add_fingerprint(user)
if(storedpart)
var/augstyle = tgui_input_list(user, "Select style.", "Augment Custom Fitting", style_list_icons)
var/augstyle = input(user, "Select style.", "Augment Custom Fitting") as null|anything in style_list_icons
if(!augstyle)
return
if(!in_range(src, user))
+1 -1
View File
@@ -184,7 +184,7 @@
if(materials.materials[i] > 0)
list_to_show += i
used_material = tgui_input_list(usr, "Choose [used_material]", "Custom Material", sortList(list_to_show, /proc/cmp_typepaths_asc))
used_material = input("Choose [used_material]", "Custom Material") as null|anything in sortList(list_to_show, /proc/cmp_typepaths_asc)
if(!used_material)
return //Didn't pick any material, so you can't build shit either.
custom_materials[used_material] += amount_needed
+1 -1
View File
@@ -185,7 +185,7 @@
to_chat(user, "<span class='warning'>This machine already has bags attached.</span>")
if(!bag && !outbag)
var/choice = tgui_alert(user, "Choose where to place [O]", "", list("Input", "Cancel", "Output"))
var/choice = alert(user, "Choose where to place [O]", "", "Input", "Cancel", "Output")
switch(choice)
if("Cancel")
return FALSE
+1 -1
View File
@@ -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
..()
+1 -1
View File
@@ -16,7 +16,7 @@
/mob/living/silicon/ai/proc/show_camera_list()
var/list/cameras = get_camera_list()
var/camera = tgui_input_list(src, "Choose which camera you want to view", "Cameras", cameras)
var/camera = input(src, "Choose which camera you want to view", "Cameras") as null|anything in cameras
switchCamera(cameras[camera])
/datum/trackable
+1 -1
View File
@@ -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)
@@ -251,7 +251,7 @@ GLOBAL_LIST_EMPTY(atmos_air_controllers)
IO |= text[1]
if(!IO.len)
to_chat(user, "<span class='alert'>No machinery detected.</span>")
var/S = tgui_input_list(user, "Select the device set: ", "Selection", sortList(IO))
var/S = input("Select the device set: ", "Selection", IO[1]) as anything in sortList(IO)
if(src)
src.input_tag = "[S]_in"
src.output_tag = "[S]_out"
@@ -269,7 +269,7 @@
T["[netcam.c_tag][netcam.can_use() ? null : " (Deactivated)"]"] = netcam
playsound(origin, 'sound/machines/terminal_prompt.ogg', 25, 0)
var/camera = tgui_input_list(usr, "Choose which camera you want to view", "Cameras", T)
var/camera = input("Choose which camera you want to view", "Cameras") as null|anything in T
var/obj/machinery/camera/final = T[camera]
playsound(src, "terminal_type", 25, 0)
if(final)
+1 -1
View File
@@ -447,7 +447,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0)
if (authenticated == 2)
var/t1 = href_list["assign_target"]
if(t1 == "Custom")
var/newJob = reject_bad_text(tgui_input_text(usr, "Enter a custom job assignment.", "Assignment", inserted_modify_id ? inserted_modify_id.assignment : "Unassigned"), MAX_NAME_LEN)
var/newJob = reject_bad_text(input("Enter a custom job assignment.", "Assignment", inserted_modify_id ? inserted_modify_id.assignment : "Unassigned"), MAX_NAME_LEN)
if(newJob)
t1 = newJob
@@ -116,7 +116,7 @@
return
current_pad.display_name = new_name
if("remove")
if(usr && tgui_alert(usr, "Are you sure?", "Unlink Launchpad", list("I'm Sure", "Abort")) != "Abort")
if(usr && alert(usr, "Are you sure?", "Unlink Launchpad", "I'm Sure", "Abort") != "Abort")
launchpads -= current_pad
selected_id = null
. = TRUE
@@ -155,7 +155,7 @@
return
current_pad.display_name = new_name
if("remove")
if(usr && tgui_alert(usr, "Are you sure?", "Unlink Orbital Pad", list("I'm Sure", "Abort")) != "Abort")
if(usr && alert(usr, "Are you sure?", "Unlink Orbital Pad", "I'm Sure", "Abort") != "Abort")
mechpads -= current_pad
LAZYREMOVE(current_pad.consoles, src)
selected_id = null
+1 -1
View File
@@ -289,7 +289,7 @@
active1.fields["gender"] = "Male"
if("age")
if(active1)
var/t1 = tgui_input_num(usr, "Please input age:", "Med. records", active1.fields["age"])
var/t1 = input("Please input age:", "Med. records", active1.fields["age"], null) as num
if(!canUseMedicalRecordsConsole(usr, t1, a1))
return
active1.fields["age"] = t1
@@ -99,7 +99,7 @@
if("reset")
contained_id.points = 0
if("setgoal")
var/num = round(tgui_input_num(usr, "Choose prisoner's goal:", "Input an Integer", contained_id.goal))
var/num = round(input(usr, "Choose prisoner's goal:", "Input an Integer", null) as num|null)
if(num >= 0)
num = min(num,1000) //Cap the quota to the equivilent of 10 minutes.
contained_id.goal = num
+3 -3
View File
@@ -577,13 +577,13 @@ What a mess.*/
active1.fields["gender"] = "Male"
if("age")
if(istype(active1, /datum/data/record))
var/t1 = tgui_input_num(usr, "Please input age:", "Secure. records", active1.fields["age"])
var/t1 = input("Please input age:", "Secure. records", active1.fields["age"], null) as num
if(!canUseSecurityRecordsConsole(usr, "age", a1))
return
active1.fields["age"] = t1
if("species")
if(istype(active1, /datum/data/record))
var/t1 = stripped_input("Please input species name", "Secure. records", active1.fields["species"], null)
var/t1 = input("Select a species", "Species Selection") as null|anything in GLOB.roundstart_races
if(!canUseSecurityRecordsConsole(usr, t1, a1))
return
active1.fields["species"] = t1
@@ -687,7 +687,7 @@ What a mess.*/
temp += "<li><a href='?src=[REF(src)];choice=Change Rank;rank=[rank]'>[rank]</a></li>"
temp += "</ul>"
else
tgui_alert(usr, "You do not have the required rank to do this!")
alert(usr, "You do not have the required rank to do this!")
//TEMPORARY MENU FUNCTIONS
else//To properly clear as per clear screen.
temp=null
+2 -2
View File
@@ -139,7 +139,7 @@
if(is_eligible(M))
L[avoid_assoc_duplicate_keys(M.real_name, areaindex)] = M
var/desc = tgui_input_list(user, "Please select a location to lock in.", "Locking Computer", L)
var/desc = input("Please select a location to lock in.", "Locking Computer") as null|anything in L
if(!user.canUseTopic(src, !hasSiliconAccessInArea(user), NO_DEXTERY)) //check if we are still around
return
target = L[desc]
@@ -167,7 +167,7 @@
if(!L.len)
to_chat(user, "<span class='alert'>No active connected stations located.</span>")
return
var/desc = tgui_input_list(user, "Please select a station to lock in.", "Locking Computer", L)
var/desc = input("Please select a station to lock in.", "Locking Computer") as null|anything in L
if(!user.canUseTopic(src, !hasSiliconAccessInArea(user), NO_DEXTERY)) //again, check if we are still around
return
var/obj/machinery/teleport/station/target_station = L[desc]
+4 -7
View File
@@ -101,7 +101,7 @@
updateUsrDialog()
return
var/obj/I = tgui_input_list(user, "Please choose which object to retrieve.","Object recovery", stored_packages)
var/obj/I = input(user, "Please choose which object to retrieve.","Object recovery",null) as null|anything in stored_packages
playsound(src, "terminal_type", 25, 0)
if(!I)
return
@@ -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
@@ -439,7 +436,7 @@
to_chat(user, "<span class='danger'>You can't put [target] into [src]. They're conscious.</span>")
return
else if(target.client)
if(tgui_alert(target,"Would you like to enter cryosleep?",,list("Yes","No")) == "No")
if(alert(target,"Would you like to enter cryosleep?",,"Yes","No") == "No")
return
var/generic_plsnoleave_message = " Please adminhelp before leaving the round, even if there are no administrators online!"
@@ -462,7 +459,7 @@
LAZYADD(caught_string, "Revolutionary")
if(caught_string)
tgui_alert(target, "You're a [english_list(caught_string)]![generic_plsnoleave_message][addendum]")
alert(target, "You're a [english_list(caught_string)]![generic_plsnoleave_message][addendum]")
target.client.cryo_warned = world.time
return
+2 -2
View File
@@ -102,7 +102,7 @@
rad_insulation = RAD_MEDIUM_INSULATION
var/static/list/airlock_overlays = list()
/// sigh
var/unelectrify_timerid
@@ -1212,7 +1212,7 @@
else
optionlist = list("Standard", "Public", "Engineering", "Atmospherics", "Security", "Command", "Medical", "Research", "Freezer", "Science", "Virology", "Mining", "Maintenance", "External", "External Maintenance")
var/paintjob = tgui_input_list(user, "Please select a paintjob for this airlock.", "", optionlist)
var/paintjob = input(user, "Please select a paintjob for this airlock.") in optionlist
if((!in_range(src, usr) && src.loc != usr) || !W.use_paint(user))
return
switch(paintjob)
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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
..()
+1 -1
View File
@@ -264,7 +264,7 @@ GLOBAL_LIST_EMPTY(network_holopads)
if(A)
LAZYADD(callnames[A], I)
callnames -= get_area(src)
var/result = tgui_input_list(usr, "Choose an area to call", "Holocall", sortNames(callnames))
var/result = input(usr, "Choose an area to call", "Holocall") as null|anything in sortNames(callnames)
if(QDELETED(usr) || !result || outgoing_call)
return
if(usr.loc == loc)
+1 -1
View File
@@ -339,7 +339,7 @@
pad.display_name = new_name
if("remove")
. = TRUE
if(usr && tgui_alert(usr, "Are you sure?", "Unlink Launchpad", list("I'm Sure", "Abort")) != "Abort")
if(usr && alert(usr, "Are you sure?", "Unlink Launchpad", "I'm Sure", "Abort") != "Abort")
pad = null
if("launch")
sending = TRUE
+1 -1
View File
@@ -245,7 +245,7 @@ Buildable meters
disposable = FALSE
/obj/item/pipe/bluespace/attack_self(mob/user)
var/new_name = tgui_input_text(user, "Enter identifier for bluespace pipe network", "bluespace pipe", bluespace_network_name)
var/new_name = input(user, "Enter identifier for bluespace pipe network", "bluespace pipe", bluespace_network_name) as text|null
if(!isnull(new_name))
bluespace_network_name = new_name
+2 -2
View File
@@ -62,7 +62,7 @@ GLOBAL_LIST_EMPTY(allConsoles)
update_icon()
/obj/machinery/requests_console/update_icon_state()
if(CHECK_BITFIELD(stat, NOPOWER))
if((stat & NOPOWER))
set_light(0)
else
set_light(1.4, 0.7, "#34D352")//green light
@@ -72,7 +72,7 @@ GLOBAL_LIST_EMPTY(allConsoles)
icon_state="req_comp_open"
else
icon_state="req_comp_rewired"
else if(CHECK_BITFIELD(stat, NOPOWER))
else if((stat & NOPOWER))
if(icon_state != "req_comp_off")
icon_state = "req_comp_off"
else
+3 -3
View File
@@ -193,11 +193,11 @@
playsound(loc, 'sound/machines/click.ogg', 30, 1)
/obj/machinery/syndicatebomb/proc/settings(mob/user)
var/new_timer = tgui_input_num(user, "Please set the timer.", "Timer", "[timer_set]")
var/new_timer = input(user, "Please set the timer.", "Timer", "[timer_set]") as num
if(in_range(src, user) && isliving(user)) //No running off and setting bombs from across the station
timer_set = clamp(new_timer, minimum_timer, maximum_timer)
loc.visible_message("<span class='notice'>[icon2html(src, viewers(src))] timer set for [timer_set] seconds.</span>")
if(tgui_alert(user,"Would you like to start the countdown now?",,list("Yes","No")) == "Yes" && in_range(src, user) && isliving(user))
if(alert(user,"Would you like to start the countdown now?",,"Yes","No") == "Yes" && in_range(src, user) && isliving(user))
if(defused || active)
if(defused)
visible_message("<span class='warning'>[icon2html(src, viewers(src))] Device error: User intervention required.</span>")
@@ -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()
@@ -1,5 +1,5 @@
/*
The log console for viewing the entire telecomms
The log console for viewing the entire telecomms
network log
*/
@@ -15,7 +15,7 @@
var/network = "NULL" // the network to probe
var/notice = ""
var/universal_translate = FALSE // set to TRUE(1) if it can translate nonhuman speech
var/universal_translate = FALSE // set to TRUE(1) if it can translate nonhuman speech
/obj/machinery/computer/telecomms/server/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
@@ -53,7 +53,7 @@
if(!LAZYLEN(SelectedMachine.log_entries))
return data_out
for(var/datum/comm_log_entry/C in SelectedMachine.log_entries)
var/list/data = list()
data["name"] = C.name //name of the file
@@ -104,7 +104,7 @@
data["message"] = C.parameters["message"]
else
data["message"] = "(unintelligible)"
data_out["selected_logs"] += list(data)
return data_out
@@ -133,7 +133,7 @@
if(LAZYLEN(machinelist) > 0)
notice = "FAILED: Cannot probe when buffer full"
return
for(var/obj/machinery/telecomms/T in GLOB.telecomms_list) //telecomms just went global!
if(T.network == network)
LAZYADD(machinelist, T)
@@ -147,7 +147,7 @@
SelectedMachine = T
break
if("delete")
if(!src.allowed(usr) && !CHECK_BITFIELD(obj_flags, EMAGGED))
if(!src.allowed(usr) && !(obj_flags & EMAGGED))
to_chat(usr, "<span class='danger'>ACCESS DENIED.</span>")
return
@@ -156,7 +156,7 @@
return
var/datum/comm_log_entry/D = locate(params["value"])
if(!istype(D))
notice = "NOTICE: Object not found"
notice = "NOTICE: Object not found"
return
notice = "Deleted entry: [D.name]"
LAZYREMOVE(SelectedMachine.log_entries, D)
@@ -94,9 +94,9 @@
if(istype(S) && S.hack_software)
data_out["canhack"] = TRUE
data_out["hacking"] = (hacking || CHECK_BITFIELD(obj_flags, EMAGGED))
data_out["hacking"] = (hacking || (obj_flags & EMAGGED))
if(hacking)
data_out["borg"] = ((isAI(user) || iscyborg(user)) && !CHECK_BITFIELD(obj_flags, EMAGGED)) //even borgs can't read emag
data_out["borg"] = ((isAI(user) || iscyborg(user)) && !(obj_flags & EMAGGED)) //even borgs can't read emag
return data_out
data_out["servers"] = list()
@@ -316,7 +316,7 @@
// Get out list of viable PDAs
var/list/obj/item/pda/sendPDAs = get_viewable_pdas()
if(GLOB.PDAs && LAZYLEN(GLOB.PDAs) > 0)
customrecepient = tgui_input_list(usr, "Select a PDA from the list.", "", sortNames(sendPDAs))
customrecepient = input(usr, "Select a PDA from the list.") as null|anything in sortNames(sendPDAs)
else
customrecepient = null
return
@@ -324,7 +324,7 @@
update_static_data(usr)
/obj/machinery/computer/message_monitor/attackby(obj/item/O, mob/living/user, params)
if(O.tool_behaviour == TOOL_SCREWDRIVER && CHECK_BITFIELD(obj_flags, EMAGGED))
if(O.tool_behaviour == TOOL_SCREWDRIVER && (obj_flags & EMAGGED))
//Stops people from just unscrewing the monitor and putting it back to get the console working again.
//Why this though, you should make it emag to a board level. (i wont do it)
to_chat(user, "<span class='warning'>It is too hot to mess with!</span>")
@@ -333,12 +333,12 @@
/obj/machinery/computer/message_monitor/emag_act(mob/user)
. = ..()
if(CHECK_BITFIELD(obj_flags, EMAGGED))
if((obj_flags & EMAGGED))
return
if(isnull(linkedServer))
to_chat(user, "<span class='notice'>A no server error appears on the screen.</span>")
return
ENABLE_BITFIELD(obj_flags, EMAGGED)
obj_flags |= EMAGGED
spark_system.set_up(5, 0, src)
spark_system.start()
var/obj/item/paper/monitorkey/MK = new(loc, linkedServer)
@@ -366,7 +366,7 @@
message = ""
/obj/machinery/computer/message_monitor/proc/UnmagConsole()
DISABLE_BITFIELD(obj_flags, EMAGGED)
obj_flags &= ~(EMAGGED)
message = ""
/obj/machinery/computer/message_monitor/proc/ResetMessage()
@@ -177,7 +177,7 @@
links.Remove(T)
if("freq")
if("add" in params)
var/newfreq = tgui_input_num(usr, "Specify a new frequency to filter (GHz). Decimals assigned automatically.", src.name, null)
var/newfreq = input("Specify a new frequency to filter (GHz). Decimals assigned automatically.", src.name, null) as null|num
if(!canAccess(usr) || !newfreq || isnull(newfreq))
return
@@ -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
@@ -119,7 +119,7 @@ GLOBAL_LIST_EMPTY(telecomms_list)
/obj/machinery/telecomms/proc/update_power()
if(toggled)
// if powered, on. if not powered, off. if too damaged, off
if(CHECK_BITFIELD(stat, (BROKEN | NOPOWER | EMPED)))
if(stat &(BROKEN | NOPOWER | EMPED))
on = FALSE
else
on = TRUE
@@ -137,11 +137,11 @@ GLOBAL_LIST_EMPTY(telecomms_list)
/obj/machinery/telecomms/emp_act(severity)
. = ..()
if(CHECK_BITFIELD(., EMP_PROTECT_SELF))
if((. & EMP_PROTECT_SELF))
return
if(prob(severity))
if(!CHECK_BITFIELD(stat, EMPED))
ENABLE_BITFIELD(stat, EMPED)
if(!(stat & EMPED))
stat |= EMPED
var/duration = severity * 35
spawn(rand(duration - 20, duration + 20)) // Takes a long time for the machines to reboot.
DISABLE_BITFIELD(stat, EMPED)
stat &= ~(EMPED)
+1 -1
View File
@@ -38,7 +38,7 @@
to_chat(user, "You have a very great feeling about this!")
else
to_chat(user, "The Wish Granter awaits your wish.")
var/wish = tgui_input_list(user, "You want...","Wish", list("Power","Wealth","The Station To Disappear","To Kill","Nothing"))
var/wish = input("You want...","Wish") as null|anything in list("Power","Wealth","The Station To Disappear","To Kill","Nothing")
switch(wish)
if("Power") //Gives infinite power in exchange for infinite power going off in your face!
if(charges <= 0)
@@ -276,7 +276,7 @@
/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/critfail()
..()
if(reagents)
DISABLE_BITFIELD(reagents.reagents_holder_flags, NO_REACT)
reagents.reagents_holder_flags &= ~(NO_REACT)
/obj/item/mecha_parts/mecha_equipment/medical/syringe_gun/can_attach(obj/mecha/medical/M)
if(..())
@@ -407,7 +407,7 @@
return
if(href_list["cut"])
if(cable && cable.amount)
var/m = round(tgui_input_num(chassis.occupant,"Please specify the length of cable to cut","Cut cable",min(cable.amount,30)), 1)
var/m = round(input(chassis.occupant,"Please specify the length of cable to cut","Cut cable",min(cable.amount,30)) as num, 1)
m = min(m, cable.amount)
if(m)
use_cable(m)
+5 -5
View File
@@ -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)
+1 -1
View File
@@ -246,7 +246,7 @@
output_maintenance_dialog(id_card, usr)
if(href_list["set_internal_tank_valve"] && state >=1)
var/new_pressure = tgui_input_num(usr,"Input new output pressure","Pressure setting",internal_tank_valve)
var/new_pressure = input(usr,"Input new output pressure","Pressure setting",internal_tank_valve) as num
if(new_pressure)
internal_tank_valve = new_pressure
to_chat(usr, "The internal pressure valve has been set to [internal_tank_valve]kPa.")
+1 -1
View File
@@ -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))
+2 -2
View File
@@ -18,7 +18,7 @@
if(act_intent == INTENT_HELP || act_intent == INTENT_GRAB)
return
if(buckled_mobs.len > 1)
var/unbuckled = tgui_input_list(user, "Who do you wish to unbuckle?","Unbuckle Who?", buckled_mobs)
var/unbuckled = input(user, "Who do you wish to unbuckle?","Unbuckle Who?") as null|mob in buckled_mobs
if(user_unbuckle_mob(unbuckled,user))
return 1
else
@@ -161,6 +161,6 @@
else if(length(buckled_mobs) == 1)
return user_unbuckle_mob(buckled_mobs[1], user)
else
var/unbuckled = tgui_input_list(user, "Who do you wish to unbuckle?","Unbuckle Who?", buckled_mobs)
var/unbuckled = input(user, "Who do you wish to unbuckle?","Unbuckle Who?") as null|mob in buckled_mobs
return user_unbuckle_mob(unbuckled, user)
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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

Some files were not shown because too many files have changed in this diff Show More