Merge remote-tracking branch 'origin/master' into hedges

This commit is contained in:
Citrus
2020-01-02 20:15:44 -05:00
55 changed files with 574 additions and 224 deletions
+79 -120
View File
@@ -3792,8 +3792,7 @@
"ahU" = (
/obj/effect/decal/cleanable/cobweb/cobweb2,
/obj/structure/table,
/obj/item/stock_parts/manipulator,
/obj/effect/spawner/lootdrop/maintenance,
/obj/effect/spawner/lootdrop/maintenance/two,
/turf/open/floor/plating,
/area/maintenance/fore)
"ahV" = (
@@ -7488,17 +7487,13 @@
/area/maintenance/starboard/fore)
"ape" = (
/obj/structure/rack,
/obj/item/storage/belt{
desc = "Can hold quite a lot of stuff.";
name = "multi-belt"
},
/obj/item/clothing/gloves/color/fyellow,
/obj/effect/spawner/lootdrop/maintenance,
/obj/structure/sink/kitchen{
desc = "A sink used for washing one's hands and face. It looks rusty and home-made";
name = "old sink";
pixel_y = 28
},
/obj/effect/spawner/lootdrop/maintenance/two,
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"apf" = (
@@ -7675,13 +7670,10 @@
/area/maintenance/port/fore)
"apD" = (
/obj/item/storage/box/lights/mixed,
/obj/item/flashlight{
pixel_x = 1;
pixel_y = 5
},
/obj/machinery/light/small{
dir = 4
},
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating,
/area/maintenance/port/fore)
"apE" = (
@@ -8590,8 +8582,7 @@
/area/maintenance/starboard/fore)
"arH" = (
/obj/structure/rack,
/obj/item/extinguisher,
/obj/effect/spawner/lootdrop/maintenance,
/obj/effect/spawner/lootdrop/maintenance/two,
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"arI" = (
@@ -8602,9 +8593,8 @@
/area/maintenance/starboard/fore)
"arJ" = (
/obj/structure/rack,
/obj/item/clothing/suit/poncho,
/obj/item/clothing/head/sombrero,
/obj/effect/spawner/lootdrop/maintenance,
/obj/effect/spawner/lootdrop/costume,
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"arK" = (
@@ -10617,7 +10607,7 @@
/obj/structure/closet/crate{
icon_state = "crateopen"
},
/obj/item/storage/box/donkpockets,
/obj/effect/spawner/lootdrop/donkpockets,
/turf/open/floor/plating,
/area/maintenance/fore)
"awB" = (
@@ -10752,7 +10742,7 @@
/area/maintenance/port/fore)
"awS" = (
/obj/structure/closet/crate,
/obj/item/coin/silver,
/obj/effect/spawner/lootdrop/maintenance/two,
/turf/open/floor/plating,
/area/maintenance/port/fore)
"awT" = (
@@ -13297,12 +13287,6 @@
"aDb" = (
/turf/closed/wall,
/area/construction/mining/aux_base)
"aDc" = (
/obj/structure/closet/crate,
/obj/item/coin/silver,
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating,
/area/maintenance/port/fore)
"aDh" = (
/obj/machinery/firealarm{
dir = 4;
@@ -15325,8 +15309,8 @@
/area/crew_quarters/dorms)
"aHV" = (
/obj/structure/closet,
/obj/item/storage/box/donkpockets,
/obj/effect/spawner/lootdrop/maintenance/two,
/obj/effect/spawner/lootdrop/donkpockets,
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"aHX" = (
@@ -16397,9 +16381,7 @@
/obj/structure/closet/crate{
icon_state = "crateopen"
},
/obj/item/wirecutters,
/obj/item/weldingtool,
/obj/effect/spawner/lootdrop/maintenance,
/obj/effect/spawner/lootdrop/maintenance/three,
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"aKx" = (
@@ -16894,7 +16876,7 @@
/area/crew_quarters/locker)
"aLJ" = (
/obj/structure/rack,
/obj/item/stock_parts/matter_bin,
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating{
icon_state = "platingdmg2"
},
@@ -18825,6 +18807,7 @@
},
/obj/item/storage/belt/utility,
/obj/item/storage/belt/utility,
/obj/item/storage/belt/utility,
/turf/open/floor/plasteel,
/area/engine/engineering)
"aQd" = (
@@ -32467,9 +32450,8 @@
},
/area/maintenance/starboard)
"btu" = (
/obj/item/storage/toolbox/emergency,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/spawner/lootdrop/maintenance,
/obj/effect/spawner/lootdrop/maintenance/three,
/turf/open/floor/plating,
/area/maintenance/starboard)
"btv" = (
@@ -35581,8 +35563,7 @@
/area/crew_quarters/toilet/auxiliary)
"bBq" = (
/obj/structure/rack,
/obj/item/flashlight,
/obj/effect/spawner/lootdrop/maintenance,
/obj/effect/spawner/lootdrop/maintenance/two,
/turf/open/floor/plating,
/area/maintenance/port)
"bBr" = (
@@ -35989,6 +35970,7 @@
/obj/effect/turf_decal/tile/yellow{
dir = 8
},
/obj/item/storage/belt/utility,
/turf/open/floor/plasteel/dark/corner{
dir = 1
},
@@ -39651,8 +39633,7 @@
/area/maintenance/port)
"bLd" = (
/obj/structure/closet,
/obj/item/clothing/shoes/jackboots,
/obj/effect/spawner/lootdrop/maintenance/two,
/obj/effect/spawner/lootdrop/maintenance/three,
/turf/open/floor/plating,
/area/maintenance/port)
"bLe" = (
@@ -40073,6 +40054,7 @@
/area/storage/tcom)
"bLX" = (
/obj/structure/closet,
/obj/effect/spawner/lootdrop/maintenance/two,
/turf/open/floor/plating{
icon_state = "panelscorched"
},
@@ -41697,6 +41679,7 @@
"bPJ" = (
/obj/structure/rack,
/obj/item/clothing/mask/horsehead,
/obj/effect/spawner/lootdrop/costume,
/turf/open/floor/plating,
/area/maintenance/port)
"bPK" = (
@@ -43174,8 +43157,8 @@
/area/maintenance/port)
"bTv" = (
/obj/structure/rack,
/obj/item/paper,
/obj/effect/spawner/lootdrop/maintenance,
/obj/item/paper,
/turf/open/floor/plating,
/area/maintenance/port)
"bTw" = (
@@ -43838,9 +43821,9 @@
/area/maintenance/port)
"bUR" = (
/obj/structure/closet,
/obj/item/storage/box/donkpockets,
/obj/effect/spawner/lootdrop/maintenance/two,
/obj/effect/decal/cleanable/dirt/dust,
/obj/effect/spawner/lootdrop/donkpockets,
/turf/open/floor/plating,
/area/maintenance/port)
"bUS" = (
@@ -44143,8 +44126,7 @@
/area/maintenance/starboard)
"bVE" = (
/obj/structure/closet/crate,
/obj/item/storage/belt/utility,
/obj/item/stack/cable_coil,
/obj/effect/spawner/lootdrop/maintenance/three,
/turf/open/floor/plating,
/area/maintenance/starboard)
"bVF" = (
@@ -45028,7 +45010,7 @@
/area/maintenance/port)
"bXy" = (
/obj/structure/closet,
/obj/item/flashlight,
/obj/effect/spawner/lootdrop/maintenance/two,
/turf/open/floor/plating,
/area/maintenance/port/aft)
"bXz" = (
@@ -45078,16 +45060,7 @@
/area/maintenance/port)
"bXH" = (
/obj/structure/closet/crate,
/obj/item/coin/silver,
/obj/item/flashlight,
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating,
/area/maintenance/port)
"bXI" = (
/obj/structure/closet,
/obj/item/clothing/neck/stethoscope,
/obj/item/hemostat,
/obj/effect/spawner/lootdrop/maintenance,
/obj/effect/spawner/lootdrop/maintenance/three,
/turf/open/floor/plating,
/area/maintenance/port)
"bXJ" = (
@@ -45549,8 +45522,8 @@
/obj/structure/closet/crate{
icon_state = "crateopen"
},
/obj/item/storage/box/donkpockets,
/obj/effect/spawner/lootdrop/maintenance,
/obj/effect/spawner/lootdrop/donkpockets,
/turf/open/floor/plating,
/area/maintenance/port/aft)
"bYQ" = (
@@ -47692,7 +47665,7 @@
/turf/open/floor/plating,
/area/maintenance/port/aft)
"cdk" = (
/obj/item/trash/semki,
/obj/effect/spawner/lootdrop/grille_or_trash,
/turf/open/floor/plating,
/area/maintenance/port/aft)
"cdl" = (
@@ -48689,11 +48662,9 @@
/turf/open/space,
/area/space/nearstation)
"cfC" = (
/obj/item/trash/pistachios,
/obj/structure/closet,
/obj/item/stack/sheet/glass,
/obj/item/extinguisher,
/obj/item/storage/belt/utility,
/obj/effect/spawner/lootdrop/maintenance/three,
/turf/open/floor/plating,
/area/maintenance/port/aft)
"cfD" = (
@@ -48703,6 +48674,7 @@
"cfE" = (
/obj/structure/closet/crate,
/obj/item/reagent_containers/dropper,
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating,
/area/maintenance/port/aft)
"cfF" = (
@@ -49805,23 +49777,20 @@
/area/maintenance/starboard)
"chC" = (
/obj/structure/closet/crate,
/obj/item/storage/belt/utility,
/obj/item/stack/cable_coil,
/obj/effect/spawner/lootdrop/maintenance,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/effect/spawner/lootdrop/maintenance/four,
/turf/open/floor/plating,
/area/maintenance/starboard)
"chD" = (
/obj/structure/closet/crate{
icon_state = "crateopen"
},
/obj/item/cane,
/obj/effect/spawner/lootdrop/maintenance,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
/obj/effect/spawner/lootdrop/maintenance/two,
/turf/open/floor/plating,
/area/maintenance/starboard)
"chE" = (
@@ -51034,17 +51003,16 @@
/area/science/genetics)
"cku" = (
/obj/structure/closet,
/obj/item/storage/box/donkpockets,
/obj/effect/spawner/lootdrop/maintenance/three,
/obj/effect/turf_decal/stripes/line,
/obj/effect/spawner/lootdrop/donkpockets,
/turf/open/floor/plating,
/area/maintenance/starboard/secondary)
"ckv" = (
/obj/structure/closet/crate,
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/obj/item/assembly/infra,
/obj/effect/spawner/lootdrop/maintenance,
/obj/effect/turf_decal/stripes/line,
/obj/effect/spawner/lootdrop/maintenance/two,
/turf/open/floor/plating,
/area/maintenance/starboard/secondary)
"ckw" = (
@@ -55659,18 +55627,14 @@
/area/maintenance/port/aft)
"cuh" = (
/obj/structure/closet/crate,
/obj/item/stack/cable_coil,
/obj/item/grenade/chem_grenade,
/obj/item/flashlight,
/obj/effect/spawner/lootdrop/maintenance/two,
/obj/effect/spawner/lootdrop/maintenance/five,
/turf/open/floor/plating,
/area/maintenance/port/aft)
"cui" = (
/obj/structure/closet/crate,
/obj/item/coin/silver,
/obj/item/reagent_containers/spray/weedspray,
/obj/item/paper,
/obj/effect/spawner/lootdrop/maintenance/two,
/obj/effect/spawner/lootdrop/maintenance/four,
/turf/open/floor/plating,
/area/maintenance/port/aft)
"cuj" = (
@@ -56035,10 +55999,8 @@
"cuY" = (
/obj/structure/rack,
/obj/item/extinguisher,
/obj/item/storage/belt/utility,
/obj/item/clothing/mask/gas,
/obj/item/storage/box/lights/mixed,
/obj/effect/spawner/lootdrop/maintenance,
/obj/effect/spawner/lootdrop/maintenance/four,
/turf/open/floor/plating,
/area/maintenance/starboard/secondary)
"cuZ" = (
@@ -56462,7 +56424,7 @@
"cwn" = (
/obj/structure/rack,
/obj/item/flashlight/pen,
/obj/effect/spawner/lootdrop/maintenance,
/obj/effect/spawner/lootdrop/maintenance/three,
/turf/open/floor/plating,
/area/maintenance/port/aft)
"cwo" = (
@@ -56801,10 +56763,6 @@
/obj/structure/lattice/catwalk,
/turf/open/space,
/area/solar/port/aft)
"cxc" = (
/obj/item/trash/chips,
/turf/open/floor/plating,
/area/maintenance/port/aft)
"cxd" = (
/obj/structure/reagent_dispensers/watertank,
/obj/effect/landmark/blobstart,
@@ -60643,7 +60601,7 @@
/area/science/mixing)
"cGo" = (
/obj/structure/closet/crate,
/obj/item/clothing/mask/gas,
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"cGp" = (
@@ -61759,11 +61717,11 @@
"cIh" = (
/obj/structure/closet,
/obj/item/storage/box/lights/mixed,
/obj/item/flashlight,
/obj/effect/decal/cleanable/cobweb,
/obj/structure/sign/warning/biohazard{
pixel_y = 32
},
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"cIi" = (
@@ -62326,9 +62284,8 @@
},
/obj/structure/closet/crate,
/obj/item/clothing/gloves/color/fyellow,
/obj/item/wrench,
/obj/effect/spawner/lootdrop/maintenance/two,
/obj/structure/cable,
/obj/effect/spawner/lootdrop/maintenance/three,
/turf/open/floor/plating,
/area/maintenance/aft)
"cJs" = (
@@ -62341,11 +62298,8 @@
/area/maintenance/aft)
"cJt" = (
/obj/structure/rack,
/obj/item/screwdriver{
pixel_y = 6
},
/obj/item/crowbar,
/obj/item/storage/pill_bottle,
/obj/effect/spawner/lootdrop/maintenance/three,
/turf/open/floor/plating,
/area/maintenance/aft)
"cJu" = (
@@ -62685,9 +62639,8 @@
/area/maintenance/starboard/aft)
"cKa" = (
/obj/structure/closet,
/obj/item/clothing/glasses/science,
/obj/effect/spawner/lootdrop/maintenance,
/obj/effect/turf_decal/stripes/line,
/obj/effect/spawner/lootdrop/maintenance/two,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"cKb" = (
@@ -63685,6 +63638,7 @@
/obj/effect/turf_decal/stripes/line,
/obj/machinery/power/apc/auto_name/south,
/obj/structure/cable,
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating,
/area/maintenance/aft/secondary)
"cMl" = (
@@ -64252,9 +64206,8 @@
/area/maintenance/port/aft)
"cNg" = (
/obj/structure/rack,
/obj/item/flashlight,
/obj/effect/spawner/lootdrop/maintenance,
/obj/machinery/light/small,
/obj/effect/spawner/lootdrop/maintenance/two,
/turf/open/floor/plating,
/area/maintenance/port/aft)
"cNh" = (
@@ -64895,11 +64848,10 @@
/area/hallway/secondary/exit/departure_lounge)
"cOA" = (
/obj/structure/rack,
/obj/item/clothing/mask/gas,
/obj/effect/spawner/lootdrop/maintenance,
/obj/machinery/light/small{
dir = 4
},
/obj/effect/spawner/lootdrop/maintenance/three,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"cOB" = (
@@ -65240,8 +65192,7 @@
/area/maintenance/starboard/aft)
"cPz" = (
/obj/structure/closet,
/obj/item/flashlight,
/obj/effect/spawner/lootdrop/maintenance/three,
/obj/effect/spawner/lootdrop/maintenance/four,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"cPA" = (
@@ -66945,6 +66896,7 @@
/area/chapel/main)
"cTp" = (
/obj/structure/closet,
/obj/effect/spawner/lootdrop/maintenance/two,
/turf/open/floor/plating,
/area/maintenance/department/science/xenobiology)
"cTq" = (
@@ -68572,6 +68524,7 @@
/area/maintenance/department/science/xenobiology)
"ddi" = (
/obj/structure/rack,
/obj/effect/spawner/lootdrop/maintenance/two,
/turf/open/floor/plating,
/area/maintenance/department/science/xenobiology)
"ddj" = (
@@ -69568,15 +69521,13 @@
dir = 1
},
/obj/structure/closet/crate,
/obj/item/coin/silver,
/obj/item/grenade/chem_grenade,
/obj/item/storage/box/lights/mixed,
/obj/item/watertank,
/obj/item/storage/box/donkpockets,
/obj/item/poster/random_contraband,
/obj/item/poster/random_contraband,
/obj/item/poster/random_contraband,
/obj/effect/spawner/lootdrop/maintenance,
/obj/effect/spawner/lootdrop/maintenance/four,
/obj/effect/spawner/lootdrop/donkpockets,
/turf/open/floor/plating,
/area/maintenance/port/fore)
"dhp" = (
@@ -69725,10 +69676,9 @@
/turf/open/floor/plasteel/cafeteria,
/area/crew_quarters/dorms)
"dhB" = (
/obj/item/clothing/glasses/meson,
/obj/structure/closet/crate,
/obj/item/poster/random_contraband,
/obj/effect/spawner/lootdrop/maintenance/two,
/obj/effect/spawner/lootdrop/maintenance/three,
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"dhC" = (
@@ -71114,7 +71064,7 @@
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"dAh" = (
/obj/item/storage/box,
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"dAn" = (
@@ -72755,8 +72705,7 @@
/area/crew_quarters/kitchen)
"hEP" = (
/obj/structure/rack,
/obj/item/clothing/mask/gas,
/obj/effect/spawner/lootdrop/maintenance,
/obj/effect/spawner/lootdrop/maintenance/two,
/turf/open/floor/plating{
icon_state = "panelscorched"
},
@@ -73215,10 +73164,10 @@
/obj/structure/rack,
/obj/effect/turf_decal/bot,
/obj/effect/spawner/lootdrop/maintenance,
/obj/item/storage/belt/utility,
/obj/structure/extinguisher_cabinet{
pixel_x = 27
},
/obj/item/storage/belt/utility,
/turf/open/floor/plasteel,
/area/engine/break_room)
"jYJ" = (
@@ -73414,10 +73363,10 @@
/area/science/misc_lab/range)
"kPN" = (
/obj/structure/rack,
/obj/effect/spawner/lootdrop/maintenance,
/obj/structure/sign/poster/contraband/random{
pixel_y = 32
},
/obj/effect/spawner/lootdrop/maintenance/two,
/turf/open/floor/plating,
/area/maintenance/port)
"kRO" = (
@@ -73676,6 +73625,10 @@
/obj/effect/turf_decal/tile/yellow,
/turf/open/floor/plasteel/dark,
/area/medical/chemistry)
"lVD" = (
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating,
/area/maintenance/starboard)
"lWY" = (
/obj/machinery/door/airlock/hatch{
name = "Telecomms Server Room"
@@ -74489,13 +74442,11 @@
/area/security/warden)
"oXP" = (
/obj/structure/closet/crate,
/obj/item/crowbar/red,
/obj/item/pen,
/obj/item/flashlight/pen{
pixel_x = 4;
pixel_y = 3
},
/obj/effect/spawner/lootdrop/maintenance,
/obj/effect/spawner/lootdrop/maintenance/three,
/turf/open/floor/plating{
icon_state = "platingdmg1"
},
@@ -75331,9 +75282,8 @@
"sfQ" = (
/obj/structure/closet,
/obj/item/extinguisher,
/obj/item/flashlight,
/obj/effect/spawner/lootdrop/maintenance,
/obj/effect/decal/cleanable/cobweb,
/obj/effect/spawner/lootdrop/maintenance/two,
/turf/open/floor/plating,
/area/maintenance/port/aft)
"sfR" = (
@@ -75906,6 +75856,11 @@
},
/turf/open/floor/plasteel/white,
/area/science/research)
"uYd" = (
/obj/structure/rack,
/obj/effect/spawner/lootdrop/maintenance/two,
/turf/open/floor/plating,
/area/maintenance/port/aft)
"uYk" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -76016,9 +75971,7 @@
/turf/open/floor/plasteel,
/area/engine/break_room)
"vAs" = (
/obj/structure/rack,
/obj/machinery/portable_atmospherics/canister/air,
/obj/item/wrench,
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating{
icon_state = "platingdmg2"
@@ -76223,11 +76176,10 @@
/area/security/prison)
"wkM" = (
/obj/structure/rack,
/obj/item/clothing/mask/gas,
/obj/effect/spawner/lootdrop/maintenance,
/obj/effect/decal/cleanable/dirt,
/obj/item/reagent_containers/glass/bucket,
/obj/item/mop,
/obj/effect/spawner/lootdrop/maintenance/two,
/turf/open/floor/plating,
/area/maintenance/port/aft)
"wmt" = (
@@ -76673,6 +76625,13 @@
/obj/structure/cable,
/turf/open/floor/plating,
/area/security/warden)
"yeM" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
dir = 4
},
/obj/effect/spawner/lootdrop/maintenance,
/turf/open/floor/plating,
/area/maintenance/starboard)
"yfM" = (
/obj/machinery/vending/engivend,
/obj/effect/turf_decal/delivery,
@@ -90420,7 +90379,7 @@ dne
aip
dne
dst
aDc
awS
dhE
aRG
aRG
@@ -95369,8 +95328,8 @@ cia
cuh
cvm
cvl
cxc
cxR
cdk
uYd
dux
aaa
aaa
@@ -96382,7 +96341,7 @@ dux
dux
dux
dux
cfD
dyw
dwb
cic
cia
@@ -97147,7 +97106,7 @@ bSB
bPR
bue
div
bXI
bLd
dux
dux
cbD
@@ -115647,7 +115606,7 @@ bNL
bPh
bKr
bSd
bPm
yeM
alq
bVC
bWY
@@ -116417,7 +116376,7 @@ bKr
bKr
bKr
bKr
apc
lVD
apc
alq
alq
@@ -117187,7 +117146,7 @@ bBt
atm
bLZ
bPm
apc
lVD
bSf
apc
bxc
+24 -13
View File
@@ -50,7 +50,6 @@ GLOBAL_LIST_INIT(trash_loot, list(//junk: useless, very easy to get, or ghetto c
/obj/item/reagent_containers/food/snacks/urinalcake = 1,
/obj/item/airlock_painter = 1,
/obj/item/pipe = 1,
/obj/item/rack_parts = 1,
/obj/item/clothing/mask/breath = 1,
/obj/item/shard = 1,
@@ -84,10 +83,6 @@ GLOBAL_LIST_INIT(common_loot, list( //common: basic items
/obj/item/toy/crayon/spraycan = 1,
) = 1,
list(//strange objects
/obj/item/relic = 5,
) = 1,
list(//equipment
/obj/item/clothing/mask/gas = 1,
/obj/item/radio/headset = 1,
@@ -169,7 +164,7 @@ GLOBAL_LIST_INIT(uncommon_loot, list(//uncommon: useful items
/obj/item/grenade/iedcasing = 1,
/obj/item/melee/baton/cattleprod = 1,
/obj/item/throwing_star = 1,
) = 1,
) = 8,
list(//equipment
/obj/item/clothing/head/welding = 1,
@@ -184,14 +179,18 @@ GLOBAL_LIST_INIT(uncommon_loot, list(//uncommon: useful items
/obj/item/clothing/mask/muzzle = 1,
/obj/item/clothing/ears/earmuffs = 1,
/obj/item/clothing/gloves/color/black = 1,
) = 1,
) = 8,
list(//strange objects
/obj/item/relic = 5,
) = 8,
list(//construction and crafting
/obj/item/stock_parts/cell/high = 1,
/obj/item/stack/sheet/mineral/wood/fifty = 1,
/obj/item/beacon = 1,
/obj/item/weaponcrafting/receiver = 1,
) = 1,
) = 8,
list(//medical and chemicals
list(//basic healing items
@@ -212,7 +211,7 @@ GLOBAL_LIST_INIT(uncommon_loot, list(//uncommon: useful items
/obj/item/watertank = 1,
/obj/item/watertank/janitor = 1,
) = 1,
) = 1,
) = 8,
list(//food
/obj/item/reagent_containers/food/snacks/canned/peaches/maint = 1,
@@ -223,15 +222,27 @@ GLOBAL_LIST_INIT(uncommon_loot, list(//uncommon: useful items
/obj/item/storage/box/donkpockets/donkpocketpizza = 1,
/obj/item/storage/box/donkpockets/donkpocketberry = 1,
/obj/item/storage/box/donkpockets/donkpockethonk = 1,
) = 1,
) = 1,
/obj/item/reagent_containers/food/snacks/monkeycube = 1,
) = 8,
list(//fakeout items, keep this list at low relative weight
/obj/item/dice/d20 = 1, //To balance out the stealth die of fates in oddities
/obj/item/clothing/shoes/jackboots = 1,
) = 1,
))
GLOBAL_LIST_INIT(oddity_loot, list(//oddity: strange or crazy items
//keeping commented out until there are more, otherwise the same ones may appear too often
// /obj/effect/rune/teleport = 1,
"" = 1 //nothing, so loot spawner doesn't break while nothing else is here
/obj/effect/rune/teleport = 1,
/obj/item/clothing/gloves/color/yellow = 1,
/obj/item/clothing/head/helmet/abductor = 1,
/obj/item/clothing/head/helmet/justice =1,
/obj/item/clothing/suit/space/hardsuit/carp = 1,
/obj/item/dice/d20/fate/stealth/one_use = 1, //Looks like a d20, keep the d20 in the uncommon pool.
/obj/item/dice/d20/fate/stealth/cursed = 1, //Only rolls 1
/obj/item/clothing/shoes/jackboots/fast = 1,
/obj/item/clothing/suit/armor/reactive/table = 1,
/obj/item/storage/box/donkpockets/donkpocketgondola = 1
))
//Maintenance loot spawner pools
@@ -224,3 +224,10 @@
icon = 'icons/effects/confetti_and_decor.dmi'
icon_state = "confetti"
mouse_opacity = MOUSE_OPACITY_TRANSPARENT //the confetti itself might be annoying enough
/obj/effect/decal/cleanable/plastic
name = "plastic shreds"
desc = "Bits of torn, broken, worthless plastic."
icon = 'icons/obj/objects.dmi'
icon_state = "shards"
color = "#c6f4ff"
+9
View File
@@ -1202,6 +1202,15 @@
)
generate_items_inside(items_inside,src)
/obj/item/storage/box/plastic
name = "plastic box"
desc = "It's a solid, plastic shell box."
icon_state = "plasticbox"
foldable = null
illustration = "writing"
custom_materials = list(/datum/material/plastic = 1000) //You lose most if recycled.
/obj/item/storage/box/fireworks
name = "box of fireworks"
desc = "Contains an assortment of fireworks."
@@ -0,0 +1,52 @@
/obj/item/storage/cans
name = "can ring"
desc = "Holds up to six drink cans, and select bottles."
icon = 'icons/obj/storage.dmi'
icon_state = "canholder"
item_state = "cola"
lefthand_file = 'icons/mob/inhands/misc/food_lefthand.dmi'
righthand_file = 'icons/mob/inhands/misc/food_righthand.dmi'
custom_materials = list(/datum/material/plastic = 1200)
max_integrity = 500
/obj/item/storage/cans/suicide_act(mob/living/carbon/user)
user.visible_message("<span class='suicide'>[user] begins popping open a final cold one with the boys! It looks like [user.p_theyre()] trying to commit suicide!</span>")
return BRUTELOSS
/obj/item/storage/cans/update_icon()
var/icon_status = 0
icon_status = contents.len
icon_state = "[initial(icon_state)][icon_status]"
/obj/item/storage/cans/Initialize()
. = ..()
update_icon()
/obj/item/storage/cans/ComponentInitialize()
. = ..()
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
STR.max_w_class = WEIGHT_CLASS_SMALL
STR.max_combined_w_class = 12
STR.max_items = 6
STR.set_holdable(list(
/obj/item/reagent_containers/food/drinks/soda_cans,
/obj/item/reagent_containers/food/drinks/beer,
/obj/item/reagent_containers/food/drinks/ale,
/obj/item/reagent_containers/food/drinks/waterbottle
))
/obj/item/storage/cans/sixsoda
name = "soda bottle ring"
desc = "Holds six soda cans. Remember to recycle when you're done!"
/obj/item/storage/cans/sixsoda/PopulateContents()
for(var/i in 1 to 6)
new /obj/item/reagent_containers/food/drinks/soda_cans/cola(src)
/obj/item/storage/cans/sixbeer
name = "beer bottle ring"
desc = "Holds six beer bottles. Remember to recycle when you're done!"
/obj/item/storage/cans/sixbeer/PopulateContents()
for(var/i in 1 to 6)
new /obj/item/reagent_containers/food/drinks/beer(src)
@@ -464,6 +464,7 @@
to_chat(Mob, "<span class='warning'>The chair begins to pop and crack, you're too heavy!</span>")
if(do_after(Mob, 60, 1, Mob, 0))
Mob.visible_message("<span class='notice'>The plastic chair snaps under [Mob]'s weight!</span>")
new /obj/effect/decal/cleanable/plastic(loc)
qdel(src)
/obj/item/chair/plastic
+10
View File
@@ -354,6 +354,15 @@
light_color = "#2cb2e8"
light_range = 3
/obj/item/twohanded/required/kirbyplants/fullysynthetic
name = "plastic potted plant"
desc = "A fake, cheap looking, plastic tree. Perfect for people who kill every plant they touch."
icon_state = "plant-26"
custom_materials = (list(/datum/material/plastic = 8000))
/obj/item/twohanded/required/kirbyplants/fullysynthetic/Initialize()
. = ..()
icon_state = "plant-[rand(26, 29)]"
//a rock is flora according to where the icon file is
//and now these defines
@@ -438,3 +447,4 @@
/obj/structure/flora/rock/pile/largejungle/Initialize()
. = ..()
icon_state = "[initial(icon_state)][rand(1,3)]"
+3 -1
View File
@@ -9,7 +9,7 @@
icon_state = "bus"
density = TRUE
circuit = /obj/item/circuitboard/machine/ntnet_relay
ui_x = 500
ui_x = 400
ui_y = 300
var/datum/ntnet/NTNet = null // This is mostly for backwards reference and to allow varedit modifications from ingame.
@@ -91,10 +91,12 @@
dos_failure = 0
update_icon()
SSnetworks.station_network.add_log("Quantum relay manually restarted from overload recovery mode to normal operation mode.")
return TRUE
if("toggle")
enabled = !enabled
SSnetworks.station_network.add_log("Quantum relay manually [enabled ? "enabled" : "disabled"].")
update_icon()
return TRUE
/obj/machinery/ntnet_relay/Initialize()
uid = gl_uid++
@@ -171,17 +171,9 @@
var/reusable = TRUE
var/used = FALSE
/obj/item/dice/d20/fate/stealth
name = "d20"
desc = "A die with twenty sides. The preferred die to throw at the GM."
/obj/item/dice/d20/fate/one_use
reusable = FALSE
/obj/item/dice/d20/fate/one_use/stealth
name = "d20"
desc = "A die with twenty sides. The preferred die to throw at the GM."
/obj/item/dice/d20/fate/cursed
name = "cursed Die of Fate"
desc = "A die with twenty sides. You feel that rolling this is a REALLY bad idea."
@@ -190,6 +182,23 @@
rigged = DICE_TOTALLY_RIGGED
rigged_value = 1
/obj/item/dice/d20/fate/cursed/one_use
reusable = FALSE
/obj/item/dice/d20/fate/stealth
name = "d20"
desc = "A die with twenty sides. The preferred die to throw at the GM."
/obj/item/dice/d20/fate/stealth/one_use
reusable = FALSE
/obj/item/dice/d20/fate/stealth/cursed
rigged = DICE_TOTALLY_RIGGED
rigged_value = 1
/obj/item/dice/d20/fate/stealth/cursed/one_use
reusable = FALSE
/obj/item/dice/d20/fate/diceroll(mob/user)
. = ..()
if(!used)
+4 -6
View File
@@ -1486,18 +1486,16 @@
/datum/supply_pack/service/party
name = "Party Equipment"
desc = "Celebrate both life and death on the station with Nanotrasen's Party Essentials(tm)! Contains seven colored glowsticks, four beers, two ales, and a bottle of patron, goldschlager, and shaker!"
cost = 2000
desc = "Celebrate both life and death on the station with Nanotrasen's Party Essentials(tm)! Contains seven colored glowsticks, six beers, six sodas, two ales, and a bottle of patron, goldschlager, and shaker!"
cost = 2500
contains = list(/obj/item/storage/box/drinkingglasses,
/obj/item/reagent_containers/food/drinks/shaker,
/obj/item/reagent_containers/food/drinks/bottle/patron,
/obj/item/reagent_containers/food/drinks/bottle/goldschlager,
/obj/item/reagent_containers/food/drinks/ale,
/obj/item/reagent_containers/food/drinks/ale,
/obj/item/reagent_containers/food/drinks/beer,
/obj/item/reagent_containers/food/drinks/beer,
/obj/item/reagent_containers/food/drinks/beer,
/obj/item/reagent_containers/food/drinks/beer,
/obj/item/storage/cans/sixbeer,
/obj/item/storage/cans/sixsoda,
/obj/item/flashlight/glowstick,
/obj/item/flashlight/glowstick/red,
/obj/item/flashlight/glowstick/blue,
+13
View File
@@ -257,3 +257,16 @@
user.visible_message("<span class='notice'>You untie [oldName] back into a [newBand.name].</span>", "<span class='notice'>[user] unties [oldName] back into a [newBand.name].</span>")
else
to_chat(user, "<span class='warning'>You must be holding [src] in order to untie it!</span>")
/obj/item/clothing/neck/beads
name = "plastic bead necklace"
desc = "A cheap, plastic bead necklace. Show team spirit! Collect them! Throw them away! The posibilites are endless!"
icon = 'icons/obj/clothing/neck.dmi'
icon_state = "beads"
color = "#ffffff"
custom_price = 10
custom_materials = (list(/datum/material/plastic = 500))
/obj/item/clothing/neck/beads/Initialize()
. = ..()
color = color = pick("#ff0077","#d400ff","#2600ff","#00ccff","#00ff2a","#e5ff00","#ffae00","#ff0000", "#ffffff")
@@ -176,8 +176,11 @@
if(!parts.len)
return
var/obj/item/bodypart/picked = pick(parts)
var/damage_calculator = picked.get_damage(TRUE) //heal_damage returns update status T/F instead of amount healed so we dance gracefully around this
if(picked.heal_damage(brute, burn, stamina, required_status))
update_damage_overlays()
return max(damage_calculator - picked.get_damage(TRUE), 0)
//Damages ONE bodypart randomly selected from damagable ones.
//It automatically updates damage overlays if necessary
+2 -3
View File
@@ -241,10 +241,9 @@
return
// heal ONE external organ, organ gets randomly selected from damaged ones.
/// needs to return amount healed in order to calculate things like tend wounds xp gain
/mob/living/proc/heal_bodypart_damage(brute = 0, burn = 0, stamina = 0, updating_health = TRUE, required_status)
adjustBruteLoss(-brute, FALSE) //zero as argument for no instant health update
adjustFireLoss(-burn, FALSE)
adjustStaminaLoss(-stamina, FALSE)
. = (adjustBruteLoss(-brute, FALSE) + adjustFireLoss(-burn, FALSE) + adjustStaminaLoss(-stamina, FALSE)) //zero as argument for no instant health update
if(updating_health)
updatehealth()
update_stamina()
@@ -22,6 +22,8 @@
maxHealth = 25
health = 25
spacewalk = TRUE
search_objects = 1
wanted_objects = list(/obj/item/storage/cans)
harm_intent_damage = 8
obj_damage = 50
@@ -43,6 +45,7 @@
var/random_color = TRUE //if the carp uses random coloring
var/rarechance = 1 //chance for rare color variant
var/snack_distance = 0
var/static/list/carp_colors = list(\
"lightpurple" = "#c3b9f1", \
@@ -96,6 +99,21 @@
base_dead_overlay.appearance_flags = RESET_COLOR
add_overlay(base_dead_overlay)
/mob/living/simple_animal/hostile/carp/proc/chomp_plastic()
var/obj/item/storage/cans/tasty_plastic = locate(/obj/item/storage/cans) in oview(src, 9)
if(tasty_plastic)
snack_distance = get_dist(src.loc,tasty_plastic.loc)
if(snack_distance <= 1)
src.visible_message("<span class='notice'>[src] gets its head stuck in [tasty_plastic], and gets cut breaking free from it!</span>", "<span class='notice'>You try to avoid [tasty_plastic], but it looks so... delicious... Ow! It cuts the inside of your mouth!</span>")
new /obj/effect/decal/cleanable/plastic(src.loc)
adjustBruteLoss(5)
qdel(tasty_plastic)
/mob/living/simple_animal/hostile/carp/Life()
. = ..()
if(stat == CONSCIOUS)
chomp_plastic()
/mob/living/simple_animal/hostile/carp/death(gibbed)
. = ..()
cut_overlays()
@@ -10,6 +10,8 @@
unsendable = 1
undeletable = 1
size = 4
ui_x = 420
ui_y = 630
available_on_ntnet = 0
requires_ntnet = 0
tgui_id = "ntos_configuration"
@@ -1028,3 +1028,35 @@
materials = list(/datum/material/iron = 20, /datum/material/glass = 5)
build_path = /obj/item/toy/ammo/gun
category = list("hacked", "Misc")
/datum/design/plastic_tree
name = "Plastic Potted Plant"
id = "plastic_trees"
build_type = AUTOLATHE
materials = list(/datum/material/plastic = 8000)
build_path = /obj/item/twohanded/required/kirbyplants/fullysynthetic
category = list("initial", "Misc")
/datum/design/beads
name = "Plastic Bead Necklace"
id = "plastic_necklace"
build_type = AUTOLATHE
materials = list(/datum/material/plastic = 500)
build_path = /obj/item/clothing/neck/beads
category = list("initial", "Misc")
/datum/design/plastic_ring
name = "Plastic Can Rings"
id = "ring_holder"
build_type = AUTOLATHE
materials = list(/datum/material/plastic = 1200)
build_path = /obj/item/storage/cans
category = list("initial", "Dinnerware")
/datum/design/plastic_box
name = "Plastic Box"
id = "plastic_box"
build_type = AUTOLATHE
materials = list(/datum/material/plastic = 1000)
build_path = /obj/item/storage/box/plastic
category = list("initial", "Misc")
@@ -23,12 +23,12 @@
"<span class='notice'>[user] starts reshaping [target]'s ligaments into a hook-like shape.</span>",
"<span class='notice'>[user] starts manipulating [target]'s ligaments.</span>")
/datum/surgery_step/reshape_ligaments/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
/datum/surgery_step/reshape_ligaments/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
display_results(user, target, "<span class='notice'>You reshape [target]'s ligaments into a connective hook!</span>",
"<span class='notice'>[user] reshapes [target]'s ligaments into a connective hook!</span>",
"<span class='notice'>[user] finishes manipulating [target]'s ligaments.</span>")
new /datum/bioware/hooked_ligaments(target)
return ..(default_display_results = FALSE)
return ..()
/datum/bioware/hooked_ligaments
name = "Hooked Ligaments"
@@ -23,12 +23,12 @@
"<span class='notice'>[user] starts reinforce [target]'s ligaments.</span>",
"<span class='notice'>[user] starts manipulating [target]'s ligaments.</span>")
/datum/surgery_step/reinforce_ligaments/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
/datum/surgery_step/reinforce_ligaments/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
display_results(user, target, "<span class='notice'>You reinforce [target]'s ligaments!</span>",
"<span class='notice'>[user] reinforces [target]'s ligaments!</span>",
"<span class='notice'>[user] finishes manipulating [target]'s ligaments.</span>")
new /datum/bioware/reinforced_ligaments(target)
return ..(default_display_results = FALSE)
return ..()
/datum/bioware/reinforced_ligaments
name = "Reinforced Ligaments"
@@ -22,12 +22,12 @@
"<span class='notice'>[user] starts wrapping muscles around [target]'s circulatory system.</span>",
"<span class='notice'>[user] starts manipulating [target]'s circulatory system.</span>")
/datum/surgery_step/muscled_veins/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
/datum/surgery_step/muscled_veins/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
display_results(user, target, "<span class='notice'>You reshape [target]'s circulatory system, adding a muscled membrane!</span>",
"<span class='notice'>[user] reshapes [target]'s circulatory system, adding a muscled membrane!</span>",
"<span class='notice'>[user] finishes manipulating [target]'s circulatory system.</span>")
new /datum/bioware/muscled_veins(target)
return ..(default_display_results = FALSE)
return ..()
/datum/bioware/muscled_veins
name = "Threaded Veins"
@@ -22,12 +22,12 @@
"<span class='notice'>[user] starts rerouting [target]'s nerves.</span>",
"<span class='notice'>[user] starts manipulating [target]'s nervous system.</span>")
/datum/surgery_step/ground_nerves/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
/datum/surgery_step/ground_nerves/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
display_results(user, target, "<span class='notice'>You successfully reroute [target]'s nervous system!</span>",
"<span class='notice'>[user] successfully reroutes [target]'s nervous system!</span>",
"<span class='notice'>[user] finishes manipulating [target]'s nervous system.</span>")
new /datum/bioware/grounded_nerves(target)
return ..(default_display_results = FALSE)
return ..()
/datum/bioware/grounded_nerves
name = "Grounded Nerves"
@@ -22,12 +22,12 @@
"<span class='notice'>[user] starts splicing together [target]'s nerves.</span>",
"<span class='notice'>[user] starts manipulating [target]'s nervous system.</span>")
/datum/surgery_step/splice_nerves/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
/datum/surgery_step/splice_nerves/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
display_results(user, target, "<span class='notice'>You successfully splice [target]'s nervous system!</span>",
"<span class='notice'>[user] successfully splices [target]'s nervous system!</span>",
"<span class='notice'>[user] finishes manipulating [target]'s nervous system.</span>")
new /datum/bioware/spliced_nerves(target)
return ..(default_display_results = FALSE)
return ..()
/datum/bioware/spliced_nerves
name = "Spliced Nerves"
@@ -22,12 +22,12 @@
"<span class='notice'>[user] starts weaving [target]'s circulatory system.</span>",
"<span class='notice'>[user] starts manipulating [target]'s circulatory system.</span>")
/datum/surgery_step/thread_veins/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
/datum/surgery_step/thread_veins/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
display_results(user, target, "<span class='notice'>You weave [target]'s circulatory system into a resistant mesh!</span>",
"<span class='notice'>[user] weaves [target]'s circulatory system into a resistant mesh!</span>",
"<span class='notice'>[user] finishes manipulating [target]'s circulatory system.</span>")
new /datum/bioware/threaded_veins(target)
return ..(default_display_results = FALSE)
return ..()
/datum/bioware/threaded_veins
name = "Threaded Veins"
+2 -2
View File
@@ -18,7 +18,7 @@
"<span class='notice'>[user] begins to sever [target]'s [parse_zone(target_zone)]!</span>",
"<span class='notice'>[user] begins to sever [target]'s [parse_zone(target_zone)]!</span>")
/datum/surgery_step/sever_limb/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
/datum/surgery_step/sever_limb/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
var/mob/living/carbon/human/L = target
display_results(user, target, "<span class='notice'>You sever [L]'s [parse_zone(target_zone)].</span>",
"<span class='notice'>[user] severs [L]'s [parse_zone(target_zone)]!</span>",
@@ -28,4 +28,4 @@
target_limb.drop_limb()
if(user.mind)
user.mind.adjust_experience(/datum/skill/medical, experience_given)
return ..(default_display_results = FALSE)
return ..()
+2 -2
View File
@@ -29,7 +29,7 @@
"<span class='notice'>[user] begins to fix [target]'s brain.</span>",
"<span class='notice'>[user] begins to perform surgery on [target]'s brain.</span>")
/datum/surgery_step/fix_brain/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
/datum/surgery_step/fix_brain/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
display_results(user, target, "<span class='notice'>You succeed in fixing [target]'s brain.</span>",
"<span class='notice'>[user] successfully fixes [target]'s brain!</span>",
"<span class='notice'>[user] completes the surgery on [target]'s brain.</span>")
@@ -38,7 +38,7 @@
target.setOrganLoss(ORGAN_SLOT_BRAIN, target.getOrganLoss(ORGAN_SLOT_BRAIN) - 60) //we set damage in this case in order to clear the "failing" flag
var/cured_num = target.cure_all_traumas(TRAUMA_RESILIENCE_SURGERY)
experience_given = 2*cured_num
return ..(default_display_results = FALSE)
return ..()
/datum/surgery_step/fix_brain/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(target.getorganslot(ORGAN_SLOT_BRAIN))
+3 -3
View File
@@ -31,7 +31,7 @@
"<span class='notice'>[user] checks for items in [target]'s [target_zone].</span>",
"<span class='notice'>[user] looks for something in [target]'s [target_zone].</span>")
/datum/surgery_step/handle_cavity/success(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery)
/datum/surgery_step/handle_cavity/success(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool, datum/surgery/surgery = FALSE)
var/obj/item/bodypart/chest/CH = target.get_bodypart(BODY_ZONE_CHEST)
if(tool)
if(IC || tool.w_class > WEIGHT_CLASS_NORMAL || HAS_TRAIT(tool, TRAIT_NODROP) || istype(tool, /obj/item/organ))
@@ -43,7 +43,7 @@
"<span class='notice'>[user] stuffs [tool.w_class > WEIGHT_CLASS_SMALL ? tool : "something"] into [target]'s [target_zone].</span>")
user.transferItemToLoc(tool, target, TRUE)
CH.cavity_item = tool
return ..(default_display_results = FALSE)
return ..()
else
if(IC)
display_results(user, target, "<span class='notice'>You pull [IC] out of [target]'s [target_zone].</span>",
@@ -51,7 +51,7 @@
"<span class='notice'>[user] pulls [IC.w_class > WEIGHT_CLASS_SMALL ? IC : "something"] out of [target]'s [target_zone].</span>")
user.put_in_hands(IC)
CH.cavity_item = null
return ..(default_display_results = FALSE)
return ..()
else
to_chat(user, "<span class='warning'>You don't find anything in [target]'s [target_zone].</span>")
return 0
+3 -3
View File
@@ -22,7 +22,7 @@
"<span class='notice'>[user] begins to extract a core from [target].</span>",
"<span class='notice'>[user] begins to extract a core from [target].</span>")
/datum/surgery_step/extract_core/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
/datum/surgery_step/extract_core/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
var/mob/living/simple_animal/slime/slime = target
if(slime.cores > 0)
slime.cores--
@@ -34,9 +34,9 @@
if(slime.cores <= 0)
slime.icon_state = "[slime.colour] baby slime dead-nocore"
return ..(default_display_results = FALSE)
return ..()
else
return 0
else
to_chat(user, "<span class='warning'>There aren't any cores left in [target]!</span>")
return ..(default_display_results = FALSE)
return ..()
+5 -4
View File
@@ -24,7 +24,7 @@
"<span class='notice'>[user] begins to make an incision in [target]'s heart.</span>",
"<span class='notice'>[user] begins to make an incision in [target]'s heart.</span>")
/datum/surgery_step/incise_heart/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
/datum/surgery_step/incise_heart/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
if(ishuman(target))
var/mob/living/carbon/human/H = target
if (!(NOBLOOD in H.dna.species.species_traits))
@@ -33,7 +33,7 @@
"")
H.bleed_rate += 10
H.adjustBruteLoss(10)
return ..(default_display_results = FALSE)
return ..()
/datum/surgery_step/incise_heart/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(ishuman(target))
@@ -50,13 +50,14 @@
name = "graft coronary bypass"
implements = list(TOOL_HEMOSTAT = 90, TOOL_WIRECUTTER = 35, /obj/item/stack/packageWrap = 15, /obj/item/stack/cable_coil = 5)
time = 90
experience_given = 20
/datum/surgery_step/coronary_bypass/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You begin to graft a bypass onto [target]'s heart...</span>",
"<span class='notice'>[user] begins to graft something onto [target]'s heart!</span>",
"<span class='notice'>[user] begins to graft something onto [target]'s heart!</span>")
/datum/surgery_step/coronary_bypass/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
/datum/surgery_step/coronary_bypass/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
target.setOrganLoss(ORGAN_SLOT_HEART, 60)
var/obj/item/organ/heart/heart = target.getorganslot(ORGAN_SLOT_HEART)
if(heart) //slightly worrying if we lost our heart mid-operation, but that's life
@@ -64,7 +65,7 @@
display_results(user, target, "<span class='notice'>You successfully graft a bypass onto [target]'s heart.</span>",
"<span class='notice'>[user] finishes grafting something onto [target]'s heart.</span>",
"<span class='notice'>[user] finishes grafting something onto [target]'s heart.</span>")
return ..(default_display_results = FALSE)
return ..()
/datum/surgery_step/coronary_bypass/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(ishuman(target))
+2 -2
View File
@@ -13,7 +13,7 @@
"<span class='notice'>[user] begins to wedge \the [tool] in [target]'s [parse_zone(target_zone)].</span>",
"<span class='notice'>[user] begins to wedge something in [target]'s [parse_zone(target_zone)].</span>")
/datum/surgery_step/insert_pill/success(mob/user, mob/living/carbon/target, target_zone, obj/item/reagent_containers/pill/tool, datum/surgery/surgery)
/datum/surgery_step/insert_pill/success(mob/user, mob/living/carbon/target, target_zone, obj/item/reagent_containers/pill/tool, datum/surgery/surgery, default_display_results = FALSE)
if(!istype(tool))
return 0
@@ -27,7 +27,7 @@
display_results(user, target, "<span class='notice'>You wedge [tool] into [target]'s [parse_zone(target_zone)].</span>",
"<span class='notice'>[user] wedges \the [tool] into [target]'s [parse_zone(target_zone)]!</span>",
"<span class='notice'>[user] wedges something into [target]'s [parse_zone(target_zone)]!</span>")
return ..(default_display_results = FALSE)
return ..()
/datum/action/item_action/hands_free/activate_pill
name = "Activate Pill"
@@ -73,26 +73,32 @@
cost *= ED.value_multiplier
return (cost-multi_surgery_adjust)
/datum/surgery_step/dissection/success(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, display_results = TRUE)
/datum/surgery_step/dissection/success(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
var/points_earned = check_value(target, surgery)
user.visible_message("<span class='notice'>[user] dissects [target], discovering [points_earned] point\s of data!</span>", "<span class='notice'>You dissect [target], finding [points_earned] point\s worth of discoveries, you also write a few notes.</span>")
SSresearch.science_tech.add_point_list(list(TECHWEB_POINT_TYPE_GENERIC = points_earned*PUBLIC_TECHWEB_GAIN))
new /obj/item/research_notes(user.loc, points_earned*PRIVATE_TECHWEB_GAIN, "biology")
var/obj/item/research_notes/the_dossier =new /obj/item/research_notes(user.loc, points_earned*PRIVATE_TECHWEB_GAIN, "biology")
if(!user.put_in_hands(the_dossier) && istype(user.get_inactive_held_item(), /obj/item/research_notes))
var/obj/item/research_notes/hand_dossier = user.get_inactive_held_item()
hand_dossier.merge(the_dossier)
var/obj/item/bodypart/L = target.get_bodypart(BODY_ZONE_CHEST)
target.apply_damage(80, BRUTE, L)
ADD_TRAIT(target, TRAIT_DISSECTED, "[surgery.name]")
repeatable = FALSE
experience_given = 1+(points_earned/BASE_HUMAN_REWARD)
return ..(default_display_results = FALSE)
experience_given = 1+(points_earned/(BASE_HUMAN_REWARD/10))//if BHR = 500, 10 XP on base surgery
return ..()
/datum/surgery_step/dissection/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
var/points_earned = round(check_value(target, surgery) * 0.01)
user.visible_message("<span class='notice'>[user] dissects [target]!</span>", EXPDIS_FAIL_MSG)
SSresearch.science_tech.add_point_list(list(TECHWEB_POINT_TYPE_GENERIC = points_earned*PUBLIC_TECHWEB_GAIN))
new /obj/item/research_notes(user.loc, points_earned*PRIVATE_TECHWEB_GAIN, "biology")
var/obj/item/research_notes/the_dossier =new /obj/item/research_notes(user.loc, points_earned*PRIVATE_TECHWEB_GAIN, "biology")
if(!user.put_in_hands(the_dossier) && istype(user.get_inactive_held_item(), /obj/item/research_notes))
var/obj/item/research_notes/hand_dossier = user.get_inactive_held_item()
hand_dossier.merge(the_dossier)
var/obj/item/bodypart/L = target.get_bodypart(BODY_ZONE_CHEST)
target.apply_damage(80, BRUTE, L)
+3 -2
View File
@@ -10,6 +10,7 @@
name = "fix eyes"
implements = list(TOOL_HEMOSTAT = 100, TOOL_SCREWDRIVER = 45, /obj/item/pen = 25)
time = 64
experience_given = 5
/datum/surgery/eye_surgery/can_start(mob/user, mob/living/carbon/target)
var/obj/item/organ/eyes/E = target.getorganslot(ORGAN_SLOT_EYES)
@@ -23,7 +24,7 @@
"<span class='notice'>[user] begins to fix [target]'s eyes.</span>",
"<span class='notice'>[user] begins to perform surgery on [target]'s eyes.</span>")
/datum/surgery_step/fix_eyes/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
/datum/surgery_step/fix_eyes/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
var/obj/item/organ/eyes/E = target.getorganslot(ORGAN_SLOT_EYES)
user.visible_message("<span class='notice'>[user] successfully fixes [target]'s eyes!</span>", "<span class='notice'>You succeed in fixing [target]'s eyes.</span>")
display_results(user, target, "<span class='notice'>You succeed in fixing [target]'s eyes.</span>",
@@ -34,7 +35,7 @@
target.cure_nearsighted(list(EYE_DAMAGE))
target.blur_eyes(35) //this will fix itself slowly.
E.setOrganDamage(0)
return ..(default_display_results = FALSE)
return ..()
/datum/surgery_step/fix_eyes/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(target.getorgan(/obj/item/organ/brain))
+9 -3
View File
@@ -1,3 +1,5 @@
#define PER_ITERATION_XP_CAP 3 //TW XP gain scales with repeated iterations.
/datum/surgery/healing
steps = list(/datum/surgery_step/incise,
/datum/surgery_step/retract_skin,
@@ -26,7 +28,7 @@
implements = list(TOOL_HEMOSTAT = 100, TOOL_SCREWDRIVER = 65, /obj/item/pen = 55)
repeatable = TRUE
time = 25
experience_given = 2
experience_given = 1 //scales with repeated iterations
var/brutehealing = 0
var/burnhealing = 0
var/missinghpbonus = 0 //heals an extra point of damager per X missing damage of type (burn damage for burn healing, brute for brute). Smaller Number = More Healing!
@@ -48,11 +50,13 @@
/datum/surgery_step/heal/initiate(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, try_to_fail = FALSE)
if(..())
experience_given = min(experience_given+0.25,PER_ITERATION_XP_CAP)
while((brutehealing && target.getBruteLoss()) || (burnhealing && target.getFireLoss()))
if(!..())
break
experience_given = min(experience_given+0.25,PER_ITERATION_XP_CAP)
/datum/surgery_step/heal/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
/datum/surgery_step/heal/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
var/umsg = "You succeed in fixing some of [target]'s wounds" //no period, add initial space to "addons"
var/tmsg = "[user] fixes some of [target]'s wounds" //see above
var/urhealedamt_brute = brutehealing
@@ -76,7 +80,7 @@
if(istype(surgery, /datum/surgery/healing))
var/datum/surgery/healing/the_surgery = surgery
the_surgery.antispam = TRUE
return ..(default_display_results = FALSE)
return ..()
/datum/surgery_step/heal/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='warning'>You screwed up!</span>",
@@ -214,3 +218,5 @@
"<span class='warning'>[user] screws up!</span>",
"<span class='notice'>[user] fixes some of [target]'s wounds.</span>", TRUE)
target.take_bodypart_damage(5,5)
#undef PER_ITERATION_XP_CAP
+3 -2
View File
@@ -24,19 +24,20 @@
implements = list(TOOL_SCALPEL = 95, /obj/item/melee/transforming/energy/sword = 65, /obj/item/kitchen/knife = 45,
/obj/item/shard = 35)
time = 52
experience_given = 10
/datum/surgery_step/hepatectomy/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You begin to cut out a damaged peice of [target]'s liver...</span>",
"<span class='notice'>[user] begins to make an incision in [target].</span>",
"<span class='notice'>[user] begins to make an incision in [target].</span>")
/datum/surgery_step/hepatectomy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
/datum/surgery_step/hepatectomy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
var/mob/living/carbon/human/H = target
H.setOrganLoss(ORGAN_SLOT_LIVER, 10) //not bad, not great
display_results(user, target, "<span class='notice'>You successfully remove the damaged part of [target]'s liver.</span>",
"<span class='notice'>[user] successfully removes the damaged part of [target]'s liver.</span>",
"<span class='notice'>[user] successfully removes the damaged part of [target]'s liver.</span>")
return ..(default_display_results = FALSE)
return ..()
/datum/surgery_step/hepatectomy/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery)
var/mob/living/carbon/human/H = target
+2 -2
View File
@@ -25,7 +25,7 @@
"<span class='notice'>[user] looks for an implant in [target]'s [target_zone].</span>",
"<span class='notice'>[user] looks for something in [target]'s [target_zone].</span>")
/datum/surgery_step/extract_implant/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
/datum/surgery_step/extract_implant/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
if(I)
display_results(user, target, "<span class='notice'>You successfully remove [I] from [target]'s [target_zone].</span>",
"<span class='notice'>[user] successfully removes [I] from [target]'s [target_zone]!</span>",
@@ -50,7 +50,7 @@
else
to_chat(user, "<span class='warning'>You can't find anything in [target]'s [target_zone]!</span>")
return ..(default_display_results = FALSE)
return ..()
/datum/surgery/implant_removal/mechanic
name = "implant removal"
+3 -2
View File
@@ -8,6 +8,7 @@
name = "replace limb"
implements = list(/obj/item/bodypart = 100, /obj/item/organ_storage = 100)
time = 32
experience_given = 10
var/obj/item/bodypart/L = null // L because "limb"
@@ -41,7 +42,7 @@
//SURGERY STEP SUCCESSES
/datum/surgery_step/replace_limb/success(mob/user, mob/living/carbon/target, target_zone, obj/item/bodypart/tool, datum/surgery/surgery)
/datum/surgery_step/replace_limb/success(mob/user, mob/living/carbon/target, target_zone, obj/item/bodypart/tool, datum/surgery/surgery, default_display_results = FALSE)
if(L)
if(istype(tool, /obj/item/organ_storage))
tool.icon_state = initial(tool.icon_state)
@@ -56,4 +57,4 @@
log_combat(user, target, "augmented", addition="by giving him new [parse_zone(target_zone)] INTENT: [uppertext(user.a_intent)]")
else
to_chat(user, "<span class='warning'>[target] has no organic [parse_zone(target_zone)] there!</span>")
return ..(default_display_results = FALSE)
return ..()
+7 -4
View File
@@ -4,7 +4,7 @@
possible_locs = list(BODY_ZONE_CHEST)
/datum/surgery/lipoplasty/can_start(mob/user, mob/living/carbon/target)
if(HAS_TRAIT(target, TRAIT_FAT))
if(HAS_TRAIT(target, TRAIT_FAT) && target.nutrition >= NUTRITION_LEVEL_WELL_FED)
return 1
return 0
@@ -14,6 +14,7 @@
name = "cut excess fat"
implements = list(TOOL_SAW = 100, /obj/item/hatchet = 35, /obj/item/kitchen/knife/butcher = 25)
time = 64
experience_given = 2
/datum/surgery_step/cut_fat/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("<span class='notice'>[user] begins to cut away [target]'s excess fat.</span>", "<span class='notice'>You begin to cut away [target]'s excess fat...</span>")
@@ -32,20 +33,22 @@
name = "remove loose fat"
implements = list(TOOL_RETRACTOR = 100, TOOL_SCREWDRIVER = 45, TOOL_WIRECUTTER = 35)
time = 32
experience_given = 0 //scales with fat removed
/datum/surgery_step/remove_fat/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You begin to extract [target]'s loose fat...</span>",
"<span class='notice'>[user] begins to extract [target]'s loose fat!</span>",
"<span class='notice'>[user] begins to extract something from [target]'s [target_zone].</span>")
/datum/surgery_step/remove_fat/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
/datum/surgery_step/remove_fat/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
display_results(user, target, "<span class='notice'>You extract [target]'s fat.</span>",
"<span class='notice'>[user] extracts [target]'s fat!</span>",
"<span class='notice'>[user] extracts [target]'s fat!</span>")
target.overeatduration = 0 //patient is unfatted
var/removednutriment = target.nutrition
target.set_nutrition(NUTRITION_LEVEL_WELL_FED)
removednutriment -= 450 //whatever was removed goes into the meat
removednutriment -= NUTRITION_LEVEL_WELL_FED //whatever was removed goes into the meat
experience_given = (round(removednutriment/30))
var/mob/living/carbon/human/H = target
var/typeofmeat = /obj/item/reagent_containers/food/snacks/meat/slab/human
@@ -59,4 +62,4 @@
newmeat.subjectjob = H.job
newmeat.reagents.add_reagent (/datum/reagent/consumable/nutriment, (removednutriment / 15)) //To balance with nutriment_factor of nutriment
newmeat.forceMove(target.loc)
return ..(default_display_results = FALSE)
return ..()
+3 -2
View File
@@ -18,13 +18,14 @@
implements = list(TOOL_SCALPEL = 95, /obj/item/melee/transforming/energy/sword = 65, /obj/item/kitchen/knife = 45,
/obj/item/shard = 35)
time = 42
experience_given = 10
/datum/surgery_step/lobectomy/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You begin to make an incision in [target]'s lungs...</span>",
"<span class='notice'>[user] begins to make an incision in [target].</span>",
"<span class='notice'>[user] begins to make an incision in [target].</span>")
/datum/surgery_step/lobectomy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
/datum/surgery_step/lobectomy/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
if(ishuman(target))
var/mob/living/carbon/human/H = target
var/obj/item/organ/lungs/L = H.getorganslot(ORGAN_SLOT_LUNGS)
@@ -33,7 +34,7 @@
display_results(user, target, "<span class='notice'>You successfully excise [H]'s most damaged lobe.</span>",
"<span class='notice'>Successfully removes a piece of [H]'s lungs.</span>",
"")
return ..(default_display_results = FALSE)
return ..()
/datum/surgery_step/lobectomy/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(ishuman(target))
+7 -6
View File
@@ -17,7 +17,7 @@
return TRUE
/datum/surgery_step/incise/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
/datum/surgery_step/incise/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
if ishuman(target)
var/mob/living/carbon/human/H = target
if (!(NOBLOOD in H.dna.species.species_traits))
@@ -25,9 +25,10 @@
"<span class='notice'>Blood pools around the incision in [H]'s [parse_zone(target_zone)].</span>",
"")
H.bleed_rate += 3
return ..(default_display_results = FALSE)
return ..()
/datum/surgery_step/incise/nobleed //silly friendly!
experience_given = 1 //safer so not as much XP
/datum/surgery_step/incise/nobleed/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You begin to <i>carefully</i> make an incision in [target]'s [parse_zone(target_zone)]...</span>",
@@ -110,12 +111,12 @@
"<span class='notice'>[user] begins to saw through the bone in [target]'s [parse_zone(target_zone)].</span>",
"<span class='notice'>[user] begins to saw through the bone in [target]'s [parse_zone(target_zone)].</span>")
/datum/surgery_step/saw/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
/datum/surgery_step/saw/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
target.apply_damage(50, BRUTE, "[target_zone]")
display_results(user, target, "<span class='notice'>You saw [target]'s [parse_zone(target_zone)] open.</span>",
"<span class='notice'>[user] saws [target]'s [parse_zone(target_zone)] open!</span>",
"<span class='notice'>[user] saws [target]'s [parse_zone(target_zone)] open!</span>")
return ..(default_display_results = FALSE)
return ..()
//drill bone
/datum/surgery_step/drill
@@ -128,8 +129,8 @@
"<span class='notice'>[user] begins to drill into the bone in [target]'s [parse_zone(target_zone)].</span>",
"<span class='notice'>[user] begins to drill into the bone in [target]'s [parse_zone(target_zone)].</span>")
/datum/surgery_step/drill/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
/datum/surgery_step/drill/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
display_results(user, target, "<span class='notice'>You drill into [target]'s [parse_zone(target_zone)].</span>",
"<span class='notice'>[user] drills into [target]'s [parse_zone(target_zone)]!</span>",
"<span class='notice'>[user] drills into [target]'s [parse_zone(target_zone)]!</span>")
return ..(default_display_results = FALSE)
return ..()
+3 -2
View File
@@ -8,6 +8,7 @@
name = "reshape face"
implements = list(TOOL_SCALPEL = 100, /obj/item/kitchen/knife = 50, TOOL_WIRECUTTER = 35)
time = 64
experience_given = 5
/datum/surgery_step/reshape_face/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
user.visible_message("<span class='notice'>[user] begins to alter [target]'s appearance.</span>", "<span class='notice'>You begin to alter [target]'s appearance...</span>")
@@ -15,7 +16,7 @@
"<span class='notice'>[user] begins to alter [target]'s appearance.</span>",
"<span class='notice'>[user] begins to make an incision in [target]'s face.</span>")
/datum/surgery_step/reshape_face/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
/datum/surgery_step/reshape_face/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
if(HAS_TRAIT_FROM(target, TRAIT_DISFIGURED, TRAIT_GENERIC))
REMOVE_TRAIT(target, TRAIT_DISFIGURED, TRAIT_GENERIC)
display_results(user, target, "<span class='notice'>You successfully restore [target]'s appearance.</span>",
@@ -42,7 +43,7 @@
if(ishuman(target))
var/mob/living/carbon/human/H = target
H.sec_hud_set_ID()
return ..(default_display_results = FALSE)
return ..()
/datum/surgery_step/reshape_face/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='warning'>You screw up, leaving [target]'s appearance disfigured!</span>",
@@ -19,6 +19,7 @@
name = "add prosthetic"
implements = list(/obj/item/bodypart = 100, /obj/item/organ_storage = 100, /obj/item/twohanded/required/chainsaw = 100, /obj/item/melee/synthetic_arm_blade = 100)
time = 32
experience_given = 5 //won't get full XP if rejected
var/organ_rejection_dam = 0
/datum/surgery_step/add_prosthetic/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
@@ -62,8 +63,8 @@
to_chat(user, "<span class='warning'>[tool] must be installed onto an arm.</span>")
return -1
/datum/surgery_step/add_prosthetic/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
. = ..(default_display_results = FALSE)
/datum/surgery_step/add_prosthetic/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
. = ..()
if(istype(tool, /obj/item/organ_storage))
tool.icon_state = initial(tool.icon_state)
tool.desc = initial(tool.desc)
@@ -74,6 +75,7 @@
L.attach_limb(target)
if(organ_rejection_dam)
target.adjustToxLoss(organ_rejection_dam)
experience_given -= (round(organ_rejection_dam/10))
display_results(user, target, "<span class='notice'>You succeed in replacing [target]'s [parse_zone(target_zone)].</span>",
"<span class='notice'>[user] successfully replaces [target]'s [parse_zone(target_zone)] with [tool]!</span>",
"<span class='notice'>[user] successfully replaces [target]'s [parse_zone(target_zone)]!</span>")
@@ -8,6 +8,7 @@
name = "remove embedded objects"
time = 32
accept_hand = 1
experience_given = 5
var/obj/item/bodypart/L = null
@@ -22,7 +23,7 @@
user.visible_message("<span class='notice'>[user] looks for [target]'s [parse_zone(user.zone_selected)].</span>", "<span class='notice'>You look for [target]'s [parse_zone(user.zone_selected)]...</span>")
/datum/surgery_step/remove_object/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results)
/datum/surgery_step/remove_object/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
if(L)
if(ishuman(target))
var/mob/living/carbon/human/H = target
@@ -45,4 +46,4 @@
else
to_chat(user, "<span class='warning'>You can't find [target]'s [parse_zone(user.zone_selected)], let alone any objects embedded in it!</span>")
return ..(default_display_results = FALSE)
return ..()
+3 -3
View File
@@ -9,6 +9,7 @@
var/list/chems_needed = list() //list of chems needed to complete the step. Even on success, the step will have no effect if there aren't the chems required in the mob.
var/require_all_chems = TRUE //any on the list or all on the list?
var/silicons_obey_prob = FALSE
/// The amount of a experience given for successfully completing the step.
var/experience_given = 1
/datum/surgery_step/proc/try_op(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, try_to_fail = FALSE)
@@ -99,8 +100,7 @@
if(failure(user, target, target_zone, tool, surgery, fail_prob))
advance = TRUE
if(chem_check_result)
if(.(user, target, target_zone, tool, surgery, try_to_fail)) //automatically re-attempt if failed for reason other than lack of required chemical
advance = TRUE
return .(user, target, target_zone, tool, surgery, try_to_fail) //automatically re-attempt if failed for reason other than lack of required chemical
if(advance && !repeatable)
surgery.status++
if(surgery.status > surgery.steps.len)
@@ -122,7 +122,7 @@
display_results(user, target, "<span class='notice'>You succeed.</span>",
"<span class='notice'>[user] succeeds!</span>",
"<span class='notice'>[user] finishes.</span>")
user?.mind.adjust_experience(/datum/skill/medical, experience_given)
user?.mind.adjust_experience(/datum/skill/medical, round(experience_given))
return TRUE
/datum/surgery_step/proc/failure(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, var/fail_prob = 0)
@@ -0,0 +1,6 @@
author: "Cobby Touches Medical Again"
delete-after: True
changes:
- balance: "Ups a variety of surgeries to give more XP"
- bugfix: "Surgeries not giving XP"
- bugfix: "Failing surgeries causing the rest of the surgery (specifically TW) to act up."
@@ -0,0 +1,7 @@
author: "ArcaneMusic"
delete-after: True
changes:
- rscadd: "Nanotrasen Plastic Labs has sat down and developed new designs exclusively using plastic for station use. Station productivity has dropped by 2.7 percent."
- rscadd: "Adds Plastic Potted Trees, Plastic Can holders, Plastic Bead Necklaces, and Plastic Boxes."
- tweak: "Space Carp have been noticed to actively lunge after and attack Plastic Can holders, as though they were Space Jellyfish, leading to incremental population decline."
- tweak: "Adds 6 packs of cola and beer to the Party Crate, increasing the price to 2500."
@@ -0,0 +1,4 @@
author: "actioninja"
delete-after: True
changes:
- rscadd: "tgui next hardware confguration and ntnet relay"
@@ -0,0 +1,4 @@
author: "Skoglol"
delete-after: True
changes:
- balance: "Metastation maint loot overhauled. Most static loot spawns have been replaced with random spawners instead."
@@ -0,0 +1,4 @@
author: "Skoglol"
delete-after: True
changes:
- rscadd: "Maint loot table has been adjusted, may now contain some special stuff. Get hunting!"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 70 KiB

