update master

update #2
This commit is contained in:
YakumoChen
2019-09-24 03:10:12 +00:00
committed by GitHub
92 changed files with 770 additions and 1315 deletions
+332 -100
View File
@@ -11774,11 +11774,15 @@
/area/engine/atmospherics_engine)
"aAb" = (
/turf/closed/wall,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aAc" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/closed/wall,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aAd" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/tile/neutral{
@@ -12358,7 +12362,9 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aBh" = (
/obj/item/twohanded/required/kirbyplants/random,
/obj/machinery/light/small{
@@ -12367,26 +12373,27 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aBi" = (
/obj/structure/table,
/obj/item/clothing/suit/apron/overalls,
/obj/item/cultivator,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aBj" = (
/obj/machinery/biogenerator,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aBk" = (
/obj/structure/table,
/obj/item/seeds/poppy/lily{
pixel_x = 4;
pixel_y = 4
},
/obj/item/seeds/poppy/geranium,
/obj/effect/decal/cleanable/dirt,
/obj/item/reagent_containers/food/snacks/grown/wheat,
/obj/item/reagent_containers/food/snacks/grown/corn,
@@ -12395,15 +12402,23 @@
/obj/machinery/airalarm{
pixel_y = 23
},
/obj/item/seeds/poppy/lily{
pixel_x = 4;
pixel_y = 4
},
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aBl" = (
/obj/machinery/hydroponics/soil,
/obj/item/seeds/tea,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aBm" = (
/obj/item/twohanded/required/kirbyplants/random,
/obj/machinery/status_display{
@@ -12411,7 +12426,9 @@
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aBn" = (
/obj/structure/table,
/obj/item/stack/packageWrap,
@@ -12422,7 +12439,9 @@
/obj/item/reagent_containers/food/snacks/grown/cherries,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aBo" = (
/obj/item/twohanded/required/kirbyplants/random,
/obj/machinery/light/small{
@@ -12432,14 +12451,18 @@
/obj/effect/turf_decal/delivery,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aBp" = (
/obj/machinery/hydroponics/soil,
/obj/item/seeds/poppy,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aBq" = (
/obj/structure/cable/white{
icon_state = "2-4"
@@ -13032,26 +13055,34 @@
/turf/closed/wall/r_wall,
/area/engine/atmospherics_engine)
"aCv" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aCw" = (
/obj/effect/turf_decal/delivery,
/obj/machinery/hydroponics/soil,
/obj/item/seeds/watermelon,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aCx" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
},
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aCy" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aCz" = (
/obj/structure/cable/white{
icon_state = "1-2"
@@ -13658,15 +13689,21 @@
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aDy" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aDz" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aDA" = (
/obj/structure/sink{
dir = 4;
@@ -13677,7 +13714,9 @@
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aDB" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
@@ -14188,37 +14227,38 @@
/turf/open/space,
/area/space/nearstation)
"aEB" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable/white{
icon_state = "2-4"
},
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aEC" = (
/obj/structure/cable/white{
icon_state = "4-8"
},
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aED" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable/white{
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aEE" = (
/obj/structure/cable/white{
icon_state = "2-8"
},
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
"aEF" = (
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aEG" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable/white{
@@ -14854,14 +14894,18 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aFK" = (
/obj/machinery/hydroponics/soil,
/obj/item/seeds/harebell,
/obj/machinery/light/small,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aFL" = (
/obj/structure/table,
/obj/item/shovel/spade,
@@ -14875,23 +14919,27 @@
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable/white,
/obj/machinery/power/apc{
dir = 2;
name = "Abandoned Garden APC";
areastring = "/area/hydroponics/garden/abandoned";
dir = 2;
name = "Maintenance Garden APC";
pixel_y = -26
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aFM" = (
/obj/machinery/seed_extractor,
/obj/machinery/status_display{
pixel_y = -32
},
/obj/item/reagent_containers/glass/bucket,
/obj/effect/turf_decal/delivery,
/obj/machinery/hydroponics/soil,
/obj/item/seeds/poppy/geranium,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aFN" = (
/obj/structure/table,
/obj/item/plant_analyzer,
@@ -14899,12 +14947,16 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aFO" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aFP" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable/white{
@@ -14912,7 +14964,9 @@
},
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aFQ" = (
/obj/structure/table,
/obj/item/crowbar,
@@ -14920,7 +14974,9 @@
/obj/item/reagent_containers/glass/bucket,
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aFR" = (
/obj/machinery/hydroponics/soil,
/obj/item/seeds/tower,
@@ -14929,7 +14985,9 @@
/obj/effect/turf_decal/delivery,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aFS" = (
/obj/structure/cable/white{
icon_state = "1-2"
@@ -15021,6 +15079,9 @@
location = "Bar"
},
/obj/effect/turf_decal/delivery,
/obj/machinery/door/window/eastleft{
req_access_txt = "25"
},
/turf/open/floor/plasteel,
/area/crew_quarters/bar)
"aGc" = (
@@ -15922,9 +15983,10 @@
/area/engine/atmospherics_engine)
"aHl" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/barricade/wooden,
/turf/open/floor/plating,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aHm" = (
/obj/machinery/door/airlock/maintenance_hatch{
name = "Maintenance Hatch";
@@ -15933,7 +15995,6 @@
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/dirt,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/barricade/wooden,
/obj/effect/turf_decal/stripes/line{
dir = 2
},
@@ -15941,7 +16002,9 @@
dir = 1
},
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aHn" = (
/obj/machinery/door/airlock/maintenance_hatch{
name = "Maintenance Hatch";
@@ -15951,7 +16014,6 @@
/obj/structure/cable/white{
icon_state = "1-2"
},
/obj/structure/barricade/wooden,
/obj/effect/turf_decal/stripes/line{
dir = 2
},
@@ -15959,13 +16021,16 @@
dir = 1
},
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aHo" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/barricade/wooden,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plating,
/area/hydroponics/garden/abandoned)
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"aHp" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable/white{
@@ -16808,7 +16873,8 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/turf/open/floor/plating,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/maintenance/port/fore)
"aIK" = (
/obj/structure/cable/white{
@@ -16818,10 +16884,18 @@
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plating,
/obj/machinery/light/small{
dir = 1
},
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/turf/open/floor/plasteel,
/area/maintenance/port/fore)
"aIL" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable/white{
icon_state = "4-8"
},
@@ -17687,7 +17761,14 @@
/area/engine/atmospherics_engine)
"aKg" = (
/obj/structure/closet/emcloset,
/turf/open/floor/plating,
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/plasteel,
/area/maintenance/port/fore)
"aKh" = (
/obj/effect/decal/cleanable/dirt,
@@ -17704,7 +17785,11 @@
/area/maintenance/port/fore)
"aKi" = (
/obj/structure/closet,
/turf/open/floor/plating,
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/plasteel,
/area/maintenance/port/fore)
"aKj" = (
/obj/effect/decal/cleanable/dirt,
@@ -17715,16 +17800,20 @@
/turf/open/floor/plasteel,
/area/maintenance/port/fore)
"aKk" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/maintenance/port/fore)
"aKl" = (
/obj/effect/landmark/event_spawn,
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
@@ -21299,6 +21388,9 @@
location = "Theatre"
},
/obj/effect/turf_decal/delivery,
/obj/machinery/door/window/westleft{
req_access_txt = "46"
},
/turf/open/floor/plasteel,
/area/crew_quarters/theatre)
"aQj" = (
@@ -26153,6 +26245,9 @@
dir = 4
},
/obj/effect/turf_decal/delivery,
/obj/machinery/door/window/eastright{
req_one_access_txt = "48,50"
},
/turf/open/floor/plasteel,
/area/quartermaster/office)
"aXg" = (
@@ -29213,6 +29308,9 @@
location = "Kitchen"
},
/obj/effect/turf_decal/delivery,
/obj/machinery/door/window/eastleft{
req_access_txt = "28"
},
/turf/open/floor/plasteel,
/area/crew_quarters/kitchen)
"bcd" = (
@@ -30865,6 +30963,9 @@
location = "Hydroponics"
},
/obj/effect/turf_decal/delivery,
/obj/machinery/door/window/westleft{
req_access_txt = "35"
},
/turf/open/floor/plasteel,
/area/hallway/secondary/service)
"beW" = (
@@ -36055,6 +36156,9 @@
/obj/structure/plasticflaps/opaque,
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/delivery,
/obj/machinery/door/window/northright{
req_access_txt = "48"
},
/turf/open/floor/plasteel,
/area/maintenance/starboard/fore)
"bnB" = (
@@ -39195,13 +39299,6 @@
name = "Hydroponics Desk";
req_access_txt = "35"
},
/obj/item/seeds/lime{
pixel_x = 6
},
/obj/item/seeds/watermelon,
/obj/item/seeds/grape{
pixel_x = -6
},
/obj/item/reagent_containers/food/snacks/grown/wheat,
/obj/item/reagent_containers/food/snacks/grown/watermelon,
/obj/item/reagent_containers/food/snacks/grown/banana,
@@ -41789,6 +41886,9 @@
location = "Atmospherics"
},
/obj/effect/turf_decal/delivery,
/obj/machinery/door/window/westleft{
req_access_txt = "24"
},
/turf/open/floor/plasteel,
/area/engine/atmos)
"bwH" = (
@@ -71753,6 +71853,9 @@
location = "Security"
},
/obj/effect/turf_decal/delivery,
/obj/machinery/door/window/northleft{
req_access_txt = "63"
},
/turf/open/floor/plasteel,
/area/security/range)
"cqh" = (
@@ -82547,6 +82650,9 @@
location = "Engineering"
},
/obj/effect/turf_decal/delivery,
/obj/machinery/door/window/northright{
req_access_txt = "10"
},
/turf/open/floor/plasteel,
/area/engine/engineering)
"cIr" = (
@@ -87734,6 +87840,9 @@
location = "Medbay"
},
/obj/effect/turf_decal/delivery,
/obj/machinery/door/window/westleft{
req_access_txt = "5"
},
/turf/open/floor/plasteel,
/area/medical/storage)
"cRl" = (
@@ -114081,6 +114190,9 @@
location = "Robotics"
},
/obj/effect/turf_decal/delivery,
/obj/machinery/door/window/northright{
req_access_txt = "47"
},
/turf/open/floor/plasteel,
/area/science/robotics/lab)
"dKl" = (
@@ -126680,6 +126792,23 @@
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/science/research)
"ibC" = (
/obj/effect/turf_decal/delivery,
/obj/machinery/hydroponics/soil,
/obj/item/seeds/lime{
pixel_x = 6
},
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"iiH" = (
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/turf/open/floor/plasteel,
/area/maintenance/port/fore)
"ijB" = (
/obj/structure/reagent_dispensers/keg/aphro/strong,
/obj/item/reagent_containers/glass/beaker,
@@ -127109,6 +127238,14 @@
dir = 1
},
/area/science/circuit)
"mdk" = (
/obj/effect/turf_decal/tile/neutral,
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/machinery/light/small,
/turf/open/floor/plasteel,
/area/maintenance/port/fore)
"mkm" = (
/obj/machinery/atmospherics/components/binary/valve,
/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_toxmix{
@@ -127211,6 +127348,29 @@
/obj/machinery/atmospherics/pipe/simple/general/hidden,
/turf/closed/wall/r_wall,
/area/maintenance/disposal/incinerator)
"oaP" = (
/obj/machinery/seed_extractor,
/obj/item/reagent_containers/glass/bucket,
/obj/effect/turf_decal/delivery,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"obe" = (
/obj/structure/cable/white{
icon_state = "1-2"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/disposalpipe/segment,
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/plasteel,
/area/maintenance/port/fore)
"owr" = (
/obj/effect/turf_decal/tile/neutral{
dir = 1
@@ -127224,6 +127384,29 @@
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/plasteel/dark,
/area/chapel/office)
"owI" = (
/obj/structure/cable/white{
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/turf/open/floor/plasteel,
/area/maintenance/port/fore)
"ozr" = (
/obj/effect/turf_decal/delivery,
/obj/machinery/hydroponics/soil,
/obj/item/seeds/grape,
/turf/open/floor/plasteel,
/area/hydroponics/garden/abandoned{
name = "Maintenance Garden"
})
"oIl" = (
/obj/machinery/atmospherics/components/unary/portables_connector/visible{
dir = 1
@@ -127273,6 +127456,19 @@
},
/turf/open/floor/plasteel/dark,
/area/science/mixing)
"oOb" = (
/obj/structure/window/reinforced{
dir = 8
},
/obj/structure/window/reinforced{
dir = 4
},
/obj/machinery/door/window{
req_one_access_txt = "48,50"
},
/obj/effect/turf_decal/bot,
/turf/open/floor/plasteel,
/area/quartermaster/sorting)
"oSD" = (
/obj/machinery/meter,
/obj/machinery/atmospherics/pipe/manifold/general/visible{
@@ -127363,6 +127559,15 @@
},
/turf/open/floor/plating,
/area/science/research/abandoned)
"pHf" = (
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/turf/open/floor/plasteel,
/area/maintenance/port/fore)
"pQm" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable/white{
@@ -127466,6 +127671,13 @@
/obj/machinery/door/poddoor/incinerator_toxmix,
/turf/open/floor/engine/vacuum,
/area/science/mixing)
"tbC" = (
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/plasteel,
/area/maintenance/port/fore)
"tmi" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
@@ -127479,6 +127691,14 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/fitness/recreation)
"tAi" = (
/obj/structure/reagent_dispensers/watertank,
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/obj/effect/turf_decal/tile/neutral,
/turf/open/floor/plasteel,
/area/maintenance/port/fore)
"tCh" = (
/turf/closed/wall,
/area/science/misc_lab)
@@ -127582,6 +127802,18 @@
/obj/effect/turf_decal/stripes/line,
/turf/open/floor/plasteel,
/area/science/circuit)
"whX" = (
/obj/effect/turf_decal/tile/neutral{
dir = 1
},
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/effect/turf_decal/tile/neutral{
dir = 8
},
/turf/open/floor/plasteel,
/area/maintenance/port/fore)
"wAA" = (
/obj/structure/sign/nanotrasen,
/turf/closed/wall/r_wall,
@@ -156627,7 +156859,7 @@ arB
aug
alg
alg
aAd
whX
aKg
alf
aMO
@@ -156884,7 +157116,7 @@ aAb
aAb
aAb
aAb
arB
pHf
aKh
alf
aMN
@@ -157138,11 +157370,11 @@ aAb
aBg
aCv
aDx
aCw
aCv
aFJ
aAb
aIH
aoY
tAi
alf
aMP
aDw
@@ -157393,8 +157625,8 @@ axI
ayU
aAb
aBh
aCw
aCw
aCv
aCv
aCv
aFK
aHl
@@ -157650,13 +157882,13 @@ axJ
aoY
aAb
aBi
aCw
aCv
aCw
aEB
aFL
aAb
arB
alg
aIH
tbC
avm
arB
arB
@@ -157908,11 +158140,11 @@ alf
aAb
aBj
aCv
aCw
oaP
aEC
aFM
aAb
alg
aIH
ary
aLz
aLz
@@ -158165,11 +158397,11 @@ alg
aAb
aBk
aCv
aCw
ozr
aEC
aFN
aAb
arA
aIH
aKi
aLz
aMQ
@@ -158421,13 +158653,13 @@ axL
ayV
aAb
aBl
aCw
aCv
aDy
aED
aFO
aHm
aII
aKj
mdk
aLz
aMR
aOq
@@ -158678,13 +158910,13 @@ axM
ayW
aAb
aBm
aCw
aCw
aCv
aCv
aEE
aFP
aHn
aIJ
aKj
iiH
aLz
aMS
aOr
@@ -158936,12 +159168,12 @@ ayX
aAb
aBn
aCx
aCw
aCw
ibC
aCv
aFQ
aAb
asQ
arB
owI
iiH
aLz
aMT
aOs
@@ -159194,7 +159426,7 @@ aAc
aBo
aCy
aDz
aEF
aDz
aFR
aHo
aIK
@@ -159449,7 +159681,7 @@ alf
alf
aAb
aBp
aCw
aCv
aDA
aCv
aFJ
@@ -159712,7 +159944,7 @@ aAb
aAb
aAb
aIL
arB
tbC
aLz
aLz
aLz
@@ -159969,7 +160201,7 @@ aEG
aFS
aHp
aIM
aEG
obe
aLB
aFS
aEG
@@ -167677,7 +167909,7 @@ aCP
avQ
aFe
aGp
aHH
oOb
aJg
aKF
aLP
+1 -1
View File
@@ -50,7 +50,7 @@
#define isgolem(A) (is_species(A, /datum/species/golem))
#define islizard(A) (is_species(A, /datum/species/lizard))
#define isplasmaman(A) (is_species(A, /datum/species/plasmaman))
#define ispodperson(A) (is_species(A, /datum/species/podperson))
#define ispodperson(A) (is_species(A, /datum/species/pod))
#define isflyperson(A) (is_species(A, /datum/species/fly))
#define isjellyperson(A) (is_species(A, /datum/species/jelly))
#define isslimeperson(A) (is_species(A, /datum/species/jelly/slime))
+2
View File
@@ -116,6 +116,8 @@
#define BIOWARE_GENERIC "generic"
#define BIOWARE_NERVES "nerves"
#define BIOWARE_CIRCULATION "circulation"
#define BIOWARE_LIGAMENTS "ligaments"
#define BIOWARE_DISSECTION "dissected"
//Health hud screws for carbon mobs
#define SCREWYHUD_NONE 0
+2
View File
@@ -95,6 +95,8 @@
#define TRAIT_NOHUNGER "no_hunger"
#define TRAIT_EASYDISMEMBER "easy_dismember"
#define TRAIT_LIMBATTACHMENT "limb_attach"
#define TRAIT_NOLIMBDISABLE "no_limb_disable"
#define TRAIT_EASYLIMBDISABLE "easy_limb_disable"
#define TRAIT_TOXINLOVER "toxinlover"
#define TRAIT_NOBREATH "no_breath"
#define TRAIT_ANTIMAGIC "anti_magic"
+3
View File
@@ -6,6 +6,7 @@
dir_in = 1 //Facing North.
max_integrity = 250
deflect_chance = 5
force = 20
armor = list("melee" = 25, "bullet" = 20, "laser" = 30, "energy" = 15, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
max_temperature = 25000
infra_luminosity = 6
@@ -13,6 +14,7 @@
internal_damage_threshold = 35
max_equip = 3
step_energy_drain = 3
leg_overload_coeff = 300
/obj/mecha/combat/gygax/dark
desc = "A lightweight exosuit, painted in a dark scheme. This model appears to have some modifications."
@@ -20,6 +22,7 @@
icon_state = "darkgygax"
max_integrity = 300
deflect_chance = 15
force = 25
armor = list("melee" = 40, "bullet" = 40, "laser" = 50, "energy" = 35, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
max_temperature = 35000
leg_overload_coeff = 100
+13 -2
View File
@@ -1,7 +1,7 @@
/obj/item/storage/box/syndicate
/obj/item/storage/box/syndicate/PopulateContents()
switch (pickweight(list("bloodyspai" = 3, "stealth" = 2, "bond" = 2, "screwed" = 2, "sabotage" = 3, "guns" = 2, "murder" = 2, "implant" = 1, "hacker" = 3, "darklord" = 1, "sniper" = 1, "metaops" = 1, "ninja" = 1)))
switch (pickweight(list("bloodyspai" = 3, "stealth" = 2, "bond" = 2, "screwed" = 2, "sabotage" = 3, "guns" = 2, "murder" = 2, "baseball" = 1, "implant" = 1, "hacker" = 3, "darklord" = 1, "sniper" = 1, "metaops" = 1, "ninja" = 1)))
if("bloodyspai") // 30 tc now this is more right
new /obj/item/clothing/under/chameleon(src) // 2 tc since it's not the full set
new /obj/item/clothing/mask/chameleon(src) // Goes with above
@@ -52,7 +52,7 @@
new /obj/item/clothing/under/suit_jacket/really_black(src)
new /obj/item/screwdriver/power(src) //2 tc item
if("murder") // 35 tc now
if("murder") // 35 tc
new /obj/item/melee/transforming/energy/sword/saber(src)
new /obj/item/clothing/glasses/thermal/syndi(src)
new /obj/item/card/emag(src)
@@ -62,6 +62,17 @@
new /obj/item/clothing/glasses/phantomthief/syndicate(src)
new /obj/item/reagent_containers/syringe/stimulants(src)
if("baseball") // 42~ tc
new /obj/item/melee/baseball_bat/ablative/syndi(src) //Lets say 12 tc, lesser sleeping carp
new /obj/item/clothing/glasses/sunglasses/garb(src) //Lets say 2 tc
new /obj/item/card/emag(src) //6 tc
new /obj/item/clothing/shoes/sneakers/noslip(src) //2tc
new /obj/item/encryptionkey/syndicate(src) //1tc
new /obj/item/autosurgeon/anti_drop(src) //Lets just say 7~
new /obj/item/clothing/under/syndicate/baseball(src) //3tc
new /obj/item/clothing/head/soft/baseball(src) //Lets say 4 tc
new /obj/item/reagent_containers/hypospray/medipen/stimulants/baseball(src) //lets say 5tc
if("implant") // 67+ tc holy shit what the fuck this is a lottery disguised as fun boxes isn't it?
new /obj/item/implanter/freedom(src)
new /obj/item/implanter/uplink/precharged(src)
+7 -1
View File
@@ -522,7 +522,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
throwforce = 14
obj_flags = UNIQUE_RENAME
var/chaplain_spawnable = TRUE
total_mass = TOTAL_MASS_MEDIEVAL_WEAPON
total_mass = TOTAL_MASS_MEDIEVAL_WEAPON
/obj/item/melee/baseball_bat/chaplain/Initialize()
. = ..()
@@ -578,6 +578,12 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
playsound(turf, 'sound/weapons/effects/batreflect2.ogg', 50, 1)
return 1
/obj/item/melee/baseball_bat/ablative/syndi
name = "syndicate major league bat"
desc = "A metal bat made by the syndicate for the major league team."
force = 18 //Spear damage...
throwforce = 30
/obj/item/melee/flyswatter
name = "flyswatter"
desc = "Useful for killing insects of all sizes."
@@ -1,5 +1,5 @@
/datum/surgery/organ_extraction
name = "experimental dissection"
name = "experimental organ replacement"
steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/retract_skin, /datum/surgery_step/incise, /datum/surgery_step/extract_organ, /datum/surgery_step/gland_insert)
possible_locs = list(BODY_ZONE_CHEST)
ignore_clothes = 1
+2 -2
View File
@@ -461,9 +461,9 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
underwear = sanitize_inlist(underwear, GLOB.underwear_list)
undie_color = sanitize_hexcolor(undie_color, 3, FALSE, initial(undie_color))
undershirt = sanitize_inlist(undershirt, GLOB.undershirt_list)
shirt_color = sanitize_hexcolor(shirt_color, 6, FALSE, initial(shirt_color))
shirt_color = sanitize_hexcolor(shirt_color, 3, FALSE, initial(shirt_color))
socks = sanitize_inlist(socks, GLOB.socks_list)
socks_color = sanitize_hexcolor(socks_color, 6, FALSE, initial(socks_color))
socks_color = sanitize_hexcolor(socks_color, 3, FALSE, initial(socks_color))
age = sanitize_integer(age, AGE_MIN, AGE_MAX, initial(age))
hair_color = sanitize_hexcolor(hair_color, 3, 0)
facial_hair_color = sanitize_hexcolor(facial_hair_color, 3, 0)
@@ -6,21 +6,18 @@
name = "purple sunglasses"
icon_state = "sun_purple"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/glasses.dmi'
/obj/item/clothing/glasses/sunglasses/star
name = "star-shaped sunglasses"
desc = "Novelty sunglasses, both lenses are in the shape of a star."
icon_state = "sun_star"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/glasses.dmi'
/obj/item/clothing/glasses/sunglasses/rockstar
name = "red star-shaped sunglasses"
desc = "Novelty sunglasses with a fancy silver frame and two red-tinted star-shaped lenses. You should probably stomp on them and get a pair of normal ones."
icon_state = "sun_star_silver"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/glasses.dmi'
/obj/item/clothing/glasses/gglasses
name = "Green Glasses"
@@ -28,7 +25,6 @@
icon_state = "gglasses"
item_state = "gglasses"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/glasses.dmi'
/obj/item/clothing/glasses/welding/superior
name = "superior welding goggles"
@@ -36,7 +32,6 @@
icon_state = "rwelding-g"
item_state = "rwelding-g"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/glasses.dmi'
actions_types = list(/datum/action/item_action/toggle)
flash_protect = 2
tint = 1
-1
View File
@@ -4,4 +4,3 @@
icon = 'modular_citadel/icons/obj/clothing/cit_hats.dmi'
icon_state = "hunter"
item_state = "hunter_worn"
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
+11
View File
@@ -129,3 +129,14 @@
icon_state = "emtsoft"
item_color = "emt"
dog_fashion = null
/obj/item/clothing/head/soft/baseball
name = "baseball cap"
desc = "It's a robust baseball hat, this one belongs to syndicate major league team."
icon_state = "baseballsoft"
item_color = "baseballsoft"
item_state = "baseballsoft"
flags_inv = HIDEEYES|HIDEFACE
armor = list("melee" = 35, "bullet" = 35, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 90)
strip_delay = 90 //You dont take a Major Leage cap
dog_fashion = null
-26
View File
@@ -1,4 +1,3 @@
/obj/item/clothing/head/helmet/dredd
name = "Judge Helmet"
desc = "Judge, Jury, and Executioner."
@@ -12,7 +11,6 @@
max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT
strip_delay = 80
dog_fashion = null
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
/obj/item/clothing/head/helmet/aviatorhelmet
name = "Aviator Helmet"
@@ -21,15 +19,12 @@
item_state = "aviator_helmet"
icon_state = "aviator_helmet"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
/obj/item/clothing/head/helmet/biker
name = "Biker's Helmet"
desc = "This helmet should protect you from russians and masked vigilantes."
armor = list(melee = 25, bullet = 15, laser = 20, energy = 10, bomb = 10, bio = 0, rad = 0)
icon_state = "biker_helmet"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
/obj/item/clothing/head/helmet/richard
@@ -38,7 +33,6 @@
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
icon_state = "richard"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
/obj/item/clothing/head/helmet/megahelmet
@@ -47,7 +41,6 @@
icon_state = "megahelmet"
item_state = "megahelmet"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
siemens_coefficient = 1
/obj/item/clothing/head/helmet/protohelmet
@@ -56,7 +49,6 @@
icon_state = "protohelmet"
item_state = "protohelmet"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
siemens_coefficient = 1
/obj/item/clothing/head/helmet/megaxhelmet
@@ -65,7 +57,6 @@
icon_state = "megaxhelmet"
item_state = "megaxhelmet"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
/obj/item/clothing/head/helmet/joehelmet
name = "Sniper Helmet"
@@ -74,7 +65,6 @@
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
item_state = "joehelmet"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
/obj/item/clothing/head/helmet/doomguy
name = "Doomguy's helmet"
@@ -83,7 +73,6 @@
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
item_state = "doom"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
armor = list(melee = 50, bullet = 40, laser = 40,energy = 40, bomb = 5, bio = 0, rad = 0)
/obj/item/clothing/head/helmet/neorussian
@@ -92,8 +81,6 @@
icon_state = "nr_helmet"
item_state = "nr_helmet"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
/obj/item/clothing/head/stalhelm
name = "Stalhelm"
@@ -101,7 +88,6 @@
icon_state = "stalhelm"
item_state = "stalhelm"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
/obj/item/clothing/head/panzer
name = "Panzer Cap"
@@ -109,7 +95,6 @@
icon_state = "panzercap"
item_state = "panzercap"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
/obj/item/clothing/head/naziofficer
name = "Officer Cap"
@@ -117,8 +102,6 @@
icon_state = "officercap"
item_state = "officercap"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
/obj/item/clothing/head/russobluecamohat
name = "russian blue camo beret"
@@ -133,7 +116,6 @@
icon_state = "russofurhat"
item_state = "russofurhat"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
/obj/item/clothing/head/squatter_hat
name = "slav squatter hat"
@@ -141,7 +123,6 @@
item_state = "squatter_hat"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
desc = "Cyka blyat."
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
/obj/item/clothing/head/snake
name = "snake head"
@@ -149,8 +130,6 @@
icon_state = "snakehead"
item_state = "snakehead"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
/obj/item/clothing/head/mummy_rags
name = "mummy rags"
desc = "Ancient rags taken off from some mummy."
@@ -158,7 +137,6 @@
item_state = "mummy"
item_color = "mummy"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS
/obj/item/clothing/head/clownpiece
@@ -167,7 +145,6 @@
icon_state = "clownpiece"
item_state = "clownpiece"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
/obj/item/clothing/head/mitre
name = "mitre"
@@ -175,7 +152,6 @@
icon_state = "mitre"
item_state = "mitre"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
/obj/item/clothing/head/tinfoil
name = "tinfoil hat"
@@ -183,7 +159,6 @@
icon_state = "foilhat"
item_state = "paper"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
siemens_coefficient = 2
/obj/item/clothing/head/celtic
@@ -192,4 +167,3 @@
icon_state = "celtic_crown"
item_state = "celtic_crown"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
-3
View File
@@ -3,18 +3,15 @@
desc = "Some pranksters are truly magical."
icon_state = "wizzclown"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/masks.dmi'
/obj/item/clothing/mask/chapmask
name = "venetian mask"
desc = "A plain porcelain mask that covers the entire face. Standard attire for particularly unspeakable religions. The eyes are wide shut."
icon_state = "chapmask"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/masks.dmi'
/obj/item/clothing/mask/neorussian
name = "neo-Russian mask"
desc = "Somehow, it makes you act and look way more polite than usual."
icon_state = "nr_mask"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/masks.dmi'
+11 -12
View File
@@ -62,6 +62,16 @@
desc = "A pair of orange rubber boots, designed to prevent slipping on wet surfaces while also drying them."
icon_state = "galoshes_dry"
/obj/item/clothing/shoes/sneakers/noslip
desc = "A pair of black shoes, they have the soles of galoshes making them unable to be slipped on a wet surface."
name = "black shoes"
icon_state = "black"
permeability_coefficient = 0.30
clothing_flags = NOSLIP
strip_delay = 50
equip_delay_other = 50
resistance_flags = NONE
/obj/item/clothing/shoes/galoshes/dry/step_action()
var/turf/open/t_loc = get_turf(src)
SEND_SIGNAL(t_loc, COMSIG_TURF_MAKE_DRY, TURF_WET_WATER, TRUE, INFINITY)
@@ -69,10 +79,8 @@
/obj/item/clothing/shoes/clown_shoes
desc = "The prankster's standard-issue clowning shoes. Damn, they're huge!"
name = "clown shoes"
icon_state = "clown"
item_state = "clown_shoes"
icon_state = "clown_shoes"
slowdown = SHOES_SLOWDOWN+1
item_color = "clown"
pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes/clown
/obj/item/clothing/shoes/clown_shoes/Initialize()
@@ -98,7 +106,6 @@
name = "jackboots"
desc = "Nanotrasen-issue Security combat boots for combat scenarios or combat situations. All combat, all the time."
icon_state = "jackboots"
item_state = "jackboots"
lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
item_color = "hosred"
@@ -115,7 +122,6 @@
name = "winter boots"
desc = "Boots lined with 'synthetic' animal fur."
icon_state = "winterboots"
item_state = "winterboots"
permeability_coefficient = 0.15
cold_protection = FEET|LEGS
min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT
@@ -127,7 +133,6 @@
name = "work boots"
desc = "Nanotrasen-issue Engineering lace-up work boots for the especially blue-collar."
icon_state = "workboots"
item_state = "jackboots"
lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
permeability_coefficient = 0.15
@@ -145,7 +150,6 @@
name = "\improper Nar'Sien invoker boots"
desc = "A pair of boots worn by the followers of Nar'Sie."
icon_state = "cult"
item_state = "cult"
item_color = "cult"
cold_protection = FEET
min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT
@@ -178,7 +182,6 @@
name = "roman sandals"
desc = "Sandals with buckled leather straps on it."
icon_state = "roman"
item_state = "roman"
strip_delay = 100
equip_delay_other = 100
permeability_coefficient = 0.9
@@ -187,14 +190,12 @@
name = "griffon boots"
desc = "A pair of costume boots fashioned after bird talons."
icon_state = "griffinboots"
item_state = "griffinboots"
pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes
/obj/item/clothing/shoes/bhop
name = "jump boots"
desc = "A specialized pair of combat boots with a built-in propulsion system for rapid foward movement."
icon_state = "jetboots"
item_state = "jetboots"
item_color = "hosred"
resistance_flags = FIRE_PROOF
pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes
@@ -252,7 +253,6 @@
name = "Wheely-Heels"
desc = "Uses patented retractable wheel technology. Never sacrifice speed for style - not that this provides much of either." //Thanks Fel
icon_state = "wheelys"
item_state = "wheelys"
actions_types = list(/datum/action/item_action/wheelys)
var/wheelToggle = FALSE //False means wheels are not popped out
var/obj/vehicle/ridden/scooter/wheelys/W
@@ -291,7 +291,6 @@
name = "Kindle Kicks"
desc = "They'll sure kindle something in you, and it's not childhood nostalgia..."
icon_state = "kindleKicks"
item_state = "kindleKicks"
actions_types = list(/datum/action/item_action/kindleKicks)
var/lightCycle = 0
var/active = FALSE
-17
View File
@@ -5,7 +5,6 @@
icon_state = "leather"
item_color = "leather"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/magboots/deathsquad
@@ -14,7 +13,6 @@
icon_state = "DS-magboots0"
magboot_state = "DS-magboots"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
mutantrace_variation = NO_MUTANTRACE_VARIATION
@@ -23,7 +21,6 @@
name = "atmospherics magboots"
icon_state = "atmosmagboots0"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
magboot_state = "atmosmagboots"
resistance_flags = FIRE_PROOF
mutantrace_variation = NO_MUTANTRACE_VARIATION
@@ -33,7 +30,6 @@
desc = "Simon's Shoes."
icon_state = "simonshoes"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/kneesocks
@@ -41,7 +37,6 @@
desc = "A pair of girly knee-high socks."
icon_state = "kneesock"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/jestershoes
@@ -49,7 +44,6 @@
desc = "As worn by the clowns of old."
icon_state = "jestershoes"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/aviatorboots
@@ -57,7 +51,6 @@
desc = "Boots suitable for just about any occasion."
icon_state = "aviator_boots"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/libertyshoes
@@ -65,7 +58,6 @@
desc = "Freedom isn't free, neither were these shoes."
icon_state = "libertyshoes"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/megaboots
@@ -73,7 +65,6 @@
desc = "Large armored boots, very weak to large spikes."
icon_state = "megaboots"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/protoboots
@@ -81,7 +72,6 @@
desc = "Functionally identical to the DRN-001 model's boots, but in red."
icon_state = "protoboots"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/megaxboots
@@ -89,7 +79,6 @@
desc = "Regardless of how much stronger these boots are than the DRN-001 model's, they're still extremely easy to pierce with a large spike."
icon_state = "megaxboots"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/joeboots
@@ -97,7 +86,6 @@
desc = "Nearly identical to the Prototype's boots, except in black."
icon_state = "joeboots"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/doomguy
@@ -105,7 +93,6 @@
desc = "If you look closely, you might see skull fragments still buried in these boots."
icon_state = "doom"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/rottenshoes
@@ -113,7 +100,6 @@
desc = "These shoes seem perfect for sneaking around."
icon_state = "rottenshoes"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/sandal/slippers
@@ -121,7 +107,6 @@
icon_state = "slippers"
desc = "For the wizard that puts comfort first. Who's going to laugh?"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/slippers_worn
@@ -129,7 +114,6 @@
desc = "Fluffy..."
icon_state = "slippers_worn"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/shoes/jackboots/neorussian
@@ -137,5 +121,4 @@
desc = "Tovarish, no one will realize you stepped on a pile of shit if your pair already looks like shit."
icon_state = "nr_boots"
icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi'
alternate_worn_icon = 'modular_citadel/icons/mob/citadel/head.dmi'
mutantrace_variation = NO_MUTANTRACE_VARIATION
+1
View File
@@ -5,6 +5,7 @@
allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
slot_flags = ITEM_SLOT_OCLOTHING
body_parts_covered = CHEST
var/blood_overlay_type = "suit"
var/togglename = null
var/suittoggled = FALSE
-1
View File
@@ -1,6 +1,5 @@
/obj/item/clothing/suit/armor
allowed = null
body_parts_covered = CHEST
cold_protection = CHEST|GROIN
min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT
heat_protection = CHEST|GROIN
+2 -2
View File
@@ -7,7 +7,7 @@
icon_state = "qmcloak"
item_state = "qmcloak"
w_class = WEIGHT_CLASS_SMALL
body_parts_covered = CHEST|GROIN|LEGS|ARMS
body_parts_covered = CHEST|LEGS|ARMS
/obj/item/clothing/head/cloakhood
name = "cloak hood"
@@ -62,7 +62,7 @@
allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/pickaxe, /obj/item/twohanded/spear, /obj/item/twohanded/bonespear, /obj/item/organ/regenerative_core/legion, /obj/item/kitchen/knife/combat/bone, /obj/item/kitchen/knife/combat/survival)
armor = list("melee" = 35, "bullet" = 10, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60) //a fair alternative to bone armor, requiring alternative materials and gaining a suit slot
hoodtype = /obj/item/clothing/head/hooded/cloakhood/goliath
body_parts_covered = CHEST|GROIN|ARMS
body_parts_covered = CHEST|ARMS|LEGS
/obj/item/clothing/head/hooded/cloakhood/goliath
name = "goliath cloak hood"
+2
View File
@@ -153,6 +153,7 @@
icon = 'icons/obj/clothing/belts.dmi'
icon_state = "suspenders"
blood_overlay_type = "armor" //it's the less thing that I can put here
body_parts_covered = NONE
//Security
/obj/item/clothing/suit/security/officer
@@ -215,3 +216,4 @@
item_state = "techpriesthood"
body_parts_covered = HEAD
flags_inv = HIDEHAIR|HIDEEARS
mutantrace_variation = MUTANTRACE_VARIATION
+20 -11
View File
@@ -67,6 +67,7 @@
item_state = "death"
flags_1 = CONDUCT_1
fire_resist = T0C+5200
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS|FEET
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
@@ -75,6 +76,7 @@
desc = "this pretty much looks ridiculous" //Needs no fixing
icon_state = "justice"
item_state = "justice"
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS|FEET
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
@@ -100,14 +102,14 @@
desc = "A fancy purple apron for a stylish person."
icon_state = "purplebartenderapron"
item_state = "purplebartenderapron"
body_parts_covered = CHEST|GROIN|LEGS
body_parts_covered = CHEST
/obj/item/clothing/suit/syndicatefake
name = "black and red space suit replica"
icon_state = "syndicate-black-red"
item_state = "syndicate-black-red"
desc = "A plastic replica of the Syndicate space suit. You'll look just like a real murderous Syndicate agent in this! This is a toy, it is not made for use in space!"
w_class = WEIGHT_CLASS_NORMAL
body_parts_covered = CHEST|ARMS|GROIN|LEGS|FEET|HANDS
allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy)
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
resistance_flags = NONE
@@ -154,7 +156,7 @@
icon_state = "owl_wings"
item_state = "owl_wings"
togglename = "wings"
body_parts_covered = ARMS|CHEST
body_parts_covered = ARMS
actions_types = list(/datum/action/item_action/toggle_wings)
/obj/item/clothing/suit/toggle/owlwings/Initialize()
@@ -209,6 +211,7 @@
desc = "Your classic, non-racist poncho."
icon_state = "classicponcho"
item_state = "classicponcho"
body_parts_covered = CHEST|GROIN
/obj/item/clothing/suit/poncho/green
name = "green poncho"
@@ -245,7 +248,7 @@
desc = "A costume made from 'synthetic' carp scales, it smells."
icon_state = "carp_casual"
item_state = "labcoat"
body_parts_covered = CHEST|GROIN|ARMS
body_parts_covered = CHEST|GROIN|ARMS|LEGS|FEET
cold_protection = CHEST|GROIN|ARMS
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT //Space carp like space, so you should too
allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/gun/ballistic/automatic/speargun)
@@ -265,9 +268,7 @@
desc = "A costume that looks like someone made a human-like corgi, it won't guarantee belly rubs."
icon_state = "ian"
item_state = "labcoat"
body_parts_covered = CHEST|GROIN|ARMS
//cold_protection = CHEST|GROIN|ARMS
//min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
body_parts_covered = CHEST|GROIN|ARMS|LEGS|FEET
allowed = list()
hoodtype = /obj/item/clothing/head/hooded/ian_hood
dog_fashion = /datum/dog_fashion/back
@@ -277,8 +278,6 @@
desc = "A hood that looks just like a corgi's head, it won't guarantee dog biscuits."
icon_state = "ian"
body_parts_covered = HEAD
//cold_protection = HEAD
//min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
flags_inv = HIDEHAIR|HIDEEARS
/obj/item/clothing/suit/hooded/bee_costume // It's Hip!
@@ -304,7 +303,7 @@
desc = "A horribly bloated suit made from human skins."
icon_state = "lingspacesuit"
item_state = "labcoat"
body_parts_covered = CHEST|GROIN|ARMS
body_parts_covered = CHEST|GROIN|ARMS|LEGS|FEET|HANDS
allowed = list()
actions_types = list(/datum/action/item_action/toggle_human_head)
hoodtype = /obj/item/clothing/head/hooded/human_head
@@ -345,18 +344,21 @@
desc = "A worn out, curiously comfortable t-shirt with a picture of Ian. You wouldn't go so far as to say it feels like being hugged when you wear it, but it's pretty close. Good for sleeping in."
icon_state = "ianshirt"
item_state = "ianshirt"
body_parts_covered = CHEST|GROIN
/obj/item/clothing/suit/nerdshirt
name = "gamer shirt"
desc = "A baggy shirt with vintage game character Phanic the Weasel. Why would anyone wear this?"
icon_state = "nerdshirt"
item_state = "nerdshirt"
body_parts_covered = CHEST|GROIN
/obj/item/clothing/suit/vapeshirt //wearing this is asking to get beat.
name = "Vape Naysh shirt"
desc = "A cheap white T-shirt with a big tacky \"VN\" on the front, Why would you wear this unironically?"
icon_state = "vapeshirt"
item_state = "vapeshirt"
body_parts_covered = CHEST|GROIN
/obj/item/clothing/suit/jacket
name = "bomber jacket"
@@ -364,7 +366,7 @@
icon_state = "bomberjacket"
item_state = "brownjsuit"
allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/radio)
body_parts_covered = CHEST|GROIN|ARMS
body_parts_covered = CHEST|ARMS
cold_protection = CHEST|GROIN|ARMS
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
@@ -389,6 +391,7 @@
desc = "A thick jacket with a rubbery, water-resistant shell."
icon_state = "pufferjacket"
item_state = "hostrench"
body_parts_covered = CHEST|GROIN|ARMS
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 50, "rad" = 0, "fire" = 0, "acid" = 0)
/obj/item/clothing/suit/jacket/puffer/vest
@@ -436,18 +439,21 @@
desc = "Looks like this belongs in a very old movie set."
icon_state = "draculacoat"
item_state = "draculacoat"
body_parts_covered = CHEST|ARMS
/obj/item/clothing/suit/drfreeze_coat
name = "doctor freeze's labcoat"
desc = "A labcoat imbued with the power of features and freezes."
icon_state = "drfreeze_coat"
item_state = "drfreeze_coat"
body_parts_covered = CHEST|GROIN|ARMS
/obj/item/clothing/suit/gothcoat
name = "gothic coat"
desc = "Perfect for those who want stalk in a corner of a bar."
icon_state = "gothcoat"
item_state = "gothcoat"
body_parts_covered = CHEST|ARMS|HAND_LEFT //peculiar
/obj/item/clothing/suit/xenos
name = "xenos suit"
@@ -586,6 +592,7 @@
name = "spooky ghost"
desc = "This is obviously just a bedsheet, but maybe try it on?"
icon_state = "bedsheet"
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS|HEAD
user_vars_to_edit = list("name" = "Spooky Ghost", "real_name" = "Spooky Ghost" , "incorporeal_move" = INCORPOREAL_MOVE_BASIC, "appearance_flags" = KEEP_TOGETHER|TILE_BOUND, "alpha" = 150)
alternate_worn_layer = ABOVE_BODY_FRONT_LAYER //so the bedsheet goes over everything but fire
@@ -594,6 +601,7 @@
desc = "A big and clanky suit made of bronze that offers no protection and looks very unfashionable. Nice."
icon = 'icons/obj/clothing/clockwork_garb.dmi'
icon_state = "clockwork_cuirass_old"
body_parts_covered = CHEST|GROIN|LEGS
armor = list("melee" = 5, "bullet" = 0, "laser" = -5, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 20)
/obj/item/clothing/suit/ghost_sheet
@@ -606,4 +614,5 @@
throw_range = 2
w_class = WEIGHT_CLASS_TINY
flags_inv = HIDEGLOVES|HIDEEARS|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS|HEAD
alternate_worn_layer = UNDER_HEAD_LAYER
+11
View File
@@ -67,3 +67,14 @@
icon_state = "syndicate_combat"
item_color = "syndicate_combat"
can_adjust = FALSE
/obj/item/clothing/under/syndicate/baseball
name = "major league, number unknown"
desc = "A major league outfit with the number faded number on the back. Seems rather robust for just a game"
icon_state = "syndicatebaseball"
item_state = "syndicatebaseball"
item_color = "syndicatebaseball"
has_sensor = NO_SENSORS
armor = list("melee" = 15, "bullet" = 5, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40)
alt_covers_chest = TRUE
@@ -348,10 +348,15 @@
if(temp)
var/update = 0
var/dmg = rand(M.force/2, M.force)
var/atom/throw_target = get_edge_target_turf(src, M.dir)
switch(M.damtype)
if("brute")
if(M.force > 20)
Unconscious(20)
if(M.force > 35) // durand and other heavy mechas
Knockdown(50)
src.throw_at(throw_target, rand(1,5), 7)
else if(M.force >= 20 && !IsKnockdown()) // lightweight mechas like gygax
Knockdown(30)
src.throw_at(throw_target, rand(1,3), 7)
update |= temp.receive_damage(dmg, 0)
playsound(src, 'sound/weapons/punch4.ogg', 50, 1)
if("fire")
@@ -1338,10 +1338,10 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
var/obj/item/organ/cyberimp/chest/thrusters/T = H.getorganslot(ORGAN_SLOT_THRUSTERS)
if(!istype(J) && istype(C))
J = C.jetpack
if(istype(J) && J.full_speed && J.allow_thrust(0.01, H)) //Prevents stacking
. -= 2
else if(istype(T) && T.allow_thrust(0.01, H))
. -= 2
if(istype(J) && J.full_speed && J.allow_thrust(0.005, H)) //Prevents stacking
. -= 0.4
else if(istype(T) && T.allow_thrust(0.005, H))
. -= 0.4
if(!ignoreslow && gravity)
if(H.wear_suit)
@@ -16,5 +16,5 @@
blacklisted = 1
use_skintones = 0
species_traits = list(NOBLOOD,EYECOLOR,NOGENITALS)
inherent_traits = list(TRAIT_RADIMMUNE,TRAIT_VIRUSIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOHUNGER)
inherent_traits = list(TRAIT_RADIMMUNE,TRAIT_VIRUSIMMUNE,TRAIT_PIERCEIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOLIMBDISABLE,TRAIT_NOHUNGER)
sexes = 0
@@ -4,7 +4,7 @@
say_mod = "beep boops" //inherited from a user's real species
sexes = 0
species_traits = list(NOTRANSSTING,NOGENITALS,NOAROUSAL) //all of these + whatever we inherit from the real species
inherent_traits = list(TRAIT_VIRUSIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOHUNGER,TRAIT_NOBREATH)
inherent_traits = list(TRAIT_VIRUSIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOLIMBDISABLE,TRAIT_NOHUNGER,TRAIT_NOBREATH)
inherent_biotypes = list(MOB_ROBOTIC, MOB_HUMANOID)
dangerous_existence = 1
blacklisted = 1
@@ -12,7 +12,7 @@
damage_overlay_type = "synth"
limbs_id = "synth"
var/list/initial_species_traits = list(NOTRANSSTING) //for getting these values back for assume_disguise()
var/list/initial_inherent_traits = list(TRAIT_VIRUSIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOHUNGER,TRAIT_NOBREATH)
var/list/initial_inherent_traits = list(TRAIT_VIRUSIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOLIMBDISABLE,TRAIT_NOHUNGER,TRAIT_NOBREATH)
var/disguise_fail_health = 75 //When their health gets to this level their synthflesh partially falls off
var/datum/species/fake_species = null //a species to do most of our work for us, unless we're damaged
+1 -1
View File
@@ -475,7 +475,7 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put
/mob/living/carbon/handle_status_effects()
..()
if(getStaminaLoss() && !combatmode)//CIT CHANGE - prevents stamina regen while combat mode is active
adjustStaminaLoss(resting ? (recoveringstam ? -7.5 : -3) : -1.5)//CIT CHANGE - decreases adjuststaminaloss to stop stamina damage from being such a joke
adjustStaminaLoss(resting ? (recoveringstam ? -7.5 : -6) : -3)//CIT CHANGE - decreases adjuststaminaloss to stop stamina damage from being such a joke
if(!recoveringstam && incomingstammult != 1)
incomingstammult = max(0.01, incomingstammult)
@@ -189,7 +189,7 @@
var/mutable_appearance/legcuffs = mutable_appearance('icons/mob/restraints.dmi', legcuffed.item_state, -LEGCUFF_LAYER)
legcuffs.color = legcuffed.color
overlays_standing[HANDCUFF_LAYER] = legcuffs
overlays_standing[LEGCUFF_LAYER] = legcuffs
apply_overlay(LEGCUFF_LAYER)
throw_alert("legcuffed", /obj/screen/alert/restrained/legcuffed, new_master = legcuffed)
-1
View File
@@ -2,7 +2,6 @@
name = "ninja shoes"
desc = "A pair of running shoes. Excellent for running and even better for smashing skulls."
icon_state = "s-ninja"
item_state = "secshoes"
permeability_coefficient = 0.01
clothing_flags = NOSLIP
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
+6 -1
View File
@@ -496,7 +496,12 @@
//Standard reaction mechanics:
else
if (C.FermiChem == TRUE)//Just to make sure
if (C.FermiChem == TRUE)//Just to make sure, should only proc when grenades are combining.
if (chem_temp > C.ExplodeTemp) //To allow fermigrenades
var/datum/chemical_reaction/fermi/Ferm = selected_reaction
fermiIsReacting = FALSE
SSblackbox.record_feedback("tally", "fermi_chem", 1, ("[Ferm] explosion"))
Ferm.FermiExplode(src, my_atom, volume = total_volume, temp = chem_temp, pH = pH)
return 0
for(var/B in cached_required_reagents) //
@@ -90,3 +90,9 @@
update_pack_name()
else
return ..()
/obj/item/reagent_containers/blood/bluespace
name = "bluespace blood pack"
desc = "Contains blood used for transfusion, this one has been made with bluespace technology to hold much more blood. Must be attached to an IV drip."
icon_state = "bsbloodpack"
volume = 600 //its a blood bath!
@@ -127,6 +127,21 @@
else
to_chat(usr, "<span class='notice'>It is spent.</span>")
/obj/item/reagent_containers/hypospray/medipen/stimulants
name = "illegal stimpack medipen"
desc = "A highly illegal medipen due to its load and small injections, allow for five uses before being drained"
volume = 50
amount_per_transfer_from_this = 10
list_reagents = list("stimulants" = 50)
/obj/item/reagent_containers/hypospray/medipen/stimulants/baseball
name = "the reason the syndicate major league team wins."
desc = "They say drugs never win, but look where you are now, then where they are."
icon_state = "baseballstim"
volume = 50
amount_per_transfer_from_this = 50
list_reagents = list("stimulants" = 50)
/obj/item/reagent_containers/hypospray/medipen/stimpack //goliath kiting
name = "stimpack medipen"
desc = "A rapid way to stimulate your body's adrenaline, allowing for freer movement in restrictive armor."
@@ -192,6 +192,16 @@
category = list("Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/bsblood_bag
name = "Blue Space Empty Blood Bag"
desc = "A large sterilized plastic bag for blood."
id = "bsblood_bag"
build_path = /obj/item/reagent_containers/blood/bluespace
build_type = PROTOLATHE
materials = list(MAT_GLASS = 2500, MAT_PLASTIC = 4500, MAT_BLUESPACE = 250)
category = list("Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/cloning_disk
name = "Cloning Data Disk"
desc = "Produce additional disks for storing genetic data."
@@ -713,6 +723,13 @@
research_icon = 'icons/obj/surgery.dmi'
research_icon_state = "surgery_any"
var/surgery
/datum/design/surgery/experimental_dissection
name = "Experimental Dissection"
desc = "A surgical procedure which deeply analyzes the biology of a corpse, and automatically adds new findings to the research database."
id = "surgery_exp_dissection"
surgery = /datum/surgery/advanced/bioware/experimental_dissection
research_icon_state = "surgery_chest"
/datum/design/surgery/lobotomy
name = "Lobotomy"
@@ -784,6 +801,22 @@
surgery = /datum/surgery/advanced/bioware/vein_threading
research_icon_state = "surgery_chest"
/datum/design/surgery/ligament_hook
name = "Ligament Hook"
desc = "A surgical procedure which reshapes the connections between torso and limbs, making it so limbs can be attached manually if severed. \
However this weakens the connection, making them easier to detach as well."
id = "surgery_ligament_hook"
surgery = /datum/surgery/advanced/bioware/ligament_hook
research_icon_state = "surgery_chest"
/datum/design/surgery/ligament_reinforcement
name = "Ligament Reinforcement"
desc = "A surgical procedure which adds a protective tissue and bone cage around the connections between the torso and limbs, preventing dismemberment. \
However, the nerve connections as a result are more easily interrupted, making it easier to disable limbs with damage."
id = "surgery_ligament_reinforcement"
surgery = /datum/surgery/advanced/bioware/ligament_reinforcement
research_icon_state = "surgery_chest"
/datum/design/surgery/necrotic_revival
name = "Necrotic Revival"
desc = "An experimental surgical procedure that stimulates the growth of a Romerol tumor inside the patient's brain. Requires zombie powder or rezadone."
+7 -7
View File
@@ -115,7 +115,7 @@
display_name = "Advanced Surgery"
description = "When simple medicine doesn't cut it."
prereq_ids = list("adv_biotech")
design_ids = list("surgery_lobotomy", "surgery_reconstruction", "surgery_toxinhealing", "organbox")
design_ids = list("surgery_lobotomy", "surgery_reconstruction", "surgery_toxinhealing", "organbox", "surgery_exp_dissection")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
export_price = 5000
@@ -124,7 +124,7 @@
display_name = "Experimental Surgery"
description = "When evolution isn't fast enough."
prereq_ids = list("adv_surgery")
design_ids = list("surgery_revival","surgery_pacify","surgery_vein_thread","surgery_nerve_splice","surgery_nerve_ground","surgery_viral_bond")
design_ids = list("surgery_revival","surgery_pacify","surgery_vein_thread","surgery_nerve_splice","surgery_nerve_ground","surgery_ligament_hook","surgery_ligament_reinforcement","surgery_viral_bond")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
export_price = 5000
@@ -272,7 +272,7 @@
display_name = "Bluespace Pockets"
description = "Studies into the mysterious alternate dimension known as bluespace and how to place items in the threads of reality."
prereq_ids = list("adv_power", "adv_bluespace", "adv_biotech", "adv_plasma")
design_ids = list( "bluespacebodybag","bag_holding", "bluespace_pod", "borg_upgrade_trashofholding", "blutrash", "satchel_holding")
design_ids = list( "bluespacebodybag","bag_holding", "bluespace_pod", "borg_upgrade_trashofholding", "blutrash", "satchel_holding", "bsblood_bag")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5500)
export_price = 5000
@@ -998,7 +998,7 @@
description = "Things used by the greys."
prereq_ids = list("biotech","engineering")
boost_item_paths = list(/obj/item/gun/energy/alien, /obj/item/scalpel/alien, /obj/item/hemostat/alien, /obj/item/retractor/alien, /obj/item/circular_saw/alien,
/obj/item/cautery/alien, /obj/item/surgicaldrill/alien, /obj/item/screwdriver/abductor, /obj/item/wrench/abductor, /obj/item/crowbar/abductor, /obj/item/multitool/abductor,
/obj/item/cautery/alien, /obj/item/surgicaldrill/alien, /obj/item/screwdriver/abductor, /obj/item/wrench/abductor, /obj/item/crowbar/abductor, /obj/item/multitool/abductor, /obj/item/stock_parts/cell/infinite/abductor,
/obj/item/weldingtool/abductor, /obj/item/wirecutters/abductor, /obj/item/circuitboard/machine/abductor, /obj/item/abductor_baton, /obj/item/abductor, /obj/item/stack/sheet/mineral/abductor)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000)
export_price = 20000
@@ -1012,7 +1012,7 @@
prereq_ids = list("alientech", "adv_biotech")
design_ids = list("alien_scalpel", "alien_hemostat", "alien_retractor", "alien_saw", "alien_drill", "alien_cautery")
boost_item_paths = list(/obj/item/gun/energy/alien, /obj/item/scalpel/alien, /obj/item/hemostat/alien, /obj/item/retractor/alien, /obj/item/circular_saw/alien,
/obj/item/cautery/alien, /obj/item/surgicaldrill/alien, /obj/item/screwdriver/abductor, /obj/item/wrench/abductor, /obj/item/crowbar/abductor, /obj/item/multitool/abductor,
/obj/item/cautery/alien, /obj/item/surgicaldrill/alien, /obj/item/screwdriver/abductor, /obj/item/wrench/abductor, /obj/item/crowbar/abductor, /obj/item/multitool/abductor, /obj/item/stock_parts/cell/infinite/abductor,
/obj/item/weldingtool/abductor, /obj/item/wirecutters/abductor, /obj/item/circuitboard/machine/abductor, /obj/item/abductor_baton, /obj/item/abductor)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
export_price = 20000
@@ -1024,7 +1024,7 @@
description = "Alien engineering tools"
prereq_ids = list("alientech", "adv_engi")
design_ids = list("alien_wrench", "alien_wirecutters", "alien_screwdriver", "alien_crowbar", "alien_welder", "alien_multitool")
boost_item_paths = list(/obj/item/screwdriver/abductor, /obj/item/wrench/abductor, /obj/item/crowbar/abductor, /obj/item/multitool/abductor,
boost_item_paths = list(/obj/item/screwdriver/abductor, /obj/item/wrench/abductor, /obj/item/crowbar/abductor, /obj/item/multitool/abductor, /obj/item/stock_parts/cell/infinite/abductor,
/obj/item/weldingtool/abductor, /obj/item/wirecutters/abductor, /obj/item/circuitboard/machine/abductor, /obj/item/abductor_baton, /obj/item/abductor)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
export_price = 20000
@@ -1088,4 +1088,4 @@
for(var/i in processing)
var/datum/techweb_node/TN = i
TW.add_point_list(TN.research_costs)
return TW.printout_points()
return TW.printout_points()
@@ -0,0 +1,72 @@
/datum/surgery/advanced/bioware/experimental_dissection
name = "Experimental Dissection"
desc = "A surgical procedure which deeply analyzes the biology of a corpse, and automatically adds new findings to the research database."
steps = list(/datum/surgery_step/incise,
/datum/surgery_step/retract_skin,
/datum/surgery_step/clamp_bleeders,
/datum/surgery_step/incise,
/datum/surgery_step/dissection,
/datum/surgery_step/close)
possible_locs = list(BODY_ZONE_CHEST)
bioware_target = BIOWARE_DISSECTION
/datum/surgery/advanced/bioware/experimental_dissection/can_start(mob/user, mob/living/carbon/target)
. = ..()
if(iscyborg(user))
return FALSE //robots cannot be creative
//(also this surgery shouldn't be consistently successful, and cyborgs have a 100% success rate on surgery)
if(target.stat != DEAD)
return FALSE
/datum/surgery_step/dissection
name = "dissection"
implements = list(/obj/item/scalpel = 60, /obj/item/kitchen/knife = 30, /obj/item/shard = 15)
time = 125
/datum/surgery_step/dissection/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You start dissecting [target].</span>",
"[user] starts dissecting [target].",
"[user] starts dissecting [target].")
/datum/surgery_step/dissection/proc/check_value(mob/living/carbon/target)
if(isalienroyal(target))
return 10000
else if(isalienadult(target))
return 5000
else if(ismonkey(target))
return 1000
else if(ishuman(target))
var/mob/living/carbon/human/H = target
if(H.dna && H.dna.species)
if(isabductor(H))
return 8000
if(isgolem(H) || iszombie(H))
return 4000
if(isjellyperson(H) || ispodperson(H))
return 3000
return 2000
/datum/surgery_step/dissection/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You dissect [target], and add your discoveries to the research database!</span>",
"[user] dissects [target], adding [user.p_their()] discoveries to the research database!",
"[user] dissects [target]!")
SSresearch.science_tech.add_point_list(list(TECHWEB_POINT_TYPE_GENERIC = check_value(target)))
var/obj/item/bodypart/L = target.get_bodypart(BODY_ZONE_CHEST)
target.apply_damage(80, BRUTE, L)
new /datum/bioware/dissected(target)
return TRUE
/datum/surgery_step/dissection/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You dissect [target], but do not find anything particularly interesting.</span>",
"[user] dissects [target], however it seems [user.p_they()] didn't find anything useful.",
"[user] dissects [target], but looks a little dissapointed.")
SSresearch.science_tech.add_point_list(list(TECHWEB_POINT_TYPE_GENERIC = (check_value(target) * 0.2)))
var/obj/item/bodypart/L = target.get_bodypart(BODY_ZONE_CHEST)
target.apply_damage(80, BRUTE, L)
new /datum/bioware/dissected(target)
return TRUE
/datum/bioware/dissected
name = "Dissected"
desc = "This body has been dissected and analyzed. It is no longer worth experimenting on."
mod_type = BIOWARE_DISSECTION
@@ -0,0 +1,45 @@
/datum/surgery/advanced/bioware/ligament_hook
name = "Ligament Hook"
desc = "A surgical procedure which reshapes the connections between torso and limbs, making it so limbs can be attached manually if severed. \
However this weakens the connection, making them easier to detach as well."
steps = list(/datum/surgery_step/incise,
/datum/surgery_step/retract_skin,
/datum/surgery_step/clamp_bleeders,
/datum/surgery_step/incise,
/datum/surgery_step/incise,
/datum/surgery_step/reshape_ligaments,
/datum/surgery_step/close)
possible_locs = list(BODY_ZONE_CHEST)
bioware_target = BIOWARE_LIGAMENTS
/datum/surgery_step/reshape_ligaments
name = "reshape ligaments"
accept_hand = TRUE
time = 125
/datum/surgery_step/reshape_ligaments/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You start reshaping [target]'s ligaments into a hook-like shape.</span>",
"[user] starts reshaping [target]'s ligaments into a hook-like shape.",
"[user] starts manipulating [target]'s ligaments.")
/datum/surgery_step/reshape_ligaments/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You finish reshaping [target]'s ligaments into a connective hook!</span>",
"[user] finishes reshaping [target]'s ligaments into a connective hook!",
"[user] finishes manipulating [target]'s ligaments!")
new /datum/bioware/hooked_ligaments(target)
return TRUE
/datum/bioware/hooked_ligaments
name = "Hooked Ligaments"
desc = "The ligaments and nerve endings that connect the torso to the limbs are formed into a hook-like shape, so limbs can be attached without requiring surgery, but are easier to sever."
mod_type = BIOWARE_LIGAMENTS
/datum/bioware/hooked_ligaments/on_gain()
..()
ADD_TRAIT(owner, TRAIT_LIMBATTACHMENT, "ligament_hook")
ADD_TRAIT(owner, TRAIT_EASYDISMEMBER, "ligament_hook")
/datum/bioware/hooked_ligaments/on_lose()
..()
REMOVE_TRAIT(owner, TRAIT_LIMBATTACHMENT, "ligament_hook")
REMOVE_TRAIT(owner, TRAIT_EASYDISMEMBER, "ligament_hook")
@@ -0,0 +1,45 @@
/datum/surgery/advanced/bioware/ligament_reinforcement
name = "Ligament Reinforcement"
desc = "A surgical procedure which adds a protective tissue and bone cage around the connections between the torso and limbs, preventing dismemberment. \
However, the nerve connections as a result are more easily interrupted, making it easier to disable limbs with damage."
steps = list(/datum/surgery_step/incise,
/datum/surgery_step/retract_skin,
/datum/surgery_step/clamp_bleeders,
/datum/surgery_step/incise,
/datum/surgery_step/incise,
/datum/surgery_step/reinforce_ligaments,
/datum/surgery_step/close)
possible_locs = list(BODY_ZONE_CHEST)
bioware_target = BIOWARE_LIGAMENTS
/datum/surgery_step/reinforce_ligaments
name = "reinforce ligaments"
accept_hand = TRUE
time = 125
/datum/surgery_step/reinforce_ligaments/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You start reinforcing [target]'s ligaments.</span>",
"[user] starts reinforcing [target]'s ligaments.",
"[user] starts manipulating [target]'s ligaments.")
/datum/surgery_step/reinforce_ligaments/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You finish reinforcing [target]'s ligaments!</span>",
"[user] finishes reinforcing [target]'s ligaments!",
"[user] finishes manipulating [target]'s ligaments!")
new /datum/bioware/reinforced_ligaments(target)
return TRUE
/datum/bioware/reinforced_ligaments
name = "Reinforced Ligaments"
desc = "The ligaments and nerve endings that connect the torso to the limbs are protected by a mix of bone and tissues, and are much harder to separate from the body, but are also easier to disable."
mod_type = BIOWARE_LIGAMENTS
/datum/bioware/reinforced_ligaments/on_gain()
..()
ADD_TRAIT(owner, TRAIT_NODISMEMBER, "reinforced_ligaments")
ADD_TRAIT(owner, TRAIT_EASYLIMBDISABLE, "reinforced_ligaments")
/datum/bioware/reinforced_ligaments/on_lose()
..()
REMOVE_TRAIT(owner, TRAIT_NODISMEMBER, "reinforced_ligaments")
REMOVE_TRAIT(owner, TRAIT_EASYLIMBDISABLE, "reinforced_ligaments")
+1 -1
View File
@@ -231,7 +231,7 @@
return BODYPART_DISABLED_PARALYSIS
if(can_dismember() && !HAS_TRAIT(owner, TRAIT_NODISMEMBER))
. = disabled //inertia, to avoid limbs healing 0.1 damage and being re-enabled
if((get_damage(TRUE) >= max_damage))
if((get_damage(TRUE) >= max_damage) || (HAS_TRAIT(owner, TRAIT_EASYLIMBDISABLE) && (get_damage(TRUE) >= (max_damage * 0.6)))) //Easy limb disable disables the limb at 40% health instead of 0%
return BODYPART_DISABLED_DAMAGE
if(disabled && (get_damage(TRUE) <= (max_damage * 0.5)))
return BODYPART_NOT_DISABLED
@@ -99,6 +99,9 @@
/obj/item/autosurgeon/reviver
starting_organ = /obj/item/organ/cyberimp/chest/reviver
/obj/item/autosurgeon/anti_drop
starting_organ = /obj/item/organ/cyberimp/brain/anti_drop
/obj/item/autosurgeon/penis
desc = "A single use autosurgeon that contains a penis. A screwdriver can be used to remove it, but implants can't be placed back in."
uses = 1
@@ -0,0 +1,6 @@
author: "Sishen1542"
delete-after: True
changes:
- rscadd: "fun"
- rscdel: "bad stuff"
- balance: "mech bad"
@@ -0,0 +1,4 @@
author: "Trilbyspaceclone"
delete-after: True
changes:
- rscadd: "new traitor bundle"
@@ -0,0 +1,5 @@
author: "Fermis"
delete-after: True
changes:
- tweak: "re-enables femichem explosions in grenades."
- tweak: "adds nuance to the SDGF and hatmium explosions."
@@ -0,0 +1,4 @@
author: "Ghommie"
delete-after: True
changes:
- bugfix: "Fixed a few dozen suits' body coverage inconsistencies. These changes shouldn't affect armor and utility vests for most."
@@ -0,0 +1,4 @@
author: "Trilbyspaceclone"
delete-after: True
changes:
- rscdel: "Removed old things!"
@@ -0,0 +1,4 @@
author: "Ghommie"
delete-after: True
changes:
- bugfix: "Fixed clown shoes and work boots."
@@ -0,0 +1,4 @@
author: "Ghommie"
delete-after: True
changes:
- bugfix: "Fixed some overlay bug that happens when legcuffed and then handcuffed."
@@ -0,0 +1,9 @@
author: "EmeraldSundisk"
delete-after: True
changes:
- rscadd: "Increases the number of plots to 9 (from 5)"
- rscadd: "Additional lighting placed directly outside the garden"
- tweak: "Cleans up the area to reflect use. Moves the seed extractor to a more central location"
- tweak: "Relocates the seed packs on botany's counter to the garden
removal: Removes wooden barricades outside the garden"
- config: "Renames \"Abandoned Garden\" area designation to \"Maintenance Garden\", but does not replace the icon in Dream Maker"
@@ -0,0 +1,4 @@
author: "Ghommie"
delete-after: True
changes:
- bugfix: "Fixed undershirts n socks colors prefs."
@@ -0,0 +1,4 @@
author: "Trilbyspaceclone"
delete-after: True
changes:
- rscadd: "Blue space blood bag"
@@ -0,0 +1,5 @@
author: "kappa-sama"
delete-after: True
changes:
- tweak: "voidcells can now unlock alien tech"
- balance: "rebalanced tech trees (not really)"
@@ -0,0 +1,4 @@
author: "BurgerLUA"
delete-after: True
changes:
- balance: "Rebalanced special jetpacks."
@@ -0,0 +1,4 @@
author: "GrayRachnid"
delete-after: True
changes:
- rscadd: "Added windoors to all the flaps on delta."
@@ -0,0 +1,9 @@
author: "XDTM"
delete-after: True
changes:
- rscadd: "Added the experimental dissection surgery, which can be performed once per corpse to gain techweb points."
- rscadd: "Rarer specimens are more valuable, so xenos and rare species are more efficient subjects."
- rscadd: "Added two new surgery procedures, under the Experimental Surgery techweb node."
- rscadd: "Ligament Hook makes it so you can attach limbs manually (like skeletons) but makes dismemberment more likely as well."
- rscadd: "Ligament Reinforcement prevents dismemberment, but makes limbs easier to disable through damage."
- tweak: "Golem limbs can now be disabled, although they are still undismemberable."
Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 KiB

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 KiB

