Merge remote-tracking branch 'origin/master' into TGUI-4

This commit is contained in:
Letter N
2020-08-09 14:54:16 +08:00
84 changed files with 1643 additions and 1074 deletions
+2 -2
View File
@@ -3,7 +3,7 @@
/turf/template_noop,
/area/template_noop)
"b" = (
/turf/open/floor/plating/asteroid,
/turf/open/floor/plating/asteroid/airless,
/area/ruin/powered)
"c" = (
/turf/closed/mineral/random/high_chance,
@@ -135,7 +135,7 @@
/area/ruin/powered)
"F" = (
/obj/structure/closet/crate/trashcart,
/turf/open/floor/plating/asteroid,
/turf/open/floor/plating/asteroid/airless,
/area/ruin/powered)
"G" = (
/obj/structure/chair/sofa/right,
@@ -3,7 +3,7 @@
/turf/template_noop,
/area/template_noop)
"b" = (
/turf/open/floor/plating/asteroid,
/turf/open/floor/plating/asteroid/airless,
/area/ruin/powered)
"c" = (
/turf/closed/mineral/random/high_chance,
@@ -176,8 +176,8 @@
/obj/structure/table,
/obj/effect/decal/cleanable/dirt,
/obj/item/autosurgeon{
name = "rusted autosurgeon";
desc = "A device that automatically inserts an implant or organ into the user without the hassle of extensive surgery. It has a slot to insert an organ of implant. But this rusted version looks like it could only manage one implant....";
name = "rusted autosurgeon";
uses = 1
},
/turf/open/floor/plasteel,
@@ -205,7 +205,7 @@
/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer1{
dir = 4
},
/turf/open/floor/plating/asteroid,
/turf/open/floor/plating/asteroid/airless,
/area/ruin/powered)
"K" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{
@@ -80,7 +80,7 @@
/obj/item/shard{
icon_state = "medium"
},
/turf/open/floor/plating/airless{
/turf/open/floor/plating{
icon_state = "platingdmg2"
},
/area/ruin/space/has_grav)
+3 -1
View File
@@ -232,7 +232,9 @@
/area/awaymission/vr/murderdome)
"H" = (
/obj/machinery/telecomms/allinone,
/turf/open/indestructible,
/turf/open/indestructible{
initial_gas_mix = "TEMP=2.7"
},
/area/awaymission/vr/murderdome)
"R" = (
/obj/effect/spawner/structure/window/reinforced/indestructable,
@@ -4879,6 +4879,10 @@
dir = 4
},
/obj/machinery/holopad,
/obj/machinery/door/poddoor/shutters/preopen{
id = "hopqueue";
name = "HoP Queue Shutters"
},
/turf/open/floor/plasteel,
/area/hallway/primary/central)
"aiW" = (
+87 -195
View File
@@ -334,8 +334,8 @@
/area/crew_quarters/fitness/pool)
"aaM" = (
/turf/open/floor/plasteel/yellowsiding/corner{
icon_state = "yellowcornersiding";
dir = 8
dir = 8;
icon_state = "yellowcornersiding"
},
/area/crew_quarters/fitness/pool)
"aaN" = (
@@ -354,8 +354,8 @@
/area/crew_quarters/fitness/pool)
"aaP" = (
/turf/open/floor/plasteel/yellowsiding{
icon_state = "yellowsiding";
dir = 8
dir = 8;
icon_state = "yellowsiding"
},
/area/crew_quarters/fitness/pool)
"aaQ" = (
@@ -433,8 +433,8 @@
/area/crew_quarters/fitness/pool)
"aaW" = (
/turf/open/floor/plasteel/yellowsiding{
icon_state = "yellowsiding";
dir = 1
dir = 1;
icon_state = "yellowsiding"
},
/area/crew_quarters/fitness/pool)
"aaX" = (
@@ -550,8 +550,8 @@
"abm" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel/yellowsiding{
icon_state = "yellowsiding";
dir = 4
dir = 4;
icon_state = "yellowsiding"
},
/area/crew_quarters/fitness/pool)
"abn" = (
@@ -580,8 +580,8 @@
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel/yellowsiding{
icon_state = "yellowsiding";
dir = 4
dir = 4;
icon_state = "yellowsiding"
},
/area/crew_quarters/fitness/pool)
"abr" = (
@@ -595,8 +595,8 @@
"abt" = (
/obj/structure/pool/Rboard,
/turf/open/floor/plasteel/yellowsiding{
icon_state = "yellowsiding";
dir = 8
dir = 8;
icon_state = "yellowsiding"
},
/area/crew_quarters/fitness/pool)
"abu" = (
@@ -659,8 +659,8 @@
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel/yellowsiding/corner{
icon_state = "yellowcornersiding";
dir = 4
dir = 4;
icon_state = "yellowcornersiding"
},
/area/crew_quarters/fitness/pool)
"abB" = (
@@ -670,21 +670,21 @@
pixel_y = -27
},
/turf/open/floor/plasteel/yellowsiding{
icon_state = "yellowsiding";
dir = 1
dir = 1;
icon_state = "yellowsiding"
},
/area/crew_quarters/fitness/pool)
"abC" = (
/obj/machinery/light,
/turf/open/floor/plasteel/yellowsiding{
icon_state = "yellowsiding";
dir = 1
dir = 1;
icon_state = "yellowsiding"
},
/area/crew_quarters/fitness/pool)
"abD" = (
/turf/open/floor/plasteel/yellowsiding/corner{
icon_state = "yellowcornersiding";
dir = 1
dir = 1;
icon_state = "yellowcornersiding"
},
/area/crew_quarters/fitness/pool)
"abE" = (
@@ -6313,27 +6313,7 @@
"aoz" = (
/turf/closed/wall,
/area/maintenance/fore)
"aoA" = (
/obj/machinery/gateway{
dir = 9
},
/obj/effect/turf_decal/bot_white/right,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/gateway)
"aoB" = (
/obj/machinery/gateway{
dir = 1
},
/obj/machinery/light{
dir = 1
},
@@ -6350,23 +6330,6 @@
},
/turf/open/floor/plasteel/dark,
/area/gateway)
"aoC" = (
/obj/machinery/gateway{
dir = 5
},
/obj/effect/turf_decal/bot_white/left,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/gateway)
"aoH" = (
/obj/structure/lattice,
/obj/structure/grille,
@@ -6692,44 +6655,10 @@
},
/turf/open/space,
/area/space/nearstation)
"apq" = (
/obj/machinery/gateway{
dir = 8
},
/obj/effect/turf_decal/bot_white,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/gateway)
"apr" = (
/obj/machinery/gateway/centerstation,
/turf/open/floor/plasteel/dark,
/area/gateway)
"aps" = (
/obj/machinery/gateway{
dir = 4
},
/obj/effect/turf_decal/bot_white,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/turf/open/floor/plasteel/dark,
/area/gateway)
"apt" = (
/obj/structure/chair{
dir = 4
@@ -6916,9 +6845,6 @@
/turf/closed/wall/r_wall,
/area/ai_monitored/nuke_storage)
"apU" = (
/obj/machinery/gateway{
dir = 10
},
/obj/effect/turf_decal/bot_white/left,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -6933,7 +6859,6 @@
/turf/open/floor/plasteel/dark,
/area/gateway)
"apV" = (
/obj/machinery/gateway,
/obj/effect/turf_decal/bot_white,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -6948,9 +6873,6 @@
/turf/open/floor/plasteel/dark,
/area/gateway)
"apW" = (
/obj/machinery/gateway{
dir = 6
},
/obj/effect/turf_decal/bot_white/right,
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -7876,32 +7798,7 @@
/turf/open/floor/plasteel,
/area/gateway)
"arY" = (
/obj/structure/closet/crate/internals,
/obj/item/clothing/suit/hazardvest{
desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks.";
name = "emergency lifejacket"
},
/obj/item/clothing/suit/hazardvest{
desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks.";
name = "emergency lifejacket"
},
/obj/item/clothing/suit/hazardvest{
desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks.";
name = "emergency lifejacket"
},
/obj/item/clothing/suit/hazardvest{
desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks.";
name = "emergency lifejacket"
},
/obj/item/clothing/suit/hazardvest{
desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks.";
name = "emergency lifejacket"
},
/obj/item/flashlight,
/obj/item/flashlight,
/obj/item/flashlight,
/obj/item/flashlight,
/obj/item/flashlight,
/obj/machinery/computer/gateway_control,
/turf/open/floor/plasteel,
/area/gateway)
"arZ" = (
@@ -8904,6 +8801,32 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
},
/obj/structure/closet/crate/internals,
/obj/item/clothing/suit/hazardvest{
desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks.";
name = "emergency lifejacket"
},
/obj/item/clothing/suit/hazardvest{
desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks.";
name = "emergency lifejacket"
},
/obj/item/clothing/suit/hazardvest{
desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks.";
name = "emergency lifejacket"
},
/obj/item/clothing/suit/hazardvest{
desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks.";
name = "emergency lifejacket"
},
/obj/item/clothing/suit/hazardvest{
desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks.";
name = "emergency lifejacket"
},
/obj/item/flashlight,
/obj/item/flashlight,
/obj/item/flashlight,
/obj/item/flashlight,
/obj/item/flashlight,
/turf/open/floor/plasteel,
/area/gateway)
"auh" = (
@@ -39042,7 +38965,6 @@
/area/chapel/dock)
"bKe" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/obj/structure/closet/emcloset,
/turf/open/floor/plasteel/white{
heat_capacity = 1e+006
},
@@ -40077,12 +39999,6 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 8
},
/obj/machinery/light/small{
dir = 4
},
/obj/structure/chair{
dir = 1
},
/turf/open/floor/plasteel/white{
heat_capacity = 1e+006
},
@@ -47273,7 +47189,7 @@
"ceT" = (
/obj/effect/turf_decal/stripes/line,
/obj/structure/closet/emcloset,
/turf/open/floor/plating/airless,
/turf/open/floor/plating,
/area/engine/engineering)
"ceU" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on{
@@ -50404,9 +50320,11 @@
/turf/open/floor/plasteel,
/area/crew_quarters/heads/chief)
"cqW" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/closed/mineral,
/area/chapel/asteroid/monastery)
/obj/structure/chair,
/turf/open/floor/plasteel/white{
heat_capacity = 1e+006
},
/area/chapel/dock)
"cqX" = (
/obj/structure/disposalpipe/segment,
/obj/structure/lattice,
@@ -52993,7 +52911,7 @@
/turf/open/floor/plasteel/dark,
/area/security/main)
"cCT" = (
/obj/machinery/rnd/production/protolathe/department/cargo,
/obj/machinery/rnd/production/techfab/department/cargo,
/turf/open/floor/plasteel,
/area/quartermaster/storage)
"cCU" = (
@@ -55664,11 +55582,11 @@
/turf/open/floor/plating,
/area/crew_quarters/dorms)
"izF" = (
/turf/open/floor/plating{
initial_gas_mix = "o2=0.01;n2=0.01";
luminosity = 2
/obj/structure/closet/emcloset,
/turf/open/floor/plasteel/white{
heat_capacity = 1e+006
},
/area/maintenance/department/science)
/area/chapel/dock)
"iAx" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -57738,10 +57656,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 6
},
/turf/open/floor/plating{
initial_gas_mix = "o2=0.01;n2=0.01";
luminosity = 2
},
/turf/open/floor/plating,
/area/maintenance/department/science)
"nAs" = (
/obj/machinery/door/airlock/engineering/glass{
@@ -57904,7 +57819,7 @@
/obj/structure/disposalpipe/trunk{
dir = 8
},
/turf/open/floor/plating,
/turf/open/floor/plating/airless,
/area/space/nearstation)
"nOY" = (
/obj/effect/turf_decal/stripes/line{
@@ -58007,10 +57922,7 @@
/obj/structure/table,
/obj/item/paper_bin,
/obj/item/pen,
/turf/open/floor/plating{
initial_gas_mix = "o2=0.01;n2=0.01";
luminosity = 2
},
/turf/open/floor/plating,
/area/maintenance/department/science)
"odM" = (
/obj/effect/landmark/barthpot,
@@ -59532,14 +59444,13 @@
/turf/open/floor/plating/airless,
/area/space/nearstation)
"ros" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
/obj/machinery/light/small{
dir = 4
},
/turf/open/floor/plating{
initial_gas_mix = "o2=0.01;n2=0.01";
luminosity = 2
/turf/open/floor/plasteel/white{
heat_capacity = 1e+006
},
/area/maintenance/department/science)
/area/chapel/dock)
"rrb" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -60667,10 +60578,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 9
},
/turf/open/floor/plating{
initial_gas_mix = "o2=0.01;n2=0.01";
luminosity = 2
},
/turf/open/floor/plating,
/area/maintenance/department/science)
"uos" = (
/obj/machinery/computer/camera_advanced/base_construction,
@@ -61099,13 +61007,6 @@
/obj/structure/lattice,
/turf/open/space/basic,
/area/space/nearstation)
"vpz" = (
/obj/structure/girder,
/turf/open/floor/plating{
initial_gas_mix = "o2=0.01;n2=0.01";
luminosity = 2
},
/area/maintenance/department/science)
"vsk" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
@@ -61620,12 +61521,6 @@
},
/turf/open/floor/plating,
/area/maintenance/department/crew_quarters/bar)
"wDe" = (
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plasteel/white{
heat_capacity = 1e+006
},
/area/chapel/dock)
"wDl" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/stripes/corner,
@@ -62038,10 +61933,7 @@
/area/maintenance/department/science)
"xsO" = (
/obj/item/ectoplasm,
/turf/open/floor/plating{
initial_gas_mix = "o2=0.01;n2=0.01";
luminosity = 2
},
/turf/open/floor/plating,
/area/maintenance/department/science)
"xuv" = (
/obj/item/broken_bottle,
@@ -75866,8 +75758,8 @@ aaa
bGI
bNs
cfN
cqW
cqW
cfN
cfN
cfN
cfN
bZY
@@ -76379,7 +76271,7 @@ aaa
aaa
bGI
bNs
cqW
cfN
bOw
cfN
bOw
@@ -80477,7 +80369,7 @@ aaa
aht
aqG
bGE
bKf
cqW
bKf
bMw
bNy
@@ -80734,8 +80626,8 @@ aht
aht
aqG
bGE
bKf
bKf
izF
ros
bMx
bNz
bHM
@@ -80991,7 +80883,7 @@ aaa
aaa
aqG
bGE
wDe
bGE
bHM
bHM
bNA
@@ -97884,8 +97776,8 @@ aaa
aaa
aaa
lcZ
aoA
apq
apW
apV
apU
aqQ
arX
@@ -98398,8 +98290,8 @@ aiT
aiS
aaa
lcZ
aoC
aps
apU
apV
apW
aqS
arZ
@@ -107723,7 +107615,7 @@ aht
bwm
ikB
iVJ
izF
lWy
typ
bwm
aht
@@ -108233,7 +108125,7 @@ bwm
svN
bIQ
uek
izF
lWy
bwm
qnT
lJr
@@ -108488,9 +108380,9 @@ dMO
lWy
rxQ
lWy
ros
izF
izF
bIQ
lWy
lWy
mES
lWy
lWy
@@ -108747,7 +108639,7 @@ bwm
nzD
uoj
bwm
izF
lWy
bwm
dMI
lWy
@@ -109001,7 +108893,7 @@ bkF
bwm
bwm
bwm
ros
bIQ
bwm
bwm
bwm
@@ -109258,8 +109150,8 @@ bkF
qIO
jXA
bwm
ros
vpz
bIQ
hXt
bwm
aht
bwm
+1
View File
@@ -23,6 +23,7 @@ GLOBAL_VAR_INIT(script_scripture_unlocked, FALSE) //If script scripture is avail
GLOBAL_VAR_INIT(application_scripture_unlocked, FALSE) //If application scripture is available
GLOBAL_VAR_INIT(judgement_scripture_unlocked, FALSE) //If judgement scripture is available
GLOBAL_LIST_EMPTY(all_scripture) //a list containing scripture instances; not used to track existing scripture
GLOBAL_LIST_EMPTY(all_clockwork_rites) //a list containing all clockwork rites. Filled the first time any cultist interacts with a sigil of rites.
//Scripture tiers and requirements; peripherals should never be used
#define SCRIPTURE_PERIPHERAL "Peripheral"
+3
View File
@@ -452,6 +452,9 @@
#define COMPONENT_TWOHANDED_BLOCK_WIELD 1
#define COMSIG_TWOHANDED_UNWIELD "twohanded_unwield" //from base of datum/component/two_handed/proc/unwield(mob/living/carbon/user): (/mob/user)
// /datum/component/squeak signals
#define COMSIG_CROSS_SQUEAKED "cross_squeaked" // sent when a squeak component squeaks from crossing something, to delay anything else crossing that might squeak to prevent ear hurt.
// /datum/action signals
#define COMSIG_ACTION_TRIGGER "action_trigger" //from base of datum/action/proc/Trigger(): (datum/action)
#define COMPONENT_ACTION_BLOCK_TRIGGER 1
+56
View File
@@ -0,0 +1,56 @@
//defines for loadout categories
//no category defines
#define LOADOUT_CATEGORY_NONE "ERROR"
#define LOADOUT_SUBCATEGORY_NONE "Miscellaneous"
#define LOADOUT_SUBCATEGORIES_NONE list("Miscellaneous")
//backpack
#define LOADOUT_CATEGORY_BACKPACK "In backpack"
#define LOADOUT_SUBCATEGORY_BACKPACK_GENERAL "General" //basically anything that there's not enough of to have its own subcategory
#define LOADOUT_SUBCATEGORY_BACKPACK_TOYS "Toys"
//neck
#define LOADOUT_CATEGORY_NECK "Neck"
#define LOADOUT_SUBCATEGORY_NECK_GENERAL "General"
#define LOADOUT_SUBCATEGORY_NECK_TIE "Ties"
#define LOADOUT_SUBCATEGORY_NECK_SCARVES "Scarves"
//mask
#define LOADOUT_CATEGORY_MASK "Mask"
//hands
#define LOADOUT_CATEGORY_HANDS "Hands"
//uniform
#define LOADOUT_CATEGORY_UNIFORM "Uniform" //there's so many types of uniform it's best to have lots of categories
#define LOADOUT_SUBCATEGORY_UNIFORM_GENERAL "General"
#define LOADOUT_SUBCATEGORY_UNIFORM_JOBS "Jobs"
#define LOADOUT_SUBCATEGORY_UNIFORM_SUITS "Suits"
#define LOADOUT_SUBCATEGORY_UNIFORM_SKIRTS "Skirts"
#define LOADOUT_SUBCATEGORY_UNIFORM_DRESSES "Dresses"
#define LOADOUT_SUBCATEGORY_UNIFORM_SWEATERS "Sweaters"
#define LOADOUT_SUBCATEGORY_UNIFORM_PANTS "Pants"
#define LOADOUT_SUBCATEGORY_UNIFORM_SHORTS "Shorts"
//suit
#define LOADOUT_CATEGORY_SUIT "Suit"
#define LOADOUT_SUBCATEGORY_SUIT_GENERAL "General"
#define LOADOUT_SUBCATEGORY_SUIT_COATS "Coats"
#define LOADOUT_SUBCATEGORY_SUIT_JACKETS "Jackets"
#define LOADOUT_SUBCATEGORY_SUIT_JOBS "Jobs"
//head
#define LOADOUT_CATEGORY_HEAD "Head"
#define LOADOUT_SUBCATEGORY_HEAD_GENERAL "General"
#define LOADOUT_SUBCATEGORY_HEAD_JOBS "Jobs"
//shoes
#define LOADOUT_CATEGORY_SHOES "Shoes"
//gloves
#define LOADOUT_CATEGORY_GLOVES "Gloves"
//glasses
#define LOADOUT_CATEGORY_GLASSES "Glasses"
//donator items
#define LOADOUT_CATEGORY_DONATOR "Donator"
+17 -1
View File
@@ -113,6 +113,22 @@
else
return trim(html_encode(name), max_length)
/**
* stripped_multiline_input but reflects to the user instead if it's too big and returns null.
*/
/proc/stripped_multiline_input_or_reflect(mob/user, message = "", title = "", default = "", max_length=MAX_MESSAGE_LEN, no_trim=FALSE)
var/name = input(user, message, title, default) as message|null
if(isnull(name)) // Return null if canceled.
return null
if(length(name) > max_length)
to_chat(user, name)
to_chat(user, "<span class='danger'>^^^----- The preceeding message has been DISCARDED for being over the maximum length of [max_length]. It has NOT been sent! -----^^^</span>")
return null
if(no_trim)
return copytext(html_encode(name), 1, max_length)
else
return trim(html_encode(name), max_length)
#define NO_CHARS_DETECTED 0
#define SPACES_DETECTED 1
#define SYMBOLS_DETECTED 2
@@ -811,4 +827,4 @@ GLOBAL_LIST_INIT(binary, list("0","1"))
corrupted_text += pick(corruption_options)
if(prob(15))
corrupted_text += pick(corruption_options)
return corrupted_text
return corrupted_text
@@ -0,0 +1,13 @@
GLOBAL_LIST_INIT(loadout_categories, list(
LOADOUT_CATEGORY_BACKPACK = list(LOADOUT_SUBCATEGORY_BACKPACK_GENERAL, LOADOUT_SUBCATEGORY_BACKPACK_TOYS),
LOADOUT_CATEGORY_NECK = list(LOADOUT_SUBCATEGORY_NECK_GENERAL, LOADOUT_SUBCATEGORY_NECK_TIE, LOADOUT_SUBCATEGORY_NECK_SCARVES),
LOADOUT_CATEGORY_MASK = LOADOUT_SUBCATEGORIES_NONE,
LOADOUT_CATEGORY_HANDS = LOADOUT_SUBCATEGORIES_NONE,
LOADOUT_CATEGORY_UNIFORM = list(LOADOUT_SUBCATEGORY_UNIFORM_GENERAL, LOADOUT_SUBCATEGORY_UNIFORM_JOBS, LOADOUT_SUBCATEGORY_UNIFORM_SUITS, LOADOUT_SUBCATEGORY_UNIFORM_SKIRTS, LOADOUT_SUBCATEGORY_UNIFORM_DRESSES, LOADOUT_SUBCATEGORY_UNIFORM_SWEATERS, LOADOUT_SUBCATEGORY_UNIFORM_PANTS, LOADOUT_SUBCATEGORY_UNIFORM_SHORTS),
LOADOUT_CATEGORY_SUIT = list(LOADOUT_SUBCATEGORY_SUIT_GENERAL, LOADOUT_SUBCATEGORY_SUIT_COATS, LOADOUT_SUBCATEGORY_SUIT_JACKETS, LOADOUT_SUBCATEGORY_SUIT_JOBS),
LOADOUT_CATEGORY_HEAD = list(LOADOUT_SUBCATEGORY_HEAD_GENERAL, LOADOUT_SUBCATEGORY_HEAD_JOBS),
LOADOUT_CATEGORY_SHOES = LOADOUT_SUBCATEGORIES_NONE,
LOADOUT_CATEGORY_GLOVES = LOADOUT_SUBCATEGORIES_NONE,
LOADOUT_CATEGORY_GLASSES = LOADOUT_SUBCATEGORIES_NONE,
LOADOUT_CATEGORY_DONATOR = LOADOUT_SUBCATEGORIES_NONE
))
+4 -4
View File
@@ -674,7 +674,7 @@ SUBSYSTEM_DEF(job)
return
for(var/i in the_mob.client.prefs.chosen_gear)
var/datum/gear/G = i
G = GLOB.loadout_items[slot_to_string(initial(G.category))][initial(G.name)]
G = GLOB.loadout_items[initial(G.category)][initial(G.subcategory)][initial(G.name)]
if(!G)
continue
var/permitted = TRUE
@@ -682,14 +682,14 @@ SUBSYSTEM_DEF(job)
permitted = FALSE
if(G.donoritem && !G.donator_ckey_check(the_mob.client.ckey))
permitted = FALSE
if(!equipbackpackstuff && G.category == SLOT_IN_BACKPACK)//snowflake check since plopping stuff in the backpack doesnt work for pre-job equip loadout stuffs
if(!equipbackpackstuff && G.slot == SLOT_IN_BACKPACK)//snowflake check since plopping stuff in the backpack doesnt work for pre-job equip loadout stuffs
permitted = FALSE
if(equipbackpackstuff && G.category != SLOT_IN_BACKPACK)//ditto
if(equipbackpackstuff && G.slot != SLOT_IN_BACKPACK)//ditto
permitted = FALSE
if(!permitted)
continue
var/obj/item/I = new G.path
if(!M.equip_to_slot_if_possible(I, G.category, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) // If the job's dresscode compliant, try to put it in its slot, first
if(!M.equip_to_slot_if_possible(I, G.slot, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) // If the job's dresscode compliant, try to put it in its slot, first
if(iscarbon(M))
var/mob/living/carbon/C = M
var/obj/item/storage/backpack/B = C.back
+24 -3
View File
@@ -11,6 +11,13 @@
// This is to stop squeak spam from inhand usage
var/last_use = 0
var/use_delay = 20
// squeak cooldowns
var/last_squeak = 0
var/squeak_delay = 5
/// chance we'll be stopped from squeaking by cooldown when something crossing us squeaks
var/cross_squeak_delay_chance = 33 // about 3 things can squeak at a time
/datum/component/squeak/Initialize(custom_sounds, volume_override, chance_override, step_delay_override, use_delay_override)
if(!isatom(parent))
@@ -19,6 +26,7 @@
if(ismovable(parent))
RegisterSignal(parent, list(COMSIG_MOVABLE_BUMP, COMSIG_MOVABLE_IMPACT), .proc/play_squeak)
RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED, COMSIG_ITEM_WEARERCROSSED), .proc/play_squeak_crossed)
RegisterSignal(parent, COMSIG_CROSS_SQUEAKED, .proc/delay_squeak)
RegisterSignal(parent, COMSIG_MOVABLE_DISPOSING, .proc/disposing_react)
if(isitem(parent))
RegisterSignal(parent, list(COMSIG_ITEM_ATTACK, COMSIG_ITEM_ATTACK_OBJ, COMSIG_ITEM_HIT_REACT), .proc/play_squeak)
@@ -39,20 +47,28 @@
use_delay = use_delay_override
/datum/component/squeak/proc/play_squeak()
do_play_squeak()
/datum/component/squeak/proc/do_play_squeak(bypass_cooldown = FALSE)
if(!bypass_cooldown && ((last_squeak + squeak_delay) >= world.time))
return FALSE
if(prob(squeak_chance))
if(!override_squeak_sounds)
playsound(parent, pickweight(default_squeak_sounds), volume, 1, -1)
else
playsound(parent, pickweight(override_squeak_sounds), volume, 1, -1)
last_squeak = world.time
return TRUE
return FALSE
/datum/component/squeak/proc/step_squeak()
if(steps > step_delay)
play_squeak()
do_play_squeak(TRUE)
steps = 0
else
steps++
/datum/component/squeak/proc/play_squeak_crossed(atom/movable/AM)
/datum/component/squeak/proc/play_squeak_crossed(datum/source, atom/movable/AM)
if(isitem(AM))
var/obj/item/I = AM
if(I.item_flags & ABSTRACT)
@@ -63,13 +79,18 @@
return
var/atom/current_parent = parent
if(isturf(current_parent.loc))
play_squeak()
if(do_play_squeak())
SEND_SIGNAL(AM, COMSIG_CROSS_SQUEAKED)
/datum/component/squeak/proc/use_squeak()
if(last_use + use_delay < world.time)
last_use = world.time
play_squeak()
/datum/component/squeak/proc/delay_squeak()
if(prob(cross_squeak_delay_chance))
last_squeak = world.time
/datum/component/squeak/proc/on_equip(datum/source, mob/equipper, slot)
RegisterSignal(equipper, COMSIG_MOVABLE_DISPOSING, .proc/disposing_react, TRUE)
+2
View File
@@ -105,6 +105,8 @@
/// Triggered on attack self of the item containing the component
/datum/component/two_handed/proc/on_attack_self(datum/source, mob/user)
if(!user.is_holding(parent))
return //give no quarter to telekinesis powergaemrs (telekinetic wielding will desync the offhand and result in all sorts of bugs so no until someone codes it properly)
if(wielded)
unwield(user)
else
+1 -1
View File
@@ -60,7 +60,7 @@
if(L.stat == DEAD)
continue
if(light_nutrition_gain)
L.adjust_nutrition(light_amount * light_nutrition_gain * attached_atoms[AM], NUTRITION_LEVEL_FULL)
L.adjust_nutrition(light_amount * light_nutrition_gain * attached_atoms[AM], NUTRITION_LEVEL_WELL_FED)
if(light_amount > bonus_lum || light_amount < malus_lum)
var/mult = ((light_amount > bonus_lum) ? 1 : -1) * attached_atoms[AM]
if(light_bruteheal)
+2 -2
View File
@@ -562,8 +562,8 @@
owner.DefaultCombatKnockdown(15, TRUE, FALSE, 15)
if(iscarbon(owner))
var/mob/living/carbon/C = owner
C.silent = max(2, C.silent)
C.stuttering = max(5, C.stuttering)
C.silent = max(5, C.silent) //Increased, now lasts until five seconds after it ends, instead of 2
C.stuttering = max(10, C.stuttering) //Increased, now lasts for five seconds after the mute ends, instead of 3
if(!old_health)
old_health = owner.health
if(!old_oxyloss)
+6 -6
View File
@@ -253,8 +253,8 @@
occur_text = "is cut open, slowly leaking blood"
sound_effect = 'sound/effects/wounds/blood1.ogg'
severity = WOUND_SEVERITY_MODERATE
initial_flow = 2
minimum_flow = 0.5
initial_flow = 1.5
minimum_flow = 0.375
max_per_type = 3
clot_rate = 0.12
threshold_minimum = 30
@@ -270,8 +270,8 @@
occur_text = "is ripped open, veins spurting blood"
sound_effect = 'sound/effects/wounds/blood2.ogg'
severity = WOUND_SEVERITY_SEVERE
initial_flow = 3.25
minimum_flow = 2.75
initial_flow = 2.4375
minimum_flow = 2.0625
clot_rate = 0.07
max_per_type = 4
threshold_minimum = 60
@@ -288,8 +288,8 @@
occur_text = "is torn open, spraying blood wildly"
sound_effect = 'sound/effects/wounds/blood3.ogg'
severity = WOUND_SEVERITY_CRITICAL
initial_flow = 4.25
minimum_flow = 4
initial_flow = 3.1875
minimum_flow = 3
clot_rate = -0.05 // critical cuts actively get worse instead of better
max_per_type = 5
threshold_minimum = 90
@@ -213,6 +213,9 @@ Credit where due:
var/list/slots = list("In your left pocket" = SLOT_L_STORE, "In your right pocket" = SLOT_R_STORE, "In your backpack" = SLOT_IN_BACKPACK)
if(ishuman(L))
var/mob/living/carbon/human/H = L
var/obj/item/clockwork/replica_fabricator/F = new
if(H.equip_to_slot_or_del(F, SLOT_IN_BACKPACK))
to_chat(H, "<span class='brass'>You have been equipped with a replica fabricator, an advanced tool that can convert objects like doors, tables or even coats into clockwork equivalents.</span>")
slot = H.equip_in_one_of_slots(S, slots)
if(slot == "In your backpack")
slot = "In your [H.back.name]"
+1 -1
View File
@@ -79,7 +79,7 @@
ADD_TRAIT(user, granted_trait, BOOK_TRAIT)
/obj/item/book/granter/trait/rifleman
name = "\proper the Neo-Russian Rifleman\'s Primer"
name = "The Neo-Russian Rifleman\'s Primer"
desc = "A book with stains of vodka and...blood? The back is hard to read, but says something about bolt-actions. Or pump-actions. Both, maybe."
oneuse = FALSE
granted_trait = TRAIT_FAST_PUMP
+2 -2
View File
@@ -106,8 +106,8 @@
var/disarming = (target_downed && (shield_flags & SHIELD_BASH_GROUND_SLAM_DISARM)) || (shield_flags & SHIELD_BASH_ALWAYS_DISARM) || (wallhit && (shield_flags & SHIELD_BASH_WALL_DISARM))
var/knockdown = !target_downed && ((shield_flags & SHIELD_BASH_ALWAYS_KNOCKDOWN) || (wallhit && (shield_flags & SHIELD_BASH_WALL_KNOCKDOWN)))
if(shieldbash_stagger_duration || knockdown)
target.visible_message("<span class='warning'>[target] is knocked [knockdown? "to the floor" : "off balanace"]!</span>",
"<span class='userdanger'>You are knocked [knockdown? "to the floor" : "off balanace"]!</span>")
target.visible_message("<span class='warning'>[target] is knocked [knockdown? "to the floor" : "off balance"]!</span>",
"<span class='userdanger'>You are knocked [knockdown? "to the floor" : "off balance"]!</span>")
if(knockdown)
target.KnockToFloor(disarming)
else if(disarming)
@@ -409,7 +409,7 @@
/obj/item/storage/box/syndie_kit/revolver
/obj/item/storage/box/syndie_kit/revolver/PopulateContents()
new /obj/item/gun/ballistic/revolver(src)
new /obj/item/gun/ballistic/revolver/syndicate(src)
new /obj/item/ammo_box/a357(src)
/obj/item/storage/box/syndie_kit/pistol
@@ -26,7 +26,8 @@
/turf/open/floor/wood/screwdriver_act(mob/living/user, obj/item/I)
if(..())
return TRUE
return pry_tile(I, user)
. = STOP_ATTACK_PROC_CHAIN
pry_tile(I, user)
/turf/open/floor/wood/try_replace_tile(obj/item/stack/tile/T, mob/user, params)
if(T.turf_type == type)
@@ -405,3 +405,49 @@
animation_number = initial(animation_number)
sigil_active = FALSE
animate(src, alpha = initial(alpha), time = 10, flags = ANIMATION_END_NOW)
/obj/effect/clockwork/sigil/rite
name = "radiant sigil"
desc = "A glowing sigil glowing with barely-contained power."
clockwork_desc = "A sigil that will allow you to perform certain rites on it, provided you have access to sufficient power and materials."
icon_state = "sigiltransmission" //am big lazy - recolored transmission sigil
sigil_name = "Sigil of Rites"
alpha = 255
var/performing_rite = FALSE
color = "#ffe63a"
light_color = "#ffe63a"
light_range = 1
light_power = 2
/obj/effect/clockwork/sigil/rite/on_attack_hand(mob/living/user, act_intent = user.a_intent, unarmed_attack_flags)
. = ..()
if(.)
return
if(!is_servant_of_ratvar(user))
return
if(!GLOB.all_clockwork_rites.len) //Did we already generate the list?
generate_all_rites()
if(performing_rite)
to_chat(user, "<span class='warning'>Someone is already performing a rite here!")
return
var/list/possible_rites = list()
for(var/datum/clockwork_rite/R in GLOB.all_clockwork_rites)
possible_rites[R] = R
var/input_key = input(user, "Choose a rite", "Choosing a rite") as null|anything in possible_rites
if(!input_key)
return
var/datum/clockwork_rite/CR = possible_rites[input_key]
if(!CR)
return
var/choice = alert(user, "What to do with this rite?", "What to do?", "Cast", "Show Info", "Cancel")
switch(choice)
if("Cast")
CR.try_cast(src, user)
if("Show Info")
var/infotext = CR.build_info()
to_chat(user, infotext)
/obj/effect/clockwork/sigil/rite/proc/generate_all_rites() //The first time someone uses a sigil of rites, all the rites are actually generated. No need to have a bunch of random datums laying around all the time.
for(var/V in subtypesof(/datum/clockwork_rite))
var/datum/clockwork_rite/R = new V
GLOB.all_clockwork_rites += R
@@ -0,0 +1,196 @@
//This file is for clock rites, mainly used by the Sigil of Rites in clock_sigils.dm
//The rites themselves are in this file to prevent bloating the other file too much, aswell as for easier access
#define INFINITE -1
//The base clockwork rite. This should never be visible
/datum/clockwork_rite
var/name = "Rite of THE frog" //The name of the rite
var/desc = "This rite is used to summon the legendary frog whose-name-shall-not-be-spoken, ender of many worlds." //What does this rite do? Shown to cultists if they choose 'Show Info' after selecting the rite.
var/list/required_ingredients = list(/obj/item/clockwork) //What does this rite require?
var/power_cost = 0 //How much power does this rite cost.. or does it even add power?
var/requires_human = FALSE //Does the rite require a ../carbon/human on the rune?
var/must_be_servant = TRUE //If the above is true, does the human need to be a servant?
var/target_can_be_invoker = TRUE //Does this rite work if the invoker is also the target?
var/cast_time = 0 //How long does the rite take to cast?
var/limit = INFINITE //How often can this rite be used per round? Set this to INFINITE for unlimited, 0 for disallowed, anything above 0 for a limit
var/times_used = 0 //How often has the rite already been used this shift?
var/rite_cast_sound = 'sound/items/bikehorn.ogg' //The sound played when successfully casting the rite. If it honks, the one adding the rite forgot to set one (or was just lazy).
/datum/clockwork_rite/proc/try_cast(var/obj/effect/clockwork/sigil/rite/R, var/mob/living/invoker) //Performs a ton of checks to see if the invoker can cast the rite
if(!istype(R))
return FALSE
if(!R || !R.loc)
return FALSE
var/turf/T = R.loc
if(!T) //Uh oh something is fucky
return FALSE
if(limit != INFINITE && times_used >= limit) //Is the limit on casts exceeded?
to_chat(invoker, "<span class='brass'>There are no more uses left for this rite!</span>")
return FALSE
var/mob/living/carbon/human/H //This is only used if requires_human is TRUE
if(requires_human) //In case this requires a target
for(var/mob/living/carbon/human/possible_H in T)
if((!must_be_servant || is_servant_of_ratvar(possible_H)) && (target_can_be_invoker || invoker != possible_H))
H = possible_H
break
if(!H)
to_chat(invoker, "<span class='brass'>There is no target for the rite on the sigil!</span>")
return FALSE
if(required_ingredients.len) //In case this requires materials
var/is_missing_materials = FALSE
for(var/I in required_ingredients)
var/obj/item/Material = locate(I) in T
if(!Material)
is_missing_materials = TRUE
break
if(is_missing_materials)
var/still_required_string = ""
for(var/i = 1 to required_ingredients.len)
var/obj/O = required_ingredients[i]
if(i != 1)
still_required_string += ", "
still_required_string += "a [initial(O.name)]"
to_chat(invoker, "<span class='brass'>There are still materials missing for this rite. You require [still_required_string].</span>")
return FALSE
if(power_cost) //If this costs power
if(!get_clockwork_power(power_cost))
to_chat(invoker, "<span class='brass'>There is not enough power for this rite!</span>")
return FALSE
R.performing_rite = TRUE
if(!do_after(invoker, cast_time, target = R))
to_chat(invoker, "<span class='warning'>Your rite is disrupted.</span>")
R.performing_rite = FALSE
return FALSE
. = cast(invoker, T, H)
if(!.)
to_chat(invoker, "<span class='warning'> You fail casting [name]</span>")
post_cast(FALSE)
else
to_chat(invoker, "<span class='warning'>You successfully cast [name]</span>")
post_cast(TRUE)
R.performing_rite = FALSE
return
/datum/clockwork_rite/proc/cast(var/mob/living/invoker, var/turf/T, var/mob/living/carbon/human/target) //Casts the rite and uses up ingredients. Doublechecks some things to prevent bypassing some restrictions via funky timing or badminnery.
if(!T || !invoker)
return FALSE
if(requires_human && !target)
return FALSE
if(power_cost && !get_clockwork_power(power_cost))
return FALSE
adjust_clockwork_power(-power_cost)
if(limit != INFINITE && times_used >= limit)
return FALSE
if(required_ingredients.len)
var/is_missing_materials = FALSE
for(var/I in required_ingredients)
var/obj/item/Material = locate(I) in T
if(!Material)
is_missing_materials = TRUE
break
qdel(Material)
if(is_missing_materials)
return FALSE
playsound(T, rite_cast_sound, 50, 2)
return TRUE
/datum/clockwork_rite/proc/post_cast(var/cast_succeeded)
if(cast_succeeded)
times_used++
return TRUE
/datum/clockwork_rite/proc/build_info() //Constructs the info text of a given rite, based on the vars of the rite
. = ""
. += "<span class='brass'>This is the <b>[name]</b>.\n"
. += "[desc]\n"
. += "It requires: "
if(required_ingredients.len)
var/material_string = ""
for(var/i = 1 to required_ingredients.len)
var/obj/O = required_ingredients[i]
if(i != 1)
material_string += ", "
material_string += "a [initial(O.name)]"
. += "[material_string].\n"
else
. += "</span><span class='inathneq_small'><b>no</b><span class='brass'> materials.\n"
. += "It [power_cost >= 0 ? "costs" : "generates"]<span class='inathneq_small'><b> [power_cost ? "[power_cost]" : "no"] </b><span class='brass'>power.\n"
. += "It requires <span class='inathneq_small'><b>[requires_human ? " a human" : " no"]</b><span class='brass'> target.\n"
if(requires_human)
. += "The target <span class='inathneq_small'><b>[must_be_servant ? "cannot be" : "can be"] </b><span class='brass'> a nonservant.\n"
. += "The target <span class='inathneq_small'><b>[target_can_be_invoker ? "can be" : "cannot be"]</b><span class='brass'> the invoker.\n"
. += "It requires <span class='inathneq_small'><b>[cast_time/10]</b><span class='brass'> seconds to cast.\n"
. += "It has been used <span class='inathneq_small'><b>[times_used]</b><span class='brass'> time[times_used != 1 ? "s" : ""], out of <span class='inathneq_small'><b>[limit != INFINITE ? "[limit]" : "infinite"]</b><span class='brass'> available uses.</span>"
//Adds a organ or cybernetic implant to a servant without the need for surgery. Cannot be used with brains for.. reasons.
/datum/clockwork_rite/advancement
name = "Rite of Advancement"
desc = "This rite is used to augment a servant with organs or cybernetic implants. The organ of choice, aswell as the servant and the required ingredients must be placed on the sigil for this rite to take place."
required_ingredients = list(/obj/item/assembly/prox_sensor, /obj/item/stock_parts/cell)
power_cost = 500
requires_human = TRUE
cast_time = 40
rite_cast_sound = 'sound/magic/blind.ogg'
/datum/clockwork_rite/advancement/cast(var/mob/living/invoker, var/turf/T, var/mob/living/carbon/human/target)
var/obj/item/organ/O = locate(/obj/item/organ) in T
if(!O)
return FALSE
if(istype(O, /obj/item/organ/brain)) //NOPE
return FALSE
. = ..()
if(!.)
return FALSE
O.Insert(target)
new /obj/effect/temp_visual/ratvar/sigil/transgression(T)
//Heals all wounds (not damage) on the target, causing toxloss proportional to amount of wounds healed. 10 damage per wound.
/datum/clockwork_rite/treat_wounds
name = "Rite of Woundmending"
desc = "This rite is used to heal wounds of the servant on the rune. It causes toxins damage proportional to the amount of wounds healed. This can be lethal if performed on an critically injured target."
required_ingredients = list(/obj/item/stock_parts/cell, /obj/item/healthanalyzer, /obj/item/reagent_containers/food/drinks/bottle/holyoil)
power_cost = 300
requires_human = TRUE
must_be_servant = FALSE
target_can_be_invoker = FALSE
cast_time = 80
rite_cast_sound = 'sound/magic/staff_healing.ogg'
/datum/clockwork_rite/treat_wounds/cast(var/mob/living/invoker, var/turf/T, var/mob/living/carbon/human/target)
if(!target)
return FALSE
if(!target.all_wounds.len)
to_chat(invoker, "<span class='inathneq_small'>This one does not require mending.</span>")
return FALSE
.= ..()
if(!.)
return FALSE
target.adjustToxLoss(10 * target.all_wounds.len)
QDEL_LIST(target.all_wounds)
to_chat(target, "<span class='warning'>You feel your wounds heal, but are overcome with deep nausea.</span>")
new /obj/effect/temp_visual/ratvar/sigil/vitality(T)
//Summons a brass claw implant on the sigil, which can extend a claw that benefits from repeatedly attacking a single target. Can only be cast a limited amount of times.
/datum/clockwork_rite/summon_claw
name = "Rite of the Claw"
desc = "Summons a special arm implant that, when added to a servant's limb, will allow them to extend and retract a claw at will. Don't leave any implants you want to keep on this rune when casting the rite."
required_ingredients = list(/obj/item/stock_parts/cell, /obj/item/organ/cyberimp, /obj/item/assembly/flash)
power_cost = 1000
cast_time = 60
limit = 4
rite_cast_sound = 'sound/magic/clockwork/fellowship_armory.ogg'
/datum/clockwork_rite/summon_claw/cast(var/mob/living/invoker, var/turf/T, var/mob/living/carbon/human/target)
. = ..()
if(!.)
return FALSE
var/obj/item/organ/cyberimp/arm/clockwork/claw/CL = new /obj/item/organ/cyberimp/arm/clockwork/claw(T)
CL.visible_message("<span class='warning'>[CL] materialises out of thin air!")
new /obj/effect/temp_visual/ratvar/sigil/transmission(T,2)
#undef INFINITE
@@ -0,0 +1,32 @@
//This file is for snowflakey clock augmentations and clock-themed cybernetic implants.
//The base clockie arm implant, which only clock cultist can use unless it is emagged. THIS SHOULD NEVER ACTUALLY EXIST
/obj/item/organ/cyberimp/arm/clockwork
name = "clock-themed arm-mounted implant"
var/clockwork_desc = "According to Ratvar, this really shouldn't exist. Tell Him about this immediately."
syndicate_implant = TRUE
icon_state = "clock_arm_implant"
/obj/item/organ/cyberimp/arm/clockwork/ui_action_click()
if(is_servant_of_ratvar(owner) || (obj_flags & EMAGGED)) //If you somehow manage to steal a clockie's implant AND have an emag AND manage to get it implanted for yourself, good on ya!
return ..()
to_chat(owner, "<span class='warning'>The implant refuses to activate..</span>")
/obj/item/organ/cyberimp/arm/clockwork/examine(mob/user)
if((is_servant_of_ratvar(user) || isobserver(user)) && clockwork_desc)
desc = clockwork_desc
. = ..()
desc = initial(desc)
/obj/item/organ/cyberimp/arm/clockwork/emag_act()
if(obj_flags & EMAGGED)
return
obj_flags |= EMAGGED
to_chat(usr, "<span class='notice'>You emag [src], hoping it'll achieve something..</span>")
//Brass claw implant. Holds the brass claw from brass_claw.dm and can extend / retract it at will.
/obj/item/organ/cyberimp/arm/clockwork/claw
name = "brass claw implant"
desc = "Yikes, the claw attached to this looks pretty darn sharp."
clockwork_desc = "This implant, when added to a servant's arm, allows them to extend and retract a claw at will, though this is mildly painful to do. It will refuse to work for any non-servants."
contents = newlist(/obj/item/clockwork/brass_claw)
@@ -0,0 +1,51 @@
//Brass claw, an armblade-like weapon used by a clock implant. Stealthy if retracted, very obvious if active.
//Bit weaker than an armblade strength-wise but gains combo on consecutive attacks against the same target, which causes bonus damage
/obj/item/clockwork/brass_claw
name = "brass claw"
desc = "A very sharp claw made out of brass."
clockwork_desc = "A incredibly sharp claw made out of brass. It is quite effective at crippling enemies, though very obvious when extended.\nGains combo on consecutive attacks against a target, causing bonus damage."
icon_state = "brass_claw" //Codersprite moment
item_state = "brass_claw"
lefthand_file = 'icons/mob/inhands/antag/clockwork_lefthand.dmi'
righthand_file = 'icons/mob/inhands/antag/clockwork_righthand.dmi'
w_class = WEIGHT_CLASS_HUGE
force = 15 //Doesn't generate vitality like the spear does / has somewhat less damage, but quite good at wounding and gets through armor pretty well. Also gains 2 bonus damage per consecutive attack on the same target
throwforce = 0 //haha yes lets be safe about this
throw_range = 0
throw_speed = 0
armour_penetration = 20
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
sharpness = SHARP_EDGED
wound_bonus = 5
bare_wound_bonus = 15
total_mass = TOTAL_MASS_HAND_REPLACEMENT
var/mob/living/last_attacked
var/combo = 0
var/damage_per_combo = 2
var/maximum_combo_damage = 18 //33 damage on max stacks. Usually the target will already be dead by then but if they somehow aren't, better to have this capped
/obj/item/clockwork/brass_claw/Initialize()
. = ..()
AddComponent(/datum/component/butchering, 60, 80)
/obj/item/clockwork/brass_claw/examine(mob/user)
if(is_servant_of_ratvar(user))
clockwork_desc += "\n<span class='brass'>It has </span><span class='inathneq_small'><b>[combo]</span></b><span class='brass'> combo stacks built up against the current target, causing </span><span class='inathneq_small'><b>[min(maximum_combo_damage, combo * damage_per_combo)]</span></b><span class='brass'> bonus damage.</span>"
. = ..()
clockwork_desc = initial(clockwork_desc)
/obj/item/clockwork/brass_claw/attack(mob/living/target, mob/living/carbon/human/user)
. = ..()
if(QDELETED(target) || target.anti_magic_check(chargecost = 0) || is_servant_of_ratvar(target))
return
if(target != last_attacked) //Loses all combat on switching targets
last_attacked = target
combo = 0
else
if(!iscultist(target)) //Hostile cultists being hit stacks up combo far faster than usual
combo++
else
combo += 3
target.adjustBruteLoss(min(maximum_combo_damage, combo * damage_per_combo))
@@ -12,6 +12,8 @@
attack_verb = list("stabbed", "poked", "slashed")
hitsound = 'sound/weapons/bladeslice.ogg'
w_class = WEIGHT_CLASS_BULKY
block_parry_data = /datum/block_parry_data/ratvarian_spear
item_flags = ITEM_CAN_PARRY
var/bonus_burn = 5
/obj/item/clockwork/weapon/ratvarian_spear/ratvar_act()
@@ -43,7 +45,7 @@
else if(iscultist(target) || isconstruct(target))
to_chat(target, "<span class='userdanger'>Your body flares with agony at [src]'s presence!</span>")
bonus_damage *= 3 //total 30 damage on cultists, 50 with ratvar
GLOB.clockwork_vitality += target.adjustFireLoss(bonus_damage) //adds the damage done to existing vitality
GLOB.clockwork_vitality += max(0, target.adjustFireLoss(bonus_damage)) //adds the damage done to existing vitality
/obj/item/clockwork/weapon/ratvarian_spear/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum)
var/turf/T = get_turf(hit_atom)
@@ -80,3 +82,15 @@
new /obj/effect/temp_visual/ratvar/spearbreak(T)
action.weapon_reset(RATVARIAN_WEAPON_COOLDOWN)
//A very short, very effective parry that counts on you predicting when the enemy will attack.
/datum/block_parry_data/ratvarian_spear
parry_time_windup = 0 //Very good for predicting
parry_time_active = 3 //Very short
parry_time_spindown = 1
parry_time_perfect = 2
parry_efficiency_perfect = 110 //Very low leeway for counterattacks...
parry_efficiency_considered_successful = 0.8
parry_efficiency_to_counterattack = 1
parry_cooldown = 15 //But also very low cooldown..
parry_failed_stagger_duration = 2 SECONDS //And relatively small penalties for failing.
parry_failed_clickcd_duration = 1 SECONDS
@@ -97,7 +97,7 @@
desc = "Charges your slab with divine energy, allowing you to overwhelm a target with Ratvar's light."
invocations = list("Divinity, show them your light!")
whispered = TRUE
channel_time = 10 // I think making kindle channel a third of the time less is a good make up for the fact that it silences people for such a little amount of time.
channel_time = 15 // I think making kindle channel a third of the time less is a good make up for the fact that it silences people for such a little amount of time.
power_cost = 125
usage_tip = "The light can be used from up to two tiles away. Damage taken will GREATLY REDUCE the stun's duration."
tier = SCRIPTURE_DRIVER
@@ -81,6 +81,25 @@
return /obj/effect/clockwork/sigil/vitality/neutered
return ..()
//Sigil of Rites: Creates a sigil that allows to perform certain rites on it. More information on these can be found in clock_rites.dm, they usually require power, materials and sometimes a target.
/datum/clockwork_scripture/create_object/sigil_of_rites
descname = "Sigil, Access to rites"
name = "Sigil of Rites"
desc = "Places a sigil that, when interacted with, will allow for a variety of rites to be performed on the sigil. These usually require power cells, clockwork power, and some other components."
invocations = list("Engine, allow us..", ".. to be blessed with your rites.")
channel_time = 80
power_cost = 1400
invokers_required = 2
multiple_invokers_used = TRUE
whispered = TRUE
object_path = /obj/effect/clockwork/sigil/rite
creator_message = "<span class='brass'>A sigil of Rites appears beneath you. It will allow you to perform certain rites, given sufficient materials and power.</span>"
usage_tip = "It may be useful to coordinate to acquire needed materials quickly."
tier = SCRIPTURE_SCRIPT
one_per_tile = TRUE
primary_component = HIEROPHANT_ANSIBLE
sort_priority = 4
//Judicial Visor: Creates a judicial visor, which can smite an area.
/datum/clockwork_scripture/create_object/judicial_visor
descname = "Delayed Area Knockdown Glasses"
@@ -96,7 +115,7 @@
tier = SCRIPTURE_SCRIPT
space_allowed = TRUE
primary_component = BELLIGERENT_EYE
sort_priority = 4
sort_priority = 5
quickbind = TRUE
quickbind_desc = "Creates a Judicial Visor, which can smite an area, applying Belligerent and briefly stunning."
@@ -115,7 +134,7 @@
tier = SCRIPTURE_SCRIPT
space_allowed = TRUE
primary_component = VANGUARD_COGWHEEL
sort_priority = 6
sort_priority = 7
quickbind = TRUE
quickbind_desc = "Creates a Ratvarian shield, which can absorb energy from attacks for use in powerful bashes."
@@ -131,7 +150,7 @@
usage_tip = "Throwing the spear at a mob will do massive damage and knock them down, but break the spear. You will need to wait for 30 seconds before resummoning it."
tier = SCRIPTURE_SCRIPT
primary_component = VANGUARD_COGWHEEL
sort_priority = 7
sort_priority = 8
important = TRUE
quickbind = TRUE
quickbind_desc = "Permanently binds clockwork armor and a Ratvarian spear to you."
@@ -229,7 +248,7 @@
usage_tip = "This is a very effective way to rapidly reinforce a base after an attack."
tier = SCRIPTURE_SCRIPT
primary_component = VANGUARD_COGWHEEL
sort_priority = 8
sort_priority = 9
quickbind = TRUE
quickbind_desc = "Repairs nearby structures and constructs. Servants wearing clockwork armor will also be healed.<br><b>Maximum 10 chants.</b>"
var/heal_attempts = 4
@@ -342,7 +361,7 @@
usage_tip = "Though it requires you to stand still, this scripture can do massive damage."
tier = SCRIPTURE_SCRIPT
primary_component = BELLIGERENT_EYE
sort_priority = 5
sort_priority = 6
quickbind = TRUE
quickbind_desc = "Allows you to fire energy rays at target locations.<br><b>Maximum 5 chants.</b>"
var/static/list/nzcrentr_insults = list("You're not very good at aiming.", "You hunt badly.", "What a waste of energy.", "Almost funny to watch.",
@@ -391,7 +410,7 @@
usage_tip = "It may be useful to end channelling early if the burning becomes too much to handle.."
tier = SCRIPTURE_SCRIPT
primary_component = GEIS_CAPACITOR
sort_priority = 10
sort_priority = 11
quickbind = TRUE
quickbind_desc = "Quickly drains power in an area around the invoker, causing burns proportional to the amount of energy drained.<br><b>Maximum of 20 chants.</b>"
+84 -57
View File
@@ -40,7 +40,6 @@ GLOBAL_LIST_EMPTY(preferences_datums)
//If it's 0, that's good, if it's anything but 0, the owner of this prefs file's antag choices were,
//autocorrected this round, not that you'd need to check that.
var/UI_style = null
var/buttons_locked = FALSE
var/hotkeys = FALSE
@@ -230,7 +229,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/gear_points = 10
var/list/gear_categories
var/list/chosen_gear = list()
var/gear_tab
var/gear_category
var/gear_subcategory
var/screenshake = 100
var/damagescreenshake = 2
@@ -1059,58 +1059,83 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "<br>"
if(3)
if(!gear_tab)
gear_tab = GLOB.loadout_items[1]
dat += "<table align='center' width='100%'>"
dat += "<tr><td colspan=4><center><b><font color='[gear_points == 0 ? "#E62100" : "#CCDDFF"]'>[gear_points]</font> loadout points remaining.</b> \[<a href='?_src_=prefs;preference=gear;clear_loadout=1'>Clear Loadout</a>\]</center></td></tr>"
dat += "<tr><td colspan=4><center>You can only choose one item per category, unless it's an item that spawns in your backpack or hands.</center></td></tr>"
dat += "<tr><td colspan=4><center><b>"
var/firstcat = TRUE
for(var/i in GLOB.loadout_items)
if(firstcat)
firstcat = FALSE
if(!length(GLOB.loadout_items))
dat += "<center>ERROR: No loadout categories - something is horribly wrong!"
else
if(!GLOB.loadout_categories[gear_category])
gear_category = GLOB.loadout_categories[1]
var/firstcat = TRUE
for(var/category in GLOB.loadout_categories)
if(firstcat)
firstcat = FALSE
else
dat += " |"
if(category == gear_category)
dat += " <span class='linkOn'>[category]</span> "
else
dat += " <a href='?_src_=prefs;preference=gear;select_category=[html_encode(category)]'>[category]</a> "
dat += "</b></center></td></tr>"
dat += "<tr><td colspan=4><hr></td></tr>"
dat += "<tr><td colspan=4><center><b>"
if(!length(GLOB.loadout_categories[gear_category]))
dat += "No subcategories detected. Something is horribly wrong!"
else
dat += " |"
if(i == gear_tab)
dat += " <span class='linkOn'>[i]</span> "
else
dat += " <a href='?_src_=prefs;preference=gear;select_category=[i]'>[i]</a> "
dat += "</b></center></td></tr>"
dat += "<tr><td colspan=4><hr></td></tr>"
dat += "<tr><td colspan=4><b><center>[gear_tab]</center></b></td></tr>"
dat += "<tr><td colspan=4><hr></td></tr>"
dat += "<tr width=10% style='vertical-align:top;'><td width=15%><b>Name</b></td>"
dat += "<td style='vertical-align:top'><b>Cost</b></td>"
dat += "<td width=10%><font size=2><b>Restrictions</b></font></td>"
dat += "<td width=80%><font size=2><b>Description</b></font></td></tr>"
for(var/j in GLOB.loadout_items[gear_tab])
var/datum/gear/gear = GLOB.loadout_items[gear_tab][j]
var/donoritem = gear.donoritem
if(donoritem && !gear.donator_ckey_check(user.ckey))
continue
var/class_link = ""
if(gear.type in chosen_gear)
class_link = "style='white-space:normal;' class='linkOn' href='?_src_=prefs;preference=gear;toggle_gear_path=[html_encode(j)];toggle_gear=0'"
else if(gear_points <= 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(j)];toggle_gear=1'"
else
class_link = "style='white-space:normal;' href='?_src_=prefs;preference=gear;toggle_gear_path=[html_encode(j)];toggle_gear=1'"
dat += "<tr style='vertical-align:top;'><td width=15%><a [class_link]>[j]</a></td>"
dat += "<td width = 5% style='vertical-align:top'>[gear.cost]</td><td>"
if(islist(gear.restricted_roles))
if(gear.restricted_roles.len)
if(gear.restricted_desc)
dat += "<font size=2>"
dat += gear.restricted_desc
dat += "</font>"
var/list/subcategories = GLOB.loadout_categories[gear_category]
if(!subcategories.Find(gear_subcategory))
gear_subcategory = subcategories[1]
var/firstsubcat = FALSE
for(var/subcategory in subcategories)
if(firstsubcat)
firstsubcat = FALSE
else
dat += "<font size=2>"
dat += gear.restricted_roles.Join(";")
dat += "</font>"
dat += "</td><td><font size=2><i>[gear.description]</i></font></td></tr>"
dat += "</table>"
dat += " |"
if(gear_subcategory == subcategory)
dat += " <span class='linkOn'>[subcategory]</span> "
else
dat += " <a href='?_src_=prefs;preference=gear;select_subcategory=[html_encode(subcategory)]'>[subcategory]</a> "
dat += "</b></center></td></tr>"
dat += "<tr width=10% style='vertical-align:top;'><td width=15%><b>Name</b></td>"
dat += "<td style='vertical-align:top'><b>Cost</b></td>"
dat += "<td width=10%><font size=2><b>Restrictions</b></font></td>"
dat += "<td width=80%><font size=2><b>Description</b></font></td></tr>"
for(var/name in GLOB.loadout_items[gear_category][gear_subcategory])
var/datum/gear/gear = GLOB.loadout_items[gear_category][gear_subcategory][name]
var/donoritem = gear.donoritem
if(donoritem && !gear.donator_ckey_check(user.ckey))
continue
var/class_link = ""
if(gear.type in chosen_gear)
class_link = "style='white-space:normal;' class='linkOn' href='?_src_=prefs;preference=gear;toggle_gear_path=[html_encode(name)];toggle_gear=0'"
else if(gear_points <= 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
class_link = "style='white-space:normal;' href='?_src_=prefs;preference=gear;toggle_gear_path=[html_encode(name)];toggle_gear=1'"
dat += "<tr style='vertical-align:top;'><td width=15%><a [class_link]>[name]</a></td>"
dat += "<td width = 5% style='vertical-align:top'>[gear.cost]</td><td>"
if(islist(gear.restricted_roles))
if(gear.restricted_roles.len)
if(gear.restricted_desc)
dat += "<font size=2>"
dat += gear.restricted_desc
dat += "</font>"
else
dat += "<font size=2>"
dat += gear.restricted_roles.Join(";")
dat += "</font>"
dat += "</td><td><font size=2><i>[gear.description]</i></font></td></tr>"
dat += "</table>"
if(4) // Content preferences
dat += "<table><tr><td width='340px' height='300px' valign='top'>"
dat += "<h2>Fetish content prefs</h2>"
@@ -2691,11 +2716,13 @@ GLOBAL_LIST_EMPTY(preferences_datums)
gear_points = CONFIG_GET(number/initial_gear_points)
save_preferences()
if(href_list["select_category"])
for(var/i in GLOB.loadout_items)
if(i == href_list["select_category"])
gear_tab = i
gear_category = html_decode(href_list["select_category"])
gear_subcategory = GLOB.loadout_categories[gear_category][1]
if(href_list["select_subcategory"])
gear_subcategory = html_decode(href_list["select_subcategory"])
if(href_list["toggle_gear_path"])
var/datum/gear/G = GLOB.loadout_items[gear_tab][html_decode(href_list["toggle_gear_path"])]
var/name = html_decode(href_list["toggle_gear_path"])
var/datum/gear/G = GLOB.loadout_items[gear_category][gear_subcategory][name]
if(!G)
return
var/toggle = text2num(href_list["toggle_gear"])
@@ -2875,17 +2902,17 @@ GLOBAL_LIST_EMPTY(preferences_datums)
LAZYINITLIST(L)
for(var/i in chosen_gear)
var/datum/gear/G = i
var/occupied_slots = L[slot_to_string(initial(G.category))] ? L[slot_to_string(initial(G.category))] + 1 : 1
LAZYSET(L, slot_to_string(initial(G.category)), occupied_slots)
var/occupied_slots = L[initial(G.category)] ? L[initial(G.category)] + 1 : 1
LAZYSET(L, initial(G.category), occupied_slots)
switch(slot)
if(SLOT_IN_BACKPACK)
if(L[slot_to_string(SLOT_IN_BACKPACK)] < BACKPACK_SLOT_AMT)
if(L[LOADOUT_CATEGORY_BACKPACK] < BACKPACK_SLOT_AMT)
return TRUE
if(SLOT_HANDS)
if(L[slot_to_string(SLOT_HANDS)] < HANDS_SLOT_AMT)
if(L[LOADOUT_CATEGORY_HANDS] < HANDS_SLOT_AMT)
return TRUE
else
if(L[slot_to_string(slot)] < DEFAULT_SLOT_AMT)
if(L[slot] < DEFAULT_SLOT_AMT)
return TRUE
#undef DEFAULT_SLOT_AMT
+2 -2
View File
@@ -224,7 +224,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
var/needs_update = savefile_needs_update(S)
if(needs_update == -2) //fatal, can't load any data
return 0
. = TRUE
//general preferences
@@ -443,7 +443,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
return 0
. = TRUE
//Species
var/species_id
S["species"] >> species_id
+13
View File
@@ -469,3 +469,16 @@
icon_state = "maid"
item_state = "maid"
dynamic_hair_suffix = ""
/obj/item/clothing/head/widered
name = "Wide red hat"
desc = "It is both wide, and red. Stylish!"
icon_state = "widehat_red"
item_state = "widehat_red"
/obj/item/clothing/head/kabuto
name = "Kabuto helmet"
desc = "A traditional kabuto helmet."
icon_state = "kabuto"
item_state = "kabuto"
flags_inv = HIDEHAIR|HIDEEARS
@@ -1057,3 +1057,9 @@
desc = "Reminds you of someone, but you just can't put your finger on it..."
icon_state = "waldo_shirt"
item_state = "waldo_shirt"
/obj/item/clothing/suit/samurai
name = "Samurai outfit"
desc = "An outfit used by traditional japanese warriors."
icon_state = "samurai"
item_state = "samurai"
+26
View File
@@ -329,3 +329,29 @@
desc = "cloud"
icon_state = "cloud"
can_adjust = FALSE
/obj/item/clothing/under/costume/kimono
name = "Kimono"
desc = "A traditional piece of clothing from japan"
icon_state = "kimono"
item_state = "kimono"
/obj/item/clothing/under/costume/kimono/black
name = "Black Kimono"
icon_state = "kimono_a"
item_state = "kimono_a"
/obj/item/clothing/under/costume/kimono/kamishimo
name = "Kamishimo"
icon_state = "kamishimo"
item_state = "kamishimo"
/obj/item/clothing/under/costume/kimono/fancy
name = "Fancy Kimono"
icon_state = "fancy_kimono"
item_state = "fancy_kimono"
/obj/item/clothing/under/costume/kimono/sakura
name = "Sakura Kimono'"
icon_state = "sakura_kimono"
item_state = "sakura_kimono"
@@ -308,3 +308,21 @@
icon_state = "polyfemtankpantsu"
poly_states = 2
poly_colors = list("#808080", "#FF3535")
/obj/item/clothing/under/misc/black_dress
name = "little black dress"
desc = "A small black dress"
icon_state = "littleblackdress_s"
item_state = "littleblackdress_s"
/obj/item/clothing/under/misc/pinktutu
name = "pink tutu"
desc = "A pink tutu"
icon_state = "pinktutu_s"
item_state = "pinktutu_s"
/obj/item/clothing/under/misc/bathrobe
name = "bathrobe"
desc = "A blue bathrobe."
icon_state = "bathrobe"
item_state = "bathrobe"
+1
View File
@@ -42,6 +42,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
name = "immovable rod"
desc = "What the fuck is that?"
icon = 'icons/obj/objects.dmi'
movement_type = FLOATING
icon_state = "immrod"
throwforce = 100
move_force = INFINITY
@@ -183,9 +183,38 @@
attack_verb = list("stabbed", "diced", "sliced", "cleaved", "chopped", "lacerated", "cut", "jabbed", "punctured")
icon_state = "crusher-glaive"
item_state = "crusher0-glaive"
item_flags = ITEM_CAN_PARRY
block_parry_data = /datum/block_parry_data/crusherglaive
//ideas: altclick that lets you pummel people with the handguard/handle?
//parrying functionality?
/datum/block_parry_data/crusherglaive // it's like quickparry, without the damage multiplier
parry_time_windup = 0
parry_time_active = 5
parry_time_spindown = 0
parry_time_perfect = 1.5
parry_time_perfect_leeway = 0.5
parry_imperfect_falloff_percent = 30
parry_efficiency_perfect = 100
parry_failed_stagger_duration = 1 SECONDS
parry_failed_clickcd_duration = 1 SECONDS
/obj/item/kinetic_crusher/glaive/on_active_parry(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, list/block_return, parry_efficiency, parry_time) // if you're dumb enough to go for a parry...
var/turf/proj_turf = owner.loc // destabilizer bolt, ignoring cooldown
if(!isturf(proj_turf))
return
var/obj/item/projectile/destabilizer/D = new /obj/item/projectile/destabilizer(proj_turf)
for(var/t in trophies)
var/obj/item/crusher_trophy/T = t
T.on_projectile_fire(D, owner)
D.preparePixelProjectile(attacker, owner)
D.firer = owner
D.hammer_synced = src
playsound(owner, 'sound/weapons/plasma_cutter.ogg', 100, 1)
D.fire()
if((!attacker.anchored || ismegafauna(attacker))) // free backstab, if you perfect parry
attacker.dir = get_dir(owner,attacker)
/obj/item/kinetic_crusher/glaive/update_icon_state()
item_state = "crusher[wielded]-glaive" // this is not icon_state and not supported by 2hcomponent
-4
View File
@@ -62,10 +62,6 @@
//Effects of bloodloss
var/word = pick("dizzy","woozy","faint")
switch(blood_volume)
if(BLOOD_VOLUME_EXCESS to BLOOD_VOLUME_MAX_LETHAL)
if(prob(15))
to_chat(src, "<span class='userdanger'>Blood starts to tear your skin apart. You're going to burst!</span>")
gib()
if(BLOOD_VOLUME_MAXIMUM to BLOOD_VOLUME_EXCESS)
if(prob(10))
to_chat(src, "<span class='warning'>You feel terribly bloated.</span>")
@@ -4,7 +4,7 @@
id = "jelly"
default_color = "00FF90"
say_mod = "chirps"
species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,WINGCOLOR,HAS_FLESH,HAS_BONE)
species_traits = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,WINGCOLOR,HAS_FLESH)
mutantlungs = /obj/item/organ/lungs/slime
mutant_heart = /obj/item/organ/heart/slime
mutant_bodyparts = list("mcolor" = "FFFFFF", "mam_tail" = "None", "mam_ears" = "None", "mam_snouts" = "None", "taur" = "None", "deco_wings" = "None")
+27 -1
View File
@@ -441,7 +441,7 @@
to_chat(user, "You cannot send IC messages (muted).")
return FALSE
else if(!params)
var/custom_emote = stripped_multiline_input(user, "Choose an emote to display.", "Custom Emote", null, MAX_MESSAGE_LEN)
var/custom_emote = stripped_multiline_input_or_reflect(user, "Choose an emote to display.", "Custom Emote", null, MAX_MESSAGE_LEN)
if(custom_emote && !check_invalid(user, custom_emote))
var/type = input("Is this a visible or hearable emote?") as null|anything in list("Visible", "Hearable")
switch(type)
@@ -531,3 +531,29 @@
to_chat(user, "<span class='notice'>You ready your slapping hand.</span>")
else
to_chat(user, "<span class='warning'>You're incapable of slapping in your current state.</span>")
/datum/emote/living/audio_emote/blorble
key = "blorble"
key_third_person = "blorbles"
message = "blorbles."
message_param = "blorbles at %t."
/datum/emote/living/audio_emote/blorble/run_emote(mob/user, params)
. = ..()
if(. && iscarbon(user))
var/mob/living/carbon/C = user
if(isjellyperson(C))
pick(playsound(C, 'sound/effects/attackblob.ogg', 50, 1),playsound(C, 'sound/effects/blobattack.ogg', 50, 1))
/datum/emote/living/audio_emote/blurp
key = "blurp"
key_third_person = "blurps"
message = "blurps."
message_param = "blurps at %t."
/datum/emote/living/audio_emote/blurp/run_emote(mob/user, params)
. = ..()
if(. && iscarbon(user))
var/mob/living/carbon/C = user
if(isjellyperson(C))
pick(playsound(C, 'sound/effects/meatslap.ogg', 50, 1),playsound(C, 'sound/effects/gib_step.ogg', 50, 1))
+5
View File
@@ -43,6 +43,11 @@
if(GLOB.say_disabled) //This is here to try to identify lag problems
to_chat(usr, "<span class='danger'>Speech is currently admin-disabled.</span>")
return
if(length(message) > MAX_MESSAGE_LEN)
to_chat(usr, message)
to_chat(usr, "<span class='danger'>^^^----- The preceeding message has been DISCARDED for being over the maximum length of [MAX_MESSAGE_LEN]. It has NOT been sent! -----^^^</span>")
return
message = trim(copytext_char(sanitize(message), 1, MAX_MESSAGE_LEN))
clear_typing_indicator() // clear it immediately!
+2 -2
View File
@@ -37,7 +37,7 @@ proc/get_top_level_mob(var/mob/S)
to_chat(user, "You cannot send IC messages (muted).")
return FALSE
else if(!params)
var/subtle_emote = stripped_multiline_input(user, "Choose an emote to display.", "Subtle", null, MAX_MESSAGE_LEN)
var/subtle_emote = stripped_multiline_input_or_reflect(user, "Choose an emote to display.", "Subtle", null, MAX_MESSAGE_LEN)
if(subtle_emote && !check_invalid(user, subtle_emote))
var/type = input("Is this a visible or hearable emote?") as null|anything in list("Visible", "Hearable")
switch(type)
@@ -98,7 +98,7 @@ proc/get_top_level_mob(var/mob/S)
to_chat(user, "You cannot send IC messages (muted).")
return FALSE
else if(!params)
var/subtle_emote = stripped_multiline_input(user, "Choose an emote to display.", "Subtler" , null, MAX_MESSAGE_LEN)
var/subtle_emote = stripped_multiline_input_or_reflect(user, "Choose an emote to display.", "Subtler" , null, MAX_MESSAGE_LEN)
if(subtle_emote && !check_invalid(user, subtle_emote))
var/type = input("Is this a visible or hearable emote?") as null|anything in list("Visible", "Hearable")
switch(type)
@@ -72,7 +72,8 @@
return
M.put_in_hand(src, H.held_index)
/obj/item/modular_computer/laptop/on_attack_hand(mob/user)
/obj/item/modular_computer/laptop/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
. = ..()
if(screen_on && isturf(loc))
return attack_self(user)
@@ -1,5 +1,5 @@
/obj/item/ammo_box/magazine/m12g
name = "shotgun magazine (12g buckshot slugs)"
name = "shotgun magazine (12g buckshot)"
desc = "A drum magazine."
icon_state = "m12gb"
ammo_type = /obj/item/ammo_casing/shotgun/buckshot
@@ -17,7 +17,7 @@
/obj/item/ammo_box/magazine/m12g/slug
name = "shotgun magazine (12g slugs)"
icon_state = "m12gb" //this may need an unique sprite
icon_state = "m12gsl"
ammo_type = /obj/item/ammo_casing/shotgun
/obj/item/ammo_box/magazine/m12g/dragon
@@ -84,6 +84,11 @@
. = ..()
. += "[get_ammo(0,0)] of those are live rounds."
/obj/item/gun/ballistic/revolver/syndicate
unique_reskin = list("Default" = "revolver",
"Silver" = "russianrevolver",
"Robust" = "revolvercit")
/obj/item/gun/ballistic/revolver/detective
name = "\improper .38 Mars Special"
desc = "A cheap Martian knock-off of a classic law enforcement firearm. Uses .38-special rounds."
@@ -486,4 +491,4 @@
for(var/i = 0, i < ratio, i++)
var/mutable_appearance/charge_bar = mutable_appearance(icon, "[initial(icon_state)]_charge", color = batt_color)
charge_bar.pixel_x = i
. += charge_bar
. += charge_bar
@@ -291,10 +291,17 @@
/datum/uplink_item/ammo/bolt_action
name = "Surplus Rifle Clip"
desc = "A stripper clip used to quickly load bolt action rifles. Contains 5 rounds."
item = /obj/item/ammo_box/a762
item = /obj/item/ammo_box/a762
cost = 1
include_modes = list(/datum/game_mode/nuclear)
/datum/uplink_item/ammo/bolt_action_bulk
name = "Surplus Rifle Clip Box"
desc = "An ammo box we found in a warehouse, holding 7 clips of 5 rounds for bolt-action rifles. Yes, the cheap ones."
item = /obj/item/storage/toolbox/ammo
cost = 4
include_modes = list(/datum/game_mode/nuclear)
/datum/uplink_item/ammo/dark_gygax/bag
name = "Dark Gygax Ammo Bag"
desc = "A duffel bag containing ammo for three full reloads of the incendiary carbine and flash bang launcher that are equipped on a standard Dark Gygax exosuit."
@@ -206,9 +206,7 @@
this primer of questionable worth and value is rumored to increase your rifle-bolt-working and/or shotgun \
racking fivefold. Then again, the techniques here only work on bolt-actions and pump-actions..."
item = /obj/item/book/granter/trait/rifleman
cost = 3
restricted_roles = list("Operative") // i want it to be surplusable but i also want it to be mostly nukie only, please advise
surplus = 90
cost = 3 // fuck it available for everyone
/datum/uplink_item/device_tools/stimpack
name = "Stimpack"
+1 -1
View File
@@ -576,7 +576,7 @@ GLOBAL_LIST_EMPTY(vending_products)
"<span class='notice'>You right [src].")
unbuckle_all_mobs(TRUE)
anchored = FALSE //so you can push it back into position
tilted = FALSE
layer = initial(layer)
+72
View File
@@ -50,6 +50,78 @@
-->
<div class="commit sansserif">
<h2 class="date">09 August 2020</h2>
<h3 class="author">Hatterhat updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Proto-kinetic glaives (not crushers) can parry now.</li>
</ul>
<h3 class="author">MrJWhit updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">Adds a second shutter on the top of the hop line</li>
</ul>
<h3 class="author">silicons updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">immovable rods no longer drop down chasms</li>
<li class="rscdel">fun removal: squeaking objects now have an 1 second cooldown between squeaks, and will have a 33% chance of interrupting any other squeaking object when Cross()ing, meaning no more ear-fuck conveyor belts.</li>
</ul>
<h2 class="date">08 August 2020</h2>
<h3 class="author">DeltaFire15 updated:</h3>
<ul class="changes bgimages16">
<li class="balance">Roundstart cultists now start with a replica fabricator - no brass though, make your own.</li>
<li class="balance">Kindle cast time: 10 > 15, mute after stun end: 2 > 5, slur after mute end: 3 > 5</li>
<li class="bugfix">The ratvarian spear no longer adds negative vitality under very specific circumstances.</li>
<li class="balance">The Ratvarian Spear can parry now! Short parries with low leeway, but low cooldown.</li>
<li class="rscadd">The brass claw, a implant-based weapon which gains combo on consecutive hits against the same target.</li>
<li class="rscadd">The sigil of rites, a sigil used to perform various rites with a cost of power and materials</li>
<li class="rscadd">The Rite of Advancement: Used to add a organ or cyberimplant to a clockie without need for surgery.</li>
<li class="rscadd">The Rite of Woundmending: Used to heal all wounds on another cultist, causing toxins damage in return.</li>
<li class="rscadd">The Rite of the Claw: Used to summon a brass claw implant. Maximum of 4 uses per round.</li>
</ul>
<h3 class="author">Hatterhat updated:</h3>
<ul class="changes bgimages16">
<li class="rscadd">You can now buy a toolbox's worth of Mosin-Nagant ammo for a fairly discounted price.</li>
<li class="rscadd">Revolvers from the dedicated kit now have reskinning capabilities.</li>
<li class="bugfix">You can now actually buy the riflery primer, which lets you pump shotguns and work the Mosin's bolt faster.</li>
<li class="imageadd">Bulldog slug magazines now have a unique sprite.</li>
</ul>
<h3 class="author">Ludox235 updated:</h3>
<ul class="changes bgimages16">
<li class="rscdel">Removed an abductee objective that told you to remove all oxygen.</li>
<li class="rscadd">Added a new abductee objective to replace the removed one.</li>
</ul>
<h3 class="author">Sishen1542 updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">🅱️oneless</li>
<li class="rscadd">squishy slime emotes</li>
</ul>
<h3 class="author">timothyteakettle updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">heparin makes you bleed half as much now</li>
<li class="tweak">cuts make you bleed 25% less now</li>
<li class="rscadd">more items in the loadout and loadout has subcategories now for easier searching</li>
</ul>
<h2 class="date">07 August 2020</h2>
<h3 class="author">dapnee updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">fixed active tufs on some space ruins, murderdome VR, and a few on pubby, changed cargo autolathe to techfab, messed with pipe room leading to monastery.</li>
</ul>
<h3 class="author">lolman360 updated:</h3>
<ul class="changes bgimages16">
<li class="bugfix">vendors are now unanchored when tipped. it just fell over it's not bolted to the ground anymore.</li>
<li class="bugfix">podpeople no fat when sunbathing.</li>
</ul>
<h3 class="author">silicons updated:</h3>
<ul class="changes bgimages16">
<li class="balance">explosions only recurse one level into storage before dropping 1 level per storage layer.</li>
<li class="tweak">volumetric storage is now minimum 16 pixels per item because 8 was ridiculous</li>
<li class="spellcheck">shieldbash balanace --> balance</li>
<li class="rscadd">attempting to send too long of an emote will now reflect it back to you instead of cutting it off and discarding the overflow.</li>
<li class="rscadd">holoparasites can now play music</li>
<li class="balance">lethal blood now causes damaging bleeding instead of outright gibbing</li>
</ul>
<h2 class="date">06 August 2020</h2>
<h3 class="author">Auris456852 updated:</h3>
<ul class="changes bgimages16">
+65
View File
@@ -26753,3 +26753,68 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
less often
zeroisthebiggay:
- rscadd: nukies can buy holoparasites
2020-08-07:
dapnee:
- bugfix: fixed active tufs on some space ruins, murderdome VR, and a few on pubby,
changed cargo autolathe to techfab, messed with pipe room leading to monastery.
lolman360:
- bugfix: vendors are now unanchored when tipped. it just fell over it's not bolted
to the ground anymore.
- bugfix: podpeople no fat when sunbathing.
silicons:
- balance: explosions only recurse one level into storage before dropping 1 level
per storage layer.
- tweak: volumetric storage is now minimum 16 pixels per item because 8 was ridiculous
- spellcheck: shieldbash balanace --> balance
- rscadd: attempting to send too long of an emote will now reflect it back to you
instead of cutting it off and discarding the overflow.
- rscadd: holoparasites can now play music
- balance: lethal blood now causes damaging bleeding instead of outright gibbing
2020-08-08:
DeltaFire15:
- balance: Roundstart cultists now start with a replica fabricator - no brass though,
make your own.
- balance: 'Kindle cast time: 10 > 15, mute after stun end: 2 > 5, slur after mute
end: 3 > 5'
- bugfix: The ratvarian spear no longer adds negative vitality under very specific
circumstances.
- balance: The Ratvarian Spear can parry now! Short parries with low leeway, but
low cooldown.
- rscadd: The brass claw, a implant-based weapon which gains combo on consecutive
hits against the same target.
- rscadd: The sigil of rites, a sigil used to perform various rites with a cost
of power and materials
- rscadd: 'The Rite of Advancement: Used to add a organ or cyberimplant to a clockie
without need for surgery.'
- rscadd: 'The Rite of Woundmending: Used to heal all wounds on another cultist,
causing toxins damage in return.'
- rscadd: 'The Rite of the Claw: Used to summon a brass claw implant. Maximum of
4 uses per round.'
Hatterhat:
- rscadd: You can now buy a toolbox's worth of Mosin-Nagant ammo for a fairly discounted
price.
- rscadd: Revolvers from the dedicated kit now have reskinning capabilities.
- bugfix: You can now actually buy the riflery primer, which lets you pump shotguns
and work the Mosin's bolt faster.
- imageadd: Bulldog slug magazines now have a unique sprite.
Ludox235:
- rscdel: Removed an abductee objective that told you to remove all oxygen.
- rscadd: Added a new abductee objective to replace the removed one.
Sishen1542:
- tweak: "\U0001F171\uFE0Foneless"
- rscadd: squishy slime emotes
timothyteakettle:
- tweak: heparin makes you bleed half as much now
- tweak: cuts make you bleed 25% less now
- rscadd: more items in the loadout and loadout has subcategories now for easier
searching
2020-08-09:
Hatterhat:
- rscadd: Proto-kinetic glaives (not crushers) can parry now.
MrJWhit:
- rscadd: Adds a second shutter on the top of the hop line
silicons:
- bugfix: immovable rods no longer drop down chasms
- rscdel: 'fun removal: squeaking objects now have an 1 second cooldown between
squeaks, and will have a 33% chance of interrupting any other squeaking object
when Cross()ing, meaning no more ear-fuck conveyor belts.'
@@ -1,4 +0,0 @@
author: "silicons"
delete-after: True
changes:
- rscadd: "holoparasites can now play music"
@@ -1,4 +0,0 @@
author: "silicons"
delete-after: True
changes:
- balance: "explosions only recurse one level into storage before dropping 1 level per storage layer."
@@ -1,4 +0,0 @@
author: "silicons"
delete-after: True
changes:
- tweak: "volumetric storage is now minimum 16 pixels per item because 8 was ridiculous"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 KiB