+1
View File
@@ -1060,6 +1060,7 @@
#include "code\game\objects\items\storage\firstaid.dm"
#include "code\game\objects\items\storage\lockbox.dm"
#include "code\game\objects\items\storage\secure.dm"
#include "code\game\objects\items\storage\sixpack.dm"
#include "code\game\objects\items\storage\storage.dm"
#include "code\game\objects\items\storage\toolbox.dm"
#include "code\game\objects\items\storage\uplink_kits.dm"
@@ -0,0 +1,66 @@
import { useBackend } from '../backend';
import { Box, Button, ProgressBar, Section, AnimatedNumber } from '../components';
export const NtnetRelay = props => {
const { act, data } = useBackend(props);
const {
enabled,
dos_capacity,
dos_overload,
dos_crashed,
} = data;
return (
<Section
title="Network Buffer"
buttons={(
<Button
icon="power-off"
selected={enabled}
content={enabled ? 'ENABLED' : 'DISABLED'}
onClick={() => act('toggle')}
/>
)}>
{!dos_crashed ? (
<ProgressBar
value={dos_overload}
minValue={0}
maxValue={dos_capacity}>
<AnimatedNumber value={dos_overload} /> GQ
{' / '}
{dos_capacity} GQ
</ProgressBar>
) : (
<Box fontFamily="monospace">
<Box fontSize="20px">
NETWORK BUFFER OVERFLOW
</Box>
<Box fontSize="16px">
OVERLOAD RECOVERY MODE
</Box>
<Box>
This system is suffering temporary outage due to overflow
of traffic buffers. Until buffered traffic is processed,
all further requests will be dropped. Frequent occurences
of this error may indicate insufficient hardware capacity
of your network. Please contact your network planning
department for instructions on how to resolve this issue.
</Box>
<Box fontSize="20px" color="bad">
ADMINISTRATOR OVERRIDE
</Box>
<Box fontSize="16px" color="bad">
CAUTION - DATA LOSS MAY OCCUR
</Box>
<Button
icon="signal"
content="PURGE BUFFER"
mt={1}
color="bad"
onClick={() => act('restart')} />
</Box>
)}
</Section>
);
};
@@ -0,0 +1,90 @@
import { Fragment } from 'inferno';
import { useBackend } from '../backend';
import { Box, Button, Flex, Icon, LabeledList, NoticeBox, ProgressBar, Section, ColorBox } from '../components';
export const NtosConfiguration = props => {
const { act, data } = useBackend(props);
const {
power_usage,
battery_exists,
battery = {},
disk_size,
disk_used,
hardware = [],
} = data;
return (
<Fragment>
<Section
title="Power Supply"
buttons={(
<Box
inline
bold
mr={1}>
Power Draw: {power_usage}W
</Box>
)}>
<LabeledList>
<LabeledList.Item
label="Battery Status"
color={!battery_exists && 'average'}>
{battery_exists ? (
<ProgressBar
value={battery.charge}
minValue={0}
maxValue={battery.max}
ranges={{
good: [battery.max / 2, Infinity],
average: [battery.max / 4, battery.max / 2],
bad: [-Infinity, battery.max / 4],
}}>
{battery.charge} / {battery.max}
</ProgressBar>
) : 'Not Availible'}
</LabeledList.Item>
</LabeledList>
</Section>
<Section title="File System">
<ProgressBar
value={disk_used}
minValue={0}
maxValue={disk_size}
color="good">
{disk_used} GQ / {disk_size} GQ
</ProgressBar>
</Section>
<Section title="Hardware Components">
{hardware.map(component => (
<Section
key={component.name}
title={component.name}
level={2}
buttons={(
<Fragment>
{!component.critical && (
<Button.Checkbox
content="Enabled"
checked={component.enabled}
mr={1}
onClick={() => act('PC_toggle_component', {
name: component.name,
})}
/>
)}
<Box
inline
bold
mr={1}>
Power Usage: {component.powerusage}W
</Box>
</Fragment>
)}>
{component.desc}
</Section>
))}
</Section>
</Fragment>
);
};
File diff suppressed because one or more lines are too long
+24 -6
View File
@@ -52,7 +52,9 @@ import { NaniteCloudControl } from './interfaces/NaniteCloudControl';
import { NaniteProgramHub } from './interfaces/NaniteProgramHub';
import { NaniteProgrammer } from './interfaces/NaniteProgrammer';
import { NaniteRemote } from './interfaces/NaniteRemote';
import { NtnetRelay } from './interfaces/NtnetRelay';
import { NtosArcade } from './interfaces/NtosArcade';
import { NtosConfiguration } from './interfaces/NtosConfiguration';
import { NtosMain } from './interfaces/NtosMain';
import { NtosNetDownloader } from './interfaces/NtosNetDownloader';
import { NtosSupermatterMonitor } from './interfaces/NtosSupermatterMonitor';
@@ -309,6 +311,22 @@ const ROUTES = {
component: () => NaniteRemote,
scrollable: true,
},
ntnet_relay: {
component: () => NtnetRelay,
scrollable: false,
},
ntos_arcade: {
component: () => NtosArcade,
wrapper: () => NtosWrapper,
scrollable: false,
theme: 'ntos',
},
ntos_configuration: {
component: () => NtosConfiguration,
wrapper: () => NtosWrapper,
scrollable: true,
theme: 'ntos',
},
ntos_main: {
component: () => NtosMain,
wrapper: () => NtosWrapper,
@@ -321,18 +339,18 @@ const ROUTES = {
scrollable: true,
theme: 'ntos',
},
ntos_arcade: {
component: () => NtosArcade,
wrapper: () => NtosWrapper,
scrollable: false,
theme: 'ntos',
},
ntos_power_monitor: {
component: () => PowerMonitor,
wrapper: () => NtosWrapper,
scrollable: true,
theme: 'ntos',
},
ntos_station_alert: {
component: () => StationAlertConsole,
wrapper: () => NtosWrapper,
scrollable: true,
theme: 'ntos',
},
ntos_supermatter_monitor: {
component: () => NtosSupermatterMonitor,
wrapper: () => NtosWrapper,