After

Width:  |  Height:  |  Size: 292 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 950 B

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

@@ -1,24 +0,0 @@
/obj/structure/guncase/plasma
name = "plasma rifle locker"
desc = "A locker that holds plasma rifles. Only opens in dire emergencies."
icon_state = "ecase"
case_type = "egun"
gun_category = /obj/item/gun/energy/plasma
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF //because fuck you, powergaming nerds.
/obj/structure/guncase/plasma/attackby(obj/item/W, mob/user, params)
return
/obj/structure/guncase/plasma/MouseDrop(over_object, src_location, over_location)
if(GLOB.security_level == SEC_LEVEL_RED || GLOB.security_level == SEC_LEVEL_DELTA)
. = ..()
else
to_chat(usr, "The storage unit will only unlock during a Red or Delta security alert.")
/obj/structure/guncase/plasma/attack_hand(mob/user)
return MouseDrop(user)
/obj/structure/guncase/plasma/emag_act()
. = SEND_SIGNAL(src, COMSIG_ATOM_EMAG_ACT)
if(!.)
to_chat(usr, "The locking mechanism is fitted with old style parts, The card has no effect.")
@@ -1,21 +0,0 @@
//Will include consumable gene mods in the future.
/obj/item/genemod
name = "genetic modifier"
desc = "Microbodies which can grow, morph, or otherwise change an organism into something else."
icon = 'icons/obj/items_and_weapons.dmi'
icon_state = "dnainjector"
throw_speed = 3
throw_range = 5
w_class = WEIGHT_CLASS_TINY
var/applied_region = "chest"
var/list/add_mutations = list()
var/list/remove_mutations = list()
var/list/add_mutations_static = list()
var/list/remove_mutations_static = list()
var/used = 0
/obj/item/genemod/proc/use(mob/living/carbon/human/target)
return
@@ -1,35 +0,0 @@
/datum/controller/subsystem/ticker/proc/generate_crew_objectives()
for(var/datum/mind/crewMind in SSticker.minds)
if(prob(5) && !issilicon(crewMind.current) && !jobban_isbanned(crewMind, "Syndicate") && GLOB.miscreants_allowed && ROLE_MISCREANT in crewMind.current.client.prefs.be_special)
generate_miscreant_objectives(crewMind)
else
if(CONFIG_GET(flag/allow_crew_objectives))
generate_individual_objectives(crewMind)
return
/datum/controller/subsystem/ticker/proc/generate_individual_objectives(var/datum/mind/crewMind)
if(!(CONFIG_GET(flag/allow_crew_objectives)))
return
if(!crewMind)
return
if(!crewMind.current || !crewMind.objectives || crewMind.special_role)
return
if(!crewMind.assigned_role)
return
var/list/validobjs = crewobjjobs["[ckey(crewMind.assigned_role)]"]
if(!validobjs || !validobjs.len)
return
var/selectedObj = pick(validobjs)
var/datum/objective/crew/newObjective = new selectedObj
if(!newObjective)
return
newObjective.owner = crewMind
crewMind.objectives += newObjective
to_chat(crewMind, "<B>As a part of Nanotrasen's anti-tide efforts, you have been assigned an optional objective. It will be checked at the end of the shift. <font color=red>Performing traitorous acts in pursuit of your objective may result in termination of your employment.</font></B>")
to_chat(crewMind, "<B>Your optional objective:</B> [newObjective.explanation_text]")
/datum/objective/crew/
var/jobs = ""
explanation_text = "Yell on the development discussion channel on Citadels discord if this ever shows up. Something just broke here, dude"
/datum/objective/crew/proc/setup()
@@ -1,52 +0,0 @@
/datum/controller/subsystem/ticker/proc/generate_miscreant_objectives(var/datum/mind/crewMind)
if(!GLOB.miscreants_allowed)
return
if(!crewMind)
return
if(!crewMind.current || !crewMind.objectives || crewMind.special_role)
return
if(!crewMind.assigned_role)
return
if(!(ROLE_MISCREANT in crewMind.current.client.prefs.be_special))
return
if(jobban_isbanned(crewMind, "Syndicate"))
return
var/list/objectiveTypes = miscreantobjlist
if(!objectiveTypes.len)
return
var/selectedType = pick(objectiveTypes)
var/datum/objective/miscreant/newObjective = new selectedType
if(!newObjective)
return
newObjective.owner = crewMind
crewMind.objectives += newObjective
crewMind.special_role = "miscreant"
to_chat(crewMind, "<B><font size=3 color=red>You are a Miscreant.</font></B>")
to_chat(crewMind, "<B>Pursuing your objective is entirely optional, as the completion of your objective is unable to be tracked. Performing traitorous acts not directly related to your objective may result in permanent termination of your employment.</B>")
to_chat(crewMind, "<B>Your objective:</B> [newObjective.explanation_text]")
/datum/objective/miscreant
explanation_text = "Something broke. Horribly. Dear god, im so sorry. Yell about this in the development discussion channel of citadels discord."
/* Goon's Miscreant Objectives */
/datum/objective/miscreant/incompetent
explanation_text = "Be as useless and incompetent as possible without getting killed."
/datum/objective/miscreant/litterbug
explanation_text = "Make a huge mess wherever you go."
/datum/objective/miscreant/creepy
explanation_text = "Sneak around looking as suspicious as possible without actually doing anything illegal."
/datum/objective/miscreant/whiny
explanation_text = "Complain incessantly about every minor issue you find."
/* Citadel's Miscreant Objectives */
/datum/objective/miscreant/immersions
explanation_text = "Act as uncharacteristic as you possibly can." // corrected from "Act as out of character as you can" people thought it meant to just ooc in ic
/datum/objective/miscreant/cargonia
explanation_text = "Attempt to establish independence of your department."
@@ -1,81 +0,0 @@
/* CARGO OBJECTIVES */
/datum/objective/crew/petsplosion
explanation_text = "Ensure there are at least (If you see this, yell on citadels discord in the development discussion channel) pets on the station by the end of the shift. Interpret this as you wish."
jobs = "quartermaster,cargotechnician"
/datum/objective/crew/petsplosion/New()
. = ..()
target_amount = rand(10,30)
update_explanation_text()
/datum/objective/crew/petsplosion/update_explanation_text()
. = ..()
explanation_text = "Ensure there are at least [target_amount] pets on the station by the end of the shift. Interpret this as you wish."
/datum/objective/crew/petsplosion/check_completion()
var/petcount = target_amount
for(var/mob/living/simple_animal/pet/P in GLOB.mob_list)
if(!(P.stat == DEAD))
if(P.z == SSmapping.station_start || SSshuttle.emergency.shuttle_areas[get_area(P)])
petcount--
for(var/mob/living/carbon/human/H in GLOB.mob_list)
if(!(H.stat == DEAD))
if(H.z == SSmapping.station_start || SSshuttle.emergency.shuttle_areas[get_area(H)])
if(istype(H.wear_neck, /obj/item/clothing/neck/petcollar))
petcount--
if(petcount <= 0)
return TRUE
else
return FALSE
/datum/objective/crew/points //ported from old hippie
explanation_text = "Make sure the station has at least (Something broke, report this to the development discussion channel of citadels discord) supply points at the end of the shift."
jobs = "quartermaster,cargotechnician"
/datum/objective/crew/points/New()
. = ..()
target_amount = rand(25000,100000)
update_explanation_text()
/datum/objective/crew/points/update_explanation_text()
. = ..()
explanation_text = "Make sure the station has at least [target_amount] supply points at the end of the shift."
/datum/objective/crew/points/check_completion()
if(SSshuttle.points >= target_amount)
return TRUE
else
return FALSE
/datum/objective/crew/bubblegum
explanation_text = "Ensure Bubblegum is dead at the end of the shift."
jobs = "shaftminer"
/datum/objective/crew/bubblegum/check_completion()
for(var/mob/living/simple_animal/hostile/megafauna/bubblegum/B in GLOB.mob_list)
if(!(B.stat == DEAD))
return FALSE
return TRUE
/datum/objective/crew/fatstacks //ported from old hippie
explanation_text = "Have at least (something broke, report this to the development discussion channel of citadels discord) mining points on your ID at the end of the shift."
jobs = "shaftminer"
/datum/objective/crew/fatstacks/New()
. = ..()
target_amount = rand(15000,50000)
update_explanation_text()
/datum/objective/crew/fatstacks/update_explanation_text()
. = ..()
explanation_text = "Have at least [target_amount] mining points on your ID at the end of the shift."
/datum/objective/crew/fatstacks/check_completion()
if(owner && owner.current)
var/mob/living/carbon/human/H = owner.current
var/obj/item/card/id/theID = H.get_idcard()
if(istype(theID))
if(theID.mining_points >= target_amount)
return TRUE
return FALSE
@@ -1,249 +0,0 @@
/* CIVILIAN OBJECTIVES */
/datum/objective/crew/druglordbot //ported from old Hippie with adjustments
var/targetchem = "none"
var/datum/reagent/chempath
explanation_text = "Have at least (somethin broke here) harvested plants containing (report this on the development discussion channel of citadel's discord) when the shift ends."
jobs = "botanist"
/datum/objective/crew/druglordbot/New()
. = ..()
target_amount = rand(3,20)
var/blacklist = list(/datum/reagent/drug, /datum/reagent/drug/menthol, /datum/reagent/medicine, /datum/reagent/medicine/adminordrazine, /datum/reagent/medicine/adminordrazine/nanites, /datum/reagent/medicine/mine_salve, /datum/reagent/medicine/syndicate_nanites, /datum/reagent/medicine/strange_reagent, /datum/reagent/medicine/miningnanites, /datum/reagent/medicine/changelingadrenaline, /datum/reagent/medicine/changelinghaste)
var/drugs = typesof(/datum/reagent/drug) - blacklist
var/meds = typesof(/datum/reagent/medicine) - blacklist
var/chemlist = drugs + meds
chempath = pick(chemlist)
targetchem = initial(chempath.id)
update_explanation_text()
/datum/objective/crew/druglordbot/update_explanation_text()
. = ..()
explanation_text = "Have at least [target_amount] harvested plants containing [initial(chempath.name)] when the shift ends."
/datum/objective/crew/druglordbot/check_completion()
var/pillcount = target_amount
if(owner && owner.current)
if(owner.current.contents)
for(var/obj/item/reagent_containers/food/snacks/grown/P in owner.current.get_contents())
if(P.reagents.has_reagent(targetchem))
pillcount--
if(pillcount <= 0)
return TRUE
else
return FALSE
/datum/objective/crew/foodhoard
var/datum/crafting_recipe/food/targetfood
var/obj/item/reagent_containers/food/foodpath
explanation_text = "Personally deliver at least (yo something broke) (report this to the developer discussion channel in citadels discord)s to Centcom."
jobs = "cook"
/datum/objective/crew/foodhoard/New()
. = ..()
target_amount = rand(2,10)
var/blacklist = list(/datum/crafting_recipe/food, /datum/crafting_recipe/food/cak)
var/possiblefoods = typesof(/datum/crafting_recipe/food) - blacklist
targetfood = pick(possiblefoods)
foodpath = initial(targetfood.result)
update_explanation_text()
/datum/objective/crew/foodhoard/update_explanation_text()
. = ..()
explanation_text = "Personally deliver at least [target_amount] [initial(foodpath.name)]s to Centcom."
/datum/objective/crew/foodhoard/check_completion()
if(owner && owner.current && owner.current.check_contents_for(foodpath) && SSshuttle.emergency.shuttle_areas[get_area(owner.current)])
return TRUE
else
return FALSE
/datum/objective/crew/responsibility
explanation_text = "Make sure nobody dies with alcohol poisoning."
jobs = "bartender"
/datum/objective/crew/responsibility/check_completion()
for(var/mob/living/carbon/human/H in GLOB.mob_list)
if(H.stat == DEAD && H.drunkenness >= 80)
if(H.z == SSmapping.station_start || SSshuttle.emergency.shuttle_areas[get_area(H)])
return FALSE
return TRUE
/datum/objective/crew/clean //ported from old Hippie
var/list/areas = list()
var/hardmode = FALSE
explanation_text = "Ensure sure that (Yo, something broke. Yell about this in citadels devlopmeent discussion channel.) remain spotless at the end of the shift."
jobs = "janitor"
/datum/objective/crew/clean/New()
. = ..()
if(prob(1))
hardmode = TRUE
var/list/blacklistnormal = list(typesof(/area/space) - typesof(/area/lavaland) - typesof(/area/mine) - typesof(/area/ai_monitored/turret_protected) - typesof(/area/tcommsat))
var/list/blacklisthard = list(typesof(/area/lavaland) - typesof(/area/mine))
var/list/possibleareas = list()
if(hardmode)
possibleareas = GLOB.teleportlocs - /area - blacklisthard
else
possibleareas = GLOB.teleportlocs - /area - blacklistnormal
for(var/i in 1 to rand(1,6))
areas |= pick_n_take(possibleareas)
update_explanation_text()
/datum/objective/crew/clean/update_explanation_text()
. = ..()
explanation_text = "Ensure that the"
for(var/i in 1 to areas.len)
var/area/A = areas[i]
explanation_text += " [A]"
if(i != areas.len && areas.len >= 3)
explanation_text += ","
if(i == areas.len - 1)
explanation_text += "and"
explanation_text += " [(areas.len ==1) ? "is completely" : "are [(areas.len == 2) ? "completely" : "all"]"] clean at the end of the shift."
if(hardmode)
explanation_text += " Chop-chop."
/datum/objective/crew/clean/check_completion()
for(var/area/A in areas)
for(var/obj/effect/decal/cleanable/C in area_contents(A))
if(C && C.alpha >= 150)
return FALSE
return TRUE
/datum/objective/crew/slipster //ported from old Hippie with adjustments
explanation_text = "Slip at least (Yell on citadel's development discussion channel if you see this) different people with your PDA, and have it on you at the end of the shift."
jobs = "clown"
/datum/objective/crew/slipster/New()
. = ..()
target_amount = rand(5, 20)
update_explanation_text()
/datum/objective/crew/slipster/update_explanation_text()
. = ..()
explanation_text = "Slip at least [target_amount] different people with your PDA, and have it on you at the end of the shift."
/datum/objective/crew/slipster/check_completion()
var/list/uniqueslips = list()
if(owner && owner.current)
for(var/obj/item/pda/clown/PDA in owner.current.get_contents())
for(var/mob/living/carbon/human/H in PDA.slipvictims)
uniqueslips |= H
if(uniqueslips.len >= target_amount)
return TRUE
else
return FALSE
/datum/objective/crew/vow //ported from old Hippie
explanation_text = "Never break your vow of silence."
jobs = "mime"
/datum/objective/crew/vow/check_completion()
if(owner && owner.current)
var/list/say_log = owner.current.logging[INDIVIDUAL_SAY_LOG]
if(say_log.len > 0)
return FALSE
return TRUE
/datum/objective/crew/nullrod
explanation_text = "Don't lose your holy rod."
jobs = "chaplain"
/datum/objective/crew/nullrod/check_completion()
if(owner && owner.current)
for(var/nullrodtypes in typesof(/obj/item/nullrod))
if(owner.current.check_contents_for(nullrodtypes))
return TRUE
if(owner.current.getorgan(/obj/item/organ/genital/penis))
return TRUE
return FALSE
/datum/objective/crew/reporter //ported from old hippie
var/charcount = 100
explanation_text = "Publish at least (Yo something broke) articles containing at least (Report this to Citadels development channel) characters."
jobs = "curator"
/datum/objective/crew/reporter/New()
. = ..()
target_amount = rand(2,10)
charcount = rand(20,250)
update_explanation_text()
/datum/objective/crew/reporter/update_explanation_text()
. = ..()
explanation_text = "Publish at least [target_amount] articles containing at least [charcount] characters."
/datum/objective/crew/reporter/check_completion()
if(owner && owner.current)
var/ownername = "[ckey(owner.current.real_name)][ckey(owner.assigned_role)]"
for(var/datum/newscaster/feed_channel/chan in GLOB.news_network.network_channels)
for(var/datum/newscaster/feed_message/msg in chan.messages)
if(ckey(msg.returnAuthor()) == ckey(ownername))
if(length(msg.returnBody()) >= charcount)
target_amount--
if(target_amount <= 0)
return TRUE
else
return FALSE
/datum/objective/crew/pwrgame //ported from Goon with adjustments
var/obj/item/clothing/targettidegarb
explanation_text = "Get your grubby hands on a (Dear god something broke. Report this to Citadel's development dicussion channel)."
jobs = "assistant"
/datum/objective/crew/pwrgame/New()
. = ..()
var/list/muhvalids = list(/obj/item/clothing/mask/gas, /obj/item/clothing/head/welding, /obj/item/clothing/head/ushanka, /obj/item/clothing/gloves/color/yellow, /obj/item/clothing/mask/gas/owl_mask)
if(prob(10))
muhvalids += list(/obj/item/clothing/suit/space)
targettidegarb = pick(muhvalids)
update_explanation_text()
/datum/objective/crew/pwrgame/update_explanation_text()
. = ..()
explanation_text = "Get your grubby hands on a [initial(targettidegarb.name)]."
/* DM is not a sane language in any way, shape, or form. If anyone wants to try to get this bit functioning proper, I hold no responsibility for broken keyboards.
if(owner && owner.current)
var/mob/living/carbon/human/H = owner.current
if(H && H.dna && H.dna.species && H.dna.species.id)
explanation_text = "Get your "
if(H.dna.species.id == "avian")
explanation_text += "scratchy claws "
else if(H.dna.species.id == "mammal")
explanation_text += "dirty paws "
else if(H.dna.species.id == "aquatic")
explanation_text += "fishy hands "
else if(H.dna.species.id == "xeno")
explanation_text += "weird claws "
else if(H.dna.species.id == "guilmon")
explanation_text += "digital claws "
else if(H.dna.species.id == "lizard")
explanation_text += "slimy claws "
else if(H.dna.species.id == "datashark")
explanation_text += "glitchy hands "
else if(H.dna.species.id == "insect")
explanation_text += "gross grabbers "
else
explanation_text += "grubby hands "
explanation_text += "on a space suit." replace this if you're making this monstrosity work */
/datum/objective/crew/pwrgame/check_completion()
if(owner && owner.current)
for(var/tidegarbtypes in typesof(targettidegarb))
if(owner.current.check_contents_for(tidegarbtypes))
return TRUE
return FALSE
/datum/objective/crew/promotion //ported from Goon
explanation_text = "Have a non-assistant ID registered to you at the end of the shift."
jobs = "assistant"
/datum/objective/crew/promotion/check_completion()
if(owner && owner.current)
var/mob/living/carbon/human/H = owner.current
var/obj/item/card/id/theID = H.get_idcard()
if(istype(theID))
if(!(H.get_assignment() == "Assistant") && !(H.get_assignment() == "No id") && !(H.get_assignment() == "No job"))
return TRUE
return FALSE
@@ -1,33 +0,0 @@
/* COMMAND OBJECTIVES */
/datum/objective/crew/caphat //Ported from Goon
explanation_text = "Don't lose your hat."
jobs = "captain"
/datum/objective/crew/caphat/check_completion()
if(owner && owner.current && owner.current.check_contents_for(/obj/item/clothing/head/caphat))
return TRUE
else
return FALSE
/datum/objective/crew/datfukkendisk //Ported from old Hippie
explanation_text = "Defend the nuclear authentication disk at all costs, and be the one to personally deliver it to Centcom."
jobs = "captain" //give this to other heads at your own risk.
/datum/objective/crew/datfukkendisk/check_completion()
if(owner && owner.current && owner.current.check_contents_for(/obj/item/disk/nuclear) && SSshuttle.emergency.shuttle_areas[get_area(owner.current)])
return TRUE
else
return FALSE
/datum/objective/crew/ian //Ported from old Hippie
explanation_text = "Defend Ian at all costs, and ensure he gets delivered to Centcom at the end of the shift."
jobs = "headofpersonnel"
/datum/objective/crew/ian/check_completion()
if(owner && owner.current)
for(var/mob/living/simple_animal/pet/dog/corgi/Ian/goodboy in GLOB.mob_list)
if(goodboy.stat != DEAD && SSshuttle.emergency.shuttle_areas[get_area(goodboy)])
return TRUE
return FALSE
return FALSE
@@ -1,34 +0,0 @@
/* ENGINEERING OBJECTIVES */
/datum/objective/crew/integrity //ported from old Hippie
explanation_text = "Ensure the station's integrity rating is at least (Yo something broke, yell on the development discussion channel of citadels discord about this)% when the shift ends."
jobs = "chiefengineer,stationengineer"
/datum/objective/crew/integrity/New()
. = ..()
target_amount = rand(60,95)
update_explanation_text()
/datum/objective/crew/integrity/update_explanation_text()
. = ..()
explanation_text = "Ensure the station's integrity rating is at least [target_amount]% when the shift ends."
/datum/objective/crew/integrity/check_completion()
var/datum/station_state/end_state = new /datum/station_state()
end_state.count()
var/station_integrity = min(PERCENT(GLOB.start_state.score(end_state)), 100)
if(!SSticker.mode.station_was_nuked && station_integrity >= target_amount)
return TRUE
else
return FALSE
/datum/objective/crew/poly
explanation_text = "Make sure Poly keeps his headset, and stays alive until the end of the shift."
jobs = "chiefengineer"
/datum/objective/crew/poly/check_completion()
for(var/mob/living/simple_animal/parrot/Poly/dumbbird in GLOB.mob_list)
if(!(dumbbird.stat == DEAD) && dumbbird.ears)
if(istype(dumbbird.ears, /obj/item/radio/headset))
return TRUE
return FALSE
@@ -1,86 +0,0 @@
/* MEDICAL OBJECTIVES */
/datum/objective/crew/morgue //Ported from old Hippie
explanation_text = "Ensure there are no corpses on the station outside of the morgue when the shift ends."
jobs = "chiefmedicalofficer,geneticist,medicaldoctor"
/datum/objective/crew/morgue/check_completion()
for(var/mob/living/carbon/human/H in GLOB.mob_list)
if(H.stat == DEAD && H.z == SSmapping.station_start)
if(get_area(H) != /area/medical/morgue)
return FALSE
return TRUE
/datum/objective/crew/chems //Ported from old Hippie
var/targetchem = "none"
var/datum/reagent/chempath
explanation_text = "Have (yell about this in the development discussion channel of citadel's discord, something broke) in your bloodstream when the shift ends."
jobs = "chiefmedicalofficer,chemist"
/datum/objective/crew/chems/New()
. = ..()
var/blacklist = list(/datum/reagent/drug, /datum/reagent/drug/nicotine, /datum/reagent/drug/menthol, /datum/reagent/medicine, /datum/reagent/medicine/adminordrazine, /datum/reagent/medicine/adminordrazine/nanites, /datum/reagent/medicine/mine_salve, /datum/reagent/medicine/omnizine, /datum/reagent/medicine/syndicate_nanites, /datum/reagent/medicine/earthsblood, /datum/reagent/medicine/strange_reagent, /datum/reagent/medicine/miningnanites, /datum/reagent/medicine/changelingadrenaline, /datum/reagent/medicine/changelinghaste)
var/drugs = typesof(/datum/reagent/drug) - blacklist
var/meds = typesof(/datum/reagent/medicine) - blacklist
var/chemlist = drugs + meds
chempath = pick(chemlist)
targetchem = initial(chempath.id)
update_explanation_text()
/datum/objective/crew/chems/update_explanation_text()
. = ..()
explanation_text = "Have [initial(chempath.name)] in your bloodstream when the shift ends."
/datum/objective/crew/chems/check_completion()
if(owner.current)
if(!owner.current.stat == DEAD && owner.current.reagents)
if(owner.current.reagents.has_reagent(targetchem))
return TRUE
else
return FALSE
/datum/objective/crew/druglordchem //ported from old Hippie with adjustments
var/targetchem = "none"
var/datum/reagent/chempath
var/chemamount = 0
explanation_text = "Have at least (somethin broke here) pills containing at least (like really broke) units of(report this on the development discussion channel of citadel's discord) when the shift ends."
jobs = "chemist"
/datum/objective/crew/druglordchem/New()
. = ..()
target_amount = rand(5,50)
chemamount = rand(1,20)
var/blacklist = list(/datum/reagent/drug, /datum/reagent/drug/nicotine, /datum/reagent/drug/menthol)
var/drugs = typesof(/datum/reagent/drug) - blacklist
var/chemlist = drugs
chempath = pick(chemlist)
targetchem = initial(chempath.id)
update_explanation_text()
/datum/objective/crew/druglordchem/update_explanation_text()
. = ..()
explanation_text = "Have at least [target_amount] pills containing at least [chemamount] units of [initial(chempath.name)] when the shift ends."
/datum/objective/crew/druglordchem/check_completion()
var/pillcount = target_amount
if(owner.current)
if(owner.current.contents)
for(var/obj/item/reagent_containers/pill/P in owner.current.get_contents())
if(P.reagents.has_reagent(targetchem, chemamount))
pillcount--
if(pillcount <= 0)
return TRUE
else
return FALSE
/datum/objective/crew/noinfections
explanation_text = "Make sure there are no crew members with harmful diseases at the end of the shift."
jobs = "virologist"
/datum/objective/crew/noinfections/check_completion()
for(var/mob/living/carbon/human/H in GLOB.mob_list)
if(!H.stat == DEAD)
if(H.z == SSmapping.station_start || SSshuttle.emergency.shuttle_areas[get_area(H)])
if(H.check_virus() == 2)
return FALSE
return TRUE
@@ -1,45 +0,0 @@
/* SCIENCE OBJECTIVES */
/datum/objective/crew/cyborgs //Ported from old Hippie
explanation_text = "Ensure there are at least (Yo something broke here, yell on citadel's development discussion channel about this) functioning cyborgs when the shift ends."
jobs = "researchdirector,roboticist"
/datum/objective/crew/cyborgs/New()
. = ..()
target_amount = rand(3,10)
update_explanation_text()
/datum/objective/crew/cyborgs/update_explanation_text()
. = ..()
explanation_text = "Ensure there are at least [target_amount] functioning cyborgs when the shift ends."
/datum/objective/crew/cyborgs/check_completion()
var/borgcount = target_amount
for(var/mob/living/silicon/robot/R in GLOB.alive_mob_list)
if(!(R.stat == DEAD))
borgcount--
if(borgcount <= 0)
return TRUE
else
return FALSE
/datum/objective/crew/research //inspired by old hippie's research level objective. should hopefully be compatible with techwebs when that gets finished. hopefully. should be easy to update in the event that it is incompatible with techwebs.
var/datum/design/targetdesign
explanation_text = "Make sure the research required to produce a (something broke, yell on citadel's development discussion channel about this) is available on the R&D server by the end of the shift."
jobs = "researchdirector,scientist"
/datum/objective/crew/research/New()
. = ..()
targetdesign = pick(subtypesof(/datum/design))
update_explanation_text()
/datum/objective/crew/research/update_explanation_text()
. = ..()
explanation_text = "Make sure the research required to produce a [initial(targetdesign.name)] is available on the R&D server by the end of the shift."
/datum/objective/crew/research/check_completion()
for(var/obj/machinery/rnd/server/S in GLOB.machines)
if(S && S.stored_research)
if(S.stored_research.researched_designs[initial(targetdesign.id)])
return TRUE
return FALSE
@@ -1,23 +0,0 @@
/* SECURITY OBJECTIVES */
/datum/objective/crew/enjoyyourstay
explanation_text = "Enforce Space Law to the best of your ability."
jobs = "headofsecurity,securityofficer,warden,detective"
/datum/objective/crew/enjoyyourstay/check_completion()
if(owner && owner.current)
if(owner.current.stat != DEAD)
return TRUE
return FALSE
/datum/objective/crew/justicecrew
explanation_text = "Ensure there are no innocent crew members in the brig when the shift ends."
jobs = "lawyer"
/datum/objective/crew/justicecrew/check_completion()
if(owner && owner.current)
for(var/datum/mind/M in SSticker.minds)
if(M.current && isliving(M.current))
if(!M.special_role && !(M.assigned_role == "Security Officer") && !(M.assigned_role == "Detective") && !(M.assigned_role == "Head of Security") && !(M.assigned_role == "Lawyer") && !(M.assigned_role == "Warden") && get_area(M.current) != typesof(/area/security))
return FALSE
return TRUE
@@ -1,28 +0,0 @@
//supply packs
/datum/supply_pack/misc/kinkmate
name = "Kinkmate construction kit"
cost = 2000
contraband = TRUE
contains = list(/obj/item/vending_refill/kink, /obj/item/circuitboard/machine/kinkmate)
crate_name = "Kinkmate construction kit"
//Food and livestocks
/datum/supply_pack/organic/critter/kiwi
name = "Space kiwi Crate"
cost = 2000
contains = list( /mob/living/simple_animal/kiwi)
crate_name = "space kiwi crate"
//////////////////////////////////////////////////////////////////////////////
//////////////////////////// Miscellaneous ///////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
/datum/supply_pack/misc/jukebox
name = "Jukebox"
cost = 35000
contains = list(/obj/machinery/jukebox)
crate_name = "Jukebox"
@@ -12,6 +12,7 @@
icon_state = "hostrench"
item_state = "hostrench"
mutantrace_variation = NO_MUTANTRACE_VARIATION
body_parts_covered = CHEST|ARMS|LEGS
/obj/item/clothing/suit/hooded/cloak/david
name = "red cloak"
@@ -1,11 +0,0 @@
/datum/crafting_recipe/toyneb
name = "Non-Euplastic Blade"
reqs = list(/obj/item/light/tube = 1, /obj/item/stack/cable_coil = 1, /obj/item/stack/sheet/plastic = 4)
result = /obj/item/toy/sword/cx
category = CAT_MISC
/datum/crafting_recipe/potatos
name = "Potat-OS"
reqs = list(/obj/item/stack/cable_coil = 1, /obj/item/stack/rods = 1, /obj/item/reagent_containers/food/snacks/grown/potato = 1, /obj/item/aicard = 1 )
result = /obj/item/aicard/potato
category = CAT_ROBOT
@@ -447,6 +447,7 @@
item_state = "kimono"
icon = 'icons/obj/custom.dmi'
alternate_worn_icon = 'icons/mob/custom_w.dmi'
body_parts_covered = CHEST|GROIN|LEGS|ARMS
mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/suit/commjacket
@@ -456,6 +457,7 @@
item_state = "commjacket"
icon = 'icons/obj/custom.dmi'
alternate_worn_icon = 'icons/mob/custom_w.dmi'
body_parts_covered = CHEST|GROIN|LEGS|ARMS
mutantrace_variation = NO_MUTANTRACE_VARIATION
/obj/item/clothing/under/mw2_russian_para
@@ -1,2 +0,0 @@
/obj/machinery/computer/shuttle/mining
req_access = list(ACCESS_MINING)
@@ -1,306 +0,0 @@
//Sprites are trademarks of Gamefreak, Nintendo, The Pokemon Company, and Spike Chunsoft.
#define ispokemon(A) (istype(A, /mob/living/simple_animal/pokemon))
//POKEBALL
/obj/item/pokeball
name = "pokeball"
icon = 'icons/obj/pokeball.dmi'
icon_state = "pokeball"
force = 0
throwforce = 0
var/success_chance = 25
var/pokemon
/obj/item/pokeball/great
name = "great ball"
icon_state = "pokeball_great"
success_chance = 50
/obj/item/pokeball/ultra
icon_state = "pokeball_ultra"
name = "ultra ball"
success_chance = 75
/obj/item/pokeball/master
icon_state = "pokeball_master"
name = "master ball"
success_chance = 100
/* //WIP
/obj/item/pokeball/throw_impact(atom/hit_atom)
if(ispokemon(hit_atom))
var/mob/living/simple_animal/pokemon/pmon = hit_atom
var/initial_success_chance = success_chance
pmon.resize = 0.1
pmon.color = "RED"
pmon.canmove = 0
sleep(15)
if(pmon.pokeball == src)
pmon.loc = src
pokemon = pmon
return 1
if(pmon.pokeball && pmon.pokeball !=src)
return ..()
var/bonus_chance = ((pmon.maxHealth - pmon.health) / 2)
if(bonus_chance > 100)
bonus_chance = 100
success_chance = (success_chance + bonus_chance)
if(success_chance > 100)
success_chance = 100
if(success_chance < 0)//just in case
success_chance = 0
sleep(15)
if(prob(success_chance))
visible_message("<span class='warning'>[src] shakes...</span>")
else
escape()
sleep(15)
if(prob(success_chance))
visible_message("<span class='warning'>[src] shakes...</span>")
else
escape()
sleep(15)
if(prob(success_chance))
visible_message("<span class='warning'>[src] shakes...</span>")
else
escape()
else
..()
/obj/item/pokeball/proc/capture(mob/living/simple_animal/pokemon/pmon, mob/living/user)
/obj/item/pokeball/proc/escape(mob/living/simple_animal/pokemon/pmon, mob/living/user)
if(!pokemon)
return
pmon.resize = 10
pmon.color = null
pmon.canmove = 1
pmon.loc = src.loc
if(pmon.pokeball != src)
visible_message("<span class='warning'>[pmon] breaks free from [src]</span>")
PoolOrNew(/obj/effect/particle_effect/sparks, loc)
playsound(src.loc, "sparks", 50, 1)
qdel(src)
else
/obj/item/pokeball/proc/recall
/obj/item/pokeball/proc/release
*/
/mob/living/simple_animal/pokemon
name = "eevee"
icon_state = "eevee"
icon_living = "eevee"
icon_dead = "eevee_d"
desc = "Gotta catch 'em all!"
icon = 'icons/mob/pokemon.dmi'
var/pokeball
pixel_x = -16
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 5)
ventcrawler = 2
health = 100
maxHealth = 100
layer = 4
response_help = "pets"
wander = 1
turns_per_move = 2
pass_flags = PASSTABLE | PASSMOB
/mob/living/simple_animal/pokemon/proc/simple_lay_down()
set name = "Rest"
set category = "IC"
resting = !resting
src << "<span class='notice'>You are now [resting ? "resting" : "getting up"].</span>"
update_canmove()
update_icon()
/mob/living/simple_animal/pokemon/proc/update_icon()
if(lying || resting || sleeping)
icon_state = "[icon_state]_rest"
else
icon_state = "[icon_living]"
/mob/living/simple_animal/pokemon/New()
..()
verbs += /mob/living/simple_animal/pokemon/proc/simple_lay_down
/*
/////TEMPLATE/////
/mob/living/simple_animal/pokemon/
name = ""
icon_state = ""
icon_living = ""
icon_dead = ""
*/
/mob/living/simple_animal/pokemon/leg
icon = 'icons/mob/legendary.dmi'
pixel_x = -32
butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 12)
health = 200
maxHealth = 200
/mob/living/simple_animal/pokemon/leg/articuno
name = "Articuno"
icon_state = "articuno"
icon_living = "articuno"
icon_dead = "articuno_d"
flying = 1
/mob/living/simple_animal/pokemon/leg/rayquaza
name = "Rayquaza"
icon_state = "rayquaza"
icon_living = "rayquaza"
icon_dead = "rayquaza_d"
flying = 1
//ALPHABETICAL PLEASE
/mob/living/simple_animal/pokemon/absol
name = "absol"
icon_state = "absol"
icon_living = "absol"
icon_dead = "absol_d"
speak = list("Absol!", "Ab-Absol!")
/mob/living/simple_animal/pokemon/aggron
name = "aggron"
icon_state = "aggron"
icon_living = "aggron"
icon_dead = "aggron_d"
/mob/living/simple_animal/pokemon/ampharos
name = "ampharos"
icon_state = "ampharos"
icon_living = "ampharos"
icon_dead = "ampharos_d"
/mob/living/simple_animal/pokemon/charmander
name = "charmander"
icon_state = "charmander"
icon_living = "charmander"
icon_dead = "charmander_d"
/mob/living/simple_animal/pokemon/ditto
name = "ditto"
icon_state = "ditto"
icon_living = "ditto"
icon_dead = "ditto_d"
/mob/living/simple_animal/pokemon/dratini/dragonair
name = "dragonair"
desc = "A Dragonair stores an enormous amount of energy inside its body. It is said to alter the weather around it by loosing energy from the crystals on its neck and tail."
icon_state = "dragonair"
icon_living = "dragonair"
icon_dead = "dragonair_d"
/mob/living/simple_animal/pokemon/dratini/dragonair/dragonite
name = "dragonite"
desc = "It can circle the globe in just 16 hours. It is a kindhearted Pokémon that leads lost and foundering ships in a storm to the safety of land."
icon_state = "dragonite"
icon_living = "dragonite"
icon_dead = "dragonite_d"
/mob/living/simple_animal/pokemon/dratini
name = "dratini"
desc = "A Dratini continually molts and sloughs off its old skin. It does so because the life energy within its body steadily builds to reach uncontrollable levels."
icon_state = "dratini"
icon_living = "dratini"
icon_dead = "dratini_d"
/mob/living/simple_animal/pokemon/eevee
name = "eevee"
desc = "Eevee has an unstable genetic makeup that suddenly mutates due to its environment. Radiation from various stones causes this Pokémon to evolve."
icon_state = "eevee"
icon_living = "eevee"
icon_dead = "eevee_d"
speak = list("Eevee!", "Ee-Eevee!")
response_help = "pets"
response_harm = "hits"
/mob/living/simple_animal/pokemon/eevee/espeon
name = "espeon"
desc = "Espeon is extremely loyal to any trainer it considers to be worthy. It is said to have developed precognitive powers to protect its trainer from harm."
icon_state = "espeon"
icon_living = "espeon"
icon_dead = "espeon_d"
/mob/living/simple_animal/pokemon/flaaffy
name = "flaaffy"
icon_state = "flaaffy"
icon_living = "flaaffy"
icon_dead = "flaaffy_d"
/mob/living/simple_animal/pokemon/eevee/flareon
name = "flareon"
desc = "Flareon's fluffy fur releases heat into the air so that its body does not get excessively hot. Its body temperature can rise to a maximum of 1,650 degrees F."
icon_state = "flareon"
icon_living = "flareon"
icon_dead = "flareon_d"
speak = list("Flare!", "Flareon!")
/mob/living/simple_animal/pokemon/eevee/glaceon
name = "glaceon"
desc = "By controlling its body heat, it can freeze the atmosphere around it to make a diamond-dust flurry."
icon_state = "glaceon"
icon_living = "glaceon"
icon_dead = "glaceon_d"
speak = list("Glace!", "Glaceon!")
/mob/living/simple_animal/pokemon/eevee/jolteon
name = "jolteon"
desc = "Its cells generate weak power that is amplified by its fur's static electricity to drop thunderbolts. The bristling fur is made of electrically charged needles."
icon_state = "jolteon"
icon_living = "jolteon"
icon_dead = "jolteon_d"
speak = list("Jolt!", "Jolteon!")
/mob/living/simple_animal/pokemon/larvitar
name = "larvitar"
desc = "It is born deep underground. It can't emerge until it has entirely consumed the soil around it."
icon_state = "larvitar"
icon_living = "larvitar"
icon_dead = "larvitar_d"
/mob/living/simple_animal/pokemon/mareep
name = "mareep"
icon_state = "mareep"
icon_living = "mareep"
icon_dead = "mareep_d"
/mob/living/simple_animal/pokemon/poochyena/mightyena
name = "mightyena"
icon_state = "mightyena"
icon_living = "mightyena"
icon_dead = "mightyena"
/mob/living/simple_animal/pokemon/miltank
name = "miltank"
icon_state = "miltank"
icon_living = "miltank"
icon_dead = "miltank_d"
/mob/living/simple_animal/pokemon/poochyena
name = "poochyena"
icon_state = "poochyena"
icon_living = "poochyena"
icon_dead = "poochyena_d"
/mob/living/simple_animal/pokemon/eevee/sylveon
name = "Sylveon"
desc = "Sylveon, the Intertwining Pokémon. Sylveon affectionately wraps its ribbon-like feelers around its Trainer's arm as they walk together."
icon_state = "sylveon"
icon_living = "sylveon"
icon_dead = "sylveon_d"
speak = list("Sylveon!", "Syl!")
response_help = "pets"
response_harm = "hits"
/mob/living/simple_animal/pokemon/eevee/umbreon
name = "umbreon"
icon_state = "umbreon"
icon_dead = "umbreon_d"
icon_living = "umbreon"
/mob/living/simple_animal/pokemon/vulpix
name = "vulpix"
icon_state = "vulpix"
icon_living = "vulpix"
icon_dead = "vulpix_d"
@@ -24,26 +24,32 @@
if (500 to 750)
for(var/turf/turf in range(1,T))
new /obj/effect/hotspot(turf)
volume*=1.1
if (751 to 1100)
for(var/turf/turf in range(2,T))
new /obj/effect/hotspot(turf)
volume*=1.2
if (1101 to 1500) //If you're crafty
for(var/turf/turf in range(3,T))
new /obj/effect/hotspot(turf)
volume*=1.3
if (1501 to 2500) //requested
for(var/turf/turf in range(4,T))
new /obj/effect/hotspot(turf)
volume*=1.4
if (2501 to 5000)
for(var/turf/turf in range(5,T))
new /obj/effect/hotspot(turf)
volume*=1.5
if (5001 to INFINITY)
for(var/turf/turf in range(6,T))
new /obj/effect/hotspot(turf)
volume*=1.6
message_admins("Fermi explosion at [T], with a temperature of [temp], pH of [pH], Impurity tot of [ImpureTot].")
@@ -66,7 +72,7 @@
if (pH > 10) //if alkaline, small explosion.
var/datum/effect_system/reagents_explosion/e = new()
e.set_up(round((volume/30)*(pH-9)), T, 0, 0)
e.set_up(round((volume/28)*(pH-9)), T, 0, 0)
e.start()
if(!ImpureTot == 0) //If impure, v.small emp (0.6 or less)
@@ -137,12 +143,16 @@
/datum/chemical_reaction/fermi/SDGF/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)//Spawns an angery teratoma!
var/turf/T = get_turf(my_atom)
var/mob/living/simple_animal/slime/S = new(T,"green")
S.damage_coeff = list(BRUTE = 0.9 , BURN = 2, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1)
S.name = "Living teratoma"
S.real_name = "Living teratoma"
S.rabid = 1//Make them an angery boi
S.color = "#810010"
var/amount_to_spawn = round((volume/100), 1)
if(amount_to_spawn <= 0)
amount_to_spawn = 1
for(var/i in 1 to amount_to_spawn)
var/mob/living/simple_animal/slime/S = new(T,"green")
S.damage_coeff = list(BRUTE = 0.9 , BURN = 2, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1)
S.name = "Living teratoma"
S.real_name = "Living teratoma"
S.rabid = 1//Make them an angery boi
S.color = "#810010"
my_atom.reagents.clear_reagents()
var/list/seen = viewers(8, get_turf(my_atom))
for(var/mob/M in seen)
@@ -353,11 +363,15 @@
PurityMin = 0.5
/datum/chemical_reaction/fermi/hatmium/FermiExplode(src, var/atom/my_atom, volume, temp, pH)
var/obj/item/clothing/head/hattip/hat = new /obj/item/clothing/head/hattip(get_turf(my_atom))
hat.animate_atom_living()
var/amount_to_spawn = round((volume/100), 1)
if(amount_to_spawn <= 0)
amount_to_spawn = 1
for(var/i in 1 to amount_to_spawn)
var/obj/item/clothing/head/hattip/hat = new /obj/item/clothing/head/hattip(get_turf(my_atom))
hat.animate_atom_living()
var/list/seen = viewers(8, get_turf(my_atom))
for(var/mob/M in seen)
to_chat(M, "<span class='warning'>The makes an off sounding pop, as a hat suddenly climbs out of the beaker!</b></span>")
to_chat(M, "<span class='warning'>The [my_atom] makes an off sounding pop, as a hat suddenly climbs out of it!</b></span>")
my_atom.reagents.clear_reagents()
/datum/chemical_reaction/fermi/furranium
@@ -1,36 +0,0 @@
/datum/techweb_node/bluespace_basic/New()
. = ..()
design_ids += "xenobio_monkeys"
/datum/techweb_node/practical_bluespace/New()
. = ..()
design_ids += "xenobio_slimebasic"
/datum/techweb_node/adv_bluespace/New()
. = ..()
design_ids += "xenobio_slimeadv"
/datum/techweb_node/ballistic_weapons/New()
. = ..()
design_ids += "mag_oldsmg_rubber"
/datum/techweb_node/computer_board_gaming
id = "computer_board_gaming"
display_name = "Games and Toys"
description = "For the slackers on the station."
prereq_ids = list("comptech")
design_ids = list("arcade_battle", "arcade_orion", "arcade_minesweeper", "slotmachine", "autoylathe")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000)
export_price = 5000
/datum/techweb_node/ballistic_weapons
design_ids = list("mag_oldsmg", "mag_oldsmg_ap", "mag_oldsmg_ic", "mag_oldsmg_tx")
/datum/techweb_node/advanced_illegl_ballistics
id = "advanced_illegal_ballistics"
display_name = "Advanced Illegal Ballistics"
description = "Advanced Ballistic for Illegal weaponds."
design_ids = list("10mm","10mmap","10mminc","10mmhp","pistolm9mm","m45","bolt_clip")
prereq_ids = list("ballistic_weapons","syndicate_basic","explosive_weapons")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 25000) //This gives sec lethal mags/clips for guns form traitors or space.
export_price = 7000
@@ -1,33 +0,0 @@
/datum/techweb_node/bluespace_basic/New()
. = ..()
design_ids += "xenobio_monkeys"
/datum/techweb_node/practical_bluespace/New()
. = ..()
design_ids += "xenobio_slimebasic"
/datum/techweb_node/adv_bluespace/New()
. = ..()
design_ids += "xenobio_slimeadv"
/datum/techweb_node/ballistic_weapons/New()
. = ..()
design_ids += "mag_oldsmg_rubber"
/datum/techweb_node/computer_board_gaming
id = "computer_board_gaming"
display_name = "Games and Toys"
description = "For the slackers on the station."
prereq_ids = list("comptech")
design_ids = list("arcade_battle", "arcade_orion", "slotmachine", "autoylathe")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000)
export_price = 5000
/datum/techweb_node/advanced_illegl_ballistics
id = "advanced_illegal_ballistics"
display_name = "Advanced Illegal Ballistics
description = "Advanced Ballistic for Illegal weaponds."
design_ids = list("10mm","10mmap","10mminc","10mmhp","9mm","point_45","bolt_clip")
prereq_ids = list("ballistic_weapons","syndicate_basic","explosive_weapons")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 25000) //This gives sec lethal mags/clips for guns form traitors or space.
export_price = 7000
Binary file not shown.

Before

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 182 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 182 B

+3
View File
@@ -2774,6 +2774,9 @@
#include "code\modules\surgery\advanced\viral_bonding.dm"
#include "code\modules\surgery\advanced\bioware\bioware.dm"
#include "code\modules\surgery\advanced\bioware\bioware_surgery.dm"
#include "code\modules\surgery\advanced\bioware\experimental_dissection.dm"
#include "code\modules\surgery\advanced\bioware\ligament_hook.dm"
#include "code\modules\surgery\advanced\bioware\ligament_reinforcement.dm"
#include "code\modules\surgery\advanced\bioware\nerve_grounding.dm"
#include "code\modules\surgery\advanced\bioware\nerve_splicing.dm"
#include "code\modules\surgery\advanced\bioware\vein_threading.dm"