Merge branch 'master' into Dispencer-UI-change
@@ -6034,12 +6034,15 @@
|
||||
/obj/effect/turf_decal/tile/red{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/item/flashlight/lamp,
|
||||
/obj/machinery/door/window/westright{
|
||||
name = "Security Checkpoint";
|
||||
req_access_txt = "1"
|
||||
},
|
||||
/obj/machinery/door/firedoor/border_only{
|
||||
dir = 8;
|
||||
name = "west facing firelock"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/security/checkpoint)
|
||||
"aoB" = (
|
||||
@@ -9593,12 +9596,15 @@
|
||||
/obj/effect/turf_decal/tile/red{
|
||||
dir = 1
|
||||
},
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/item/folder/red,
|
||||
/obj/machinery/door/window/westleft{
|
||||
name = "Security Checkpoint";
|
||||
req_access_txt = "1"
|
||||
},
|
||||
/obj/machinery/door/firedoor/border_only{
|
||||
dir = 8;
|
||||
name = "west facing firelock"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/security/checkpoint)
|
||||
"awu" = (
|
||||
@@ -23201,7 +23207,25 @@
|
||||
/area/hallway/primary/port/fore)
|
||||
"aYW" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/item/pen/blue,
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Customs - Fore";
|
||||
dir = 4
|
||||
},
|
||||
/obj/structure/window/reinforced/spawner/north,
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
id = "HoPFore";
|
||||
name = "HoP Fore Desk Shutters"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/orange/hidden,
|
||||
/obj/machinery/door/firedoor/border_only{
|
||||
dir = 1;
|
||||
name = "north facing firelock"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/security/checkpoint/customs)
|
||||
"aYX" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/door/window/northright{
|
||||
name = "Customs Desk";
|
||||
req_access_txt = "57"
|
||||
@@ -23210,16 +23234,9 @@
|
||||
id = "HoPFore";
|
||||
name = "HoP Fore Desk Shutters"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/security/checkpoint/customs)
|
||||
"aYX" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/item/flashlight/lamp,
|
||||
/obj/structure/window/reinforced/spawner/north,
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
id = "HoPFore";
|
||||
name = "HoP Fore Desk Shutters"
|
||||
/obj/machinery/door/firedoor/border_only{
|
||||
dir = 1;
|
||||
name = "north facing firelock"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/security/checkpoint/customs)
|
||||
@@ -25410,7 +25427,7 @@
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bdM" = (
|
||||
/turf/open/floor/plasteel,
|
||||
/area/quartermaster/office)
|
||||
@@ -25688,7 +25705,7 @@
|
||||
/area/security/courtroom)
|
||||
"bey" = (
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bez" = (
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
/turf/open/floor/plating,
|
||||
@@ -25764,7 +25781,7 @@
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
|
||||
/turf/open/floor/plating,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"beI" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
@@ -25778,7 +25795,7 @@
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/obj/machinery/atmospherics/pipe/simple/orange/hidden,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"beJ" = (
|
||||
/turf/open/floor/plasteel,
|
||||
/area/hallway/primary/central)
|
||||
@@ -25967,7 +25984,7 @@
|
||||
icon_state = "0-4"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bfi" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/cyan/hidden{
|
||||
dir = 10
|
||||
@@ -25985,13 +26002,13 @@
|
||||
icon_state = "0-4"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bfk" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "2-8"
|
||||
},
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bfl" = (
|
||||
/obj/effect/turf_decal/tile/green,
|
||||
/obj/effect/turf_decal/tile/green{
|
||||
@@ -26943,7 +26960,7 @@
|
||||
icon_state = "2-4"
|
||||
},
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bhm" = (
|
||||
/obj/effect/landmark/event_spawn,
|
||||
/turf/open/floor/engine,
|
||||
@@ -27313,7 +27330,7 @@
|
||||
icon_state = "4-8"
|
||||
},
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bia" = (
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 1
|
||||
@@ -27399,7 +27416,7 @@
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bik" = (
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
/obj/structure/cable,
|
||||
@@ -27415,7 +27432,7 @@
|
||||
"bil" = (
|
||||
/obj/structure/window/reinforced/spawner,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bim" = (
|
||||
/obj/effect/decal/cleanable/dirt,
|
||||
/turf/open/floor/plating,
|
||||
@@ -27513,7 +27530,7 @@
|
||||
dir = 5
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bix" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/effect/turf_decal/delivery,
|
||||
@@ -27576,7 +27593,7 @@
|
||||
dir = 10
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"biF" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "4-8"
|
||||
@@ -27615,7 +27632,7 @@
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"biI" = (
|
||||
/obj/machinery/light{
|
||||
dir = 4;
|
||||
@@ -28416,7 +28433,7 @@
|
||||
},
|
||||
/obj/machinery/photocopier,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bku" = (
|
||||
/obj/structure/closet,
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -28455,7 +28472,7 @@
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/supplymain/hidden,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bkA" = (
|
||||
/obj/machinery/light_switch{
|
||||
pixel_y = -24
|
||||
@@ -28566,7 +28583,7 @@
|
||||
pixel_y = 24
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bkK" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/structure/cable{
|
||||
@@ -28674,7 +28691,7 @@
|
||||
/area/maintenance/department/eva)
|
||||
"bkW" = (
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bkX" = (
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
@@ -28918,25 +28935,26 @@
|
||||
"blv" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"blw" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-4"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/orange/hidden,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"blx" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "0-8"
|
||||
},
|
||||
/obj/machinery/power/apc{
|
||||
areastring = "/area/science/server/compcore";
|
||||
dir = 1;
|
||||
name = "Computer Core APC";
|
||||
pixel_y = 24
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bly" = (
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
@@ -29001,7 +29019,7 @@
|
||||
light_color = "#e8eaff"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"blE" = (
|
||||
/obj/machinery/light{
|
||||
dir = 8
|
||||
@@ -29216,7 +29234,7 @@
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bma" = (
|
||||
/obj/structure/chair{
|
||||
dir = 8
|
||||
@@ -29522,7 +29540,7 @@
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bmG" = (
|
||||
/turf/open/floor/engine,
|
||||
/area/gateway)
|
||||
@@ -30215,7 +30233,7 @@
|
||||
pixel_y = 1
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bnT" = (
|
||||
/obj/effect/turf_decal/tile/green{
|
||||
dir = 8
|
||||
@@ -30228,7 +30246,7 @@
|
||||
dir = 9
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bnU" = (
|
||||
/obj/structure/rack,
|
||||
/obj/item/clothing/suit/space/fragile,
|
||||
@@ -30280,18 +30298,16 @@
|
||||
/area/engine/teg)
|
||||
"bnZ" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/item/pen/blue,
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Customs - Fore";
|
||||
dir = 4
|
||||
},
|
||||
/obj/item/flashlight/lamp,
|
||||
/obj/structure/window/reinforced/spawner/north,
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
id = "HoPFore";
|
||||
name = "HoP Fore Desk Shutters"
|
||||
},
|
||||
/obj/machinery/atmospherics/pipe/simple/orange/hidden,
|
||||
/obj/machinery/door/firedoor/border_only{
|
||||
dir = 1;
|
||||
name = "north facing firelock"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/security/checkpoint/customs)
|
||||
"boa" = (
|
||||
@@ -30314,24 +30330,22 @@
|
||||
/area/crew_quarters/heads/chief)
|
||||
"bod" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/effect/turf_decal/tile/yellow,
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
/obj/item/stack/packageWrap,
|
||||
/obj/item/hand_labeler,
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Customs - Aft";
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 1
|
||||
/obj/structure/window/reinforced/spawner,
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
id = "HoPAft";
|
||||
name = "HoP Aft Desk Shutters"
|
||||
},
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 8
|
||||
/obj/machinery/door/firedoor/border_only{
|
||||
name = "south facing firelock"
|
||||
},
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/window/southleft{
|
||||
name = "Primary Tool Storage Desk";
|
||||
req_access_txt = "11"
|
||||
},
|
||||
/obj/item/folder/yellow,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/storage/primary)
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/security/checkpoint/customs)
|
||||
"boe" = (
|
||||
/obj/machinery/door/airlock/vault{
|
||||
name = "Vault Door";
|
||||
@@ -30351,7 +30365,7 @@
|
||||
req_access = list(16)
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bog" = (
|
||||
/obj/machinery/atmospherics/pipe/simple/supply/visible,
|
||||
/obj/machinery/door/airlock/engineering/glass{
|
||||
@@ -30380,7 +30394,7 @@
|
||||
dir = 5
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"boj" = (
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
@@ -30451,7 +30465,7 @@
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"boq" = (
|
||||
/obj/effect/turf_decal/tile/green,
|
||||
/obj/effect/turf_decal/tile/green{
|
||||
@@ -30464,7 +30478,7 @@
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bor" = (
|
||||
/obj/structure/closet/crate,
|
||||
/obj/effect/spawner/lootdrop/maintenance,
|
||||
@@ -30503,7 +30517,7 @@
|
||||
dir = 8
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bou" = (
|
||||
/obj/effect/turf_decal/plaque{
|
||||
icon_state = "L2"
|
||||
@@ -30859,7 +30873,7 @@
|
||||
},
|
||||
/obj/item/book/manual/wiki/robotics_cyborgs,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bpi" = (
|
||||
/obj/machinery/firealarm{
|
||||
pixel_y = 26
|
||||
@@ -31095,7 +31109,7 @@
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bpL" = (
|
||||
/obj/effect/turf_decal/tile/green{
|
||||
dir = 8
|
||||
@@ -31105,7 +31119,7 @@
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bpM" = (
|
||||
/obj/effect/turf_decal/stripes/corner,
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -31116,7 +31130,7 @@
|
||||
},
|
||||
/obj/effect/turf_decal/tile/green,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bpO" = (
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 10
|
||||
@@ -31164,7 +31178,7 @@
|
||||
/obj/effect/turf_decal/tile/green,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bpW" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
@@ -31350,7 +31364,7 @@
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bqu" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/structure/cable{
|
||||
@@ -31546,7 +31560,7 @@
|
||||
},
|
||||
/obj/item/storage/box/disks,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bqP" = (
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Engine Room - Port Quarter";
|
||||
@@ -34882,7 +34896,7 @@
|
||||
},
|
||||
/obj/structure/window/reinforced/spawner,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"byf" = (
|
||||
/obj/machinery/door/airlock/engineering/glass{
|
||||
name = "Telecommunications Mainframe";
|
||||
@@ -35576,7 +35590,7 @@
|
||||
"bzN" = (
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
/turf/open/floor/plating,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bzO" = (
|
||||
/obj/machinery/conveyor_switch/oneway{
|
||||
id = "recycler";
|
||||
@@ -35605,7 +35619,7 @@
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/line,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bzS" = (
|
||||
/obj/structure/table,
|
||||
/obj/machinery/light/small{
|
||||
@@ -35924,7 +35938,7 @@
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/machinery/holopad,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bAz" = (
|
||||
/obj/structure/disposalpipe/junction/flip{
|
||||
dir = 1
|
||||
@@ -36037,7 +36051,7 @@
|
||||
},
|
||||
/obj/structure/window/reinforced/spawner,
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bAI" = (
|
||||
/obj/machinery/photocopier,
|
||||
/obj/machinery/requests_console{
|
||||
@@ -36545,7 +36559,7 @@
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/obj/machinery/rnd/server,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bBT" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/structure/cable{
|
||||
@@ -36623,10 +36637,10 @@
|
||||
name = "RD Server Lockup"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bCb" = (
|
||||
/turf/open/floor/circuit/green,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bCc" = (
|
||||
/obj/effect/turf_decal/delivery,
|
||||
/obj/structure/cable{
|
||||
@@ -36998,7 +37012,7 @@
|
||||
"bCW" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/open/floor/circuit/green,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bCX" = (
|
||||
/obj/machinery/rnd/production/circuit_imprinter/department/science,
|
||||
/obj/item/reagent_containers/glass/beaker/sulphuric,
|
||||
@@ -38773,7 +38787,7 @@
|
||||
"bGv" = (
|
||||
/obj/item/caution,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bGw" = (
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/airlock/public/glass{
|
||||
@@ -38897,7 +38911,7 @@
|
||||
/obj/item/circuitboard/machine/rdserver,
|
||||
/obj/item/disk/tech_disk,
|
||||
/turf/open/floor/circuit/green,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bGL" = (
|
||||
/obj/structure/chair{
|
||||
dir = 1
|
||||
@@ -38946,7 +38960,7 @@
|
||||
/obj/machinery/light,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/open/floor/circuit/green,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bGQ" = (
|
||||
/obj/structure/lattice/catwalk,
|
||||
/obj/structure/disposalpipe/segment{
|
||||
@@ -39522,7 +39536,7 @@
|
||||
network = list("minisat")
|
||||
},
|
||||
/turf/open/floor/circuit/green,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bIh" = (
|
||||
/obj/machinery/disposal/bin,
|
||||
/obj/effect/turf_decal/delivery/white,
|
||||
@@ -40062,7 +40076,7 @@
|
||||
icon_state = "1-4"
|
||||
},
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bJo" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/open/floor/plasteel,
|
||||
@@ -40233,7 +40247,7 @@
|
||||
icon_state = "0-4"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bJG" = (
|
||||
/obj/structure/extinguisher_cabinet{
|
||||
pixel_y = -32
|
||||
@@ -40574,7 +40588,7 @@
|
||||
icon_state = "1-8"
|
||||
},
|
||||
/turf/closed/wall/r_wall,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bKt" = (
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-4"
|
||||
@@ -42597,7 +42611,7 @@
|
||||
icon_state = "0-2"
|
||||
},
|
||||
/turf/open/floor/plating,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bOA" = (
|
||||
/obj/effect/turf_decal/tile/green{
|
||||
dir = 4
|
||||
@@ -42830,18 +42844,23 @@
|
||||
/area/science/xenobiology)
|
||||
"bOY" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/item/stack/packageWrap,
|
||||
/obj/item/hand_labeler,
|
||||
/obj/machinery/camera{
|
||||
c_tag = "Customs - Aft";
|
||||
dir = 4
|
||||
/obj/item/clipboard,
|
||||
/obj/item/stamp/denied{
|
||||
pixel_x = 4;
|
||||
pixel_y = 4
|
||||
},
|
||||
/obj/item/stamp,
|
||||
/obj/machinery/door/window/southright{
|
||||
name = "Customs Desk";
|
||||
req_access_txt = "57"
|
||||
},
|
||||
/obj/structure/window/reinforced/spawner,
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
id = "HoPAft";
|
||||
name = "HoP Aft Desk Shutters"
|
||||
},
|
||||
/obj/machinery/door/firedoor/border_only{
|
||||
name = "south facing firelock"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/security/checkpoint/customs)
|
||||
"bOZ" = (
|
||||
@@ -44439,7 +44458,7 @@
|
||||
},
|
||||
/obj/structure/cable,
|
||||
/turf/open/floor/plating,
|
||||
/area/science/server)
|
||||
/area/science/server/compcore)
|
||||
"bSp" = (
|
||||
/obj/machinery/conveyor_switch/oneway{
|
||||
id = "cargoload"
|
||||
@@ -46307,26 +46326,17 @@
|
||||
/area/engine/atmos)
|
||||
"bVY" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/effect/turf_decal/tile/yellow,
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 4
|
||||
/obj/item/flashlight/lamp,
|
||||
/obj/structure/window/reinforced/spawner,
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
id = "HoPAft";
|
||||
name = "HoP Aft Desk Shutters"
|
||||
},
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 1
|
||||
/obj/machinery/door/firedoor/border_only{
|
||||
name = "south facing firelock"
|
||||
},
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/window/southright{
|
||||
name = "Primary Tool Storage Desk";
|
||||
req_access_txt = "11"
|
||||
},
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/storage/primary)
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/security/checkpoint/customs)
|
||||
"bVZ" = (
|
||||
/obj/machinery/power/apc{
|
||||
name = "Cargo Bay APC";
|
||||
@@ -54609,26 +54619,26 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/science/robotics/lab)
|
||||
"cmT" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/effect/turf_decal/tile/red,
|
||||
/obj/effect/turf_decal/tile/red{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/tile/red{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/red{
|
||||
/obj/machinery/disposal/bin,
|
||||
/obj/structure/disposalpipe/trunk,
|
||||
/obj/effect/turf_decal/tile/yellow,
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 1
|
||||
},
|
||||
/obj/item/folder/red,
|
||||
/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
|
||||
/obj/machinery/door/window/northright{
|
||||
name = "Security Checkpoint";
|
||||
req_access_txt = "1"
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/white/full,
|
||||
/obj/structure/window/reinforced/spawner/north,
|
||||
/obj/machinery/door/firedoor/border_only{
|
||||
dir = 1;
|
||||
name = "north facing firelock"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/security/checkpoint/supply)
|
||||
/area/engine/workshop)
|
||||
"cmU" = (
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/structure/cable{
|
||||
@@ -57988,20 +57998,25 @@
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/atmos)
|
||||
"ctl" = (
|
||||
/obj/machinery/disposal/bin,
|
||||
/obj/structure/disposalpipe/trunk,
|
||||
/obj/effect/turf_decal/tile/yellow,
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 8
|
||||
},
|
||||
/obj/effect/turf_decal/stripes/white/full,
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/yellow,
|
||||
/obj/machinery/modular_computer/console/preset/engineering,
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/structure/window/reinforced/spawner/north,
|
||||
/obj/machinery/door/firedoor/border_only{
|
||||
dir = 1;
|
||||
name = "north facing firelock"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/workshop)
|
||||
"ctm" = (
|
||||
@@ -58202,21 +58217,17 @@
|
||||
/turf/open/floor/plating,
|
||||
/area/medical/virology)
|
||||
"ctE" = (
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 1
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/door/window/southleft{
|
||||
name = "Workshop Desk";
|
||||
req_access_txt = "11"
|
||||
},
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 8
|
||||
/obj/item/paper_bin,
|
||||
/obj/item/pen,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/obj/machinery/door/firedoor/border_only{
|
||||
name = "south facing firelock"
|
||||
},
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/yellow,
|
||||
/obj/machinery/modular_computer/console/preset/engineering,
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/structure/window/reinforced/spawner/north,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/workshop)
|
||||
"ctF" = (
|
||||
@@ -59567,34 +59578,38 @@
|
||||
/area/science/xenobiology)
|
||||
"cvZ" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/item/clipboard,
|
||||
/obj/item/stamp/denied{
|
||||
pixel_x = 4;
|
||||
pixel_y = 4
|
||||
},
|
||||
/obj/item/stamp,
|
||||
/obj/machinery/door/window/southright{
|
||||
name = "Customs Desk";
|
||||
req_access_txt = "57"
|
||||
name = "Workshop Desk";
|
||||
req_access_txt = "11"
|
||||
},
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
id = "HoPAft";
|
||||
name = "HoP Aft Desk Shutters"
|
||||
/obj/item/folder/yellow,
|
||||
/obj/machinery/door/firedoor/border_only{
|
||||
name = "south facing firelock"
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/security/checkpoint/customs)
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/workshop)
|
||||
"cwa" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/item/flashlight/lamp,
|
||||
/obj/structure/window/reinforced/spawner,
|
||||
/obj/machinery/door/poddoor/shutters/preopen{
|
||||
id = "HoPAft";
|
||||
name = "HoP Aft Desk Shutters"
|
||||
/obj/effect/turf_decal/tile/yellow,
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 4
|
||||
},
|
||||
/turf/open/floor/plasteel/dark,
|
||||
/area/security/checkpoint/customs)
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/door/window/southleft{
|
||||
name = "Primary Tool Storage Desk";
|
||||
req_access_txt = "11"
|
||||
},
|
||||
/obj/item/folder/yellow,
|
||||
/obj/machinery/door/firedoor/border_only{
|
||||
name = "south facing firelock"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/storage/primary)
|
||||
"cwb" = (
|
||||
/obj/structure/disposalpipe/segment{
|
||||
dir = 4
|
||||
@@ -60704,6 +60719,7 @@
|
||||
pixel_y = 24
|
||||
},
|
||||
/obj/machinery/power/apc{
|
||||
areastring = "/area/crew_quarters/toilet/restrooms";
|
||||
dir = 4;
|
||||
name = "Restrooms APC";
|
||||
pixel_x = 24
|
||||
@@ -68681,6 +68697,30 @@
|
||||
/obj/machinery/light,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/router/air)
|
||||
"cNm" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/effect/turf_decal/tile/yellow,
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 1
|
||||
},
|
||||
/obj/effect/turf_decal/tile/yellow{
|
||||
dir = 8
|
||||
},
|
||||
/obj/machinery/door/window/southright{
|
||||
name = "Primary Tool Storage Desk";
|
||||
req_access_txt = "11"
|
||||
},
|
||||
/obj/structure/cable{
|
||||
icon_state = "1-2"
|
||||
},
|
||||
/obj/machinery/door/firedoor/border_only{
|
||||
name = "south facing firelock"
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/storage/primary)
|
||||
"cNn" = (
|
||||
/obj/machinery/conveyor/auto{
|
||||
dir = 8;
|
||||
@@ -68693,26 +68733,28 @@
|
||||
/area/engine/workshop)
|
||||
"cNp" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/window/southleft{
|
||||
name = "Workshop Desk";
|
||||
req_access_txt = "11"
|
||||
/obj/effect/turf_decal/tile/red,
|
||||
/obj/effect/turf_decal/tile/red{
|
||||
dir = 8
|
||||
},
|
||||
/obj/item/paper_bin,
|
||||
/obj/item/pen,
|
||||
/obj/structure/disposalpipe/segment,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/workshop)
|
||||
"cNq" = (
|
||||
/obj/structure/table/reinforced,
|
||||
/obj/machinery/door/firedoor,
|
||||
/obj/machinery/door/window/southright{
|
||||
name = "Workshop Desk";
|
||||
req_access_txt = "11"
|
||||
/obj/effect/turf_decal/tile/red{
|
||||
dir = 4
|
||||
},
|
||||
/obj/effect/turf_decal/tile/red{
|
||||
dir = 1
|
||||
},
|
||||
/obj/item/folder/red,
|
||||
/obj/machinery/atmospherics/pipe/simple/cyan/hidden,
|
||||
/obj/machinery/door/window/northright{
|
||||
name = "Security Checkpoint";
|
||||
req_access_txt = "1"
|
||||
},
|
||||
/obj/machinery/door/firedoor/border_only{
|
||||
dir = 1;
|
||||
name = "north facing firelock"
|
||||
},
|
||||
/obj/item/folder/yellow,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/engine/workshop)
|
||||
/area/security/checkpoint/supply)
|
||||
"cNr" = (
|
||||
/obj/effect/spawner/structure/window/reinforced,
|
||||
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
|
||||
@@ -94872,11 +94914,11 @@ aUV
|
||||
aYB
|
||||
bbg
|
||||
bcH
|
||||
bnZ
|
||||
aYW
|
||||
bqi
|
||||
bIl
|
||||
bcJ
|
||||
bOY
|
||||
bod
|
||||
bdr
|
||||
beJ
|
||||
beJ
|
||||
@@ -95129,11 +95171,11 @@ bcN
|
||||
aYJ
|
||||
aNL
|
||||
aVJ
|
||||
aYW
|
||||
aYX
|
||||
baF
|
||||
bIr
|
||||
bcx
|
||||
cvZ
|
||||
bOY
|
||||
bdr
|
||||
beJ
|
||||
beT
|
||||
@@ -95386,11 +95428,11 @@ bcQ
|
||||
aUC
|
||||
aNL
|
||||
aVJ
|
||||
aYX
|
||||
bnZ
|
||||
baD
|
||||
bIV
|
||||
bKg
|
||||
cwa
|
||||
bVY
|
||||
bdr
|
||||
beJ
|
||||
bfd
|
||||
@@ -107000,7 +107042,7 @@ cvb
|
||||
cvd
|
||||
cvd
|
||||
cNa
|
||||
cNp
|
||||
ctE
|
||||
ber
|
||||
cIQ
|
||||
cgB
|
||||
@@ -107257,7 +107299,7 @@ cuV
|
||||
cyv
|
||||
cuV
|
||||
cNb
|
||||
cNq
|
||||
cvZ
|
||||
beW
|
||||
cIM
|
||||
cgB
|
||||
@@ -108022,7 +108064,7 @@ cqs
|
||||
cqG
|
||||
crt
|
||||
cdm
|
||||
ctl
|
||||
cmT
|
||||
cuL
|
||||
cvd
|
||||
cAp
|
||||
@@ -108279,7 +108321,7 @@ bxz
|
||||
bwP
|
||||
cBn
|
||||
cBH
|
||||
ctE
|
||||
ctl
|
||||
cuM
|
||||
cvg
|
||||
cBa
|
||||
@@ -111626,7 +111668,7 @@ ciL
|
||||
cLr
|
||||
cwQ
|
||||
bPx
|
||||
bod
|
||||
cwa
|
||||
beW
|
||||
bXX
|
||||
cIM
|
||||
@@ -111883,7 +111925,7 @@ con
|
||||
coo
|
||||
cwR
|
||||
bPy
|
||||
bVY
|
||||
cNm
|
||||
bWn
|
||||
bYO
|
||||
cJc
|
||||
@@ -117286,7 +117328,7 @@ bdM
|
||||
cNA
|
||||
bhb
|
||||
ciE
|
||||
cmT
|
||||
cNp
|
||||
cnB
|
||||
csh
|
||||
cHV
|
||||
|
||||
@@ -55,6 +55,9 @@
|
||||
//donator items
|
||||
#define LOADOUT_CATEGORY_DONATOR "Donator"
|
||||
|
||||
//unlockable items
|
||||
#define LOADOUT_CATEGORY_UNLOCKABLE "Unlockable"
|
||||
|
||||
//how many prosthetics can we have
|
||||
#define MAXIMUM_LOADOUT_PROSTHETICS 2
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#define SPECIES_ANDROID "android"
|
||||
#define SPECIES_ANGEL "angel"
|
||||
#define SPECIES_MAMMAL "mammal"
|
||||
#define SPECIES_MAMMAL_SYNTHETIC "mammal_synthetic"
|
||||
#define SPECIES_ARACHNID "arachnid"
|
||||
#define SPECIES_INSECT "insect"
|
||||
#define SPECIES_DULLAHAN "dullahan"
|
||||
|
||||
@@ -86,10 +86,6 @@
|
||||
if (CONFIG_GET(flag/log_attack))
|
||||
WRITE_LOG(GLOB.world_attack_log, "ATTACK: [text]")
|
||||
|
||||
/proc/log_wounded(text)
|
||||
if (CONFIG_GET(flag/log_attack))
|
||||
WRITE_LOG(GLOB.world_attack_log, "WOUND: [text]")
|
||||
|
||||
/proc/log_manifest(ckey, datum/mind/mind,mob/body, latejoin = FALSE)
|
||||
if (CONFIG_GET(flag/log_manifest))
|
||||
WRITE_LOG(GLOB.world_manifest_log, "[ckey] \\ [body.real_name] \\ [mind.assigned_role] \\ [mind.special_role ? mind.special_role : "NONE"] \\ [latejoin ? "LATEJOIN":"ROUNDSTART"]")
|
||||
|
||||
@@ -9,5 +9,6 @@ GLOBAL_LIST_INIT(loadout_categories, list(
|
||||
LOADOUT_CATEGORY_SHOES = LOADOUT_SUBCATEGORIES_NONE,
|
||||
LOADOUT_CATEGORY_GLOVES = LOADOUT_SUBCATEGORIES_NONE,
|
||||
LOADOUT_CATEGORY_GLASSES = LOADOUT_SUBCATEGORIES_NONE,
|
||||
LOADOUT_CATEGORY_DONATOR = LOADOUT_SUBCATEGORIES_NONE
|
||||
LOADOUT_CATEGORY_DONATOR = LOADOUT_SUBCATEGORIES_NONE,
|
||||
LOADOUT_CATEGORY_UNLOCKABLE = LOADOUT_SUBCATEGORIES_NONE
|
||||
))
|
||||
|
||||
@@ -698,6 +698,8 @@ SUBSYSTEM_DEF(job)
|
||||
if(polychromic && istype(polychromic))
|
||||
var/list/polychromic_entry = polychromic.colors_by_atom[I]
|
||||
if(polychromic_entry)
|
||||
if(polychromic.suits_with_helmet_typecache[I.type]) //is this one of those toggleable hood/helmet things?
|
||||
polychromic.connect_helmet(I,i[LOADOUT_COLOR])
|
||||
polychromic.colors_by_atom[I] = i[LOADOUT_COLOR]
|
||||
I.update_icon()
|
||||
else
|
||||
|
||||
@@ -72,6 +72,52 @@
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_MELEE
|
||||
|
||||
/datum/crafting_recipe/bokken
|
||||
name = "Training Bokken"
|
||||
result = /obj/item/melee/bokken
|
||||
tools = list(TOOL_SCREWDRIVER)
|
||||
reqs = list(/obj/item/bokken_blade = 1,
|
||||
/obj/item/bokken_hilt = 1,
|
||||
/obj/item/stack/sheet/cloth = 2,
|
||||
/obj/item/stack/sheet/leather = 1)
|
||||
time = 60
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_MELEE
|
||||
|
||||
/datum/crafting_recipe/bokken_steelwood
|
||||
name = "Training Bokken"
|
||||
result = /obj/item/melee/bokken/steelwood
|
||||
tools = list(TOOL_SCREWDRIVER)
|
||||
reqs = list(/obj/item/bokken_steelblade = 1,
|
||||
/obj/item/bokken_hilt = 1,
|
||||
/obj/item/stack/sheet/cloth = 2,
|
||||
/obj/item/stack/sheet/leather = 1)
|
||||
time = 60
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_MELEE
|
||||
|
||||
/datum/crafting_recipe/wakibokken
|
||||
name = "Training Wakizashi Bokken"
|
||||
result = /obj/item/melee/bokken/waki
|
||||
tools = list(TOOL_SCREWDRIVER)
|
||||
reqs = list(/obj/item/wakibokken_blade = 1,
|
||||
/obj/item/bokken_hilt = 1,
|
||||
/obj/item/stack/sheet/cloth = 1)
|
||||
time = 40
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_MELEE
|
||||
|
||||
/datum/crafting_recipe/wakibokken_steelwood
|
||||
name = "Training Wakizashi Steelwood Bokken"
|
||||
result = /obj/item/melee/bokken/waki/steelwood
|
||||
tools = list(TOOL_SCREWDRIVER)
|
||||
reqs = list(/obj/item/wakibokken_steelblade = 1,
|
||||
/obj/item/bokken_hilt = 1,
|
||||
/obj/item/stack/sheet/cloth = 1)
|
||||
time = 40
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_MELEE
|
||||
|
||||
/datum/crafting_recipe/bola
|
||||
name = "Bola"
|
||||
result = /obj/item/restraints/legcuffs/bola
|
||||
@@ -434,3 +480,51 @@
|
||||
time = 20
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_PARTS
|
||||
|
||||
// BOKKEN CRAFTING
|
||||
|
||||
/datum/crafting_recipe/bokken_blade
|
||||
name = "Training Bokken Blade"
|
||||
result = /obj/item/bokken_blade
|
||||
tools = list(/obj/item/hatchet)
|
||||
reqs = list(/obj/item/stack/sheet/mineral/wood = 5)
|
||||
time = 20
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_PARTS
|
||||
|
||||
/datum/crafting_recipe/wakibokken_blade
|
||||
name = "Training Wakizashi Bokken Blade"
|
||||
result = /obj/item/wakibokken_blade
|
||||
tools = list(/obj/item/hatchet)
|
||||
reqs = list(/obj/item/stack/sheet/mineral/wood = 2)
|
||||
time = 20
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_PARTS
|
||||
|
||||
/datum/crafting_recipe/bokken_steelblade
|
||||
name = "Training Ironwood Bokken Blade"
|
||||
result = /obj/item/bokken_steelblade
|
||||
tools = list(/obj/item/hatchet, TOOL_WELDER)
|
||||
reqs = list(/obj/item/grown/log/steel = 2)
|
||||
time = 20
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_PARTS
|
||||
|
||||
/datum/crafting_recipe/wakibokken_blade
|
||||
name = "Training Wakizashi Ironwood Bokken Blade"
|
||||
result = /obj/item/wakibokken_steelblade
|
||||
tools = list(/obj/item/hatchet, TOOL_WELDER)
|
||||
reqs = list(/obj/item/grown/log/steel = 1)
|
||||
time = 20
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_PARTS
|
||||
|
||||
/datum/crafting_recipe/bokken_hilt
|
||||
name = "Training Bokken hilt"
|
||||
result = /obj/item/bokken_hilt
|
||||
tools = list(/obj/item/hatchet)
|
||||
reqs = list(/obj/item/stack/sheet/mineral/wood = 5,
|
||||
/obj/item/stack/sheet/cloth = 2)
|
||||
time = 20
|
||||
category = CAT_WEAPONRY
|
||||
subcategory = CAT_PARTS
|
||||
|
||||
@@ -165,6 +165,15 @@
|
||||
/datum/element/polychromic/proc/on_examine(atom/source, mob/user, list/examine_list)
|
||||
examine_list += "<span class='notice'>Alt-click to recolor it.</span>"
|
||||
|
||||
/datum/element/polychromic/proc/connect_helmet(atom/I, var/applycolor)
|
||||
if(isitem(I))
|
||||
if(istype(I,/obj/item/clothing/suit/hooded))
|
||||
var/obj/item/clothing/suit/hooded/Isuit = I
|
||||
colors_by_atom[Isuit.hood] = applycolor
|
||||
else if(istype(I,/obj/item/clothing/suit/space/hardsuit))
|
||||
var/obj/item/clothing/suit/space/hardsuit/Isuit = I
|
||||
colors_by_atom[Isuit.helmet] = applycolor
|
||||
|
||||
/datum/element/polychromic/proc/register_helmet(atom/source, obj/item/clothing/head/H)
|
||||
if(!isitem(H)) //backup in case if it messes up somehow
|
||||
if(istype(source,/obj/item/clothing/suit/hooded)) //so how come it be like this, where toggleable headslots are named separately (helmet/hood) anyways?
|
||||
|
||||
@@ -1123,6 +1123,10 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
name = "Research Division Server Room"
|
||||
icon_state = "server"
|
||||
|
||||
/area/science/server/compcore
|
||||
name = "Computer Core"
|
||||
icon_state = "server"
|
||||
|
||||
/area/science/explab
|
||||
name = "Experimentation Lab"
|
||||
icon_state = "toxmisc"
|
||||
|
||||
@@ -16,9 +16,9 @@ GLOBAL_LIST_EMPTY(power_sinks)
|
||||
throw_speed = 1
|
||||
throw_range = 2
|
||||
custom_materials = list(/datum/material/iron=750)
|
||||
var/drain_rate = 1600000 // amount of power to drain per tick
|
||||
var/drain_rate = 2000000 // amount of power to drain per tick. Currently 2MJ.
|
||||
var/power_drained = 0 // has drained this much power
|
||||
var/max_power = 1e10 // maximum power that can be drained before exploding
|
||||
var/max_power = 2000000000 // maximum power that can be drained before exploding. Currently 2GJ. About 17 minutes to explode at the max rate.
|
||||
var/mode = 0 // 0 = off, 1=clamped (off), 2=operating
|
||||
var/admins_warned = FALSE // stop spam, only warn the admins once that we are about to boom
|
||||
|
||||
@@ -155,5 +155,5 @@ GLOBAL_LIST_EMPTY(power_sinks)
|
||||
|
||||
if(power_drained >= max_power)
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
explosion(src.loc, 4,8,16,32)
|
||||
explosion(src.loc, 3,7,14,28)
|
||||
qdel(src)
|
||||
|
||||
@@ -24,13 +24,17 @@
|
||||
create_reagents(mopcap, NONE, NO_REAGENTS_VALUE)
|
||||
|
||||
|
||||
/obj/item/mop/proc/clean(turf/A)
|
||||
/obj/item/mop/proc/clean(turf/A, mob/user)
|
||||
if(reagents.has_reagent(/datum/reagent/water, 1) || reagents.has_reagent(/datum/reagent/water/holywater, 1) || reagents.has_reagent(/datum/reagent/consumable/ethanol/vodka, 1) || reagents.has_reagent(/datum/reagent/space_cleaner, 1))
|
||||
SEND_SIGNAL(A, COMSIG_COMPONENT_CLEAN_ACT, CLEAN_MEDIUM)
|
||||
A.clean_blood()
|
||||
var/cleaned_something = FALSE
|
||||
for(var/obj/effect/O in A)
|
||||
if(is_cleanable(O))
|
||||
cleaned_something = TRUE
|
||||
qdel(O)
|
||||
if(cleaned_something && user && user.client)
|
||||
user.client.increment_progress("janitor", 1)
|
||||
reagents.reaction(A, TOUCH, 10) //Needed for proper floor wetting.
|
||||
reagents.remove_any(1) //reaction() doesn't use up the reagents
|
||||
|
||||
@@ -59,7 +63,7 @@
|
||||
if(!L.UseStaminaBuffer(stamusage, warn = TRUE))
|
||||
return
|
||||
user.visible_message("[user] cleans \the [T] with [src].", "<span class='notice'>You clean \the [T] with [src].</span>")
|
||||
clean(T)
|
||||
clean(T, user)
|
||||
user.DelayNextAction(CLICK_CD_MELEE)
|
||||
user.do_attack_animation(T, used_item = src)
|
||||
playsound(T, "slosh", 50, 1)
|
||||
|
||||
@@ -253,7 +253,6 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \
|
||||
new/datum/stack_recipe("painting frame", /obj/item/wallframe/painting, 1, time = 10),\
|
||||
new/datum/stack_recipe("wooden buckler", /obj/item/shield/riot/buckler, 20, time = 40), \
|
||||
new/datum/stack_recipe("baseball bat", /obj/item/melee/baseball_bat, 5, time = 15),\
|
||||
new/datum/stack_recipe("training bokken", /obj/item/melee/bokken, 10, time = 15),\
|
||||
null, \
|
||||
new/datum/stack_recipe("wooden chair", /obj/structure/chair/wood/, 3, time = 10, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
new/datum/stack_recipe("winged wooden chair", /obj/structure/chair/wood/wings, 3, time = 10, one_per_turf = TRUE, on_floor = TRUE), \
|
||||
|
||||
@@ -802,7 +802,8 @@
|
||||
. += "<span class='notice'>Alt-click it to quickly draw the blade.</span>"
|
||||
|
||||
/obj/item/storage/belt/sabre/PopulateContents()
|
||||
new starting_sword(src)
|
||||
if(starting_sword)
|
||||
new starting_sword(src)
|
||||
|
||||
/obj/item/storage/belt/sabre/rapier
|
||||
name = "rapier sheath"
|
||||
@@ -864,6 +865,7 @@
|
||||
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
|
||||
STR.max_items = 2
|
||||
STR.max_w_class = WEIGHT_CLASS_BULKY + WEIGHT_CLASS_NORMAL //katana and waki.
|
||||
STR.max_combined_w_class = 7
|
||||
|
||||
/obj/item/melee/smith/twohand/katana/on_exit_storage(datum/component/storage/S)
|
||||
var/obj/item/storage/belt/sabre/twin/B = S.parent
|
||||
|
||||
@@ -296,8 +296,8 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
|
||||
slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
force = 7 //how much harm mode damage we do
|
||||
var/stamina_damage_increment = 4 //how much extra damage do we do when in non-harm mode
|
||||
force = 10 //how much harm mode damage we do
|
||||
var/stamina_damage_increment = 5 //how much extra damage do we do when in non-harm mode
|
||||
throwforce = 10
|
||||
damtype = STAMINA
|
||||
attack_verb = list("whacked", "smacked", "struck")
|
||||
@@ -310,11 +310,13 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
var/quick_parry = FALSE // false = default parry, true = really small parry window
|
||||
item_flags = ITEM_CAN_PARRY
|
||||
block_parry_data = /datum/block_parry_data/bokken
|
||||
var/default_parry_data = /datum/block_parry_data/bokken
|
||||
var/quick_parry_data = /datum/block_parry_data/bokken/quick_parry
|
||||
bare_wound_bonus = 0
|
||||
wound_bonus = 0
|
||||
|
||||
/datum/block_parry_data/bokken // fucked up parry data, emphasizing quicker, shorter parries
|
||||
parry_stamina_cost = 8 // be wise about when you parry, though, else you won't be able to fight enough to make it count
|
||||
parry_stamina_cost = 10 // be wise about when you parry, though, else you won't be able to fight enough to make it count
|
||||
parry_time_windup = 0
|
||||
parry_time_active = 10 // small parry window
|
||||
parry_time_spindown = 0
|
||||
@@ -330,11 +332,11 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
)
|
||||
parry_failed_stagger_duration = 3 SECONDS
|
||||
parry_data = list(
|
||||
PARRY_COUNTERATTACK_MELEE_ATTACK_CHAIN = 2.5, // 7*2.5 = 17.5, 8*2.5 = 20, 9*2.5 = 22.5, 10*2.5 = 25
|
||||
PARRY_COUNTERATTACK_MELEE_ATTACK_CHAIN = 2.5, // 10*2.5 = 25, 11*2.5 = 27.5, 12*2.5 = 30, 13*2.5 = 32.5
|
||||
)
|
||||
|
||||
/datum/block_parry_data/bokken/quick_parry // emphasizing REALLY SHORT PARRIES
|
||||
parry_stamina_cost = 6 // still more costly than most parries, but less than a full bokken parry
|
||||
parry_stamina_cost = 8 // still more costly than most parries, but less than a full bokken parry
|
||||
parry_time_active = 5 // REALLY small parry window
|
||||
parry_time_perfect = 2.5 // however...
|
||||
parry_time_perfect_leeway = 2 // the entire time, the parry is perfect
|
||||
@@ -371,9 +373,9 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
. = ..()
|
||||
quick_parry = !quick_parry
|
||||
if(quick_parry)
|
||||
block_parry_data = /datum/block_parry_data/bokken/quick_parry
|
||||
block_parry_data = quick_parry_data
|
||||
else
|
||||
block_parry_data = /datum/block_parry_data/bokken
|
||||
block_parry_data = default_parry_data
|
||||
to_chat(user, "<span class='notice'>[src] is now [quick_parry ? "emphasizing shorter parries, forcing you to riposte or be staggered" : "emphasizing longer parries, with a shorter window to riposte but more forgiving parries"].</span>")
|
||||
|
||||
/obj/item/melee/bokken/attackby(obj/item/I, mob/living/user, params)
|
||||
@@ -410,23 +412,76 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
if(burnt)
|
||||
. += " Burned into the \"blade\" is [burned_in]."
|
||||
|
||||
/obj/item/melee/bokken/steelwood
|
||||
name = "steelwood bokken"
|
||||
desc = "A misnomer of sorts, this is effectively a blunt katana made from steelwood, a dense organic wood derived from steelcaps. Why steelwood? Druids can use it. Duh."
|
||||
icon_state = "bokken_steel"
|
||||
item_state = "bokken_steel"
|
||||
force = 12
|
||||
stamina_damage_increment = 3
|
||||
|
||||
/obj/item/melee/bokken/waki
|
||||
name = "wakizashi bokken"
|
||||
desc = "A space-Japanese training sword made of wood and shaped like a wakizashi."
|
||||
icon_state = "wakibokken"
|
||||
item_state = "wakibokken"
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
force = 6
|
||||
stamina_damage_increment = 4
|
||||
block_parry_data = /datum/block_parry_data/bokken/waki
|
||||
default_parry_data = /datum/block_parry_data/bokken/waki
|
||||
quick_parry_data = /datum/block_parry_data/bokken/waki/quick_parry
|
||||
|
||||
/datum/block_parry_data/bokken/waki // weaker parries than the bigger variant, but cheaper and faster recovery, like quick parry
|
||||
parry_stamina_cost = 4
|
||||
parry_time_windup = 0
|
||||
parry_time_active = 6
|
||||
parry_time_spindown = 0
|
||||
parry_time_perfect = 1.5
|
||||
parry_time_perfect_leeway = 1
|
||||
parry_imperfect_falloff_percent = 7.5
|
||||
parry_efficiency_to_counterattack = 120
|
||||
parry_efficiency_considered_successful = 65
|
||||
parry_efficiency_perfect = 120
|
||||
parry_efficiency_perfect_override = list(
|
||||
TEXT_ATTACK_TYPE_PROJECTILE = 30,
|
||||
)
|
||||
parry_failed_stagger_duration = 2 SECONDS
|
||||
parry_data = list(
|
||||
PARRY_COUNTERATTACK_MELEE_ATTACK_CHAIN = 1.5, // 6*1.5 = 9, 7*1.5 = 10.5, 8*1.5 = 12, 9*1.5 = 13.5
|
||||
)
|
||||
|
||||
/datum/block_parry_data/bokken/waki/quick_parry //For the parry spammer in you
|
||||
parry_stamina_cost = 2 // Slam that parry button
|
||||
parry_time_active = 2.5
|
||||
parry_time_perfect = 1
|
||||
parry_time_perfect_leeway = 1
|
||||
parry_failed_stagger_duration = 1 SECONDS
|
||||
parry_failed_clickcd_duration = 1 SECONDS
|
||||
|
||||
/datum/block_parry_data/bokken/waki/quick_parry/proj
|
||||
parry_efficiency_perfect_override = list()
|
||||
|
||||
/obj/item/melee/bokken/waki/steelwood
|
||||
name = "wakizashi steelwood bokken"
|
||||
desc = "A misnomer of sorts, this is effectively a blunt wakizashi made from steelwood, a dense organic wood derived from steelcaps. Why steelwood? Druids can use it. Duh."
|
||||
icon_state = "wakibokken_steel"
|
||||
item_state = "wakibokken_steel"
|
||||
force = 8
|
||||
stamina_damage_increment = 2
|
||||
|
||||
/obj/item/melee/bokken/debug
|
||||
name = "funny debug parrying stick"
|
||||
desc = "if you see this you've fucked up somewhere my good man"
|
||||
block_parry_data = /datum/block_parry_data/bokken/debug
|
||||
|
||||
/obj/item/melee/bokken/debug/AltClick(mob/user)
|
||||
quick_parry = !quick_parry
|
||||
if(quick_parry)
|
||||
block_parry_data = /datum/block_parry_data/bokken/quick_parry/debug
|
||||
else
|
||||
block_parry_data = /datum/block_parry_data/bokken/debug
|
||||
to_chat(user, "<span class='notice'>[src] is now [quick_parry ? "emphasizing shorter parries, forcing you to riposte or be staggered" : "emphasizing longer parries, with a shorter window to riposte but more forgiving parries"].</span>")
|
||||
default_parry_data = /datum/block_parry_data/bokken/debug
|
||||
quick_parry_data = /datum/block_parry_data/bokken/quick_parry/debug
|
||||
|
||||
/datum/block_parry_data/bokken/debug
|
||||
parry_efficiency_perfect_override = list()
|
||||
parry_data = list(
|
||||
PARRY_COUNTERATTACK_MELEE_ATTACK_CHAIN = 2.5, // 7*2.5 = 17.5, 8*2.5 = 20, 9*2.5 = 22.5, 10*2.5 = 25
|
||||
PARRY_COUNTERATTACK_MELEE_ATTACK_CHAIN = 2.5, // 10*2.5 = 25, 11*2.5 = 27.5, 12*2.5 = 30, 13*2.5 = 32.5
|
||||
PARRY_DISARM_ATTACKER = TRUE,
|
||||
PARRY_KNOCKDOWN_ATTACKER = 10,
|
||||
PARRY_STAGGER_ATTACKER = 10,
|
||||
@@ -436,13 +491,63 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
/datum/block_parry_data/bokken/quick_parry/debug
|
||||
parry_efficiency_perfect_override = list()
|
||||
parry_data = list(
|
||||
PARRY_COUNTERATTACK_MELEE_ATTACK_CHAIN = 2.5, // 7*2.5 = 17.5, 8*2.5 = 20, 9*2.5 = 22.5, 10*2.5 = 25
|
||||
PARRY_COUNTERATTACK_MELEE_ATTACK_CHAIN = 2.5, // 10*2.5 = 25, 11*2.5 = 27.5, 12*2.5 = 30, 13*2.5 = 32.5
|
||||
PARRY_DISARM_ATTACKER = TRUE,
|
||||
PARRY_KNOCKDOWN_ATTACKER = 10,
|
||||
PARRY_STAGGER_ATTACKER = 10,
|
||||
PARRY_DAZE_ATTACKER = 10,
|
||||
)
|
||||
|
||||
/// BOKKEN CRAFTNG PIECES
|
||||
|
||||
/obj/item/bokken_blade
|
||||
name = "training bokken wooden blade"
|
||||
desc = "The blade piece of a bokken katana."
|
||||
icon = 'icons/obj/smith.dmi'
|
||||
icon_state = "bokken"
|
||||
item_state = "bone_dagger"
|
||||
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
|
||||
/obj/item/bokken_steelblade
|
||||
name = "training bokken steelwood blade"
|
||||
desc = "The blade piece of a steelwood bokken katana."
|
||||
icon = 'icons/obj/smith.dmi'
|
||||
icon_state = "bokken_steel"
|
||||
item_state = "switchblade_ext"
|
||||
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
|
||||
/obj/item/wakibokken_blade
|
||||
name = "training bokken wooden wakizashi blade"
|
||||
desc = "The blade piece of a bokken wakizashi."
|
||||
icon = 'icons/obj/smith.dmi'
|
||||
icon_state = "wakibokken"
|
||||
item_state = "bone_dagger"
|
||||
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
|
||||
/obj/item/wakibokken_steelblade
|
||||
name = "training bokken steelwood wakizashi blade"
|
||||
desc = "The blade piece of a steelwood bokken katana."
|
||||
icon = 'icons/obj/smith.dmi'
|
||||
icon_state = "wakibokken_steel"
|
||||
item_state = "switchblade_ext"
|
||||
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
|
||||
/obj/item/bokken_hilt
|
||||
name = "training bokken hilt"
|
||||
desc = "The hilt piece of a bokken. This hilt is appropriate for any potential blade length or material."
|
||||
icon = 'icons/obj/smith.dmi'
|
||||
icon_state = "bokken_hilt"
|
||||
item_state = "bone_dagger"
|
||||
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
|
||||
|
||||
/obj/item/wirerod
|
||||
name = "wired rod"
|
||||
|
||||
@@ -243,7 +243,7 @@ LINEN BINS
|
||||
|
||||
/obj/item/bedsheet/random/Initialize()
|
||||
..()
|
||||
var/type = pick(typesof(/obj/item/bedsheet) - list(/obj/item/bedsheet/random, /obj/item/bedsheet/chameleon))
|
||||
var/type = pick(typesof(/obj/item/bedsheet) - (list(/obj/item/bedsheet/random, /obj/item/bedsheet/chameleon) + typesof(/obj/item/bedsheet/unlockable)))
|
||||
new type(loc)
|
||||
return INITIALIZE_HINT_QDEL
|
||||
|
||||
@@ -257,9 +257,32 @@ LINEN BINS
|
||||
chameleon_action = new(src)
|
||||
chameleon_action.chameleon_type = /obj/item/bedsheet
|
||||
chameleon_action.chameleon_name = "Bedsheet"
|
||||
chameleon_action.chameleon_blacklist = typecacheof(list(/obj/item/bedsheet/chameleon, /obj/item/bedsheet/random), only_root_path = TRUE)
|
||||
chameleon_action.chameleon_blacklist = typecacheof(list(/obj/item/bedsheet/chameleon, /obj/item/bedsheet/random, /obj/item/bedsheet/unlockable), only_root_path = FALSE)
|
||||
chameleon_action.initialize_disguises()
|
||||
|
||||
//unlockable bedsheets
|
||||
/obj/item/bedsheet/unlockable
|
||||
name = "unlockable bedsheet"
|
||||
desc = "this shouldn't be here!"
|
||||
|
||||
//janitor: clean 100 messes with mop as janitor
|
||||
/obj/item/bedsheet/unlockable/janitor
|
||||
name = "janitor bedsheet"
|
||||
desc = "A white bedsheet, with a warning sign on the front."
|
||||
icon_state = "sheetjanitor"
|
||||
|
||||
//cook: use microwave 100 times properly (contents must make one good item) as cook
|
||||
/obj/item/bedsheet/unlockable/cook
|
||||
name = "cook bedsheet"
|
||||
desc = "A grey bedsheet, with a microwave on the front."
|
||||
icon_state = "sheetcook"
|
||||
|
||||
//miner: redeem 100,000 mining points
|
||||
/obj/item/bedsheet/unlockable/miner
|
||||
name = "miner bedsheet"
|
||||
desc = "A red and black bedsheet. It seems to be made with goliath hide."
|
||||
icon_state = "sheetminer"
|
||||
|
||||
//bedsheet bin
|
||||
/obj/structure/bedsheetbin
|
||||
name = "linen bin"
|
||||
|
||||
@@ -40,17 +40,18 @@
|
||||
var/rounded_length = round(length)
|
||||
var/new_size
|
||||
var/enlargement = FALSE
|
||||
var/max_D = CONFIG_GET(number/penis_max_inches_prefs)
|
||||
switch(rounded_length)
|
||||
if(0 to 6) //If modest size
|
||||
new_size = 1
|
||||
if(7 to 11) //If large
|
||||
new_size = 2
|
||||
if(12 to 20) //If massive
|
||||
if(12 to max_D) //If massive
|
||||
new_size = 3
|
||||
if(21 to 34) //If massive and due for large effects
|
||||
if(max_D + 1 to max_D+13) //If massive and due for large effects, modified in case some server owner running recent citcode decides to be insane with dick sizes in the config
|
||||
new_size = 3
|
||||
enlargement = TRUE
|
||||
if(35 to INFINITY) //If comical
|
||||
if(max_D+14 to INFINITY) //If comical
|
||||
new_size = 4 //no new sprites for anything larger yet
|
||||
enlargement = TRUE
|
||||
if(owner)
|
||||
|
||||
@@ -90,6 +90,18 @@
|
||||
crate_name = "medical hardsuit"
|
||||
crate_type = /obj/structure/closet/crate/secure/medical
|
||||
|
||||
/datum/supply_pack/medical/paramedicevasuit
|
||||
name = "Paramedic EVA Suit"
|
||||
desc = "Greytide pushing up daisies with the carp outside the station? Chemistry vented in a meth experiment gone wrong? Be the blue saviour this station desperately needs and get your Paramedical EVA suit today! Requires medical access to open."
|
||||
cost = 1975
|
||||
access = ACCESS_MEDICAL
|
||||
contains = list(/obj/item/tank/internals/emergency_oxygen,
|
||||
/obj/item/clothing/head/helmet/space/eva/paramedic,
|
||||
/obj/item/clothing/suit/space/eva/paramedic,
|
||||
/obj/item/clothing/mask/breath)
|
||||
crate_name = "paramedic EVA suit"
|
||||
crate_type = /obj/structure/closet/crate/secure/medical
|
||||
|
||||
/datum/supply_pack/medical/supplies
|
||||
name = "Medical Supplies Crate"
|
||||
desc = "Contains seven beakers, syringes, and bodybags. Three morphine bottles, four insulin pills. Two charcoal bottles, epinephrine bottles, antitoxin bottles, and large beakers. Finally, a single roll of medical gauze, as well as a bottle of stimulant pills for long, hard work days. German doctor not included."
|
||||
|
||||
@@ -1024,3 +1024,25 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
|
||||
verb_tabs |= verb_to_init.category
|
||||
verblist[++verblist.len] = list(verb_to_init.category, verb_to_init.name)
|
||||
src << output("[url_encode(json_encode(verb_tabs))];[url_encode(json_encode(verblist))]", "statbrowser:init_verbs")
|
||||
|
||||
//increment progress for an unlockable loadout item
|
||||
/client/proc/increment_progress(key, amount)
|
||||
if(prefs)
|
||||
var/savefile/S = new /savefile(prefs.path)
|
||||
var/list/unlockable_loadout_data = prefs.unlockable_loadout_data
|
||||
if(!length(unlockable_loadout_data))
|
||||
unlockable_loadout_data = list()
|
||||
unlockable_loadout_data[key] = amount
|
||||
WRITE_FILE(S["unlockable_loadout"], safe_json_encode(unlockable_loadout_data))
|
||||
prefs.unlockable_loadout_data = unlockable_loadout_data
|
||||
return TRUE
|
||||
else
|
||||
if(unlockable_loadout_data[key])
|
||||
unlockable_loadout_data[key] += amount
|
||||
else
|
||||
unlockable_loadout_data[key] = amount
|
||||
WRITE_FILE(S["unlockable_loadout"], safe_json_encode(unlockable_loadout_data))
|
||||
prefs.unlockable_loadout_data = unlockable_loadout_data
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
|
||||
@@ -198,6 +198,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
var/gear_points = 10
|
||||
var/list/gear_categories
|
||||
var/list/loadout_data = list()
|
||||
var/list/unlockable_loadout_data = list()
|
||||
var/loadout_slot = 1 //goes from 1 to MAXIMUM_LOADOUT_SAVES
|
||||
var/gear_category
|
||||
var/gear_subcategory
|
||||
@@ -907,12 +908,14 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
loadout_color_non_poly = loadout_item[LOADOUT_COLOR][1]
|
||||
extra_color_data += "<BR><a href='?_src_=prefs;preference=gear;loadout_color=1;loadout_gear_name=[html_encode(gear.name)];'>Color</a>"
|
||||
extra_color_data += "<span style='border: 1px solid #161616; background-color: [loadout_color_non_poly];'> </span>"
|
||||
else if(gear_points <= 0)
|
||||
else if((gear_points - gear.cost) < 0)
|
||||
class_link = "style='white-space:normal;' class='linkOff'"
|
||||
else if(donoritem)
|
||||
class_link = "style='white-space:normal;background:#ebc42e;' href='?_src_=prefs;preference=gear;toggle_gear_path=[html_encode(name)];toggle_gear=1'"
|
||||
else
|
||||
else if(!istype(gear, /datum/gear/unlockable) || can_use_unlockable(gear))
|
||||
class_link = "style='white-space:normal;' href='?_src_=prefs;preference=gear;toggle_gear_path=[html_encode(name)];toggle_gear=1'"
|
||||
else
|
||||
class_link = "style='white-space:normal;background:#eb2e2e;' class='linkOff'"
|
||||
dat += "<tr style='vertical-align:top;'><td width=15%><a [class_link]>[name]</a>[extra_color_data]</td>"
|
||||
dat += "<td width = 5% style='vertical-align:top'>[gear.cost]</td><td>"
|
||||
if(islist(gear.restricted_roles))
|
||||
@@ -925,7 +928,16 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
dat += "<font size=2>"
|
||||
dat += gear.restricted_roles.Join(";")
|
||||
dat += "</font>"
|
||||
dat += "</td><td><font size=2><i>[gear.description]</i></font></td></tr>"
|
||||
if(!istype(gear, /datum/gear/unlockable))
|
||||
dat += "</td><td><font size=2><i>[gear.description]</i></font></td></tr>"
|
||||
else
|
||||
//we add the user's progress to the description assuming they have progress
|
||||
var/datum/gear/unlockable/unlockable = gear
|
||||
var/progress_made = unlockable_loadout_data[unlockable.progress_key]
|
||||
if(!progress_made)
|
||||
progress_made = 0
|
||||
dat += "</td><td><font size=2><i>[gear.description] Progress: [min(progress_made, unlockable.progress_required)]/[unlockable.progress_required]</i></font></td></tr>"
|
||||
|
||||
dat += "</table>"
|
||||
if(4) // Content preferences
|
||||
dat += "<table><tr><td width='340px' height='300px' valign='top'>"
|
||||
@@ -2675,6 +2687,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
if(G.donoritem && !G.donator_ckey_check(user.ckey))
|
||||
to_chat(user, "<span class='danger'>This is an item intended for donator use only. You are not authorized to use this item.</span>")
|
||||
return
|
||||
if(istype(G, /datum/gear/unlockable) && !can_use_unlockable(G))
|
||||
to_chat(user, "<span class='danger'>To use this item, you need to meet the defined requirements!</span>")
|
||||
return
|
||||
if(gear_points >= initial(G.cost))
|
||||
var/list/new_loadout_data = list(LOADOUT_ITEM = "[G.type]")
|
||||
if(length(G.loadout_initial_colors))
|
||||
@@ -2960,6 +2975,11 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
if(find_gear)
|
||||
loadout_data["SAVE_[save_slot]"] -= list(find_gear)
|
||||
|
||||
/datum/preferences/proc/can_use_unlockable(datum/gear/unlockable/unlockable_gear)
|
||||
if(unlockable_loadout_data[unlockable_gear.progress_key] >= unlockable_gear.progress_required)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
#undef DEFAULT_SLOT_AMT
|
||||
#undef HANDS_SLOT_AMT
|
||||
#undef BACKPACK_SLOT_AMT
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
// You do not need to raise this if you are adding new values that have sane defaults.
|
||||
// Only raise this value when changing the meaning/format/name/layout of an existing value
|
||||
// where you would want the updater procs below to run
|
||||
#define SAVEFILE_VERSION_MAX 47
|
||||
#define SAVEFILE_VERSION_MAX 48
|
||||
|
||||
/*
|
||||
SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn
|
||||
@@ -285,6 +285,9 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
|
||||
S["loadout"] = safe_json_encode(loadout_data)
|
||||
|
||||
if(current_version < 48) //unlockable loadout items but we need to clear bad data from a mistake
|
||||
S["unlockable_loadout"] = list()
|
||||
|
||||
/datum/preferences/proc/load_path(ckey,filename="preferences.sav")
|
||||
if(!ckey)
|
||||
return
|
||||
@@ -427,6 +430,11 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
|
||||
verify_keybindings_valid() // one of these days this will runtime and you'll be glad that i put it in a different proc so no one gets their saves wiped
|
||||
|
||||
if(S["unlockable_loadout"])
|
||||
unlockable_loadout_data = safe_json_decode(S["unlockable_loadout"])
|
||||
else
|
||||
unlockable_loadout_data = list()
|
||||
|
||||
if(needs_update >= 0) //save the updated version
|
||||
var/old_default_slot = default_slot
|
||||
var/old_max_save_slots = max_save_slots
|
||||
@@ -532,6 +540,11 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
WRITE_FILE(S["auto_ooc"], auto_ooc)
|
||||
WRITE_FILE(S["no_tetris_storage"], no_tetris_storage)
|
||||
|
||||
if(length(unlockable_loadout_data))
|
||||
WRITE_FILE(S["unlockable_loadout"], safe_json_encode(unlockable_loadout_data))
|
||||
else
|
||||
WRITE_FILE(S["unlockable_loadout"], safe_json_encode(list()))
|
||||
|
||||
return 1
|
||||
|
||||
/datum/preferences/proc/load_character(slot, bypass_cooldown = FALSE)
|
||||
@@ -736,7 +749,10 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
belly_prefs = json_from_file["belly_prefs"]
|
||||
|
||||
//gear loadout
|
||||
loadout_data = safe_json_decode(S["loadout"])
|
||||
if(S["loadout"])
|
||||
loadout_data = safe_json_decode(S["loadout"])
|
||||
else
|
||||
loadout_data = list()
|
||||
|
||||
//try to fix any outdated data if necessary
|
||||
//preference updating will handle saving the updated data for us.
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/under/rank/civilian/util
|
||||
name = "generic utility uniform"
|
||||
name = "utility uniform"
|
||||
desc = "A utility uniform worn by various crew."
|
||||
icon_state = "utilgen"
|
||||
item_state = "utilgen"
|
||||
|
||||
@@ -3,11 +3,12 @@
|
||||
name = "captain's jumpsuit"
|
||||
icon_state = "captain"
|
||||
item_state = "b_suit"
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0, "wound" = 15)
|
||||
sensor_mode = SENSOR_COORDS
|
||||
random_sensor = FALSE
|
||||
|
||||
/obj/item/clothing/under/rank/captain/util
|
||||
name = "Command Utiltiy Uniform"
|
||||
name = "command utility uniform"
|
||||
desc = "A utility uniform for command personnel."
|
||||
icon_state = "utilcom"
|
||||
item_state = "utilcom"
|
||||
@@ -26,7 +27,6 @@
|
||||
/obj/item/clothing/under/rank/captain/suit
|
||||
name = "captain's suit"
|
||||
desc = "A green suit and yellow necktie. Exemplifies authority."
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0, "wound" = 15)
|
||||
icon_state = "green_suit"
|
||||
item_state = "dg_suit"
|
||||
can_adjust = FALSE
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0, "wound" = 5)
|
||||
|
||||
/obj/item/clothing/under/rank/medical/doctor/util
|
||||
name = "Medical Utility Uniform"
|
||||
name = "medical utility uniform"
|
||||
desc = "Utility jumpsuit for medical personnel"
|
||||
icon_state = "utilmed"
|
||||
item_state = "utilmed"
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0, "wound" = 5)
|
||||
|
||||
/obj/item/clothing/under/rank/rnd/scientist/util
|
||||
name = "Science Utility Uniform"
|
||||
name = "science utility uniform"
|
||||
desc = "A utility uniform for science personnel"
|
||||
icon_state = "utilsci"
|
||||
item_state = "utilsci"
|
||||
|
||||
@@ -195,7 +195,7 @@
|
||||
/obj/machinery/microwave/AltClick(mob/user)
|
||||
. = ..()
|
||||
if(user.canUseTopic(src, !hasSiliconAccessInArea(user)))
|
||||
cook()
|
||||
cook(user)
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/microwave/ui_interact(mob/user)
|
||||
@@ -226,7 +226,7 @@
|
||||
if("eject")
|
||||
eject()
|
||||
if("use")
|
||||
cook()
|
||||
cook(user)
|
||||
if("examine")
|
||||
examine(user)
|
||||
|
||||
@@ -236,7 +236,7 @@
|
||||
AM.forceMove(drop_location())
|
||||
ingredients.Cut()
|
||||
|
||||
/obj/machinery/microwave/proc/cook()
|
||||
/obj/machinery/microwave/proc/cook(mob/user)
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
return
|
||||
if(operating || broken > 0 || panel_open || !anchored || dirty == 100)
|
||||
@@ -257,7 +257,7 @@
|
||||
start_can_fail()
|
||||
return
|
||||
break
|
||||
start()
|
||||
start(user)
|
||||
|
||||
/obj/machinery/microwave/proc/turn_on()
|
||||
visible_message("\The [src] turns on.", "<span class='italics'>You hear a microwave humming.</span>")
|
||||
@@ -277,9 +277,9 @@
|
||||
#define MICROWAVE_MUCK 1
|
||||
#define MICROWAVE_PRE 2
|
||||
|
||||
/obj/machinery/microwave/proc/start()
|
||||
/obj/machinery/microwave/proc/start(mob/user)
|
||||
turn_on()
|
||||
loop(MICROWAVE_NORMAL, 10)
|
||||
loop(MICROWAVE_NORMAL, 10, user = user)
|
||||
|
||||
/obj/machinery/microwave/proc/start_can_fail()
|
||||
turn_on()
|
||||
@@ -292,7 +292,7 @@
|
||||
update_icon()
|
||||
loop(MICROWAVE_MUCK, 4)
|
||||
|
||||
/obj/machinery/microwave/proc/loop(type, time, wait = max(12 - 2 * productivity, 2)) // standard wait is 10
|
||||
/obj/machinery/microwave/proc/loop(type, time, wait = max(12 - 2 * productivity, 2), mob/user) // standard wait is 10
|
||||
if(stat & (NOPOWER|BROKEN))
|
||||
if(type == MICROWAVE_PRE)
|
||||
pre_fail()
|
||||
@@ -300,7 +300,7 @@
|
||||
if(!time)
|
||||
switch(type)
|
||||
if(MICROWAVE_NORMAL)
|
||||
loop_finish()
|
||||
loop_finish(user)
|
||||
if(MICROWAVE_MUCK)
|
||||
muck_finish()
|
||||
if(MICROWAVE_PRE)
|
||||
@@ -308,16 +308,21 @@
|
||||
return
|
||||
time--
|
||||
use_power(500)
|
||||
addtimer(CALLBACK(src, .proc/loop, type, time, wait), wait)
|
||||
addtimer(CALLBACK(src, .proc/loop, type, time, wait, user), wait)
|
||||
|
||||
/obj/machinery/microwave/proc/loop_finish()
|
||||
/obj/machinery/microwave/proc/loop_finish(mob/user)
|
||||
operating = FALSE
|
||||
|
||||
var/metal = 0
|
||||
var/cooked_food = 0
|
||||
for(var/obj/item/O in ingredients)
|
||||
O.microwave_act(src)
|
||||
var/cooked_result = O.microwave_act(src)
|
||||
if(!istype(cooked_result, /obj/item/reagent_containers/food/snacks/badrecipe))
|
||||
cooked_food += 1
|
||||
if(O.custom_materials?.len)
|
||||
metal += O.custom_materials[SSmaterials.GetMaterialRef(/datum/material/iron)]
|
||||
if(cooked_food && user.client)
|
||||
user.client.increment_progress("cook", cooked_food)
|
||||
|
||||
if(metal)
|
||||
spark()
|
||||
@@ -336,8 +341,8 @@
|
||||
spark()
|
||||
after_finish_loop()
|
||||
|
||||
/obj/machinery/microwave/proc/pre_success()
|
||||
loop(MICROWAVE_NORMAL, 10)
|
||||
/obj/machinery/microwave/proc/pre_success(mob/user)
|
||||
loop(MICROWAVE_NORMAL, 10, user)
|
||||
|
||||
/obj/machinery/microwave/proc/muck_finish()
|
||||
visible_message("<span class='warning'>\The [src] gets covered in muck!</span>")
|
||||
|
||||
@@ -30,6 +30,8 @@
|
||||
if(points)
|
||||
if(I)
|
||||
I.mining_points += points
|
||||
if(usr.client)
|
||||
usr.client.increment_progress("miner", points)
|
||||
points = 0
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>No ID detected.</span>")
|
||||
|
||||
@@ -68,7 +68,7 @@ Doesn't work on other aliens/AI.*/
|
||||
|
||||
/obj/effect/proc_holder/alien/plant
|
||||
name = "Plant Weeds"
|
||||
desc = "Plants some alien weeds."
|
||||
desc = "Plants Alien weeds which spread resin which heals any alien. These weeds also regenerate plasma faster. Costs 50 Plasma."
|
||||
plasma_cost = 50
|
||||
check_turf = TRUE
|
||||
action_icon_state = "alien_plant"
|
||||
@@ -83,7 +83,7 @@ Doesn't work on other aliens/AI.*/
|
||||
|
||||
/obj/effect/proc_holder/alien/whisper
|
||||
name = "Whisper"
|
||||
desc = "Whisper to someone."
|
||||
desc = "Whisper to someone through the hivemind. Costs 10 Plasma."
|
||||
plasma_cost = 10
|
||||
action_icon_state = "alien_whisper"
|
||||
|
||||
@@ -143,7 +143,7 @@ Doesn't work on other aliens/AI.*/
|
||||
|
||||
/obj/effect/proc_holder/alien/acid
|
||||
name = "Corrosive Acid"
|
||||
desc = "Drench an object in acid, destroying it over time."
|
||||
desc = "Drench an object in acid, destroying it over time. Costs 200 Plasma."
|
||||
plasma_cost = 200
|
||||
action_icon_state = "alien_acid"
|
||||
|
||||
@@ -189,7 +189,7 @@ Doesn't work on other aliens/AI.*/
|
||||
|
||||
/obj/effect/proc_holder/alien/neurotoxin
|
||||
name = "Spit Neurotoxin"
|
||||
desc = "Spits neurotoxin at someone, paralyzing them for a short time."
|
||||
desc = "Activates your Neurotoxin glands. You can shoot paralyzing shots. Each shot costs 50 Plasma."
|
||||
action_icon_state = "alien_neurotoxin_0"
|
||||
active = FALSE
|
||||
|
||||
@@ -254,7 +254,7 @@ Doesn't work on other aliens/AI.*/
|
||||
|
||||
/obj/effect/proc_holder/alien/resin
|
||||
name = "Secrete Resin"
|
||||
desc = "Secrete tough malleable resin."
|
||||
desc = "Secrete tough malleable resin. Costs 55 Plasma."
|
||||
plasma_cost = 55
|
||||
check_turf = TRUE
|
||||
var/list/structures = list(
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
/obj/effect/proc_holder/alien/royal/praetorian/evolve
|
||||
name = "Evolve"
|
||||
desc = "Produce an internal egg sac capable of spawning children. Only one queen can exist at a time."
|
||||
desc = "Produce an internal egg sac capable of spawning children. Only one queen can exist at a time. Costs 500 Plasma."
|
||||
plasma_cost = 500
|
||||
|
||||
action_icon_state = "alien_evolve_praetorian"
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
//Queen verbs
|
||||
/obj/effect/proc_holder/alien/lay_egg
|
||||
name = "Lay Egg"
|
||||
desc = "Lay an egg to produce huggers to impregnate prey with."
|
||||
desc = "Lay an egg to produce huggers to impregnate prey with. Costs 75 Plasma."
|
||||
plasma_cost = 75
|
||||
check_turf = TRUE
|
||||
action_icon_state = "alien_egg"
|
||||
@@ -77,7 +77,7 @@
|
||||
//Button to let queen choose her praetorian.
|
||||
/obj/effect/proc_holder/alien/royal/queen/promote
|
||||
name = "Create Royal Parasite"
|
||||
desc = "Produce a royal parasite to grant one of your children the honor of being your Praetorian."
|
||||
desc = "Produce a royal parasite to grant one of your children the honor of being your Praetorian. Costs 500 Plasma."
|
||||
plasma_cost = 500 //Plasma cost used on promotion, not spawning the parasite.
|
||||
|
||||
action_icon_state = "alien_queen_promote"
|
||||
|
||||
@@ -18,3 +18,33 @@
|
||||
species_category = SPECIES_CATEGORY_FURRY
|
||||
|
||||
allowed_limb_ids = list("mammal","aquatic","avian")
|
||||
|
||||
/datum/species/mammal/synthetic
|
||||
name = "Synthetic Anthromorph"
|
||||
id = SPECIES_MAMMAL_SYNTHETIC
|
||||
|
||||
species_traits = list(MUTCOLORS,NOTRANSSTING,EYECOLOR,LIPS,HAIR,ROBOTIC_LIMBS,HAS_FLESH,HAS_BONE,WINGCOLOR,HORNCOLOR)
|
||||
inherent_traits = list(TRAIT_EASYDISMEMBER,TRAIT_LIMBATTACHMENT,TRAIT_NO_PROCESS_FOOD, TRAIT_ROBOTIC_ORGANISM)
|
||||
inherent_biotypes = MOB_ROBOTIC|MOB_HUMANOID|MOB_BEAST
|
||||
|
||||
meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/ipc
|
||||
gib_types = list(/obj/effect/gibspawner/ipc, /obj/effect/gibspawner/ipc/bodypartless)
|
||||
//Just robo looking parts.
|
||||
mutant_heart = /obj/item/organ/heart/ipc
|
||||
mutantlungs = /obj/item/organ/lungs/ipc
|
||||
mutantliver = /obj/item/organ/liver/ipc
|
||||
mutantstomach = /obj/item/organ/stomach/ipc
|
||||
mutanteyes = /obj/item/organ/eyes/ipc
|
||||
mutantears = /obj/item/organ/ears/ipc
|
||||
mutanttongue = /obj/item/organ/tongue/robot/ipc
|
||||
mutant_brain = /obj/item/organ/brain/ipc
|
||||
|
||||
//special cybernetic organ for getting power from apcs
|
||||
mutant_organs = list(/obj/item/organ/cyberimp/arm/power_cord)
|
||||
|
||||
|
||||
attack_verb = "claw"
|
||||
attack_sound = 'sound/weapons/slash.ogg'
|
||||
miss_sound = 'sound/weapons/slashmiss.ogg'
|
||||
|
||||
allowed_limb_ids = list("mammal","aquatic","avian", "human")
|
||||
|
||||
@@ -203,6 +203,15 @@
|
||||
var/obj/item/I = AM
|
||||
if(I.light_range && I.light_power)
|
||||
disintegrate(I)
|
||||
else if (isstructure(AM))
|
||||
var/obj/structure/S = AM
|
||||
if(istype(S, /obj/structure/glowshroom) || istype(S, /obj/structure/marker_beacon))
|
||||
qdel(S)
|
||||
visible_message("<span class='danger'>[S] is disintegrated by [src]!</span>")
|
||||
else if(AM.light_range && AM.light_power && !(istype(AM, /obj/machinery/power/apc) || istype(AM, /obj/machinery/airalarm)))
|
||||
var/obj/target_object = AM
|
||||
target_object.take_damage(force * 5, BRUTE, "melee", 0)
|
||||
|
||||
|
||||
/obj/item/light_eater/proc/disintegrate(obj/item/O)
|
||||
if(istype(O, /obj/item/pda))
|
||||
|
||||
@@ -508,7 +508,7 @@ It's fairly easy to fix if dealing with single letters but not so much with comp
|
||||
if(LOG_EMOTE)
|
||||
colored_message = "(EMOTE) [colored_message]"
|
||||
|
||||
var/list/timestamped_message = list("\[[TIME_STAMP("hh:mm:ss", FALSE)]\] [key_name(src)] [loc_name(src)]" = colored_message)
|
||||
var/list/timestamped_message = list("\[[TIME_STAMP("hh:mm:ss", FALSE)]\] [key_name(src)] [loc_name(src)] (Event #[LAZYLEN(logging[smessage_type])])" = colored_message)
|
||||
|
||||
logging[smessage_type] += timestamped_message
|
||||
|
||||
|
||||
@@ -257,9 +257,9 @@
|
||||
var/amount = text2num(params["amount"])
|
||||
if(amount == null)
|
||||
amount = text2num(input(usr,
|
||||
"Max 10. Buffer content will be split evenly.",
|
||||
"Max 20. Buffer content will be split evenly.",
|
||||
"How many to make?", 1))
|
||||
amount = clamp(round(amount), 0, 10)
|
||||
amount = clamp(round(amount), 0, 20)
|
||||
if (amount <= 0)
|
||||
return FALSE
|
||||
// Get units per item
|
||||
|
||||
@@ -104,3 +104,11 @@
|
||||
build_path = /obj/item/circuitboard/machine/thermomachine
|
||||
category = list ("Engineering Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
|
||||
/datum/design/board/spaceship_navigation_beacon
|
||||
name = "Machine Design (Bluespace Navigation Gigabeacon)"
|
||||
desc = "The circuit board for a Bluespace Navigation Gigabeacon."
|
||||
id = "spaceship_navigation_beacon"
|
||||
build_path = /obj/item/circuitboard/machine/spaceship_navigation_beacon
|
||||
category = list ("Teleportation Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
|
||||
@@ -726,6 +726,32 @@
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/////////////////////
|
||||
/////Synth Organs////
|
||||
/////////////////////
|
||||
|
||||
/datum/design/ipc_stomach
|
||||
name = "IPC cell"
|
||||
desc = "Effectively the robot equivalent of a stomach, handling power storage."
|
||||
id = "ipc_stomach"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 40
|
||||
materials = list(/datum/material/iron = 1000, /datum/material/glass = 300, /datum/material/silver = 500, /datum/material/gold = 400)
|
||||
build_path = /obj/item/organ/stomach/ipc
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/datum/design/cyberimp_power_cord
|
||||
name = "IPC power cord"
|
||||
desc = "A implant for Robots designed to siphon power from APCs to recharge their own cell."
|
||||
id = "ci-power-cord"
|
||||
build_type = PROTOLATHE | MECHFAB
|
||||
construction_time = 75
|
||||
materials = list(/datum/material/iron = 4000, /datum/material/glass = 1500, /datum/material/silver = 1200, /datum/material/gold = 1600, /datum/material/plasma = 1000)
|
||||
build_path = /obj/item/organ/cyberimp/arm/power_cord
|
||||
category = list("Misc", "Medical Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
|
||||
|
||||
/////////////////////
|
||||
///Surgery Designs///
|
||||
/////////////////////
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
display_name = "Biological Technology"
|
||||
description = "What makes us tick." //the MC, silly!
|
||||
prereq_ids = list("base")
|
||||
design_ids = list("medicalkit", "chem_heater", "chem_master", "chem_dispenser", "sleeper", "vr_sleeper", "pandemic", "defibrillator", "defibmount", "operating", "soda_dispenser", "beer_dispenser", "healthanalyzer", "blood_bag", "bloodbankgen", "telescopiciv", "medspray","genescanner","chem_pack")
|
||||
design_ids = list("medicalkit", "chem_heater", "chem_master", "chem_dispenser", "sleeper", "vr_sleeper", "pandemic", "defibrillator", "defibmount", "operating", "soda_dispenser", "beer_dispenser", "healthanalyzer", "blood_bag", "bloodbankgen", "telescopiciv", "medspray","genescanner","chem_pack", "portable_chem_mixer")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/adv_biotech
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
display_name = "Basic Shuttle Research"
|
||||
description = "Research the technology required to create and use basic shuttles."
|
||||
prereq_ids = list("practical_bluespace", "adv_engi")
|
||||
design_ids = list("shuttle_creator", "engine_plasma", "engine_heater", "shuttle_control", "shuttle_docker")
|
||||
design_ids = list("shuttle_creator", "engine_plasma", "engine_heater", "shuttle_control", "shuttle_docker","spaceship_navigation_beacon")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
|
||||
|
||||
/datum/techweb_node/shuttle_route_upgrade
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
display_name = "Upgraded Cybernetic Organs"
|
||||
description = "We have the technology to upgrade him."
|
||||
prereq_ids = list("cyber_organs")
|
||||
design_ids = list("cybernetic_ears_u", "cybernetic_heart_u", "cybernetic_liver_u", "cybernetic_lungs_u")
|
||||
design_ids = list("cybernetic_ears_u", "cybernetic_heart_u", "cybernetic_liver_u", "cybernetic_lungs_u", "ipc_stomach")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1500)
|
||||
|
||||
/datum/techweb_node/cyber_implants
|
||||
@@ -88,7 +88,7 @@
|
||||
display_name = "Cybernetic Implants"
|
||||
description = "Electronic implants that improve humans."
|
||||
prereq_ids = list("adv_biotech", "adv_datatheory")
|
||||
design_ids = list("ci-nutriment", "ci-breather", "ci-gloweyes", "ci-welding", "ci-medhud", "ci-sechud", "ci-service")
|
||||
design_ids = list("ci-nutriment", "ci-breather", "ci-gloweyes", "ci-welding", "ci-medhud", "ci-sechud", "ci-service", "ci-power-cord")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/adv_cyber_implants
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
var/list/jumpto_ports = list() //hashset of ports to jump to and ignore for collision purposes
|
||||
var/obj/docking_port/stationary/my_port //the custom docking port placed by this console
|
||||
var/obj/docking_port/mobile/shuttle_port //the mobile docking port of the connected shuttle
|
||||
var/list/locked_traits = list(ZTRAIT_RESERVED, ZTRAIT_CENTCOM, ZTRAIT_AWAY, ZTRAIT_REEBE) //traits forbided for custom docking
|
||||
var/view_range = 0
|
||||
var/x_offset = 0
|
||||
var/y_offset = 0
|
||||
@@ -186,7 +187,7 @@
|
||||
var/turf/eyeturf = get_turf(the_eye)
|
||||
if(!eyeturf)
|
||||
return SHUTTLE_DOCKER_BLOCKED
|
||||
if(z_lock.len && !(eyeturf.z in z_lock))
|
||||
if(!eyeturf.z || SSmapping.level_has_any_trait(eyeturf.z, locked_traits))
|
||||
return SHUTTLE_DOCKER_BLOCKED
|
||||
|
||||
. = SHUTTLE_DOCKER_LANDING_CLEAR
|
||||
@@ -224,9 +225,9 @@
|
||||
if(hidden_turf_info)
|
||||
. = SHUTTLE_DOCKER_BLOCKED_BY_HIDDEN_PORT
|
||||
|
||||
if(space_turfs_only)
|
||||
if(length(whitelist_turfs))
|
||||
var/turf_type = hidden_turf_info ? hidden_turf_info[2] : T.type
|
||||
if(!ispath(turf_type, /turf/open/space))
|
||||
if(!is_type_in_typecache(turf_type, whitelist_turfs))
|
||||
return SHUTTLE_DOCKER_BLOCKED
|
||||
|
||||
if(length(whitelist_turfs))
|
||||
@@ -324,12 +325,25 @@
|
||||
var/list/L = list()
|
||||
for(var/V in SSshuttle.stationary)
|
||||
if(!V)
|
||||
stack_trace("SSshuttle.stationary have null entry!")
|
||||
continue
|
||||
var/obj/docking_port/stationary/S = V
|
||||
if(console.z_lock.len && !(S.z in console.z_lock))
|
||||
continue
|
||||
if(console.jumpto_ports[S.id])
|
||||
L[S.name] = S
|
||||
L["([L.len])[S.name]"] = S
|
||||
|
||||
for(var/V in SSshuttle.beacons)
|
||||
if(!V)
|
||||
stack_trace("SSshuttle.beacons have null entry!")
|
||||
continue
|
||||
var/obj/machinery/spaceship_navigation_beacon/nav_beacon = V
|
||||
if(!nav_beacon.z || SSmapping.level_has_any_trait(nav_beacon.z, console.locked_traits))
|
||||
break
|
||||
if(!nav_beacon.locked)
|
||||
L["([L.len]) [nav_beacon.name] located: [nav_beacon.x] [nav_beacon.y] [nav_beacon.z]"] = nav_beacon
|
||||
else
|
||||
L["([L.len]) [nav_beacon.name] locked"] = null
|
||||
|
||||
playsound(console, 'sound/machines/terminal_prompt.ogg', 25, 0)
|
||||
var/selected = input("Choose location to jump to", "Locations", null) as null|anything in L
|
||||
|
||||
63
code/modules/shuttle/spaceship_navigation_beacon.dm
Normal file
@@ -0,0 +1,63 @@
|
||||
/obj/item/circuitboard/machine/spaceship_navigation_beacon
|
||||
name = "Bluespace Navigation Gigabeacon (Machine Board)"
|
||||
build_path = /obj/machinery/spaceship_navigation_beacon
|
||||
req_components = list()
|
||||
|
||||
|
||||
/obj/machinery/spaceship_navigation_beacon
|
||||
name = "Bluespace Navigation Gigabeacon"
|
||||
desc = "A device that creates a bluespace anchor that allow ships jump near to it."
|
||||
icon = 'icons/obj/abductor.dmi'
|
||||
icon_state = "core"
|
||||
use_power = IDLE_POWER_USE
|
||||
idle_power_usage = 0
|
||||
density = TRUE
|
||||
circuit = /obj/item/circuitboard/machine/spaceship_navigation_beacon
|
||||
|
||||
var/locked = FALSE //Locked beacons don't allow to jump to it.
|
||||
|
||||
|
||||
/obj/machinery/spaceship_navigation_beacon/Initialize()
|
||||
. = ..()
|
||||
SSshuttle.beacons |= src
|
||||
|
||||
obj/machinery/spaceship_navigation_beacon/emp_act()
|
||||
locked = TRUE
|
||||
|
||||
/obj/machinery/spaceship_navigation_beacon/Destroy()
|
||||
SSshuttle.beacons -= src
|
||||
return ..()
|
||||
|
||||
// update the icon_state
|
||||
/obj/machinery/spaceship_navigation_beacon/update_icon()
|
||||
if(powered())
|
||||
icon_state = "core"
|
||||
else
|
||||
icon_state = "core-open"
|
||||
|
||||
/obj/machinery/spaceship_navigation_beacon/power_change()
|
||||
. = ..()
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/spaceship_navigation_beacon/multitool_act(mob/living/user, obj/item/multitool/I)
|
||||
if(panel_open)
|
||||
var/new_name = "Beacon_[input("Enter the custom name for this beacon", "It be Beacon ..your input..") as text]"
|
||||
if(new_name && Adjacent(user))
|
||||
name = new_name
|
||||
to_chat(user, "<span class='notice'>You change beacon name to [name].</span>")
|
||||
else
|
||||
locked =!locked
|
||||
to_chat(user, "<span class='notice'>You [locked ? "" : "un"]lock [src].</span>")
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/spaceship_navigation_beacon/examine()
|
||||
.=..()
|
||||
. += "<span class='[locked ? "warning" : "nicegreen"]'>Status: [locked ? "LOCKED" : "Stable"] </span>"
|
||||
|
||||
/obj/machinery/spaceship_navigation_beacon/attackby(obj/item/W, mob/user, params)
|
||||
if(default_deconstruction_screwdriver(user, "core-open", "core", W))
|
||||
return
|
||||
if(default_deconstruction_crowbar(W))
|
||||
return
|
||||
|
||||
return ..()
|
||||
@@ -394,11 +394,10 @@
|
||||
var/datum/wound/new_wound
|
||||
if(replaced_wound)
|
||||
new_wound = replaced_wound.replace_wound(possible_wound)
|
||||
log_wound(owner, new_wound, damage, wound_bonus, bare_wound_bonus, base_roll) // dismembering wounds are logged in the apply_wound() for loss wounds since they delete themselves immediately, these will be immediately returned
|
||||
else
|
||||
new_wound = new possible_wound
|
||||
new_wound.apply_wound(src)
|
||||
log_wound(owner, new_wound, damage, wound_bonus, bare_wound_bonus, base_roll)
|
||||
log_wound(owner, new_wound, damage, wound_bonus, bare_wound_bonus, base_roll) // dismembering wounds are logged in the apply_wound() for loss wounds since they delete themselves immediately, these will be immediately returned
|
||||
return new_wound
|
||||
|
||||
// try forcing a specific wound, but only if there isn't already a wound of that severity or greater for that type on this bodypart
|
||||
|
||||
@@ -544,7 +544,7 @@
|
||||
/obj/item/clothing/glasses/sunglasses/gar/supergar = 1,
|
||||
/obj/item/clothing/gloves/color/captain = 1)
|
||||
refill_canister = /obj/item/vending_refill/wardrobe/cap_wardrobe
|
||||
payment_department = ACCOUNT_CIV
|
||||
payment_department = ACCOUNT_SEC
|
||||
default_price = PRICE_ALMOST_EXPENSIVE
|
||||
extra_price = PRICE_ABOVE_EXPENSIVE
|
||||
|
||||
|
||||
4
html/changelogs/AutoChangeLog-pr-13859.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
author: "timothyteakettle"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "adds unlockable loadout items, corresponding category in loadouts, etc"
|
||||
4
html/changelogs/AutoChangeLog-pr-13932.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
author: "shellspeed1"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "Xenomorph powers now list plasma cost in their description."
|
||||
4
html/changelogs/AutoChangeLog-pr-13934.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
author: "shellspeed1"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "The bluespace navigation gigabeacon design has been added to shuttle research for those wanting to take their ships around space more."
|
||||
4
html/changelogs/AutoChangeLog-pr-13936.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
author: "BlueWildrose"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Polychromic hoodies that were obtained from the loadout have functional colorable hoods now."
|
||||
4
html/changelogs/AutoChangeLog-pr-13938.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
author: "timothyteakettle"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "anthromorphic synth species"
|
||||
4
html/changelogs/AutoChangeLog-pr-13940.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
author: "Chiirno"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Added the paramedics EVA suit as a purchase from the cargo console."
|
||||
4
html/changelogs/AutoChangeLog-pr-13941.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
author: "Chiirno"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "Portable Chem Mixer now researchable from biotech node."
|
||||
6
html/changelogs/AutoChangeLog-pr-13943.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
author: "Hatterhat"
|
||||
delete-after: True
|
||||
changes:
|
||||
- spellcheck: "Utility uniforms now comply with the \"nonproper equipment names\" thing."
|
||||
- bugfix: "The CapDrobe now allows the captain to get his own clothes for free. Probably."
|
||||
- tweak: "All captains' clothes now offer 15 woundarmor, up from the 5. Because apparently only the suit and tie and its suitskirt subtype have this wound armor, which is dumb."
|
||||
4
html/changelogs/AutoChangeLog-pr-13945.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
author: "DeltaFire15"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "IPC cells & power cords are now printable after they are researched."
|
||||
4
html/changelogs/AutoChangeLog-pr-13946.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
author: "Ryll/Shaps"
|
||||
delete-after: True
|
||||
changes:
|
||||
- admin: "Fixed an issue with player logs becoming confused when someone triggers multiple events within one second (like being attacked by two people at the same time) that would cause holes in the logs"
|
||||
4
html/changelogs/AutoChangeLog-pr-13947.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
author: "Chiirno"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "Chem masters can now dispense 20 instances of its outputs instead of 10."
|
||||
11
html/changelogs/AutoChangeLog-pr-13948.yml
Normal file
@@ -0,0 +1,11 @@
|
||||
author: "necromanceranne"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Bokken now come in two lengths; full and wakizashi, and two varieties: wood and ironwood. They have different stats for all four."
|
||||
- rscadd: "Bokken require menu crafting and part construction, as well as more complicated materials."
|
||||
- tweak: "Bokken (long and short) require wood, cloth and leather to craft with a hatchet and screwdriver."
|
||||
- tweak: "Ironwood bokken (long and short) require ironcap logs, cloth and leather to craft with a hatchet, screwdriver and welder."
|
||||
- balance: "Twin sheathes can only fit a pair of blades (longsword + shortsword) or they can fit two shortswords."
|
||||
- bugfix: "Fixed a twin sheath runtime."
|
||||
- imageadd: "A lot of bokken related sprites received an overhaul. Added overlay sprites for weapons sheathed in the twin sheathes."
|
||||
- imageadd: "The extradimensional blade received improved sprites for inhands/back sprites."
|
||||
6
html/changelogs/AutoChangeLog-pr-13950.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
author: "TripleShades"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "New Paramedic Office next to Genetics where the old Genetics Reception used to be
|
||||
change: Surgery, Surgery Observation, and Recovery Hall layout revamped drastically
|
||||
change: Maints below Surgery lowered by one tile to recover lost tile space from Surgery expansion"
|
||||
4
html/changelogs/AutoChangeLog-pr-13951.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
author: "BlueWildrose"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "You can now have a max-roundstart-dicksize-config inch long johnson before you start suffering blood loss and slowdowns instead of a 20 inch one."
|
||||
6
html/changelogs/AutoChangeLog-pr-13954.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
author: "EmeraldSundisk"
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Adds a new \"Computer Core\" area designation for CogStation"
|
||||
- bugfix: "Fixes some missing area strings"
|
||||
- tweak: "Replaces some firelocks with directional ones as to ensure desks/counters can still be accessed"
|
||||
5
html/changelogs/AutoChangeLog-pr-13955.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
author: "Chiirno"
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "Nightmare now deals additional damage to most light sources."
|
||||
- bugfix: "Nightmare now one-shots miners beacons and glowshrooms"
|
||||
6
html/changelogs/AutoChangeLog-pr-13959.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
author: "necromanceranne"
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "You can now make all the variants of the bokken."
|
||||
- bugfix: "Removes a duplicate sprite."
|
||||
- tweak: "Renames all instances of 'ironwood' to 'steelwood'."
|
||||
|
Before Width: | Height: | Size: 106 KiB After Width: | Height: | Size: 104 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 51 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 7.0 KiB |
|
Before Width: | Height: | Size: 124 KiB After Width: | Height: | Size: 125 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 16 KiB |
30
modular_citadel/code/modules/client/loadout/unlockable.dm
Normal file
@@ -0,0 +1,30 @@
|
||||
/datum/gear/unlockable
|
||||
category = LOADOUT_CATEGORY_UNLOCKABLE
|
||||
slot = SLOT_NECK
|
||||
|
||||
var/progress_required //what does our progress need to be to unlock it
|
||||
var/progress_key //what is the key used to retrieve existing progress for this unlockable
|
||||
|
||||
/datum/gear/unlockable/janitor
|
||||
name = "Janitor Bedsheet"
|
||||
description = "Clean 100 messes with a mop to unlock this. It has a warning sign on!"
|
||||
path = /obj/item/bedsheet/unlockable/janitor
|
||||
|
||||
progress_required = 100
|
||||
progress_key = "janitor"
|
||||
|
||||
/datum/gear/unlockable/cook
|
||||
name = "Cook Bedsheet"
|
||||
description = "Cook 250 items using the microwave to unlock this. It has a microwave on!"
|
||||
path = /obj/item/bedsheet/unlockable/cook
|
||||
|
||||
progress_required = 250
|
||||
progress_key = "cook"
|
||||
|
||||
/datum/gear/unlockable/miner
|
||||
name = "Miner Bedsheet"
|
||||
description = "Redeem a total of 100,000 miner points to unlock this. It's made out of goliath hide!"
|
||||
path = /obj/item/bedsheet/unlockable/miner
|
||||
|
||||
progress_required = 100000
|
||||
progress_key = "miner"
|
||||
@@ -232,7 +232,8 @@
|
||||
P.Insert(H)
|
||||
|
||||
P.modify_size(0.1)
|
||||
if (ISINRANGE_EX(P.length, 20.5, 21) && (H.w_uniform || H.wear_suit))
|
||||
var/max_D = CONFIG_GET(number/penis_max_inches_prefs)
|
||||
if (ISINRANGE_EX(P.length, max_D + 0.5, max_D + 1) && (H.w_uniform || H.wear_suit))
|
||||
var/target = H.get_bodypart(BODY_ZONE_CHEST)
|
||||
if(!message_spam)
|
||||
to_chat(H, "<span class='danger'>Your cock begin to strain against your clothes tightly!</b></span>")
|
||||
|
||||
@@ -3343,6 +3343,7 @@
|
||||
#include "code\modules\shuttle\shuttle.dm"
|
||||
#include "code\modules\shuttle\shuttle_rotate.dm"
|
||||
#include "code\modules\shuttle\snaxi.dm"
|
||||
#include "code\modules\shuttle\spaceship_navigation_beacon.dm"
|
||||
#include "code\modules\shuttle\special.dm"
|
||||
#include "code\modules\shuttle\supply.dm"
|
||||
#include "code\modules\shuttle\syndicate.dm"
|
||||
@@ -3609,6 +3610,7 @@
|
||||
#include "modular_citadel\code\modules\client\loadout\shoes.dm"
|
||||
#include "modular_citadel\code\modules\client\loadout\suit.dm"
|
||||
#include "modular_citadel\code\modules\client\loadout\uniform.dm"
|
||||
#include "modular_citadel\code\modules\client\loadout\unlockable.dm"
|
||||
#include "modular_citadel\code\modules\client\verbs\who.dm"
|
||||
#include "modular_citadel\code\modules\clothing\neck.dm"
|
||||
#include "modular_citadel\code\modules\clothing\trek.dm"
|
||||
|
||||
@@ -205,7 +205,7 @@ const PackagingControlsItem = props => {
|
||||
stepPixelSize={15}
|
||||
value={amount}
|
||||
minValue={1}
|
||||
maxValue={10}
|
||||
maxValue={20}
|
||||
onChange={onChangeAmount} />
|
||||
<Button
|
||||
ml={1}
|
||||
|
||||