Merge remote-tracking branch 'refs/remotes/Citadel-Station-13/master' into syntheticbloods

This commit is contained in:
Poojawa
2019-09-22 00:22:18 -05:00
117 changed files with 953 additions and 1471 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
FROM tgstation/byond:512.1467 as base
FROM tgstation/byond:512.1484 as base
FROM base as build_base
+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"
+7 -7
View File
@@ -116,7 +116,7 @@ SUBSYSTEM_DEF(job)
if(player.mind && job.title in player.mind.restricted_roles)
JobDebug("FOC incompatible with antagonist role, Player: [player]")
continue
if(player.client.prefs.job_preferences[job.title] == level)
if(player.client.prefs.job_preferences["[job.title]"] == level)
JobDebug("FOC pass, Player: [player], Level:[level]")
candidates += player
return candidates
@@ -182,7 +182,7 @@ SUBSYSTEM_DEF(job)
if((job.current_positions >= job.total_positions) && job.total_positions != -1)
continue
var/list/candidates = FindOccupationCandidates(job, level)
if(!candidates.len)
if(!candidates?.len)
continue
var/mob/dead/new_player/candidate = pick(candidates)
if(AssignRole(candidate, command_position))
@@ -200,7 +200,7 @@ SUBSYSTEM_DEF(job)
if((job.current_positions >= job.total_positions) && job.total_positions != -1)
continue
var/list/candidates = FindOccupationCandidates(job, level)
if(!candidates.len)
if(!candidates?.len)
continue
var/mob/dead/new_player/candidate = pick(candidates)
AssignRole(candidate, command_position)
@@ -246,7 +246,7 @@ SUBSYSTEM_DEF(job)
initial_players_to_assign = unassigned.len
JobDebug("DO, Len: [unassigned.len]")
JobDebug("DO, Len: [unassigned?.len]")
if(unassigned.len == 0)
return validate_required_jobs(required_jobs)
@@ -270,7 +270,7 @@ SUBSYSTEM_DEF(job)
JobDebug("DO, Running Overflow Check 1")
var/datum/job/overflow = GetJob(SSjob.overflow_role)
var/list/overflow_candidates = FindOccupationCandidates(overflow, JP_LOW)
JobDebug("AC1, Candidates: [overflow_candidates.len]")
JobDebug("AC1, Candidates: [overflow_candidates?.len]")
for(var/mob/dead/new_player/player in overflow_candidates)
JobDebug("AC1 pass, Player: [player]")
AssignRole(player, SSjob.overflow_role)
@@ -333,7 +333,7 @@ SUBSYSTEM_DEF(job)
continue
// If the player wants that job on this level, then try give it to him.
if(player.client.prefs.job_preferences[job.title] == level)
if(player.client.prefs.job_preferences["[job.title]"] == level)
// If the job isn't filled
if((job.current_positions < job.spawn_positions) || job.spawn_positions == -1)
JobDebug("DO pass, Player: [player], Level:[level], Job:[job.title]")
@@ -540,7 +540,7 @@ SUBSYSTEM_DEF(job)
if(job.required_playtime_remaining(player.client))
young++
continue
switch(player.client.prefs.job_preferences[job.title])
switch(player.client.prefs.job_preferences["[job.title]"])
if(JP_HIGH)
high++
if(JP_MEDIUM)
+1 -1
View File
@@ -61,7 +61,7 @@
teamsize = 1
opendoors = FALSE
enforce_human = FALSE
roles = /datum/antagonist/greybois
roles = list(/datum/antagonist/greybois)
leader_role = /datum/antagonist/greybois/greygod
rename_team = "Emergency Assistants"
polldesc = "an Emergency Assistant"
+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
+11 -8
View File
@@ -180,8 +180,13 @@
slot_flags = ITEM_SLOT_BELT
force = 12 //9 hit crit
w_class = WEIGHT_CLASS_NORMAL
var/cooldown = 0
var/cooldown = 13
var/on = TRUE
var/last_hit = 0
var/stun_stam_cost_coeff = 1.25
var/hardstun_ds = 1
var/softstun_ds = 0
var/stam_dmg = 30
/obj/item/melee/classic_baton/attack(mob/living/target, mob/living/user)
if(!on)
@@ -207,12 +212,10 @@
if(!isliving(target))
return
if (user.a_intent == INTENT_HARM)
if(!..())
return
if(!iscyborg(target))
if(!..() || !iscyborg(target))
return
else
if(cooldown <= world.time)
if(last_hit < world.time)
if(ishuman(target))
var/mob/living/carbon/human/H = target
if (H.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK))
@@ -220,7 +223,7 @@
if(check_martial_counter(H, user))
return
playsound(get_turf(src), 'sound/effects/woodhit.ogg', 75, 1, -1)
target.Knockdown(60)
target.Knockdown(softstun_ds, TRUE, FALSE, hardstun_ds, stam_dmg)
log_combat(user, target, "stunned", src)
src.add_fingerprint(user)
target.visible_message("<span class ='danger'>[user] has knocked down [target] with [src]!</span>", \
@@ -229,7 +232,7 @@
target.LAssailant = null
else
target.LAssailant = user
cooldown = world.time
last_hit = world.time + cooldown
user.adjustStaminaLossBuffered(getweight())//CIT CHANGE - makes swinging batons cost stamina
/obj/item/melee/classic_baton/telescopic
@@ -245,7 +248,7 @@
item_flags = NONE
force = 0
on = FALSE
total_mass = TOTAL_MASS_SMALL_ITEM
total_mass = TOTAL_MASS_NORMAL_ITEM
/obj/item/melee/classic_baton/telescopic/suicide_act(mob/user)
var/mob/living/carbon/human/H = user
+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)
+1 -1
View File
@@ -31,7 +31,7 @@
name = "brass crowbar"
desc = "A brass crowbar. It feels faintly warm to the touch."
resistance_flags = FIRE_PROOF | ACID_PROOF
icon_state = "crowbar_brass"
icon_state = "crowbar_clock"
toolspeed = 0.5
/obj/item/crowbar/bronze
+1 -1
View File
@@ -81,7 +81,7 @@
name = "brass screwdriver"
desc = "A screwdriver made of brass. The handle feels freezing cold."
resistance_flags = FIRE_PROOF | ACID_PROOF
icon_state = "screwdriver_brass"
icon_state = "screwdriver_clock"
item_state = "screwdriver_brass"
toolspeed = 0.5
random_color = FALSE
+1 -1
View File
@@ -360,7 +360,7 @@
name = "brass welding tool"
desc = "A brass welder that seems to constantly refuel itself. It is faintly warm to the touch."
resistance_flags = FIRE_PROOF | ACID_PROOF
icon_state = "brasswelder"
icon_state = "clockwelder"
item_state = "brasswelder"
/obj/item/weldingtool/bronze
+2 -2
View File
@@ -63,9 +63,9 @@
/obj/item/wirecutters/brass
name = "brass wirecutters"
desc = "A pair of wirecutters made of brass. The handle feels freezing cold to the touch."
desc = "A pair of eloquent wirecutters made of brass. The handle feels freezing cold to the touch."
resistance_flags = FIRE_PROOF | ACID_PROOF
icon_state = "cutters_brass"
icon_state = "cutters_clock"
random_color = FALSE
toolspeed = 0.5
+1 -1
View File
@@ -32,7 +32,7 @@
name = "brass wrench"
desc = "A brass wrench. It's faintly warm to the touch."
resistance_flags = FIRE_PROOF | ACID_PROOF
icon_state = "wrench_brass"
icon_state = "wrench_clock"
toolspeed = 0.5
/obj/item/wrench/bronze
+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
+7 -7
View File
@@ -1039,7 +1039,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/available_in_days = job.available_in_days(user.client)
HTML += "<font color=red>[rank]</font></td><td><font color=red> \[IN [(available_in_days)] DAYS\]</font></td></tr>"
continue
if((job_preferences[SSjob.overflow_role] == JP_LOW) && (rank != SSjob.overflow_role) && !jobban_isbanned(user, SSjob.overflow_role))
if((job_preferences["[SSjob.overflow_role]"] == JP_LOW) && (rank != SSjob.overflow_role) && !jobban_isbanned(user, SSjob.overflow_role))
HTML += "<font color=orange>[rank]</font></td><td></td></tr>"
continue
if((rank in GLOB.command_positions) || (rank == "AI"))//Bold head jobs
@@ -1054,7 +1054,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/prefUpperLevel = -1 // level to assign on left click
var/prefLowerLevel = -1 // level to assign on right click
switch(job_preferences[job.title])
switch(job_preferences["[job.title]"])
if(JP_HIGH)
prefLevelLabel = "High"
prefLevelColor = "slateblue"
@@ -1079,7 +1079,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
HTML += "<a class='white' href='?_src_=prefs;preference=job;task=setJobLevel;level=[prefUpperLevel];text=[rank]' oncontextmenu='javascript:return setJobPrefRedirect([prefLowerLevel], \"[rank]\");'>"
if(rank == SSjob.overflow_role)//Overflow is special
if(job_preferences[SSjob.overflow_role] == JP_LOW)
if(job_preferences["[SSjob.overflow_role]"] == JP_LOW)
HTML += "<font color=green>Yes</font>"
else
HTML += "<font color=red>No</font>"
@@ -1115,11 +1115,11 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if (level == JP_HIGH) // to high
//Set all other high to medium
for(var/j in job_preferences)
if(job_preferences[j] == JP_HIGH)
job_preferences[j] = JP_MEDIUM
if(job_preferences["[j]"] == JP_HIGH)
job_preferences["[j]"] = JP_MEDIUM
//technically break here
job_preferences[job.title] = level
job_preferences["[job.title]"] = level
return TRUE
/datum/preferences/proc/UpdateJobPreference(mob/user, role, desiredLvl)
@@ -1147,7 +1147,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
jpval = JP_HIGH
if(role == SSjob.overflow_role)
if(job_preferences[job.title] == JP_LOW)
if(job_preferences["[job.title]"] == JP_LOW)
jpval = null
else
jpval = JP_LOW
+12 -8
View File
@@ -5,7 +5,7 @@
// You do not need to raise this if you are adding new values that have sane defaults.
// Only raise this value when changing the meaning/format/name/layout of an existing value
// where you would want the updater procs below to run
#define SAVEFILE_VERSION_MAX 22
#define SAVEFILE_VERSION_MAX 23
/*
SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn
@@ -49,8 +49,12 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
pda_style = "mono"
if(current_version < 20)
pda_color = "#808000"
if(current_version < 21)
if((current_version < 21) && features["meat_type"] && (features["meat_type"] == null))
features["meat_type"] = "Mammalian"
if(current_version < 22)
job_preferences = list() //It loaded null from nonexistant savefile field.
var/job_civilian_high = 0
var/job_civilian_med = 0
var/job_civilian_low = 0
@@ -101,9 +105,9 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
else if(job_engsec_low & fval)
new_value = JP_LOW
if(new_value)
job_preferences[initial(J.title)] = new_value
if((current_version < 22) && features["meat_type"] && (features["meat_type"] == null))
features["meat_type"] = "Mammalian"
job_preferences["[initial(J.title)]"] = new_value
else if(current_version < 23) // we are fixing a gamebreaking bug.
job_preferences = list() //It loaded null from nonexistant savefile field.
/datum/preferences/proc/load_path(ckey,filename="preferences.sav")
if(!ckey)
@@ -457,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)
@@ -485,7 +489,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
joblessrole = sanitize_integer(joblessrole, 1, 3, initial(joblessrole))
//Validate job prefs
for(var/j in job_preferences)
if(job_preferences[j] != JP_LOW && job_preferences[j] != JP_MEDIUM && job_preferences[j] != JP_HIGH)
if(job_preferences["[j]"] != JP_LOW && job_preferences["[j]"] != JP_MEDIUM && job_preferences["[j]"] != JP_HIGH)
job_preferences -= j
all_quirks = SANITIZE_LIST(all_quirks)
@@ -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
@@ -381,6 +381,33 @@
id = "neurotoxin"
results = list("neurotoxin" = 2)
required_reagents = list("gargleblaster" = 1, "morphine" = 1)
//FermiChem vars: Easy to make, but hard to make potent
OptimalTempMin = 200 // Lower area of bell curve for determining heat based rate reactions
OptimalTempMax = 950 // Upper end for above
ExplodeTemp = 999 //Temperature at which reaction explodes
OptimalpHMin = 4.6 // Lowest value of pH determining pH a 1 value for pH based rate reactions (Plateu phase)
OptimalpHMax = 5.2 // Higest value for above
ReactpHLim = 5 // How far out pH wil react, giving impurity place (Exponential phase)
CatalystFact = 0 // How much the catalyst affects the reaction (0 = no catalyst)
CurveSharpT = 2 // How sharp the temperature exponential curve is (to the power of value)
CurveSharppH = 4 // How sharp the pH exponential curve is (to the power of value)
ThermicConstant = 10 //Temperature change per 1u produced
HIonRelease = 0.02 //pH change per 1u reaction
RateUpLim = 5 //Optimal/max rate possible if all conditions are perfect
FermiChem = TRUE//If the chemical uses the Fermichem reaction mechanics
FermiExplode = FALSE //If the chemical explodes in a special way
PurityMin = 0 //The minimum purity something has to be above, otherwise it explodes.
/datum/chemical_reaction/neurotoxin/FermiFinish(datum/reagents/holder, var/atom/my_atom)
var/datum/reagent/consumable/ethanol/neurotoxin/Nt = locate(/datum/reagent/consumable/ethanol/neurotoxin) in my_atom.reagents.reagent_list
var/cached_volume = Nt.volume
if(Nt.purity < 0.5)
holder.remove_reagent(src.id, cached_volume)
holder.add_reagent("neuroweak", cached_volume)
/datum/chemical_reaction/neurotoxin/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)//reduced size
volume = volume/10
..()
/datum/chemical_reaction/snowwhite
name = "Snow White"
@@ -807,4 +834,4 @@
id = "commander_and_chief"
results = list("commander_and_chief" = 50)
required_reagents = list("alliescocktail" = 50, "champagne" = 20, "doctorsdelight" = 10, "quintuple_sec" = 10, "screwdrivercocktail" = 10)
mix_message = "When your powers combine, I am Captain Pl-..."
mix_message = "When your powers combine, I am Captain Pl-..."
@@ -28,9 +28,9 @@
var/datum/job/previewJob
var/highest_pref = 0
for(var/job in job_preferences)
if(job_preferences[job] > highest_pref)
if(job_preferences["[job]"] > highest_pref)
previewJob = SSjob.GetJob(job)
highest_pref = job_preferences[job]
highest_pref = job_preferences["[job]"]
if(previewJob)
// Silicons only need a very basic preview since there is no customization for them.
@@ -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")
@@ -1351,10 +1351,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)
@@ -193,7 +193,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) //
@@ -397,9 +397,9 @@
state = "Gas"
var/const/P = 3 //The number of seconds between life ticks
var/T = initial(R.metabolization_rate) * (60 / P)
if(istype(R, /datum/reagent/fermi))
var/datum/chemical_reaction/Rcr = get_chemical_reaction(R.id)
if(Rcr && Rcr.FermiChem)
fermianalyze = TRUE
var/datum/chemical_reaction/Rcr = get_chemical_reaction(R.id)
var/pHpeakCache = (Rcr.OptimalpHMin + Rcr.OptimalpHMax)/2
var/datum/reagent/targetReagent = beaker.reagents.has_reagent("[R.id]")
+52 -5
View File
@@ -33,18 +33,20 @@
var/addiction_stage4_end = 40
var/overdosed = 0 // You fucked up and this is now triggering its overdose effects, purge that shit quick.
var/self_consuming = FALSE
var/metabolizing = FALSE
var/invisible = FALSE //Set to true if it doesn't appear on handheld health analyzers.
//Fermichem vars:
var/purity = 1 //How pure a chemical is from 0 - 1.
var/addProc = FALSE //If the chemical should force an on_new() call
var/turf/loc = null //Should be the creation location!
var/turf/loc = null //Should be the creation location!
var/pH = 7 //pH of the specific reagent, used for calculating the sum pH of a holder.
var/SplitChem = FALSE //If the chem splits on metabolism
var/ImpureChem = "fermiTox"// What chemical is metabolised with an inpure reaction
var/InverseChemVal = 0.25 // If the impurity is below 0.5, replace ALL of the chem with InverseChem upon metabolising
var/InverseChem = "fermiTox"// What chem is metabolised when purity is below InverseChemVal, this shouldn't be made, but if it does, well, I guess I'll know about it.
var/DoNotSplit = FALSE // If impurity is handled within the main chem itself
var/OnMobMergeCheck = FALSE //Call on_mob_life proc when reagents are merging.
var/metabolizing = FALSE
var/invisible = FALSE //Set to true if it doesn't appear on handheld health analyzers.
/datum/reagent/Destroy() // This should only be called by the holder, so it's already handled clearing its references
. = ..()
@@ -74,7 +76,27 @@
return
// Called when this reagent is first added to a mob
/datum/reagent/proc/on_mob_add(mob/living/L)
/datum/reagent/proc/on_mob_add(mob/living/L, amount)
if(SplitChem)
var/mob/living/carbon/M = L
if(!M)
return
if(purity < 0)
CRASH("Purity below 0 for chem: [id], Please let Fermis Know!")
if (purity == 1 || DoNotSplit == TRUE)
log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume]u of [id]")
return
else if (InverseChemVal > purity)//Turns all of a added reagent into the inverse chem
M.reagents.remove_reagent(id, amount, FALSE)
M.reagents.add_reagent(InverseChem, amount, FALSE, other_purity = 1)
log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume]u of [InverseChem]")
return
else
var/impureVol = amount * (1 - purity) //turns impure ratio into impure chem
M.reagents.remove_reagent(id, (impureVol), FALSE)
M.reagents.add_reagent(ImpureChem, impureVol, FALSE, other_purity = 1)
log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume - impureVol]u of [id]")
log_game("FERMICHEM: [M] ckey: [M.key] has ingested [volume]u of [ImpureChem]")
return
// Called when this reagent is removed while inside a mob
@@ -97,7 +119,32 @@
return
// Called when two reagents of the same are mixing.
/datum/reagent/proc/on_merge(data)
/datum/reagent/proc/on_merge(data, amount, mob/living/carbon/M, purity)
if(SplitChem)
if(!ishuman(M))
return
if (purity < 0)
CRASH("Purity below 0 for chem: [id], Please let Fermis Know!")
if (purity == 1 || DoNotSplit == TRUE)
log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume]u of [id] in themselves")
return
else if (InverseChemVal > purity)
M.reagents.remove_reagent(id, amount, FALSE)
M.reagents.add_reagent(InverseChem, amount, FALSE, other_purity = 1)
for(var/datum/reagent/fermi/R in M.reagents.reagent_list)
if(R.name == "")
R.name = name//Negative effects are hidden
log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume]u of [InverseChem]")
return
else
var/impureVol = amount * (1 - purity)
M.reagents.remove_reagent(id, impureVol, FALSE)
M.reagents.add_reagent(ImpureChem, impureVol, FALSE, other_purity = 1)
for(var/datum/reagent/fermi/R in M.reagents.reagent_list)
if(R.name == "")
R.name = name//Negative effects are hidden
log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume - impureVol]u of [id]")
log_game("FERMICHEM: [M] ckey: [M.key] has merged [volume]u of [ImpureChem]")
return
/datum/reagent/proc/on_update(atom/A)
@@ -1373,6 +1373,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/neurotoxin
name = "Neurotoxin"
id = "neurotoxin"
description = "A strong neurotoxin that puts the subject into a death-like state."
color = "#2E2E61" // rgb: 46, 46, 97
boozepwr = 50
@@ -1382,6 +1383,10 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "neurotoxinglass"
glass_name = "Neurotoxin"
glass_desc = "A drink that is guaranteed to knock you silly."
SplitChem = TRUE
ImpureChem = "neuroweak"
InverseChemVal = 0 //Clear conversion
InverseChem = "neuroweak"
/datum/reagent/consumable/ethanol/neurotoxin/proc/pickt()
return (pick(TRAIT_PARALYSIS_L_ARM,TRAIT_PARALYSIS_R_ARM,TRAIT_PARALYSIS_R_LEG,TRAIT_PARALYSIS_L_LEG))
@@ -1390,12 +1395,12 @@ All effects don't start immediately, but rather get worse over time; the rate is
M.set_drugginess(50)
M.dizziness +=2
M.adjustBrainLoss(1*REM, 150)
if(prob(20))
if(prob(20) && !holder.has_reagent("neuroweak"))
M.adjustStaminaLoss(10)
M.drop_all_held_items()
to_chat(M, "<span class='notice'>You cant feel your hands!</span>")
if(current_cycle > 5)
if(prob(20))
if(prob(20) && !holder.has_reagent("neuroweak"))
var/t = pickt()
ADD_TRAIT(M, t, type)
M.adjustStaminaLoss(10)
@@ -1417,6 +1422,25 @@ All effects don't start immediately, but rather get worse over time; the rate is
M.adjustStaminaLoss(10)
..()
/datum/reagent/consumable/ethanol/neuroweak
name = "Neuro-Smash"
id = "neuroweak"
description = "A mostly safe alcoholic drink for the true daredevils. Counteracts Neurotoxins."
boozepwr = 60
pH = 8
/datum/reagent/consumable/ethanol/neuroweak/on_mob_life(mob/living/carbon/M)
if(holder.has_reagent("neurotoxin"))
M.adjustBrainLoss(-1*REM, 150)
M.reagents.remove_reagent("neurotoxin", 1.5 * REAGENTS_METABOLISM, FALSE)
if(holder.has_reagent("fentanyl"))
M.adjustBrainLoss(-1*REM, 150)
M.reagents.remove_reagent("fentanyl", 0.75 * REAGENTS_METABOLISM, FALSE)
else
M.adjustBrainLoss(-0.5*REM, 150)
M.dizziness +=2
..()
/datum/reagent/consumable/ethanol/hippies_delight
name = "Hippie's Delight"
id = "hippiesdelight"
@@ -2133,7 +2157,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_icon_state = "commander_and_chief"
glass_name = "Commander and Chief"
glass_desc = "The gems of this majestic chalice represent the departments and their Heads."
/datum/reagent/consumable/ethanol/commander_and_chief/on_mob_life(mob/living/carbon/M)
if(M.mind && HAS_TRAIT(M.mind, TRAIT_CAPTAIN_METABOLISM))
M.heal_bodypart_damage(2,2,2)
@@ -13,6 +13,7 @@
glass_icon_state = "glass_orange"
glass_name = "glass of orange juice"
glass_desc = "Vitamins! Yay!"
pH = 3.3
/datum/reagent/consumable/orangejuice/on_mob_life(mob/living/carbon/M)
if(M.getOxyLoss() && prob(30))
@@ -45,6 +46,7 @@
glass_icon_state = "glass_green"
glass_name = "glass of lime juice"
glass_desc = "A glass of sweet-sour lime juice."
pH = 2.2
/datum/reagent/consumable/limejuice/on_mob_life(mob/living/carbon/M)
if(M.getToxLoss() && prob(20))
@@ -125,6 +127,7 @@
glass_icon_state = "lemonglass"
glass_name = "glass of lemon juice"
glass_desc = "Sour..."
pH = 2
/datum/reagent/consumable/banana
name = "Banana Juice"
@@ -103,3 +103,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: "Fermis"
delete-after: True
changes:
- tweak: "tweaked Neurotoxin"
- balance: "added more depth to Neurotoxin"
- bugfix: "fixed the inability to create Neurotoxin"
@@ -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:
- imageadd: "redid brass tools to look better*"
@@ -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,4 @@
author: "Ghommie"
delete-after: True
changes:
- balance: "Slowed down police baton and tele baton speed by 75%, should be still be faster than the legacy speed (2 seconds) by 0.6 seconds. Telescopic batons' stamina cost per swing is now on par with police batons, ergo more expensive."
@@ -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: "deathride58"
delete-after: True
changes:
- bugfix: "Things that access job_preferences now explicitly access keys, which means it no longer attempts to access invalid indices and runtimes as a result."
@@ -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: 4.7 KiB

After

Width:  |  Height:  |  Size: 5.3 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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 25 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,57 +0,0 @@
/obj/item/melee/classic_baton
var/last_hit = 0
var/stun_stam_cost_coeff = 1.25
var/hardstun_ds = 1
var/softstun_ds = 0
var/stam_dmg = 30
cooldown = 0
total_mass = 3.75
/obj/item/melee/classic_baton/attack(mob/living/target, mob/living/user)
if(!on)
return ..()
if(user.getStaminaLoss() >= STAMINA_SOFTCRIT)//CIT CHANGE - makes batons unusuable in stamina softcrit
to_chat(user, "<span class='warning'>You're too exhausted for that.</span>")//CIT CHANGE - ditto
return //CIT CHANGE - ditto
add_fingerprint(user)
if((HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50))
to_chat(user, "<span class ='danger'>You club yourself over the head.</span>")
user.Knockdown(60 * force)
if(ishuman(user))
var/mob/living/carbon/human/H = user
H.apply_damage(2*force, BRUTE, BODY_ZONE_HEAD)
else
user.take_bodypart_damage(2*force)
return
if(iscyborg(target))
..()
return
if(!isliving(target))
return
if (user.a_intent == INTENT_HARM)
if(!..())
return
if(!iscyborg(target))
return
else
if(last_hit + cooldown < world.time)
if(ishuman(target))
var/mob/living/carbon/human/H = target
if (H.check_shields(src, 0, "[user]'s [name]", MELEE_ATTACK))
return
if(check_martial_counter(H, user))
return
playsound(get_turf(src), 'sound/effects/woodhit.ogg', 75, 1, -1)
target.Knockdown(softstun_ds, TRUE, FALSE, hardstun_ds, stam_dmg)
log_combat(user, target, "stunned", src)
src.add_fingerprint(user)
target.visible_message("<span class ='danger'>[user] has knocked down [target] with [src]!</span>", \
"<span class ='userdanger'>[user] has knocked down [target] with [src]!</span>")
if(!iscarbon(user))
target.LAssailant = null
else
target.LAssailant = user
last_hit = world.time
user.adjustStaminaLossBuffered(getweight())//CIT CHANGE - makes swinging batons cost stamina
@@ -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

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