After

Width:  |  Height:  |  Size: 224 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 426 KiB

After

Width:  |  Height:  |  Size: 428 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 274 KiB

After

Width:  |  Height:  |  Size: 276 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 409 KiB

After

Width:  |  Height:  |  Size: 415 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 268 KiB

After

Width:  |  Height:  |  Size: 276 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 127 KiB

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 144 KiB

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 115 KiB

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 41 KiB

@@ -1,496 +1,497 @@
//This is the file that handles donator loadout items.
/datum/gear/pingcoderfailsafe
/datum/gear/donator
name = "IF YOU SEE THIS, PING A CODER RIGHT NOW!"
category = SLOT_IN_BACKPACK
slot = SLOT_IN_BACKPACK
path = /obj/item/bikehorn/golden
category = LOADOUT_CATEGORY_DONATOR
ckeywhitelist = list("This entry should never appear with this variable set.") //If it does, then that means somebody fucked up the whitelist system pretty hard
/datum/gear/donortestingbikehorn
/datum/gear/donator/donortestingbikehorn
name = "Donor item testing bikehorn"
category = SLOT_IN_BACKPACK
slot = SLOT_IN_BACKPACK
path = /obj/item/bikehorn
geargroupID = list("DONORTEST") //This is a list mainly for the sake of testing, but geargroupID works just fine with ordinary strings
/datum/gear/kevhorn
/datum/gear/donator/kevhorn
name = "Airhorn"
category = SLOT_IN_BACKPACK
slot = SLOT_IN_BACKPACK
path = /obj/item/bikehorn/airhorn
ckeywhitelist = list("kevinz000")
/datum/gear/cebusoap
/datum/gear/donator/cebusoap
name = "Cebutris' soap"
category = SLOT_IN_BACKPACK
slot = SLOT_IN_BACKPACK
path = /obj/item/custom/ceb_soap
ckeywhitelist = list("cebutris")
/datum/gear/kiaracloak
/datum/gear/donator/kiaracloak
name = "Kiara's cloak"
category = SLOT_NECK
slot = SLOT_NECK
path = /obj/item/clothing/neck/cloak/inferno
ckeywhitelist = list("inferno707")
/datum/gear/kiaracollar
/datum/gear/donator/kiaracollar
name = "Kiara's collar"
category = SLOT_NECK
slot = SLOT_NECK
path = /obj/item/clothing/neck/petcollar/inferno
ckeywhitelist = list("inferno707")
/datum/gear/kiaramedal
/datum/gear/donator/kiaramedal
name = "Insignia of Steele"
category = SLOT_IN_BACKPACK
slot = SLOT_IN_BACKPACK
path = /obj/item/clothing/accessory/medal/steele
ckeywhitelist = list("inferno707")
/datum/gear/hheart
/datum/gear/donator/hheart
name = "The Hollow Heart"
category = SLOT_WEAR_MASK
slot = SLOT_WEAR_MASK
path = /obj/item/clothing/mask/hheart
ckeywhitelist = list("inferno707")
/datum/gear/engravedzippo
/datum/gear/donator/engravedzippo
name = "Engraved zippo"
category = SLOT_HANDS
slot = SLOT_HANDS
path = /obj/item/lighter/gold
ckeywhitelist = list("dirtyoldharry")
/datum/gear/geisha
/datum/gear/donator/geisha
name = "Geisha suit"
category = SLOT_W_UNIFORM
slot = SLOT_W_UNIFORM
path = /obj/item/clothing/under/costume/geisha
ckeywhitelist = list("atiefling")
/datum/gear/specialscarf
/datum/gear/donator/specialscarf
name = "Special scarf"
category = SLOT_NECK
slot = SLOT_NECK
path = /obj/item/clothing/neck/scarf/zomb
ckeywhitelist = list("zombierobin")
/datum/gear/redmadcoat
/datum/gear/donator/redmadcoat
name = "The Mad's labcoat"
category = SLOT_WEAR_SUIT
slot = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/toggle/labcoat/mad/red
ckeywhitelist = list("zombierobin")
/datum/gear/santahat
/datum/gear/donator/santahat
name = "Santa hat"
category = SLOT_HEAD
slot = SLOT_HEAD
path = /obj/item/clothing/head/santa/fluff
ckeywhitelist = list("illotafv")
/datum/gear/reindeerhat
/datum/gear/donator/reindeerhat
name = "Reindeer hat"
category = SLOT_HEAD
slot = SLOT_HEAD
path = /obj/item/clothing/head/hardhat/reindeer/fluff
ckeywhitelist = list("illotafv")
/datum/gear/treeplushie
/datum/gear/donator/treeplushie
name = "Christmas tree plushie"
category = SLOT_IN_BACKPACK
slot = SLOT_IN_BACKPACK
path = /obj/item/toy/plush/tree
ckeywhitelist = list("illotafv")
/datum/gear/santaoutfit
/datum/gear/donator/santaoutfit
name = "Santa costume"
category = SLOT_WEAR_SUIT
slot = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/space/santa/fluff
ckeywhitelist = list("illotafv")
/datum/gear/treecloak
/datum/gear/donator/treecloak
name = "Christmas tree cloak"
category = SLOT_NECK
slot = SLOT_NECK
path = /obj/item/clothing/neck/cloak/festive
ckeywhitelist = list("illotafv")
/datum/gear/carrotplush
/datum/gear/donator/carrotplush
name = "Carrot plushie"
category = SLOT_IN_BACKPACK
slot = SLOT_IN_BACKPACK
path = /obj/item/toy/plush/carrot
ckeywhitelist = list("improvedname")
/datum/gear/carrotcloak
/datum/gear/donator/carrotcloak
name = "Carrot cloak"
category = SLOT_NECK
slot = SLOT_NECK
path = /obj/item/clothing/neck/cloak/carrot
ckeywhitelist = list("improvedname")
/datum/gear/albortorosamask
/datum/gear/donator/albortorosamask
name = "Alborto Rosa mask"
category = SLOT_WEAR_MASK
slot = SLOT_WEAR_MASK
path = /obj/item/clothing/mask/luchador/zigfie
ckeywhitelist = list("zigfie")
/datum/gear/mankini
/datum/gear/donator/mankini
name = "Mankini"
category = SLOT_W_UNIFORM
slot = SLOT_W_UNIFORM
path = /obj/item/clothing/under/misc/stripper/mankini
ckeywhitelist = list("zigfie")
/datum/gear/pinkshoes
/datum/gear/donator/pinkshoes
name = "Pink shoes"
category = SLOT_SHOES
slot = SLOT_SHOES
path = /obj/item/clothing/shoes/sneakers/pink
ckeywhitelist = list("zigfie")
/datum/gear/reecesgreatcoat
/datum/gear/donator/reecesgreatcoat
name = "Reece's Great Coat"
category = SLOT_WEAR_SUIT
slot = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/trenchcoat/green
ckeywhitelist = list("geemiesif")
/datum/gear/russianflask
/datum/gear/donator/russianflask
name = "Russian flask"
category = SLOT_IN_BACKPACK
slot = SLOT_IN_BACKPACK
path = /obj/item/reagent_containers/food/drinks/flask/russian
cost = 2
ckeywhitelist = list("slomka")
/datum/gear/stalkermask
/datum/gear/donator/stalkermask
name = "S.T.A.L.K.E.R. mask"
category = SLOT_WEAR_MASK
slot = SLOT_WEAR_MASK
path = /obj/item/clothing/mask/gas/stalker
ckeywhitelist = list("slomka")
/datum/gear/stripedcollar
/datum/gear/donator/stripedcollar
name = "Striped collar"
category = SLOT_NECK
slot = SLOT_NECK
path = /obj/item/clothing/neck/petcollar/stripe
ckeywhitelist = list("jademanique")
/datum/gear/performersoutfit
/datum/gear/donator/performersoutfit
name = "Bluish performer's outfit"
category = SLOT_W_UNIFORM
slot = SLOT_W_UNIFORM
path = /obj/item/clothing/under/costume/singer/yellow/custom
ckeywhitelist = list("killer402402")
/datum/gear/vermillion
/datum/gear/donator/vermillion
name = "Vermillion clothing"
category = SLOT_W_UNIFORM
slot = SLOT_W_UNIFORM
path = /obj/item/clothing/suit/vermillion
ckeywhitelist = list("fractious")
/datum/gear/AM4B
/datum/gear/donator/AM4B
name = "Foam Force AM4-B"
category = SLOT_IN_BACKPACK
slot = SLOT_IN_BACKPACK
path = /obj/item/gun/ballistic/automatic/AM4B
ckeywhitelist = list("zeronetalpha")
/datum/gear/carrotsatchel
/datum/gear/donator/carrotsatchel
name = "Carrot Satchel"
category = SLOT_HANDS
slot = SLOT_HANDS
path = /obj/item/storage/backpack/satchel/carrot
ckeywhitelist = list("improvedname")
/datum/gear/naomisweater
/datum/gear/donator/naomisweater
name = "worn black sweater"
category = SLOT_W_UNIFORM
slot = SLOT_W_UNIFORM
path = /obj/item/clothing/under/sweater/black/naomi
ckeywhitelist = list("technicalmagi")
/datum/gear/naomicollar
/datum/gear/donator/naomicollar
name = "worn pet collar"
category = SLOT_NECK
slot = SLOT_NECK
path = /obj/item/clothing/neck/petcollar/naomi
ckeywhitelist = list("technicalmagi")
/datum/gear/gladiator
/datum/gear/donator/gladiator
name = "Gladiator Armor"
category = SLOT_WEAR_SUIT
slot = SLOT_WEAR_SUIT
path = /obj/item/clothing/under/costume/gladiator
ckeywhitelist = list("aroche")
/datum/gear/bloodredtie
/datum/gear/donator/bloodredtie
name = "Blood Red Tie"
category = SLOT_NECK
slot = SLOT_NECK
path = /obj/item/clothing/neck/tie/bloodred
ckeywhitelist = list("kyutness")
/datum/gear/puffydress
/datum/gear/donator/puffydress
name = "Puffy Dress"
category = SLOT_WEAR_SUIT
slot = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/puffydress
ckeywhitelist = list("stallingratt")
/datum/gear/labredblack
/datum/gear/donator/labredblack
name = "Black and Red Coat"
category = SLOT_WEAR_SUIT
slot = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/toggle/labcoat/labredblack
ckeywhitelist = list("blakeryan", "durandalphor")
/datum/gear/torisword
/datum/gear/donator/torisword
name = "Rainbow Zweihander"
category = SLOT_IN_BACKPACK
slot = SLOT_IN_BACKPACK
path = /obj/item/dualsaber/hypereutactic/toy/rainbow
ckeywhitelist = list("annoymous35")
/datum/gear/darksabre
/datum/gear/donator/darksabre
name = "Dark Sabre"
category = SLOT_IN_BACKPACK
slot = SLOT_IN_BACKPACK
path = /obj/item/toy/darksabre
ckeywhitelist = list("inferno707")
datum/gear/darksabresheath
/datum/gear/donator/darksabresheath
name = "Dark Sabre Sheath"
category = SLOT_IN_BACKPACK
slot = SLOT_IN_BACKPACK
path = /obj/item/storage/belt/sabre/darksabre
ckeywhitelist = list("inferno707")
/datum/gear/toriball
/datum/gear/donator/toriball
name = "Rainbow Tennis Ball"
category = SLOT_IN_BACKPACK
slot = SLOT_IN_BACKPACK
path = /obj/item/toy/tennis/rainbow
ckeywhitelist = list("annoymous35")
/datum/gear/izzyball
/datum/gear/donator/izzyball
name = "Katlin's Ball"
category = SLOT_IN_BACKPACK
slot = SLOT_IN_BACKPACK
path = /obj/item/toy/tennis/rainbow/izzy
ckeywhitelist = list("izzyinbox")
/datum/gear/cloak
/datum/gear/donator/cloak
name = "Green Cloak"
category = SLOT_NECK
slot = SLOT_NECK
path = /obj/item/clothing/neck/cloak/green
ckeywhitelist = list("killer402402")
/datum/gear/steelflask
/datum/gear/donator/steelflask
name = "Steel Flask"
category = SLOT_IN_BACKPACK
slot = SLOT_IN_BACKPACK
path = /obj/item/reagent_containers/food/drinks/flask/steel
cost = 2
ckeywhitelist = list("nik707")
/datum/gear/paperhat
/datum/gear/donator/paperhat
name = "Paper Hat"
category = SLOT_HEAD
slot = SLOT_HEAD
path = /obj/item/clothing/head/paperhat
ckeywhitelist = list("kered2")
/datum/gear/cloakce
/datum/gear/donator/cloakce
name = "Polychromic CE Cloak"
category = SLOT_IN_BACKPACK
slot = SLOT_IN_BACKPACK
path = /obj/item/clothing/neck/cloak/polychromic/polyce
ckeywhitelist = list("worksbythesea", "blakeryan")
/datum/gear/ssk
/datum/gear/donator/ssk
name = "Stun Sword Kit"
category = SLOT_IN_BACKPACK
slot = SLOT_IN_BACKPACK
path = /obj/item/ssword_kit
ckeywhitelist = list("phillip458")
/datum/gear/techcoat
/datum/gear/donator/techcoat
name = "Techomancers Labcoat"
category = SLOT_IN_BACKPACK
slot = SLOT_IN_BACKPACK
path = /obj/item/clothing/suit/toggle/labcoat/mad/techcoat
ckeywhitelist = list("wilchen")
/datum/gear/leechjar
/datum/gear/donator/leechjar
name = "Jar of Leeches"
category = SLOT_IN_BACKPACK
slot = SLOT_IN_BACKPACK
path = /obj/item/custom/leechjar
ckeywhitelist = list("sgtryder")
/datum/gear/darkarmor
/datum/gear/donator/darkarmor
name = "Dark Armor"
category = SLOT_IN_BACKPACK
slot = SLOT_IN_BACKPACK
path = /obj/item/clothing/suit/armor/vest/darkcarapace
ckeywhitelist = list("inferno707")
/datum/gear/devilwings
/datum/gear/donator/devilwings
name = "Strange Wings"
category = SLOT_NECK
slot = SLOT_NECK
path = /obj/item/clothing/neck/devilwings
ckeywhitelist = list("kitsun")
/datum/gear/flagcape
/datum/gear/donator/flagcape
name = "US Flag Cape"
category = SLOT_IN_BACKPACK
slot = SLOT_IN_BACKPACK
path = /obj/item/clothing/neck/flagcape
ckeywhitelist = list("darnchacha")
/datum/gear/luckyjack
/datum/gear/donator/luckyjack
name = "Lucky Jackboots"
category = SLOT_IN_BACKPACK
slot = SLOT_IN_BACKPACK
path = /obj/item/clothing/shoes/lucky
ckeywhitelist = list("donaldtrumpthecommunist")
/datum/gear/raiqbawks
/datum/gear/donator/raiqbawks
name = "Miami Boombox"
category = SLOT_HANDS
slot = SLOT_HANDS
cost = 2
path = /obj/item/boombox/raiq
ckeywhitelist = list("chefferz")
/datum/gear/m41
/datum/gear/donator/m41
name = "Toy M41"
category = SLOT_IN_BACKPACK
slot = SLOT_IN_BACKPACK
path = /obj/item/toy/gun/m41
ckeywhitelist = list("thalverscholen")
/datum/gear/Divine_robes
/datum/gear/donator/Divine_robes
name = "Divine robes"
category = SLOT_W_UNIFORM
slot = SLOT_W_UNIFORM
path = /obj/item/clothing/under/custom/lunasune
ckeywhitelist = list("invader4352")
/datum/gear/gothcoat
/datum/gear/donator/gothcoat
name = "Goth Coat"
category = SLOT_WEAR_SUIT
slot = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/gothcoat
ckeywhitelist = list("norko")
/datum/gear/corgisuit
/datum/gear/donator/corgisuit
name = "Corgi Suit"
category = SLOT_WEAR_SUIT
slot = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/ian_costume
ckeywhitelist = list("cathodetherobot")
/datum/gear/sharkcloth
/datum/gear/donator/sharkcloth
name = "Leon's Skimpy Outfit"
category = SLOT_WEAR_SUIT
slot = SLOT_WEAR_SUIT
path = /obj/item/clothing/under/custom/leoskimpy
ckeywhitelist = list("spectrosis")
/datum/gear/mimemask
/datum/gear/donator/mimemask
name = "Mime Mask"
category = SLOT_WEAR_MASK
slot = SLOT_WEAR_MASK
path = /obj/item/clothing/mask/gas/mime
ckeywhitelist = list("pireamaineach")
/datum/gear/mimeoveralls
/datum/gear/donator/mimeoveralls
name = "Mime's Overalls"
category = SLOT_WEAR_SUIT
slot = SLOT_WEAR_SUIT
path = /obj/item/clothing/under/custom/mimeoveralls
ckeywhitelist = list("pireamaineach")
/datum/gear/soulneck
/datum/gear/donator/soulneck
name = "Soul Necklace"
category = SLOT_NECK
slot = SLOT_NECK
path = /obj/item/clothing/neck/undertale
ckeywhitelist = list("twilightic")
/datum/gear/frenchberet
/datum/gear/donator/frenchberet
name = "French Beret"
category = SLOT_HEAD
slot = SLOT_HEAD
path = /obj/item/clothing/head/frenchberet
ckeywhitelist = list("notazoltan")
/datum/gear/zuliecloak
/datum/gear/donator/zuliecloak
name = "Project: Zul-E"
category = SLOT_WEAR_SUIT
slot = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/cloak/zuliecloak
ckeywhitelist = list("asky")
/datum/gear/blackredgold
/datum/gear/donator/blackredgold
name = "Black, Red, and Gold Coat"
category = SLOT_WEAR_SUIT
slot = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/blackredgold
ckeywhitelist = list("ttbnc")
/datum/gear/fritzplush
/datum/gear/donator/fritzplush
name = "Fritz Plushie"
category = SLOT_IN_BACKPACK
slot = SLOT_IN_BACKPACK
path = /obj/item/toy/plush/mammal/dog/fritz
ckeywhitelist = list("analwerewolf")
/datum/gear/kimono
/datum/gear/donator/kimono
name = "Kimono"
category = SLOT_WEAR_SUIT
slot = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/kimono
ckeywhitelist = list("sfox63")
/datum/gear/commjacket
/datum/gear/donator/commjacket
name = "Dusty Commisar's Cloak"
category = SLOT_WEAR_SUIT
slot = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/commjacket
ckeywhitelist = list("sadisticbatter")
/datum/gear/mw2_russian_para
/datum/gear/donator/mw2_russian_para
name = "Russian Paratrooper Jumper"
category = SLOT_W_UNIFORM
slot = SLOT_W_UNIFORM
path = /obj/item/clothing/under/custom/mw2_russian_para
ckeywhitelist = list("investigator77")
/datum/gear/longblackgloves
/datum/gear/donator/longblackgloves
name = "Luna's Gauntlets"
category = SLOT_GLOVES
slot = SLOT_GLOVES
path = /obj/item/clothing/gloves/longblackgloves
ckeywhitelist = list("bigmanclancy")
/datum/gear/trendy_fit
/datum/gear/donator/trendy_fit
name = "Trendy Fit"
category = SLOT_W_UNIFORM
slot = SLOT_W_UNIFORM
path = /obj/item/clothing/under/custom/trendy_fit
ckeywhitelist = list("midgetdragon")
/datum/gear/singery
/datum/gear/donator/singery
name = "Yellow Performer Outfit"
category = SLOT_W_UNIFORM
slot = SLOT_W_UNIFORM
path = /obj/item/clothing/under/costume/singer/yellow
ckeywhitelist = list("maxlynchy")
/datum/gear/csheet
/datum/gear/donator/csheet
name = "NT Bedsheet"
category = SLOT_NECK
slot = SLOT_NECK
path = /obj/item/bedsheet/captain
ckeywhitelist = list("tikibomb")
/datum/gear/borgplush
/datum/gear/donator/borgplush
name = "Robot Plush"
category = SLOT_IN_BACKPACK
slot = SLOT_IN_BACKPACK
path = /obj/item/toy/plush/borgplushie
ckeywhitelist = list("nicholaiavenicci")
/datum/gear/donorberet
/datum/gear/donator/donorberet
name = "Atmos Beret"
category = SLOT_HEAD
slot = SLOT_HEAD
path = /obj/item/clothing/head/blueberet
ckeywhitelist = list("foxystalin")
/datum/gear/donorgoggles
/datum/gear/donator/donorgoggles
name = "Flight Goggles"
category = SLOT_HEAD
slot = SLOT_HEAD
path = /obj/item/clothing/head/flight
ckeywhitelist = list("maxlynchy")
/datum/gear/onionneck
/datum/gear/donator/onionneck
name = "Onion Necklace"
category = SLOT_NECK
slot = SLOT_NECK
path = /obj/item/clothing/neck/necklace/onion
ckeywhitelist = list("cdrcross")
/datum/gear/mikubikini
/datum/gear/donator/mikubikini
name = "starlight singer bikini"
category = SLOT_W_UNIFORM
slot = SLOT_W_UNIFORM
path = /obj/item/clothing/under/custom/mikubikini
ckeywhitelist = list("grandvegeta")
/datum/gear/mikujacket
/datum/gear/donator/mikujacket
name = "starlight singer jacket"
category = SLOT_WEAR_SUIT
slot = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/mikujacket
ckeywhitelist = list("grandvegeta")
/datum/gear/mikuhair
/datum/gear/donator/mikuhair
name = "starlight singer hair"
category = SLOT_W_UNIFORM
slot = SLOT_W_UNIFORM
path = /obj/item/clothing/head/mikuhair
ckeywhitelist = list("grandvegeta")
/datum/gear/mikugloves
/datum/gear/donator/mikugloves
name = "starlight singer gloves"
category = SLOT_GLOVES
slot = SLOT_GLOVES
path = /obj/item/clothing/gloves/mikugloves
ckeywhitelist = list("grandvegeta")
/datum/gear/mikuleggings
/datum/gear/donator/mikuleggings
name = "starlight singer leggings"
category = SLOT_SHOES
slot = SLOT_SHOES
path = /obj/item/clothing/shoes/sneakers/mikuleggings
ckeywhitelist = list("grandvegeta")
/datum/gear/cosmos
/datum/gear/donator/cosmos
name = "cosmic space bedsheet"
category = SLOT_IN_BACKPACK
slot = SLOT_IN_BACKPACK
path = /obj/item/bedsheet/cosmos
ckeywhitelist = list("grunnyyy")
@@ -27,8 +27,13 @@ GLOBAL_LIST_EMPTY(loadout_whitelist_ids)
/proc/initialize_global_loadout_items()
load_loadout_config()
for(var/item in subtypesof(/datum/gear))
var/datum/gear/I = new item
LAZYSET(GLOB.loadout_items[slot_to_string(I.category)], I.name, I)
var/datum/gear/I = item
if(!initial(I.name))
continue
I = new item
LAZYINITLIST(GLOB.loadout_items[I.category])
LAZYINITLIST(GLOB.loadout_items[I.category][I.subcategory])
GLOB.loadout_items[I.category][I.subcategory][I.name] = I
if(islist(I.geargroupID))
var/list/ggidlist = I.geargroupID
I.ckeywhitelist = list()
@@ -41,7 +46,9 @@ GLOBAL_LIST_EMPTY(loadout_whitelist_ids)
/datum/gear
var/name
var/category
var/category = LOADOUT_CATEGORY_NONE
var/subcategory = LOADOUT_SUBCATEGORY_NONE
var/slot
var/description
var/path //item-to-spawn path
var/cost = 1 //normally, each loadout costs a single point.
@@ -1,47 +1,45 @@
/datum/gear/medicbriefcase
/datum/gear/hands/medicbriefcase
name = "Medical Briefcase"
category = SLOT_HANDS
path = /obj/item/storage/briefcase/medical
restricted_roles = list("Medical Doctor", "Chief Medical Officer")
restricted_desc = "MD, CMO"
/datum/gear/stethoscope
/datum/gear/neck/stethoscope
name = "Stethoscope"
category = SLOT_NECK
path = /obj/item/clothing/neck/stethoscope
restricted_roles = list("Medical Doctor", "Chief Medical Officer")
/datum/gear/bluescrubs
/datum/gear/uniform/bluescrubs
name = "Blue Scrubs"
category = SLOT_W_UNIFORM
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
path = /obj/item/clothing/under/rank/medical/doctor/blue
restricted_roles = list("Medical Doctor", "Chief Medical Officer", "Geneticist", "Chemist", "Virologist")
restricted_desc = "Medical"
/datum/gear/greenscrubs
/datum/gear/uniform/greenscrubs
name = "Green Scrubs"
category = SLOT_W_UNIFORM
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
path = /obj/item/clothing/under/rank/medical/doctor/green
restricted_roles = list("Medical Doctor", "Chief Medical Officer", "Geneticist", "Chemist", "Virologist")
restricted_desc = "Medical"
/datum/gear/purplescrubs
/datum/gear/uniform/purplescrubs
name = "Purple Scrubs"
category = SLOT_W_UNIFORM
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
path = /obj/item/clothing/under/rank/medical/doctor/purple
restricted_roles = list("Medical Doctor", "Chief Medical Officer", "Geneticist", "Chemist", "Virologist")
restricted_desc = "Medical"
/datum/gear/nursehat
/datum/gear/head/nursehat
name = "Nurse Hat"
category = SLOT_HEAD
path = /obj/item/clothing/head/nursehat
subcategory = LOADOUT_SUBCATEGORY_HEAD_JOBS
restricted_roles = list("Medical Doctor", "Chief Medical Officer", "Geneticist", "Chemist", "Virologist")
restricted_desc = "Medical"
/datum/gear/nursesuit
/datum/gear/uniform/nursesuit
name = "Nurse Suit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/rank/medical/doctor/nurse
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_roles = list("Medical Doctor", "Chief Medical Officer", "Geneticist", "Chemist", "Virologist")
restricted_desc = "Medical"
restricted_desc = "Medical"
@@ -1,71 +1,70 @@
/datum/gear/navyblueuniformhos
/datum/gear/uniform/navyblueuniformhos
name = "Head of Security navyblue uniform"
category = SLOT_W_UNIFORM
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
path = /obj/item/clothing/under/rank/security/head_of_security/formal
restricted_roles = list("Head of Security")
/datum/gear/navybluehosberet
/datum/gear/head/navybluehosberet
name = "Head of security's navyblue beret"
category = SLOT_HEAD
path = /obj/item/clothing/head/beret/sec/navyhos
subcategory = LOADOUT_SUBCATEGORY_HEAD_JOBS
restricted_roles = list("Head of Security")
/datum/gear/navybluejackethos
/datum/gear/suit/navybluejackethos
name = "head of security's navyblue jacket"
category = SLOT_WEAR_SUIT
subcategory = LOADOUT_SUBCATEGORY_SUIT_JOBS
path = /obj/item/clothing/suit/armor/hos/navyblue
restricted_roles = list("Head of Security")
/datum/gear/navybluejacketofficer
/datum/gear/suit/navybluejacketofficer
name = "security officer's navyblue jacket"
category = SLOT_WEAR_SUIT
subcategory = LOADOUT_SUBCATEGORY_SUIT_JOBS
path = /obj/item/clothing/suit/armor/navyblue
restricted_roles = list("Security Officer")
/datum/gear/navyblueofficerberet
/datum/gear/head/navyblueofficerberet
name = "Security officer's Navyblue beret"
category = SLOT_HEAD
path = /obj/item/clothing/head/beret/sec/navyofficer
subcategory = LOADOUT_SUBCATEGORY_HEAD_JOBS
restricted_roles = list("Security Officer")
/datum/gear/navyblueuniformofficer
/datum/gear/uniform/navyblueuniformofficer
name = "Security officer navyblue uniform"
category = SLOT_W_UNIFORM
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
path = /obj/item/clothing/under/rank/security/officer/formal
restricted_roles = list("Security Officer")
/datum/gear/navybluejacketwarden
/datum/gear/suit/navybluejacketwarden
name = "warden navyblue jacket"
category = SLOT_WEAR_SUIT
subcategory = LOADOUT_SUBCATEGORY_SUIT_JOBS
path = /obj/item/clothing/suit/armor/vest/warden/navyblue
restricted_roles = list("Warden")
/datum/gear/navybluewardenberet
/datum/gear/head/navybluewardenberet
name = "Warden's navyblue beret"
category = SLOT_HEAD
path = /obj/item/clothing/head/beret/sec/navywarden
subcategory = LOADOUT_SUBCATEGORY_HEAD_JOBS
restricted_roles = list("Warden")
/datum/gear/navyblueuniformwarden
/datum/gear/uniform/navyblueuniformwarden
name = "Warden navyblue uniform"
category = SLOT_W_UNIFORM
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
path = /obj/item/clothing/under/rank/security/warden/formal
restricted_roles = list("Warden")
/datum/gear/secskirt
/datum/gear/uniform/secskirt
name = "Security skirt"
category = SLOT_W_UNIFORM
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
path = /obj/item/clothing/under/rank/security/officer/skirt
restricted_roles = list("Security Officer", "Warden", "Head of Security")
/datum/gear/hosskirt
/datum/gear/uniform/hosskirt
name = "Head of security's skirt"
category = SLOT_W_UNIFORM
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
path = /obj/item/clothing/under/rank/security/head_of_security/skirt
restricted_roles = list("Head of Security")
/datum/gear/sechud
/datum/gear/glasses/sechud
name = "Security Hud"
category = SLOT_GLASSES
path = /obj/item/clothing/glasses/hud/security
restricted_roles = list("Security Officer", "Warden", "Head of Security")
restricted_roles = list("Security Officer", "Warden", "Head of Security")
@@ -1,33 +1,33 @@
/datum/gear/greytidestationwide
/datum/gear/uniform/greytidestationwide
name = "Staff Assistant's jumpsuit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/misc/staffassistant
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_roles = list("Assistant")
/datum/gear/neetsuit
/datum/gear/suit/neetsuit
name = "D.A.B. suit"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/assu_suit
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_roles = list("Assistant")
cost = 2
/datum/gear/neethelm
/datum/gear/head/neethelm
name = "D.A.B. helmet"
category = SLOT_HEAD
path = /obj/item/clothing/head/assu_helmet
subcategory = LOADOUT_SUBCATEGORY_HEAD_JOBS
restricted_roles = list("Assistant")
cost = 2
/datum/gear/plushvar
/datum/gear/backpack/plushvar
name = "Ratvar Plushie"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/plush/plushvar
subcategory = LOADOUT_SUBCATEGORY_BACKPACK_TOYS
cost = 5
restricted_roles = list("Chaplain")
/datum/gear/narplush
/datum/gear/backpack/narplush
name = "Narsie Plushie"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/plush/narplush
subcategory = LOADOUT_SUBCATEGORY_BACKPACK_TOYS
cost = 5
restricted_roles = list("Chaplain")
@@ -1,112 +1,100 @@
/datum/gear/plushbox
/datum/gear/backpack
category = LOADOUT_CATEGORY_BACKPACK
subcategory = LOADOUT_SUBCATEGORY_BACKPACK_GENERAL
slot = SLOT_IN_BACKPACK
/datum/gear/backpack/plushbox
name = "Plushie Choice Box"
category = SLOT_IN_BACKPACK
path = /obj/item/choice_beacon/box/plushie
subcategory = LOADOUT_SUBCATEGORY_BACKPACK_TOYS
/datum/gear/tennis
/datum/gear/backpack/tennis
name = "Classic Tennis Ball"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/tennis
subcategory = LOADOUT_SUBCATEGORY_BACKPACK_TOYS
/datum/gear/tennisred
/datum/gear/backpack/tennis/red
name = "Red Tennis Ball"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/tennis/red
/datum/gear/tennisyellow
/datum/gear/backpack/tennis/yellow
name = "Yellow Tennis Ball"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/tennis/yellow
/datum/gear/tennisgreen
/datum/gear/backpack/tennis/green
name = "Green Tennis Ball"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/tennis/green
/datum/gear/tenniscyan
/datum/gear/backpack/tennis/cyan
name = "Cyan Tennis Ball"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/tennis/cyan
/datum/gear/tennisblue
/datum/gear/backpack/tennis/blue
name = "Blue Tennis Ball"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/tennis/blue
/datum/gear/tennispurple
/datum/gear/backpack/tennis/purple
name = "Purple Tennis Ball"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/tennis/purple
/datum/gear/dildo
/datum/gear/backpack/dildo
name = "Customizable dildo"
category = SLOT_IN_BACKPACK
path = /obj/item/dildo/custom
subcategory = LOADOUT_SUBCATEGORY_BACKPACK_TOYS
/datum/gear/toykatana
/datum/gear/backpack/toykatana
name = "Toy Katana"
category = SLOT_IN_BACKPACK
path = /obj/item/toy/katana
subcategory = LOADOUT_SUBCATEGORY_BACKPACK_TOYS
cost = 3
/datum/gear/tapeplayer
/datum/gear/backpack/tapeplayer
name = "Taperecorder"
category = SLOT_IN_BACKPACK
path = /obj/item/taperecorder
/datum/gear/tape
/datum/gear/backpack/tape
name = "Spare cassette tape"
category = SLOT_IN_BACKPACK
path = /obj/item/tape/random
/datum/gear/newspaper
/datum/gear/backpack/newspaper
name = "Newspaper"
category = SLOT_IN_BACKPACK
path = /obj/item/newspaper
/datum/gear/crayons
/datum/gear/backpack/crayons
name = "Box of crayons"
category = SLOT_IN_BACKPACK
path = /obj/item/storage/crayons
subcategory = LOADOUT_SUBCATEGORY_BACKPACK_TOYS
/datum/gear/multipen
/datum/gear/backpack/multipen
name = "A multicolored pen"
category = SLOT_IN_BACKPACK
path = /obj/item/pen/fourcolor
/datum/gear/fountainpen
/datum/gear/backpack/fountainpen
name = "A fancy pen"
category = SLOT_IN_BACKPACK
path = /obj/item/pen/fountain
cost = 2
/datum/gear/modular_tablet
/datum/gear/backpack/modular_tablet
name = "A modular tablet"
category = SLOT_IN_BACKPACK
path = /obj/item/modular_computer/tablet/preset/cheap/
cost = 4
/datum/gear/modular_laptop
/datum/gear/backpack/modular_laptop
name = "A modular laptop"
category = SLOT_IN_BACKPACK
path = /obj/item/modular_computer/laptop/preset/civilian
cost = 7
/datum/gear/ringbox_gold
/datum/gear/backpack/ringbox_gold
name = "A gold ring box"
category = SLOT_IN_BACKPACK
path = /obj/item/storage/fancy/ringbox
cost = 3
/datum/gear/ringbox_silver
/datum/gear/backpack/ringbox_silver
name = "A silver ring box"
category = SLOT_IN_BACKPACK
path = /obj/item/storage/fancy/ringbox/silver
cost = 3
/datum/gear/ringbox_diamond
/datum/gear/backpack/ringbox_diamond
name = "A diamond ring box"
category = SLOT_IN_BACKPACK
path = /obj/item/storage/fancy/ringbox/diamond
cost = 5
@@ -1,49 +1,43 @@
/datum/gear/blindfold
/datum/gear/glasses
category = LOADOUT_CATEGORY_GLASSES
slot = SLOT_GLASSES
/datum/gear/glasses/blindfold
name = "Blindfold"
category = SLOT_GLASSES
path = /obj/item/clothing/glasses/sunglasses/blindfold
/datum/gear/cold
/datum/gear/glasses/cold
name = "Cold goggles"
category = SLOT_GLASSES
path = /obj/item/clothing/glasses/cold
/datum/gear/eyepatch
/datum/gear/glasses/eyepatch
name = "Eyepatch"
category = SLOT_GLASSES
path = /obj/item/clothing/glasses/eyepatch
/datum/gear/heat
/datum/gear/glasses/heat
name = "Heat goggles"
category = SLOT_GLASSES
path = /obj/item/clothing/glasses/heat
/datum/gear/hipster
/datum/gear/glasses/hipster
name = "Hipster glasses"
category = SLOT_GLASSES
path = /obj/item/clothing/glasses/regular/hipster
/datum/gear/jamjar
/datum/gear/glasses/jamjar
name = "Jamjar glasses"
category = SLOT_GLASSES
path = /obj/item/clothing/glasses/regular/jamjar
/datum/gear/monocle
/datum/gear/glasses/monocle
name = "Monocle"
category = SLOT_GLASSES
path = /obj/item/clothing/glasses/monocle
/datum/gear/orange
/datum/gear/glasses/orange
name = "Orange glasses"
category = SLOT_GLASSES
path = /obj/item/clothing/glasses/orange
/datum/gear/red
/datum/gear/glasses/red
name = "Red Glasses"
category = SLOT_GLASSES
path = /obj/item/clothing/glasses/red
/datum/gear/prescription
/datum/gear/glasses/prescription
name = "Prescription glasses"
category = SLOT_GLASSES
path = /obj/item/clothing/glasses/regular
@@ -1,28 +1,26 @@
/datum/gear/fingerless
/datum/gear/gloves
category = LOADOUT_CATEGORY_GLOVES
slot = SLOT_GLOVES
/datum/gear/gloves/fingerless
name = "Fingerless Gloves"
category = SLOT_GLOVES
path = /obj/item/clothing/gloves/fingerless
/datum/gear/evening
/datum/gear/gloves/evening
name = "Evening gloves"
category = SLOT_GLOVES
path = /obj/item/clothing/gloves/evening
/datum/gear/goldring
/datum/gear/gloves/goldring
name = "A gold ring"
category = SLOT_GLOVES
path = /obj/item/clothing/gloves/ring
cost = 2
/datum/gear/silverring
/datum/gear/gloves/silverring
name = "A silver ring"
category = SLOT_GLOVES
path = /obj/item/clothing/gloves/ring/silver
cost = 2
/datum/gear/diamondring
/datum/gear/gloves/diamondring
name = "A diamond ring"
category = SLOT_GLOVES
path = /obj/item/clothing/gloves/ring/diamond
cost = 4
@@ -1,67 +1,54 @@
/datum/gear/cane
/datum/gear/hands
category = LOADOUT_CATEGORY_HANDS
slot = SLOT_HANDS
/datum/gear/hands/cane
name = "Cane"
category = SLOT_HANDS
path = /obj/item/cane
/datum/gear/cigarettes
/datum/gear/hands/cigarettes
name = "Cigarette pack"
category = SLOT_HANDS
path = /obj/item/storage/fancy/cigarettes
/datum/gear/dice
/datum/gear/hands/dice
name = "Dice bag"
category = SLOT_HANDS
path = /obj/item/storage/box/dice
/datum/gear/eightball
/datum/gear/hands/eightball
name = "Magic eightball"
category = SLOT_HANDS
path = /obj/item/toy/eightball
/datum/gear/matches
/datum/gear/hands/matches
name = "Matchbox"
category = SLOT_HANDS
path = /obj/item/storage/box/matches
/datum/gear/cheaplighter
/datum/gear/hands/cheaplighter
name = "Cheap lighter"
category = SLOT_HANDS
path = /obj/item/lighter/greyscale
/datum/gear/cards
/datum/gear/hands/cards
name = "Playing cards"
category = SLOT_HANDS
path = /obj/item/toy/cards/deck
/datum/gear/skub
/datum/gear/hands/skub
name = "Skub"
category = SLOT_HANDS
path = /obj/item/skub
/datum/gear/carpplushie
name = "Space carp plushie"
category = SLOT_HANDS
path = /obj/item/toy/plush/carpplushie
/datum/gear/wallet
/datum/gear/hands/wallet
name = "Wallet"
category = SLOT_HANDS
path = /obj/item/storage/wallet
/datum/gear/flask
/datum/gear/hands/flask
name = "Flask"
category = SLOT_HANDS
path = /obj/item/reagent_containers/food/drinks/flask
cost = 2
/datum/gear/zippolighter
/datum/gear/hands/zippolighter
name = "Zippo Lighter"
category = SLOT_HANDS
path = /obj/item/lighter
cost = 2
/datum/gear/cigar
/datum/gear/hands/cigar
name = "Cigar"
category = SLOT_HANDS
path = /obj/item/clothing/mask/cigarette/cigar
cost = 4 //smoking is bad mkay
@@ -1,146 +1,136 @@
/datum/gear/baseball
/datum/gear/head
category = LOADOUT_CATEGORY_HEAD
subcategory = LOADOUT_SUBCATEGORY_HEAD_GENERAL
slot = SLOT_HEAD
/datum/gear/head/baseball
name = "Ballcap"
category = SLOT_HEAD
path = /obj/item/clothing/head/soft/mime
/datum/gear/beanie
/datum/gear/head/beanie
name = "Beanie"
category = SLOT_HEAD
path = /obj/item/clothing/head/beanie
/datum/gear/beret
/datum/gear/head/beret
name = "Black beret"
category = SLOT_HEAD
path = /obj/item/clothing/head/beret/black
/datum/gear/flatcap
/datum/gear/head/flatcap
name = "Flat cap"
category = SLOT_HEAD
path = /obj/item/clothing/head/flatcap
/datum/gear/pirate
/datum/gear/head/pirate
name = "Pirate hat"
category = SLOT_HEAD
path = /obj/item/clothing/head/pirate
/datum/gear/rice_hat
/datum/gear/head/rice_hat
name = "Rice hat"
category = SLOT_HEAD
path = /obj/item/clothing/head/rice_hat
/datum/gear/ushanka
name = "Ushanka"
category = SLOT_HEAD
/datum/gear/head/ushanka
path = /obj/item/clothing/head/ushanka
/datum/gear/slime
/datum/gear/head/slime
name = "Slime hat"
category = SLOT_HEAD
path = /obj/item/clothing/head/collectable/slime
/datum/gear/fedora
/datum/gear/head/fedora
name = "Fedora"
category = SLOT_HEAD
path = /obj/item/clothing/head/fedora
/datum/gear/that
/datum/gear/head/that
name = "Top Hat"
category = SLOT_HEAD
path = /obj/item/clothing/head/that
/datum/gear/maidband
/datum/gear/head/maidband
name = "Maid headband"
category = SLOT_HEAD
path= /obj/item/clothing/head/maid
/datum/gear/flakhelm
/datum/gear/head/flakhelm
name = "Flak Helmet"
category = SLOT_HEAD
path = /obj/item/clothing/head/flakhelm
cost = 2
/datum/gear/bunnyears
/datum/gear/head/bunnyears
name = "Bunny Ears"
category = SLOT_HEAD
path = /obj/item/clothing/head/rabbitears
/datum/gear/mailmanhat
/datum/gear/head/mailmanhat
name = "Mailman's Hat"
category = SLOT_HEAD
path = /obj/item/clothing/head/mailman
//trek fancy Hats!
/datum/gear/trekcap
/datum/gear/head/trekcap
name = "Federation Officer's Cap (White)"
category = SLOT_HEAD
path = /obj/item/clothing/head/caphat/formal/fedcover
subcategory = LOADOUT_SUBCATEGORY_HEAD_JOBS
restricted_roles = list("Captain","Head of Personnel")
/datum/gear/trekcapcap
/datum/gear/head/trekcapcap
name = "Federation Officer's Cap (Black)"
category = SLOT_HEAD
path = /obj/item/clothing/head/caphat/formal/fedcover/black
subcategory = LOADOUT_SUBCATEGORY_HEAD_JOBS
restricted_roles = list("Captain","Head of Personnel")
/datum/gear/trekcapmedisci
/datum/gear/head/trekcapmedisci
name = "Federation Officer's Cap (Blue)"
category = SLOT_HEAD
path = /obj/item/clothing/head/caphat/formal/fedcover/medsci
subcategory = LOADOUT_SUBCATEGORY_HEAD_JOBS
restricted_desc = "Medical and Science"
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Paramedic","Geneticist","Research Director","Scientist", "Roboticist")
/datum/gear/trekcapeng
/datum/gear/head/trekcapeng
name = "Federation Officer's Cap (Yellow)"
category = SLOT_HEAD
path = /obj/item/clothing/head/caphat/formal/fedcover/eng
subcategory = LOADOUT_SUBCATEGORY_HEAD_JOBS
restricted_desc = "Engineering, Security, and Cargo"
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
/datum/gear/trekcapsec
/datum/gear/head/trekcapsec
name = "Federation Officer's Cap (Red)"
category = SLOT_HEAD
path = /obj/item/clothing/head/caphat/formal/fedcover/sec
subcategory = LOADOUT_SUBCATEGORY_HEAD_JOBS
restricted_desc = "Engineering, Security, and Cargo"
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
// orvilike "original" kepi
/datum/gear/orvkepicom
/datum/gear/head/orvkepicom
name = "Federation Kepi, command"
description = "A visored cap. Intended to be used with ORV uniform."
category = SLOT_HEAD
path = /obj/item/clothing/head/kepi/orvi/command
subcategory = LOADOUT_SUBCATEGORY_HEAD_JOBS
restricted_desc = "Heads of Staff"
restricted_roles = list("Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Research Director", "Chief Medical Officer", "Quartermaster")
/datum/gear/orvkepiops
/datum/gear/head/orvkepiops
name = "Federation Kepi, ops/sec"
description = "A visored cap. Intended to be used with ORV uniform."
category = SLOT_HEAD
path = /obj/item/clothing/head/kepi/orvi/engsec
subcategory = LOADOUT_SUBCATEGORY_HEAD_JOBS
restricted_desc = "Engineering, Security and Cargo"
restricted_roles = list("Chief Engineer", "Atmospheric Technician", "Station Engineer", "Warden", "Detective", "Security Officer", "Head of Security", "Cargo Technician", "Shaft Miner", "Quartermaster")
/datum/gear/orvkepimedsci
/datum/gear/head/orvkepimedsci
name = "Federation Kepi, medsci"
description = "A visored cap. Intended to be used with ORV uniform."
category = SLOT_HEAD
path = /obj/item/clothing/head/kepi/orvi/medsci
subcategory = LOADOUT_SUBCATEGORY_HEAD_JOBS
restricted_desc = "Medical and Science"
restricted_roles = list("Chief Medical Officer", "Medical Doctor", "Chemist", "Virologist", "Paramedic", "Geneticist", "Research Director", "Scientist", "Roboticist")
/datum/gear/orvkepisrv
/datum/gear/head/orvkepisrv
name = "Federation Kepi, service"
description = "A visored cap. Intended to be used with ORV uniform."
category = SLOT_HEAD
path = /obj/item/clothing/head/kepi/orvi/service
subcategory = LOADOUT_SUBCATEGORY_HEAD_JOBS
restricted_desc = "Service and Civilian, barring Clown, Mime and Lawyer"
restricted_roles = list("Assistant", "Bartender", "Botanist", "Cook", "Curator", "Janitor", "Chaplain")
/datum/gear/orvkepiass
/datum/gear/head/orvkepiass
name = "Federation Kepi, assistant"
description = "A visored cap. Intended to be used with ORV uniform."
category = SLOT_HEAD
path = /obj/item/clothing/head/kepi/orvi
subcategory = LOADOUT_SUBCATEGORY_HEAD_JOBS
restricted_roles = list("Assistant")
/*Commenting out Until next Christmas or made automatic
@@ -156,35 +146,37 @@
*/
//Cowboy Stuff
/datum/gear/cowboyhat
/datum/gear/head/cowboyhat
name = "Cowboy Hat, Brown"
category = SLOT_HEAD
path = /obj/item/clothing/head/cowboyhat
/datum/gear/cowboyhat/black
/datum/gear/head/cowboyhat/black
name = "Cowboy Hat, Black"
category = SLOT_HEAD
path = /obj/item/clothing/head/cowboyhat/black
/datum/gear/cowboyhat/white
/datum/gear/head/cowboyhat/white
name = "Cowboy Hat, White"
category = SLOT_HEAD
path = /obj/item/clothing/head/cowboyhat/white
/datum/gear/cowboyhat/pink
/datum/gear/head/cowboyhat/pink
name = "Cowboy Hat, Pink"
category = SLOT_HEAD
path = /obj/item/clothing/head/cowboyhat/pink
/datum/gear/cowboyhat/sec
/datum/gear/head/cowboyhat/sec
name = "Cowboy Hat, Security"
category = SLOT_HEAD
path = /obj/item/clothing/head/cowboyhat/sec
subcategory = LOADOUT_SUBCATEGORY_HEAD_JOBS
restricted_desc = "Security"
restricted_roles = list("Warden","Detective","Security Officer","Head of Security")
// Misc
/datum/gear/wkepi
/datum/gear/head/wkepi
name = "white kepi"
category = SLOT_HEAD
path = /obj/item/clothing/head/kepi
/datum/gear/head/widered
name = "Wide red hat"
path = /obj/item/clothing/head/widered
/datum/gear/head/kabuto
name = "Kabuto helmet"
path = /obj/item/clothing/head/kabuto
@@ -1,16 +1,16 @@
/datum/gear/balaclava
/datum/gear/mask
category = LOADOUT_CATEGORY_MASK
slot = SLOT_WEAR_MASK
/datum/gear/mask/balaclava
name = "Balaclava"
category = SLOT_WEAR_MASK
path = /obj/item/clothing/mask/balaclava
/datum/gear/moustache
/datum/gear/mask/moustache
name = "Fake moustache"
category = SLOT_WEAR_MASK
path = /obj/item/clothing/mask/fakemoustache
/datum/gear/joy
/datum/gear/mask/joy
name = "Joy mask"
category = SLOT_WEAR_MASK
path = /obj/item/clothing/mask/joy
cost = 3
@@ -1,99 +1,88 @@
/datum/gear/bluetie
/datum/gear/neck
category = LOADOUT_CATEGORY_NECK
subcategory = LOADOUT_SUBCATEGORY_NECK_GENERAL
slot = SLOT_NECK
/datum/gear/neck/bluetie
name = "Blue tie"
category = SLOT_NECK
subcategory = LOADOUT_SUBCATEGORY_NECK_TIE
path = /obj/item/clothing/neck/tie/blue
/datum/gear/redtie
/datum/gear/neck/redtie
name = "Red tie"
category = SLOT_NECK
subcategory = LOADOUT_SUBCATEGORY_NECK_TIE
path = /obj/item/clothing/neck/tie/red
/datum/gear/blacktie
/datum/gear/neck/blacktie
name = "Black tie"
category = SLOT_NECK
subcategory = LOADOUT_SUBCATEGORY_NECK_TIE
path = /obj/item/clothing/neck/tie/black
/datum/gear/collar
/datum/gear/neck/collar
name = "Collar"
category = SLOT_NECK
path = /obj/item/clothing/neck/petcollar
/datum/gear/leathercollar
/datum/gear/neck/leathercollar
name = "Leather collar"
category = SLOT_NECK
path = /obj/item/clothing/neck/petcollar/leather
/datum/gear/choker
/datum/gear/neck/choker
name = "Choker"
category = SLOT_NECK
path = /obj/item/clothing/neck/petcollar/choker
/datum/gear/scarf
/datum/gear/neck/scarf
name = "White scarf"
category = SLOT_NECK
subcategory = LOADOUT_SUBCATEGORY_NECK_SCARVES
path = /obj/item/clothing/neck/scarf
/datum/gear/blackscarf
/datum/gear/neck/scarf/black
name = "Black scarf"
category = SLOT_NECK
path = /obj/item/clothing/neck/scarf/black
/datum/gear/redscarf
/datum/gear/neck/scarf/red
name = "Red scarf"
category = SLOT_NECK
path = /obj/item/clothing/neck/scarf/red
/datum/gear/greenscarf
/datum/gear/neck/scarf/green
name = "Green scarf"
category = SLOT_NECK
path = /obj/item/clothing/neck/scarf/green
/datum/gear/darkbluescarf
/datum/gear/neck/scarf/darkblue
name = "Dark blue scarf"
category = SLOT_NECK
path = /obj/item/clothing/neck/scarf/darkblue
/datum/gear/purplescarf
/datum/gear/neck/scarf/purple
name = "Purple scarf"
category = SLOT_NECK
path = /obj/item/clothing/neck/scarf/purple
/datum/gear/yellowscarf
/datum/gear/neck/scarf/yellow
name = "Yellow scarf"
category = SLOT_NECK
path = /obj/item/clothing/neck/scarf/yellow
/datum/gear/orangescarf
/datum/gear/neck/scarf/orange
name = "Orange scarf"
category = SLOT_NECK
path = /obj/item/clothing/neck/scarf/orange
/datum/gear/cyanscarf
/datum/gear/neck/scarf/cyan
name = "Cyan scarf"
category = SLOT_NECK
path = /obj/item/clothing/neck/scarf/cyan
/datum/gear/stripedredscarf
/datum/gear/neck/scarf/stripedred
name = "Striped red scarf"
category = SLOT_NECK
path = /obj/item/clothing/neck/stripedredscarf
/datum/gear/stripedbluescarf
/datum/gear/neck/scarf/stripedblue
name = "Striped blue scarf"
category = SLOT_NECK
path = /obj/item/clothing/neck/stripedbluescarf
/datum/gear/stripedgreenscarf
/datum/gear/neck/scarf/stripedgreen
name = "Striped green scarf"
category = SLOT_NECK
path = /obj/item/clothing/neck/stripedgreenscarf
/datum/gear/headphones
/datum/gear/neck/headphones
name = "Headphones"
category = SLOT_NECK
path = /obj/item/clothing/ears/headphones
/datum/gear/polycloak
/datum/gear/neck/polycloak
name = "Polychromatic Cloak"
category = SLOT_NECK
path = /obj/item/clothing/neck/cloak/polychromic
@@ -1,84 +1,71 @@
/datum/gear/laceup
/datum/gear/shoes
category = LOADOUT_CATEGORY_SHOES
slot = SLOT_SHOES
/datum/gear/shoes/laceup
name = "Laceup shoes"
category = SLOT_SHOES
path = /obj/item/clothing/shoes/laceup
/datum/gear/workboots
/datum/gear/shoes/workboots
name = "Work boots"
category = SLOT_SHOES
path = /obj/item/clothing/shoes/workboots
/datum/gear/jackboots
/datum/gear/shoes/jackboots
name = "Jackboots"
category = SLOT_SHOES
path = /obj/item/clothing/shoes/jackboots
/datum/gear/winterboots
/datum/gear/shoes/winterboots
name = "Winter boots"
category = SLOT_SHOES
path = /obj/item/clothing/shoes/winterboots
/datum/gear/sandals
/datum/gear/shoes/sandals
name = "Sandals"
category = SLOT_SHOES
path = /obj/item/clothing/shoes/sandal
/datum/gear/blackshoes
/datum/gear/shoes/blackshoes
name = "Black shoes"
category = SLOT_SHOES
path = /obj/item/clothing/shoes/sneakers/black
/datum/gear/brownshoes
/datum/gear/shoes/brownshoes
name = "Brown shoes"
category = SLOT_SHOES
path = /obj/item/clothing/shoes/sneakers/brown
/datum/gear/whiteshoes
/datum/gear/shoes/whiteshoes
name = "White shoes"
category = SLOT_SHOES
path = /obj/item/clothing/shoes/sneakers/white
/datum/gear/gildedcuffs
/datum/gear/shoes/gildedcuffs
name = "Gilded leg wraps"
category = SLOT_SHOES
path= /obj/item/clothing/shoes/wraps
/datum/gear/silvercuffs
/datum/gear/shoes/silvercuffs
name = "Silver leg wraps"
category = SLOT_SHOES
path= /obj/item/clothing/shoes/wraps/silver
/datum/gear/redcuffs
/datum/gear/shoes/redcuffs
name = "Red leg wraps"
category = SLOT_SHOES
path= /obj/item/clothing/shoes/wraps/red
/datum/gear/bluecuffs
/datum/gear/shoes/bluecuffs
name = "Blue leg wraps"
category = SLOT_SHOES
path= /obj/item/clothing/shoes/wraps/blue
/datum/gear/christmasbootsr
/datum/gear/shoes/christmasbootsr
name = "Red Christmas Boots"
category = SLOT_SHOES
path= /obj/item/clothing/shoes/winterboots/christmasbootsr
/datum/gear/christmasbootsg
/datum/gear/shoes/christmasbootsg
name = "Green Christmas Boots"
category = SLOT_SHOES
path= /obj/item/clothing/shoes/winterboots/christmasbootsg
/datum/gear/santaboots
/datum/gear/shoes/santaboots
name = "Santa Boots"
category = SLOT_SHOES
path= /obj/item/clothing/shoes/winterboots/santaboots
/datum/gear/cowboyboots
/datum/gear/shoes/cowboyboots
name = "Cowboy Boots, Brown"
category = SLOT_SHOES
path = /obj/item/clothing/shoes/cowboyboots
/datum/gear/cowboyboots/black
/datum/gear/shoes/cowboyboots/black
name = "Cowboy Boots, Black"
category = SLOT_SHOES
path = /obj/item/clothing/shoes/cowboyboots/black
path = /obj/item/clothing/shoes/cowboyboots/black
@@ -1,261 +1,250 @@
/datum/gear/poncho
/datum/gear/suit
category = LOADOUT_CATEGORY_SUIT
subcategory = LOADOUT_SUBCATEGORY_SUIT_GENERAL
slot = SLOT_WEAR_SUIT
/datum/gear/suit/poncho
name = "Poncho"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/poncho
/datum/gear/ponchogreen
/datum/gear/suit/ponchogreen
name = "Green poncho"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/poncho/green
/datum/gear/ponchored
/datum/gear/suit/ponchored
name = "Red poncho"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/poncho/red
/datum/gear/redhood
/datum/gear/suit/redhood
name = "Red cloak"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/cloak/david
cost = 3
/datum/gear/jacketbomber
/datum/gear/suit/jacketbomber
name = "Bomber jacket"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/jacket
subcategory = LOADOUT_SUBCATEGORY_SUIT_JACKETS
/datum/gear/jacketflannelblack // all of these are reskins of bomber jackets but with the vibe to make you look like a true lumberjack
/datum/gear/suit/jacketflannelblack // all of these are reskins of bomber jackets but with the vibe to make you look like a true lumberjack
name = "Black flannel jacket"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/jacket/flannel
subcategory = LOADOUT_SUBCATEGORY_SUIT_JACKETS
/datum/gear/jacketflannelred
/datum/gear/suit/jacketflannelred
name = "Red flannel jacket"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/jacket/flannel/red
subcategory = LOADOUT_SUBCATEGORY_SUIT_JACKETS
/datum/gear/jacketflannelaqua
/datum/gear/suit/jacketflannelaqua
name = "Aqua flannel jacket"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/jacket/flannel/aqua
subcategory = LOADOUT_SUBCATEGORY_SUIT_JACKETS
/datum/gear/jacketflannelbrown
/datum/gear/suit/jacketflannelbrown
name = "Brown flannel jacket"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/jacket/flannel/brown
subcategory = LOADOUT_SUBCATEGORY_SUIT_JACKETS
/datum/gear/jacketleather
/datum/gear/suit/jacketleather
name = "Leather jacket"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/jacket/leather
subcategory = LOADOUT_SUBCATEGORY_SUIT_JACKETS
/datum/gear/overcoatleather
/datum/gear/suit/overcoatleather
name = "Leather overcoat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/jacket/leather/overcoat
subcategory = LOADOUT_SUBCATEGORY_SUIT_JACKETS
/datum/gear/jacketpuffer
/datum/gear/suit/jacketpuffer
name = "Puffer jacket"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/jacket/puffer
subcategory = LOADOUT_SUBCATEGORY_SUIT_JACKETS
/datum/gear/vestpuffer
/datum/gear/suit/vestpuffer
name = "Puffer vest"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/jacket/puffer/vest
subcategory = LOADOUT_SUBCATEGORY_SUIT_JACKETS
/datum/gear/jacketlettermanbrown
/datum/gear/suit/jacketlettermanbrown
name = "Brown letterman jacket"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/jacket/letterman
subcategory = LOADOUT_SUBCATEGORY_SUIT_JACKETS
/datum/gear/jacketlettermanred
/datum/gear/suit/jacketlettermanred
name = "Red letterman jacket"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/jacket/letterman_red
subcategory = LOADOUT_SUBCATEGORY_SUIT_JACKETS
/datum/gear/jacketlettermanNT
/datum/gear/suit/jacketlettermanNT
name = "Nanotrasen letterman jacket"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/jacket/letterman_nanotrasen
subcategory = LOADOUT_SUBCATEGORY_SUIT_JACKETS
/datum/gear/coat
/datum/gear/suit/coat
name = "Winter coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat
subcategory = LOADOUT_SUBCATEGORY_SUIT_COATS
/datum/gear/coat/aformal
/datum/gear/suit/coat/aformal
name = "Assistant's formal winter coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/aformal
/datum/gear/coat/runed
/datum/gear/suit/coat/runed
name = "Runed winter coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/narsie/fake
/datum/gear/coat/brass
/datum/gear/suit/coat/brass
name = "Brass winter coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/ratvar/fake
/datum/gear/coat/polycoat
/datum/gear/suit/coat/polycoat
name = "Polychromic winter coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/polychromic
cost = 4 //too many people with neon green coats is hard on the eyes
/datum/gear/coat/med
/datum/gear/suit/coat/med
name = "Medical winter coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/medical
restricted_roles = list("Chief Medical Officer", "Medical Doctor") // Reserve it to Medical Doctors and their boss, the Chief Medical Officer
/datum/gear/coat/paramedic
/datum/gear/suit/coat/paramedic
name = "Paramedic winter coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/paramedic
restricted_roles = list("Chief Medical Officer", "Paramedic") // Reserve it to Paramedics and their boss, the Chief Medical Officer
/datum/gear/coat/robotics
/datum/gear/suit/coat/robotics
name = "Robotics winter coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/robotics
restricted_roles = list("Research Director", "Roboticist")
/datum/gear/coat/sci
/datum/gear/suit/coat/sci
name = "Science winter coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/science
restricted_roles = list("Research Director", "Scientist", "Roboticist") // Reserve it to the Science Departement
/datum/gear/coat/eng
/datum/gear/suit/coat/eng
name = "Engineering winter coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/engineering
restricted_roles = list("Chief Engineer", "Station Engineer") // Reserve it to Station Engineers and their boss, the Chief Engineer
/datum/gear/coat/eng/atmos
/datum/gear/suit/coat/eng/atmos
name = "Atmospherics winter coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos
restricted_roles = list("Chief Engineer", "Atmospheric Technician") // Reserve it to Atmos Techs and their boss, the Chief Engineer
/datum/gear/coat/hydro
/datum/gear/suit/coat/hydro
name = "Hydroponics winter coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/hydro
restricted_roles = list("Head of Personnel", "Botanist") // Reserve it to Botanists and their boss, the Head of Personnel
/datum/gear/coat/bar
/datum/gear/suit/coat/bar
name = "Bar winter coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/bar
restricted_roles = list("Bartender") // Reserve it to Bartenders and not the Head of Personnel because he doesnt deserve to look as fancy as them
/datum/gear/coat/cargo
/datum/gear/suit/coat/cargo
name = "Cargo winter coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/cargo
restricted_roles = list("Quartermaster", "Cargo Technician") // Reserve it to Cargo Techs and their boss, the Quartermaster
/datum/gear/coat/miner
/datum/gear/suit/coat/miner
name = "Mining winter coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/miner
restricted_roles = list("Quartermaster", "Shaft Miner") // Reserve it to Miners and their boss, the Quartermaster
/datum/gear/militaryjacket
/datum/gear/suit/militaryjacket
name = "Military Jacket"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/jacket/miljacket
subcategory = LOADOUT_SUBCATEGORY_SUIT_JACKETS
/datum/gear/ianshirt
/datum/gear/suit/ianshirt
name = "Ian Shirt"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/ianshirt
/datum/gear/flakjack
/datum/gear/suit/flakjack
name = "Flak Jacket"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/flakjack
subcategory = LOADOUT_SUBCATEGORY_SUIT_JACKETS
cost = 2
/datum/gear/trekds9_coat
/datum/gear/suit/trekds9_coat
name = "DS9 Overcoat (use uniform)"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/storage/trek/ds9
subcategory = LOADOUT_SUBCATEGORY_SUIT_JOBS
restricted_desc = "All, barring Service and Civilian"
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster",
"Medical Doctor","Chemist","Virologist","Paramedic","Geneticist","Scientist", "Roboticist",
"Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer",
"Cargo Technician", "Shaft Miner") //everyone who actually deserves a job.
//Federation jackets from movies
/datum/gear/trekcmdcap
/datum/gear/suit/trekcmdcap
name = "Fed (movie) uniform, Black"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/storage/fluff/fedcoat/capt
subcategory = LOADOUT_SUBCATEGORY_SUIT_JOBS
restricted_roles = list("Captain","Head of Personnel")
/datum/gear/trekcmdmov
/datum/gear/suit/trekcmdmov
name = "Fed (movie) uniform, Red"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/storage/fluff/fedcoat
subcategory = LOADOUT_SUBCATEGORY_SUIT_JOBS
restricted_desc = "Heads of Staff and Security"
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster","Warden","Detective","Security Officer")
/datum/gear/trekmedscimov
/datum/gear/suit/trekmedscimov
name = "Fed (movie) uniform, Blue"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/storage/fluff/fedcoat/medsci
subcategory = LOADOUT_SUBCATEGORY_SUIT_JOBS
restricted_desc = "Medical and Science"
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Paramedic","Geneticist","Research Director","Scientist", "Roboticist")
/datum/gear/trekengmov
/datum/gear/suit/trekengmov
name = "Fed (movie) uniform, Yellow"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/storage/fluff/fedcoat/eng
subcategory = LOADOUT_SUBCATEGORY_SUIT_JOBS
restricted_desc = "Engineering and Cargo"
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Cargo Technician", "Shaft Miner", "Quartermaster")
/datum/gear/trekcmdcapmod
/datum/gear/suit/trekcmdcapmod
name = "Fed (Modern) uniform, White"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/storage/fluff/modernfedcoat
restricted_roles = list("Captain","Head of Personnel")
/datum/gear/trekcmdmod
/datum/gear/suit/trekcmdmod
name = "Fed (Modern) uniform, Red"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/storage/fluff/modernfedcoat/sec
subcategory = LOADOUT_SUBCATEGORY_SUIT_JOBS
restricted_desc = "Heads of Staff and Security"
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster","Warden","Detective","Security Officer")
/datum/gear/trekmedscimod
/datum/gear/suit/trekmedscimod
name = "Fed (Modern) uniform, Blue"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/storage/fluff/modernfedcoat/medsci
subcategory = LOADOUT_SUBCATEGORY_SUIT_JOBS
restricted_desc = "Medical and Science"
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Paramedic","Geneticist","Research Director","Scientist", "Roboticist")
/datum/gear/trekengmod
/datum/gear/suit/trekengmod
name = "Fed (Modern) uniform, Yellow"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/storage/fluff/modernfedcoat/eng
subcategory = LOADOUT_SUBCATEGORY_SUIT_JOBS
restricted_desc = "Engineering and Cargo"
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Cargo Technician", "Shaft Miner", "Quartermaster")
/datum/gear/christmascoatr
/datum/gear/suit/christmascoatr
name = "Red Christmas Coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/christmascoatr
subcategory = LOADOUT_SUBCATEGORY_SUIT_COATS
/datum/gear/christmascoatg
/datum/gear/suit/christmascoatg
name = "Green Christmas Coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/christmascoatg
subcategory = LOADOUT_SUBCATEGORY_SUIT_COATS
/datum/gear/christmascoatrg
/datum/gear/suit/christmascoatrg
name = "Red and Green Christmas Coat"
category = SLOT_WEAR_SUIT
path = /obj/item/clothing/suit/hooded/wintercoat/christmascoatrg
subcategory = LOADOUT_SUBCATEGORY_SUIT_COATS
/datum/gear/suit/samurai
name = "Samurai outfit"
path = /obj/item/clothing/suit/samurai
@@ -1,562 +1,542 @@
/datum/gear/suitblack
name = "Black suit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/suit/black
/datum/gear/uniform
category = LOADOUT_CATEGORY_UNIFORM
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_GENERAL
slot = SLOT_W_UNIFORM
/datum/gear/suitgreen
/datum/gear/uniform/suit
name = "Black suit"
path = /obj/item/clothing/under/suit/black
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_SUITS
/datum/gear/uniform/suit/green
name = "Green suit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/suit/green
/datum/gear/suitred
/datum/gear/uniform/suit/red
name = "Red suit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/suit/red
/datum/gear/suitcharcoal
/datum/gear/uniform/suit/charcoal
name = "Charcoal suit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/suit/charcoal
/datum/gear/suitnavy
/datum/gear/uniform/suit/navy
name = "Navy suit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/suit/navy
/datum/gear/suitburgundy
/datum/gear/uniform/suit/burgundy
name = "Burgundy suit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/suit/burgundy
/datum/gear/suittan
/datum/gear/uniform/suit/tan
name = "Tan suit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/suit/tan
/datum/gear/suitwhite
/datum/gear/uniform/suit/white
name = "White suit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/suit/white
/datum/gear/assistantformal
/datum/gear/uniform/assistantformal
name = "Assistant's formal uniform"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/misc/assistantformal
/datum/gear/maidcostume
/datum/gear/uniform/maidcostume
name = "Maid costume"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/costume/maid
/datum/gear/mailmanuniform
/datum/gear/uniform/mailmanuniform
name = "Mailman's jumpsuit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/misc/mailman
/datum/gear/skirtblack
/datum/gear/uniform/skirt
name = "Black skirt"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/dress/skirt
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_SKIRTS
/datum/gear/skirtblue
/datum/gear/uniform/skirt/blue
name = "Blue skirt"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/dress/skirt/blue
/datum/gear/skirtred
/datum/gear/uniform/skirt/red
name = "Red skirt"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/dress/skirt/red
/datum/gear/skirtpurple
/datum/gear/uniform/skirt/purple
name = "Purple skirt"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/dress/skirt/purple
/datum/gear/skirtplaid
/datum/gear/uniform/skirt/plaid
name = "Plaid skirt"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/dress/skirt/plaid
/datum/gear/schoolgirlblue
/datum/gear/uniform/schoolgirlblue
name = "Blue Schoolgirl Uniform"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/costume/schoolgirl
/datum/gear/schoolgirlred
/datum/gear/uniform/schoolgirlred
name = "Red Schoolgirl Uniform"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/costume/schoolgirl/red
/datum/gear/schoolgirlgreen
/datum/gear/uniform/schoolgirlgreen
name = "Green Schoolgirl Uniform"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/costume/schoolgirl/green
/datum/gear/schoolgirlorange
/datum/gear/uniform/schoolgirlorange
name = "Orange Schoolgirl Uniform"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/costume/schoolgirl/orange
/datum/gear/stripeddress
/datum/gear/uniform/dress
name = "Striped Dress"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/dress/striped
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_DRESSES
/datum/gear/sundresswhite
/datum/gear/uniform/dress/sun/white
name = "White Sundress"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/dress/sundress/white
/datum/gear/sundress
/datum/gear/uniform/dress/sun
name = "Sundress"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/dress/sundress
/datum/gear/greendress
/datum/gear/uniform/dress/green
name = "Green Dress"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/dress/green
/datum/gear/pinkdress
/datum/gear/uniform/dress/pink
name = "Pink Dress"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/dress/pink
/datum/gear/flowerdress
/datum/gear/uniform/dress/orange
name = "Flower Dress"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/dress/flower
/datum/gear/sweptskirt
/datum/gear/uniform/skirt/swept
name = "Swept skirt"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/dress/skirt/swept
/datum/gear/croptop
/datum/gear/uniform/croptop
name = "Croptop"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/croptop
/datum/gear/yoga
/datum/gear/uniform/pants
name = "Yoga Pants"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/pants/yoga
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_PANTS
/datum/gear/kilt
/datum/gear/uniform/kilt
name = "Kilt"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/costume/kilt
/datum/gear/camoshorts
/datum/gear/uniform/pants/camo
name = "Camo Pants"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/pants/camo
/datum/gear/athleticshorts
/datum/gear/uniform/shorts
name = "Athletic Shorts"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/shorts/red
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_SHORTS
/datum/gear/bjeans
/datum/gear/uniform/pants/bjeans
name = "Black Jeans"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/pants/blackjeans
/datum/gear/cjeans
/datum/gear/uniform/pants/cjeans
name = "Classic Jeans"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/pants/classicjeans
/datum/gear/khaki
/datum/gear/uniform/pants/khaki
name = "Khaki Pants"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/pants/khaki
/datum/gear/wpants
/datum/gear/uniform/pants/white
name = "White Pants"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/pants/white
/datum/gear/rpants
/datum/gear/uniform/pants/red
name = "Red Pants"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/pants/red
/datum/gear/tpants
/datum/gear/uniform/pants/tan
name = "Tan Pants"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/pants/tan
/datum/gear/trpants
/datum/gear/uniform/pants/track
name = "Track Pants"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/pants/track
/datum/gear/rippedjeans
/datum/gear/uniform/pants/ripped
name = "Ripped Jeans"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/pants/jeanripped
/datum/gear/jeanshort
/datum/gear/uniform/shorts/jean
name = "Jean Shorts"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/pants/jeanshort
/datum/gear/denimskirt
/datum/gear/uniform/skirt/denim
name = "Denim Skirt"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/pants/denimskirt
/datum/gear/yoga
name = "Yoga Pants"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/pants/yoga
// Pantsless Sweaters
/datum/gear/turtleneck
/datum/gear/uniform/turtleneck
name = "Tactitool Turtleneck"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/syndicate/cosmetic
/datum/gear/creamsweater
/datum/gear/uniform/sweater
name = "Cream Commando Sweater"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/sweater
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_SWEATERS
/datum/gear/blacksweater
/datum/gear/uniform/sweater/black
name = "Black Commando Sweater"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/sweater/black
/datum/gear/purpsweater
/datum/gear/uniform/sweater/purple
name = "Purple Commando Sweater"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/sweater/purple
/datum/gear/greensweater
/datum/gear/uniform/sweater/green
name = "Green Commando Sweater"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/sweater/green
/datum/gear/redsweater
/datum/gear/uniform/sweater/red
name = "Red Commando Sweater"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/sweater/red
/datum/gear/bluesweater
/datum/gear/uniform/sweater/blue
name = "Navy Commando Sweater"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/sweater/blue
/datum/gear/keyholesweater
/datum/gear/uniform/sweater/keyhole
name = "Keyhole Sweater"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/misc/keyholesweater
/datum/gear/polyjump
/datum/gear/uniform/polyjump
name = "Polychromic Jumpsuit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/misc/polyjumpsuit
cost = 2
/datum/gear/polyskirt
/datum/gear/uniform/skirt/poly
name = "Polychromic Jumpskirt"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/dress/skirt/polychromic
cost = 2
/datum/gear/polysuit
/datum/gear/uniform/suit/poly
name = "Polychromic Button-up Shirt"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/misc/poly_shirt
cost = 3
/datum/gear/polypleated
/datum/gear/uniform/skirt/poly/pleated
name = "Polychromic Pleated Sweaterskirt"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/dress/skirt/polychromic/pleated
cost = 3
/datum/gear/polykilt
/datum/gear/uniform/polykilt
name = "Polychromic Kilt"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/costume/kilt/polychromic
cost = 3
/datum/gear/polyshorts
/datum/gear/uniform/shorts/poly
name = "Polychromic Shorts"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/misc/polyshorts
cost = 3
/datum/gear/polyshortpants
/datum/gear/uniform/shorts/poly/athletic
name = "Polychromic Athletic Shorts"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/shorts/polychromic
cost = 2
// Trekie things
//TOS
/datum/gear/trekcmdtos
/datum/gear/uniform/trekcmdtos
name = "TOS uniform, cmd"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trek/command
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_desc = "Heads of Staff"
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster")
/datum/gear/trekmedscitos
/datum/gear/uniform/trekmedscitos
name = "TOS uniform, med/sci"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trek/medsci
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_desc = "Medical and Science"
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Paramedic","Geneticist","Research Director","Scientist", "Roboticist")
/datum/gear/trekengtos
/datum/gear/uniform/trekengtos
name = "TOS uniform, ops/sec"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trek/engsec
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_desc = "Engineering, Security, and Cargo"
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
//TNG
/datum/gear/trekcmdtng
/datum/gear/uniform/trekcmdtng
name = "TNG uniform, cmd"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trek/command/next
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_desc = "Heads of Staff"
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster")
/datum/gear/trekmedscitng
/datum/gear/uniform/trekmedscitng
name = "TNG uniform, med/sci"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trek/medsci/next
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_desc = "Medical and Science"
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Paramedic","Geneticist","Research Director","Scientist", "Roboticist")
/datum/gear/trekengtng
/datum/gear/uniform/trekengtng
name = "TNG uniform, ops/sec"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trek/engsec/next
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_desc = "Engineering, Security, and Cargo"
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
//VOY
/datum/gear/trekcmdvoy
/datum/gear/uniform/trekcmdvoy
name = "VOY uniform, cmd"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trek/command/voy
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_desc = "Heads of Staff"
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster")
/datum/gear/trekmedscivoy
/datum/gear/uniform/trekmedscivoy
name = "VOY uniform, med/sci"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trek/medsci/voy
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_desc = "Medical and Science"
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Paramedic","Geneticist","Research Director","Scientist", "Roboticist")
/datum/gear/trekengvoy
/datum/gear/uniform/trekengvoy
name = "VOY uniform, ops/sec"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trek/engsec/voy
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_desc = "Engineering, Security, and Cargo"
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
//DS9
/datum/gear/trekcmdds9
/datum/gear/uniform/trekcmdds9
name = "DS9 uniform, cmd"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trek/command/ds9
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_desc = "Heads of Staff"
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster")
/datum/gear/trekmedscids9
/datum/gear/uniform/trekmedscids9
name = "DS9 uniform, med/sci"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trek/medsci/ds9
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_desc = "Medical and Science"
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Paramedic","Geneticist","Research Director","Scientist", "Roboticist")
/datum/gear/trekengds9
/datum/gear/uniform/trekengds9
name = "DS9 uniform, ops/sec"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trek/engsec/ds9
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_desc = "Engineering, Security, and Cargo"
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
//ENT
/datum/gear/trekcmdent
/datum/gear/uniform/trekcmdent
name = "ENT uniform, cmd"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trek/command/ent
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_desc = "Heads of Staff"
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster")
/datum/gear/trekmedscient
/datum/gear/uniform/trekmedscient
name = "ENT uniform, med/sci"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trek/medsci/ent
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_desc = "Medical and Science"
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Paramedic","Geneticist","Research Director","Scientist", "Roboticist")
/datum/gear/trekengent
/datum/gear/uniform/trekengent
name = "ENT uniform, ops/sec"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trek/engsec/ent
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_desc = "Engineering, Security, and Cargo"
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
//TheMotionPicture
/datum/gear/trekfedutil
/datum/gear/uniform/trekfedutil
name = "TMP uniform"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trek/fedutil
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_desc = "All, barring Service and Civilian"
restricted_roles = list("Head of Security","Captain","Head of Personnel","Chief Engineer","Research Director","Chief Medical Officer","Quartermaster",
"Medical Doctor","Chemist","Virologist","Paramedic","Geneticist","Scientist", "Roboticist",
"Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer",
"Cargo Technician", "Shaft Miner")
/datum/gear/trekfedtrainee
/datum/gear/uniform/trekfedtrainee
name = "TMP uniform, trainee"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trek/fedutil/trainee
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_roles = list("Assistant", "Janitor", "Cargo Technician")
/datum/gear/trekfedservice
/datum/gear/uniform/trekfedservice
name = "TMP uniform, service"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trek/fedutil/service
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_desc = "Service and Civilian, barring Clown, Mime and Lawyer"
restricted_roles = list("Assistant", "Bartender", "Botanist", "Cook", "Curator", "Janitor", "Chaplain")
//Orvilike
/datum/gear/orvcmd
/datum/gear/uniform/orvcmd
name = "ORV uniform, cmd"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trek/command/orv
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_desc = "Heads of Staff"
restricted_roles = list("Head of Security", "Captain", "Head of Personnel", "Chief Engineer", "Research Director", "Chief Medical Officer", "Quartermaster")
/datum/gear/orvcmd_capt
/datum/gear/uniform/orvcmd_capt
name = "ORV uniform, capt"
category = SLOT_W_UNIFORM
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
path = /obj/item/clothing/under/trek/command/orv/captain
restricted_roles = list("Captain")
/datum/gear/orvmedsci
/datum/gear/uniform/orvmedsci
name = "ORV uniform, med/sci"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trek/medsci/orv
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_desc = "Medical and Science"
restricted_roles = list("Chief Medical Officer", "Medical Doctor", "Chemist", "Virologist", "Paramedic", "Geneticist", "Research Director", "Scientist", "Roboticist")
/datum/gear/orvcmd_medsci
/datum/gear/uniform/orvcmd_medsci
name = "ORV uniform, med/sci, cmd"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trek/command/orv/medsci
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_roles = list("Chief Medical Officer", "Research Director")
/datum/gear/orvops
/datum/gear/uniform/orvops
name = "ORV uniform, ops/sec"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trek/engsec/orv
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_desc = "Engineering, Security and Cargo"
restricted_roles = list("Chief Engineer", "Atmospheric Technician", "Station Engineer", "Warden", "Detective", "Security Officer", "Head of Security", "Cargo Technician", "Shaft Miner", "Quartermaster")
/datum/gear/orvcmd_ops
/datum/gear/uniform/orvcmd_ops
name = "ORV uniform, ops/sec, cmd"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trek/command/orv/engsec
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_roles = list("Chief Engineer", "Head of Security")
/datum/gear/orvass
/datum/gear/uniform/orvass
name = "ORV uniform, assistant"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trek/orv
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_roles = list("Assistant")
/datum/gear/orvsrv
/datum/gear/uniform/orvsrv
name = "ORV uniform, service"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/trek/orv/service
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_JOBS
restricted_roles = list("Assistant", "Bartender", "Botanist", "Cook", "Curator", "Janitor", "Chaplain")
restricted_desc = "Service and Civilian, barring Clown, Mime and Lawyer"
//Memes
/datum/gear/gear_harnesses
/datum/gear/uniform/gear_harnesses
name = "Gear Harness"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/misc/gear_harness
//Christmas
/*Commenting out Until next Christmas or made automatic
/datum/gear/christmasmaler
/datum/gear/uniform/christmasmaler
name = "Red Masculine Christmas Suit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/costume/christmas
/datum/gear/christmasmaleg
/datum/gear/uniform/christmasmaleg
name = "Green Masculine Christmas Suit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/costume/christmas/green
/datum/gear/christmasfemaler
/datum/gear/uniform/christmasfemaler
name = "Red Feminine Christmas Suit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/costume/christmas/croptop
/datum/gear/christmasfemaleg
/datum/gear/uniform/christmasfemaleg
name = "Green Feminine Christmas Suit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/costume/christmas/croptop/green
/datum/gear/pinkstripper
/datum/gear/uniform/pinkstripper
name = "Pink stripper outfit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/misc/stripper
cost = 3
*/
/datum/gear/greenstripper
/datum/gear/uniform/greenstripper
name = "Green stripper outfit"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/misc/stripper/green
cost = 3
/datum/gear/qipao
/datum/gear/uniform/qipao
name = "Qipao, Black"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/costume/qipao
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_DRESSES
cost = 3
/datum/gear/qipao/white
/datum/gear/uniform/qipao/white
name = "Qipao, White"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/costume/qipao/white
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_DRESSES
cost = 3
/datum/gear/qipao/red
/datum/gear/uniform/qipao/red
name = "Qipao, Red"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/costume/qipao/red
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_DRESSES
cost = 3
/datum/gear/cheongsam
/datum/gear/uniform/cheongsam
name = "Cheongsam, Black"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/costume/cheongsam
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_DRESSES
cost = 3
/datum/gear/cheongsam/white
/datum/gear/uniform/cheongsam/white
name = "Cheongsam, White"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/costume/cheongsam/white
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_DRESSES
cost = 3
/datum/gear/cheongsam/red
/datum/gear/uniform/cheongsam/red
name = "Cheongsam, Red"
category = SLOT_W_UNIFORM
path = /obj/item/clothing/under/costume/cheongsam/red
subcategory = LOADOUT_SUBCATEGORY_UNIFORM_DRESSES
cost = 3
/datum/gear/uniform/dress/black
name = "Black dress"
path = /obj/item/clothing/under/misc/black_dress
/datum/gear/uniform/skirt/pinktutu
name = "Pink tutu"
path = /obj/item/clothing/under/misc/pinktutu
/datum/gear/uniform/bathrobe
name = "Bathrobe"
path = /obj/item/clothing/under/misc/bathrobe
/datum/gear/uniform/kimono
name = "Kimono"
path = /obj/item/clothing/under/costume/kimono
/datum/gear/uniform/kimono/black
name = "Black kimono"
path = /obj/item/clothing/under/costume/kimono/black
/datum/gear/uniform/kimono/kamishimo
name = "Kamishimo"
path = /obj/item/clothing/under/costume/kimono/kamishimo
/datum/gear/uniform/kimono/fancy
name = "Fancy kimono"
path = /obj/item/clothing/under/costume/kimono/fancy
/datum/gear/uniform/kimono/sakura
name = "Sakura kimono"
path = /obj/item/clothing/under/costume/kimono/sakura
+1 -1
View File
@@ -31,7 +31,7 @@ Flood the station's powernet with as much electricity as you can.
Replace all the floor tiles with wood, carpeting, grass or bling.
You must escape the station! Get the shuttle called!
Don't allow anyone to be cloned.
The oxygen is killing them all and they don't even know it. Make sure no oxygen is on the station.
Their cold, mindless gaze pierce your soul. They see your every movements, it's merely a question of time before they try to control us further. Deactivate all cameras!
Your body must be improved. Ingest as many drugs as you can.
You are hungry. Eat as much food as you can find.
You see you see what they cannot you see the open door you seeE you SEeEe you SEe yOU seEee SHOW THEM ALL
+5
View File
@@ -62,6 +62,7 @@
#include "code\__DEFINES\language.dm"
#include "code\__DEFINES\layers_planes.dm"
#include "code\__DEFINES\lighting.dm"
#include "code\__DEFINES\loadout.dm"
#include "code\__DEFINES\logging.dm"
#include "code\__DEFINES\machines.dm"
#include "code\__DEFINES\maps.dm"
@@ -201,6 +202,7 @@
#include "code\_globalvars\lists\client.dm"
#include "code\_globalvars\lists\flavor_misc.dm"
#include "code\_globalvars\lists\keybindings.dm"
#include "code\_globalvars\lists\loadout_categories.dm"
#include "code\_globalvars\lists\maintenance_loot.dm"
#include "code\_globalvars\lists\mapping.dm"
#include "code\_globalvars\lists\medals.dm"
@@ -1525,6 +1527,7 @@
#include "code\modules\antagonists\clockcult\clock_effects\servant_blocker.dm"
#include "code\modules\antagonists\clockcult\clock_effects\spatial_gateway.dm"
#include "code\modules\antagonists\clockcult\clock_helpers\clock_powerdrain.dm"
#include "code\modules\antagonists\clockcult\clock_helpers\clock_rites.dm"
#include "code\modules\antagonists\clockcult\clock_helpers\component_helpers.dm"
#include "code\modules\antagonists\clockcult\clock_helpers\fabrication_helpers.dm"
#include "code\modules\antagonists\clockcult\clock_helpers\hierophant_network.dm"
@@ -1532,6 +1535,7 @@
#include "code\modules\antagonists\clockcult\clock_helpers\ratvarian_language.dm"
#include "code\modules\antagonists\clockcult\clock_helpers\scripture_checks.dm"
#include "code\modules\antagonists\clockcult\clock_helpers\slab_abilities.dm"
#include "code\modules\antagonists\clockcult\clock_items\clock_augments.dm"
#include "code\modules\antagonists\clockcult\clock_items\clock_components.dm"
#include "code\modules\antagonists\clockcult\clock_items\clockwork_armor.dm"
#include "code\modules\antagonists\clockcult\clock_items\clockwork_slab.dm"
@@ -1543,6 +1547,7 @@
#include "code\modules\antagonists\clockcult\clock_items\soul_vessel.dm"
#include "code\modules\antagonists\clockcult\clock_items\wraith_spectacles.dm"
#include "code\modules\antagonists\clockcult\clock_items\clock_weapons\_call_weapon.dm"
#include "code\modules\antagonists\clockcult\clock_items\clock_weapons\brass_claw.dm"
#include "code\modules\antagonists\clockcult\clock_items\clock_weapons\ratvarian_shield.dm"
#include "code\modules\antagonists\clockcult\clock_items\clock_weapons\ratvarian_spear.dm"
#include "code\modules\antagonists\clockcult\clock_mobs\_eminence.dm"