diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_smoking_room.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_smoking_room.dmm index faa5cf18ae978..fd292ec768512 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_surface_smoking_room.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_surface_smoking_room.dmm @@ -6,7 +6,7 @@ /obj/item/circuitboard/machine/space_heater, /obj/item/stack/cable_coil/five, /obj/structure/frame/machine, -/obj/item/stock_parts/cell/super, +/obj/item/stock_parts/power_store/cell/super, /turf/open/floor/wood, /area/ruin/smoking_room/house) "d" = ( diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_plasma_facility.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_plasma_facility.dmm index f344652d623b4..96dec4af7207d 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_plasma_facility.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_plasma_facility.dmm @@ -89,7 +89,7 @@ }, /obj/effect/decal/cleanable/dirt, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell, +/obj/item/stock_parts/power_store/cell, /turf/open/floor/plating, /area/ruin/plasma_facility/operations) "bv" = ( @@ -166,7 +166,7 @@ pixel_x = -7; pixel_y = 8 }, -/obj/item/stock_parts/cell/high{ +/obj/item/stock_parts/power_store/cell/high{ pixel_x = -18; pixel_y = -3 }, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm index fb738781bc752..09405b243349c 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm @@ -2006,7 +2006,7 @@ }, /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/structure/cable, /turf/open/floor/mineral/plastitanium, /area/ruin/syndicate_lava_base/cargo) @@ -2081,7 +2081,7 @@ /obj/machinery/firealarm/directional/west, /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, diff --git a/_maps/RandomRuins/SpaceRuins/abandonedteleporter.dmm b/_maps/RandomRuins/SpaceRuins/abandonedteleporter.dmm index 0f5ffbcb72c71..51fea0a9517c1 100644 --- a/_maps/RandomRuins/SpaceRuins/abandonedteleporter.dmm +++ b/_maps/RandomRuins/SpaceRuins/abandonedteleporter.dmm @@ -48,7 +48,7 @@ /turf/open/floor/plating/airless, /area/ruin/space/abandoned_tele) "l" = ( -/obj/item/stock_parts/cell, +/obj/item/stock_parts/power_store/cell, /turf/open/floor/plating/airless, /area/ruin/space/abandoned_tele) "m" = ( diff --git a/_maps/RandomRuins/SpaceRuins/allamericandiner.dmm b/_maps/RandomRuins/SpaceRuins/allamericandiner.dmm index f7dc2f52fe328..32329cf4a5cfd 100644 --- a/_maps/RandomRuins/SpaceRuins/allamericandiner.dmm +++ b/_maps/RandomRuins/SpaceRuins/allamericandiner.dmm @@ -513,7 +513,7 @@ "yE" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/machinery/power/terminal{ dir = 4 }, diff --git a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm index 12c40f0b280db..4bdf2af01f19d 100644 --- a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm +++ b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm @@ -132,8 +132,8 @@ "aI" = ( /obj/structure/closet/crate/engineering/electrical, /obj/item/storage/toolbox/electrical, -/obj/item/stock_parts/cell/hyper, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/hyper, +/obj/item/stock_parts/power_store/cell/high, /turf/open/floor/mineral/titanium/yellow, /area/ruin/space/has_grav/derelictoutpost/dockedship) "aJ" = ( @@ -207,7 +207,7 @@ "aW" = ( /obj/structure/closet/crate/engineering/electrical, /obj/item/storage/toolbox/electrical, -/obj/item/stock_parts/cell/hyper, +/obj/item/stock_parts/power_store/cell/hyper, /turf/open/floor/mineral/titanium/yellow, /area/ruin/space/has_grav/derelictoutpost/dockedship) "aX" = ( @@ -233,7 +233,7 @@ /area/ruin/space/has_grav/derelictoutpost/powerstorage) "bc" = ( /obj/structure/table, -/obj/item/stock_parts/cell/hyper, +/obj/item/stock_parts/power_store/cell/hyper, /obj/structure/cable, /turf/open/floor/iron, /area/ruin/space/has_grav/derelictoutpost/powerstorage) diff --git a/_maps/RandomRuins/SpaceRuins/crashedship.dmm b/_maps/RandomRuins/SpaceRuins/crashedship.dmm index 803e0afa28cd3..60e8714e865ae 100644 --- a/_maps/RandomRuins/SpaceRuins/crashedship.dmm +++ b/_maps/RandomRuins/SpaceRuins/crashedship.dmm @@ -1316,7 +1316,7 @@ dir = 1 }, /obj/structure/table, -/obj/item/stock_parts/cell/lead, +/obj/item/stock_parts/power_store/cell/lead, /turf/open/floor/iron/airless, /area/ruin/space/has_grav/crashedship/aft) "XW" = ( diff --git a/_maps/RandomRuins/SpaceRuins/cyborg_mothership.dmm b/_maps/RandomRuins/SpaceRuins/cyborg_mothership.dmm index 7e6927290bc23..f72cdd8ecad43 100644 --- a/_maps/RandomRuins/SpaceRuins/cyborg_mothership.dmm +++ b/_maps/RandomRuins/SpaceRuins/cyborg_mothership.dmm @@ -62,7 +62,7 @@ /turf/template_noop, /area/space) "s" = ( -/obj/item/stock_parts/cell/high/empty, +/obj/item/stock_parts/power_store/cell/high/empty, /turf/open/misc/asteroid/airless, /area/space) "u" = ( diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm index 8aa85a7e1534d..65c448e94c426 100644 --- a/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm +++ b/_maps/RandomRuins/SpaceRuins/garbagetruck1.dmm @@ -754,7 +754,7 @@ "Fz" = ( /obj/structure/table/reinforced, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/lead, +/obj/item/stock_parts/power_store/cell/lead, /turf/open/floor/iron/smooth, /area/ruin/space/has_grav/garbagetruck/foodwaste) "FL" = ( @@ -1070,7 +1070,6 @@ }, /obj/machinery/light/warm, /obj/machinery/power/apc{ - cell_type = /obj/item/stock_parts/cell/lead; locked = 0; pixel_y = -25; start_charge = 0 diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm index 9813823daeb17..c394d14f977db 100644 --- a/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm +++ b/_maps/RandomRuins/SpaceRuins/garbagetruck2.dmm @@ -238,7 +238,7 @@ "vf" = ( /obj/structure/table/reinforced, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/lead, +/obj/item/stock_parts/power_store/cell/lead, /turf/open/floor/iron/smooth, /area/ruin/space/has_grav/garbagetruck/medicalwaste) "vM" = ( @@ -537,7 +537,6 @@ }, /obj/machinery/light/warm, /obj/machinery/power/apc{ - cell_type = /obj/item/stock_parts/cell/lead; locked = 0; pixel_y = -25; start_charge = 0 diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck3.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck3.dmm index c2da1e7646cb0..0f2f425fe6293 100644 --- a/_maps/RandomRuins/SpaceRuins/garbagetruck3.dmm +++ b/_maps/RandomRuins/SpaceRuins/garbagetruck3.dmm @@ -187,7 +187,7 @@ /area/ruin/space/has_grav/garbagetruck/squat) "kb" = ( /obj/effect/decal/cleanable/fuel_pool, -/obj/item/stock_parts/cell/crap/empty, +/obj/item/stock_parts/power_store/cell/crap/empty, /obj/effect/decal/cleanable/plastic, /obj/effect/spawner/random/maintenance/two, /turf/open/floor/plating/dumpsterair, @@ -447,7 +447,7 @@ /obj/structure/broken_flooring/pile, /obj/item/food/deadmouse/moldy, /obj/item/stock_parts/water_recycler, -/obj/item/stock_parts/cell/lead, +/obj/item/stock_parts/power_store/cell/lead, /turf/open/floor/plating/dumpsterair, /area/ruin/space/has_grav/garbagetruck/squat) "vW" = ( @@ -470,7 +470,6 @@ }, /obj/machinery/light/warm, /obj/machinery/power/apc{ - cell_type = /obj/item/stock_parts/cell/lead; locked = 0; pixel_y = -25; start_charge = 0 @@ -669,7 +668,7 @@ "HN" = ( /obj/structure/table/reinforced, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/lead, +/obj/item/stock_parts/power_store/cell/lead, /turf/open/floor/iron/smooth, /area/ruin/space/has_grav/garbagetruck/squat) "HZ" = ( @@ -755,7 +754,7 @@ /turf/open/space/basic, /area/ruin/space/has_grav/garbagetruck/squat) "MQ" = ( -/obj/item/stock_parts/cell/crap/empty{ +/obj/item/stock_parts/power_store/cell/crap/empty{ pixel_x = -4; pixel_y = 10 }, diff --git a/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm b/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm index 33c5893bcee4c..84ec36e943af9 100644 --- a/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm +++ b/_maps/RandomRuins/SpaceRuins/garbagetruck4.dmm @@ -653,7 +653,6 @@ }, /obj/machinery/light/warm, /obj/machinery/power/apc{ - cell_type = /obj/item/stock_parts/cell/lead; locked = 0; pixel_y = -25; start_charge = 0 @@ -672,7 +671,7 @@ "Mp" = ( /obj/structure/table/reinforced, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/lead, +/obj/item/stock_parts/power_store/cell/lead, /turf/open/floor/iron/smooth, /area/ruin/space/has_grav/garbagetruck/toystore) "MK" = ( @@ -758,7 +757,7 @@ /area/ruin/space/has_grav/garbagetruck/toystore) "Rl" = ( /obj/item/paper/crumpled, -/obj/item/stock_parts/cell/hyper, +/obj/item/stock_parts/power_store/cell/hyper, /obj/item/hand_labeler, /obj/item/hand_labeler_refill, /obj/item/hand_labeler_refill, diff --git a/_maps/RandomRuins/SpaceRuins/hilbertresearchfacility.dmm b/_maps/RandomRuins/SpaceRuins/hilbertresearchfacility.dmm index bdd59fa786bb9..01ef1895a66b9 100644 --- a/_maps/RandomRuins/SpaceRuins/hilbertresearchfacility.dmm +++ b/_maps/RandomRuins/SpaceRuins/hilbertresearchfacility.dmm @@ -1953,7 +1953,7 @@ /area/ruin/space/has_grav/powered/hilbertresearchfacility) "Sn" = ( /obj/structure/table/wood, -/obj/item/stock_parts/cell/bluespace{ +/obj/item/stock_parts/power_store/cell/bluespace{ pixel_y = 4 }, /obj/machinery/cell_charger{ diff --git a/_maps/RandomRuins/SpaceRuins/listeningstation.dmm b/_maps/RandomRuins/SpaceRuins/listeningstation.dmm index ad27c03ab9ad9..c1188e9866360 100644 --- a/_maps/RandomRuins/SpaceRuins/listeningstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/listeningstation.dmm @@ -919,7 +919,7 @@ "WD" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/item/stack/cable_coil{ pixel_x = 3; pixel_y = 10 @@ -969,7 +969,7 @@ /obj/item/stack/sheet/mineral/plasma{ amount = 30 }, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/machinery/light/small/directional/east, /obj/structure/closet/crate, /obj/effect/turf_decal/delivery, diff --git a/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm b/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm index 4cd81c550dd77..fbdc62bae7a9a 100644 --- a/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm @@ -49,7 +49,7 @@ /turf/open/floor/plating/airless, /area/ruin/space/tcommsat_oldaisat) "am" = ( -/obj/item/stock_parts/cell, +/obj/item/stock_parts/power_store/cell, /turf/open/floor/plating/airless, /area/ruin/space/tcommsat_oldaisat) "an" = ( diff --git a/_maps/RandomRuins/SpaceRuins/old_infiltrator.dmm b/_maps/RandomRuins/SpaceRuins/old_infiltrator.dmm index afa11afbc9aa3..4b42f668c3377 100644 --- a/_maps/RandomRuins/SpaceRuins/old_infiltrator.dmm +++ b/_maps/RandomRuins/SpaceRuins/old_infiltrator.dmm @@ -676,11 +676,11 @@ "Ux" = ( /obj/structure/extinguisher_cabinet/directional/west, /obj/structure/table, -/obj/item/stock_parts/cell/high/empty{ +/obj/item/stock_parts/power_store/cell/high/empty{ pixel_y = 4; pixel_x = 5 }, -/obj/item/stock_parts/cell/emproof/empty, +/obj/item/stock_parts/power_store/cell/emproof/empty, /turf/open/floor/mineral/plastitanium/red/airless, /area/ruin/space/unpowered) "UN" = ( diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm index 60088fb274daf..6062a970205c6 100644 --- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm @@ -1598,13 +1598,13 @@ /obj/structure/rack, /obj/effect/decal/cleanable/dirt, /obj/item/crowbar, -/obj/item/stock_parts/cell/high, /obj/machinery/door/window/right/directional/north{ req_access = list("away_general") }, /obj/item/paper/fluff/ruins/oldstation/apc_note, /obj/effect/turf_decal/tile/yellow/anticorner/contrasted, /obj/item/card/id/away/old/equipment, +/obj/item/stock_parts/power_store/battery/high, /turf/open/floor/iron, /area/ruin/space/ancientstation/charlie/engie) "hh" = ( @@ -5061,7 +5061,7 @@ pixel_x = -3; pixel_y = 5 }, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, @@ -6079,11 +6079,11 @@ "IU" = ( /obj/structure/closet/crate/engineering, /obj/item/circuitboard/machine/smes, -/obj/item/stock_parts/cell/high/empty, -/obj/item/stock_parts/cell/high/empty, -/obj/item/stock_parts/cell/high/empty, -/obj/item/stock_parts/cell/high/empty, -/obj/item/stock_parts/cell/high/empty, +/obj/item/stock_parts/power_store/cell/high/empty, +/obj/item/stock_parts/power_store/cell/high/empty, +/obj/item/stock_parts/power_store/cell/high/empty, +/obj/item/stock_parts/power_store/cell/high/empty, +/obj/item/stock_parts/power_store/cell/high/empty, /obj/item/stock_parts/capacitor, /obj/effect/decal/cleanable/dirt, /obj/item/circuitboard/machine/thermomachine, diff --git a/_maps/RandomRuins/SpaceRuins/oldteleporter.dmm b/_maps/RandomRuins/SpaceRuins/oldteleporter.dmm index fc856f6858d23..f1b71baa31478 100644 --- a/_maps/RandomRuins/SpaceRuins/oldteleporter.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldteleporter.dmm @@ -44,7 +44,7 @@ /area/ruin/space/oldteleporter) "l" = ( /obj/structure/table, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /turf/open/floor/iron/airless, /area/ruin/space/oldteleporter) "n" = ( diff --git a/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm b/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm index 45eee5cbe8b46..58bad24369050 100644 --- a/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm +++ b/_maps/RandomRuins/SpaceRuins/russian_derelict.dmm @@ -300,7 +300,7 @@ /obj/structure/rack, /obj/item/stack/cable_coil/five, /obj/item/screwdriver, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /turf/open/floor/iron, /area/ruin/space/ks13/engineering/sb_bow_solars_control) "dx" = ( @@ -898,7 +898,7 @@ /area/ruin/space/ks13/service/chapel) "lW" = ( /obj/structure/rack, -/obj/item/stock_parts/cell/lead, +/obj/item/stock_parts/power_store/cell/lead, /obj/effect/mapping_helpers/broken_floor, /obj/machinery/power/apc/auto_name/directional/south, /obj/effect/mapping_helpers/apc/no_charge, @@ -3880,23 +3880,23 @@ /area/ruin/space/ks13/ai/corridor) "DL" = ( /obj/structure/table, -/obj/item/stock_parts/cell/high{ +/obj/item/stock_parts/power_store/cell/high{ pixel_x = 7; pixel_y = 7 }, -/obj/item/stock_parts/cell/high{ +/obj/item/stock_parts/power_store/cell/high{ pixel_x = 7; pixel_y = 4 }, -/obj/item/stock_parts/cell/high{ +/obj/item/stock_parts/power_store/cell/high{ pixel_x = 7; pixel_y = 1 }, -/obj/item/stock_parts/cell/high{ +/obj/item/stock_parts/power_store/cell/high{ pixel_x = -7; pixel_y = 7 }, -/obj/item/stock_parts/cell/high{ +/obj/item/stock_parts/power_store/cell/high{ pixel_x = -7; pixel_y = 4 }, @@ -5546,7 +5546,7 @@ /area/ruin/space/ks13/security/sec) "MM" = ( /obj/structure/table, -/obj/item/stock_parts/cell, +/obj/item/stock_parts/power_store/cell, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/airless, /area/ruin/space/ks13/dorms) @@ -6410,7 +6410,7 @@ pixel_x = -7; pixel_y = 9 }, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/airless, /area/ruin/space/ks13/engineering/tech_storage) @@ -6745,15 +6745,15 @@ /area/ruin/space/ks13/hallway/aft) "SO" = ( /obj/structure/rack, -/obj/item/stock_parts/cell/high{ +/obj/item/stock_parts/power_store/cell/high{ pixel_x = 7; pixel_y = 7 }, -/obj/item/stock_parts/cell/high{ +/obj/item/stock_parts/power_store/cell/high{ pixel_x = 7; pixel_y = 4 }, -/obj/item/stock_parts/cell/high{ +/obj/item/stock_parts/power_store/cell/high{ pixel_x = 7; pixel_y = 1 }, diff --git a/_maps/RandomRuins/SpaceRuins/travelers_rest.dmm b/_maps/RandomRuins/SpaceRuins/travelers_rest.dmm index 3837f2453845d..d36e65ddc2269 100644 --- a/_maps/RandomRuins/SpaceRuins/travelers_rest.dmm +++ b/_maps/RandomRuins/SpaceRuins/travelers_rest.dmm @@ -437,7 +437,7 @@ /obj/item/storage/box/lights/tubes, /obj/item/clothing/glasses/night, /obj/item/stock_parts/capacitor/super, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 6 }, diff --git a/_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm b/_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm index 4be262c6fd052..dce2db8cffc9f 100644 --- a/_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm +++ b/_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm @@ -15,7 +15,7 @@ /area/ruin/space/has_grav/turretedoutpost) "ae" = ( /obj/structure/table/reinforced, -/obj/item/stock_parts/cell/hyper, +/obj/item/stock_parts/power_store/cell/hyper, /turf/open/floor/iron, /area/ruin/space/has_grav/turretedoutpost) "af" = ( diff --git a/_maps/RandomRuins/SpaceRuins/waystation.dmm b/_maps/RandomRuins/SpaceRuins/waystation.dmm index e5262d324259e..baa77a700d20e 100644 --- a/_maps/RandomRuins/SpaceRuins/waystation.dmm +++ b/_maps/RandomRuins/SpaceRuins/waystation.dmm @@ -1505,7 +1505,7 @@ /area/ruin/space/has_grav/waystation/cargobay) "zd" = ( /obj/structure/table, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/machinery/cell_charger, /turf/open/floor/plating, /area/ruin/space/has_grav/waystation/power) diff --git a/_maps/RandomZLevels/TheBeach.dmm b/_maps/RandomZLevels/TheBeach.dmm index 22dab6907a688..3f18eb1d627d3 100644 --- a/_maps/RandomZLevels/TheBeach.dmm +++ b/_maps/RandomZLevels/TheBeach.dmm @@ -1919,7 +1919,7 @@ pixel_y = 12; pixel_x = 3 }, -/obj/item/stock_parts/cell/emproof{ +/obj/item/stock_parts/power_store/cell/emproof{ pixel_x = -4; pixel_y = 6 }, diff --git a/_maps/RandomZLevels/caves.dmm b/_maps/RandomZLevels/caves.dmm index e54d1b87cbaf3..c64aa99d1aab6 100644 --- a/_maps/RandomZLevels/caves.dmm +++ b/_maps/RandomZLevels/caves.dmm @@ -505,7 +505,7 @@ "db" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/crap, +/obj/item/stock_parts/power_store/cell/crap, /turf/open/floor/iron{ initial_gas_mix = "n2=23;o2=14;TEMP=2.7" }, diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm index 7835def0dc251..721efba7619cc 100644 --- a/_maps/RandomZLevels/moonoutpost19.dmm +++ b/_maps/RandomZLevels/moonoutpost19.dmm @@ -3045,7 +3045,7 @@ "ty" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/effect/turf_decal/siding/thinplating_new/light, /turf/open/floor/iron, /area/awaymission/moonoutpost19/arrivals) @@ -5428,7 +5428,7 @@ /obj/structure/table, /obj/machinery/cell_charger, /obj/machinery/light/small/directional/west, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/item/paper/fluff/awaymissions/moonoutpost19/engineering, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -5728,7 +5728,7 @@ /obj/structure/table, /obj/effect/decal/cleanable/dirt, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/item/radio/off{ pixel_x = 8; pixel_y = 17 @@ -5775,7 +5775,7 @@ /area/awaymission/moonoutpost19/arrivals) "MW" = ( /obj/structure/table, -/obj/item/stock_parts/cell/crap/empty{ +/obj/item/stock_parts/power_store/cell/crap/empty{ pixel_x = -4 }, /turf/open/floor/pod/dark, @@ -6525,9 +6525,9 @@ /area/awaymission/moonoutpost19/arrivals) "Ro" = ( /obj/structure/table, -/obj/item/stock_parts/cell/crap/empty, -/obj/item/stock_parts/cell/crap/empty, -/obj/item/stock_parts/cell/crap/empty{ +/obj/item/stock_parts/power_store/cell/crap/empty, +/obj/item/stock_parts/power_store/cell/crap/empty, +/obj/item/stock_parts/power_store/cell/crap/empty{ pixel_x = -16; pixel_y = 4 }, diff --git a/_maps/RandomZLevels/research.dmm b/_maps/RandomZLevels/research.dmm index 154522d9c253e..7f862487515fc 100644 --- a/_maps/RandomZLevels/research.dmm +++ b/_maps/RandomZLevels/research.dmm @@ -76,8 +76,8 @@ }, /obj/structure/frame/machine, /obj/item/circuitboard/machine/smes, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high/empty, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high/empty, /turf/open/floor/plating, /area/awaymission/research/interior/engineering) "aw" = ( @@ -96,12 +96,12 @@ /area/awaymission/research/interior/engineering) "az" = ( /obj/effect/gibspawner/human, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /turf/open/floor/plating, /area/awaymission/research/interior/engineering) "aA" = ( /obj/item/stack/sheet/plasteel, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /turf/open/floor/plating, /area/awaymission/research/interior/engineering) "aB" = ( @@ -125,11 +125,11 @@ "aF" = ( /obj/item/stack/rods, /obj/item/stack/sheet/iron, -/obj/item/stock_parts/cell/high/empty, +/obj/item/stock_parts/power_store/cell/high/empty, /turf/open/floor/plating, /area/awaymission/research/interior/engineering) "aG" = ( -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /turf/open/floor/plating, /area/awaymission/research/interior/engineering) "aH" = ( @@ -161,7 +161,7 @@ /turf/open/floor/mineral/plastitanium/red, /area/awaymission/research/interior/engineering) "aM" = ( -/obj/item/stock_parts/cell/high/empty, +/obj/item/stock_parts/power_store/cell/high/empty, /turf/open/floor/plating, /area/awaymission/research/interior/engineering) "aO" = ( diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm index 7a15d946e0282..ac13cf870c55d 100644 --- a/_maps/RandomZLevels/snowdin.dmm +++ b/_maps/RandomZLevels/snowdin.dmm @@ -445,7 +445,7 @@ }, /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/item/storage/toolbox/electrical{ pixel_x = 4; pixel_y = 8 diff --git a/_maps/RandomZLevels/undergroundoutpost45.dmm b/_maps/RandomZLevels/undergroundoutpost45.dmm index e444510605c3c..8ce159cb3993a 100644 --- a/_maps/RandomZLevels/undergroundoutpost45.dmm +++ b/_maps/RandomZLevels/undergroundoutpost45.dmm @@ -2161,8 +2161,8 @@ "iY" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/machinery/light/small/directional/west, /turf/open/floor/iron/white, /area/awaymission/undergroundoutpost45/research) @@ -2996,8 +2996,8 @@ /obj/item/stack/sheet/mineral/plasma{ amount = 26 }, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/awaymission/undergroundoutpost45/engineering) @@ -3019,7 +3019,7 @@ "ma" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/item/stack/cable_coil{ pixel_x = 3; pixel_y = -7 @@ -5957,7 +5957,7 @@ "vW" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/effect/turf_decal/tile/yellow/anticorner/contrasted, /turf/open/floor/iron, /area/awaymission/undergroundoutpost45/engineering) diff --git a/_maps/map_files/Birdshot/birdshot.dmm b/_maps/map_files/Birdshot/birdshot.dmm index ef02944be5751..e830561e58900 100644 --- a/_maps/map_files/Birdshot/birdshot.dmm +++ b/_maps/map_files/Birdshot/birdshot.dmm @@ -1543,6 +1543,23 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/central/lesser) +"aGI" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/can/food/pine_nuts{ + pixel_x = 16; + pixel_y = 6 + }, +/obj/machinery/cell_charger{ + pixel_x = -1; + pixel_y = 2 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = -1; + pixel_y = 1 + }, +/turf/open/floor/iron/dark, +/area/station/commons/storage/tools) "aGU" = ( /obj/machinery/light/small/directional/west, /turf/open/floor/iron, @@ -2242,15 +2259,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark/small, /area/station/engineering/supermatter/room) -"aXg" = ( -/obj/structure/cable, -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/machinery/status_display/ai/directional/north, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) "aXy" = ( /obj/effect/turf_decal/siding/wideplating{ dir = 1 @@ -3531,6 +3539,22 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/engineering/atmospherics_engine) +"bBN" = ( +/obj/structure/window/spawner/directional/east, +/obj/structure/table/wood, +/obj/machinery/cell_charger{ + pixel_y = 5 + }, +/obj/item/stock_parts/power_store/cell/crap{ + pixel_y = 5 + }, +/obj/item/clothing/mask/cigarette/pipe/cobpipe{ + pixel_x = 1; + pixel_y = -2 + }, +/obj/structure/sign/poster/official/random/directional/north, +/turf/open/floor/wood/tile, +/area/station/command/corporate_showroom) "bBX" = ( /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, @@ -3838,6 +3862,28 @@ /obj/machinery/chem_heater/withbuffer, /turf/open/floor/iron/dark, /area/station/medical/pharmacy) +"bHp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = -11; + pixel_y = 2 + }, +/obj/item/reagent_containers/cup/glass/bottle/vodka, +/obj/item/food/grown/citrus/orange, +/obj/item/food/grown/citrus/orange{ + pixel_x = 4; + pixel_y = 2 + }, +/obj/item/food/grown/grapes/green{ + pixel_y = -4; + pixel_x = -6 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/small, +/area/station/maintenance/department/engine/atmos) "bHs" = ( /obj/structure/rack, /obj/effect/spawner/random/maintenance, @@ -5280,6 +5326,18 @@ /obj/structure/cable, /turf/open/floor/iron/white/small, /area/station/command/heads_quarters/cmo) +"clV" = ( +/obj/structure/table, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/clothing/mask/breath{ + pixel_x = 15; + pixel_y = 5 + }, +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/smooth, +/area/station/command/gateway) "clX" = ( /obj/structure/railing/corner, /turf/open/floor/wood, @@ -6321,22 +6379,6 @@ }, /turf/open/floor/iron/small, /area/station/maintenance/port/lesser) -"cGb" = ( -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/rods/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/stock_parts/cell/high, -/obj/item/stack/sheet/mineral/plasma{ - amount = 30 - }, -/obj/item/gps, -/obj/structure/closet/crate/engineering, -/obj/machinery/light/cold/directional/east, -/obj/item/clothing/gloves/color/yellow, -/turf/open/floor/iron/dark/small, -/area/station/engineering/storage_shared) "cGj" = ( /turf/closed/wall/r_wall, /area/station/security/execution/education) @@ -10333,6 +10375,15 @@ /obj/effect/landmark/navigate_destination/aiupload, /turf/open/floor/iron/white, /area/station/hallway/primary/starboard) +"enq" = ( +/obj/structure/cable, +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/status_display/ai/directional/north, +/obj/machinery/camera/autoname/directional/north, +/turf/open/floor/iron, +/area/station/engineering/storage/tech) "enD" = ( /obj/effect/turf_decal/tile/green{ dir = 8 @@ -11095,6 +11146,20 @@ }, /turf/open/floor/catwalk_floor, /area/station/engineering/break_room) +"eDr" = ( +/obj/structure/table/glass, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell, +/obj/machinery/status_display/evac/directional/north, +/obj/structure/sign/directions/supply/directional/west, +/obj/structure/sign/directions/engineering/directional/west{ + pixel_y = 8 + }, +/obj/structure/sign/directions/command/directional/west{ + pixel_y = -8 + }, +/turf/open/floor/iron/white, +/area/station/hallway/primary/starboard) "eDt" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 1 @@ -11681,12 +11746,6 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/iron/showroomfloor, /area/station/medical/coldroom) -"ePg" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/turf/open/floor/circuit, -/area/station/maintenance/port/aft) "ePn" = ( /obj/structure/disposalpipe/segment, /obj/machinery/light/small/directional/south, @@ -12778,13 +12837,6 @@ /obj/effect/landmark/start/depsec/science, /turf/open/floor/iron, /area/station/security/checkpoint/science) -"fnm" = ( -/obj/structure/filingcabinet/chestdrawer, -/obj/item/book/manual/wiki/engineering_guide{ - pixel_y = 6 - }, -/turf/open/floor/iron/grimy, -/area/station/engineering/main) "fnw" = ( /obj/structure/chair{ pixel_y = -2 @@ -17382,18 +17434,6 @@ }, /turf/open/floor/plating, /area/station/service/chapel/funeral) -"gSQ" = ( -/obj/structure/table/glass, -/obj/item/stock_parts/cell/high{ - pixel_x = 11; - pixel_y = 6 - }, -/obj/item/folder/blue{ - pixel_x = -3; - pixel_y = 2 - }, -/turf/open/floor/carpet/executive, -/area/station/command/meeting_room) "gSX" = ( /obj/machinery/computer/piratepad_control/civilian{ dir = 1 @@ -17533,12 +17573,6 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) -"gUo" = ( -/obj/structure/table/greyscale, -/obj/item/clothing/gloves/color/yellow, -/obj/item/wrench, -/turf/open/floor/iron/grimy, -/area/station/engineering/main) "gUC" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -17778,6 +17812,21 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/security/checkpoint/escape) +"gZy" = ( +/obj/structure/table, +/obj/machinery/cell_charger{ + pixel_y = 18 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_y = 18 + }, +/obj/item/clothing/suit/hazardvest, +/obj/effect/turf_decal/siding/thinplating_new/terracotta{ + dir = 4 + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/iron, +/area/station/command/teleporter) "gZM" = ( /obj/item/kirbyplants/random, /obj/machinery/light/cold/directional/east, @@ -18266,23 +18315,6 @@ dir = 4 }, /area/station/commons/storage/tools) -"hgb" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/item/trash/can/food/pine_nuts{ - pixel_x = 16; - pixel_y = 6 - }, -/obj/machinery/cell_charger{ - pixel_x = -1; - pixel_y = 2 - }, -/obj/item/stock_parts/cell/high{ - pixel_x = -1; - pixel_y = 1 - }, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) "hgd" = ( /obj/structure/table, /obj/item/clothing/head/collectable/paper{ @@ -19626,18 +19658,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/maintenance/department/engine/atmos) -"hAQ" = ( -/obj/structure/table, -/obj/effect/mapping_helpers/broken_floor, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/item/clothing/mask/breath{ - pixel_x = 15; - pixel_y = 5 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/iron/smooth, -/area/station/command/gateway) "hAW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -22824,6 +22844,30 @@ /obj/structure/chair/stool/directional/east, /turf/open/floor/iron/cafeteria, /area/station/security/prison/mess) +"iGM" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/light/cold/dim/directional/east, +/obj/machinery/newscaster/directional/east, +/obj/structure/cable, +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_x = 5; + pixel_y = 19 + }, +/obj/item/pen{ + pixel_x = 5; + pixel_y = 20 + }, +/obj/machinery/cell_charger{ + pixel_x = 2; + pixel_y = 1 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 2; + pixel_y = 2 + }, +/turf/open/floor/iron/smooth, +/area/station/engineering/break_room) "iGO" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/broken_flooring/pile/directional/east, @@ -22891,6 +22935,22 @@ }, /turf/open/floor/iron/dark/textured_edge, /area/station/command/heads_quarters/hop) +"iIK" = ( +/obj/effect/turf_decal/bot, +/obj/structure/rack, +/obj/item/stack/sheet/plasteel/fifty, +/obj/item/stack/sheet/plastic/five, +/obj/item/stack/sheet/rglass/fifty, +/obj/item/storage/medkit/fire{ + pixel_x = 1; + pixel_y = 4 + }, +/obj/machinery/airalarm/directional/east, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_y = 9 + }, +/turf/open/floor/iron/small, +/area/station/engineering/break_room) "iIN" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -23156,6 +23216,12 @@ /obj/machinery/recharge_station, /turf/open/floor/plating, /area/station/maintenance/department/bridge) +"iLZ" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/circuit, +/area/station/maintenance/port/aft) "iMg" = ( /obj/structure/closet/crate, /obj/effect/turf_decal/stripes/line{ @@ -24073,20 +24139,6 @@ "jaQ" = ( /turf/open/floor/catwalk_floor/iron_dark, /area/station/security/processing) -"jbc" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high{ - pixel_x = 4; - pixel_y = 5 - }, -/obj/item/stock_parts/cell/high, -/turf/open/floor/iron/dark, -/area/station/science/robotics/lab) "jbd" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -24165,13 +24217,6 @@ /obj/machinery/door/window/right/directional/south, /turf/open/floor/plating, /area/station/service/chapel/funeral) -"jcx" = ( -/obj/structure/filingcabinet/chestdrawer, -/obj/item/stock_parts/cell/emproof{ - pixel_y = 9 - }, -/turf/open/floor/iron/grimy, -/area/station/engineering/main) "jcE" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -25555,22 +25600,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth, /area/station/cargo/warehouse) -"jCY" = ( -/obj/structure/table/greyscale, -/obj/item/screwdriver, -/obj/item/stack/cable_coil/cut{ - pixel_x = 11; - pixel_y = 7 - }, -/obj/machinery/camera/directional/west{ - c_tag = "Engineering - Office" - }, -/obj/item/stock_parts/cell/emproof{ - pixel_x = -6; - pixel_y = 9 - }, -/turf/open/floor/iron/grimy, -/area/station/engineering/main) "jCZ" = ( /obj/machinery/door/window/brigdoor/left/directional/west{ id = "Cell 1"; @@ -27118,6 +27147,12 @@ /obj/machinery/airalarm/directional/south, /turf/open/floor/iron/smooth, /area/station/maintenance/solars/starboard/fore) +"kbI" = ( +/obj/structure/table/glass, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell, +/turf/open/floor/iron/white, +/area/station/science/auxlab/firing_range) "kci" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -27769,6 +27804,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/small, /area/station/maintenance/department/engine/atmos) +"kmP" = ( +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/effect/turf_decal/siding/green{ + dir = 9 + }, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/turf/open/floor/iron/cafeteria, +/area/station/science/circuits) "kmT" = ( /obj/structure/closet/firecloset, /turf/open/floor/plating, @@ -29643,24 +29690,6 @@ /obj/effect/mapping_helpers/airlock/abandoned, /turf/open/floor/wood, /area/station/maintenance/starboard/greater) -"kWg" = ( -/obj/structure/table/greyscale, -/obj/item/pen{ - pixel_x = 13; - pixel_y = 4 - }, -/obj/machinery/light/small/directional/south, -/obj/item/flatpack{ - board = /obj/item/circuitboard/machine/flatpacker; - pixel_x = -6; - pixel_y = 5 - }, -/obj/item/multitool{ - pixel_x = 7; - pixel_y = -2 - }, -/turf/open/floor/iron/grimy, -/area/station/engineering/main) "kWk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -30636,22 +30665,6 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) -"lkQ" = ( -/obj/effect/turf_decal/bot, -/obj/structure/rack, -/obj/item/stack/sheet/plasteel/fifty, -/obj/item/stack/sheet/plastic/five, -/obj/item/stack/sheet/rglass/fifty, -/obj/item/storage/medkit/fire{ - pixel_x = 1; - pixel_y = 4 - }, -/obj/machinery/airalarm/directional/east, -/obj/item/stock_parts/cell/emproof{ - pixel_y = 9 - }, -/turf/open/floor/iron/small, -/area/station/engineering/break_room) "lkR" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -31914,6 +31927,13 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/iron/smooth, /area/station/command/gateway) +"lGJ" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/item/book/manual/wiki/engineering_guide{ + pixel_y = 6 + }, +/turf/open/floor/iron/grimy, +/area/station/engineering/main) "lGK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -33408,6 +33428,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"mcj" = ( +/obj/effect/turf_decal/tile/yellow/opposingcorners, +/obj/structure/table/reinforced/titaniumglass, +/obj/item/rcl/pre_loaded, +/obj/item/stock_parts/power_store/cell/high{ + pixel_y = 17 + }, +/obj/machinery/light/small/directional/south, +/obj/structure/secure_safe/directional/east, +/turf/open/floor/iron, +/area/station/command/heads_quarters/ce) "mcl" = ( /obj/structure/alien/weeds, /obj/effect/gibspawner/xeno, @@ -34657,6 +34688,12 @@ /obj/machinery/light/small/directional/east, /turf/open/misc/sandy_dirt, /area/station/hallway/primary/central/fore) +"mAK" = ( +/obj/structure/table/greyscale, +/obj/item/clothing/gloves/color/yellow, +/obj/item/wrench, +/turf/open/floor/iron/grimy, +/area/station/engineering/main) "mAL" = ( /obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/iron, @@ -34913,6 +34950,22 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/circuit, /area/station/tcommsat/server) +"mFH" = ( +/obj/structure/table/greyscale, +/obj/item/screwdriver, +/obj/item/stack/cable_coil/cut{ + pixel_x = 11; + pixel_y = 7 + }, +/obj/machinery/camera/directional/west{ + c_tag = "Engineering - Office" + }, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_x = -6; + pixel_y = 9 + }, +/turf/open/floor/iron/grimy, +/area/station/engineering/main) "mFL" = ( /obj/structure/table, /obj/effect/turf_decal/siding/thinplating_new/terracotta{ @@ -35459,6 +35512,22 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/hallway/primary/aft) +"mOx" = ( +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/rods/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stack/sheet/mineral/plasma{ + amount = 30 + }, +/obj/item/gps, +/obj/structure/closet/crate/engineering, +/obj/machinery/light/cold/directional/east, +/obj/item/clothing/gloves/color/yellow, +/turf/open/floor/iron/dark/small, +/area/station/engineering/storage_shared) "mOI" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/directional/south, @@ -38159,6 +38228,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/smooth, /area/station/cargo/warehouse) +"nLM" = ( +/obj/structure/cable, +/obj/structure/table/reinforced, +/obj/item/stack/cable_coil{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/electronics/airlock{ + pixel_y = 13 + }, +/turf/open/floor/iron, +/area/station/engineering/storage/tech) "nLN" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -38946,6 +39028,20 @@ dir = 1 }, /area/station/hallway/primary/central/fore) +"oaY" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 4; + pixel_y = 5 + }, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/iron/dark, +/area/station/science/robotics/lab) "obd" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 10 @@ -40595,6 +40691,18 @@ /obj/machinery/atmospherics/pipe/layer_manifold/visible, /turf/open/floor/plating, /area/station/engineering/atmos/space_catwalk) +"oGo" = ( +/obj/structure/table/glass, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 11; + pixel_y = 6 + }, +/obj/item/folder/blue{ + pixel_x = -3; + pixel_y = 2 + }, +/turf/open/floor/carpet/executive, +/area/station/command/meeting_room) "oGJ" = ( /obj/effect/turf_decal/trimline/neutral/line{ dir = 1 @@ -40655,6 +40763,24 @@ dir = 1 }, /area/station/security/execution/transfer) +"oHJ" = ( +/obj/structure/table/greyscale, +/obj/item/pen{ + pixel_x = 13; + pixel_y = 4 + }, +/obj/machinery/light/small/directional/south, +/obj/item/flatpack{ + board = /obj/item/circuitboard/machine/flatpacker; + pixel_x = -6; + pixel_y = 5 + }, +/obj/item/multitool{ + pixel_x = 7; + pixel_y = -2 + }, +/turf/open/floor/iron/grimy, +/area/station/engineering/main) "oHO" = ( /obj/structure/chair/plastic{ dir = 1 @@ -42854,30 +42980,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white/small, /area/station/service/janitor) -"psL" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/light/cold/dim/directional/east, -/obj/machinery/newscaster/directional/east, -/obj/structure/cable, -/obj/structure/table/reinforced, -/obj/item/paper_bin{ - pixel_x = 5; - pixel_y = 19 - }, -/obj/item/pen{ - pixel_x = 5; - pixel_y = 20 - }, -/obj/machinery/cell_charger{ - pixel_x = 2; - pixel_y = 1 - }, -/obj/item/stock_parts/cell/high{ - pixel_x = 2; - pixel_y = 2 - }, -/turf/open/floor/iron/smooth, -/area/station/engineering/break_room) "psP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -43205,6 +43307,14 @@ /obj/machinery/duct, /turf/open/floor/iron/freezer, /area/station/service/kitchen/coldroom) +"pxW" = ( +/obj/structure/table, +/obj/machinery/cell_charger{ + pixel_y = 5 + }, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/engine, +/area/station/science/xenobiology) "pxZ" = ( /obj/structure/rack, /obj/effect/spawner/random/maintenance, @@ -45114,17 +45224,6 @@ /obj/structure/mirror/directional/north, /turf/open/floor/iron/white/small, /area/station/maintenance/port/aft) -"qaH" = ( -/obj/structure/cable, -/obj/effect/turf_decal/siding/dark_red/corner{ - dir = 1 - }, -/obj/structure/rack, -/obj/effect/spawner/random/armory/riot_helmet, -/obj/effect/spawner/random/armory/bulletproof_helmet, -/obj/effect/spawner/random/armory/dragnet, -/turf/open/floor/iron/dark/small, -/area/station/ai_monitored/security/armory) "qaV" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -45719,14 +45818,6 @@ }, /turf/open/floor/plating, /area/station/tcommsat/server) -"qiO" = ( -/obj/structure/table, -/obj/machinery/cell_charger{ - pixel_y = 5 - }, -/obj/item/stock_parts/cell/high, -/turf/open/floor/engine, -/area/station/science/xenobiology) "qjh" = ( /obj/machinery/light_switch/directional/west, /turf/open/floor/iron/white, @@ -48397,12 +48488,6 @@ }, /turf/open/floor/iron/smooth, /area/station/engineering/atmos) -"qYq" = ( -/obj/structure/table/glass, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell, -/turf/open/floor/iron/white, -/area/station/science/auxlab/firing_range) "qYu" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -51001,28 +51086,6 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/plating, /area/station/maintenance/department/engine) -"rLu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate, -/obj/item/stock_parts/cell/high{ - pixel_x = -11; - pixel_y = 2 - }, -/obj/item/reagent_containers/cup/glass/bottle/vodka, -/obj/item/food/grown/citrus/orange, -/obj/item/food/grown/citrus/orange{ - pixel_x = 4; - pixel_y = 2 - }, -/obj/item/food/grown/grapes/green{ - pixel_y = -4; - pixel_x = -6 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/small, -/area/station/maintenance/department/engine/atmos) "rLw" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -54091,18 +54154,6 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron/cafeteria, /area/station/security/prison/mess) -"sFD" = ( -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/effect/turf_decal/siding/green{ - dir = 9 - }, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/iron/cafeteria, -/area/station/science/circuits) "sFH" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -54519,6 +54570,17 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) +"sNr" = ( +/obj/structure/cable, +/obj/effect/turf_decal/siding/dark_red/corner{ + dir = 1 + }, +/obj/structure/rack, +/obj/effect/spawner/random/armory/riot_helmet, +/obj/effect/spawner/random/armory/bulletproof_helmet, +/obj/effect/spawner/random/armory/dragnet, +/turf/open/floor/iron/dark/small, +/area/station/ai_monitored/security/armory) "sNv" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -55549,6 +55611,13 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"tcA" = ( +/obj/structure/filingcabinet/chestdrawer, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_y = 9 + }, +/turf/open/floor/iron/grimy, +/area/station/engineering/main) "tcB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -56787,20 +56856,6 @@ }, /turf/open/floor/tram, /area/station/maintenance/department/medical/central) -"twR" = ( -/obj/structure/table/glass, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell, -/obj/machinery/status_display/evac/directional/north, -/obj/structure/sign/directions/supply/directional/west, -/obj/structure/sign/directions/engineering/directional/west{ - pixel_y = 8 - }, -/obj/structure/sign/directions/command/directional/west{ - pixel_y = -8 - }, -/turf/open/floor/iron/white, -/area/station/hallway/primary/starboard) "twZ" = ( /obj/structure/chair/sofa/bench/right, /obj/machinery/newscaster/directional/north, @@ -62907,21 +62962,6 @@ /obj/structure/alien/weeds, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"vjx" = ( -/obj/structure/table, -/obj/machinery/cell_charger{ - pixel_y = 18 - }, -/obj/item/stock_parts/cell/high{ - pixel_y = 18 - }, -/obj/item/clothing/suit/hazardvest, -/obj/effect/turf_decal/siding/thinplating_new/terracotta{ - dir = 4 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron, -/area/station/command/teleporter) "vjI" = ( /obj/machinery/door/airlock{ name = "Bathrooms" @@ -63856,19 +63896,6 @@ }, /turf/open/floor/iron, /area/station/cargo/sorting) -"vuK" = ( -/obj/structure/cable, -/obj/structure/table/reinforced, -/obj/item/stack/cable_coil{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/stock_parts/cell/high, -/obj/item/electronics/airlock{ - pixel_y = 13 - }, -/turf/open/floor/iron, -/area/station/engineering/storage/tech) "vuL" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -66659,22 +66686,6 @@ /obj/structure/flora/bush/sunny/style_random, /turf/open/floor/grass, /area/station/service/chapel) -"wjY" = ( -/obj/structure/window/spawner/directional/east, -/obj/structure/table/wood, -/obj/machinery/cell_charger{ - pixel_y = 5 - }, -/obj/item/stock_parts/cell/crap{ - pixel_y = 5 - }, -/obj/item/clothing/mask/cigarette/pipe/cobpipe{ - pixel_x = 1; - pixel_y = -2 - }, -/obj/structure/sign/poster/official/random/directional/north, -/turf/open/floor/wood/tile, -/area/station/command/corporate_showroom) "wjZ" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -66729,17 +66740,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/chapel, /area/station/maintenance/starboard/greater) -"wld" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/structure/table/reinforced/titaniumglass, -/obj/item/rcl/pre_loaded, -/obj/item/stock_parts/cell/high{ - pixel_y = 17 - }, -/obj/machinery/light/small/directional/south, -/obj/structure/secure_safe/directional/east, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) "wlf" = ( /obj/effect/landmark/start/hangover, /turf/open/floor/glass, @@ -88401,7 +88401,7 @@ mVt dIt huN jBr -qaH +sNr syk vYD lox @@ -89601,7 +89601,7 @@ ojz sLu urE ess -jCY +mFH vfG oSw jyl @@ -89612,7 +89612,7 @@ obW grF ecn kmH -rLu +bHp cPe obW blb @@ -90375,7 +90375,7 @@ euP all eWf eIx -kWg +oHJ bNq wxG uIX @@ -90614,7 +90614,7 @@ ufR xYG xYG rDV -cGb +mOx dwC iAk sql @@ -90628,11 +90628,11 @@ sHO drI cRq rbl -jcx +tcA uKO vfG -fnm -gUo +lGJ +mAK bNq hOX fEU @@ -92198,7 +92198,7 @@ eEq sRg gQG hbw -hgb +aGI hmQ pGE jug @@ -92286,7 +92286,7 @@ xAR trp etx fwS -ePg +iLZ trp jRx xul @@ -92944,7 +92944,7 @@ paX rdH gpI ceP -wld +mcj gpI qCT rWH @@ -93193,7 +93193,7 @@ cED nQE rLj gNt -lkQ +iIK gKL fMA gFF @@ -95246,7 +95246,7 @@ gwl pPm jKU qbP -psL +iGM nck tau gKL @@ -95537,7 +95537,7 @@ sUy muW mOk iap -gSQ +oGo iDk sUy jaK @@ -97082,7 +97082,7 @@ xMk xsh hcc xGJ -wjY +bBN jwi qtd hOg @@ -98890,7 +98890,7 @@ myT iMg iYj sDp -vjx +gZy kke kgz oGJ @@ -104791,7 +104791,7 @@ gKg xbl uhI yhW -hAQ +clV gcz hyv fyH @@ -109476,9 +109476,9 @@ aZL ciR mwu yeP -aXg +enq ivY -vuK +nLM ssz ssz kHo @@ -112024,7 +112024,7 @@ vDX vDX xww vDX -twR +eDr xdc xtL xQW @@ -118461,7 +118461,7 @@ wHg mbZ xia jYr -jbc +oaY lZB ivz jYr @@ -119244,7 +119244,7 @@ pXQ kwA xaR sYa -qiO +pxW xlP gpy xlP @@ -121527,7 +121527,7 @@ oyQ pVa qjh qzL -qYq +kbI xok vhC sHV @@ -122844,7 +122844,7 @@ ifa ifa ifa ifa -sFD +kmP vLi tQr ifa diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 9f1a266b18575..84d42a3ec31ca 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -386,22 +386,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/cargo/sorting) -"aeE" = ( -/obj/structure/table/reinforced, -/obj/item/stack/package_wrap, -/obj/item/stack/cable_coil{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/stack/cable_coil, -/obj/item/stock_parts/cell/high, -/obj/effect/decal/cleanable/dirt, -/obj/item/radio/intercom/directional/north, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/construction/mining/aux_base) "aeF" = ( /turf/open/floor/plating, /area/station/construction/mining/aux_base) @@ -875,17 +859,6 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron, /area/station/security/prison/visit) -"ale" = ( -/obj/structure/rack, -/obj/effect/turf_decal/bot, -/obj/structure/window/reinforced/spawner/directional/east{ - pixel_x = 3 - }, -/obj/structure/window/reinforced/spawner/directional/north, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/spawner/random/armory/dragnet, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) "alG" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -4466,6 +4439,14 @@ /obj/effect/mapping_helpers/airlock/access/all/command/hop, /turf/open/floor/wood, /area/station/command/heads_quarters/hop) +"beI" = ( +/obj/structure/table/reinforced, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/cell_charger, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron, +/area/station/engineering/main) "beP" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -5383,14 +5364,6 @@ /obj/effect/turf_decal/box/red, /turf/open/floor/iron/dark/textured_large, /area/station/science/xenobiology) -"bpL" = ( -/obj/structure/table/reinforced, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high, -/obj/machinery/cell_charger, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/station/engineering/main) "bpM" = ( /obj/effect/spawner/random/engineering/tracking_beacon, /obj/effect/landmark/event_spawn, @@ -6004,6 +5977,18 @@ }, /turf/open/floor/wood, /area/station/engineering/break_room) +"byI" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/effect/turf_decal/siding/purple{ + dir = 8 + }, +/obj/effect/turf_decal/siding/purple{ + dir = 4 + }, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/iron, +/area/station/science/lab) "byP" = ( /obj/machinery/firealarm/directional/east, /obj/machinery/camera{ @@ -7687,15 +7672,6 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat_interior) -"bRC" = ( -/obj/machinery/cell_charger, -/obj/structure/table/reinforced, -/obj/item/stock_parts/cell/high, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/ai_monitored/turret_protected/aisat_interior) "bRD" = ( /obj/structure/sign/nanotrasen, /turf/closed/wall/r_wall, @@ -8311,15 +8287,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/maintenance/port) -"bYv" = ( -/obj/structure/table/reinforced, -/obj/item/stack/cable_coil, -/obj/item/electronics/airalarm, -/obj/item/electronics/firealarm, -/obj/item/stock_parts/cell/high, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/port) "bYG" = ( /obj/item/clipboard, /obj/item/folder/yellow, @@ -8841,6 +8808,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/hallway/secondary/construction) +"cfW" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/construction) "cgf" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -12531,17 +12507,6 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /turf/open/floor/iron, /area/station/engineering/atmos) -"dbC" = ( -/obj/structure/table/reinforced, -/obj/item/folder/white, -/obj/item/stock_parts/cell/high, -/obj/item/stack/sheet/glass, -/obj/item/stack/sheet/glass, -/obj/item/stack/sheet/glass, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "dbO" = ( /obj/structure/chair/sofa/bench/right{ dir = 8 @@ -13578,6 +13543,17 @@ /obj/structure/sign/poster/random/directional/south, /turf/open/floor/iron/dark, /area/station/maintenance/department/engine/atmos) +"dpR" = ( +/obj/structure/rack, +/obj/effect/turf_decal/bot, +/obj/structure/window/reinforced/spawner/directional/east{ + pixel_x = 3 + }, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/spawner/random/armory/dragnet, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/security/armory) "dqc" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -18064,6 +18040,14 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) +"ewl" = ( +/obj/structure/table, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/cell_charger, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/iron, +/area/station/science/robotics/mechbay) "ewQ" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden{ dir = 4 @@ -19551,6 +19535,14 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /turf/open/floor/engine, /area/station/engineering/supermatter) +"ePX" = ( +/obj/structure/table/reinforced, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/cell_charger, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "ePZ" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/window/reinforced/spawner/directional/north, @@ -21470,6 +21462,21 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/command/bridge) +"fnC" = ( +/obj/structure/cable, +/obj/machinery/firealarm/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/item/flatpack{ + board = /obj/item/circuitboard/machine/flatpacker; + pixel_x = -6; + pixel_y = 5 + }, +/obj/item/multitool{ + pixel_x = 8 + }, +/obj/structure/table, +/turf/open/floor/iron, +/area/station/engineering/storage_shared) "fnD" = ( /obj/structure/table, /obj/machinery/requests_console/directional/north{ @@ -22650,6 +22657,44 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/engineering/main) +"fDT" = ( +/obj/item/stack/cable_coil, +/obj/item/bodypart/arm/right/robot{ + pixel_x = 3 + }, +/obj/item/bodypart/arm/left/robot{ + pixel_x = -3 + }, +/obj/structure/table, +/obj/item/radio/intercom/directional/west, +/obj/item/assembly/prox_sensor{ + pixel_x = 5 + }, +/obj/item/assembly/prox_sensor{ + pixel_x = 5 + }, +/obj/item/assembly/prox_sensor{ + pixel_x = 5 + }, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 3; + pixel_y = 16 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = -3; + pixel_y = 16 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_y = 15 + }, +/turf/open/floor/iron, +/area/station/science/robotics/lab) "fEd" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/sign/warning/vacuum/directional/west, @@ -28382,6 +28427,14 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/command/gateway) +"gWT" = ( +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/structure/table, +/obj/machinery/newscaster/directional/west, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/science/circuits) "gWV" = ( /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/access/all/medical/morgue, @@ -30204,6 +30257,15 @@ }, /turf/open/floor/iron, /area/station/commons/storage/tools) +"hwJ" = ( +/obj/structure/table/reinforced, +/obj/item/stack/cable_coil, +/obj/item/electronics/airalarm, +/obj/item/electronics/firealarm, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/port) "hwK" = ( /obj/structure/cable, /obj/effect/turf_decal/tile/neutral/half/contrasted{ @@ -31756,6 +31818,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/grimy, /area/station/service/abandoned_gambling_den) +"hSF" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/plating, +/area/station/maintenance/department/electrical) "hST" = ( /obj/structure/destructible/cult/item_dispenser/archives/library, /obj/effect/decal/cleanable/cobweb, @@ -31937,6 +32006,20 @@ /obj/structure/sign/warning/no_smoking, /turf/closed/wall, /area/station/engineering/atmos/storage) +"hUZ" = ( +/obj/structure/table, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/machinery/cell_charger, +/obj/item/screwdriver{ + pixel_y = -1 + }, +/obj/effect/turf_decal/siding/purple{ + dir = 8 + }, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/iron, +/area/station/science/robotics/lab) "hVi" = ( /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, @@ -35750,25 +35833,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/medical/coldroom) -"iTM" = ( -/obj/structure/table/reinforced, -/obj/item/stack/sheet/rglass{ - amount = 50; - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/stock_parts/cell/emproof{ - pixel_x = 1; - pixel_y = 3 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/newscaster/directional/east, -/obj/item/mod/module/plasma_stabilizer, -/obj/item/mod/module/thermal_regulator, -/obj/item/mod/module/magboot, -/obj/item/mod/module/signlang_radio, -/turf/open/floor/iron, -/area/station/engineering/storage) "iTW" = ( /obj/structure/closet/emcloset, /obj/effect/decal/cleanable/dirt, @@ -36254,6 +36318,25 @@ }, /turf/open/floor/iron, /area/station/security/execution/transfer) +"iZH" = ( +/obj/structure/table/reinforced, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/stack/cable_coil, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/effect/decal/cleanable/dirt, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/effect/turf_decal/bot, +/obj/item/clothing/gloves/color/yellow, +/obj/machinery/newscaster/directional/east, +/turf/open/floor/iron, +/area/station/engineering/storage) "iZN" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -38196,6 +38279,18 @@ }, /turf/open/floor/iron, /area/station/engineering/main) +"jwW" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/firealarm/directional/south, +/obj/machinery/light_switch/directional/east, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/break_room) "jxd" = ( /obj/docking_port/stationary/mining_home/common, /turf/open/space/basic, @@ -38528,13 +38623,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) -"jBs" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron, -/area/station/command/teleporter) "jBt" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -40383,18 +40471,6 @@ /obj/effect/turf_decal/tile/red/opposingcorners, /turf/open/floor/iron, /area/station/service/theater) -"jYv" = ( -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/machinery/firealarm/directional/south, -/obj/machinery/light_switch/directional/east, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/break_room) "jYA" = ( /obj/effect/turf_decal/box/red/corners{ dir = 1 @@ -40834,15 +40910,6 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) -"kdL" = ( -/obj/machinery/cell_charger, -/obj/structure/table/reinforced, -/obj/item/stock_parts/cell/high, -/obj/structure/window/reinforced/spawner/directional/south, -/obj/structure/cable, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/command/storage/eva) "kdM" = ( /obj/structure/sign/poster/official/do_not_question/directional/south, /obj/effect/turf_decal/tile/blue/half/contrasted, @@ -41076,25 +41143,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/service/chapel/funeral) -"kgi" = ( -/obj/structure/table/reinforced, -/obj/item/stack/cable_coil{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/stack/cable_coil, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/effect/decal/cleanable/dirt, -/obj/item/stock_parts/cell/emproof{ - pixel_x = -3; - pixel_y = 5 - }, -/obj/effect/turf_decal/bot, -/obj/item/clothing/gloves/color/yellow, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/iron, -/area/station/engineering/storage) "kgm" = ( /obj/structure/table/wood, /obj/item/folder/red, @@ -41207,6 +41255,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/department/science) +"khr" = ( +/obj/machinery/cell_charger, +/obj/structure/table/reinforced, +/obj/item/stock_parts/power_store/cell/high, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/command/storage/eva) "khB" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -42451,44 +42508,6 @@ /obj/machinery/duct, /turf/open/floor/iron/white, /area/station/science/research) -"kyI" = ( -/obj/item/stack/cable_coil, -/obj/item/bodypart/arm/right/robot{ - pixel_x = 3 - }, -/obj/item/bodypart/arm/left/robot{ - pixel_x = -3 - }, -/obj/structure/table, -/obj/item/radio/intercom/directional/west, -/obj/item/assembly/prox_sensor{ - pixel_x = 5 - }, -/obj/item/assembly/prox_sensor{ - pixel_x = 5 - }, -/obj/item/assembly/prox_sensor{ - pixel_x = 5 - }, -/obj/item/assembly/flash/handheld, -/obj/item/assembly/flash/handheld, -/obj/item/assembly/flash/handheld, -/obj/item/assembly/flash/handheld, -/obj/item/assembly/flash/handheld, -/obj/item/assembly/flash/handheld, -/obj/item/stock_parts/cell/high{ - pixel_x = 3; - pixel_y = 16 - }, -/obj/item/stock_parts/cell/high{ - pixel_x = -3; - pixel_y = 16 - }, -/obj/item/stock_parts/cell/high{ - pixel_y = 15 - }, -/turf/open/floor/iron, -/area/station/science/robotics/lab) "kyR" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/railing/corner, @@ -43800,14 +43819,6 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron, /area/station/maintenance/department/eva/abandoned) -"kSn" = ( -/obj/structure/table/reinforced, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high, -/obj/machinery/cell_charger, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "kSt" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible, /obj/effect/turf_decal/stripes/line{ @@ -48560,6 +48571,13 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) +"mcm" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/structure/sign/poster/contraband/self_ai_liberation/directional/north, +/turf/open/floor/iron, +/area/station/science/research/abandoned) "mcp" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ @@ -49251,6 +49269,17 @@ "mlE" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/command/storage/eva) +"mlR" = ( +/obj/structure/table/reinforced, +/obj/item/folder/white, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "mlW" = ( /obj/structure/sign/nanotrasen{ pixel_y = 32 @@ -50975,18 +51004,6 @@ "mHE" = ( /turf/open/floor/iron/dark, /area/station/service/chapel) -"mHL" = ( -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/effect/turf_decal/siding/purple{ - dir = 8 - }, -/obj/effect/turf_decal/siding/purple{ - dir = 4 - }, -/obj/item/stock_parts/cell/high, -/turf/open/floor/iron, -/area/station/science/lab) "mHM" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -52347,6 +52364,13 @@ /obj/effect/spawner/random/trash/grille_or_waste, /turf/open/floor/plating, /area/station/maintenance/fore) +"nba" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/storage) "nbc" = ( /turf/open/floor/plating, /area/station/service/theater/abandoned) @@ -52503,17 +52527,6 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, /area/station/service/chapel) -"ncT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/reinforced, -/obj/item/storage/box/lights/mixed, -/obj/machinery/airalarm/directional/north, -/obj/item/stock_parts/cell/high/empty, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) "ncY" = ( /obj/structure/table/wood, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -57243,15 +57256,6 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/iron, /area/station/command/gateway) -"ooJ" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/construction) "ooP" = ( /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, @@ -58921,13 +58925,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/maintenance/port) -"oNm" = ( -/obj/structure/table/reinforced, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high, -/obj/machinery/cell_charger, -/turf/open/floor/iron, -/area/station/commons/storage/primary) "oNy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment, @@ -59278,13 +59275,6 @@ }, /turf/open/floor/iron, /area/station/engineering/main) -"oSo" = ( -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/structure/sign/poster/contraband/self_ai_liberation/directional/north, -/turf/open/floor/iron, -/area/station/science/research/abandoned) "oSv" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, @@ -62129,14 +62119,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/science/xenobiology) -"pDi" = ( -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/structure/table, -/obj/machinery/newscaster/directional/west, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/science/circuits) "pDt" = ( /obj/machinery/flasher/portable, /obj/effect/turf_decal/bot, @@ -66707,14 +66689,6 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) -"qHo" = ( -/obj/structure/table, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high, -/obj/machinery/cell_charger, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/iron, -/area/station/science/robotics/mechbay) "qHs" = ( /obj/structure/statue/sandstone/venus{ dir = 1; @@ -68820,6 +68794,25 @@ }, /turf/open/floor/wood, /area/station/service/electronic_marketing_den) +"rjN" = ( +/obj/structure/table/reinforced, +/obj/item/stack/sheet/rglass{ + amount = 50; + pixel_x = 2; + pixel_y = -2 + }, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_x = 1; + pixel_y = 3 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/newscaster/directional/east, +/obj/item/mod/module/plasma_stabilizer, +/obj/item/mod/module/thermal_regulator, +/obj/item/mod/module/magboot, +/obj/item/mod/module/signlang_radio, +/turf/open/floor/iron, +/area/station/engineering/storage) "rjO" = ( /obj/effect/turf_decal/siding/blue{ dir = 9 @@ -69356,19 +69349,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) -"rpm" = ( -/obj/structure/rack, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/wrench, -/obj/item/stock_parts/cell/emproof{ - pixel_x = 4; - pixel_y = 2 - }, -/obj/item/lightreplacer, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/storage) "rpK" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -70246,6 +70226,19 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/command/bridge) +"rBY" = ( +/obj/structure/rack, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/tank/internals/emergency_oxygen/engi, +/obj/item/wrench, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_x = 4; + pixel_y = 2 + }, +/obj/item/lightreplacer, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, +/area/station/engineering/atmos/storage) "rCc" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -70822,6 +70815,22 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/security/medical) +"rJY" = ( +/obj/structure/table/reinforced, +/obj/item/stack/package_wrap, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/stack/cable_coil, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/decal/cleanable/dirt, +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/construction/mining/aux_base) "rKb" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, @@ -72260,6 +72269,15 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics) +"sas" = ( +/obj/machinery/cell_charger, +/obj/structure/table/reinforced, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/ai_monitored/turret_protected/aisat_interior) "sau" = ( /obj/machinery/blackbox_recorder, /obj/machinery/atmospherics/pipe/heat_exchanging/simple, @@ -73890,16 +73908,6 @@ /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/floor/iron/dark/side, /area/station/security/checkpoint/medical/medsci) -"swg" = ( -/obj/machinery/cell_charger, -/obj/structure/table/reinforced, -/obj/machinery/status_display/ai/directional/north, -/obj/item/rcl/pre_loaded, -/obj/effect/turf_decal/bot, -/obj/item/stock_parts/cell/high, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/ce) "swj" = ( /obj/structure/table/wood, /obj/machinery/fax{ @@ -77992,6 +78000,17 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/security/interrogation) +"tyF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/reinforced, +/obj/item/storage/box/lights/mixed, +/obj/machinery/airalarm/directional/north, +/obj/item/stock_parts/power_store/cell/high/empty, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/storage) "tyK" = ( /obj/machinery/vending/wardrobe/jani_wardrobe, /turf/open/floor/iron/dark, @@ -78114,6 +78133,16 @@ /obj/structure/sign/poster/contraband/random/directional/east, /turf/open/floor/iron, /area/station/service/hydroponics/garden) +"tAB" = ( +/obj/machinery/cell_charger, +/obj/structure/table/reinforced, +/obj/machinery/status_display/ai/directional/north, +/obj/item/rcl/pre_loaded, +/obj/effect/turf_decal/bot, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) "tAL" = ( /obj/structure/sign/nanotrasen{ pixel_y = 32 @@ -78137,6 +78166,13 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/engineering/atmos) +"tAO" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/iron, +/area/station/command/teleporter) "tAS" = ( /obj/effect/turf_decal/siding/white, /obj/structure/cable, @@ -78570,21 +78606,6 @@ /obj/structure/sign/poster/official/random/directional/west, /turf/open/floor/wood, /area/station/maintenance/port/fore) -"tFu" = ( -/obj/structure/cable, -/obj/machinery/firealarm/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/item/flatpack{ - board = /obj/item/circuitboard/machine/flatpacker; - pixel_x = -6; - pixel_y = 5 - }, -/obj/item/multitool{ - pixel_x = 8 - }, -/obj/structure/table, -/turf/open/floor/iron, -/area/station/engineering/storage_shared) "tFG" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -78913,13 +78934,6 @@ }, /turf/open/floor/iron, /area/station/security/courtroom) -"tJB" = ( -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/plating, -/area/station/maintenance/department/electrical) "tJE" = ( /obj/structure/table/wood, /obj/item/folder, @@ -88366,6 +88380,13 @@ }, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"wdm" = ( +/obj/structure/table/reinforced, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/cell_charger, +/turf/open/floor/iron, +/area/station/commons/storage/primary) "wdt" = ( /obj/structure/cable, /obj/effect/turf_decal/stripes/line{ @@ -93023,20 +93044,6 @@ /obj/structure/closet/crate/freezer/blood, /turf/open/floor/iron/freezer, /area/station/medical/coldroom) -"xkV" = ( -/obj/structure/table, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/machinery/cell_charger, -/obj/item/screwdriver{ - pixel_y = -1 - }, -/obj/effect/turf_decal/siding/purple{ - dir = 8 - }, -/obj/item/stock_parts/cell/high, -/turf/open/floor/iron, -/area/station/science/robotics/lab) "xkW" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/north, @@ -95705,13 +95712,6 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron, /area/station/command/heads_quarters/rd) -"xTC" = ( -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/station/engineering/atmos/storage) "xTD" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -104082,7 +104082,7 @@ ueB uhL btH bPC -bRC +sas bTs rPe vvL @@ -119755,7 +119755,7 @@ jLx dFw mPr bAR -swg +tAB gsV auh tMl @@ -120524,7 +120524,7 @@ pQo uCa wkj bqP -jYv +jwW bAR gHt bAV @@ -121547,7 +121547,7 @@ wiZ fXF xkz hwe -tFu +fnC vpV uCa gQk @@ -122298,10 +122298,10 @@ sID pUW qSm wIf -rpm +rBY lvJ jYA -xTC +nba eVG wqF npE @@ -122893,7 +122893,7 @@ wEI qNb naL nEc -oSo +mcm kGQ bGz nzb @@ -123117,7 +123117,7 @@ grl iJU pJM pec -bpL +beI fii fii lBz @@ -124405,11 +124405,11 @@ swD baw fii iqz -kgi +iZH hps hkJ tum -iTM +rjN abO pTC sNd @@ -125944,7 +125944,7 @@ rnr lRx gRl iQr -bYv +hwJ pTC qcM vcB @@ -126178,7 +126178,7 @@ aJU keE tbf sdB -kSn +ePX urC aZo jPJ @@ -127005,7 +127005,7 @@ jqt qub uFt elq -pDi +gWT bWH jDd plP @@ -127488,7 +127488,7 @@ pTC pTC unj fKQ -kyI +fDT xGw iCI pTC @@ -127722,7 +127722,7 @@ tlp nLY uyf klO -dbC +mlR iNR bCj tjp @@ -127992,7 +127992,7 @@ vcB vcB vcB pTC -qHo +ewl ydp uTm nfR @@ -130295,7 +130295,7 @@ uQt nia vBY eYN -oNm +wdm iyq iCO uED @@ -130572,7 +130572,7 @@ fHD tCD khb rNZ -xkV +hUZ ryp khb gmZ @@ -132131,7 +132131,7 @@ bgL mfI fvi tpg -mHL +byI oZz bpM vzA @@ -134170,7 +134170,7 @@ bMB drM mlE odw -kdL +khr eAY fot mpb @@ -139045,7 +139045,7 @@ nrd ivA cVy kSu -jBs +tAO dsT qBq fQw @@ -139216,7 +139216,7 @@ coH xrr adR abi -aeE +rJY aff afG afY @@ -140272,7 +140272,7 @@ xGK jdL juz jdL -ncT +tyF hTl tjl kdE @@ -146537,7 +146537,7 @@ feV wZE xvr rmI -tJB +hSF vTn wZE dre @@ -148849,7 +148849,7 @@ iBx nXH qAu kZE -ooJ +cfW mzX xin dJP @@ -150855,7 +150855,7 @@ aWO bLs iRi nIV -ale +dpR vyj snW auW diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index 9e5ecd8c0486f..3207e159113b2 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -1856,6 +1856,22 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/greater) +"aCV" = ( +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay Chemistry Access" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/obj/effect/turf_decal/tile/yellow/full, +/turf/open/floor/iron/large, +/area/station/medical/treatment_center) "aCX" = ( /obj/structure/table, /obj/item/stock_parts/subspace/filter, @@ -2144,6 +2160,12 @@ dir = 9 }, /area/station/science/explab) +"aIv" = ( +/obj/structure/railing/wooden_fence{ + dir = 1 + }, +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "aIA" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 9 @@ -3789,6 +3811,10 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"bhs" = ( +/obj/item/flashlight/lantern/on, +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "bht" = ( /obj/structure/closet/lasertag/red, /obj/effect/spawner/random/contraband/permabrig_gear, @@ -3842,10 +3868,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) -"bil" = ( -/obj/structure/railing/wooden_fence, -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "bin" = ( /obj/effect/turf_decal/stripes/asteroid/line{ dir = 4 @@ -5066,6 +5088,12 @@ /obj/structure/girder, /turf/open/floor/plating, /area/station/maintenance/fore) +"byV" = ( +/obj/structure/railing/wooden_fence{ + dir = 8 + }, +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "bzc" = ( /obj/machinery/status_display/evac/directional/east, /obj/effect/turf_decal/tile/blue, @@ -5212,6 +5240,16 @@ }, /turf/open/floor/iron, /area/station/command/heads_quarters/ce) +"bAW" = ( +/obj/machinery/light_switch/directional/north{ + pixel_x = -7 + }, +/obj/structure/table, +/obj/item/stock_parts/power_store/cell/high/empty, +/obj/machinery/cell_charger, +/obj/effect/turf_decal/tile/brown/fourcorners, +/turf/open/floor/iron/dark, +/area/station/engineering/lobby) "bAX" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, @@ -6109,16 +6147,6 @@ }, /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/nospawn) -"bMC" = ( -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/item/radio/intercom/directional/north, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/command/storage/eva) "bMF" = ( /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/abandoned, @@ -6350,12 +6378,6 @@ /obj/effect/turf_decal/tile/green/full, /turf/open/floor/iron/dark/smooth_large, /area/station/medical/virology) -"bPR" = ( -/obj/structure/railing/wooden_fence{ - dir = 1 - }, -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "bPV" = ( /obj/item/kirbyplants/random/dead, /turf/open/floor/plating/snowed/icemoon, @@ -7863,6 +7885,17 @@ }, /turf/open/floor/iron, /area/station/science/ordnance/testlab) +"clX" = ( +/obj/structure/rack, +/obj/item/lighter, +/obj/item/clothing/glasses/meson{ + pixel_y = 4 + }, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/reagent_containers/pill/patch/aiuri, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/command/heads_quarters/ce) "clY" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -8257,7 +8290,10 @@ dir = 8 }, /obj/machinery/light/small/directional/west, -/obj/machinery/requests_console/directional/west, +/obj/machinery/requests_console/directional/west{ + department = "Head of Personnel's Desk"; + name = "Head of Personnel's Requests Console" + }, /obj/effect/mapping_helpers/requests_console/assistance, /obj/effect/mapping_helpers/requests_console/announcement, /obj/effect/mapping_helpers/requests_console/information, @@ -9080,14 +9116,6 @@ /obj/machinery/newscaster/directional/east, /turf/open/floor/iron/white/smooth_large, /area/station/science/genetics) -"cCC" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/potato{ - name = "\improper Beepsky's emergency battery" - }, -/turf/open/floor/plating, -/area/station/maintenance/fore) "cCD" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 @@ -9891,6 +9919,14 @@ /obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"cOY" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/potato{ + name = "\improper Beepsky's emergency battery" + }, +/turf/open/floor/plating, +/area/station/maintenance/fore) "cPd" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -10292,6 +10328,27 @@ }, /turf/open/floor/wood/parquet, /area/station/service/theater) +"cWn" = ( +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/structure/table, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/structure/cable, +/obj/item/mod/module/plasma_stabilizer, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_x = -4; + pixel_y = -1 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/mod/module/signlang_radio, +/obj/item/mod/module/thermal_regulator, +/turf/open/floor/iron/dark, +/area/station/engineering/engine_smes) "cWq" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/effect/turf_decal/tile/green/half/contrasted{ @@ -11340,9 +11397,6 @@ /obj/structure/marker_beacon/burgundy, /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) -"dlu" = ( -/turf/closed/wall/mineral/wood/nonmetal, -/area/icemoon/underground/explored) "dlB" = ( /obj/structure/table/wood, /obj/item/storage/photo_album/chapel, @@ -11544,6 +11598,34 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood/large, /area/mine/eva/lower) +"doO" = ( +/obj/structure/table, +/obj/item/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/assembly/prox_sensor{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/crowbar, +/obj/item/radio/headset/headset_sci{ + pixel_x = -3 + }, +/obj/machinery/newscaster/directional/east, +/obj/machinery/light/directional/east, +/turf/open/floor/iron, +/area/station/science/robotics/lab) "doW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -12211,19 +12293,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/port/lesser) -"dxJ" = ( -/obj/structure/table, -/obj/item/crowbar/red, -/obj/item/stock_parts/cell/high{ - pixel_x = 6; - pixel_y = -3 - }, -/obj/structure/sign/poster/random/directional/west, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/hallway/primary/aft) "dxK" = ( /turf/closed/wall/r_wall, /area/station/command/meeting_room) @@ -12580,18 +12649,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"dDQ" = ( -/obj/structure/table, -/obj/machinery/cell_charger{ - pixel_y = 3 - }, -/obj/item/stock_parts/cell/high{ - pixel_y = 3 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/textured, -/area/mine/mechbay) "dDV" = ( /obj/effect/spawner/random/structure/girder, /turf/open/floor/plating, @@ -14823,15 +14880,6 @@ }, /turf/open/floor/iron, /area/station/commons/locker) -"epd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high, -/turf/open/floor/iron, -/area/station/maintenance/department/electrical) "eph" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -16951,6 +16999,12 @@ /obj/structure/table/wood, /turf/open/floor/carpet, /area/station/command/meeting_room) +"eYU" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high/empty, +/turf/open/floor/iron/dark, +/area/station/engineering/storage) "eYX" = ( /obj/effect/turf_decal/trimline/green/filled/corner{ dir = 1 @@ -20633,12 +20687,6 @@ /obj/structure/closet/crate, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"ghA" = ( -/obj/structure/railing/wooden_fence{ - dir = 5 - }, -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "ghE" = ( /obj/structure/disposalpipe/segment, /obj/machinery/camera/directional/west{ @@ -21817,6 +21865,27 @@ /obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"gBg" = ( +/obj/structure/table/glass, +/obj/item/assembly/signaler{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/reagent_containers/dropper{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stack/cable_coil, +/obj/item/pen{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/machinery/newscaster/directional/west, +/turf/open/floor/iron/cafeteria{ + dir = 8 + }, +/area/station/science/research) "gBl" = ( /obj/structure/sign/warning/electric_shock, /turf/closed/wall/r_wall, @@ -22046,16 +22115,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/science/server) -"gEo" = ( -/obj/structure/table, -/obj/item/stock_parts/cell/high, -/obj/machinery/cell_charger{ - pixel_y = 5 - }, -/turf/open/floor/iron/white/corner{ - dir = 4 - }, -/area/station/science/explab) "gEq" = ( /obj/structure/chair/office{ dir = 4 @@ -23036,22 +23095,6 @@ /obj/machinery/light/directional/west, /turf/open/floor/plating, /area/station/cargo/storage) -"gTi" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Medbay Chemistry Access" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/obj/effect/turf_decal/tile/yellow/full, -/turf/open/floor/iron/large, -/area/station/medical/treatment_center) "gTq" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -24211,6 +24254,12 @@ /obj/structure/mirror/directional/east, /turf/open/floor/iron/freezer, /area/station/commons/toilet/locker) +"hnc" = ( +/obj/structure/railing/wooden_fence{ + dir = 9 + }, +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "hnd" = ( /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, @@ -24285,6 +24334,12 @@ /obj/machinery/hydroponics/constructable, /turf/open/floor/iron/dark, /area/station/service/hydroponics) +"hop" = ( +/obj/structure/railing/wooden_fence{ + dir = 6 + }, +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "hos" = ( /obj/structure/disposalpipe/trunk/multiz/down{ dir = 1 @@ -24660,13 +24715,12 @@ /obj/structure/tank_holder/oxygen, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"htc" = ( -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/item/rcl/pre_loaded, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) +"hsU" = ( +/obj/structure/railing/wooden_fence{ + dir = 4 + }, +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "htd" = ( /obj/structure/sign/warning/docking/directional/north, /turf/open/misc/asteroid/snow/icemoon, @@ -24907,6 +24961,9 @@ }, /turf/open/floor/iron, /area/station/cargo/office) +"hwL" = ( +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "hwR" = ( /obj/machinery/camera/directional/west{ c_tag = "Security - Equipment Room" @@ -26584,6 +26641,19 @@ }, /turf/open/floor/plating/snowed/icemoon, /area/icemoon/underground/explored) +"hYU" = ( +/obj/effect/turf_decal/siding/yellow/corner, +/obj/machinery/status_display/evac/directional/south, +/obj/structure/table, +/obj/item/flatpack{ + board = /obj/item/circuitboard/machine/flatpacker; + pixel_x = -5 + }, +/obj/item/multitool{ + pixel_x = 8 + }, +/turf/open/floor/iron, +/area/station/engineering/lobby) "hZe" = ( /obj/effect/turf_decal/trimline/yellow/warning{ dir = 1 @@ -26924,12 +26994,6 @@ }, /turf/open/floor/iron/smooth, /area/station/security/holding_cell) -"idH" = ( -/obj/structure/railing/wooden_fence{ - dir = 6 - }, -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "idN" = ( /obj/structure/window/reinforced/spawner/directional/north, /obj/machinery/door/window/brigdoor/left/directional/south{ @@ -27181,28 +27245,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/starboard/fore) -"iji" = ( -/obj/structure/table, -/obj/item/multitool/circuit{ - pixel_x = -8 - }, -/obj/item/multitool/circuit{ - pixel_x = -4 - }, -/obj/item/multitool/circuit, -/obj/item/stock_parts/cell/high{ - pixel_x = 8; - pixel_y = 9 - }, -/obj/item/stock_parts/cell/high{ - pixel_x = 8; - pixel_y = -2 - }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/white/side{ - dir = 4 - }, -/area/station/science/explab) "ijj" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -27945,6 +27987,16 @@ }, /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/nospawn) +"itQ" = ( +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/radio/intercom/directional/north, +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/command/storage/eva) "itY" = ( /obj/effect/spawner/random/maintenance, /turf/open/floor/plating/snowed/icemoon, @@ -28296,26 +28348,6 @@ "izC" = ( /turf/closed/wall, /area/station/service/bar/atrium) -"izF" = ( -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/obj/structure/cable, -/obj/structure/table, -/obj/item/storage/box/lights/mixed, -/obj/item/stack/cable_coil, -/obj/item/stack/cable_coil, -/obj/item/stock_parts/cell/emproof, -/obj/item/stock_parts/cell/emproof{ - pixel_x = 6; - pixel_y = -2 - }, -/obj/machinery/light_switch/directional/south{ - pixel_x = 10 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/engineering/engine_smes) "izI" = ( /obj/machinery/door/airlock/maintenance, /obj/structure/disposalpipe/segment, @@ -28874,12 +28906,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) -"iIW" = ( -/obj/structure/table, -/obj/item/plant_analyzer, -/obj/item/stock_parts/cell/high, -/turf/open/floor/plating, -/area/station/engineering/storage/tech) "iJl" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/siding/wood{ @@ -29736,16 +29762,6 @@ /obj/structure/table/reinforced, /turf/open/floor/iron/dark, /area/station/medical/morgue) -"iWO" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/machinery/requests_console/auto_name/directional/north, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/commons/storage/primary) "iWP" = ( /obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 1 @@ -30515,17 +30531,6 @@ /obj/effect/turf_decal/tile/dark/fourcorners, /turf/open/floor/iron, /area/mine/living_quarters) -"jko" = ( -/obj/structure/railing, -/obj/structure/rack, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, -/obj/effect/spawner/random/armory/dragnet, -/turf/open/floor/iron/dark/textured, -/area/station/ai_monitored/security/armory/upper) "jkx" = ( /obj/machinery/computer/security/telescreen/engine{ dir = 8; @@ -30543,12 +30548,6 @@ /obj/effect/landmark/blobstart, /turf/open/floor/engine, /area/station/science/explab) -"jkK" = ( -/obj/structure/railing/wooden_fence{ - dir = 9 - }, -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "jkN" = ( /obj/effect/spawner/random/entertainment/arcade, /obj/machinery/status_display/ai/directional/north, @@ -31079,34 +31078,6 @@ dir = 1 }, /area/station/service/bar) -"jth" = ( -/obj/structure/table, -/obj/item/assembly/prox_sensor{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/item/assembly/prox_sensor{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/item/assembly/prox_sensor{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/item/assembly/prox_sensor{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high, -/obj/item/crowbar, -/obj/item/radio/headset/headset_sci{ - pixel_x = -3 - }, -/obj/machinery/newscaster/directional/east, -/obj/machinery/light/directional/east, -/turf/open/floor/iron, -/area/station/science/robotics/lab) "jtm" = ( /obj/machinery/porta_turret/ai{ dir = 4; @@ -31814,6 +31785,9 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/nuke_storage) +"jEa" = ( +/turf/closed/wall/mineral/wood/nonmetal, +/area/icemoon/underground/explored) "jEf" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 5 @@ -33374,6 +33348,18 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"kck" = ( +/obj/machinery/cell_charger{ + pixel_y = 5 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_y = 6 + }, +/obj/structure/table/glass, +/turf/open/floor/iron/white/side{ + dir = 9 + }, +/area/station/science/lab) "kcm" = ( /obj/structure/rack, /obj/effect/spawner/random/techstorage/command_all, @@ -33569,16 +33555,6 @@ dir = 4 }, /area/station/maintenance/port/fore) -"keX" = ( -/obj/structure/table, -/obj/item/stack/cable_coil{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/stack/cable_coil, -/obj/item/stock_parts/cell/high, -/turf/open/floor/plating, -/area/station/engineering/storage/tech) "keZ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -35019,6 +34995,12 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) +"kyM" = ( +/obj/structure/table, +/obj/item/plant_analyzer, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/plating, +/area/station/engineering/storage/tech) "kyU" = ( /obj/machinery/modular_computer/preset/id, /obj/machinery/light/directional/north, @@ -35188,6 +35170,13 @@ }, /turf/open/floor/iron, /area/station/command/bridge) +"kBw" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/rcl/pre_loaded, +/turf/open/floor/iron, +/area/station/command/heads_quarters/ce) "kBL" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 @@ -36844,11 +36833,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/large, /area/station/engineering/engine_smes) -"kYN" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lantern/on, -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "kZa" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -40266,6 +40250,17 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/general, /turf/open/floor/plating, /area/station/engineering/storage_shared) +"mci" = ( +/obj/structure/railing, +/obj/structure/rack, +/obj/structure/cable, +/obj/machinery/door/firedoor/border_only, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/obj/effect/spawner/random/armory/dragnet, +/turf/open/floor/iron/dark/textured, +/area/station/ai_monitored/security/armory/upper) "mco" = ( /obj/structure/closet/emcloset, /turf/open/floor/plating, @@ -40484,16 +40479,6 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/iron, /area/station/hallway/primary/central) -"mgu" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/machinery/ecto_sniffer{ - pixel_x = 6; - pixel_y = 6 - }, -/turf/open/floor/iron, -/area/station/science/robotics/lab) "mgy" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -40531,12 +40516,6 @@ }, /turf/open/floor/iron, /area/station/ai_monitored/command/storage/eva) -"mhj" = ( -/obj/structure/railing/wooden_fence{ - dir = 10 - }, -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "mhq" = ( /obj/structure/closet, /obj/effect/spawner/random/maintenance, @@ -41523,27 +41502,6 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics) -"myU" = ( -/obj/structure/table/glass, -/obj/item/assembly/signaler{ - pixel_x = 6; - pixel_y = 5 - }, -/obj/item/reagent_containers/dropper{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/stock_parts/cell/high, -/obj/item/stack/cable_coil, -/obj/item/pen{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/cafeteria{ - dir = 8 - }, -/area/station/science/research) "myX" = ( /obj/machinery/light/directional/north, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -42205,6 +42163,19 @@ /obj/machinery/duct, /turf/open/floor/iron/kitchen/diagonal, /area/station/service/kitchen) +"mMj" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/rods/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stack/sheet/mineral/plasma{ + amount = 30 + }, +/turf/open/floor/plating, +/area/station/engineering/engine_smes) "mMk" = ( /obj/machinery/telecomms/message_server/preset, /turf/open/floor/iron/dark/telecomms, @@ -43309,17 +43280,6 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron, /area/station/commons/locker) -"ncx" = ( -/obj/structure/table/wood, -/obj/item/soap/deluxe{ - pixel_y = 11 - }, -/obj/item/soap/deluxe{ - pixel_y = 6 - }, -/obj/item/soap/deluxe, -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "ncB" = ( /obj/machinery/door/airlock/security/glass{ name = "Brig Walkway" @@ -45437,10 +45397,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/hallway/secondary/entry) -"nEI" = ( -/obj/item/flashlight/lantern/on, -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "nEV" = ( /obj/machinery/vending/wardrobe/sec_wardrobe, /obj/structure/cable, @@ -47285,16 +47241,6 @@ /obj/structure/urinal/directional/north, /turf/open/floor/iron/freezer, /area/station/commons/toilet) -"oiB" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Chemistry Lab Utilities" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/medical/general, -/turf/open/floor/iron/smooth, -/area/station/maintenance/department/medical/central) "oiD" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -48561,6 +48507,17 @@ /obj/machinery/atmospherics/pipe/smart/simple/violet/visible/layer1, /turf/open/floor/iron, /area/station/engineering/atmos/storage) +"oAJ" = ( +/obj/structure/table/wood, +/obj/item/raptor_dex{ + pixel_y = 13 + }, +/obj/item/raptor_dex{ + pixel_y = 7 + }, +/obj/item/raptor_dex, +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "oAM" = ( /obj/structure/fluff/tram_rail/end{ dir = 4 @@ -48639,6 +48596,28 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/fore) +"oCm" = ( +/obj/structure/table, +/obj/item/multitool/circuit{ + pixel_x = -8 + }, +/obj/item/multitool/circuit{ + pixel_x = -4 + }, +/obj/item/multitool/circuit, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 8; + pixel_y = 9 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 8; + pixel_y = -2 + }, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/iron/white/side{ + dir = 4 + }, +/area/station/science/explab) "oCs" = ( /obj/structure/table, /obj/item/radio/headset/headset_med{ @@ -49499,18 +49478,6 @@ /obj/item/soap/nanotrasen, /turf/open/floor/iron/dark, /area/station/security/execution/education) -"oPq" = ( -/obj/machinery/cell_charger{ - pixel_y = 5 - }, -/obj/item/stock_parts/cell/high{ - pixel_y = 6 - }, -/obj/structure/table/glass, -/turf/open/floor/iron/white/side{ - dir = 9 - }, -/area/station/science/lab) "oPr" = ( /obj/effect/landmark/start/bartender, /obj/effect/turf_decal/siding/wood{ @@ -51026,6 +50993,16 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth, /area/station/security/holding_cell) +"pmA" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/ecto_sniffer{ + pixel_x = 6; + pixel_y = 6 + }, +/turf/open/floor/iron, +/area/station/science/robotics/lab) "pna" = ( /obj/machinery/door/poddoor/preopen{ id = "Engineering"; @@ -51427,19 +51404,6 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/stone, /area/station/service/bar/atrium) -"ptx" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/rods/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/stock_parts/cell/high, -/obj/item/stack/sheet/mineral/plasma{ - amount = 30 - }, -/turf/open/floor/plating, -/area/station/engineering/engine_smes) "ptB" = ( /obj/machinery/modular_computer/preset/id{ dir = 8 @@ -51512,27 +51476,6 @@ /obj/effect/mapping_helpers/airlock/access/all/medical/cmo, /turf/open/floor/plating, /area/station/maintenance/aft/greater) -"puI" = ( -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/obj/structure/table, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/gloves/color/yellow, -/obj/structure/cable, -/obj/item/mod/module/plasma_stabilizer, -/obj/item/stock_parts/cell/emproof{ - pixel_x = -4; - pixel_y = -1 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/item/mod/module/signlang_radio, -/obj/item/mod/module/thermal_regulator, -/turf/open/floor/iron/dark, -/area/station/engineering/engine_smes) "puN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -51563,6 +51506,16 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron/dark, /area/station/cargo/drone_bay) +"pvd" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Chemistry Lab Utilities" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/medical/general, +/turf/open/floor/iron/smooth, +/area/station/maintenance/department/medical/central) "pve" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -52447,17 +52400,6 @@ /obj/machinery/vending/wardrobe/curator_wardrobe, /turf/open/floor/engine/cult, /area/station/service/library) -"pIF" = ( -/obj/structure/rack, -/obj/item/lighter, -/obj/item/clothing/glasses/meson{ - pixel_y = 4 - }, -/obj/item/stock_parts/cell/high, -/obj/item/reagent_containers/pill/patch/aiuri, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/heads_quarters/ce) "pJb" = ( /obj/structure/sign/nanotrasen{ pixel_x = -32 @@ -53704,10 +53646,6 @@ /obj/effect/mapping_helpers/airlock/access/any/engineering/external, /turf/open/floor/plating, /area/station/medical/morgue) -"qbM" = ( -/obj/structure/ore_container/food_trough/raptor_trough, -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "qbO" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -53767,12 +53705,6 @@ /obj/machinery/plumbing/sender, /turf/open/floor/plating, /area/station/medical/chemistry) -"qde" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high/empty, -/turf/open/floor/iron/dark, -/area/station/engineering/storage) "qdl" = ( /obj/machinery/light/small/directional/east, /obj/effect/decal/cleanable/dirt, @@ -55507,6 +55439,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood, /area/station/commons/dorms) +"qBi" = ( +/obj/structure/railing/wooden_fence{ + dir = 10 + }, +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "qBj" = ( /obj/structure/cable, /turf/open/floor/iron/white, @@ -55888,6 +55826,11 @@ /obj/effect/turf_decal/bot_white, /turf/open/floor/iron/checker, /area/station/commons/storage/emergency/port) +"qGX" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lantern/on, +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "qHg" = ( /obj/structure/transit_tube/curved/flipped{ dir = 1 @@ -55930,6 +55873,10 @@ /obj/structure/flora/bush/fullgrass/style_random, /turf/open/floor/grass, /area/station/service/hydroponics) +"qHt" = ( +/obj/structure/railing/wooden_fence, +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "qHz" = ( /obj/machinery/light_switch/directional/west, /obj/machinery/disposal/bin{ @@ -58932,17 +58879,6 @@ /obj/machinery/digital_clock/directional/south, /turf/open/openspace, /area/station/medical/medbay/lobby) -"rzY" = ( -/obj/structure/table/wood, -/obj/item/raptor_dex{ - pixel_y = 13 - }, -/obj/item/raptor_dex{ - pixel_y = 7 - }, -/obj/item/raptor_dex, -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "rAr" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -59326,12 +59262,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/science/ordnance) -"rEn" = ( -/obj/structure/railing/wooden_fence{ - dir = 4 - }, -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "rEp" = ( /obj/structure/table, /obj/item/hand_labeler, @@ -59947,6 +59877,18 @@ "rQf" = ( /turf/open/floor/plating, /area/station/engineering/supermatter/room) +"rQh" = ( +/obj/structure/table, +/obj/machinery/cell_charger{ + pixel_y = 3 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_y = 3 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron/textured, +/area/mine/mechbay) "rQl" = ( /obj/structure/lattice/catwalk, /obj/structure/railing/corner, @@ -66988,6 +66930,19 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark, /area/mine/mechbay) +"tWF" = ( +/obj/structure/table, +/obj/item/crowbar/red, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 6; + pixel_y = -3 + }, +/obj/structure/sign/poster/random/directional/west, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/hallway/primary/aft) "tWK" = ( /obj/structure/cable, /turf/open/floor/plating/snowed/icemoon, @@ -67111,6 +67066,16 @@ /obj/machinery/light/directional/north, /turf/open/floor/iron, /area/station/security/prison/garden) +"tYL" = ( +/obj/structure/table, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/cell_charger{ + pixel_y = 5 + }, +/turf/open/floor/iron/white/corner{ + dir = 4 + }, +/area/station/science/explab) "tYZ" = ( /obj/machinery/door/airlock/external{ name = "External Airlock" @@ -69495,6 +69460,26 @@ }, /turf/open/floor/iron/dark, /area/mine/storage) +"uMw" = ( +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/structure/cable, +/obj/structure/table, +/obj/item/storage/box/lights/mixed, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/obj/item/stock_parts/power_store/cell/emproof, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_x = 6; + pixel_y = -2 + }, +/obj/machinery/light_switch/directional/south{ + pixel_x = 10 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/engineering/engine_smes) "uMx" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, @@ -70664,6 +70649,10 @@ }, /turf/open/floor/iron, /area/station/science/ordnance) +"vfO" = ( +/obj/structure/ore_container/food_trough/raptor_trough, +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "vfS" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -71357,6 +71346,15 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron, /area/station/security/courtroom) +"vrl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/iron, +/area/station/maintenance/department/electrical) "vrr" = ( /obj/machinery/computer/operating{ dir = 8 @@ -72257,6 +72255,16 @@ }, /turf/open/floor/iron, /area/mine/laborcamp) +"vDG" = ( +/obj/structure/table, +/obj/item/stack/cable_coil{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/stack/cable_coil, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/plating, +/area/station/engineering/storage/tech) "vDQ" = ( /obj/effect/spawner/random/decoration/flower, /obj/structure/flora/rock/pile/icy/style_random, @@ -74881,19 +74889,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/security/prison) -"wuV" = ( -/obj/effect/turf_decal/siding/yellow/corner, -/obj/machinery/status_display/evac/directional/south, -/obj/structure/table, -/obj/item/flatpack{ - board = /obj/item/circuitboard/machine/flatpacker; - pixel_x = -5 - }, -/obj/item/multitool{ - pixel_x = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/lobby) "wve" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron/white, @@ -74902,9 +74897,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/carpet, /area/station/service/chapel) -"wvu" = ( -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "wvv" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -76587,16 +76579,6 @@ /obj/effect/mapping_helpers/no_atoms_ontop, /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/surface/outdoors/nospawn) -"wUE" = ( -/obj/machinery/light_switch/directional/north{ - pixel_x = -7 - }, -/obj/structure/table, -/obj/item/stock_parts/cell/high/empty, -/obj/machinery/cell_charger, -/obj/effect/turf_decal/tile/brown/fourcorners, -/turf/open/floor/iron/dark, -/area/station/engineering/lobby) "wUJ" = ( /obj/machinery/computer/atmos_alert, /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ @@ -77908,6 +77890,16 @@ /obj/item/stack/sheet/leather, /turf/open/floor/iron, /area/station/maintenance/starboard/fore) +"xpH" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/requests_console/auto_name/directional/north, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/commons/storage/primary) "xpJ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -78453,12 +78445,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos/hfr_room) -"xxH" = ( -/obj/structure/railing/wooden_fence{ - dir = 8 - }, -/turf/open/misc/hay/icemoon, -/area/icemoon/underground/explored) "xxI" = ( /obj/machinery/airalarm/directional/north, /obj/item/kirbyplants/random, @@ -79729,6 +79715,12 @@ dir = 1 }, /area/station/security/processing) +"xQJ" = ( +/obj/structure/railing/wooden_fence{ + dir = 5 + }, +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "xQK" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -80073,6 +80065,17 @@ /obj/item/plate, /turf/open/floor/iron, /area/station/security/prison/mess) +"xWC" = ( +/obj/structure/table/wood, +/obj/item/soap/deluxe{ + pixel_y = 11 + }, +/obj/item/soap/deluxe{ + pixel_y = 6 + }, +/obj/item/soap/deluxe, +/turf/open/misc/hay/icemoon, +/area/icemoon/underground/explored) "xWG" = ( /obj/machinery/light/small/directional/south, /turf/open/floor/iron/freezer, @@ -169287,7 +169290,7 @@ hdb avh qGg uUT -dDQ +rQh lQh diI uUT @@ -170287,14 +170290,14 @@ thA thA thA thA -dlu -dlu -dlu -dlu -dlu -dlu -dlu -dlu +jEa +jEa +jEa +jEa +jEa +jEa +jEa +jEa qgQ qgQ rrl @@ -170544,14 +170547,14 @@ thA thA thA thA -dlu -qbM -wvu -wvu -bPR -qbM -wvu -bil +jEa +vfO +hwL +hwL +aIv +vfO +hwL +qHt ijY iDt iDt @@ -170801,14 +170804,14 @@ thA thA thA thA -dlu -nEI -wvu -wvu -bPR -nEI -wvu -bil +jEa +bhs +hwL +hwL +aIv +bhs +hwL +qHt iDt iDt iDt @@ -171058,14 +171061,14 @@ thA thA thA thA -dlu -wvu -wvu -wvu -bPR -wvu -wvu -bil +jEa +hwL +hwL +hwL +aIv +hwL +hwL +qHt iDt iDt ayJ @@ -171315,14 +171318,14 @@ tjo thA thA thA -dlu -rEn -rEn -wvu -ghA -rEn -wvu -idH +jEa +hsU +hsU +hwL +xQJ +hsU +hwL +hop iDt iDt iDt @@ -171572,14 +171575,14 @@ tjo thA thA thA -dlu -wvu -wvu -wvu -wvu -wvu -wvu -wvu +jEa +hwL +hwL +hwL +hwL +hwL +hwL +hwL iDt iDt iDt @@ -171829,14 +171832,14 @@ tjo thA thA thA -dlu -ncx -kYN -wvu -wvu -rzY -kYN -wvu +jEa +xWC +qGX +hwL +hwL +oAJ +qGX +hwL ayJ iDt iDt @@ -172086,14 +172089,14 @@ tjo thA thA thA -dlu -wvu -wvu -wvu -wvu -wvu -wvu -wvu +jEa +hwL +hwL +hwL +hwL +hwL +hwL +hwL iDt iDt iDt @@ -172343,14 +172346,14 @@ tjo thA thA thA -dlu -xxH -xxH -wvu -jkK -xxH -wvu -mhj +jEa +byV +byV +hwL +hnc +byV +hwL +qBi iDt iDt iDt @@ -172600,14 +172603,14 @@ tjo thA thA thA -dlu -wvu -wvu -wvu -bPR -wvu -wvu -bil +jEa +hwL +hwL +hwL +aIv +hwL +hwL +qHt iDt iDt ayJ @@ -172857,14 +172860,14 @@ tjo thA thA thA -dlu -nEI -wvu -wvu -bPR -nEI -wvu -bil +jEa +bhs +hwL +hwL +aIv +bhs +hwL +qHt iDt iDt iDt @@ -173114,14 +173117,14 @@ tjo thA thA thA -dlu -qbM -wvu -wvu -bPR -qbM -wvu -bil +jEa +vfO +hwL +hwL +aIv +vfO +hwL +qHt iDt iDt iDt @@ -173371,14 +173374,14 @@ tjo thA thA thA -dlu -dlu -dlu -dlu -dlu -dlu -dlu -dlu +jEa +jEa +jEa +jEa +jEa +jEa +jEa +jEa iDx rrl iDx @@ -230667,7 +230670,7 @@ lJO qzs jnV lJO -iWO +xpH gHS iMT hqx @@ -237675,7 +237678,7 @@ mNY kCn mNY dUn -ptx +mMj cpH kbJ kbJ @@ -237686,7 +237689,7 @@ epY vWe kIt kMY -qde +eYU lha kAK iLY @@ -238090,7 +238093,7 @@ aWk diC bJj lyG -jko +mci bXy feJ xWb @@ -238705,7 +238708,7 @@ mNY akL tvF tvF -izF +uMw gTK ruO fKe @@ -238932,7 +238935,7 @@ ylU bep paM xxQ -keX +vDG kzO gdP ykL @@ -239402,7 +239405,7 @@ wqx gEb gYp bWn -bMC +itQ cGt wRI qdE @@ -239959,7 +239962,7 @@ dnq vrX pua paM -iIW +kyM vJI uud gdP @@ -239990,7 +239993,7 @@ mNY ixG aPf dzJ -puI +cWn twt mEw sSJ @@ -240234,7 +240237,7 @@ dPT pRj pMu gVD -dxJ +tWF ajF qwe uJH @@ -241776,7 +241779,7 @@ vvv tTV jtA bID -wUE +bAW miw gCK cMd @@ -242041,7 +242044,7 @@ dcC jGB akz sCA -pIF +clX ojv bAT eri @@ -242300,7 +242303,7 @@ wHj mBB juH ojv -htc +kBw mDw jDT qKQ @@ -242810,7 +242813,7 @@ bDz rSC inE oPU -wuV +hYU qnC qnC sCA @@ -245556,7 +245559,7 @@ bln bln fsm bUx -cCC +cOY wph fnS skl @@ -246892,7 +246895,7 @@ veU vEQ kRP kRP -oiB +pvd kRP pao cGA @@ -247661,7 +247664,7 @@ sEz jFZ uoV gnb -gTi +aCV whh pQL nCV @@ -257423,8 +257426,8 @@ gqK nxU gjg dxg -jth -mgu +doO +pmA dkr cHQ jDm @@ -257705,7 +257708,7 @@ kLy bGA lKq bNu -myU +gBg bKm xMT hjE @@ -257713,8 +257716,8 @@ sJP bkS pJc iBO -iji -gEo +oCm +tYL bgx buv jhC @@ -259189,7 +259192,7 @@ fLb oHh kKL bpQ -epd +vrl oih dmL lUC @@ -260251,7 +260254,7 @@ mrw kuV cAi qWn -oPq +kck fOR tFF tia diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 6cd01a35c9daf..5e7ab642c2741 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -216,13 +216,6 @@ }, /turf/open/floor/iron, /area/station/engineering/main) -"aev" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/item/stock_parts/cell/high, -/turf/open/floor/plating, -/area/station/maintenance/starboard/greater) "aez" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -1105,14 +1098,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood, /area/station/command/corporate_showroom) -"avJ" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) "avK" = ( /turf/closed/wall, /area/station/maintenance/fore/lesser) @@ -4887,6 +4872,15 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central) +"bKi" = ( +/obj/structure/rack, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/obj/machinery/light/small/directional/west, +/obj/effect/spawner/random/armory/dragnet, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/security/armory) "bKv" = ( /obj/item/pen, /obj/structure/table/reinforced, @@ -5167,16 +5161,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/security/brig) -"bPu" = ( -/obj/structure/table, -/obj/machinery/cell_charger{ - pixel_y = 5 - }, -/obj/item/stack/cable_coil, -/obj/item/multitool, -/obj/item/stock_parts/cell/high, -/turf/open/floor/engine, -/area/station/science/xenobiology) "bPB" = ( /obj/structure/sign/warning/biohazard, /turf/closed/wall, @@ -7433,6 +7417,12 @@ }, /turf/open/floor/plating, /area/station/science/genetics) +"cIl" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "cIK" = ( /obj/machinery/smartfridge/chemistry/preloaded, /obj/effect/turf_decal/tile/yellow/fourcorners, @@ -7459,12 +7449,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/aft/greater) -"cIS" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "cIU" = ( /obj/machinery/vending/coffee, /turf/open/floor/wood, @@ -9208,20 +9192,6 @@ /obj/structure/closet/emcloset, /turf/open/floor/plating, /area/station/hallway/secondary/entry) -"dqE" = ( -/obj/structure/closet/toolcloset, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/machinery/light/small/directional/north, -/obj/item/lightreplacer{ - pixel_y = 7 - }, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/station/engineering/storage_shared) "dqI" = ( /obj/effect/turf_decal/bot, /obj/machinery/vending/cigarette, @@ -9843,6 +9813,22 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/science/robotics/mechbay) +"dEk" = ( +/obj/effect/turf_decal/bot, +/obj/structure/rack, +/obj/machinery/status_display/evac/directional/east, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/item/flatpack{ + board = /obj/item/circuitboard/machine/flatpacker; + pixel_x = -5 + }, +/obj/item/multitool{ + pixel_x = 8 + }, +/turf/open/floor/iron/checker, +/area/station/engineering/storage_shared) "dEx" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -10986,6 +10972,30 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plating, /area/station/security/prison) +"dXp" = ( +/obj/structure/table, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/crowbar, +/obj/item/grenade/chem_grenade/smart_metal_foam, +/obj/item/grenade/chem_grenade/smart_metal_foam, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_x = -6; + pixel_y = 2 + }, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_x = 4; + pixel_y = 6 + }, +/turf/open/floor/iron, +/area/station/engineering/main) "dXs" = ( /obj/structure/secure_safe/directional/north{ name = "armory safe A" @@ -11675,6 +11685,18 @@ dir = 8 }, /area/station/service/chapel) +"ehL" = ( +/obj/effect/turf_decal/trimline/purple/filled/warning{ + dir = 1 + }, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/siding/purple{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/science/explab) "ehX" = ( /turf/open/floor/iron/dark, /area/station/medical/storage) @@ -12669,6 +12691,15 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron/white, /area/station/medical/surgery/theatre) +"eyz" = ( +/obj/machinery/cell_charger{ + pixel_y = 4 + }, +/obj/structure/table/glass, +/obj/item/stock_parts/power_store/cell/high, +/obj/structure/window/reinforced/spawner/directional/west, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "eyD" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, @@ -14326,6 +14357,20 @@ /obj/item/aquarium_kit, /turf/open/floor/iron, /area/station/hallway/secondary/service) +"ffO" = ( +/obj/structure/closet/toolcloset, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/machinery/light/small/directional/north, +/obj/item/lightreplacer{ + pixel_y = 7 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/station/engineering/storage_shared) "ffP" = ( /obj/effect/spawner/random/structure/grille, /turf/open/floor/plating/foam{ @@ -15169,6 +15214,19 @@ /obj/effect/mapping_helpers/airlock/access/all/security/entrance, /turf/open/floor/iron, /area/station/security/brig) +"frK" = ( +/obj/structure/table/glass, +/obj/machinery/cell_charger, +/obj/item/stack/cable_coil, +/obj/item/assembly/igniter, +/obj/item/stock_parts/power_store/cell, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/science/lobby) "frZ" = ( /obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/components/binary/pump{ @@ -15344,6 +15402,20 @@ /obj/structure/marker_beacon/olive, /turf/open/space/basic, /area/space/nearstation) +"fxE" = ( +/obj/structure/table/reinforced, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 4; + pixel_y = 5 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = -8; + pixel_y = 9 + }, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/cell_charger, +/turf/open/floor/iron, +/area/station/science/robotics/lab) "fxI" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -16126,6 +16198,13 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/ce) +"fMR" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/plating, +/area/station/maintenance/starboard/greater) "fMT" = ( /obj/structure/table, /obj/item/radio/intercom/directional/south, @@ -16762,6 +16841,20 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"gaP" = ( +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/rods/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stack/sheet/mineral/plasma{ + amount = 30 + }, +/obj/item/gps, +/obj/structure/closet/crate/engineering, +/turf/open/floor/plating, +/area/station/engineering/main) "gaU" = ( /obj/machinery/button/door/directional/west{ id = "hop"; @@ -16818,6 +16911,20 @@ /obj/effect/mapping_helpers/airlock/unres, /turf/open/floor/plating, /area/station/science/research) +"gcz" = ( +/obj/structure/closet/crate, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/effect/spawner/random/engineering/flashlight, +/obj/effect/spawner/random/engineering/flashlight, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) "gcA" = ( /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=5-Customs"; @@ -19642,6 +19749,16 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central) +"hcA" = ( +/obj/structure/table, +/obj/machinery/cell_charger{ + pixel_y = 5 + }, +/obj/item/stack/cable_coil, +/obj/item/multitool, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/engine, +/area/station/science/xenobiology) "hcP" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, @@ -22689,19 +22806,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/space_hut) -"igr" = ( -/obj/structure/table/glass, -/obj/machinery/cell_charger, -/obj/item/stack/cable_coil, -/obj/item/assembly/igniter, -/obj/item/stock_parts/cell, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) "igy" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible, /obj/machinery/requests_console/directional/east{ @@ -22787,25 +22891,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/engineering/storage/tech) -"ihF" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/machinery/firealarm/directional/west, -/obj/machinery/camera/directional/north{ - c_tag = "Science Mechbay"; - network = list("ss13","rd") - }, -/obj/machinery/button/door/directional/north{ - id = "mechbay"; - name = "Mech Bay Shutters Control"; - req_access = list("robotics") - }, -/turf/open/floor/iron, -/area/station/science/robotics/mechbay) "ihW" = ( /obj/structure/lattice/catwalk, /obj/structure/disposalpipe/trunk{ @@ -25564,13 +25649,6 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/carpet, /area/station/command/heads_quarters/captain/private) -"jdB" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron, -/area/station/engineering/main) "jdH" = ( /obj/structure/closet/crate/freezer/blood, /obj/effect/turf_decal/siding/white, @@ -26388,20 +26466,6 @@ }, /turf/open/floor/iron, /area/station/commons/locker) -"jrR" = ( -/obj/structure/table/reinforced, -/obj/item/stock_parts/cell/high{ - pixel_x = 4; - pixel_y = 5 - }, -/obj/item/stock_parts/cell/high{ - pixel_x = -8; - pixel_y = 9 - }, -/obj/item/stock_parts/cell/high, -/obj/machinery/cell_charger, -/turf/open/floor/iron, -/area/station/science/robotics/lab) "jrY" = ( /obj/machinery/door/airlock/external{ name = "Transport Airlock" @@ -27201,16 +27265,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/fore) -"jEh" = ( -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/item/rcl/pre_loaded, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) "jEr" = ( /obj/machinery/holopad/secure, /obj/machinery/flasher/directional/west{ @@ -29971,23 +30025,6 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/iron, /area/station/hallway/primary/aft) -"kAh" = ( -/obj/structure/closet/crate, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/item/stack/cable_coil{ - pixel_x = 3; - pixel_y = -7 - }, -/obj/item/stock_parts/cell/high, -/obj/machinery/light_switch/directional/north, -/obj/effect/spawner/random/engineering/flashlight, -/obj/effect/spawner/random/engineering/flashlight, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) "kAp" = ( /obj/machinery/door/window/left/directional/west{ name = "Disposals Chute" @@ -30853,30 +30890,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/commons/locker) -"kRc" = ( -/obj/structure/table, -/obj/item/multitool{ - pixel_x = 4; - pixel_y = 12 - }, -/obj/item/multitool{ - pixel_x = -4; - pixel_y = 8 - }, -/obj/item/stock_parts/cell/high{ - pixel_y = -4 - }, -/obj/item/stock_parts/cell/high{ - pixel_x = -4; - pixel_y = -6 - }, -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible/layer5, -/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, -/obj/item/multitool{ - pixel_y = 10 - }, -/turf/open/floor/iron/dark/textured, -/area/station/engineering/atmos) "kRe" = ( /turf/open/floor/iron, /area/station/cargo/miningoffice) @@ -32128,15 +32141,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/fore) -"loY" = ( -/obj/structure/rack, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 - }, -/obj/machinery/light/small/directional/west, -/obj/effect/spawner/random/armory/dragnet, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) "lpo" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 @@ -33579,15 +33583,6 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/iron/dark, /area/station/security/courtroom) -"lUo" = ( -/obj/machinery/cell_charger{ - pixel_y = 4 - }, -/obj/structure/table/glass, -/obj/item/stock_parts/cell/high, -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "lUp" = ( /obj/structure/sink/kitchen/directional/south{ desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; @@ -37199,30 +37194,6 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/security/prison) -"ngY" = ( -/obj/structure/table, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/crowbar, -/obj/item/grenade/chem_grenade/smart_metal_foam, -/obj/item/grenade/chem_grenade/smart_metal_foam, -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/obj/item/stock_parts/cell/emproof{ - pixel_x = -6; - pixel_y = 2 - }, -/obj/item/stock_parts/cell/emproof{ - pixel_x = 4; - pixel_y = 6 - }, -/turf/open/floor/iron, -/area/station/engineering/main) "nhh" = ( /obj/structure/table/wood, /obj/item/gavelblock, @@ -37566,6 +37537,13 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/office) +"nnu" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron, +/area/station/engineering/main) "nnD" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 4 @@ -39812,20 +39790,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/science/research) -"oaC" = ( -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/rods/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/stock_parts/cell/high, -/obj/item/stack/sheet/mineral/plasma{ - amount = 30 - }, -/obj/item/gps, -/obj/structure/closet/crate/engineering, -/turf/open/floor/plating, -/area/station/engineering/main) "obk" = ( /obj/item/target/alien, /turf/open/floor/plating, @@ -39900,6 +39864,12 @@ /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/rd) +"obU" = ( +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/crap, +/obj/structure/table/wood, +/turf/open/floor/carpet, +/area/station/command/corporate_showroom) "ocg" = ( /obj/structure/extinguisher_cabinet/directional/south, /obj/structure/cable, @@ -42020,12 +41990,6 @@ /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/iron, /area/station/science/xenobiology) -"oQS" = ( -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/crap, -/obj/structure/table/wood, -/turf/open/floor/carpet, -/area/station/command/corporate_showroom) "oQZ" = ( /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=1.5-Fore-Central"; @@ -42049,6 +42013,32 @@ }, /turf/open/floor/iron/cafeteria, /area/station/service/kitchen) +"oRA" = ( +/obj/structure/table, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/item/stack/cable_coil, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/clothing/ears/earmuffs{ + pixel_x = -3; + pixel_y = -2 + }, +/obj/item/clothing/ears/earmuffs{ + pixel_x = -5; + pixel_y = 6 + }, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_x = -4; + pixel_y = 6 + }, +/turf/open/floor/iron, +/area/station/engineering/main) "oRM" = ( /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ dir = 4 @@ -42624,6 +42614,15 @@ }, /turf/open/floor/iron/white, /area/station/command/heads_quarters/cmo) +"pcP" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/command/gateway) "pcS" = ( /obj/item/stack/ore/silver, /obj/item/stack/ore/silver, @@ -46153,20 +46152,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/carpet, /area/station/service/library) -"qqp" = ( -/obj/structure/closet/crate, -/obj/item/stock_parts/cell/high, -/obj/item/stack/cable_coil{ - pixel_x = 3; - pixel_y = -7 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/effect/spawner/random/engineering/flashlight, -/obj/effect/spawner/random/engineering/flashlight, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) "qqr" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/stripes/line, @@ -46940,15 +46925,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/courtroom) -"qGc" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/command/gateway) "qGn" = ( /obj/structure/table, /obj/item/hfr_box/body/waste_output, @@ -49578,13 +49554,6 @@ }, /turf/open/floor/iron, /area/station/medical/medbay/lobby) -"ryp" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/machinery/airalarm/directional/east, -/obj/item/stock_parts/cell/high, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "ryA" = ( /obj/item/cigbutt, /obj/structure/table/reinforced, @@ -49753,32 +49722,6 @@ "rAW" = ( /turf/closed/wall, /area/station/security/prison/work) -"rBe" = ( -/obj/structure/table, -/obj/item/stack/cable_coil{ - pixel_x = 3; - pixel_y = -7 - }, -/obj/item/stack/cable_coil, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/clothing/ears/earmuffs{ - pixel_x = -3; - pixel_y = -2 - }, -/obj/item/clothing/ears/earmuffs{ - pixel_x = -5; - pixel_y = 6 - }, -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/obj/item/stock_parts/cell/emproof{ - pixel_x = -4; - pixel_y = 6 - }, -/turf/open/floor/iron, -/area/station/engineering/main) "rBi" = ( /obj/machinery/airalarm/directional/west, /obj/effect/turf_decal/stripes/line{ @@ -52680,6 +52623,13 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"sDl" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/machinery/airalarm/directional/east, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "sDo" = ( /obj/structure/cable, /obj/effect/landmark/event_spawn, @@ -54592,6 +54542,30 @@ /obj/item/radio/intercom/prison/directional/north, /turf/open/floor/iron, /area/station/security/prison) +"tkT" = ( +/obj/structure/table, +/obj/item/multitool{ + pixel_x = 4; + pixel_y = 12 + }, +/obj/item/multitool{ + pixel_x = -4; + pixel_y = 8 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_y = -4 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = -4; + pixel_y = -6 + }, +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible/layer5, +/obj/machinery/atmospherics/pipe/smart/simple/purple/visible, +/obj/item/multitool{ + pixel_y = 10 + }, +/turf/open/floor/iron/dark/textured, +/area/station/engineering/atmos) "tlh" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -54984,6 +54958,14 @@ /obj/item/knife/kitchen, /turf/open/floor/iron/white, /area/station/science/cytology) +"tsN" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/light_switch/directional/north, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/command/teleporter) "tsT" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -56717,17 +56699,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/maintenance/starboard/greater) -"tXl" = ( -/obj/structure/table, -/obj/item/stack/cable_coil{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/stack/cable_coil, -/obj/item/stock_parts/cell/high, -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "tXx" = ( /obj/effect/turf_decal/trimline/green/filled/corner{ dir = 8 @@ -57829,6 +57800,25 @@ /obj/structure/chair/stool/directional/east, /turf/open/floor/iron, /area/station/commons/dorms) +"urN" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/firealarm/directional/west, +/obj/machinery/camera/directional/north{ + c_tag = "Science Mechbay"; + network = list("ss13","rd") + }, +/obj/machinery/button/door/directional/north{ + id = "mechbay"; + name = "Mech Bay Shutters Control"; + req_access = list("robotics") + }, +/turf/open/floor/iron, +/area/station/science/robotics/mechbay) "urQ" = ( /obj/structure/lattice/catwalk, /obj/item/stack/cable_coil, @@ -58914,22 +58904,6 @@ /obj/machinery/computer/accounting, /turf/open/floor/wood, /area/station/command/heads_quarters/hop) -"uJz" = ( -/obj/effect/turf_decal/bot, -/obj/structure/rack, -/obj/machinery/status_display/evac/directional/east, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/item/flatpack{ - board = /obj/item/circuitboard/machine/flatpacker; - pixel_x = -5 - }, -/obj/item/multitool{ - pixel_x = 8 - }, -/turf/open/floor/iron/checker, -/area/station/engineering/storage_shared) "uJB" = ( /obj/structure/chair/stool/directional/east, /turf/open/floor/iron, @@ -59286,6 +59260,14 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics/garden) +"uPS" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/ai_monitored/command/storage/eva) "uQe" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -61572,18 +61554,6 @@ }, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/rd) -"vCR" = ( -/obj/effect/turf_decal/trimline/purple/filled/warning{ - dir = 1 - }, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/effect/turf_decal/siding/purple{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/science/explab) "vDc" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -63552,6 +63522,16 @@ /obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"wiQ" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/rcl/pre_loaded, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/command/heads_quarters/ce) "wiS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -64452,6 +64432,17 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"wAc" = ( +/obj/structure/table, +/obj/item/stack/cable_coil{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/stack/cable_coil, +/obj/item/stock_parts/power_store/cell/high, +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "wAk" = ( /obj/machinery/status_display/evac/directional/south, /obj/structure/disposalpipe/segment{ @@ -67049,14 +67040,6 @@ /obj/structure/disposalpipe/trunk, /turf/open/floor/iron/dark, /area/station/hallway/primary/central) -"xxn" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/machinery/light_switch/directional/north, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/command/teleporter) "xxF" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -68571,6 +68554,23 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron, /area/station/security/courtroom) +"xZe" = ( +/obj/structure/closet/crate, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/item/stack/cable_coil{ + pixel_x = 3; + pixel_y = -7 + }, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/light_switch/directional/north, +/obj/effect/spawner/random/engineering/flashlight, +/obj/effect/spawner/random/engineering/flashlight, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) "xZu" = ( /obj/structure/sink/kitchen/directional/east{ desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; @@ -85318,7 +85318,7 @@ lMJ lMJ lMJ pnI -qqp +gcz xDu pcS pnI @@ -86859,7 +86859,7 @@ jXu bZz vRr paD -kAh +xZe dSG apC sUD @@ -88201,7 +88201,7 @@ kRA jUb xYq dqN -cIS +cIl jUb rvI jUb @@ -93073,7 +93073,7 @@ jIg dTr rIL bwN -avJ +uPS ukk rGm gqX @@ -94353,7 +94353,7 @@ ndS urA pFG gBD -xxn +tsN fRu hVE xXw @@ -96100,7 +96100,7 @@ aaa aaa aeq xCo -loY +bKi tTP fdQ uou @@ -96142,7 +96142,7 @@ gGy qVc dMY jYL -lUo +eyz aAt duI pCO @@ -96414,7 +96414,7 @@ haP jzN fEC eQe -oQS +obU iAA oSo cgF @@ -97455,7 +97455,7 @@ rgZ suW hJF cZK -ihF +urN cXg nyy gVl @@ -98490,7 +98490,7 @@ cBV xlv eut bUo -jrR +fxE jtS bFH mMl @@ -98985,7 +98985,7 @@ nse bmb lwg aAK -qGc +pcP tvE qJU hPM @@ -99506,7 +99506,7 @@ kON ylQ bGC wHu -igr +frK ibw ibw nIP @@ -102083,7 +102083,7 @@ ftj wXF doM tZo -vCR +ehL oFT gvS oYZ @@ -107697,10 +107697,10 @@ psZ psZ qXB gAU -tXl +wAc oUK eRR -ryp +sDl cdX sDE hjS @@ -107711,7 +107711,7 @@ ggM ggM dLq lzL -aev +fMR lzL lzL scG @@ -108454,7 +108454,7 @@ rpx dPy loA poc -ngY +dXp uXd tfg tfg @@ -108711,12 +108711,12 @@ oKx gLK joo sHT -rBe +oRA uXd dVc bYp gXu -oaC +gaP uXd gMG dWG @@ -109239,7 +109239,7 @@ woL jLo nwC nLz -jEh +wiQ hYE rEd sby @@ -109487,7 +109487,7 @@ cnK jPe dPy poc -jdB +nnu cnK giH aJj @@ -111293,7 +111293,7 @@ qLw tdf mdk kYG -dqE +ffO oFH oFH sSz @@ -111807,7 +111807,7 @@ hko uLp qTX kYG -uJz +dEk iHy vSC eKw @@ -113630,7 +113630,7 @@ efd nwK fFC uVf -kRc +tkT gDq ich jnQ @@ -118805,7 +118805,7 @@ aaa lMJ jlU jlU -bPu +hcA aYl kcu jlU diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm index 1ae71b1799f2c..b38b99867ab47 100644 --- a/_maps/map_files/Mining/Lavaland.dmm +++ b/_maps/map_files/Mining/Lavaland.dmm @@ -1006,15 +1006,15 @@ /obj/structure/cable, /obj/effect/decal/cleanable/dirt, /obj/structure/rack, -/obj/item/stock_parts/cell/high{ +/obj/item/stock_parts/power_store/cell/high{ pixel_x = 6; pixel_y = 7 }, -/obj/item/stock_parts/cell/high{ +/obj/item/stock_parts/power_store/cell/high{ pixel_x = -3; pixel_y = 5 }, -/obj/item/stock_parts/cell/high{ +/obj/item/stock_parts/power_store/cell/high{ pixel_x = 3 }, /turf/open/floor/plating, @@ -4390,7 +4390,7 @@ /area/mine/maintenance/public/south) "zd" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/stock_parts/cell/crap{ +/obj/item/stock_parts/power_store/cell/crap{ desc = "A legendary infinite-capacity power cell. This one looks like a poor quality AA battery with a coat of flaking gold paint."; icon_state = "icell"; name = "infinite-capacity power cell" @@ -6728,8 +6728,8 @@ /obj/machinery/cell_charger{ pixel_y = 3 }, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high{ +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high{ pixel_y = 3 }, /obj/effect/turf_decal/trimline/purple/filled/line{ diff --git a/_maps/map_files/NorthStar/north_star.dmm b/_maps/map_files/NorthStar/north_star.dmm index 7ce411f102fc1..0791f34e05b23 100644 --- a/_maps/map_files/NorthStar/north_star.dmm +++ b/_maps/map_files/NorthStar/north_star.dmm @@ -2709,28 +2709,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/textured_large, /area/station/cargo/storage) -"aJO" = ( -/obj/structure/window/reinforced/plasma/spawner/directional/east, -/obj/structure/table/reinforced/plasmarglass, -/obj/item/stock_parts/cell/lead{ - pixel_x = -5; - pixel_y = 8 - }, -/obj/item/usb_cable{ - name = "jumper cable"; - pixel_x = -10; - pixel_y = 12 - }, -/obj/item/lead_pipe{ - pixel_x = -5 - }, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = 6; - pixel_y = 7 - }, -/obj/item/reagent_containers/syringe, -/turf/open/floor/pod/dark, -/area/station/service/kitchen/abandoned) "aJT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -3270,20 +3248,6 @@ /obj/machinery/newscaster/directional/north, /turf/open/floor/iron/dark, /area/station/maintenance/disposal/incinerator) -"aRG" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/effect/turf_decal/stripes/white/line{ - dir = 4 - }, -/obj/item/folder/white{ - pixel_y = 13 - }, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/science/lab) "aRI" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -4468,14 +4432,6 @@ }, /turf/open/floor/pod/light, /area/station/maintenance/floor4/starboard/fore) -"bfA" = ( -/obj/effect/turf_decal/bot, -/obj/structure/table/reinforced, -/obj/item/stock_parts/cell/high, -/obj/machinery/cell_charger, -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/robotics/mechbay) "bfC" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -5284,13 +5240,6 @@ /obj/item/radio/intercom/directional/east, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"bnI" = ( -/obj/structure/table/reinforced, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/iron/dark/smooth_large, -/area/station/science/robotics/lab) "bnL" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 1 @@ -5442,14 +5391,6 @@ /obj/item/crowbar/mechremoval, /turf/open/floor/iron/large, /area/station/science/robotics/lab) -"bpD" = ( -/obj/effect/turf_decal/siding/white, -/obj/structure/railing, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/structure/table/reinforced/rglass, -/turf/open/floor/iron/large, -/area/station/science/robotics/lab) "bpE" = ( /obj/effect/spawner/random/trash/mess, /obj/effect/decal/cleanable/dirt, @@ -20604,6 +20545,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/virology) +"frG" = ( +/obj/structure/rack, +/obj/effect/spawner/random/armory/dragnet, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/security/armory) "frL" = ( /turf/closed/wall, /area/station/engineering/gravity_generator) @@ -24323,6 +24269,24 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/prison/visit) +"gra" = ( +/obj/structure/rack, +/obj/item/stock_parts/micro_laser{ + pixel_y = 7 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = -4; + pixel_y = -6 + }, +/obj/item/vending_refill/wardrobe/science_wardrobe{ + pixel_y = 18 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/iron/white, +/area/station/science/lower) "grb" = ( /obj/effect/turf_decal/trimline/green/filled/line, /obj/effect/turf_decal/trimline/green/filled/line{ @@ -25328,14 +25292,6 @@ }, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/cmo) -"gEo" = ( -/obj/structure/table/reinforced, -/obj/item/stock_parts/cell/high, -/obj/machinery/cell_charger, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "gEv" = ( /obj/machinery/camera/directional/south{ c_tag = "Genetics Lab" @@ -26255,6 +26211,21 @@ initial_gas_mix = "TEMP=2.7" }, /area/station/science/ordnance/bomb) +"gQW" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/airalarm/directional/north, +/obj/structure/rack, +/obj/item/stock_parts/power_store/cell/lead, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/cargo/storage) "gRf" = ( /obj/machinery/door/airlock/public/glass{ name = "Public Airlock" @@ -26749,21 +26720,6 @@ dir = 4 }, /area/station/engineering/storage/tech) -"gYy" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/airalarm/directional/north, -/obj/structure/rack, -/obj/item/stock_parts/cell/lead, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/cargo/storage) "gYI" = ( /obj/structure/fluff/shower_drain, /obj/machinery/duct, @@ -28966,12 +28922,6 @@ /obj/machinery/duct, /turf/open/floor/iron/white, /area/station/command/heads_quarters/captain/private) -"hBF" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/ai_monitored/command/storage/eva) "hBG" = ( /obj/structure/railing{ dir = 1 @@ -30903,6 +30853,14 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/iron, /area/station/engineering/engine_smes) +"ibO" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high/empty, +/obj/structure/sign/poster/contraband/random/directional/east, +/turf/open/floor/iron/dark, +/area/station/commons/vacant_room/commissary) "ibT" = ( /obj/effect/turf_decal/delivery, /obj/effect/decal/cleanable/dirt, @@ -31320,20 +31278,6 @@ /obj/machinery/vending/drugs, /turf/open/floor/iron/white, /area/station/medical/pharmacy) -"iht" = ( -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/rods/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/stock_parts/cell/high, -/obj/item/stack/sheet/mineral/plasma{ - amount = 30 - }, -/obj/item/gps, -/obj/structure/closet/crate/engineering, -/turf/open/floor/plating, -/area/station/engineering/lobby) "ihC" = ( /obj/item/stack/sheet/iron, /turf/open/floor/plating, @@ -42024,6 +41968,14 @@ }, /turf/open/floor/iron/dark/side, /area/station/engineering/engine_smes) +"kSG" = ( +/obj/effect/turf_decal/bot, +/obj/structure/table/reinforced, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/cell_charger, +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/iron/dark/smooth_large, +/area/station/science/robotics/mechbay) "kSN" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -42140,26 +42092,6 @@ }, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/port/aft) -"kUf" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/table/reinforced/rglass, -/obj/machinery/cell_charger{ - pixel_y = 10 - }, -/obj/machinery/cell_charger{ - pixel_y = 1; - layer = 2.91 - }, -/obj/item/stock_parts/cell/high{ - pixel_y = 9; - pixel_x = -1 - }, -/obj/item/stock_parts/cell/high{ - pixel_x = -1; - layer = 3.01 - }, -/turf/open/floor/iron/white/textured, -/area/station/medical/treatment_center) "kUh" = ( /obj/item/paper_bin, /obj/structure/table/reinforced/rglass, @@ -42606,6 +42538,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/hallway/floor3/fore) +"kZI" = ( +/obj/structure/table/reinforced, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/cell_charger, +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "kZS" = ( /obj/effect/turf_decal/siding/wood, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -47566,22 +47506,6 @@ dir = 4 }, /area/station/hallway/secondary/exit) -"mlC" = ( -/obj/structure/table, -/obj/item/storage/toolbox/emergency{ - pixel_y = 12 - }, -/obj/item/stack/cable_coil/cut{ - pixel_y = 7 - }, -/obj/item/stock_parts/cell/lead{ - pixel_x = 5; - pixel_y = 4 - }, -/obj/item/wirecutters, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) "mlH" = ( /obj/structure/sign/departments/court{ pixel_y = 32 @@ -49279,12 +49203,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/execution/education) -"mHo" = ( -/obj/structure/rack, -/obj/item/mod/core/standard, -/obj/item/stock_parts/cell/high, -/turf/open/floor/pod/light, -/area/station/maintenance/floor3/port/aft) "mHu" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 10 @@ -50918,16 +50836,6 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/floor1/aft) -"ndG" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 - }, -/obj/machinery/status_display/ai/directional/east, -/turf/open/floor/iron/dark, -/area/station/science/auxlab) "ndL" = ( /obj/effect/turf_decal/trimline/green/warning{ dir = 1 @@ -52483,6 +52391,12 @@ dir = 4 }, /area/station/hallway/floor1/fore) +"nwk" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/ai_monitored/command/storage/eva) "nwx" = ( /obj/item/wallframe/button, /obj/effect/mapping_helpers/burnt_floor, @@ -52539,6 +52453,28 @@ }, /turf/open/floor/plating, /area/station/maintenance/disposal) +"nxB" = ( +/obj/structure/window/reinforced/plasma/spawner/directional/east, +/obj/structure/table/reinforced/plasmarglass, +/obj/item/stock_parts/power_store/cell/lead{ + pixel_x = -5; + pixel_y = 8 + }, +/obj/item/usb_cable{ + name = "jumper cable"; + pixel_x = -10; + pixel_y = 12 + }, +/obj/item/lead_pipe{ + pixel_x = -5 + }, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = 6; + pixel_y = 7 + }, +/obj/item/reagent_containers/syringe, +/turf/open/floor/pod/dark, +/area/station/service/kitchen/abandoned) "nxC" = ( /obj/effect/turf_decal/stripes/full, /obj/machinery/door/airlock{ @@ -53015,30 +52951,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard/fore) -"nDQ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/structure/table/reinforced, -/obj/structure/window/spawner/directional/south, -/obj/effect/turf_decal/trimline/yellow/corner{ - dir = 4 - }, -/obj/item/storage/toolbox/mechanical{ - pixel_x = 8; - pixel_y = -4 - }, -/obj/item/flatpack{ - board = /obj/item/circuitboard/machine/flatpacker; - pixel_x = -6; - pixel_y = 5 - }, -/obj/item/multitool{ - pixel_x = 7; - pixel_y = 10 - }, -/turf/open/floor/iron/corner{ - dir = 4 - }, -/area/station/engineering/lobby) "nEa" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp/green, @@ -53499,6 +53411,16 @@ /obj/structure/foamedmetal, /turf/open/floor/engine, /area/station/maintenance/floor1/port/aft) +"nJz" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 + }, +/obj/machinery/status_display/ai/directional/east, +/turf/open/floor/iron/dark, +/area/station/science/auxlab) "nJC" = ( /obj/item/restraints/handcuffs, /obj/item/restraints/handcuffs, @@ -54681,6 +54603,26 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) +"nYQ" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/table/reinforced/rglass, +/obj/machinery/cell_charger{ + pixel_y = 10 + }, +/obj/machinery/cell_charger{ + pixel_y = 1; + layer = 2.91 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_y = 9; + pixel_x = -1 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = -1; + layer = 3.01 + }, +/turf/open/floor/iron/white/textured, +/area/station/medical/treatment_center) "nYZ" = ( /obj/effect/turf_decal/tile/red/half/contrasted, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -56058,6 +56000,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/carpet, /area/station/medical/psychology) +"orW" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/east{ + cell_type = /obj/item/stock_parts/power_store/battery/hyper + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/smooth_large, +/area/station/tcommsat/server) "osk" = ( /obj/effect/turf_decal/siding/wood, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -56749,16 +56702,6 @@ }, /turf/open/floor/pod/dark, /area/station/maintenance/floor1/port) -"oCb" = ( -/obj/effect/turf_decal/trimline/neutral/warning{ - dir = 8 - }, -/obj/machinery/airalarm/directional/east, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/structure/table/reinforced, -/turf/open/floor/iron/dark, -/area/station/command/gateway) "oCc" = ( /obj/effect/turf_decal/tile/red/anticorner/contrasted, /obj/machinery/flasher/directional/east{ @@ -57666,11 +57609,6 @@ /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/iron/white, /area/station/science/lower) -"oOW" = ( -/obj/structure/rack, -/obj/effect/spawner/random/armory/dragnet, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) "oOY" = ( /obj/structure/table/wood/fancy/red, /obj/item/flashlight/flare/candle, @@ -58794,13 +58732,6 @@ /obj/machinery/atmospherics/pipe/smart/simple/green/visible, /turf/open/floor/plating, /area/station/engineering/atmos) -"peN" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/purple/opposingcorners, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/turf/open/floor/iron/white, -/area/station/science/circuits) "pfd" = ( /obj/structure/cable, /obj/effect/decal/cleanable/blood/old, @@ -63144,6 +63075,20 @@ }, /turf/open/floor/iron, /area/station/cargo/miningdock) +"qlT" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/stripes/white/line{ + dir = 4 + }, +/obj/item/folder/white{ + pixel_y = 13 + }, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/science/lab) "qmb" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 @@ -64283,6 +64228,20 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/white, /area/station/science/cytology) +"qzq" = ( +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/rods/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stack/sheet/mineral/plasma{ + amount = 30 + }, +/obj/item/gps, +/obj/structure/closet/crate/engineering, +/turf/open/floor/plating, +/area/station/engineering/lobby) "qzx" = ( /obj/structure/bookcase/random/fiction, /turf/open/floor/carpet/royalblack, @@ -65381,6 +65340,12 @@ /obj/effect/turf_decal/trimline/blue/filled/corner, /turf/open/floor/iron/dark/side, /area/station/hallway/floor2/aft) +"qOL" = ( +/obj/structure/rack, +/obj/item/mod/core/standard, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/pod/light, +/area/station/maintenance/floor3/port/aft) "qON" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/airalarm/directional/south, @@ -70272,6 +70237,22 @@ dir = 9 }, /area/station/security/brig) +"sfE" = ( +/obj/structure/table, +/obj/item/storage/toolbox/emergency{ + pixel_y = 12 + }, +/obj/item/stack/cable_coil/cut{ + pixel_y = 7 + }, +/obj/item/stock_parts/power_store/cell/lead{ + pixel_x = 5; + pixel_y = 4 + }, +/obj/item/wirecutters, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/light, +/area/station/maintenance/floor1/starboard/fore) "sfG" = ( /obj/item/radio/intercom/directional/north, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, @@ -71668,6 +71649,13 @@ }, /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) +"sAf" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/iron/dark/smooth_large, +/area/station/science/robotics/lab) "sAi" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/effect/turf_decal/trimline/red/arrow_ccw{ @@ -74094,24 +74082,6 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/plating, /area/station/maintenance/floor2/starboard) -"tdM" = ( -/obj/structure/rack, -/obj/item/stock_parts/micro_laser{ - pixel_y = 7 - }, -/obj/item/stock_parts/cell/high{ - pixel_x = -4; - pixel_y = -6 - }, -/obj/item/vending_refill/wardrobe/science_wardrobe{ - pixel_y = 18 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/iron/white, -/area/station/science/lower) "tdN" = ( /obj/machinery/door/airlock/hatch{ name = "Maintenance Bulkhead" @@ -74610,17 +74580,6 @@ name = "lab floor" }, /area/station/science/genetics) -"tlq" = ( -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east{ - cell_type = /obj/item/stock_parts/cell/hyper - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron/smooth_large, -/area/station/tcommsat/server) "tlr" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -75733,6 +75692,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/abandoned) +"tzz" = ( +/obj/effect/turf_decal/trimline/neutral/warning{ + dir = 8 + }, +/obj/machinery/airalarm/directional/east, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/structure/table/reinforced, +/turf/open/floor/iron/dark, +/area/station/command/gateway) "tzA" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -87476,6 +87445,30 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/pod/light, /area/station/maintenance/floor2/port/aft) +"wyg" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/structure/table/reinforced, +/obj/structure/window/spawner/directional/south, +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 4 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_x = 8; + pixel_y = -4 + }, +/obj/item/flatpack{ + board = /obj/item/circuitboard/machine/flatpacker; + pixel_x = -6; + pixel_y = 5 + }, +/obj/item/multitool{ + pixel_x = 7; + pixel_y = 10 + }, +/turf/open/floor/iron/corner{ + dir = 4 + }, +/area/station/engineering/lobby) "wym" = ( /obj/effect/turf_decal/siding/wood{ dir = 10 @@ -88118,16 +88111,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/textured_large, /area/station/engineering/lobby) -"wHe" = ( -/obj/structure/table, -/obj/machinery/cell_charger{ - pixel_y = 5 - }, -/obj/item/stack/cable_coil, -/obj/item/multitool, -/obj/item/stock_parts/cell/high, -/turf/open/floor/pod, -/area/station/maintenance/floor4/port/fore) "wHj" = ( /obj/structure/table, /obj/item/hfr_box/body/waste_output, @@ -88216,6 +88199,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/pod/light, /area/station/maintenance/floor4/port/aft) +"wIf" = ( +/obj/effect/turf_decal/siding/white, +/obj/structure/railing, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/structure/table/reinforced/rglass, +/turf/open/floor/iron/large, +/area/station/science/robotics/lab) "wIn" = ( /obj/structure/sign/poster/official/random/directional/west, /obj/structure/easel, @@ -90610,6 +90601,16 @@ }, /turf/open/floor/pod/light, /area/station/maintenance/floor1/starboard/fore) +"xof" = ( +/obj/structure/table, +/obj/machinery/cell_charger{ + pixel_y = 5 + }, +/obj/item/stack/cable_coil, +/obj/item/multitool, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/pod, +/area/station/maintenance/floor4/port/fore) "xoj" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 6 @@ -93702,6 +93703,13 @@ /obj/structure/table/reinforced, /turf/open/floor/iron/kitchen/herringbone, /area/station/service/kitchen) +"ydf" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/purple/opposingcorners, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/iron/white, +/area/station/science/circuits) "ydi" = ( /obj/machinery/firealarm/directional/south, /obj/effect/landmark/navigate_destination/chapel, @@ -94094,14 +94102,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth, /area/station/cargo/warehouse) -"yjm" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high/empty, -/obj/structure/sign/poster/contraband/random/directional/east, -/turf/open/floor/iron/dark, -/area/station/commons/vacant_room/commissary) "yjJ" = ( /obj/effect/turf_decal/siding/wideplating_new/dark/corner, /turf/open/floor/engine/co2, @@ -116266,7 +116266,7 @@ owI owI oic oic -mlC +sfE laR oic jdc @@ -118591,7 +118591,7 @@ eaW lSJ mxC jUP -gYy +gQW myW kga uTH @@ -131976,7 +131976,7 @@ nor rcc sHG uxT -tlq +orW qkL snO jRp @@ -137886,7 +137886,7 @@ wmU pVZ uKL rGe -nDQ +wyg wWw xFR gPc @@ -138639,7 +138639,7 @@ kDg vsL kDg rBP -iht +qzq ykU mMO tCC @@ -181592,7 +181592,7 @@ lQI lQI ozr jJu -aJO +nxB qiR rkZ kms @@ -182071,7 +182071,7 @@ mKZ sxl naI lNN -peN +ydf xuv jBm xuv @@ -182850,7 +182850,7 @@ oFY mBZ ijS obj -ndG +nJz sEL biW xWe @@ -184650,7 +184650,7 @@ kJg kmR lcB kGf -aRG +qlT wXC ePa rNg @@ -189018,7 +189018,7 @@ kXZ wbS eGF dpL -tdM +gra bvx btp dpL @@ -197257,7 +197257,7 @@ woE biz dzM kUl -kUf +nYQ dzM dYM scx @@ -200859,7 +200859,7 @@ bet iAb bif fSi -bnI +sAf aal aAK ybG @@ -203168,7 +203168,7 @@ igE hcr jbR cqR -bfA +kSG aFs jeF blv @@ -204200,7 +204200,7 @@ bgz bid grk bmL -bpD +wIf mOH jhU btW @@ -262026,7 +262026,7 @@ oNV eLw cmh kSU -yjm +ibO piR piR roj @@ -267688,7 +267688,7 @@ hLo piR xRs bKR -mHo +qOL piR mom hcT @@ -309554,7 +309554,7 @@ bfx eGK onE aNs -gEo +kZI wFT gaJ qOq @@ -309566,7 +309566,7 @@ qNY iTN qGF uIx -wHe +xof lvm vSG mpK @@ -316234,7 +316234,7 @@ fkN fQx nTJ iXS -hBF +nwk hNh hNh hNh @@ -317777,7 +317777,7 @@ xvr hIB nTo hns -oCb +tzz jbr iXS eHr @@ -322683,7 +322683,7 @@ cbw lOp ira dtX -oOW +frG qjr qjr qjr diff --git a/_maps/map_files/debug/runtimestation.dmm b/_maps/map_files/debug/runtimestation.dmm index 584ba1eb7ee9d..a2d6ba70275d9 100644 --- a/_maps/map_files/debug/runtimestation.dmm +++ b/_maps/map_files/debug/runtimestation.dmm @@ -162,7 +162,7 @@ pixel_y = 5 }, /obj/item/storage/toolbox/syndicate, -/obj/item/stock_parts/cell/infinite, +/obj/item/stock_parts/power_store/cell/infinite, /turf/open/floor/iron, /area/station/engineering/main) "aT" = ( @@ -2338,9 +2338,9 @@ "Ov" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/bluespace, -/obj/item/stock_parts/cell/bluespace, -/obj/item/stock_parts/cell/bluespace, +/obj/item/stock_parts/power_store/cell/bluespace, +/obj/item/stock_parts/power_store/cell/bluespace, +/obj/item/stock_parts/power_store/cell/bluespace, /turf/open/floor/iron/dark, /area/station/science/explab) "OU" = ( diff --git a/_maps/map_files/tramstation/maintenance_modules/atmoscilower_attachment_a_3.dmm b/_maps/map_files/tramstation/maintenance_modules/atmoscilower_attachment_a_3.dmm index 45f4b361a61c8..670386ca82910 100644 --- a/_maps/map_files/tramstation/maintenance_modules/atmoscilower_attachment_a_3.dmm +++ b/_maps/map_files/tramstation/maintenance_modules/atmoscilower_attachment_a_3.dmm @@ -177,7 +177,7 @@ "Q" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/oil, -/obj/item/stock_parts/cell/empty, +/obj/item/stock_parts/power_store/cell/empty, /obj/item/screwdriver{ pixel_y = -10; pixel_x = 7 diff --git a/_maps/map_files/tramstation/maintenance_modules/cargoscilower_3.dmm b/_maps/map_files/tramstation/maintenance_modules/cargoscilower_3.dmm index 12b320b284492..53d727123ce66 100644 --- a/_maps/map_files/tramstation/maintenance_modules/cargoscilower_3.dmm +++ b/_maps/map_files/tramstation/maintenance_modules/cargoscilower_3.dmm @@ -179,7 +179,7 @@ dir = 8 }, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high/empty, +/obj/item/stock_parts/power_store/cell/high/empty, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/starboard/central) diff --git a/_maps/map_files/tramstation/maintenance_modules/cargoscilower_attachment_a_3.dmm b/_maps/map_files/tramstation/maintenance_modules/cargoscilower_attachment_a_3.dmm index c37683fdf40c9..b11609c9d357c 100644 --- a/_maps/map_files/tramstation/maintenance_modules/cargoscilower_attachment_a_3.dmm +++ b/_maps/map_files/tramstation/maintenance_modules/cargoscilower_attachment_a_3.dmm @@ -21,7 +21,7 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high/empty, +/obj/item/stock_parts/power_store/cell/high/empty, /turf/open/floor/iron/smooth, /area/station/maintenance/starboard/central) "n" = ( @@ -86,14 +86,14 @@ "Y" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, -/obj/item/stock_parts/cell/empty{ +/obj/item/stock_parts/power_store/cell/empty{ pixel_x = -5 }, -/obj/item/stock_parts/cell/empty{ +/obj/item/stock_parts/power_store/cell/empty{ pixel_x = 2; pixel_y = 8 }, -/obj/item/stock_parts/cell/empty{ +/obj/item/stock_parts/power_store/cell/empty{ pixel_x = 7 }, /turf/open/floor/iron/smooth, diff --git a/_maps/map_files/tramstation/maintenance_modules/dormenginelower_2.dmm b/_maps/map_files/tramstation/maintenance_modules/dormenginelower_2.dmm index 6f30c2bb7be2e..e7c0c22ad0575 100644 --- a/_maps/map_files/tramstation/maintenance_modules/dormenginelower_2.dmm +++ b/_maps/map_files/tramstation/maintenance_modules/dormenginelower_2.dmm @@ -321,7 +321,7 @@ /obj/structure/closet/crate, /obj/item/wallframe/apc, /obj/item/electronics/apc, -/obj/item/stock_parts/cell/empty, +/obj/item/stock_parts/power_store/cell/empty, /obj/item/stack/cable_coil/five, /obj/item/wallframe/apc, /obj/item/electronics/apc, diff --git a/_maps/map_files/tramstation/maintenance_modules/dormenginelower_attachment_b_1.dmm b/_maps/map_files/tramstation/maintenance_modules/dormenginelower_attachment_b_1.dmm index 0be86766e3f21..bfe095561311a 100644 --- a/_maps/map_files/tramstation/maintenance_modules/dormenginelower_attachment_b_1.dmm +++ b/_maps/map_files/tramstation/maintenance_modules/dormenginelower_attachment_b_1.dmm @@ -91,7 +91,7 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high/empty, +/obj/item/stock_parts/power_store/cell/high/empty, /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 4 }, diff --git a/_maps/map_files/tramstation/maintenance_modules/medsciupper_attachment_a_1.dmm b/_maps/map_files/tramstation/maintenance_modules/medsciupper_attachment_a_1.dmm index 32d140f88c93a..f58d6cd2a20e0 100644 --- a/_maps/map_files/tramstation/maintenance_modules/medsciupper_attachment_a_1.dmm +++ b/_maps/map_files/tramstation/maintenance_modules/medsciupper_attachment_a_1.dmm @@ -122,7 +122,7 @@ }, /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high/empty, +/obj/item/stock_parts/power_store/cell/high/empty, /turf/open/floor/iron, /area/station/maintenance/department/science) "V" = ( diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index a8b81413f9cb6..9dd8fc2958e58 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -3736,23 +3736,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/secondary/service) -"axh" = ( -/obj/structure/rack, -/obj/item/clothing/glasses/meson{ - pixel_y = 4 - }, -/obj/item/lighter, -/obj/item/reagent_containers/pill/patch/aiuri, -/obj/item/stock_parts/cell/high, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 1 - }, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/item/computer_disk/engineering, -/obj/item/computer_disk/engineering, -/obj/item/computer_disk/engineering, -/turf/open/floor/iron, -/area/station/command/heads_quarters/ce) "axp" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 @@ -6707,6 +6690,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/carpet, /area/station/commons/dorms) +"bmd" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/trimline/white/filled/line{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "bmp" = ( /obj/effect/turf_decal/trimline/green/corner{ dir = 1 @@ -6825,21 +6817,6 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/iron/dark, /area/station/command/bridge) -"bpa" = ( -/obj/structure/table/reinforced, -/obj/item/stock_parts/cell/high{ - pixel_x = -5; - pixel_y = 8 - }, -/obj/item/stock_parts/cell/high{ - pixel_x = 7; - pixel_y = 8 - }, -/obj/item/stock_parts/cell/high, -/obj/machinery/cell_charger, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/science/robotics/lab) "bpl" = ( /obj/effect/turf_decal/bot, /obj/effect/turf_decal/trimline/yellow/filled/line{ @@ -7892,6 +7869,13 @@ /obj/effect/turf_decal/siding/thinplating/dark, /turf/open/floor/iron/white, /area/station/science/research) +"bJN" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/trimline/neutral/filled/line, +/turf/open/floor/iron, +/area/station/commons/storage/primary) "bJP" = ( /obj/structure/railing{ dir = 10 @@ -13695,6 +13679,13 @@ }, /turf/open/floor/iron/dark, /area/station/service/chapel/monastery) +"dGP" = ( +/obj/structure/table, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/iron, +/area/station/ai_monitored/command/storage/eva) "dHc" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/table, @@ -15812,13 +15803,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) -"exq" = ( -/obj/structure/table, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) "exr" = ( /obj/machinery/computer/mech_bay_power_console, /obj/effect/turf_decal/siding/thinplating/corner{ @@ -17395,6 +17379,16 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/cargo/miningdock/oresilo) +"fcZ" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/storage/toolbox/electrical{ + pixel_x = 4; + pixel_y = 9 + }, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/iron/dark, +/area/station/science/explab) "fdc" = ( /obj/machinery/brm, /obj/machinery/conveyor{ @@ -19631,17 +19625,6 @@ }, /turf/open/floor/iron/dark/herringbone, /area/station/commons/vacant_room) -"fTM" = ( -/obj/structure/table, -/obj/machinery/requests_console/directional/east{ - name = "EVA Requests Console"; - department = "EVA" - }, -/obj/effect/mapping_helpers/requests_console/assistance, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/turf/open/floor/iron, -/area/station/ai_monitored/command/storage/eva) "fUh" = ( /obj/structure/chair, /obj/structure/sign/poster/official/random/directional/north, @@ -20331,6 +20314,13 @@ }, /turf/open/floor/iron/dark, /area/station/service/chapel) +"ggW" = ( +/obj/structure/rack, +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/spawner/random/armory/dragnet, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/security/armory) "ghg" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor, @@ -23545,6 +23535,17 @@ /obj/machinery/computer/security/telescreen/entertainment/directional/east, /turf/open/floor/wood/large, /area/station/service/barber) +"hqw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate/preopen, +/obj/item/stock_parts/power_store/cell/empty, +/obj/effect/spawner/random/engineering/flashlight, +/turf/open/floor/iron, +/area/station/cargo/warehouse) "hqx" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 @@ -23587,6 +23588,16 @@ /obj/structure/table/wood, /turf/open/floor/wood, /area/station/service/theater) +"hrq" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/station/engineering/main) "hrr" = ( /obj/structure/table/reinforced, /obj/machinery/microwave/engineering/cell_included, @@ -24518,17 +24529,6 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/nuke_storage) -"hMU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/obj/structure/closet/crate/preopen, -/obj/item/stock_parts/cell/empty, -/obj/effect/spawner/random/engineering/flashlight, -/turf/open/floor/iron, -/area/station/cargo/warehouse) "hNe" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 4 @@ -25648,16 +25648,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/service/hydroponics) -"iih" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/storage/toolbox/electrical{ - pixel_x = 4; - pixel_y = 9 - }, -/obj/item/stock_parts/cell/high, -/turf/open/floor/iron/dark, -/area/station/science/explab) "iij" = ( /obj/machinery/door/airlock/command{ name = "Research Director's Office" @@ -26018,29 +26008,6 @@ /obj/machinery/transport/crossing_signal/northwest, /turf/open/floor/iron, /area/station/hallway/primary/tram/right) -"ipP" = ( -/obj/structure/table, -/obj/item/multitool/circuit{ - pixel_x = -8 - }, -/obj/item/multitool/circuit{ - pixel_x = -4 - }, -/obj/item/multitool/circuit, -/obj/item/stock_parts/cell/high{ - pixel_x = 8; - pixel_y = 9 - }, -/obj/item/stock_parts/cell/high{ - pixel_x = 8; - pixel_y = -2 - }, -/obj/machinery/camera/directional/south{ - network = list("ss13","rd"); - c_tag = "Science - Testing Lab" - }, -/turf/open/floor/iron, -/area/station/science/explab) "iqg" = ( /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/freezer, @@ -27220,6 +27187,16 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/hallway/primary/tram/center) +"iNs" = ( +/obj/structure/table, +/obj/machinery/cell_charger{ + pixel_y = 5 + }, +/obj/item/stack/cable_coil, +/obj/item/multitool, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/engine, +/area/station/science/xenobiology) "iNB" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/iron, @@ -27587,19 +27564,6 @@ /obj/item/kirbyplants/photosynthetic, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat_interior) -"iTL" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/rods/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/stock_parts/cell/high, -/obj/item/stack/sheet/mineral/plasma{ - amount = 30 - }, -/turf/open/floor/plating, -/area/station/engineering/engine_smes) "iTQ" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 8 @@ -28694,13 +28658,6 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) -"jlQ" = ( -/obj/structure/rack, -/obj/item/radio/intercom/directional/north, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/spawner/random/armory/dragnet, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) "jlX" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 8 @@ -29697,6 +29654,24 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/cafeteria, /area/station/security/prison/mess) +"jCi" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 5 + }, +/obj/structure/cable, +/obj/structure/table, +/obj/item/multitool{ + pixel_x = 8 + }, +/obj/item/flatpack{ + board = /obj/item/circuitboard/machine/flatpacker; + pixel_x = -5 + }, +/turf/open/floor/iron, +/area/station/engineering/break_room) "jCn" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 1 @@ -29713,18 +29688,6 @@ /obj/machinery/power/apc/auto_name/directional/north, /turf/open/floor/iron, /area/station/maintenance/tram/mid) -"jCw" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/potato{ - pixel_x = 6; - pixel_y = 10 - }, -/turf/open/floor/iron/white, -/area/station/science/lobby) "jCH" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /obj/effect/turf_decal/tile/bar/opposingcorners, @@ -30636,6 +30599,18 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/nuke_storage) +"jVK" = ( +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 1 + }, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/potato{ + pixel_x = 6; + pixel_y = 10 + }, +/turf/open/floor/iron/white, +/area/station/science/lobby) "jVT" = ( /obj/structure/table, /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -31808,6 +31783,29 @@ /obj/machinery/newscaster/directional/south, /turf/open/floor/iron, /area/station/hallway/primary/tram/left) +"klq" = ( +/obj/structure/table, +/obj/item/multitool/circuit{ + pixel_x = -8 + }, +/obj/item/multitool/circuit{ + pixel_x = -4 + }, +/obj/item/multitool/circuit, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 8; + pixel_y = 9 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 8; + pixel_y = -2 + }, +/obj/machinery/camera/directional/south{ + network = list("ss13","rd"); + c_tag = "Science - Testing Lab" + }, +/turf/open/floor/iron, +/area/station/science/explab) "kly" = ( /obj/structure/cable, /obj/structure/disposalpipe/junction/flip{ @@ -31825,19 +31823,6 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/storage/tech) -"klY" = ( -/obj/structure/table, -/obj/item/stack/cable_coil{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/stack/cable_coil, -/obj/item/stock_parts/cell/high, -/obj/effect/turf_decal/trimline/white/filled/corner{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "kmb" = ( /obj/machinery/door/airlock/engineering/glass{ name = "Tram Mechanical Room" @@ -31920,6 +31905,13 @@ /obj/structure/sink/kitchen/directional/south, /turf/open/floor/iron/white, /area/station/commons/vacant_room) +"knq" = ( +/obj/structure/table/wood, +/obj/structure/sign/flag/nanotrasen/directional/north, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/crap, +/turf/open/floor/wood, +/area/station/command/meeting_room) "knO" = ( /obj/effect/turf_decal/trimline/blue/filled/corner, /obj/effect/turf_decal/trimline/blue/filled/corner{ @@ -34058,6 +34050,23 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/virology) +"kXU" = ( +/obj/structure/rack, +/obj/item/clothing/glasses/meson{ + pixel_y = 4 + }, +/obj/item/lighter, +/obj/item/reagent_containers/pill/patch/aiuri, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/item/computer_disk/engineering, +/obj/item/computer_disk/engineering, +/obj/item/computer_disk/engineering, +/turf/open/floor/iron, +/area/station/command/heads_quarters/ce) "kXZ" = ( /obj/machinery/door/airlock{ name = "Private Quarters L"; @@ -37619,6 +37628,25 @@ /obj/structure/cable, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"mgK" = ( +/obj/structure/table, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/storage/box/lights/mixed, +/obj/item/stack/cable_coil, +/obj/item/stock_parts/power_store/cell/emproof, +/obj/item/stock_parts/power_store/cell/emproof, +/obj/machinery/camera/emp_proof{ + dir = 10; + network = list("ss13","engineering"); + c_tag = "Engineering - SMES Misc" + }, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/dark, +/area/station/engineering/engine_smes) "mgS" = ( /turf/open/floor/iron/cafeteria, /area/station/security/prison/mess) @@ -38434,13 +38462,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/science/explab) -"myN" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/effect/turf_decal/trimline/neutral/filled/line, -/turf/open/floor/iron, -/area/station/commons/storage/primary) "mzb" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 5 @@ -40306,6 +40327,21 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/science/xenobiology) +"njk" = ( +/obj/structure/table/reinforced, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = -5; + pixel_y = 8 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 7; + pixel_y = 8 + }, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/cell_charger, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/science/robotics/lab) "njl" = ( /obj/machinery/duct, /obj/effect/turf_decal/trimline/neutral/filled/corner{ @@ -41150,6 +41186,17 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/exit) +"nxM" = ( +/obj/structure/table, +/obj/machinery/requests_console/directional/east{ + name = "EVA Requests Console"; + department = "EVA" + }, +/obj/effect/mapping_helpers/requests_console/assistance, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/iron, +/area/station/ai_monitored/command/storage/eva) "nxN" = ( /obj/item/radio/intercom/directional/west, /turf/open/floor/iron, @@ -44033,6 +44080,27 @@ }, /turf/open/space/openspace, /area/station/solars/starboard/fore) +"ozH" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/dirt, +/obj/item/stock_parts/power_store/cell/crap/empty{ + pixel_x = 6; + pixel_y = 10 + }, +/obj/item/stock_parts/power_store/cell/crap/empty{ + pixel_x = 6; + pixel_y = 2 + }, +/obj/item/stock_parts/power_store/cell/crap/empty{ + pixel_x = -7; + pixel_y = 7 + }, +/obj/item/stock_parts/power_store/cell/crap/empty{ + pixel_x = -2; + pixel_y = -2 + }, +/turf/open/floor/iron/smooth, +/area/station/security/mechbay) "ozM" = ( /obj/structure/table/wood/poker, /obj/item/storage/dice, @@ -48105,6 +48173,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor, /area/station/maintenance/starboard/greater) +"pZg" = ( +/obj/effect/turf_decal/bot, +/obj/effect/spawner/random/structure/closet_empty/crate, +/obj/effect/spawner/random/maintenance/two, +/obj/item/stock_parts/power_store/cell/high/empty, +/turf/open/floor/iron, +/area/station/cargo/storage) "pZr" = ( /mob/living/basic/mouse/brown/tom, /turf/open/misc/asteroid, @@ -48330,6 +48405,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"qdr" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/rods/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stack/sheet/mineral/plasma{ + amount = 30 + }, +/turf/open/floor/plating, +/area/station/engineering/engine_smes) "qdy" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -48543,14 +48631,6 @@ "qgt" = ( /turf/closed/wall/rock/porous, /area/station/medical/chemistry) -"qgy" = ( -/obj/structure/table/reinforced, -/obj/machinery/cell_charger{ - pixel_y = 4 - }, -/obj/item/stock_parts/cell/high, -/turf/open/floor/iron, -/area/station/command/bridge) "qgB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/visible, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -49188,13 +49268,6 @@ /obj/structure/sign/poster/official/safety_report/directional/south, /turf/open/floor/iron, /area/station/security/checkpoint/science) -"qsI" = ( -/obj/structure/table/wood, -/obj/structure/sign/flag/nanotrasen/directional/north, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/crap, -/turf/open/floor/wood, -/area/station/command/meeting_room) "qsJ" = ( /obj/structure/window/reinforced/spawner/directional/north, /obj/structure/table, @@ -49376,24 +49449,6 @@ }, /turf/open/floor/iron, /area/station/security/prison/work) -"qwn" = ( -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 5 - }, -/obj/effect/turf_decal/trimline/yellow/filled/warning{ - dir = 5 - }, -/obj/structure/cable, -/obj/structure/table, -/obj/item/multitool{ - pixel_x = 8 - }, -/obj/item/flatpack{ - board = /obj/item/circuitboard/machine/flatpacker; - pixel_x = -5 - }, -/turf/open/floor/iron, -/area/station/engineering/break_room) "qwq" = ( /obj/structure/table/wood, /obj/item/radio/intercom, @@ -50908,27 +50963,6 @@ /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, /turf/open/floor/iron, /area/station/engineering/atmos) -"qXK" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/item/stock_parts/cell/crap/empty{ - pixel_x = 6; - pixel_y = 10 - }, -/obj/item/stock_parts/cell/crap/empty{ - pixel_x = 6; - pixel_y = 2 - }, -/obj/item/stock_parts/cell/crap/empty{ - pixel_x = -7; - pixel_y = 7 - }, -/obj/item/stock_parts/cell/crap/empty{ - pixel_x = -2; - pixel_y = -2 - }, -/turf/open/floor/iron/smooth, -/area/station/security/mechbay) "qXS" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -51406,6 +51440,14 @@ /obj/effect/landmark/navigate_destination/aiupload, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) +"reJ" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger{ + pixel_y = 4 + }, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/iron, +/area/station/command/bridge) "reU" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/camera/directional/south{ @@ -52516,16 +52558,6 @@ /obj/machinery/disposal/bin, /turf/open/floor/iron, /area/station/command/bridge) -"rAB" = ( -/obj/structure/table, -/obj/machinery/cell_charger{ - pixel_y = 5 - }, -/obj/item/stack/cable_coil, -/obj/item/multitool, -/obj/item/stock_parts/cell/high, -/turf/open/floor/engine, -/area/station/science/xenobiology) "rAS" = ( /turf/closed/wall, /area/station/service/library/lounge) @@ -53637,6 +53669,19 @@ }, /turf/open/floor/iron/cafeteria, /area/station/commons/dorms/laundry) +"rVw" = ( +/obj/structure/table, +/obj/item/stack/cable_coil{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/stack/cable_coil, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/trimline/white/filled/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/engineering/storage/tech) "rVD" = ( /obj/effect/turf_decal/trimline/green/corner, /obj/effect/turf_decal/trimline/green/corner{ @@ -53985,15 +54030,6 @@ }, /turf/open/floor/iron, /area/station/maintenance/port/central) -"scn" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/effect/turf_decal/trimline/white/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/engineering/storage/tech) "sct" = ( /obj/structure/table/reinforced, /obj/structure/window/spawner/directional/north, @@ -56816,16 +56852,6 @@ "tby" = ( /turf/open/floor/iron/white, /area/station/science/research) -"tbC" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron, -/area/station/engineering/main) "tbK" = ( /obj/structure/table, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -61538,25 +61564,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/carpet, /area/station/cargo/miningdock) -"uEx" = ( -/obj/structure/table, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/gloves/color/yellow, -/obj/item/clothing/gloves/color/yellow, -/obj/item/storage/box/lights/mixed, -/obj/item/stack/cable_coil, -/obj/item/stock_parts/cell/emproof, -/obj/item/stock_parts/cell/emproof, -/obj/machinery/camera/emp_proof{ - dir = 10; - network = list("ss13","engineering"); - c_tag = "Engineering - SMES Misc" - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/dark, -/area/station/engineering/engine_smes) "uEB" = ( /obj/structure/closet/secure_closet/freezer/fridge, /obj/effect/turf_decal/bot_white, @@ -71407,13 +71414,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/exit) -"yiX" = ( -/obj/effect/turf_decal/bot, -/obj/effect/spawner/random/structure/closet_empty/crate, -/obj/effect/spawner/random/maintenance/two, -/obj/item/stock_parts/cell/high/empty, -/turf/open/floor/iron, -/area/station/cargo/storage) "yjf" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/window/reinforced/spawner/directional/north, @@ -99252,7 +99252,7 @@ jIG jHb tPW tPW -uEx +mgK jIG abM abM @@ -100015,7 +100015,7 @@ mOW iwV nav fEK -scn +bmd pkp jYz kSp @@ -100531,7 +100531,7 @@ bUj kdb yih pkp -iTL +qdr ifX iRe wJt @@ -101040,7 +101040,7 @@ abM jnq jIy tsa -klY +rVw hJa kdb msU @@ -101576,7 +101576,7 @@ lku oxs sna gRQ -tbC +hrq cuQ arO arT @@ -103874,7 +103874,7 @@ ixT gYI cgR ial -qwn +jCi amV mvy iXQ @@ -103884,7 +103884,7 @@ dor fSp vKv roB -axh +kXU iHK bAK jsW @@ -106141,7 +106141,7 @@ pCM kzx oSl kzx -myN +bJN alg aes khE @@ -119036,7 +119036,7 @@ cJS nhj cVU oRz -ipP +klq sQZ nhj prI @@ -119290,7 +119290,7 @@ owO owO owO cJS -iih +fcZ cVU cFW cFW @@ -150854,7 +150854,7 @@ fLY tFk kcV xNL -qXK +ozH tFk aaa aaa @@ -151122,8 +151122,8 @@ hzN hzN hzN hzN -exq -fTM +dGP +nxM rcx hzN xQv @@ -154718,7 +154718,7 @@ mwg ceF avX qyZ -qsI +knq joF kSZ bvq @@ -156237,7 +156237,7 @@ aaa aaa aaa dEv -jlQ +ggW sne ubk hgn @@ -156532,7 +156532,7 @@ aQO rup wzm rAh -qgy +reJ eUy mgq nhV @@ -180203,7 +180203,7 @@ ixu eeE muZ gSF -bpa +njk uje dLO dLO @@ -181221,7 +181221,7 @@ mEd kuq aHq lfQ -jCw +jVK aHQ tFB vnu @@ -182472,7 +182472,7 @@ cdy iWz hFV gDr -yiX +pZg uax axG bTx @@ -183561,7 +183561,7 @@ vSa cJR qVr qVr -rAB +iNs qVL tBo qVr @@ -185303,7 +185303,7 @@ udQ udQ aWL tft -hMU +hqw qyg utY fHV diff --git a/_maps/map_files/wawastation/wawastation.dmm b/_maps/map_files/wawastation/wawastation.dmm index f06276d3e9fa2..7cd10a421e4bb 100644 --- a/_maps/map_files/wawastation/wawastation.dmm +++ b/_maps/map_files/wawastation/wawastation.dmm @@ -9,18 +9,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/security/office) -"aat" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/iron, -/area/station/command/gateway) "aaB" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -148,6 +136,9 @@ id = "ordstorage" }, /obj/structure/cable, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, /turf/open/floor/iron/white, /area/station/science/ordnance/storage) "abX" = ( @@ -784,13 +775,6 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron/white/textured, /area/station/science/genetics) -"amE" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/iron, -/area/station/hallway/primary/central) "amJ" = ( /obj/machinery/iv_drip, /obj/effect/turf_decal/tile/blue/fourcorners, @@ -1709,11 +1693,11 @@ /area/station/security/prison/shower) "aCh" = ( /obj/structure/window/spawner/directional/east, -/obj/machinery/portable_atmospherics/canister, /obj/effect/turf_decal/stripes/corner{ dir = 1 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/portable_atmospherics/scrubber, /turf/open/floor/iron/dark/smooth_large, /area/station/science/ordnance) "aCp" = ( @@ -2298,6 +2282,17 @@ /obj/item/radio/intercom/directional/south, /turf/open/floor/iron, /area/station/cargo/warehouse/upper) +"aLF" = ( +/obj/machinery/door/firedoor/heavy, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/door/airlock/research{ + name = "Ordnance Auxiliary Storage" + }, +/obj/effect/mapping_helpers/airlock/access/all/science/ordnance, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/smart/simple/green/hidden, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "aLH" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -3534,6 +3529,10 @@ /obj/machinery/atmospherics/pipe/smart/simple/green/visible{ dir = 4 }, +/obj/item/flashlight/glowstick/blue{ + start_on = 1; + light_range = 2 + }, /turf/open/floor/plating, /area/station/maintenance/department/science) "bjM" = ( @@ -3598,6 +3597,12 @@ /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, /area/station/asteroid) +"blP" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "bme" = ( /obj/structure/sign/warning, /turf/closed/wall/r_wall, @@ -3959,13 +3964,6 @@ }, /turf/open/floor/iron/herringbone, /area/station/hallway/primary/central) -"btY" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/machinery/light_switch/directional/south, -/turf/open/floor/iron/white, -/area/station/science/lab) "btZ" = ( /obj/machinery/computer/atmos_control/nocontrol/master, /turf/open/floor/iron, @@ -4479,16 +4477,6 @@ /obj/structure/girder/displaced, /turf/open/misc/asteroid, /area/station/maintenance/central/greater) -"bCr" = ( -/obj/machinery/computer/security/mining{ - dir = 8 - }, -/obj/machinery/keycard_auth/directional/east, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "bCv" = ( /obj/effect/decal/cleanable/blood/old, /obj/item/restraints/handcuffs, @@ -4649,6 +4637,9 @@ }, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/hos) +"bFj" = ( +/turf/closed/wall/rock/porous, +/area/station/science/ordnance) "bFw" = ( /obj/machinery/door/window/right/directional/east{ name = "Delivery Door"; @@ -5227,8 +5218,7 @@ /area/station/maintenance/port/greater) "bRZ" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/firealarm/directional/north, -/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/machinery/atmospherics/pipe/smart/simple/green/hidden, /turf/open/floor/iron/dark, /area/station/science/ordnance) "bSr" = ( @@ -5768,6 +5758,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/catwalk_floor/iron_dark, /area/station/ai_monitored/turret_protected/aisat_interior) +"cbT" = ( +/obj/structure/cable, +/obj/machinery/door/airlock/command, +/obj/effect/mapping_helpers/airlock/access/any/command/general, +/obj/effect/mapping_helpers/airlock/autoname, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/any/admin/general, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/emergency_closet) "cca" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -6603,23 +6604,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/construction/mining/aux_base) -"ctE" = ( -/obj/machinery/door/airlock/research{ - name = "Research Division Access" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/turf/open/floor/iron/white, -/area/station/science/research) "ctL" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/cable, @@ -6899,17 +6883,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/cargo/storage) -"cAy" = ( -/obj/structure/table/glass, -/obj/item/flatpack{ - board = /obj/item/circuitboard/machine/flatpacker; - pixel_x = -5 - }, -/obj/item/multitool{ - pixel_x = 8 - }, -/turf/open/floor/iron, -/area/station/engineering/lobby) "cAC" = ( /obj/effect/turf_decal/stripes/end{ dir = 4 @@ -7099,6 +7072,22 @@ /obj/effect/turf_decal/stripes, /turf/open/floor/engine, /area/station/engineering/atmospherics_engine) +"cEi" = ( +/obj/machinery/light/small/directional/north, +/obj/machinery/cell_charger, +/obj/structure/table/reinforced, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/camera/autoname/directional/east{ + network = list("ss13","rd") + }, +/obj/effect/turf_decal/siding/purple/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/science/robotics/mechbay) "cEr" = ( /obj/structure/chair/sofa/bench/right{ dir = 1 @@ -7662,9 +7651,13 @@ }, /area/station/science/research) "cPs" = ( -/obj/item/coin/plasma, -/turf/open/misc/asteroid, -/area/station/maintenance/department/science) +/obj/machinery/portable_atmospherics/pump, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/dark/smooth_large, +/area/station/science/ordnance) "cPt" = ( /turf/closed/wall/r_wall, /area/station/science/lab) @@ -8329,24 +8322,11 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ +/obj/machinery/atmospherics/pipe/smart/simple/green/hidden{ dir = 4 }, /turf/open/floor/iron/dark, /area/station/science/ordnance) -"dbJ" = ( -/obj/machinery/door/airlock/command/glass{ - name = "Bridge" - }, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/machinery/door/firedoor, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "bridgec" - }, -/obj/effect/mapping_helpers/airlock/access/any/admin/general, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) "dbN" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -9034,24 +9014,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) -"dmE" = ( -/obj/machinery/door/airlock/research{ - name = "Research Division Access" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/turf/open/floor/iron/white, -/area/station/science/research) "dmH" = ( /obj/effect/turf_decal/siding/white{ dir = 4 @@ -9212,11 +9174,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/virology) -"dpf" = ( -/obj/structure/transport/linear/public, -/obj/machinery/light/floor/transport, -/turf/open/floor/plating/elevatorshaft, -/area/station/medical/treatment_center) "dpj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, @@ -9542,12 +9499,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) -"duB" = ( -/obj/structure/cable, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark, -/area/station/security/prison) "duS" = ( /obj/machinery/duct, /obj/structure/cable, @@ -10517,6 +10468,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/secondary/command) +"dLy" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/button/door/directional/south{ + id = "evashutter"; + name = "E.V.A. Storage Shutter Control"; + req_access = list("command") + }, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/command/storage/eva) "dLI" = ( /obj/effect/landmark/event_spawn, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -11030,6 +10993,28 @@ /obj/machinery/computer/security/telescreen/entertainment/directional/east, /turf/open/floor/iron, /area/station/hallway/primary/central) +"dTV" = ( +/obj/machinery/light/dim/directional/west, +/obj/structure/cable, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/item/holosign_creator/atmos{ + pixel_y = 5 + }, +/obj/structure/table, +/obj/item/holosign_creator/atmos{ + pixel_y = 7 + }, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/station/engineering/atmos/upper) "dUb" = ( /obj/machinery/airalarm/directional/west, /obj/item/kirbyplants/random, @@ -12006,11 +11991,9 @@ /turf/open/floor/engine/airless, /area/station/maintenance/disposal/incinerator) "emb" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, +/obj/machinery/portable_atmospherics/canister/oxygen, /turf/open/floor/iron/white, /area/station/science/ordnance/storage) "emf" = ( @@ -12408,6 +12391,15 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics) +"etE" = ( +/obj/machinery/door/airlock/engineering/glass{ + name = "Primary Tool Storage" + }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/commons/storage/primary) "etI" = ( /obj/structure/table, /obj/effect/spawner/random/food_or_drink/snack, @@ -12697,6 +12689,17 @@ }, /turf/open/floor/iron/white/smooth_large, /area/station/command/heads_quarters/cmo) +"ezH" = ( +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/requests_console/auto_name/directional/north, +/obj/effect/mapping_helpers/requests_console/assistance, +/turf/open/floor/iron, +/area/station/cargo/storage) "ezL" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -13058,6 +13061,17 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) +"eFd" = ( +/obj/machinery/door/poddoor/shutters{ + id = "ordauxgarage"; + dir = 1 + }, +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/stripes/asteroid/end{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/science/ordnance) "eFj" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -13173,9 +13187,16 @@ /turf/open/floor/iron, /area/station/commons/storage/art) "eGL" = ( -/obj/structure/grille/broken, -/turf/open/misc/asteroid, -/area/station/maintenance/department/science) +/obj/machinery/door/poddoor/shutters{ + dir = 4; + id = "ordauxgarage" + }, +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/stripes/asteroid/end{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/science/ordnance) "eGN" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -13186,13 +13207,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) -"eHa" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 4 - }, -/obj/structure/sign/poster/official/random/directional/east, -/turf/open/floor/iron, -/area/station/command/bridge) "eHc" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 @@ -13542,15 +13556,6 @@ /obj/structure/sign/poster/random/directional/west, /turf/open/floor/plating, /area/station/maintenance/department/medical) -"eQJ" = ( -/obj/structure/rack, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 1 - }, -/obj/item/radio/intercom/directional/south, -/obj/effect/spawner/random/armory/dragnet, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/security/armory) "eQQ" = ( /obj/machinery/door/firedoor/border_only{ dir = 4 @@ -14287,6 +14292,20 @@ /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, /area/station/maintenance/solars/port/fore) +"fgZ" = ( +/obj/machinery/door/airlock/engineering/glass{ + name = "Engineering Foyer" + }, +/obj/effect/mapping_helpers/airlock/access/any/engineering/general, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/effect/landmark/navigate_destination/engineering, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, +/turf/open/floor/iron, +/area/station/engineering/lobby) "fhs" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 @@ -14524,6 +14543,17 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"flW" = ( +/obj/structure/table/wood, +/obj/item/stock_parts/power_store/cell/crap, +/obj/item/clothing/head/collectable/hop{ + name = "novelty HoP hat" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/tile, +/area/station/command/corporate_showroom) "flZ" = ( /obj/structure/cable, /obj/structure/disposalpipe/sorting/mail/flip{ @@ -14535,15 +14565,6 @@ "fma" = ( /turf/closed/wall, /area/station/medical/coldroom) -"fmm" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/multilayer/connected, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/command/storage/satellite) "fmr" = ( /obj/structure/grille, /obj/structure/lattice, @@ -15968,14 +15989,6 @@ /obj/machinery/camera/autoname/directional/west, /turf/open/floor/plating, /area/station/engineering/storage) -"fJs" = ( -/obj/item/stock_parts/cell/bluespace{ - rigged = 1; - pixel_x = -5; - pixel_y = -8 - }, -/turf/open/misc/asteroid, -/area/station/asteroid) "fJz" = ( /obj/item/reagent_containers/condiment/vegetable_oil, /obj/machinery/grill, @@ -16008,6 +16021,13 @@ }, /turf/open/floor/carpet/purple, /area/station/service/library) +"fKp" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp, +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/keycard_auth/directional/north, +/turf/open/floor/carpet/green, +/area/station/command/heads_quarters/hop) "fKs" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -16054,11 +16074,6 @@ }, /turf/open/floor/iron/half, /area/station/security/breakroom) -"fLM" = ( -/obj/structure/transport/linear/public, -/obj/machinery/light/floor/transport, -/turf/open/floor/plating/elevatorshaft, -/area/station/cargo/storage) "fLU" = ( /obj/effect/spawner/random/trash/mess, /obj/effect/mapping_helpers/broken_floor, @@ -16500,6 +16515,26 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/science/ordnance) +"fSH" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/button/door/directional/south{ + id = "capshut"; + pixel_x = -8; + name = "shutter control" + }, +/obj/machinery/fax{ + fax_name = "Captain's Office"; + name = "Captain's Fax Machine" + }, +/obj/structure/table/reinforced, +/obj/machinery/keycard_auth/directional/south{ + pixel_y = -24; + pixel_x = 8 + }, +/turf/open/floor/carpet/royalblue, +/area/station/command/heads_quarters/captain/private) "fSK" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 6 @@ -17152,6 +17187,13 @@ }, /turf/open/floor/wood/parquet, /area/station/medical/psychology) +"gez" = ( +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + dir = 4 + }, +/obj/structure/sign/poster/official/random/directional/east, +/turf/open/floor/iron, +/area/station/command/bridge) "geB" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -17364,6 +17406,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/cargo/drone_bay) +"giX" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/table, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_y = 6 + }, +/obj/item/stock_parts/power_store/cell/emproof{ + pixel_y = 3 + }, +/obj/item/stock_parts/power_store/cell/emproof, +/turf/open/floor/iron, +/area/station/engineering/main) "gjo" = ( /obj/structure/cable, /obj/machinery/button/door/directional/east{ @@ -18829,6 +18883,7 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/airalarm/directional/north, /obj/structure/filingcabinet, +/obj/machinery/firealarm/directional/west, /turf/open/floor/iron/dark, /area/station/science/ordnance) "gKt" = ( @@ -19813,6 +19868,21 @@ "hbV" = ( /turf/open/floor/iron/dark, /area/station/science/xenobiology) +"hcd" = ( +/obj/machinery/door/airlock/research{ + name = "Research Division Access" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/turf/open/floor/iron/white, +/area/station/science/research) "hce" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -20010,6 +20080,19 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/engineering/atmos) +"hfq" = ( +/obj/machinery/door/airlock/engineering/glass{ + name = "Break Room" + }, +/obj/effect/mapping_helpers/airlock/access/any/engineering/general, +/obj/structure/cable, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, +/turf/open/floor/iron, +/area/station/engineering/break_room) "hfv" = ( /obj/effect/mapping_helpers/broken_floor, /obj/effect/decal/cleanable/dirt/dust, @@ -20075,10 +20158,14 @@ /turf/open/floor/engine, /area/station/engineering/supermatter/room) "hgq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/grille, +/obj/machinery/door/poddoor/shutters/window{ + dir = 4; + id = "ordauxgarage" + }, +/obj/effect/turf_decal/stripes/asteroid/end, +/obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, -/area/station/maintenance/department/science) +/area/station/science/ordnance) "hgB" = ( /obj/machinery/door/airlock/maintenance/external, /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, @@ -20088,6 +20175,16 @@ }, /turf/open/floor/plating, /area/station/science/lobby) +"hgE" = ( +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + dir = 8 + }, +/obj/machinery/computer/security/telescreen/minisat{ + dir = 4; + pixel_x = -29 + }, +/turf/open/floor/iron, +/area/station/command/bridge) "hgN" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/west, @@ -20426,6 +20523,19 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/teleporter) +"hng" = ( +/obj/machinery/portable_atmospherics/canister/anesthetic_mix, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/machinery/door/window/right/directional/north{ + req_access = list("medical"); + name = "Anti Assistant Protection Door" + }, +/obj/effect/turf_decal/tile/blue/fourcorners, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "hnh" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -20572,6 +20682,12 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central) +"hpC" = ( +/obj/machinery/light/small/directional/south, +/obj/effect/spawner/random/structure/closet_empty/crate/with_loot, +/obj/item/coin/plasma, +/turf/open/misc/asteroid, +/area/station/maintenance/department/science) "hpT" = ( /obj/machinery/door/airlock/command{ name = "Quartermaster's Office" @@ -21372,6 +21488,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/primary/central) +"hDM" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/light/small/directional/south, +/obj/structure/broken_flooring/pile, +/obj/machinery/atmospherics/components/binary/pump/off/green/hidden{ + dir = 4; + name = "Aux Oxygen To Port" + }, +/turf/open/floor/plating, +/area/station/science/ordnance) "hDV" = ( /obj/effect/turf_decal/tile/yellow/diagonal_centre, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -21445,8 +21571,8 @@ /area/station/maintenance/disposal/incinerator) "hFq" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8 +/obj/machinery/atmospherics/components/binary/valve{ + dir = 4 }, /turf/open/floor/plating, /area/station/maintenance/department/science) @@ -21661,7 +21787,7 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ +/obj/machinery/atmospherics/pipe/smart/simple/green/hidden{ dir = 5 }, /turf/open/floor/iron/dark, @@ -22319,6 +22445,14 @@ /obj/effect/turf_decal/bot, /turf/open/floor/engine, /area/station/science/xenobiology) +"hVb" = ( +/obj/item/stock_parts/power_store/cell/bluespace{ + rigged = 1; + pixel_x = -5; + pixel_y = -8 + }, +/turf/open/misc/asteroid, +/area/station/asteroid) "hVe" = ( /obj/effect/turf_decal/bot{ dir = 1 @@ -22729,6 +22863,10 @@ /obj/effect/mapping_helpers/requests_console/information, /obj/effect/mapping_helpers/requests_console/assistance, /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/binoculars{ + pixel_y = -10; + pixel_x = -5 + }, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) "idU" = ( @@ -24140,6 +24278,17 @@ dir = 1 }, /area/station/service/chapel) +"iEL" = ( +/obj/structure/table/glass, +/obj/item/flatpack{ + board = /obj/item/circuitboard/machine/flatpacker; + pixel_x = -5 + }, +/obj/item/multitool{ + pixel_x = 8 + }, +/turf/open/floor/iron, +/area/station/engineering/lobby) "iEO" = ( /turf/closed/wall, /area/station/security/prison/mess) @@ -24195,24 +24344,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/maintenance/solars/port/aft) -"iFD" = ( -/obj/structure/table/reinforced, -/obj/item/stock_parts/cell/high{ - pixel_x = 4; - pixel_y = 5 - }, -/obj/item/stock_parts/cell/high{ - pixel_x = -8; - pixel_y = 9 - }, -/obj/item/stock_parts/cell/high, -/obj/machinery/cell_charger, -/obj/item/borg/upgrade/rename{ - pixel_x = 3; - pixel_y = 18 - }, -/turf/open/floor/iron/dark/textured, -/area/station/science/robotics/lab) "iFK" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/oxygen_output{ dir = 8 @@ -24490,6 +24621,9 @@ id = "ordstorage" }, /obj/effect/turf_decal/caution/stand_clear/red, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, /turf/open/floor/iron/white, /area/station/science/ordnance/storage) "iKc" = ( @@ -25952,6 +26086,17 @@ }, /turf/open/floor/iron/textured, /area/station/cargo/storage) +"jnV" = ( +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/effect/turf_decal/box/white{ + color = "#52B4E9" + }, +/obj/structure/disposalpipe/trunk, +/obj/machinery/requests_console/auto_name/directional/north, +/obj/effect/mapping_helpers/requests_console/assistance, +/turf/open/floor/iron/white, +/area/station/medical/storage) "jnY" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /obj/structure/cable, @@ -26387,6 +26532,13 @@ }, /turf/open/floor/wood, /area/station/commons/lounge) +"jvU" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, +/area/station/hallway/primary/central) "jvV" = ( /obj/machinery/computer/operating{ dir = 8 @@ -26978,6 +27130,11 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron/freezer, /area/station/security/prison/shower) +"jEO" = ( +/obj/structure/transport/linear/public, +/obj/machinery/light/floor/transport, +/turf/open/floor/plating/elevatorshaft, +/area/station/medical/treatment_center) "jEX" = ( /obj/machinery/newscaster/directional/west, /turf/open/floor/carpet/orange, @@ -27142,7 +27299,7 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ +/obj/machinery/atmospherics/pipe/smart/simple/green/hidden{ dir = 9 }, /turf/open/floor/iron/white, @@ -27757,21 +27914,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/commons/vacant_room/commissary) -"jSs" = ( -/obj/machinery/door/airlock/command{ - name = "Head of Personnel's Booth" - }, -/obj/effect/turf_decal/siding/wood, -/obj/effect/mapping_helpers/airlock/access/any/command/hop, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "bridgehop" - }, -/turf/open/floor/carpet/green, -/area/station/command/heads_quarters/hop) "jSu" = ( /obj/machinery/atmospherics/pipe/smart/simple/green/visible{ dir = 8 @@ -28215,6 +28357,22 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/secondary/command) +"kaD" = ( +/obj/item/circuitboard/machine/thermomachine, +/obj/item/circuitboard/machine/thermomachine, +/obj/item/storage/bag/construction, +/obj/item/storage/bag/construction, +/obj/item/storage/bag/construction, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/obj/structure/closet/crate, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light/dim/directional/south, +/turf/open/floor/iron/large, +/area/station/engineering/atmos) "kaJ" = ( /obj/effect/turf_decal/tile/red/half/contrasted, /obj/structure/cable, @@ -28257,6 +28415,18 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/station/command/bridge) +"kbU" = ( +/obj/machinery/door/airlock/command{ + name = "Head of Personnel's Quarters" + }, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/any/command/hop, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "bridgehop" + }, +/turf/open/floor/iron, +/area/station/command/heads_quarters/hop) "kbW" = ( /obj/structure/chair/plastic{ dir = 8 @@ -30445,6 +30615,13 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/aft/upper) +"kKS" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/light_switch/directional/south, +/turf/open/floor/iron/white, +/area/station/science/lab) "kLi" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/station/maintenance/department/medical/central) @@ -30550,6 +30727,16 @@ }, /turf/open/floor/engine, /area/station/command/corporate_dock) +"kNM" = ( +/obj/machinery/door/airlock/multi_tile/public{ + name = "Corporate Private Dock" + }, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/any/command/general, +/obj/effect/mapping_helpers/airlock/access/any/admin/general, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/corporate_dock) "kNO" = ( /obj/effect/turf_decal/siding/wood, /obj/machinery/newscaster/directional/south, @@ -31853,6 +32040,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"lmw" = ( +/obj/machinery/door/poddoor/shutters{ + id = "ordauxgarage"; + dir = 1 + }, +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/stripes/asteroid/end{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/science/ordnance) "lmI" = ( /obj/structure/lattice, /obj/machinery/atmospherics/components/unary/passive_vent/layer2{ @@ -31971,18 +32169,6 @@ /obj/item/toy/figure/borg, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/teleporter) -"loC" = ( -/obj/machinery/door/airlock/command{ - name = "Head of Personnel's Quarters" - }, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/command/hop, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "bridgehop" - }, -/turf/open/floor/iron, -/area/station/command/heads_quarters/hop) "loR" = ( /obj/effect/mapping_helpers/broken_floor, /obj/machinery/power/port_gen/pacman/pre_loaded, @@ -32075,25 +32261,13 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/solars/starboard/fore) -"lqP" = ( -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell, -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 1 - }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron/white, -/area/station/science/lobby) "lqR" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/cargo/drone_bay) "lqZ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, /obj/item/radio/intercom/directional/east, +/obj/machinery/portable_atmospherics/canister/oxygen, /turf/open/floor/iron/white, /area/station/science/ordnance/storage) "lrc" = ( @@ -33029,28 +33203,6 @@ /obj/structure/table/reinforced/rglass, /turf/open/floor/iron/dark, /area/station/security/office) -"lHF" = ( -/obj/machinery/light/dim/directional/west, -/obj/structure/cable, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/item/holosign_creator/atmos{ - pixel_y = 5 - }, -/obj/structure/table, -/obj/item/holosign_creator/atmos{ - pixel_y = 7 - }, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/station/engineering/atmos/upper) "lHX" = ( /obj/machinery/holopad, /obj/effect/turf_decal/box/white{ @@ -34005,6 +34157,10 @@ /obj/machinery/firealarm/directional/west, /turf/open/floor/wood, /area/station/commons/lounge) +"maT" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/turf/open/floor/glass/reinforced, +/area/station/security/prison) "maY" = ( /obj/structure/table/wood, /obj/effect/turf_decal/tile/red/half/contrasted{ @@ -34169,15 +34325,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/security/lockers) -"meT" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/digital_clock/directional/south, -/turf/open/floor/iron, -/area/station/cargo/storage) "mff" = ( /obj/effect/turf_decal/tile/blue/half/contrasted, /turf/open/floor/iron, @@ -35006,21 +35153,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) -"mtG" = ( -/obj/machinery/door/airlock/command, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "bridgec" - }, -/obj/effect/mapping_helpers/airlock/access/any/admin/general, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/station/command/corporate_showroom) "mtH" = ( /turf/open/floor/plating/airless, /area/station/solars/port) @@ -35459,20 +35591,6 @@ /obj/structure/weightmachine, /turf/open/floor/iron/white/textured_large, /area/station/commons/fitness/recreation) -"mBX" = ( -/obj/machinery/door/airlock/engineering/glass{ - name = "Engineering Foyer" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/landmark/navigate_destination/engineering, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, -/turf/open/floor/iron, -/area/station/engineering/lobby) "mBY" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -35532,6 +35650,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/kitchen, /area/station/service/kitchen) +"mCH" = ( +/obj/machinery/computer/security{ + dir = 4 + }, +/obj/structure/sign/poster/official/random/directional/west, +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "mCN" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -35681,6 +35809,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/freezer, /area/station/security/prison/shower) +"mGg" = ( +/obj/effect/landmark/blobstart, +/obj/structure/closet/crate/science{ + opened = 1; + icon_state = "scicrateopen" + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/dark/smooth_large, +/area/station/science/ordnance) "mGk" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 9 @@ -35712,6 +35850,21 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/hallway/primary/central) +"mGw" = ( +/obj/machinery/door/airlock/command, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/any/command/general, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "bridgec" + }, +/obj/effect/mapping_helpers/airlock/access/any/admin/general, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/command/corporate_showroom) "mGG" = ( /turf/closed/wall, /area/station/security/breakroom) @@ -36118,20 +36271,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/security/courtroom) -"mOc" = ( -/obj/machinery/door/airlock/research{ - name = "Research Division Access" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/turf/open/floor/iron/white, -/area/station/science/research) "mOo" = ( /obj/effect/turf_decal/tile/brown/half/contrasted, /turf/open/floor/iron, @@ -36425,6 +36564,15 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron/dark/corner, /area/station/engineering/atmos) +"mVR" = ( +/obj/structure/rack, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 1 + }, +/obj/item/radio/intercom/directional/south, +/obj/effect/spawner/random/armory/dragnet, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/security/armory) "mVU" = ( /obj/effect/spawner/random/maintenance/two, /obj/effect/spawner/random/structure/crate, @@ -36557,6 +36705,18 @@ }, /turf/open/floor/plating/airless, /area/station/maintenance/department/medical/central) +"mXT" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/iron, +/area/station/command/gateway) "mXV" = ( /obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 4 @@ -36945,6 +37105,12 @@ }, /turf/closed/wall, /area/station/service/bar) +"ndC" = ( +/obj/structure/table/glass, +/obj/effect/spawner/random/food_or_drink/snack, +/obj/effect/spawner/random/food_or_drink/refreshing_beverage, +/turf/open/floor/iron, +/area/station/engineering/lobby) "ndI" = ( /obj/structure/table, /obj/item/hand_labeler, @@ -37237,6 +37403,20 @@ dir = 10 }, /area/station/maintenance/radshelter/medical) +"nhc" = ( +/obj/machinery/door/airlock/research{ + name = "Research Division Access" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/turf/open/floor/iron/white, +/area/station/science/research) "nhf" = ( /obj/machinery/computer/records/medical/laptop{ dir = 8; @@ -37471,6 +37651,16 @@ /obj/structure/cable/multilayer/multiz, /turf/open/floor/plating, /area/station/maintenance/port/greater) +"nmF" = ( +/obj/machinery/computer/security/mining{ + dir = 8 + }, +/obj/machinery/keycard_auth/directional/east, +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "nmG" = ( /obj/effect/turf_decal/trimline/blue/filled/end, /obj/structure/cable, @@ -37941,6 +38131,16 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron, /area/station/security/detectives_office) +"nwi" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 + }, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron/white, +/area/station/science/lobby) "nwp" = ( /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 8 @@ -38286,7 +38486,7 @@ /area/station/maintenance/aft/upper) "nCv" = ( /obj/effect/turf_decal/stripes/line{ - dir = 1 + dir = 5 }, /turf/open/floor/iron/white, /area/station/science/ordnance/storage) @@ -38614,17 +38814,6 @@ /obj/effect/spawner/random/clothing/pirate_or_bandana, /turf/open/floor/plating, /area/station/maintenance/aft/upper) -"nKa" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/effect/turf_decal/box/white{ - color = "#52B4E9" - }, -/obj/structure/disposalpipe/trunk, -/obj/machinery/requests_console/auto_name/directional/north, -/obj/effect/mapping_helpers/requests_console/assistance, -/turf/open/floor/iron/white, -/area/station/medical/storage) "nKc" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 @@ -39049,12 +39238,21 @@ /turf/open/floor/iron/white, /area/station/medical/medbay/central) "nSZ" = ( -/obj/machinery/portable_atmospherics/scrubber, /obj/effect/turf_decal/stripes/line{ dir = 9 }, +/obj/machinery/portable_atmospherics/scrubber, /turf/open/floor/iron/dark/smooth_large, /area/station/science/ordnance) +"nTb" = ( +/obj/effect/turf_decal/tile/brown/half/contrasted, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron, +/area/station/cargo/storage) "nTm" = ( /obj/structure/chair/office{ dir = 1 @@ -39235,6 +39433,11 @@ /obj/machinery/light/warm/directional/east, /turf/open/floor/wood/tile, /area/station/service/chapel) +"nYi" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "nYj" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/decal/cleanable/dirt, @@ -39891,12 +40094,6 @@ /obj/machinery/quantum_server, /turf/open/floor/circuit, /area/station/cargo/bitrunning/den) -"omE" = ( -/obj/structure/table/glass, -/obj/effect/spawner/random/food_or_drink/snack, -/obj/effect/spawner/random/food_or_drink/refreshing_beverage, -/turf/open/floor/iron, -/area/station/engineering/lobby) "omL" = ( /obj/machinery/door/firedoor/border_only{ dir = 8 @@ -40433,7 +40630,7 @@ /area/station/engineering/atmospherics_engine) "oxg" = ( /obj/effect/turf_decal/stripes/line{ - dir = 1 + dir = 9 }, /obj/structure/cable, /turf/open/floor/iron/white, @@ -40462,20 +40659,6 @@ /obj/machinery/light_switch/directional/south, /turf/open/floor/iron, /area/station/service/hydroponics) -"oxN" = ( -/obj/machinery/door/airlock/multi_tile/public{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/structure/cable, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/effect/mapping_helpers/airlock/access/any/admin/general, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/meeting_room) "oxU" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -41207,17 +41390,6 @@ /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/plating/airless, /area/station/science/ordnance/bomb) -"oLg" = ( -/obj/structure/table/wood, -/obj/item/stock_parts/cell/crap, -/obj/item/clothing/head/collectable/hop{ - name = "novelty HoP hat" - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/wood/tile, -/area/station/command/corporate_showroom) "oLh" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -41862,6 +42034,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/solars/port) +"oWw" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 9 + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/iron/checker, +/area/station/science/research) "oWy" = ( /obj/effect/turf_decal/box/corners, /turf/open/floor/iron/dark, @@ -42407,16 +42589,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron, /area/station/maintenance/department/cargo) -"pgS" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 9 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/checker, -/area/station/science/research) "pgW" = ( /obj/effect/turf_decal/trimline/blue/filled/corner, /obj/effect/landmark/start/medical_doctor, @@ -42554,6 +42726,20 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/hallway/secondary/exit/departure_lounge) +"pjf" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 9 + }, +/obj/machinery/lift_indicator/directional/south{ + linked_elevator_id = "medbay1"; + pixel_x = -32 + }, +/obj/machinery/button/elevator/directional/south{ + id = "medbay1"; + pixel_x = -32 + }, +/turf/open/floor/iron/white, +/area/station/medical/treatment_center) "pjk" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, /turf/open/floor/engine/n2, @@ -42640,6 +42826,9 @@ "pka" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/broken/directional/north, +/obj/machinery/atmospherics/components/tank/oxygen{ + dir = 4 + }, /turf/open/floor/plating, /area/station/maintenance/department/science) "pkl" = ( @@ -43561,6 +43750,19 @@ /obj/machinery/newscaster/directional/south, /turf/open/floor/iron, /area/station/security/prison/garden) +"pBf" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/rods/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/electronics/airlock, +/obj/item/electronics/airlock, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stack/sheet/mineral/plasma{ + amount = 30 + }, +/turf/open/floor/plating, +/area/station/engineering/storage) "pBg" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 1 @@ -44007,6 +44209,10 @@ }, /turf/open/floor/iron/white, /area/station/science/research) +"pIB" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/glass/reinforced, +/area/station/security/prison) "pIF" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/brigdoor/right/directional/north{ @@ -44624,10 +44830,10 @@ /obj/machinery/door/firedoor/heavy, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ +/obj/machinery/atmospherics/pipe/smart/simple/green/hidden{ dir = 4 }, -/turf/open/floor/iron/white, +/turf/open/floor/catwalk_floor/flat_white, /area/station/science/ordnance) "pTC" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -45403,19 +45609,9 @@ /obj/effect/mapping_helpers/airalarm/link{ chamber_id = "ordnanceburn" }, +/obj/effect/mapping_helpers/airalarm/tlv_no_checks, /turf/open/floor/iron/dark, /area/station/science/ordnance) -"qhg" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/command, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/effect/mapping_helpers/airlock/autoname, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/admin/general, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/emergency_closet) "qhm" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/turf_decal/stripes/asteroid/line{ @@ -45445,6 +45641,19 @@ "qhP" = ( /turf/closed/wall/r_wall, /area/station/security/execution/education) +"qhQ" = ( +/obj/machinery/door/poddoor/shutters/window{ + id = "ordauxgarage"; + dir = 1 + }, +/obj/effect/turf_decal/caution/stand_clear, +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/stripes/asteroid/line, +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/science/ordnance) "qhS" = ( /obj/structure/disposalpipe/junction/flip{ dir = 1 @@ -45698,15 +45907,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/plating, /area/station/hallway/secondary/command) -"qmD" = ( -/obj/machinery/door/airlock/engineering/glass{ - name = "Primary Tool Storage" - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/commons/storage/primary) "qmI" = ( /obj/effect/turf_decal/tile/purple/fourcorners, /obj/machinery/light/small/directional/north, @@ -45750,6 +45950,17 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"qny" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/button/door/directional/east{ + name = "shutter control"; + id = "ordauxgarage" + }, +/turf/open/floor/plating, +/area/station/science/ordnance) "qnQ" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -46636,10 +46847,6 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat/teleporter) -"qFS" = ( -/obj/structure/window/reinforced/spawner/directional/south, -/turf/open/floor/glass/reinforced, -/area/station/security/prison) "qGk" = ( /turf/closed/wall/r_wall, /area/station/hallway/secondary/command) @@ -46782,8 +46989,16 @@ "qII" = ( /obj/effect/turf_decal/delivery, /obj/structure/table, -/obj/item/binoculars, /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/raw_anomaly_core/random{ + pixel_x = -5; + pixel_y = 7 + }, +/obj/item/raw_anomaly_core/random, +/obj/item/raw_anomaly_core/random{ + pixel_x = 7; + pixel_y = 9 + }, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) "qIJ" = ( @@ -47068,16 +47283,6 @@ /obj/item/airlock_painter/decal, /turf/open/floor/iron, /area/station/cargo/warehouse) -"qOO" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 8 - }, -/obj/machinery/computer/security/telescreen/minisat{ - dir = 4; - pixel_x = -29 - }, -/turf/open/floor/iron, -/area/station/command/bridge) "qOP" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/rack, @@ -47629,7 +47834,7 @@ /obj/machinery/light/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ +/obj/machinery/atmospherics/pipe/smart/simple/green/hidden{ dir = 10 }, /turf/open/floor/iron/dark, @@ -47885,16 +48090,6 @@ }, /turf/open/floor/iron/checker, /area/station/maintenance/department/medical) -"rcz" = ( -/obj/machinery/computer/security{ - dir = 4 - }, -/obj/structure/sign/poster/official/random/directional/west, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "rcG" = ( /obj/machinery/mech_bay_recharge_port{ dir = 1 @@ -48430,6 +48625,12 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/station/security/brig/entrance) +"rjP" = ( +/obj/structure/table/glass, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/iron, +/area/station/engineering/lobby) "rjX" = ( /turf/closed/wall, /area/station/security/courtroom) @@ -48687,6 +48888,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/security) +"roH" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/table, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/multilayer/connected, +/obj/machinery/cell_charger, +/obj/item/stock_parts/power_store/cell/high, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/command/storage/satellite) "roO" = ( /obj/machinery/door/airlock/security/glass{ name = "Prison Wing" @@ -49069,6 +49279,12 @@ }, /turf/open/floor/iron/white/textured, /area/station/maintenance/department/medical/central) +"rvu" = ( +/obj/structure/cable, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/iron/dark, +/area/station/security/prison) "rwf" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, @@ -49261,19 +49477,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"ryG" = ( -/obj/structure/cable, -/obj/machinery/door/airlock/engineering/glass{ - name = "Break Room" - }, -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, -/turf/open/floor/iron, -/area/station/engineering/break_room) "ryP" = ( /obj/structure/closet/secure_closet/brig{ id = "Cell 2"; @@ -50021,7 +50224,7 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ +/obj/machinery/atmospherics/pipe/smart/simple/green/hidden{ dir = 5 }, /turf/open/floor/iron/dark, @@ -50133,18 +50336,6 @@ }, /turf/open/floor/iron/textured, /area/station/hallway/primary/central) -"rOz" = ( -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/structure/table, -/obj/item/stock_parts/cell/emproof{ - pixel_y = 6 - }, -/obj/item/stock_parts/cell/emproof{ - pixel_y = 3 - }, -/obj/item/stock_parts/cell/emproof, -/turf/open/floor/iron, -/area/station/engineering/main) "rOF" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 @@ -51089,6 +51280,7 @@ /obj/machinery/camera/autoname/directional/north{ network = list("ss13","rd") }, +/obj/machinery/portable_atmospherics/canister, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) "sbL" = ( @@ -51112,9 +51304,7 @@ "sbS" = ( /obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 1 - }, +/obj/machinery/atmospherics/pipe/smart/simple/green/hidden, /turf/open/floor/iron/white, /area/station/science/ordnance/testlab) "sbU" = ( @@ -51353,17 +51543,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/engineering/main) -"sgR" = ( -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/requests_console/auto_name/directional/north, -/obj/effect/mapping_helpers/requests_console/assistance, -/turf/open/floor/iron, -/area/station/cargo/storage) "sgW" = ( /obj/structure/chair/office/tactical{ dir = 8 @@ -53040,18 +53219,6 @@ "sJT" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/aisat/uppersouth) -"sJV" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/machinery/button/door/directional/south{ - id = "evashutter"; - name = "E.V.A. Storage Shutter Control"; - req_access = list("command") - }, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/command/storage/eva) "sJX" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, @@ -54092,6 +54259,23 @@ "tdq" = ( /turf/open/floor/plating, /area/station/maintenance/department/cargo) +"tdN" = ( +/obj/machinery/door/airlock/research{ + name = "Research Division Access" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/turf/open/floor/iron/white, +/area/station/science/research) "tdW" = ( /obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 4 @@ -54166,6 +54350,23 @@ }, /turf/open/space/basic, /area/space/nearstation) +"tgn" = ( +/obj/machinery/computer/pod/old/mass_driver_controller/trash{ + pixel_x = -32; + pixel_y = 6; + range = 5 + }, +/obj/structure/cable, +/obj/machinery/button/door/directional/west{ + id = "Disposal Exit"; + name = "Disposal Vent Control"; + req_access = list("maint_tunnels"); + pixel_x = -32; + pixel_y = -6 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/station/maintenance/disposal) "tgr" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 6 @@ -55057,19 +55258,6 @@ /obj/effect/landmark/start/prisoner, /turf/open/floor/iron, /area/station/security/prison) -"tvW" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/rods/fifty, -/obj/item/stack/sheet/glass/fifty, -/obj/item/electronics/airlock, -/obj/item/electronics/airlock, -/obj/item/stock_parts/cell/high, -/obj/item/stack/sheet/mineral/plasma{ - amount = 30 - }, -/turf/open/floor/plating, -/area/station/engineering/storage) "twf" = ( /obj/machinery/door/poddoor/shutters/radiation/preopen{ id = "soup"; @@ -55247,6 +55435,15 @@ }, /turf/open/floor/iron/large, /area/station/hallway/secondary/exit/departure_lounge) +"tAs" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/machinery/door/window/brigdoor/right/directional/east{ + req_access = list("command") + }, +/obj/effect/turf_decal/bot, +/obj/machinery/light/small/dim/directional/west, +/turf/open/floor/iron, +/area/station/command/bridge) "tAt" = ( /obj/machinery/power/smes, /turf/open/floor/plating, @@ -55293,23 +55490,6 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"tBe" = ( -/obj/machinery/computer/pod/old/mass_driver_controller/trash{ - pixel_x = -32; - pixel_y = 6; - range = 5 - }, -/obj/structure/cable, -/obj/machinery/button/door/directional/west{ - id = "Disposal Exit"; - name = "Disposal Vent Control"; - req_access = list("maint_tunnels"); - pixel_x = -32; - pixel_y = -6 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/station/maintenance/disposal) "tBg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -55548,6 +55728,13 @@ "tEy" = ( /turf/open/floor/plating, /area/station/maintenance/department/bridge) +"tEB" = ( +/obj/machinery/door/airlock/engineering/glass{ + name = "Primary Tool Storage" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/commons/storage/primary) "tEH" = ( /obj/machinery/light/directional/east, /obj/effect/turf_decal/tile/dark_blue/half/contrasted{ @@ -55687,6 +55874,19 @@ /obj/machinery/light_switch/directional/west, /turf/open/floor/iron/white/smooth_large, /area/station/medical/chemistry) +"tGU" = ( +/obj/structure/cable, +/obj/machinery/door/airlock/engineering/glass{ + name = "Break Room" + }, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/any/engineering/general, +/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, +/turf/open/floor/iron, +/area/station/engineering/break_room) "tGW" = ( /obj/machinery/atmospherics/pipe/smart/simple/dark/visible, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -56173,6 +56373,7 @@ /obj/effect/mapping_helpers/airalarm/link{ chamber_id = "ordnancefreezer" }, +/obj/effect/mapping_helpers/airalarm/tlv_no_checks, /turf/open/floor/iron/dark, /area/station/science/ordnance) "tOA" = ( @@ -56369,6 +56570,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/science/xenobiology) +"tRT" = ( +/obj/structure/table/reinforced, +/obj/item/storage/medkit/regular, +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "tRX" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 8 @@ -56505,13 +56714,6 @@ dir = 4 }, /area/station/command/meeting_room) -"tUF" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp, -/obj/machinery/camera/autoname/directional/north, -/obj/machinery/keycard_auth/directional/north, -/turf/open/floor/carpet/green, -/area/station/command/heads_quarters/hop) "tUG" = ( /obj/structure/chair/stool/bar/directional/west, /obj/effect/turf_decal/siding/wood{ @@ -56533,6 +56735,14 @@ /obj/structure/cable, /turf/closed/wall/r_wall, /area/station/engineering/main) +"tVn" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/smart/simple/green/hidden{ + dir = 6 + }, +/turf/open/floor/iron/dark, +/area/station/science/ordnance) "tVF" = ( /obj/effect/spawner/structure/window/hollow/reinforced/middle, /obj/structure/cable, @@ -56930,6 +57140,24 @@ /obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron, /area/station/commons/fitness/recreation) +"uby" = ( +/obj/structure/transport/linear/public, +/obj/machinery/light/floor/transport, +/turf/open/floor/plating/elevatorshaft, +/area/station/cargo/storage) +"ubF" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Bridge" + }, +/obj/effect/mapping_helpers/airlock/access/any/command/general, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "bridgec" + }, +/obj/effect/mapping_helpers/airlock/access/any/admin/general, +/turf/open/floor/iron, +/area/station/hallway/secondary/command) "ubV" = ( /obj/structure/chair{ dir = 1 @@ -59112,20 +59340,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/large, /area/station/service/hydroponics/garden) -"uPg" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 9 - }, -/obj/machinery/lift_indicator/directional/south{ - linked_elevator_id = "medbay1"; - pixel_x = -32 - }, -/obj/machinery/button/elevator/directional/south{ - id = "medbay1"; - pixel_x = -32 - }, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "uPi" = ( /obj/effect/turf_decal/tile/brown/half/contrasted, /obj/effect/decal/cleanable/dirt, @@ -59711,14 +59925,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/virology) -"vay" = ( -/obj/structure/table/reinforced, -/obj/item/storage/medkit/regular, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/command/bridge) "vaC" = ( /turf/open/floor/catwalk_floor/iron_dark, /area/station/command/corporate_dock) @@ -60001,12 +60207,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor/iron_dark, /area/station/maintenance/department/engine) -"vgS" = ( -/obj/structure/table/glass, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/turf/open/floor/iron, -/area/station/engineering/lobby) "vgW" = ( /obj/structure/lattice, /turf/open/floor/engine/airless, @@ -60206,6 +60406,22 @@ /obj/structure/tank_dispenser/oxygen, /turf/open/floor/plating, /area/station/engineering/supermatter/room) +"vkP" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Bridge" + }, +/obj/effect/mapping_helpers/airlock/access/any/command/general, +/obj/structure/cable, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "bridgec" + }, +/obj/effect/mapping_helpers/airlock/access/any/admin/general, +/turf/open/floor/iron, +/area/station/hallway/secondary/command) "vkR" = ( /obj/machinery/firealarm/directional/west, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -61012,22 +61228,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/department/engine) -"vCq" = ( -/obj/machinery/light/small/directional/north, -/obj/machinery/cell_charger, -/obj/structure/table/reinforced, -/obj/item/stock_parts/cell/high, -/obj/machinery/camera/autoname/directional/east{ - network = list("ss13","rd") - }, -/obj/effect/turf_decal/siding/purple/corner{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/science/robotics/mechbay) "vCw" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -61080,6 +61280,13 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) +"vDA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/tank/oxygen{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/maintenance/department/science) "vDK" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -61588,19 +61795,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/service/bar) -"vME" = ( -/obj/machinery/door/airlock/engineering/glass{ - name = "Break Room" - }, -/obj/effect/mapping_helpers/airlock/access/any/engineering/general, -/obj/structure/cable, -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/engineering/construction, -/turf/open/floor/iron, -/area/station/engineering/break_room) "vMN" = ( /obj/structure/flora/coconuts, /turf/open/floor/grass, @@ -61854,15 +62048,6 @@ /obj/structure/grille, /turf/open/floor/plating, /area/station/engineering/supermatter/room) -"vQf" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/machinery/door/window/brigdoor/right/directional/east{ - req_access = list("command") - }, -/obj/effect/turf_decal/bot, -/obj/machinery/light/small/dim/directional/west, -/turf/open/floor/iron, -/area/station/command/bridge) "vQn" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 @@ -62284,6 +62469,21 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) +"vXW" = ( +/obj/machinery/door/airlock/command{ + name = "Head of Personnel's Booth" + }, +/obj/effect/turf_decal/siding/wood, +/obj/effect/mapping_helpers/airlock/access/any/command/hop, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "bridgehop" + }, +/turf/open/floor/carpet/green, +/area/station/command/heads_quarters/hop) "vYg" = ( /obj/effect/turf_decal/bot/right, /turf/open/floor/engine, @@ -62297,6 +62497,15 @@ "vYz" = ( /turf/closed/wall/r_wall, /area/station/medical/chemistry/minisat) +"vYH" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/machinery/door/poddoor/preopen{ + id = "rdoffice"; + name = "Research Director's Shutters" + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/station/command/heads_quarters/rd) "vYL" = ( /obj/machinery/computer/atmos_control/nitrous_tank, /obj/effect/turf_decal/tile/yellow{ @@ -62497,6 +62706,14 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"wcl" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/spawner/random/structure/closet_empty/crate, +/obj/item/stock_parts/power_store/cell, +/obj/structure/broken_flooring, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/plating, +/area/station/cargo/warehouse) "wcm" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/light/cold/directional/north, @@ -63690,6 +63907,24 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/ai_monitored/command/storage/satellite) +"wzW" = ( +/obj/machinery/door/airlock/research{ + name = "Research Division Access" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "sci-entrance" + }, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/all/science/general, +/turf/open/floor/iron/white, +/area/station/science/research) "wzX" = ( /obj/structure/flora/tree/palm/style_random, /turf/open/floor/grass, @@ -64297,6 +64532,24 @@ }, /turf/open/floor/iron/dark, /area/station/medical/chemistry/minisat) +"wJo" = ( +/obj/structure/table/reinforced, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = 4; + pixel_y = 5 + }, +/obj/item/stock_parts/power_store/cell/high{ + pixel_x = -8; + pixel_y = 9 + }, +/obj/item/stock_parts/power_store/cell/high, +/obj/machinery/cell_charger, +/obj/item/borg/upgrade/rename{ + pixel_x = 3; + pixel_y = 18 + }, +/turf/open/floor/iron/dark/textured, +/area/station/science/robotics/lab) "wJy" = ( /turf/closed/wall, /area/station/medical/storage) @@ -64882,21 +65135,6 @@ /obj/effect/spawner/structure/window/reinforced/plasma, /turf/open/floor/plating, /area/station/engineering/atmos) -"wVL" = ( -/obj/machinery/door/airlock/research{ - name = "Research Division Access" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "sci-entrance" - }, -/obj/effect/mapping_helpers/airlock/unres{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/science/general, -/turf/open/floor/iron/white, -/area/station/science/research) "wWk" = ( /obj/effect/turf_decal/stripes{ dir = 1 @@ -65195,19 +65433,6 @@ /obj/effect/turf_decal/siding/purple/corner, /turf/open/floor/iron/white/smooth_large, /area/station/science/research) -"xaC" = ( -/obj/machinery/portable_atmospherics/canister/anesthetic_mix, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/obj/structure/window/reinforced/spawner/directional/east, -/obj/machinery/door/window/right/directional/north{ - req_access = list("medical"); - name = "Anti Assistant Protection Door" - }, -/obj/effect/turf_decal/tile/blue/fourcorners, -/turf/open/floor/iron/white, -/area/station/medical/treatment_center) "xaH" = ( /obj/structure/filingcabinet, /obj/machinery/button/ticket_machine{ @@ -65282,10 +65507,6 @@ /obj/structure/rack, /turf/open/floor/plating, /area/station/asteroid) -"xbr" = ( -/obj/structure/window/reinforced/spawner/directional/west, -/turf/open/floor/glass/reinforced, -/area/station/security/prison) "xbs" = ( /obj/machinery/airalarm/directional/south, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -65920,22 +66141,6 @@ /obj/item/tank/internals/anesthetic, /turf/open/floor/engine, /area/station/science/xenobiology) -"xnc" = ( -/obj/machinery/door/airlock/command/glass{ - name = "Bridge" - }, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "bridgec" - }, -/obj/effect/mapping_helpers/airlock/access/any/admin/general, -/turf/open/floor/iron, -/area/station/hallway/secondary/command) "xne" = ( /obj/structure/cable, /obj/effect/spawner/random/maintenance/two, @@ -66435,6 +66640,17 @@ /obj/structure/cable/layer1, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"xwJ" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/closet/crate/science{ + opened = 1; + icon_state = "scicrateopen" + }, +/obj/item/tank, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/dark/smooth_large, +/area/station/science/ordnance) "xwO" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/disposalpipe/segment, @@ -66467,16 +66683,6 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos/pumproom) -"xxs" = ( -/obj/machinery/door/airlock/multi_tile/public{ - name = "Corporate Private Dock" - }, -/obj/structure/cable, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/any/command/general, -/obj/effect/mapping_helpers/airlock/access/any/admin/general, -/turf/open/floor/iron/dark/smooth_large, -/area/station/command/corporate_dock) "xxH" = ( /obj/machinery/firealarm/directional/south, /obj/effect/turf_decal/stripes/line{ @@ -66566,22 +66772,6 @@ }, /turf/open/floor/engine, /area/station/command/corporate_dock) -"xzC" = ( -/obj/item/circuitboard/machine/thermomachine, -/obj/item/circuitboard/machine/thermomachine, -/obj/item/storage/bag/construction, -/obj/item/storage/bag/construction, -/obj/item/storage/bag/construction, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high, -/obj/structure/closet/crate, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/light/dim/directional/south, -/turf/open/floor/iron/large, -/area/station/engineering/atmos) "xzG" = ( /obj/item/kirbyplants/random, /turf/open/floor/iron/white, @@ -66935,14 +67125,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/port/lesser) -"xFj" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/random/structure/closet_empty/crate, -/obj/item/stock_parts/cell, -/obj/structure/broken_flooring, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/plating, -/area/station/cargo/warehouse) "xFt" = ( /obj/structure/railing/corner{ dir = 4 @@ -67259,26 +67441,6 @@ }, /turf/open/floor/iron/dark/textured, /area/station/medical/morgue) -"xNb" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/machinery/button/door/directional/south{ - id = "capshut"; - pixel_x = -8; - name = "shutter control" - }, -/obj/machinery/fax{ - fax_name = "Captain's Office"; - name = "Captain's Fax Machine" - }, -/obj/structure/table/reinforced, -/obj/machinery/keycard_auth/directional/south{ - pixel_y = -24; - pixel_x = 8 - }, -/turf/open/floor/carpet/royalblue, -/area/station/command/heads_quarters/captain/private) "xNh" = ( /obj/effect/turf_decal/stripes/corner{ dir = 4 @@ -67597,6 +67759,20 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/cargo/storage) +"xTN" = ( +/obj/machinery/door/airlock/multi_tile/public{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/any/command/general, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/autoname, +/obj/effect/mapping_helpers/airlock/access/any/admin/general, +/turf/open/floor/iron/dark/smooth_large, +/area/station/command/meeting_room) "xTP" = ( /obj/machinery/atmospherics/pipe/smart/simple/green/visible{ dir = 5 @@ -67779,6 +67955,15 @@ }, /turf/open/floor/circuit/green, /area/station/ai_monitored/turret_protected/ai) +"xXf" = ( +/obj/structure/closet/crate/science, +/obj/item/wrench, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/firealarm/directional/west, +/obj/effect/spawner/random/maintenance, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron/dark/smooth_large, +/area/station/science/ordnance) "xXh" = ( /obj/machinery/power/shieldwallgen, /obj/effect/decal/cleanable/dirt/dust, @@ -68155,13 +68340,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/service/theater) -"ydy" = ( -/obj/machinery/door/airlock/engineering/glass{ - name = "Primary Tool Storage" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron, -/area/station/commons/storage/primary) "ydC" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/holosign/barrier, @@ -80342,7 +80520,7 @@ uMa sdc sdc hCS -xFj +wcl lLk lLk sWd @@ -81604,7 +81782,7 @@ eio eio mxq iPw -tBe +tgn vjZ jtd bPP @@ -82385,7 +82563,7 @@ jch oey dhN sdc -sgR +ezH eQQ vSt umh @@ -82426,7 +82604,7 @@ jPO osT dci piH -xaC +hng dKw dKw dKw @@ -82683,10 +82861,10 @@ pwn eaL eUB dgR -uPg +pjf bui yit -dpf +jEO yit dKw miD @@ -83671,11 +83849,11 @@ uDB uDB uDB sdc -fLM +uby soZ jCX jCX -fLM +uby sdc guF uyL @@ -84194,7 +84372,7 @@ xSE twR uyL dUS -meT +nTb sdc mHU cAQ @@ -84208,7 +84386,7 @@ ylV wdx rnk rnk -nKa +jnV kxa gwA mcl @@ -84699,11 +84877,11 @@ iHv rZJ rAK sdc -fLM +uby jCX qzF jCX -fLM +uby sdc dro uyL @@ -88819,7 +88997,7 @@ axi bAw cGP ygb -aat +mXT lQN qsI haf @@ -91398,7 +91576,7 @@ tWs acc oRa hWx -amE +jvU acc vjq pKb @@ -94182,11 +94360,11 @@ jpd jRc ruc jcW -xNb +fSH axD eKR sgz -tUF +fKp sPv eoo iLG @@ -94441,13 +94619,13 @@ aEP axD axD axD -vQf +tAs sgz vlD puT tsP wNa -jSs +vXW jzC mcw aKg @@ -94691,15 +94869,15 @@ cLf bqX bqX bhY -rcz +mCH eYO mrq eBK bQc -qOO +hgE nZB fCY -loC +kbU ejb fZr bUM @@ -95732,7 +95910,7 @@ alc jZj nAx kaz -dbJ +ubF mMH sPS jww @@ -95989,7 +96167,7 @@ cgo wHs odL wHs -xnc +vkP rEp qgd xaI @@ -96501,7 +96679,7 @@ oOP eKR eKR juw -mtG +mGw juw juw juw @@ -96746,7 +96924,7 @@ cLf cLf bqX cQP -vay +tRT eon sZK sZK @@ -97004,12 +97182,12 @@ cLf bqX bqX tsJ -bCr +nmF kYU jTd rkz lrc -eHa +gez vQP ita hOb @@ -98305,7 +98483,7 @@ juw juw juw wxW -oLg +flW dTd npg juw @@ -100880,7 +101058,7 @@ lnZ dCu xUR vRm -sJV +dLy utM xsv tHF @@ -101952,7 +102130,7 @@ nSH oqz kXz oqz -ydy +tEB dct hqk jFc @@ -102161,7 +102339,7 @@ vfJ vfJ vfJ vfJ -lqP +nwi grl pJN iKc @@ -102696,7 +102874,7 @@ nJF stw azv dZd -iFD +wJo lYm azv azv @@ -102980,7 +103158,7 @@ uLY teG sHg sHg -qmD +etE wKY iFq jFc @@ -103421,7 +103599,7 @@ cLf vxX dZy fhG -fmm +roH qrt rmx wHJ @@ -103712,7 +103890,7 @@ ipv tdk hkc swi -vCq +cEi cBB trL nMP @@ -103965,9 +104143,9 @@ qIQ irJ rBI cPt -ctE +tdN ixU -mOc +nhc swi swi swi @@ -104220,12 +104398,12 @@ cPt lcj tCz dfr -btY +kKS cPt iQZ oqp dfM -pgS +oWw lMT ixU ixU @@ -104993,9 +105171,9 @@ hEw irJ cPt cPt -dmE +wzW ixU -wVL +hcd ixU ixU ixU @@ -105552,7 +105730,7 @@ cwk joB dUi nCe -mBX +fgZ xma dUi xma @@ -106327,7 +106505,7 @@ gEJ jEc sJo xKC -omE +ndC jxd mQk dUi @@ -106578,13 +106756,13 @@ qsu kFp csB pAB -ryG +tGU sIx cFc iCM grv dUi -cAy +iEL vqI ger dUi @@ -106839,7 +107017,7 @@ gTV aGQ kEn jxd -vgS +rjP gur mkE jxd @@ -107347,7 +107525,7 @@ vIi dpU eyg gTV -vME +hfq gTV eyg wpn @@ -110160,7 +110338,7 @@ rFZ bND mjR bND -xzC +kaD fTX fTX fTX @@ -111414,10 +111592,10 @@ aku uOo aku aku -uro -rji -ilp -ilp +hpC +bFj +bFj +cPs cPs gOY gKe @@ -111672,11 +111850,11 @@ uOo aku aku pkw -foX -aku -ilp -foX -gOY +lmw +xXf +nYi +tVn +aLF bRZ hJj cmn @@ -111740,7 +111918,7 @@ cvL mCm cpG hRX -tvW +pBf prc prc prc @@ -111929,10 +112107,10 @@ uOo aku aku aku -foX -ouA -aku -aku +qhQ +mGg +blP +hDM gOY joD dbA @@ -112186,10 +112364,10 @@ aku aku aku aku -foX -aku -jJe -ieo +eFd +xwJ +cmn +qny gOY kke qZf @@ -112443,10 +112621,10 @@ aku aku aku uro -rji +bFj eGL hgq -vfJ +bFj gOY gOY gOY @@ -112702,7 +112880,7 @@ aku aku aku aku -upd +xAd wfU rbS kAI @@ -113731,7 +113909,7 @@ jBM lJq obA pka -hkG +vDA hkG moe mJU @@ -113979,274 +114157,274 @@ cLf cLf cLf cLf -vxX -vxX -vxX -obA +vxX +vxX +vxX +obA +cLf +cPl +cLf +obA +vfJ +vfJ +vfJ +moe +sbE +dlE +xjq +mgD +moe +fDj +fDj +moe +bwC +cLf +iUF +cLf +cLf +cLf +bwC +vxX +vxX +nbu +nbu +nbu +nbu +nbu +nbu +nbu +nbu +nbu +nbu +nbu +nbu +nbu +vxX +mUQ +cLf +bwC +cLf +cLf +cLf +bwC +cLf +vxX +vxX +vxX +vxX +uFC +uFC +jnY +oaG +uFC +oTv +fhH +oTv +uFC +oTv +uFC +oTv +spw +oTv +uFC +uFC +pqJ +uFC +fnI +dqK +mlk +dqK +wtF +vxX +vxX +vxX +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +"} +(178,1,1) = {" +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf +cLf cLf -cPl cLf -obA -upd -hkG -hkG -moe -sbE -dlE -xjq -mgD -moe -fDj -fDj -moe -bwC -cLf -iUF -cLf -cLf -cLf -bwC -vxX -vxX -nbu -nbu -nbu -nbu -nbu -nbu -nbu -nbu -nbu -nbu -nbu -nbu -nbu -vxX -mUQ -cLf -bwC -cLf -cLf -cLf -bwC -cLf -vxX -vxX -vxX -vxX -uFC -uFC -jnY -oaG -uFC -oTv -fhH -oTv -uFC -oTv -uFC -oTv -spw -oTv -uFC -uFC -pqJ -uFC -fnI -dqK -mlk -dqK -wtF vxX vxX -vxX -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -"} -(178,1,1) = {" -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf -cLf +obA cLf cLf cLf -vxX -vxX obA cLf cLf cLf -obA -vfJ -vfJ -vfJ moe fDj fDj @@ -150457,7 +150635,7 @@ jOV kDb ctL qCU -duB +rvu nvR fDi uEX @@ -151225,8 +151403,8 @@ hHw uRG oyP dAq -xbr -qFS +maT +pIB wSc jOV vxX @@ -151246,7 +151424,7 @@ mqA uaT tGw ipc -eQJ +mVR hED vxX vxX @@ -161010,7 +161188,7 @@ jxE ttt ttt ttt -qhg +cbT ttt wcH fib @@ -161264,7 +161442,7 @@ tot pWn ylD rTc -xxs +kNM xeF flm qeA @@ -162801,7 +162979,7 @@ fIv fIv fIv iEQ -oxN +xTN fIv fIv fIv @@ -170554,7 +170732,7 @@ vxX vxX vxX gMk -fJs +hVb vxX dtQ vxX @@ -172894,7 +173072,7 @@ vHa aWD aWD aWD -rOz +giX gCT kgb gaI @@ -174165,7 +174343,7 @@ kHU kHU kHU ouG -lHF +dTV dBp bPH dUi @@ -176443,7 +176621,7 @@ raz raz nzk fpY -lsx +vYH ssg vtN ylR diff --git a/_maps/shuttles/emergency_birdshot.dmm b/_maps/shuttles/emergency_birdshot.dmm index 20ffeb679d7d8..cb50d42c56db0 100644 --- a/_maps/shuttles/emergency_birdshot.dmm +++ b/_maps/shuttles/emergency_birdshot.dmm @@ -697,7 +697,7 @@ /obj/structure/window/reinforced/survival_pod/spawner/directional/north, /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell, +/obj/item/stock_parts/power_store/cell, /turf/open/floor/glass/reinforced, /area/shuttle/escape) "Id" = ( diff --git a/_maps/shuttles/emergency_cruise.dmm b/_maps/shuttles/emergency_cruise.dmm index 7e20dc7d47d58..8045930388cef 100644 --- a/_maps/shuttles/emergency_cruise.dmm +++ b/_maps/shuttles/emergency_cruise.dmm @@ -1648,7 +1648,7 @@ /turf/open/floor/carpet/executive, /area/shuttle/escape) "Jl" = ( -/mob/living/simple_animal/bot/vibebot, +/mob/living/basic/bot/vibebot, /turf/open/floor/iron, /area/shuttle/escape) "Jo" = ( diff --git a/_maps/shuttles/emergency_delta.dmm b/_maps/shuttles/emergency_delta.dmm index 5cca48f0d8fa3..854f76f7a154f 100644 --- a/_maps/shuttles/emergency_delta.dmm +++ b/_maps/shuttles/emergency_delta.dmm @@ -533,7 +533,7 @@ "bs" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/effect/turf_decal/bot, /obj/machinery/camera/autoname, /turf/open/floor/iron, @@ -1058,7 +1058,7 @@ "Rz" = ( /obj/structure/table/reinforced, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/shuttle/escape) diff --git a/_maps/shuttles/emergency_lance.dmm b/_maps/shuttles/emergency_lance.dmm index 56aa9fb25f5cd..c17d1767b13af 100644 --- a/_maps/shuttles/emergency_lance.dmm +++ b/_maps/shuttles/emergency_lance.dmm @@ -1285,7 +1285,7 @@ "Nx" = ( /obj/structure/table/reinforced, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/effect/turf_decal/tile/dark_blue/opposingcorners{ dir = 1 }, diff --git a/_maps/shuttles/emergency_northstar.dmm b/_maps/shuttles/emergency_northstar.dmm index 85b807d843157..e934a65b722fa 100644 --- a/_maps/shuttles/emergency_northstar.dmm +++ b/_maps/shuttles/emergency_northstar.dmm @@ -559,7 +559,7 @@ "Wd" = ( /obj/structure/table/reinforced, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /turf/open/floor/iron/smooth_large, /area/shuttle/escape) "Wz" = ( diff --git a/_maps/shuttles/emergency_omega.dmm b/_maps/shuttles/emergency_omega.dmm index e3f867a613047..7a183d4ac448a 100644 --- a/_maps/shuttles/emergency_omega.dmm +++ b/_maps/shuttles/emergency_omega.dmm @@ -337,7 +337,7 @@ "bm" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/structure/extinguisher_cabinet/directional/east, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, diff --git a/_maps/shuttles/emergency_raven.dmm b/_maps/shuttles/emergency_raven.dmm index ce552c3764b5d..7e3937568001f 100644 --- a/_maps/shuttles/emergency_raven.dmm +++ b/_maps/shuttles/emergency_raven.dmm @@ -1524,7 +1524,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/structure/table/reinforced, /turf/open/floor/plating, /area/shuttle/escape) diff --git a/_maps/shuttles/emergency_shadow.dmm b/_maps/shuttles/emergency_shadow.dmm index 19bbf8f786e14..de99a937b35b1 100644 --- a/_maps/shuttles/emergency_shadow.dmm +++ b/_maps/shuttles/emergency_shadow.dmm @@ -69,10 +69,10 @@ pixel_y = 9 }, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high{ +/obj/item/stock_parts/power_store/cell/high{ pixel_y = 9 }, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark/smooth_large, /area/shuttle/escape) diff --git a/_maps/shuttles/emergency_wawa.dmm b/_maps/shuttles/emergency_wawa.dmm new file mode 100644 index 0000000000000..01d03aa7c5d9c --- /dev/null +++ b/_maps/shuttles/emergency_wawa.dmm @@ -0,0 +1,1101 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/template_noop, +/area/template_noop) +"ac" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/mineral/plastitanium/red, +/area/shuttle/escape/brig) +"ad" = ( +/obj/machinery/door/poddoor/preopen{ + id = "dont close or i will kill you" + }, +/obj/machinery/door/airlock/external/glass, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "es4" + }, +/turf/open/floor/catwalk_floor, +/area/shuttle/escape) +"ae" = ( +/obj/structure/girder/reinforced, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"af" = ( +/obj/machinery/conveyor/auto{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/shuttle/escape) +"ag" = ( +/obj/structure/girder/reinforced, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/grille/broken, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating, +/area/shuttle/escape/brig) +"ah" = ( +/obj/structure/girder/reinforced, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/escape/brig) +"ai" = ( +/obj/structure/table, +/obj/item/restraints/handcuffs, +/obj/item/restraints/handcuffs, +/obj/effect/decal/cleanable/glass, +/obj/item/restraints/handcuffs{ + pixel_x = 12; + pixel_y = 6 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/mineral/plastitanium/red, +/area/shuttle/escape/brig) +"al" = ( +/turf/closed/wall/r_wall, +/area/shuttle/escape/brig) +"am" = ( +/obj/structure/table, +/obj/machinery/recharger, +/obj/effect/decal/cleanable/blood/old, +/obj/item/book/manual/wiki/security_space_law{ + pixel_x = 12 + }, +/obj/effect/decal/cleanable/glass, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/mineral/plastitanium/red, +/area/shuttle/escape/brig) +"an" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/turf_decal/siding/dark_blue{ + dir = 5 + }, +/turf/open/floor/iron, +/area/shuttle/escape) +"ao" = ( +/obj/machinery/computer/crew, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/grimy, +/area/shuttle/escape) +"ap" = ( +/obj/machinery/computer/emergency_shuttle, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/grimy, +/area/shuttle/escape) +"aq" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/mineral/plastitanium/red, +/area/shuttle/escape/brig) +"ar" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/mineral/plastitanium/red, +/area/shuttle/escape/brig) +"as" = ( +/obj/machinery/conveyor/auto{ + dir = 8 + }, +/obj/machinery/light/small/dim/directional/north, +/turf/open/floor/plating, +/area/shuttle/escape) +"at" = ( +/obj/structure/lattice, +/obj/structure/marker_beacon/burgundy, +/turf/template_noop, +/area/template_noop) +"au" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/open/floor/iron/grimy, +/area/shuttle/escape) +"ay" = ( +/obj/structure/girder/reinforced, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/escape/brig) +"aA" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/engine, +/area/shuttle/escape) +"aC" = ( +/obj/effect/turf_decal/tile/yellow/opposingcorners{ + dir = 8 + }, +/obj/machinery/light/warm/directional/north, +/obj/structure/chair/comfy/shuttle, +/turf/open/floor/iron/checker, +/area/shuttle/escape) +"aE" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/obj/structure/window/spawner/directional/south, +/turf/open/floor/iron/grimy, +/area/shuttle/escape) +"aG" = ( +/turf/open/floor/mineral/plastitanium/red, +/area/shuttle/escape/brig) +"aH" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, +/area/shuttle/escape/brig) +"aI" = ( +/obj/machinery/door/airlock/external, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "es1" + }, +/turf/open/floor/catwalk_floor, +/area/shuttle/escape/brig) +"aJ" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, +/area/shuttle/escape) +"aK" = ( +/obj/machinery/light/small/dim/directional/north, +/turf/open/floor/catwalk_floor, +/area/shuttle/escape) +"aM" = ( +/obj/machinery/light/warm/directional/north, +/obj/effect/turf_decal/stripes/line, +/obj/structure/chair/comfy/shuttle, +/turf/open/floor/engine, +/area/shuttle/escape) +"aP" = ( +/obj/docking_port/mobile/emergency{ + name = "Wawa stand-in emergency shuttle" + }, +/obj/machinery/door/airlock/external, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "es2" + }, +/turf/open/floor/catwalk_floor, +/area/shuttle/escape) +"aQ" = ( +/obj/machinery/door/airlock/external/glass, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "es2" + }, +/turf/open/floor/catwalk_floor, +/area/shuttle/escape) +"aR" = ( +/obj/machinery/conveyor/auto/inverted{ + dir = 5 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"aV" = ( +/obj/machinery/door/poddoor/preopen{ + id = "dont close or i will kill you" + }, +/obj/machinery/conveyor/auto{ + dir = 4 + }, +/obj/structure/fans/tiny/shield{ + max_integrity = 400; + name = "recycling shield"; + layer = 2.61 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"aW" = ( +/obj/machinery/recycler{ + dir = 8 + }, +/obj/machinery/conveyor/auto{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"aX" = ( +/obj/machinery/conveyor/auto, +/turf/open/floor/plating, +/area/shuttle/escape) +"aY" = ( +/obj/machinery/door/airlock/external, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "es4" + }, +/turf/open/floor/catwalk_floor, +/area/shuttle/escape) +"aZ" = ( +/obj/effect/turf_decal/tile/yellow/opposingcorners{ + dir = 8 + }, +/turf/open/floor/iron/checker, +/area/shuttle/escape) +"bb" = ( +/obj/machinery/conveyor/auto, +/obj/structure/plasticflaps/opaque, +/turf/open/floor/plating, +/area/shuttle/escape) +"bc" = ( +/obj/effect/turf_decal/tile/yellow/opposingcorners{ + dir = 8 + }, +/obj/structure/chair/plastic{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/checker, +/area/shuttle/escape) +"bd" = ( +/obj/machinery/conveyor/auto{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/shuttle/escape) +"be" = ( +/obj/machinery/conveyor/auto/inverted{ + dir = 1 + }, +/obj/structure/plasticflaps/opaque, +/turf/open/floor/plating, +/area/shuttle/escape) +"bf" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/toy/plush/lizard_plushie, +/turf/open/floor/plating, +/area/shuttle/escape) +"bg" = ( +/obj/machinery/conveyor/auto{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/small/dim/directional/north, +/turf/open/floor/plating, +/area/shuttle/escape) +"bj" = ( +/obj/effect/turf_decal/siding/dark_blue{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, +/area/shuttle/escape) +"bk" = ( +/obj/machinery/power/shuttle_engine/propulsion, +/turf/open/floor/plating/airless, +/area/shuttle/escape) +"bp" = ( +/obj/effect/turf_decal/tile/yellow/opposingcorners{ + dir = 8 + }, +/obj/structure/chair/comfy/shuttle, +/turf/open/floor/iron/checker, +/area/shuttle/escape) +"bq" = ( +/turf/closed/wall/r_wall, +/area/shuttle/escape) +"br" = ( +/turf/closed/wall, +/area/shuttle/escape) +"bs" = ( +/obj/machinery/conveyor/auto{ + dir = 1 + }, +/obj/structure/plasticflaps/opaque, +/turf/open/floor/plating, +/area/shuttle/escape) +"cH" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/structure/broken_flooring/singular{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/shuttle/escape) +"cY" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/machinery/power/shuttle_engine/heater, +/turf/open/floor/plating/airless, +/area/shuttle/escape) +"dj" = ( +/obj/machinery/conveyor/auto{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/shuttle/escape) +"dC" = ( +/obj/machinery/door/airlock/external/glass, +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "es1" + }, +/obj/structure/broken_flooring/side, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/shuttle/escape/brig) +"dZ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/chair/comfy/shuttle, +/turf/open/floor/engine, +/area/shuttle/escape) +"ga" = ( +/obj/effect/turf_decal/tile/yellow/opposingcorners{ + dir = 8 + }, +/obj/machinery/mineral/stacking_machine{ + input_dir = 8; + output_dir = 1 + }, +/obj/structure/window/reinforced/spawner/directional/east, +/turf/open/floor/iron/checker, +/area/shuttle/escape) +"gn" = ( +/obj/effect/decal/cleanable/rubble, +/obj/effect/turf_decal/stripes/box, +/turf/open/floor/plating, +/area/shuttle/escape) +"gX" = ( +/obj/effect/turf_decal/tile/yellow/opposingcorners{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/checker, +/area/shuttle/escape) +"hq" = ( +/obj/machinery/recycler{ + dir = 4 + }, +/obj/machinery/conveyor/auto{ + dir = 8 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"hV" = ( +/obj/machinery/door/airlock/external, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "es3" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/general, +/turf/open/floor/catwalk_floor, +/area/shuttle/escape) +"iN" = ( +/obj/effect/decal/cleanable/glass, +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/shuttle/escape) +"jA" = ( +/obj/effect/turf_decal/tile/yellow/opposingcorners{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/checker, +/area/shuttle/escape) +"jK" = ( +/obj/machinery/light/small/dim/directional/south, +/turf/open/floor/catwalk_floor, +/area/shuttle/escape) +"ks" = ( +/obj/structure/closet/crate/medical, +/obj/item/storage/medkit/regular{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/storage/medkit/fire, +/mob/living/basic/bot/medbot/derelict, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/grimy, +/area/shuttle/escape) +"ld" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/mineral/titanium/white, +/area/shuttle/escape) +"lI" = ( +/obj/effect/turf_decal/tile/yellow/opposingcorners{ + dir = 8 + }, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/closet/crate/preopen, +/turf/open/floor/iron/checker, +/area/shuttle/escape) +"lP" = ( +/obj/machinery/vending/wallmed/directional/south, +/turf/open/floor/catwalk_floor, +/area/shuttle/escape) +"mT" = ( +/obj/machinery/computer/atmos_alert{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/grimy, +/area/shuttle/escape) +"nN" = ( +/obj/effect/turf_decal/tile/yellow/opposingcorners{ + dir = 8 + }, +/obj/structure/chair/plastic, +/turf/open/floor/iron/checker, +/area/shuttle/escape) +"nZ" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/warm/dim/directional/south, +/turf/open/floor/plating, +/area/shuttle/escape/brig) +"oY" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/structure/chair/comfy/shuttle, +/turf/open/floor/engine, +/area/shuttle/escape) +"pQ" = ( +/obj/structure/girder/reinforced, +/obj/structure/grille/broken, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating, +/area/shuttle/escape) +"pW" = ( +/turf/open/floor/catwalk_floor, +/area/shuttle/escape/brig) +"qJ" = ( +/obj/machinery/conveyor/auto{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/small/dim/directional/north, +/turf/open/floor/plating, +/area/shuttle/escape) +"qQ" = ( +/obj/structure/girder/reinforced, +/obj/effect/spawner/structure/window/hollow/reinforced/middle{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"rX" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/shuttle/escape) +"sj" = ( +/obj/machinery/conveyor/auto{ + dir = 6 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"tw" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, +/area/shuttle/escape) +"tQ" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/mineral/plastitanium/red, +/area/shuttle/escape/brig) +"uQ" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, +/area/shuttle/escape) +"vz" = ( +/obj/structure/table, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/glass, +/obj/item/restraints/handcuffs, +/turf/open/floor/mineral/plastitanium/red, +/area/shuttle/escape/brig) +"wj" = ( +/obj/effect/turf_decal/tile/yellow/opposingcorners{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/mineral/stacking_unit_console{ + pixel_y = 32 + }, +/obj/structure/chair/comfy/shuttle, +/turf/open/floor/iron/checker, +/area/shuttle/escape) +"xg" = ( +/obj/effect/spawner/structure/window/hollow/middle{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"xT" = ( +/obj/machinery/conveyor/auto{ + dir = 8 + }, +/obj/machinery/light/small/dim/directional/south, +/turf/open/floor/plating, +/area/shuttle/escape) +"xY" = ( +/obj/machinery/conveyor/auto{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/shuttle/escape) +"za" = ( +/obj/machinery/conveyor/auto{ + dir = 8 + }, +/obj/machinery/door/poddoor/preopen{ + id = "dont close or i will kill you" + }, +/obj/structure/fans/tiny/shield{ + max_integrity = 400; + name = "recycling shield"; + layer = 2.61 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"zT" = ( +/obj/effect/turf_decal/siding/dark_blue{ + dir = 1 + }, +/obj/structure/table, +/obj/item/storage/fancy/cigarettes/cigars/cohiba, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/warm/dim/directional/south, +/turf/open/floor/iron, +/area/shuttle/escape) +"Di" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/shuttle/escape) +"Dk" = ( +/obj/machinery/door/poddoor/preopen{ + id = "dont close or i will kill you" + }, +/obj/machinery/door/airlock/external/glass, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "es3" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/general, +/turf/open/floor/catwalk_floor, +/area/shuttle/escape) +"DT" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/mineral/titanium/white, +/area/shuttle/escape) +"ER" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/mineral/titanium/white, +/area/shuttle/escape) +"FH" = ( +/obj/machinery/conveyor/auto{ + dir = 4 + }, +/obj/machinery/light/small/dim/directional/north, +/turf/open/floor/plating, +/area/shuttle/escape) +"FL" = ( +/obj/machinery/computer/communications, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/grimy, +/area/shuttle/escape) +"Gw" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, +/area/shuttle/escape/brig) +"Ic" = ( +/obj/effect/mapping_helpers/airlock/access/all/security/general, +/obj/machinery/door/airlock/security/glass{ + name = "Brig" + }, +/turf/open/floor/catwalk_floor, +/area/shuttle/escape/brig) +"Iw" = ( +/obj/structure/table, +/obj/item/storage/medkit/fire, +/obj/item/storage/medkit/regular{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/crowbar, +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/mineral/titanium/white, +/area/shuttle/escape) +"IR" = ( +/obj/machinery/conveyor/auto{ + dir = 4 + }, +/obj/machinery/light/small/dim/directional/south, +/turf/open/floor/plating, +/area/shuttle/escape) +"Lq" = ( +/obj/structure/broken_flooring/pile{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/small/dim/directional/north, +/turf/open/floor/plating, +/area/shuttle/escape/brig) +"LJ" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/broken_flooring/singular{ + dir = 8 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"LQ" = ( +/obj/structure/window/spawner/directional/south, +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/open/floor/iron/grimy, +/area/shuttle/escape) +"MN" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Cockpit" + }, +/obj/effect/mapping_helpers/airlock/access/all/command/general, +/turf/open/floor/catwalk_floor, +/area/shuttle/escape) +"Ne" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/mineral/titanium/white, +/area/shuttle/escape) +"ND" = ( +/obj/machinery/conveyor/auto/inverted{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/shuttle/escape) +"NW" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/broken_flooring/pile, +/turf/open/floor/plating, +/area/shuttle/escape) +"Oi" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/reagent_containers/pill/maintenance, +/turf/open/floor/plating, +/area/shuttle/escape) +"Oq" = ( +/obj/structure/broken_flooring/pile, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/shuttle/escape) +"Pp" = ( +/obj/machinery/stasis, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/mineral/titanium/white, +/area/shuttle/escape) +"Pw" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/template_noop) +"QP" = ( +/obj/machinery/conveyor/auto/inverted{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/escape) +"Rm" = ( +/turf/open/floor/catwalk_floor, +/area/shuttle/escape) +"SI" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/open/floor/iron/grimy, +/area/shuttle/escape) +"SX" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/grimy, +/area/shuttle/escape) +"Tq" = ( +/turf/closed/wall/rust, +/area/shuttle/escape) +"Xl" = ( +/obj/machinery/stasis, +/obj/structure/broken_flooring/singular, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/shuttle/escape) +"Xw" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/obj/structure/window/spawner/directional/south, +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/mineral/plastitanium/red, +/area/shuttle/escape/brig) +"XE" = ( +/turf/open/floor/iron/grimy, +/area/shuttle/escape) +"Yk" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/shuttle/escape) + +(1,1,1) = {" +aa +aa +aa +aa +aa +aa +al +al +aI +bq +aP +bq +aa +aa +aa +bq +aV +bq +aV +bq +aa +aa +aa +"} +(2,1,1) = {" +aa +at +Pw +al +al +al +al +Lq +pW +bq +jK +bq +qQ +pQ +qQ +bq +FH +bq +IR +bq +bq +bq +aa +"} +(3,1,1) = {" +aa +aa +al +al +aq +aq +al +dC +al +bq +aQ +bq +LJ +iN +iN +bq +aW +bq +aW +bq +bf +bq +bq +"} +(4,1,1) = {" +aa +aa +ah +am +ar +aG +Xw +Gw +al +dZ +Rm +rX +aJ +NW +Yk +aA +sj +aX +aX +bb +ND +cY +bk +"} +(5,1,1) = {" +aa +aa +ag +ai +aG +tQ +ac +aH +Ic +Rm +Rm +aA +Yk +Yk +aJ +rX +jA +gX +bc +br +bg +cY +bk +"} +(6,1,1) = {" +aa +aa +ah +vz +aG +ar +Xw +nZ +al +oY +Rm +rX +tw +uQ +tw +bq +bp +jA +lI +Tq +af +cY +bk +"} +(7,1,1) = {" +aa +at +al +al +ay +ay +ay +al +al +aM +lP +bq +xg +xg +xg +bq +aC +jA +gn +bs +xY +cY +bk +"} +(8,1,1) = {" +aa +aa +ae +ao +SX +SX +LQ +zT +bq +dZ +Rm +aA +Di +cH +ER +bq +wj +aZ +ga +br +dj +cY +bk +"} +(9,1,1) = {" +aa +aa +ae +ap +au +XE +SX +bj +MN +Rm +Rm +aA +Oq +DT +ld +rX +aZ +gX +nN +Tq +qJ +cY +bk +"} +(10,1,1) = {" +aa +aa +ae +FL +SI +XE +aE +an +bq +oY +Rm +rX +Yk +Ne +DT +aA +aR +QP +QP +be +bd +cY +bk +"} +(11,1,1) = {" +aa +aa +bq +bq +mT +ks +bq +Dk +bq +bq +ad +bq +Xl +Iw +Pp +bq +hq +bq +hq +bq +Oi +bq +bq +"} +(12,1,1) = {" +at +Pw +Pw +bq +bq +bq +bq +aK +Rm +bq +jK +bq +qQ +qQ +qQ +bq +as +bq +xT +bq +bq +bq +aa +"} +(13,1,1) = {" +aa +aa +aa +aa +aa +aa +bq +bq +hV +bq +aY +bq +aa +aa +aa +bq +za +bq +za +bq +aa +aa +aa +"} diff --git a/_maps/shuttles/emergency_zeta.dmm b/_maps/shuttles/emergency_zeta.dmm index 399b40156ceb6..720a906a767c8 100644 --- a/_maps/shuttles/emergency_zeta.dmm +++ b/_maps/shuttles/emergency_zeta.dmm @@ -23,7 +23,7 @@ pixel_x = -10; pixel_y = 6 }, -/obj/item/stock_parts/cell/infinite/abductor{ +/obj/item/stock_parts/power_store/cell/infinite/abductor{ pixel_x = 5 }, /turf/open/floor/plating/abductor, diff --git a/_maps/shuttles/infiltrator_advanced.dmm b/_maps/shuttles/infiltrator_advanced.dmm index c9123066874f0..9f93df25b0479 100644 --- a/_maps/shuttles/infiltrator_advanced.dmm +++ b/_maps/shuttles/infiltrator_advanced.dmm @@ -1219,11 +1219,11 @@ pixel_x = 32 }, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high{ +/obj/item/stock_parts/power_store/cell/high{ pixel_x = 4; pixel_y = 4 }, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/item/multitool, /turf/open/floor/pod/dark, /area/shuttle/syndicate/armory) diff --git a/_maps/shuttles/infiltrator_basic.dmm b/_maps/shuttles/infiltrator_basic.dmm index 31b85a89f2cd9..805f9053e2476 100644 --- a/_maps/shuttles/infiltrator_basic.dmm +++ b/_maps/shuttles/infiltrator_basic.dmm @@ -462,11 +462,11 @@ /area/shuttle/syndicate/medical) "ce" = ( /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high{ +/obj/item/stock_parts/power_store/cell/high{ pixel_x = -3; pixel_y = 3 }, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/structure/extinguisher_cabinet/directional/west, /obj/structure/table/reinforced/plastitaniumglass, /obj/effect/turf_decal/tile/yellow{ diff --git a/_maps/shuttles/mining_kilo.dmm b/_maps/shuttles/mining_kilo.dmm index 3352abdf14d5a..f52a5c947f3e6 100644 --- a/_maps/shuttles/mining_kilo.dmm +++ b/_maps/shuttles/mining_kilo.dmm @@ -102,7 +102,7 @@ /area/shuttle/mining/large) "p" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/item/screwdriver{ pixel_y = 18 }, diff --git a/_maps/shuttles/mining_large.dmm b/_maps/shuttles/mining_large.dmm index 3be1c617cfc92..56cf2ef7d3333 100644 --- a/_maps/shuttles/mining_large.dmm +++ b/_maps/shuttles/mining_large.dmm @@ -128,7 +128,7 @@ "p" = ( /obj/structure/table/reinforced, /obj/effect/decal/cleanable/dirt, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/item/screwdriver{ pixel_y = 18 }, diff --git a/_maps/shuttles/pirate_default.dmm b/_maps/shuttles/pirate_default.dmm index 0f588e1df27bc..6acff639725ff 100644 --- a/_maps/shuttles/pirate_default.dmm +++ b/_maps/shuttles/pirate_default.dmm @@ -451,7 +451,7 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /turf/open/floor/pod/light, /area/shuttle/pirate) "bm" = ( diff --git a/_maps/shuttles/pirate_ex_interdyne.dmm b/_maps/shuttles/pirate_ex_interdyne.dmm index 77f5ddecaab1c..e5e576e3d65f9 100644 --- a/_maps/shuttles/pirate_ex_interdyne.dmm +++ b/_maps/shuttles/pirate_ex_interdyne.dmm @@ -154,7 +154,7 @@ /area/shuttle/pirate) "aD" = ( /obj/machinery/power/apc/auto_name/directional/north{ - cell_type = /obj/item/stock_parts/cell/bluespace; + cell_type = /obj/item/stock_parts/power_store/battery/bluespace; start_charge = 100 }, /obj/effect/mapping_helpers/apc/cut_AI_wire, diff --git a/_maps/shuttles/pirate_geode.dmm b/_maps/shuttles/pirate_geode.dmm index 3a75c42779401..afb582e432203 100644 --- a/_maps/shuttles/pirate_geode.dmm +++ b/_maps/shuttles/pirate_geode.dmm @@ -237,9 +237,9 @@ }, /obj/structure/table/wood, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high, /turf/open/floor/plating, /area/shuttle/pirate) "oa" = ( diff --git a/_maps/shuttles/pirate_grey.dmm b/_maps/shuttles/pirate_grey.dmm index 522576fdf0264..23bc06b5dc922 100644 --- a/_maps/shuttles/pirate_grey.dmm +++ b/_maps/shuttles/pirate_grey.dmm @@ -861,7 +861,7 @@ /area/shuttle/pirate) "Bu" = ( /obj/machinery/power/apc/auto_name/directional/north{ - cell_type = /obj/item/stock_parts/cell/bluespace + cell_type = /obj/item/stock_parts/power_store/battery/bluespace }, /obj/structure/reagent_dispensers/watertank, /obj/effect/turf_decal/bot, @@ -927,7 +927,7 @@ "De" = ( /obj/structure/table/reinforced, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/machinery/airalarm/directional/east, /turf/open/floor/plating, /area/shuttle/pirate) diff --git a/_maps/shuttles/pirate_irs.dmm b/_maps/shuttles/pirate_irs.dmm index c352bb02c3e82..e01639a9a9fe6 100644 --- a/_maps/shuttles/pirate_irs.dmm +++ b/_maps/shuttles/pirate_irs.dmm @@ -281,7 +281,7 @@ pixel_x = -9; pixel_y = -4 }, -/obj/item/stock_parts/cell/lead{ +/obj/item/stock_parts/power_store/cell/lead{ pixel_y = -8; pixel_x = 2 }, diff --git a/_maps/shuttles/ruin_cyborg_mothership.dmm b/_maps/shuttles/ruin_cyborg_mothership.dmm index cb12e49ee631c..8ee4eb11a6a32 100644 --- a/_maps/shuttles/ruin_cyborg_mothership.dmm +++ b/_maps/shuttles/ruin_cyborg_mothership.dmm @@ -59,7 +59,7 @@ pixel_y = 10 }, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /turf/open/floor/circuit/green/airless, /area/shuttle/ruin/cyborg_mothership) "eO" = ( diff --git a/_maps/shuttles/ruin_pirate_cutter.dmm b/_maps/shuttles/ruin_pirate_cutter.dmm index 2777f06ce8cbd..422d5bfb2cdd5 100644 --- a/_maps/shuttles/ruin_pirate_cutter.dmm +++ b/_maps/shuttles/ruin_pirate_cutter.dmm @@ -266,7 +266,7 @@ /obj/structure/table, /obj/machinery/cell_charger, /obj/item/stack/cable_coil, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/effect/turf_decal/bot, /turf/open/floor/plating, /area/shuttle/ruin/caravan/pirate) diff --git a/_maps/shuttles/whiteship_birdshot.dmm b/_maps/shuttles/whiteship_birdshot.dmm index b6bb7f6155bb7..593b84827bf3f 100644 --- a/_maps/shuttles/whiteship_birdshot.dmm +++ b/_maps/shuttles/whiteship_birdshot.dmm @@ -1033,7 +1033,7 @@ pixel_x = 4; pixel_y = 11 }, -/obj/item/stock_parts/cell/high{ +/obj/item/stock_parts/power_store/cell/high{ pixel_x = 4; pixel_y = 11 }, @@ -1199,7 +1199,7 @@ /obj/machinery/cell_charger{ pixel_y = 11 }, -/obj/item/stock_parts/cell/high{ +/obj/item/stock_parts/power_store/cell/high{ pixel_y = 11 }, /obj/item/stack/cable_coil{ diff --git a/_maps/shuttles/whiteship_cere.dmm b/_maps/shuttles/whiteship_cere.dmm index 4e53e54651e16..aac0c4d7ada83 100644 --- a/_maps/shuttles/whiteship_cere.dmm +++ b/_maps/shuttles/whiteship_cere.dmm @@ -502,7 +502,7 @@ /obj/structure/table/reinforced/titaniumglass, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /turf/open/floor/catwalk_floor/iron_dark, /area/shuttle/abandoned/cargo) "wN" = ( diff --git a/_maps/shuttles/whiteship_delta.dmm b/_maps/shuttles/whiteship_delta.dmm index 53e09ce34d3c8..efc2302379730 100644 --- a/_maps/shuttles/whiteship_delta.dmm +++ b/_maps/shuttles/whiteship_delta.dmm @@ -1168,7 +1168,7 @@ /obj/structure/table, /obj/machinery/cell_charger, /obj/item/stack/cable_coil, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/item/multitool{ pixel_y = -13 }, @@ -1819,7 +1819,7 @@ pixel_x = -3; pixel_y = 8 }, -/obj/item/stock_parts/cell/high{ +/obj/item/stock_parts/power_store/cell/high{ pixel_x = 3; pixel_y = -1 }, diff --git a/_maps/shuttles/whiteship_donut.dmm b/_maps/shuttles/whiteship_donut.dmm index ff9d17b5e36b1..eff7c2bfaadb7 100644 --- a/_maps/shuttles/whiteship_donut.dmm +++ b/_maps/shuttles/whiteship_donut.dmm @@ -55,7 +55,7 @@ /area/shuttle/abandoned) "cm" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /turf/open/floor/iron/airless, /area/shuttle/abandoned) "da" = ( @@ -389,7 +389,7 @@ /area/shuttle/abandoned) "NG" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/stock_parts/cell/high/empty, +/obj/item/stock_parts/power_store/cell/high/empty, /turf/open/floor/plating/airless, /area/shuttle/abandoned) "Ot" = ( diff --git a/_maps/shuttles/whiteship_kilo.dmm b/_maps/shuttles/whiteship_kilo.dmm index cbc214f21d828..8034d78126d68 100644 --- a/_maps/shuttles/whiteship_kilo.dmm +++ b/_maps/shuttles/whiteship_kilo.dmm @@ -570,7 +570,7 @@ /obj/machinery/cell_charger, /obj/structure/table, /obj/effect/decal/cleanable/dirt, -/obj/item/stock_parts/cell/emproof/empty{ +/obj/item/stock_parts/power_store/cell/emproof/empty{ pixel_y = 7; pixel_x = 5 }, diff --git a/_maps/shuttles/whiteship_meta.dmm b/_maps/shuttles/whiteship_meta.dmm index c01d6742975ab..9939b4b55ff87 100644 --- a/_maps/shuttles/whiteship_meta.dmm +++ b/_maps/shuttles/whiteship_meta.dmm @@ -792,7 +792,7 @@ pixel_x = 2; pixel_y = 6 }, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /turf/open/floor/iron/dark, /area/shuttle/abandoned/engine) "cy" = ( @@ -836,7 +836,7 @@ /obj/machinery/light/small/built/directional/west, /obj/effect/decal/cleanable/dirt, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/item/radio/off{ pixel_x = 6; pixel_y = 7 @@ -1000,7 +1000,7 @@ /obj/structure/table, /obj/machinery/cell_charger, /obj/item/stack/cable_coil, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/item/multitool, /obj/structure/cable, /turf/open/floor/plating, @@ -1933,7 +1933,7 @@ /obj/item/stack/cable_coil{ pixel_x = 2 }, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/shuttle/abandoned/cargo) diff --git a/_maps/shuttles/whiteship_pubby.dmm b/_maps/shuttles/whiteship_pubby.dmm index 807d1385899ab..56f85fcd80218 100644 --- a/_maps/shuttles/whiteship_pubby.dmm +++ b/_maps/shuttles/whiteship_pubby.dmm @@ -406,7 +406,7 @@ "qS" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/effect/turf_decal/bot_white, /obj/effect/turf_decal/siding/purple{ dir = 9 diff --git a/_maps/shuttles/whiteship_tram.dmm b/_maps/shuttles/whiteship_tram.dmm index 0dfa8b414bdd6..84f438accfd1d 100644 --- a/_maps/shuttles/whiteship_tram.dmm +++ b/_maps/shuttles/whiteship_tram.dmm @@ -500,7 +500,7 @@ /obj/structure/cable, /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/item/multitool{ pixel_x = 7; pixel_y = 5 diff --git a/_maps/templates/battlecruiser_starfury.dmm b/_maps/templates/battlecruiser_starfury.dmm index 001a937e97b3b..ca9ff3858872e 100644 --- a/_maps/templates/battlecruiser_starfury.dmm +++ b/_maps/templates/battlecruiser_starfury.dmm @@ -648,7 +648,7 @@ "cy" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/effect/turf_decal/siding/thinplating_new/dark, /obj/effect/turf_decal/stripes/red/line, /turf/open/floor/mineral/plastitanium/red, @@ -1735,7 +1735,7 @@ "gN" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/structure/cable, /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 8 @@ -3279,7 +3279,7 @@ "lg" = ( /obj/structure/table/reinforced, /obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/power_store/cell/high, /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 8 }, @@ -5090,8 +5090,8 @@ /area/shuttle/sbc_starfury) "MQ" = ( /obj/structure/closet/crate, -/obj/item/stock_parts/cell/high, -/obj/item/stock_parts/cell/high{ +/obj/item/stock_parts/power_store/cell/high, +/obj/item/stock_parts/power_store/cell/high{ pixel_x = -3; pixel_y = -3 }, diff --git a/_maps/virtual_domains/abductor_ship.dmm b/_maps/virtual_domains/abductor_ship.dmm index ebb4a042bb97b..35bf563eb45c4 100644 --- a/_maps/virtual_domains/abductor_ship.dmm +++ b/_maps/virtual_domains/abductor_ship.dmm @@ -153,7 +153,7 @@ "sv" = ( /obj/structure/table/abductor, /obj/item/crowbar/abductor, -/obj/item/stock_parts/cell/infinite/abductor{ +/obj/item/stock_parts/power_store/cell/infinite/abductor{ pixel_x = 5; pixel_y = -3 }, diff --git a/_maps/wawastation.json b/_maps/wawastation.json index cce65601baf71..71d716a56e07e 100644 --- a/_maps/wawastation.json +++ b/_maps/wawastation.json @@ -7,7 +7,7 @@ "cargo": "cargo_box", "ferry": "ferry_fancy", "whiteship": "whiteship_meta", - "emergency": "emergency_tram" + "emergency": "emergency_wawa" }, "traits": [ { diff --git a/code/__DEFINES/ai/ai_blackboard.dm b/code/__DEFINES/ai/ai_blackboard.dm index 23c16bdcd0b38..90a9b55ba1749 100644 --- a/code/__DEFINES/ai/ai_blackboard.dm +++ b/code/__DEFINES/ai/ai_blackboard.dm @@ -162,3 +162,6 @@ // Used to hold state without making bigass lists /// For /datum/ai_behavior/find_potential_targets, what if any field are we using currently #define BB_FIND_TARGETS_FIELD(type) "bb_find_targets_field_[type]" + +///mothroach next meal key! +#define BB_MOTHROACH_NEXT_EAT "mothroach_next_eat" diff --git a/code/__DEFINES/ai/bot_keys.dm b/code/__DEFINES/ai/bot_keys.dm index 61189861141d7..05c0b7aff1899 100644 --- a/code/__DEFINES/ai/bot_keys.dm +++ b/code/__DEFINES/ai/bot_keys.dm @@ -109,3 +109,16 @@ DEFINE_BITFIELD(honkbot_flags, list( ///key that holds our honk ability #define BB_HONK_ABILITY "honk_ability" +//vibebots +///key that holds our partying ability +#define BB_VIBEBOT_PARTY_ABILITY "party_ability" +///key that holds our birthday song +#define BB_VIBEBOT_BIRTHDAY_SONG "birthday_song" +///key that holds happy songs we play to depressed targets +#define BB_VIBEBOT_HAPPY_SONG "happy_song" +///key that holds grim song we play when emagged +#define BB_VIBEBOT_GRIM_SONG "GRIM_song" +///key that holds neutral targets we vibe with +#define BB_VIBEBOT_PARTY_TARGET "party_target" +///key that holds our instrument +#define BB_VIBEBOT_INSTRUMENT "instrument" diff --git a/code/__DEFINES/ai/pet_commands.dm b/code/__DEFINES/ai/pet_commands.dm index 7404cb9acda84..5f03bf1a5b0d7 100644 --- a/code/__DEFINES/ai/pet_commands.dm +++ b/code/__DEFINES/ai/pet_commands.dm @@ -7,6 +7,6 @@ #define BB_PET_TARGETING_STRATEGY "BB_pet_targeting" /// Typecache of weakrefs to mobs this mob is friends with, will follow their instructions and won't attack them #define BB_FRIENDS_LIST "BB_friends_list" +/// List of strings we might say to encourage someone to make better choices. +#define BB_OWNER_SELF_HARM_RESPONSES "BB_self_harm_responses" -///mothroach next meal key! -#define BB_MOTHROACH_NEXT_EAT "mothroach_next_eat" diff --git a/code/__DEFINES/atom_hud.dm b/code/__DEFINES/atom_hud.dm index 7df79b7e57a26..86de96f07a1d1 100644 --- a/code/__DEFINES/atom_hud.dm +++ b/code/__DEFINES/atom_hud.dm @@ -81,6 +81,7 @@ #define SECHUD_ASSISTANT "hudassistant" #define SECHUD_ATMOSPHERIC_TECHNICIAN "hudatmospherictechnician" #define SECHUD_BARTENDER "hudbartender" +#define SECHUD_BITAVATAR "hudbitavatar" #define SECHUD_BITRUNNER "hudbitrunner" #define SECHUD_BOTANIST "hudbotanist" #define SECHUD_BRIDGE_ASSISTANT "hudbridgeassistant" diff --git a/code/__DEFINES/chat.dm b/code/__DEFINES/chat.dm index 4590a5081f0d1..c3fe46b0cd496 100644 --- a/code/__DEFINES/chat.dm +++ b/code/__DEFINES/chat.dm @@ -45,3 +45,5 @@ #define debug_world_log(msg) if (GLOB.Debug2) log_world("DEBUG: [msg]") /// Adds a generic box around whatever message you're sending in chat. Really makes things stand out. #define examine_block(str) ("
" + str + "
") +/// Emboldens runechat messages +#define RUNECHAT_BOLD(str) "+[str]+" diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm index 1ecead91214ba..08a771bf7ddf6 100644 --- a/code/__DEFINES/layers.dm +++ b/code/__DEFINES/layers.dm @@ -281,7 +281,7 @@ ///Layer for lobby menu collapse button #define LOBBY_BELOW_MENU_LAYER 2 -///Layer for lobby menu background image and main buttons (Join/Ready, Observe, Charater Prefs) +///Layer for lobby menu background image and main buttons (Join/Ready, Observe, Character Prefs) #define LOBBY_MENU_LAYER 3 ///Layer for lobby menu shutter, which covers up the menu to collapse/expand it #define LOBBY_SHUTTER_LAYER 4 diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index a0c40856dace1..f1a48df79faee 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -309,7 +309,7 @@ #define SLIME_EVOLUTION_THRESHOLD 10 //Slime evolution cost in nutrition -#define SLIME_EVOLUTION_COST 200 +#define SLIME_EVOLUTION_COST 100 //Slime extract crossing. Controls how many extracts is required to feed to a slime to core-cross. #define SLIME_EXTRACT_CROSSING_REQUIRED 10 @@ -443,13 +443,14 @@ #define REM REAGENTS_EFFECT_MULTIPLIER //! Shorthand for the above define for ease of use in equations and the like // Eye protection +// THese values are additive to determine your overall flash protection. #define FLASH_PROTECTION_HYPER_SENSITIVE -2 #define FLASH_PROTECTION_SENSITIVE -1 #define FLASH_PROTECTION_NONE 0 #define FLASH_PROTECTION_FLASH 1 #define FLASH_PROTECTION_WELDER 2 -#define FLASH_PROTECTION_WELDER_PLUS 3 -#define FLASH_PROTECTION_MAXIMUM 4 +#define FLASH_PROTECTION_WELDER_SENSITIVE 3 +#define FLASH_PROTECTION_WELDER_HYPER_SENSITIVE 4 // AI Toggles #define AI_CAMERA_LUMINOSITY 5 diff --git a/code/__DEFINES/modular_computer.dm b/code/__DEFINES/modular_computer.dm index a8e5c38ffc68f..9659e7e0d7acf 100644 --- a/code/__DEFINES/modular_computer.dm +++ b/code/__DEFINES/modular_computer.dm @@ -41,7 +41,7 @@ #define PROGRAM_CATEGORY_SCIENCE "Science" ///The default amount a program should take in cell use. -#define PROGRAM_BASIC_CELL_USE 15 +#define PROGRAM_BASIC_CELL_USE 2 WATTS ///This app grants a minor protection against being PDA bombed if installed. ///(can sometimes prevent it from being sent, while wasting a PDA bomb from the sender). diff --git a/code/__DEFINES/obj_flags.dm b/code/__DEFINES/obj_flags.dm index 62ae5a7394a0a..c050c73f23133 100644 --- a/code/__DEFINES/obj_flags.dm +++ b/code/__DEFINES/obj_flags.dm @@ -87,6 +87,8 @@ #define INEDIBLE_CLOTHING (1<<16) /// Headgear/helmet allows internals #define HEADINTERNALS (1<<17) +/// Prevents masks from getting adjusted from enabling internals +#define INTERNALS_ADJUST_EXEMPT (1<<18) /// Integrity defines for clothing (not flags but close enough) #define CLOTHING_PRISTINE 0 // We have no damage on the clothing diff --git a/code/__DEFINES/paper.dm b/code/__DEFINES/paper.dm index feb41c0409cd3..0d70a2f3ca40d 100644 --- a/code/__DEFINES/paper.dm +++ b/code/__DEFINES/paper.dm @@ -16,3 +16,5 @@ #define BARCODE_SCANNER_CHECKIN "check_in" #define BARCODE_SCANNER_INVENTORY "inventory" + +#define IS_WRITING_UTENSIL(thing) (thing?.get_writing_implement_details()?["interaction_mode"] == MODE_WRITING) diff --git a/code/__DEFINES/power.dm b/code/__DEFINES/power.dm index f22d756d37514..2476906d91322 100644 --- a/code/__DEFINES/power.dm +++ b/code/__DEFINES/power.dm @@ -20,11 +20,18 @@ #define JOULES * JOULE ///The capacity of a standard power cell -#define STANDARD_CELL_VALUE (1 MEGA) +#define STANDARD_CELL_VALUE (10 KILO) ///The amount of energy, in joules, a standard powercell has. - #define STANDARD_CELL_CHARGE (STANDARD_CELL_VALUE JOULES) // 1 MJ. + #define STANDARD_CELL_CHARGE (STANDARD_CELL_VALUE JOULES) // 10 KJ. ///The amount of power, in watts, a standard powercell can give. - #define STANDARD_CELL_RATE (STANDARD_CELL_VALUE WATTS) // 1 MW. + #define STANDARD_CELL_RATE (STANDARD_CELL_VALUE WATTS) // 10 KW. + +/// Capacity of a standard battery +#define STANDARD_BATTERY_VALUE (STANDARD_CELL_VALUE * 100) + /// The amount of energy, in joules, a standard battery has. + #define STANDARD_BATTERY_CHARGE (STANDARD_BATTERY_VALUE JOULES) // 1 MJ + /// The amount of energy, in watts, a standard battery can give. + #define STANDARD_BATTERY_RATE (STANDARD_BATTERY_VALUE WATTS) // 1 MW // Converts cable layer to its human readable name GLOBAL_LIST_INIT(cable_layer_to_name, list( diff --git a/code/__DEFINES/research/slimes.dm b/code/__DEFINES/research/slimes.dm index e03c6af8f581d..03671ee24d2a0 100644 --- a/code/__DEFINES/research/slimes.dm +++ b/code/__DEFINES/research/slimes.dm @@ -11,15 +11,15 @@ #define SLIME_MAX_POWER 10 ///The maximum amount of nutrition a slime can contain -#define SLIME_MAX_NUTRITION 1000 +#define SLIME_MAX_NUTRITION 200 ///The starting nutrition of a slime -#define SLIME_STARTING_NUTRITION 700 +#define SLIME_STARTING_NUTRITION 100 /// Above it we grow our amount_grown and our power_level, below it we can eat -#define SLIME_GROW_NUTRITION 800 +#define SLIME_GROW_NUTRITION 150 /// Below this, we feel hungry -#define SLIME_HUNGER_NUTRITION 500 +#define SLIME_HUNGER_NUTRITION 50 /// Below this, we feel starving -#define SLIME_STARVE_NUTRITION 200 +#define SLIME_STARVE_NUTRITION 10 ///The slime is not hungry. It might try to feed anyways. #define SLIME_HUNGER_NONE 0 diff --git a/code/__DEFINES/robots.dm b/code/__DEFINES/robots.dm index 4ec8e1294c312..bcca92e606091 100644 --- a/code/__DEFINES/robots.dm +++ b/code/__DEFINES/robots.dm @@ -35,9 +35,9 @@ /// Special value to reset cyborg's lamp_cooldown #define BORG_LAMP_CD_RESET -1 /// How many watts per lamp power is consumed while the lamp is on. -#define BORG_LAMP_POWER_CONSUMPTION (1000 WATTS) +#define BORG_LAMP_POWER_CONSUMPTION (5 WATTS) /// The minimum power consumption of a cyborg. -#define BORG_MINIMUM_POWER_CONSUMPTION (500 WATTS) +#define BORG_MINIMUM_POWER_CONSUMPTION (1 WATTS) //Module slot define ///The third module slots is disabed. diff --git a/code/__DEFINES/song.dm b/code/__DEFINES/song.dm index 782a7923ea14f..0e7e9f0ce0692 100644 --- a/code/__DEFINES/song.dm +++ b/code/__DEFINES/song.dm @@ -15,3 +15,9 @@ #define MONKEY_SONG "BPM: 200\nC4/0,14,C,A4-F2,F3,A3,F-F2,A-F,F4,G4,F,D4-Bb2-G2\nD3,G3,D-G2,G3-G2,D,D4-G3,D,B4-B2,G,B3,G-B2,B3-B2\nG4,A4,G,E4-C3,E3,G3,E-C,G-C,E,E4-G,E,C5-E-A3,C4\nA-E3,C,E4-C3,A4-C4,B4-A3-A2,C5-C4,D5-F-B3,D4,B-F3\nD,F4-D3,D4,F-B-B2,G4-D,A4-C-F3,F,C/2,B3/2,A3-C3/2\nB/2,C4,E-C3,F4,G-C,F-F3,F-C,C4/2,B/2,A-A2/2,G3/2\nF/I" ///song played by the mook bard #define MOOK_SONG "BPM: 240\nA5,B5,C#6,D6,E6/0.17,A/0.5,A/0.25,A3/0.25\nA4/0.25,C#5/0.25,E5/0.25,A/0.25,C#/0.25,E/0.12\nC#6/0.25,C#/0.25,E6/0.25,A3/0.25,A4/0.25\nC#5/0.25,E5/0.25,A/0.25,C#/0.25,E/0.25,D/0.25\nG6/0.25,D/0.17,F6/0.17,C#6/0.5,E6/0.5,D4/0.25\nA/0.25,D5/0.25,F5/0.25,A/0.25,D/0.25,F/0.25\nD6/0.08,F6/0.08,D4/0.25,A/0.25,D5/0.25,F5/0.25\nCn4/0.2,B/0.17,D6/0.17,G5/0.5,G/0.25,B3/0.25\nD4/0.25,G4/0.25,B4/0.25,D/0.25,G/0.25,B/0.12\nB5/0.25,B/0.25,D6/0.25,G3/0.25,G4/0.25,B4/0.25\nF/0.25,G/0.25,B/0.25,F/0.25,D/0.25,F6/0.25\nC6/0.17,E/0.17,B5/0.5,D#/0.5,C4/0.25,G/0.25\nC5/0.25,E5/0.25,G/0.25,C/0.25,E/0.25,C6/0.08\nE6/0.08,C4/0.25,Dn4/0.25,E4/0.25,A5/0.17,B/0.5\nC6/0.25,F5/0.08,F4/0.08,C5/0.08,E5/0.12,G5/0.12\nC6/0.25,E6/0.25,E4/0.08,C5/0.08,B/0.17,F6/0.17\nE6/0.5,B/0.25,E4/0.08,G#4/0.08,C6/0.17,D6/0.5\nE6/0.25,A3/0.25,E4/0.25,C5/0.25,Gn3/0.25\nF5/0.12,A5/0.12,A6/0.25,F3/0.25,F4/0.12,A4/0.12\nC/0.12,F6/0.17,A6/0.17,G#6/0.5,A/0.25,F3/0.25\nF4/0.12,A4/0.12,D#5/0.12,B/0.17,G#/0.17,B6/0.5\nB5/0.25,G#/0.25,E3/0.25,E4/0.12,G#4/0.12\nDn/0.12,E6/0.08,E3/0.25,F#3/0.25,G#3/0.25\nE5/0.17,A5/0.17,E/0.5,E/0.25,A3/0.25,C#4/0.25\nE4/0.25,C#/0.25,E/0.12,A5/0.5,B/0.5,C#6/0.5\nD6/0.5,A3/0.25,C#4/0.25,E/0.25,C#/0.25,E/0.25\nE6/0.08,Gn/0.25,E4/0.25,A4/0.25,C#5/0.25,E/0.25\nA/0.25,C#/0.25,E6/0.17,E/0.5,Fn6/0.5,G6/0.5\nG3/0.25,E4/0.25,A/0.25,C#/0.25,E/0.25,A/0.25\nC#/0.25,F/0.08,A6/0.08,F3/0.25,F4/0.25,A4/0.25\nCn/0.25,F/0.25,A/0.25,C/0.25,G6/0.12,A6/0.12\nG A G F6 G3/0.25 D4/0.25 G4/0.25 B4/0.25 D/0.25\nG/0.25 B/0.25 E6/0.12 G6/0.12 F/0.71 G/0.71 F/0.71\nE3/0.25 E4/0.25 G4/0.25 B/0.25 E/0.25 G/0.25 B/0.25\nA5/0.08 E6/0.08 A3/0.25 E4/0.25 A4/0.25 C#/0.25 E/0.25 A/0.25 C#/0.25 D6/0.17 E6/0.5 F/0.25 B3/0.25 D4/0.12 F4/0.12 B4/0.12 F6/0.25 E/0.25 D6/0.25 G#3/0.25 E4/0.12 G#4/0.12 B/0.12 Cn6/0.12 D/0.25 A3/0.25 A4/0.25 C5/0.25 E5/0.25 G#3/0.25 Gn/0.25 C4/0.25 E4/0.25 A/" +///song played by the vibebot when cheering people up +#define VIBEBOT_CHEER_SONG "BPM: 360\nE4/0.5,B4-G4/0.5,G-B-E/0.5,D4,Gb,A4-D-G/0.25\nGn-B3-E/0.5,G-B-E/0.5,A3-D-Gb/0.5,E-Gn-B/0.17,E,G\nB4/0.5,E-B-G/0.5,D,Gb,A4-D-G/0.25,B3-Gn-E/0.5\nG-B-E/0.5,A3-D-Gb/0.5,E-Gn-B/0.17,E-G-C5/0.5,G,E,G\nC,B4-Eb-Gb/0.5,B3-E-G/0.5,B-E-G3/0.5,C-Gn4-En/0.5\nG,E,G,C,Eb-Gb-B4/0.17,C-Gn-En/0.5,G,E,G,C\nB-C-Eb-Gb/0.5,B3-E-G/0.5,E-B-G3/0.5,C-En-Gn4,E,G,C\nE,G,A4-Gb-D5/0.17,E/0.5,B4-Gn/0.5,G-B-E/0.5,D4,Gb\nA-D-G/0.25,Gn-B3-E/0.5,G-B-E/0.5,A3-D-Gb/0.5\nE-Gn-B/0.17,E,G,B4/0.5,E-B-G/0.5,D,Gb,A4-D-G/0.25\nB3-Gn-E/0.5,G-B-E/0.5,A3-D-Gb/0.5,E-Gn-B/0.17\nE-G-C/0.5,G,E,G,C,B4-Eb-Gb/0.5,B3-E-G/0.5\nB-E-G3/0.5,C-Gn4-En/0.5,G,E,G,C,Eb-Gb-B4/0.17\nC-Gn-En/0.5,G,E,G,C,B-C-Eb-Gb/0.5,B3-E-G/0.5\nE-B-G3/0.5,C-En-Gn4,E,G,C,E,G,A4-Gb-D5/0.17\nGn-E-B/0.5,B-G3-E,E3-G-B,G4-E4-B/0.5,A3-D4-Gb/0.5\nA-D-G3/0.5,D3-G-A/0.5,Gn4-E-B/0.5,B-G3-E,E3-G-B\nG4-E4-B/0.5,A-D4-Gb/0.17,A4-F4-C4/0.5,C-A3-F\nF3-A-C,C-F4-A4/0.5,B-Gn-E/0.5,B-G3-E/0.5\nG-E3-B/0.5,A3-D-Gb4/0.5,D-A-G3/0.5,D3-A-G/0.5\nA-D4-G4/0.17,Gn-E4-B/0.5,B-G3-E,E3-G-B,G4-E4-B/0.5\nA-D-Gb/0.5,A-D-G3/0.5,D3-G-A/0.5,Gn4-E-B/0.5\nB-G3-E,E3-G-B,G4-E4-B/0.5,A-D4-Gb/0.17,A4-F-C/0.5\nC-A3-F,F3-A-C,C-F4-A4/0.5,B-Gn-E/0.5,B-G3-E/0.5\nG-E3-B/0.5,A3-D-Gb4/0.5,D-A-G3/0.5,D3-A-G/0.5\nE4-A-Db4/0.17,A2,E3,Gn-B-E4,A,E3,B-G-E4\nA3-Dn-F-D3/0.5,F3-A-D4/0.5,D3/0.5,A2,E3,B-E4-G,A\nE3,B-G-E4,F-D4-A3/0.17,A2,E3,B-E4-G,A,E3,B-G-E4\nB-A3-F4-D-D3/0.5,F3-D4-A/0.5,F-A-D3/0.5,A2,E3\nB-E4-G,A,E3,B-E4-G,F-A3-D4-D3/0.17,A2,E3,G-B-E4,A\nE3,B-G-E4,A3-D4-F4-D3/0.5,F3-A-D4/0.5,D3/0.5,A2,E3\nB-E4-G,A,E3,B-G-E4,F-D4-A3/0.17,A2,E3,B-E4-G,A,E3\nB-G-E4,B-A3-F4-D-D3/0.5,F3-D4-A/0.5,F-A-D3/0.5,A2\nE3,B-E4-G,A,E3,B-E4-G,F-A3-D4-D3/0.17,E/0.5\nB4-G4/0.5,G-B-E/0.5,D4,Gb,A4-D-G/0.25,Gn-B3-E/0.5\nG-B-E/0.5,A3-D-Gb/0.5,E-Gn-B/0.17,E,G,B4/0.5\nE-B-G/0.5,D,Gb,A4-D-G/0.25,B3-Gn-E/0.5,G-B-E/0.5\nA3-D-Gb/0.5,E-Gn-B/0.17,E-G-C5/0.5,G,E,G,C\nB4-Eb-Gb/0.5,B3-E-G/0.5,B-E-G3/0.5,C-Gn4-En/0.5,G\nE,G,C,Eb-Gb-B4/0.17,C-Gn-En/0.5,G,E,G,C\nB-Eb-Gb/0.5,B3-E-G/0.5,E-B-G3/0.53,En-Gn4/8,C,G,E\nB4,G,E,B3-E-G/0.07" +///grim music played by the vibebot +#define VIBEBOT_GRIM_MUSIC "BPM: 92\nG5/0.5,C#7-F#5/1.08,G6-G5/0.52,D6-D5,B6-E5/0.52\nG6-G5/1.08,D6-D5/0.34,Cn6-C5-G6/0.5,D,B5-F#6/13\nB4/0.52,C6-C5-G,A4/0.28,G-G5/0.5\nC#7-F#-F#5/1.08,G6-G5/0.52,D6-D5,B6-E/0.52,G-G6\nB5,D7/13,D6/0.52,Cn6,B6-B5,G-G5,G/0.5\nF#-C#7/1.08,G6-G5/0.22,G/0.5,C#-F#/1.08\nG6-G5/0.52,D-D5,B6-E/0.52,G6-G5/1.08,D6-D5/0.34\nCn6-C5-G6/0.5,D,B5-F#6/13,B4/0.52,C6-G-C5/0.25\nG-G5/0.5,C#7-F#-F#5/1.08,G6-G5/0.52,D6-D5\nB6-E/0.52,G-G6,B5,D7/13,D6/0.52,Cn6,B6-B5,G-G5\nG/0.5,F#-C#7/1.08,G6-G5/0.65" +///happy birthday music we play to the birthday boy +#define VIBEBOT_HAPPY_BIRTHDAY "BPM: 120\nG4/0.5,G4/0.25,A4/0.5,G4/0.5,C5/0.5,B4/1\nG4/0.5,G4/0.25,A4/0.5,G4/0.5,D5/0.5,C5/1\nG4/0.5,G4/0.5,G5/0.5,E5/0.5,C5/0.5,B4/0.5,A4/0.5\nF5/0.5,F5/0.5,E5/0.5,C5/0.5,D5/0.5,C5/1" diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index c34e0f2925e9f..8d2b54ab72f87 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -553,8 +553,11 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai ///Given by /obj/item/virgin_mary, mobs that used this can no longer use it again ever #define TRAIT_MAFIAINITIATE "mafiainitiate" +/// Our mob has the mind reading genetic mutation. +#define TRAIT_MIND_READER "mind reader" + ///Makes the player appear as their respective job in Binary Talk rather than being a 'Default Cyborg'. -#define DISPLAYS_JOB_IN_BINARY "display_job_in_binary" +#define TRAIT_DISPLAY_JOB_IN_BINARY "display job in binary" // METABOLISMS // Various jobs on the station have historically had better reactions @@ -1164,4 +1167,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// This trait lets you attach limbs to any player without surgery. #define TRAIT_EASY_ATTACH "easy_attach" +///Trait given to the birthday boy +#define TRAIT_BIRTHDAY_BOY "birthday_boy" // END TRAIT DEFINES diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index ead7b324cea13..f98178d537fa3 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -99,6 +99,7 @@ DEFINE_BITFIELD(clothing_flags, list( "THICKMATERIAL" = THICKMATERIAL, "VOICEBOX_DISABLED" = VOICEBOX_DISABLED, "VOICEBOX_TOGGLABLE" = VOICEBOX_TOGGLABLE, + "INTERNALS_ADJUST_EXEMPT" = INTERNALS_ADJUST_EXEMPT, )) DEFINE_BITFIELD(datum_flags, list( diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index 36f96bcc563e0..76c69425bf54b 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -111,7 +111,7 @@ GLOBAL_LIST_INIT(common_loot, list( //common: basic items /obj/item/stack/rods/twentyfive = 1, /obj/item/stack/sheet/iron/twenty = 1, /obj/item/stack/sheet/mineral/plasma = 1, - /obj/item/stock_parts/cell = 1, + /obj/item/stock_parts/power_store/cell = 1, //assemblies /obj/item/assembly/health = 1, @@ -133,7 +133,7 @@ GLOBAL_LIST_INIT(common_loot, list( //common: basic items /obj/item/reagent_containers/cup/rag = 1, /obj/item/reagent_containers/hypospray/medipen/pumpup = 2, /obj/item/reagent_containers/syringe = 1, - /obj/item/stock_parts/cell/lead = 1, + /obj/item/stock_parts/power_store/cell/lead = 1, /obj/item/storage/box/matches = 1, /obj/item/storage/fancy/cigarettes/dromedaryco = 1, ) = 1, @@ -205,7 +205,7 @@ GLOBAL_LIST_INIT(uncommon_loot, list(//uncommon: useful items /obj/item/seeds/kronkus = 1, /obj/item/seeds/odious_puffball = 1, /obj/item/stack/sheet/mineral/wood/fifty = 1, - /obj/item/stock_parts/cell/high = 1, + /obj/item/stock_parts/power_store/cell/high = 1, /obj/item/storage/box/clown = 1, /obj/item/weaponcrafting/receiver = 1, /obj/item/book/granter/crafting_recipe/death_sandwich = 1, diff --git a/code/_globalvars/lists/names.dm b/code/_globalvars/lists/names.dm index 81fe08373b31a..dce2dc69a50ae 100644 --- a/code/_globalvars/lists/names.dm +++ b/code/_globalvars/lists/names.dm @@ -24,6 +24,7 @@ GLOBAL_LIST_INIT(nightmare_names, world.file2list("strings/names/nightmare.txt") GLOBAL_LIST_INIT(megacarp_first_names, world.file2list("strings/names/megacarp1.txt")) GLOBAL_LIST_INIT(megacarp_last_names, world.file2list("strings/names/megacarp2.txt")) GLOBAL_LIST_INIT(cyberauth_names, world.file2list("strings/names/cyberauth.txt")) +GLOBAL_LIST_INIT(hacker_aliases, world.file2list("strings/names/hackers.txt")) GLOBAL_LIST_INIT(syndicate_monkey_names, world.file2list("strings/names/syndicate_monkey.txt")) GLOBAL_LIST_INIT(cargorilla_names, world.file2list("strings/names/cargorilla.txt")) GLOBAL_LIST_INIT(guardian_first_names, world.file2list("strings/names/guardian_descriptions.txt")) diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 66f32028c6b9c..5d1e88667b738 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -140,6 +140,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_BATON_RESISTANCE" = TRAIT_BATON_RESISTANCE, "TRAIT_BEAST_EMPATHY" = TRAIT_BEAST_EMPATHY, "TRAIT_BEING_BLADE_SHIELDED" = TRAIT_BEING_BLADE_SHIELDED, + "TRAIT_BIRTHDAY_BOY" = TRAIT_BIRTHDAY_BOY, "TRAIT_BLOB_ALLY" = TRAIT_BLOB_ALLY, "TRAIT_BLOCK_SHUTTLE_MOVEMENT" = TRAIT_BLOCK_SHUTTLE_MOVEMENT, "TRAIT_BLOOD_CLANS" = TRAIT_BLOOD_CLANS, @@ -149,6 +150,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_BONSAI" = TRAIT_BONSAI, "TRAIT_BOOZE_SLIDER" = TRAIT_BOOZE_SLIDER, "TRAIT_BORN_MONKEY" = TRAIT_BORN_MONKEY, + "TRAIT_BOXING_READY" = TRAIT_BOXING_READY, "TRAIT_BRAINWASHING" = TRAIT_BRAINWASHING, "TRAIT_BRAWLING_KNOCKDOWN_BLOCKED" = TRAIT_BRAWLING_KNOCKDOWN_BLOCKED, "TRAIT_BYPASS_EARLY_IRRADIATED_CHECK" = TRAIT_BYPASS_EARLY_IRRADIATED_CHECK, @@ -186,7 +188,8 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_DISEASELIKE_SEVERITY_MEDIUM" = TRAIT_DISEASELIKE_SEVERITY_MEDIUM, "TRAIT_DISFIGURED" = TRAIT_DISFIGURED, "TRAIT_DISGUISED" = TRAIT_DISGUISED, - "DISPLAYS_JOB_IN_BINARY" = DISPLAYS_JOB_IN_BINARY, + "TRAIT_DISPLAY_JOB_IN_BINARY" = TRAIT_DISPLAY_JOB_IN_BINARY, + "TRAIT_DISCO_DANCER" = TRAIT_DISCO_DANCER, "TRAIT_DISK_VERIFIER" = TRAIT_DISK_VERIFIER, "TRAIT_DISSECTED" = TRAIT_DISSECTED, "TRAIT_DONT_WRITE_MEMORY" = TRAIT_DONT_WRITE_MEMORY, @@ -289,6 +292,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_LITERATE" = TRAIT_LITERATE, "TRAIT_LIVERLESS_METABOLISM" = TRAIT_LIVERLESS_METABOLISM, "TRAIT_MADNESS_IMMUNE" = TRAIT_MADNESS_IMMUNE, + "TRAIT_MAFIAINITIATE" = TRAIT_MAFIAINITIATE, "TRAIT_MAGICALLY_GIFTED" = TRAIT_MAGICALLY_GIFTED, "TRAIT_MAGICALLY_PHASED" = TRAIT_MAGICALLY_PHASED, "TRAIT_MARTIAL_ARTS_IMMUNE" = TRAIT_MARTIAL_ARTS_IMMUNE, @@ -297,6 +301,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_MESON_VISION" = TRAIT_MESON_VISION, "TRAIT_MIME_FAN" = TRAIT_MIME_FAN, "TRAIT_MIMING" = TRAIT_MIMING, + "TRAIT_MIND_READER" = TRAIT_MIND_READER, "TRAIT_MINDSHIELD" = TRAIT_MINDSHIELD, "TRAIT_MIND_TEMPORARILY_GONE" = TRAIT_MIND_TEMPORARILY_GONE, "TRAIT_MOB_BREEDER" = TRAIT_MOB_BREEDER, @@ -445,7 +450,9 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_STABLEHEART" = TRAIT_STABLEHEART, "TRAIT_STABLELIVER" = TRAIT_STABLELIVER, "TRAIT_STASIS" = TRAIT_STASIS, + "TRAIT_STIMMED" = TRAIT_STIMMED, "TRAIT_STIMULATED" = TRAIT_STIMULATED, + "TRAIT_STRENGTH" = TRAIT_STRENGTH, "TRAIT_STRONG_GRABBER" = TRAIT_STRONG_GRABBER, "TRAIT_STRONG_STOMACH" = TRAIT_STRONG_STOMACH, "TRAIT_STUBBY_BODY" = TRAIT_STUBBY_BODY, @@ -507,11 +514,6 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_XENO_IMMUNE" = TRAIT_XENO_IMMUNE, "TRAIT_XRAY_HEARING" = TRAIT_XRAY_HEARING, "TRAIT_XRAY_VISION" = TRAIT_XRAY_VISION, - "TRAIT_DISCO_DANCER" = TRAIT_DISCO_DANCER, - "TRAIT_MAFIAINITIATE" = TRAIT_MAFIAINITIATE, - "TRAIT_STRENGTH" = TRAIT_STRENGTH, - "TRAIT_STIMMED" = TRAIT_STIMMED, - "TRAIT_BOXING_READY" = TRAIT_BOXING_READY, ), /obj/item = list( "TRAIT_APC_SHOCKING" = TRAIT_APC_SHOCKING, diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index bb4cf4cd0299b..beeb1599f2038 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -458,9 +458,8 @@ return var/message_verb_continuous = length(I.attack_verb_continuous) ? "[pick(I.attack_verb_continuous)]" : "attacks" var/message_verb_simple = length(I.attack_verb_simple) ? "[pick(I.attack_verb_simple)]" : "attack" - var/message_hit_area = "" - if(hit_area) - message_hit_area = " in the [hit_area]" + var/message_hit_area = get_hit_area_message(hit_area) + var/attack_message_spectator = "[src] [message_verb_continuous][message_hit_area] with [I]!" var/attack_message_victim = "Something [message_verb_continuous] you[message_hit_area] with [I]!" var/attack_message_attacker = "You [message_verb_simple] [src][message_hit_area] with [I]!" @@ -475,3 +474,11 @@ to_chat(src, span_danger("Someone hits you[message_hit_area]!")) to_chat(user, span_danger("[attack_message_attacker]")) return 1 + +/// Overridable proc so subtypes can have unique targetted strike zone messages, return a string. +/mob/living/proc/get_hit_area_message(input_area) + if(input_area) + return " in the [input_area]" + + return "" + diff --git a/code/datums/ai/_ai_controller.dm b/code/datums/ai/_ai_controller.dm index 58e9746cbf086..7b46a7b06e803 100644 --- a/code/datums/ai/_ai_controller.dm +++ b/code/datums/ai/_ai_controller.dm @@ -625,7 +625,7 @@ multiple modular subtrees with behaviors /datum/ai_controller/proc/post_blackboard_key_set(key) if (isnull(pawn)) return - SEND_SIGNAL(pawn, COMSIG_AI_BLACKBOARD_KEY_SET(key)) + SEND_SIGNAL(pawn, COMSIG_AI_BLACKBOARD_KEY_SET(key), key) /** * Adds the passed "thing" to the associated key diff --git a/code/datums/brain_damage/severe.dm b/code/datums/brain_damage/severe.dm index a639a0f5714c9..d5f0a0e91240a 100644 --- a/code/datums/brain_damage/severe.dm +++ b/code/datums/brain_damage/severe.dm @@ -336,11 +336,11 @@ * This one is for "The Sister and He Who Wept" or /obj/structure/sign/painting/eldritch */ /datum/brain_trauma/severe/weeping - name = "The Weeping" - desc = "Patient hallucinates everyone as a figure called He Who Wept" - scan_desc = "H_E##%%%WEEP6%11S!!,)()" - gain_text = span_warning("HE WEEPS AND I WILL SEE HIM ONCE MORE") - lose_text = span_notice("You feel the tendrils of something slip from your mind.") + name = "Psychotic Depression" + desc = "Patient is suffering from severe depressive episodes. Patient sometimes hallucinates during these episodes." + scan_desc = "depression" + gain_text = span_warning("The weeping... It haunts my mind...") + lose_text = span_notice("Your fixation ends. You feel significantly less stressed.") random_gain = FALSE /// Our cooldown declare for causing hallucinations COOLDOWN_DECLARE(weeping_hallucinations) @@ -360,11 +360,11 @@ //This one is for "The First Desire" or /obj/structure/sign/painting/eldritch/desire /datum/brain_trauma/severe/flesh_desire - name = "The Desire for Flesh" - desc = "Patient appears hungrier and only wishes to eat meats." - scan_desc = "H_(82882)G3E:__))9R" - gain_text = span_warning("I feel a hunger, only organs and flesh will feed it...") - lose_text = span_notice("You no longer feel the hunger for flesh...") + name = "Bean's Disorder" + desc = "Patient has a fixation on consuming raw flesh, particularly that of the same species. Patient also suffers from psychosomatic hunger pangs." + scan_desc = "moderate eating disorder" + gain_text = span_warning("You feel a hunger, for organs and raw meat...") + lose_text = span_notice("Your appetite returns to normal.") random_gain = FALSE /// How much faster we loose hunger var/hunger_rate = 15 @@ -379,7 +379,7 @@ // Causes them to need to eat at 10x the normal rate owner.adjust_nutrition(-hunger_rate * HUNGER_FACTOR) if(SPT_PROB(10, seconds_per_tick)) - to_chat(owner, span_notice("You feel a ravenous hunger for flesh...")) + to_chat(owner, span_notice(pick("You can't stop thinking about raw meat...", "You **NEED** to eat someone.", "The hunger pangs are back...", "You hunger for flesh.", "You are starving!"))) owner.overeatduration = max(owner.overeatduration - 200 SECONDS, 0) /datum/brain_trauma/severe/flesh_desire/on_lose() @@ -389,11 +389,11 @@ // This one is for "Lady out of gates" or /obj/item/wallframe/painting/eldritch/beauty /datum/brain_trauma/severe/eldritch_beauty - name = "The Pursuit of Perfection" - desc = "Patient seems to furiously scratch at their body, the only way to make them cease is for them to remove their jumpsuit." - scan_desc = "I_)8(P_E##R&&F(E)C__T)" - gain_text = span_warning("I WILL RID MY FLESH FROM IMPERFECTION!! I WILL BE PERFECT WITHOUT MY SUITS!!") - lose_text = span_notice("You feel the influence of something slip your mind, and you feel content as you are.") + name = "Obsessive Perfectionism" + desc = "Patient is fixated on the perceived 'imperfection' of objects around them. Patient is agitated by the feeling of clothing on their body." + scan_desc = "obsessive personality disorder" + gain_text = span_warning("It's all *imperfect*! I can't stand any of it touching me!") + lose_text = span_notice("Your mind calms.") random_gain = FALSE /// How much damage we deal with each scratch var/scratch_damage = 0.5 @@ -411,15 +411,15 @@ return bodypart.receive_damage(scratch_damage) if(SPT_PROB(33, seconds_per_tick)) - to_chat(owner, span_notice("You scratch furiously at [bodypart] to ruin the cloth that hides the beauty!")) + to_chat(owner, span_notice("You scratch furiously at the clothed [bodypart]!")) // This one is for "Climb over the rusted mountain" or /obj/structure/sign/painting/eldritch/rust /datum/brain_trauma/severe/rusting - name = "The Rusted Climb" - desc = "Patient seems to oxidise things around them at random, and seem to believe they are aiding a creature in climbing a mountin." - scan_desc = "C_)L(#_I_##M;B" - gain_text = span_warning("The rusted climb shall finish at the peak") - lose_text = span_notice("The rusted climb? What's that? An odd dream to be sure.") + name = "Intermittent Psychic Manifestation Syndrome" + desc = "Patient suffers from a rare psychic disorder, and may manifest or amplify psychic phenomena in the area. Patient has no control over these phenomena." + scan_desc = "dangerous psi-wave activity" + gain_text = span_warning("Climb the rust. Master entropy.") + lose_text = span_notice("You feel like you just woke up from a bad dream.") random_gain = FALSE /datum/brain_trauma/severe/rusting/on_life(seconds_per_tick, times_fired) @@ -429,7 +429,7 @@ return if(SPT_PROB(50, seconds_per_tick)) - to_chat(owner, span_notice("You feel eldritch energies pulse from your body!")) + to_chat(owner, span_notice("You feel the decay...")) tile.rust_heretic_act() /datum/brain_trauma/severe/kleptomaniac diff --git a/code/datums/components/crafting/chemistry.dm b/code/datums/components/crafting/chemistry.dm index fc4d833be3fcc..70d6c76dea249 100644 --- a/code/datums/components/crafting/chemistry.dm +++ b/code/datums/components/crafting/chemistry.dm @@ -150,7 +150,7 @@ category = CAT_CHEMISTRY /datum/crafting_recipe/improvised_chem_heater/on_craft_completion(mob/user, atom/result) - var/obj/item/stock_parts/cell/cell = locate(/obj/item/stock_parts/cell) in range(1) + var/obj/item/stock_parts/power_store/cell/cell = locate(/obj/item/stock_parts/power_store/cell) in range(1) if(!cell) return var/obj/machinery/space_heater/improvised_chem_heater/heater = result diff --git a/code/datums/components/crafting/equipment.dm b/code/datums/components/crafting/equipment.dm index 7e7b7aca26f24..bd2b8b1d8b60b 100644 --- a/code/datums/components/crafting/equipment.dm +++ b/code/datums/components/crafting/equipment.dm @@ -58,12 +58,12 @@ /obj/item/stack/rods = 8, /obj/item/stock_parts/servo = 2, /obj/item/stock_parts/capacitor = 1, - /obj/item/stock_parts/cell = 1, + /obj/item/stock_parts/power_store/cell = 1, ) parts = list( /obj/item/stock_parts/servo = 2, /obj/item/stock_parts/capacitor = 1, - /obj/item/stock_parts/cell = 1, + /obj/item/stock_parts/power_store/cell = 1, ) tool_behaviors = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WRENCH) time = 20 SECONDS diff --git a/code/datums/components/crafting/ranged_weapon.dm b/code/datums/components/crafting/ranged_weapon.dm index 666e84964c553..c49900df07ab4 100644 --- a/code/datums/components/crafting/ranged_weapon.dm +++ b/code/datums/components/crafting/ranged_weapon.dm @@ -354,7 +354,7 @@ /obj/item/stack/cable_coil = 5, /obj/item/pipe = 1, /obj/item/stock_parts/micro_laser = 1, - /obj/item/stock_parts/cell = 1, + /obj/item/stock_parts/power_store/cell = 1, /obj/item/assembly/mousetrap = 1, ) tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WRENCH) @@ -367,7 +367,7 @@ reqs = list( /obj/item/gun/energy/disabler/smoothbore = 1, /obj/item/stack/sheet/mineral/gold = 5, - /obj/item/stock_parts/cell/hyper = 1, + /obj/item/stock_parts/power_store/cell/hyper = 1, /datum/reagent/reaction_agent/speed_agent = 10, ) tool_behaviors = list(TOOL_SCREWDRIVER) diff --git a/code/datums/components/crafting/robot.dm b/code/datums/components/crafting/robot.dm index 11a5887bf91c5..2398a8b54fbbe 100644 --- a/code/datums/components/crafting/robot.dm +++ b/code/datums/components/crafting/robot.dm @@ -119,7 +119,7 @@ /datum/crafting_recipe/vibebot name = "Vibebot" - result = /mob/living/simple_animal/bot/vibebot + result = /mob/living/basic/bot/vibebot reqs = list( /obj/item/light/bulb = 2, /obj/item/bodypart/head/robot = 1, diff --git a/code/datums/components/crank_recharge.dm b/code/datums/components/crank_recharge.dm index 10449a337e140..1f2272a8debc2 100644 --- a/code/datums/components/crank_recharge.dm +++ b/code/datums/components/crank_recharge.dm @@ -1,7 +1,7 @@ // Cranking feature on the laser musket and smoothbore disabler, could probably be used on more than guns /datum/component/crank_recharge /// Our cell to charge - var/obj/item/stock_parts/cell/charging_cell + var/obj/item/stock_parts/power_store/charging_cell /// Whether we spin our gun to reload (and therefore need the relevant trait) var/spin_to_win = FALSE /// How much charge we give our cell on each crank @@ -20,7 +20,7 @@ . = ..() if(!isitem(parent)) return COMPONENT_INCOMPATIBLE - if(isnull(charging_cell) || !istype(charging_cell, /obj/item/stock_parts/cell)) + if(isnull(charging_cell) || !istype(charging_cell, /obj/item/stock_parts/power_store)) return COMPONENT_INCOMPATIBLE src.charging_cell = charging_cell src.spin_to_win = spin_to_win diff --git a/code/datums/components/embedded.dm b/code/datums/components/embedded.dm index b62121d30d073..45a3c07298ff0 100644 --- a/code/datums/components/embedded.dm +++ b/code/datums/components/embedded.dm @@ -200,7 +200,7 @@ /// everything async that ripOut used to do /datum/component/embedded/proc/complete_rip_out(mob/living/carbon/victim, obj/item/I, obj/item/bodypart/limb, time_taken) - victim.visible_message(span_warning("[victim] attempts to remove [weapon] from [victim.p_their()] [limb.plaintext_zone]."),span_notice("You attempt to remove [weapon] from your [limb.plaintext_zone]... (It will take [DisplayTimeText(time_taken)].)")) + victim.visible_message(span_warning("[victim] attempts to remove [weapon] from [victim.p_their()] [limb.plaintext_zone]."),span_notice("You attempt to remove [weapon] from your [limb.plaintext_zone]... (It will take [DisplayTimeText(time_taken)])")) if(!do_after(victim, time_taken, target = victim)) return if(!weapon || !limb || weapon.loc != victim || !(weapon in limb.embedded_objects)) @@ -279,12 +279,12 @@ var/pluck_time = rip_time * (weapon.w_class * 0.3) * (self_pluck ? 1.5 : 1) * tweezer_speed * (tweezer_safe ? 1 : 1.5) if(self_pluck) - user.visible_message(span_danger("[user] begins plucking [weapon] from [user.p_their()] [limb.plaintext_zone] with [possible_tweezers]..."), span_notice("You start plucking [weapon] from your [limb.plaintext_zone] with [possible_tweezers]... (It will take [DisplayTimeText(pluck_time)].)"),\ + user.visible_message(span_danger("[user] begins plucking [weapon] from [user.p_their()] [limb.plaintext_zone] with [possible_tweezers]..."), span_notice("You start plucking [weapon] from your [limb.plaintext_zone] with [possible_tweezers]... (It will take [DisplayTimeText(pluck_time)])"),\ vision_distance=COMBAT_MESSAGE_RANGE, ignored_mobs=victim) else - user.visible_message(span_danger("[user] begins plucking [weapon] from [victim]'s [limb.plaintext_zone] with [possible_tweezers]..."),span_notice("You start plucking [weapon] from [victim]'s [limb.plaintext_zone] with [possible_tweezers]... (It will take [DisplayTimeText(pluck_time)]."), \ + user.visible_message(span_danger("[user] begins plucking [weapon] from [victim]'s [limb.plaintext_zone] with [possible_tweezers]..."),span_notice("You start plucking [weapon] from [victim]'s [limb.plaintext_zone] with [possible_tweezers]... (It will take [DisplayTimeText(pluck_time)])"), \ vision_distance=COMBAT_MESSAGE_RANGE, ignored_mobs=victim) - to_chat(victim, span_userdanger("[user] begins plucking [weapon] from your [limb.plaintext_zone] with [possible_tweezers]... (It will take [DisplayTimeText(pluck_time)].")) + to_chat(victim, span_userdanger("[user] begins plucking [weapon] from your [limb.plaintext_zone] with [possible_tweezers]... (It will take [DisplayTimeText(pluck_time)])")) if(!do_after(user, pluck_time, victim)) if(self_pluck) diff --git a/code/datums/components/pet_commands/pet_commands_basic.dm b/code/datums/components/pet_commands/pet_commands_basic.dm index 5ff476a85b959..d9ce0ccb56a46 100644 --- a/code/datums/components/pet_commands/pet_commands_basic.dm +++ b/code/datums/components/pet_commands/pet_commands_basic.dm @@ -222,6 +222,8 @@ var/protect_range = 9 ///the behavior we will use when he is attacked var/protect_behavior = /datum/ai_behavior/basic_melee_attack + ///message cooldown to prevent too many people from telling you not to commit suicide + COOLDOWN_DECLARE(self_harm_message_cooldown) /datum/pet_command/protect_owner/add_new_friend(mob/living/tamer) RegisterSignal(tamer, COMSIG_ATOM_WAS_ATTACKED, PROC_REF(set_attacking_target)) @@ -252,6 +254,13 @@ var/mob/living/basic/owner = weak_parent.resolve() if(isnull(owner)) return + if(source == attacker) + var/list/interventions = owner.ai_controller?.blackboard[BB_OWNER_SELF_HARM_RESPONSES] || list() + if (length(interventions) && COOLDOWN_FINISHED(src, self_harm_message_cooldown) && prob(30)) + COOLDOWN_START(src, self_harm_message_cooldown, 5 SECONDS) + var/chosen_statement = pick(interventions) + INVOKE_ASYNC(owner, TYPE_PROC_REF(/atom/movable, say), chosen_statement) + return var/mob/living/current_target = owner.ai_controller?.blackboard[BB_CURRENT_PET_TARGET] if(attacker == current_target) //we are already dealing with this target return diff --git a/code/datums/components/shell.dm b/code/datums/components/shell.dm index 20fbeb739276e..2e9ee73c32a06 100644 --- a/code/datums/components/shell.dm +++ b/code/datums/components/shell.dm @@ -137,7 +137,7 @@ examine_text += span_notice("There is an integrated circuit attached. Use a multitool to access the wiring. Use a screwdriver to remove it from [source].") examine_text += span_notice("The cover panel to the integrated circuit is [locked? "locked" : "unlocked"].") - var/obj/item/stock_parts/cell/cell = attached_circuit.cell + var/obj/item/stock_parts/power_store/cell = attached_circuit.cell examine_text += span_notice("The charge meter reads [cell ? round(cell.percent(), 1) : 0]%.") if (shell_flags & SHELL_FLAG_USB_PORT) @@ -167,7 +167,7 @@ if(!is_authorized(attacker)) return - if(istype(item, /obj/item/stock_parts/cell)) + if(istype(item, /obj/item/stock_parts/power_store/cell)) source.balloon_alert(attacker, "can't put cell in directly!") return diff --git a/code/datums/components/surgery_initiator.dm b/code/datums/components/surgery_initiator.dm index 41c5f1ef87ad7..de3f83739e546 100644 --- a/code/datums/components/surgery_initiator.dm +++ b/code/datums/components/surgery_initiator.dm @@ -136,8 +136,8 @@ if(iscyborg(user)) var/has_cautery = FALSE - for(var/obj/item/borg/cyborg_omnitool/medical/omnitool in user.held_items) - if(omnitool.tool_behaviour == TOOL_CAUTERY) + for(var/obj/item/borg/cyborg_omnitool/toolarm in user.held_items) + if(toolarm.selected && istype(toolarm.selected, /obj/item/cautery)) has_cautery = TRUE if(!has_cautery) patient.balloon_alert(user, "need a cautery in an inactive slot to stop the surgery!") diff --git a/code/datums/elements/light_eater.dm b/code/datums/elements/light_eater.dm index ed3851944d980..27500b066fefa 100644 --- a/code/datums/elements/light_eater.dm +++ b/code/datums/elements/light_eater.dm @@ -18,7 +18,7 @@ if(isitem(target)) if(isgun(target)) RegisterSignal(target, COMSIG_PROJECTILE_ON_HIT, PROC_REF(on_projectile_hit)) - RegisterSignal(target, COMSIG_ITEM_AFTERATTACK, PROC_REF(on_afterattack)) + RegisterSignal(target, COMSIG_ITEM_INTERACTING_WITH_ATOM, PROC_REF(on_interacting_with)) RegisterSignal(target, COMSIG_ITEM_HIT_REACT, PROC_REF(on_hit_reaction)) else if(isprojectile(target)) RegisterSignal(target, COMSIG_PROJECTILE_SELF_ON_HIT, PROC_REF(on_projectile_self_hit)) @@ -34,7 +34,7 @@ /datum/element/light_eater/Detach(datum/source) UnregisterSignal(source, list( COMSIG_MOVABLE_IMPACT, - COMSIG_ITEM_AFTERATTACK, + COMSIG_ITEM_INTERACTING_WITH_ATOM, COMSIG_ITEM_HIT_REACT, COMSIG_PROJECTILE_ON_HIT, COMSIG_REAGENT_EXPOSE_ATOM, @@ -118,15 +118,14 @@ return NONE /** - * Called when a target is attacked with a source item + * Called when a target is interacted with by a source item * * Arguments: * - [source][/obj/item]: The item what was used to strike the target - * - [target][/atom]: The atom being struck by the user with the source * - [user][/mob/living]: The mob using the source to strike the target - * - proximity: Whether the strike was in melee range so you can't eat lights from cameras + * - [target][/atom]: The atom being struck by the user with the source */ -/datum/element/light_eater/proc/on_afterattack(obj/item/source, atom/target, mob/living/user) +/datum/element/light_eater/proc/on_interacting_with(obj/item/source, mob/living/user, atom/target) SIGNAL_HANDLER eat_lights(target, source) diff --git a/code/datums/elements/strippable.dm b/code/datums/elements/strippable.dm index fc952b8a9e23c..1b932ce066590 100644 --- a/code/datums/elements/strippable.dm +++ b/code/datums/elements/strippable.dm @@ -40,7 +40,7 @@ return if (over != user) return - if(!user.can_perform_action(source, FORBID_TELEKINESIS_REACH)) + if(!user.can_perform_action(source, FORBID_TELEKINESIS_REACH | ALLOW_RESTING)) return // Cyborgs buckle people by dragging them onto them, unless in combat mode. diff --git a/code/datums/id_trim/outfits.dm b/code/datums/id_trim/outfits.dm index 2e7aebff26a1b..a2944a469f43e 100644 --- a/code/datums/id_trim/outfits.dm +++ b/code/datums/id_trim/outfits.dm @@ -62,6 +62,7 @@ trim_state = "trim_bitavatar" department_color = COLOR_BLACK subdepartment_color = COLOR_GREEN + sechud_icon_state = SECHUD_BITAVATAR /// Trim for cyber police in the Virtual Domain. /datum/id_trim/cyber_police diff --git a/code/datums/mood_events/eldritch_painting_events.dm b/code/datums/mood_events/eldritch_painting_events.dm index df801998c1d98..6a2393ed3f576 100644 --- a/code/datums/mood_events/eldritch_painting_events.dm +++ b/code/datums/mood_events/eldritch_painting_events.dm @@ -3,32 +3,32 @@ // Mood applied for ripping the painting /datum/mood_event/eldritch_painting - description = "YOU, I SHOULD NOT HAVE DONE THAT!!!" + description = "I've been hearing weird laughter since cutting down that painting..." mood_change = -6 timeout = 3 MINUTES /datum/mood_event/eldritch_painting/weeping - description = "HE IS HERE, AND HE WEEPS!" + description = "He is here!" mood_change = -3 timeout = 11 SECONDS /datum/mood_event/eldritch_painting/weeping_heretic - description = "Oh such arts! They truly inspire me!" + description = "His suffering inspires me!" mood_change = 5 timeout = 3 MINUTES /datum/mood_event/eldritch_painting/weeping_withdrawal - description = "My mind is clear from his influence." + description = "My mind is clear. He is not here." mood_change = 1 timeout = 3 MINUTES /datum/mood_event/eldritch_painting/desire_heretic - description = "A part gained, the mansus takes and gives. What did it take from me?" + description = "The void screams." mood_change = -2 timeout = 3 MINUTES /datum/mood_event/eldritch_painting/desire_examine - description = "A hunger kept at bay..." + description = "The hunger has been fed, for now..." mood_change = 3 timeout = 3 MINUTES @@ -38,11 +38,11 @@ timeout = 3 MINUTES /datum/mood_event/eldritch_painting/rust_examine - description = "The rusted climb can wait..." + description = "That painting really creeped me out." mood_change = -2 timeout = 3 MINUTES /datum/mood_event/eldritch_painting/rust_heretic_examine - description = "I must hurry the rusted climb!" + description = "Climb. Decay. Rust." mood_change = 6 timeout = 3 MINUTES diff --git a/code/datums/mutations/antenna.dm b/code/datums/mutations/antenna.dm index fc1a94276f702..f33b90fd7a911 100644 --- a/code/datums/mutations/antenna.dm +++ b/code/datums/mutations/antenna.dm @@ -62,6 +62,16 @@ ranged_mousepointer = 'icons/effects/mouse_pointers/mindswap_target.dmi' +/datum/action/cooldown/spell/pointed/mindread/Grant(mob/grant_to) + . = ..() + if (!owner) + return + ADD_TRAIT(grant_to, TRAIT_MIND_READER, GENETIC_MUTATION) + +/datum/action/cooldown/spell/pointed/mindread/Remove(mob/remove_from) + . = ..() + REMOVE_TRAIT(remove_from, TRAIT_MIND_READER, GENETIC_MUTATION) + /datum/action/cooldown/spell/pointed/mindread/is_valid_target(atom/cast_on) if(!isliving(cast_on)) return FALSE diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm index eaa1ba1f5cafa..7ddeea502d947 100644 --- a/code/datums/mutations/body.dm +++ b/code/datums/mutations/body.dm @@ -359,7 +359,6 @@ quality = POSITIVE instability = POSITIVE_INSTABILITY_MINI text_gain_indication = "You feel stimmed." - instability = 15 difficulty = 16 /datum/mutation/human/stimmed/on_acquiring(mob/living/carbon/human/owner) diff --git a/code/datums/quirks/neutral_quirks/transhumanist.dm b/code/datums/quirks/neutral_quirks/transhumanist.dm index 046c2bb30f089..a898a2d202046 100644 --- a/code/datums/quirks/neutral_quirks/transhumanist.dm +++ b/code/datums/quirks/neutral_quirks/transhumanist.dm @@ -23,7 +23,7 @@ lose_text = span_danger("Robots don't seem all that great anymore.") medical_record_text = "Patient reports hating pathetic creatures of meat and bone." mail_goodies = list( - /obj/item/stock_parts/cell/potato, + /obj/item/stock_parts/power_store/cell/potato, /obj/item/stack/cable_coil, /obj/item/toy/talking/ai, /obj/item/toy/figure/borg, diff --git a/code/datums/shuttles/emergency.dm b/code/datums/shuttles/emergency.dm index 0361848385f1a..0f45a0c6a08b4 100644 --- a/code/datums/shuttles/emergency.dm +++ b/code/datums/shuttles/emergency.dm @@ -265,6 +265,13 @@ description = "We pulled this one out of Mothball just for you!" occupancy_limit = "40" +/datum/map_template/shuttle/emergency/wawa + suffix = "wawa" + name = "Wawa Stand-in Emergency Shuttle" + description = "Due to a recent clerical error in the funding department, a lot of funding went to lizard plushies. Due to the costs, Nanotrasen has supplied a nearby garbage truck as a stand-in. Better learn how to share spots." + credit_cost = CARGO_CRATE_VALUE * 6 + occupancy_limit = "25" + /datum/map_template/shuttle/emergency/scrapheap suffix = "scrapheap" name = "Standby Evacuation Vessel \"Scrapheap Challenge\"" diff --git a/code/datums/station_traits/neutral_traits.dm b/code/datums/station_traits/neutral_traits.dm index e066079802d7a..0ecb49f96a063 100644 --- a/code/datums/station_traits/neutral_traits.dm +++ b/code/datums/station_traits/neutral_traits.dm @@ -197,6 +197,7 @@ if(length(birthday_options)) birthday_person = pick(birthday_options) birthday_person_name = birthday_person.real_name + ADD_TRAIT(birthday_person, TRAIT_BIRTHDAY_BOY, REF(src)) addtimer(CALLBACK(src, PROC_REF(announce_birthday)), 10 SECONDS) /datum/station_trait/birthday/proc/check_valid_override() diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index 4b513a2203665..a8ae65ef24cd4 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -1014,8 +1014,8 @@ if(!istype(secondary_part, required_type)) continue // If it's a corrupt or rigged cell, attempting to send it through Bluespace could have unforeseen consequences. - if(istype(secondary_part, /obj/item/stock_parts/cell) && replacer_tool.works_from_distance) - var/obj/item/stock_parts/cell/checked_cell = secondary_part + if(istype(secondary_part, /obj/item/stock_parts/power_store/cell) && replacer_tool.works_from_distance) + var/obj/item/stock_parts/power_store/cell/checked_cell = secondary_part // If it's rigged or corrupted, max the charge. Then explode it. if(checked_cell.rigged || checked_cell.corrupted) checked_cell.charge = checked_cell.maxcharge diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 6ed033886e60a..c1baa172dbfd3 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -355,8 +355,9 @@ var/number_to_make = (initial(stack_item.amount) * items_remaining) while(number_to_make > max_stack_amount) created = new stack_item(null, max_stack_amount) //it's imporant to spawn things in nullspace, since obj's like stacks qdel when they enter a tile/merge with other stacks of the same type, resulting in runtimes. - created.pixel_x = created.base_pixel_x + rand(-6, 6) - created.pixel_y = created.base_pixel_y + rand(-6, 6) + if(isitem(created)) + created.pixel_x = created.base_pixel_x + rand(-6, 6) + created.pixel_y = created.base_pixel_y + rand(-6, 6) created.forceMove(target) number_to_make -= max_stack_amount @@ -366,8 +367,9 @@ created = new design.build_path(null) split_materials_uniformly(materials_needed, material_cost_coefficient, created) - created.pixel_x = created.base_pixel_x + rand(-6, 6) - created.pixel_y = created.base_pixel_y + rand(-6, 6) + if(isitem(created)) + created.pixel_x = created.base_pixel_x + rand(-6, 6) + created.pixel_y = created.base_pixel_y + rand(-6, 6) SSblackbox.record_feedback("nested tally", "lathe_printed_items", 1, list("[type]", "[created.type]")) created.forceMove(target) diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index 27812f53dbaaa..83075d693262d 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -6,7 +6,7 @@ power_channel = AREA_USAGE_EQUIP circuit = /obj/item/circuitboard/machine/cell_charger pass_flags = PASSTABLE - var/obj/item/stock_parts/cell/charging = null + var/obj/item/stock_parts/power_store/cell/charging = null var/charge_rate = 0.25 * STANDARD_CELL_RATE /obj/machinery/cell_charger/update_overlays() @@ -42,7 +42,7 @@ return ITEM_INTERACT_SUCCESS /obj/machinery/cell_charger/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/stock_parts/cell) && !panel_open) + if(istype(W, /obj/item/stock_parts/power_store/cell) && !panel_open) if(machine_stat & BROKEN) to_chat(user, span_warning("[src] is broken!")) return diff --git a/code/game/machinery/defibrillator_mount.dm b/code/game/machinery/defibrillator_mount.dm index 785357e3b5be9..47729c5c0cbac 100644 --- a/code/game/machinery/defibrillator_mount.dm +++ b/code/game/machinery/defibrillator_mount.dm @@ -57,7 +57,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/defibrillator_mount, 28) var/mutable_appearance/defib_overlay = mutable_appearance(icon, "defib", layer = layer+0.01, offset_spokesman = src) if(defib.powered) - var/obj/item/stock_parts/cell/cell = defib.cell + var/obj/item/stock_parts/power_store/cell = defib.cell var/mutable_appearance/safety = mutable_appearance(icon, defib.safety ? "online" : "emagged", offset_spokesman = src) var/mutable_appearance/charge_overlay = mutable_appearance(icon, "charge[CEILING((cell.charge / cell.maxcharge) * 4, 1) * 25]", offset_spokesman = src) @@ -194,7 +194,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/defibrillator_mount, 28) /obj/machinery/defibrillator_mount/charging/process(seconds_per_tick) - var/obj/item/stock_parts/cell/cell = get_cell() + var/obj/item/stock_parts/power_store/cell = get_cell() if(!cell || !is_operational) return PROCESS_KILL if(cell.charge < cell.maxcharge) diff --git a/code/game/machinery/newscaster/newspaper.dm b/code/game/machinery/newscaster/newspaper.dm index d791fac6545a0..2bd8187b9f8c0 100644 --- a/code/game/machinery/newscaster/newspaper.dm +++ b/code/game/machinery/newscaster/newspaper.dm @@ -55,7 +55,7 @@ /obj/item/newspaper/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) if(held_item) - if(istype(held_item, /obj/item/pen)) + if(IS_WRITING_UTENSIL(held_item)) context[SCREENTIP_CONTEXT_LMB] = "Scribble" return CONTEXTUAL_SCREENTIP_SET if(held_item.get_temperature()) diff --git a/code/game/machinery/porta_turret/portable_turret_construct.dm b/code/game/machinery/porta_turret/portable_turret_construct.dm index 470aa0501e9d7..a8fa4e67b2bf6 100644 --- a/code/game/machinery/porta_turret/portable_turret_construct.dm +++ b/code/game/machinery/porta_turret/portable_turret_construct.dm @@ -181,7 +181,7 @@ build_step = PTURRET_CLOSED return - if(istype(used, /obj/item/pen)) //you can rename turrets like bots! + if(used.get_writing_implement_details()?["interaction_mode"] == MODE_WRITING) //you can rename turrets like bots! var/choice = tgui_input_text(user, "Enter a new turret name", "Turret Classification", finish_name, MAX_NAME_LEN) if(!choice) return diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index f310c1afd3ea2..7454f18551150 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -47,7 +47,7 @@ if(!status_display_message_shown) . += span_notice("The status display reads:") - var/obj/item/stock_parts/cell/charging_cell = charging.get_cell() + var/obj/item/stock_parts/power_store/charging_cell = charging.get_cell() if(charging_cell) . += span_notice("- \The [charging]'s cell is at [charging_cell.percent()]%.") return @@ -143,7 +143,7 @@ using_power = FALSE if(isnull(charging)) return PROCESS_KILL - var/obj/item/stock_parts/cell/charging_cell = charging.get_cell() + var/obj/item/stock_parts/power_store/charging_cell = charging.get_cell() if(charging_cell) if(charging_cell.charge < charging_cell.maxcharge) charge_cell(charging_cell.chargerate * recharge_coeff * seconds_per_tick, charging_cell) diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 4e16a1946c7b9..45610b47e7a42 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -54,10 +54,10 @@ * Mobs & borgs invoke this through a callback to recharge their cells * Arguments * - * * obj/item/stock_parts/cell/target - the cell to charge, optional if provided else will draw power used directly + * * obj/item/stock_parts/power_store/cell/target - the cell to charge, optional if provided else will draw power used directly * * seconds_per_tick - supplied from process() */ -/obj/machinery/recharge_station/proc/charge_target_cell(obj/item/stock_parts/cell/target, seconds_per_tick) +/obj/machinery/recharge_station/proc/charge_target_cell(obj/item/stock_parts/power_store/cell/target, seconds_per_tick) PRIVATE_PROC(TRUE) //charge the cell, account for heat loss from work done @@ -75,7 +75,7 @@ recharge_speed += 5e-3 * capacitor.tier for(var/datum/stock_part/servo/servo in component_parts) repairs += servo.tier - 1 - for(var/obj/item/stock_parts/cell/cell in component_parts) + for(var/obj/item/stock_parts/power_store/cell in component_parts) recharge_speed *= cell.maxcharge /obj/machinery/recharge_station/examine(mob/user) diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index 3e83890d755d6..2d6c5339de494 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -20,7 +20,7 @@ //We don't use area power, we always use the cell use_power = NO_POWER_USE ///The cell we spawn with - var/obj/item/stock_parts/cell/cell = /obj/item/stock_parts/cell + var/obj/item/stock_parts/power_store/cell = /obj/item/stock_parts/power_store/cell ///Is the machine on? var/on = FALSE ///What is the mode we are in now? @@ -208,7 +208,7 @@ if(default_deconstruction_crowbar(I)) return TRUE - if(istype(I, /obj/item/stock_parts/cell)) + if(istype(I, /obj/item/stock_parts/power_store/cell)) if(!panel_open) to_chat(user, span_warning("The hatch must be open to insert a power cell!")) return @@ -389,7 +389,7 @@ add_fingerprint(user) if(default_deconstruction_crowbar(item)) return - if(istype(item, /obj/item/stock_parts/cell)) + if(istype(item, /obj/item/stock_parts/power_store/cell)) if(cell) to_chat(user, span_warning("There is already a power cell inside!")) return diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index ce513c4000ff5..6b04b2c6f340d 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -553,7 +553,7 @@ /obj/machinery/suit_storage_unit/process(seconds_per_tick) var/list/cells_to_charge = list() for(var/obj/item/charging in list(mod, suit, helmet, mask, storage)) - var/obj/item/stock_parts/cell/cell_charging = charging.get_cell() + var/obj/item/stock_parts/power_store/cell_charging = charging.get_cell() if(!istype(cell_charging) || cell_charging.charge == cell_charging.maxcharge) continue @@ -564,7 +564,7 @@ return var/charge_per_item = (final_charge_rate * seconds_per_tick) / cell_count - for(var/obj/item/stock_parts/cell/cell as anything in cells_to_charge) + for(var/obj/item/stock_parts/power_store/cell as anything in cells_to_charge) charge_cell(charge_per_item, cell, grid_only = TRUE) /obj/machinery/suit_storage_unit/proc/shock(mob/user, prb) @@ -699,7 +699,7 @@ else balloon_alert(user, "set to [choice]") - else if(!state_open && istype(weapon, /obj/item/pen)) + else if(!state_open && IS_WRITING_UTENSIL(weapon)) if(locked) balloon_alert(user, "unlock first!") return diff --git a/code/game/machinery/telecomms/computers/message.dm b/code/game/machinery/telecomms/computers/message.dm index 1998654df00b1..a38f18231fb76 100644 --- a/code/game/machinery/telecomms/computers/message.dm +++ b/code/game/machinery/telecomms/computers/message.dm @@ -268,6 +268,9 @@ ui = new(user, src, "MessageMonitor", name) ui.open() +/obj/machinery/computer/message_monitor/ui_assets(mob/user) + . = ..() + . += get_asset_datum(/datum/asset/spritesheet/chat) #undef MSG_MON_SCREEN_MAIN #undef MSG_MON_SCREEN_LOGS diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm index 5086f7e91a7f1..77e1efbdfa13d 100644 --- a/code/game/machinery/telecomms/machine_interactions.dm +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -254,8 +254,11 @@ var/mob/living/silicon/ai/U = user multitool = U.aiMulti else if(iscyborg(user) && in_range(user, src)) - if(istype(user.get_active_held_item(), /obj/item/multitool)) - multitool = user.get_active_held_item() + var/mob/living/silicon/robot/borguser = user + for(var/obj/item/borg/cyborg_omnitool/toolarm in borguser.held_items) + if(istype(toolarm.selected, /obj/item/multitool)) + multitool = toolarm.selected + break return multitool /obj/machinery/telecomms/proc/canAccess(mob/user) diff --git a/code/game/machinery/transformer.dm b/code/game/machinery/transformer.dm index ecb7ef941aad8..238994004ded0 100644 --- a/code/game/machinery/transformer.dm +++ b/code/game/machinery/transformer.dm @@ -101,7 +101,7 @@ use_energy(active_power_usage) // Use a lot of power. var/mob/living/silicon/robot/new_borg = victim.Robotize() - new_borg.cell = new /obj/item/stock_parts/cell/upgraded/plus(new_borg, robot_cell_charge) + new_borg.cell = new /obj/item/stock_parts/power_store/cell/upgraded/plus(new_borg, robot_cell_charge) // So he can't jump out the gate right away. new_borg.SetLockdown() diff --git a/code/game/objects/effects/anomalies/_anomalies.dm b/code/game/objects/effects/anomalies/_anomalies.dm index ee02cab9e036b..ce9bab6a511cc 100644 --- a/code/game/objects/effects/anomalies/_anomalies.dm +++ b/code/game/objects/effects/anomalies/_anomalies.dm @@ -113,12 +113,13 @@ qdel(src) -/obj/effect/anomaly/attackby(obj/item/weapon, mob/user, params) - if(weapon.tool_behaviour == TOOL_ANALYZER && anomaly_core) +/obj/effect/anomaly/analyzer_act(mob/living/user, obj/item/analyzer/tool) + if(!isnull(anomaly_core)) to_chat(user, span_notice("Analyzing... [src]'s unstable field is fluctuating along frequency [format_frequency(anomaly_core.frequency)], code [anomaly_core.code].")) - return TRUE + return ITEM_INTERACT_SUCCESS + to_chat(user, span_notice("Analyzing... [src]'s unstable field is not fluctuating along a stable frequency.")) + return ITEM_INTERACT_BLOCKING - return ..() ///Stabilize an anomaly, letting it stay around forever or untill destabilizes by a player. An anomaly without a core can't be signalled, but can be destabilized /obj/effect/anomaly/proc/stabilize(anchor = FALSE, has_core = TRUE) diff --git a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm index 6666a87f09cce..a36fa9d2c37d1 100644 --- a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm @@ -340,9 +340,9 @@ build_path = /obj/machinery/power/smes req_components = list( /obj/item/stack/cable_coil = 5, - /obj/item/stock_parts/cell = 5, + /obj/item/stock_parts/power_store/battery = 5, /datum/stock_part/capacitor = 1) - def_components = list(/obj/item/stock_parts/cell = /obj/item/stock_parts/cell/high/empty) + def_components = list(/obj/item/stock_parts/power_store/battery = /obj/item/stock_parts/power_store/battery/high/empty) /obj/item/circuitboard/machine/techfab/department/engineering name = "\improper Departmental Techfab - Engineering" @@ -350,7 +350,7 @@ build_path = /obj/machinery/rnd/production/techfab/department/engineering /obj/item/circuitboard/machine/smes/super - def_components = list(/obj/item/stock_parts/cell = /obj/item/stock_parts/cell/super/empty) + def_components = list(/obj/item/stock_parts/power_store/battery = /obj/item/stock_parts/power_store/battery/super/empty) /obj/item/circuitboard/machine/thermomachine name = "Thermomachine" @@ -723,6 +723,22 @@ /datum/stock_part/micro_laser = 1, /datum/stock_part/servo = 1,) +/obj/item/circuitboard/machine/bookbinder + name = "Book Binder" + greyscale_colors = CIRCUIT_COLOR_GENERIC + build_path = /obj/machinery/bookbinder + req_components = list( + /datum/stock_part/servo = 1, + ) + +/obj/item/circuitboard/machine/libraryscanner + name = "Book Scanner" + greyscale_colors = CIRCUIT_COLOR_GENERIC + build_path = /obj/machinery/libraryscanner + req_components = list( + /datum/stock_part/scanning_module = 1, + ) + //Medical /obj/item/circuitboard/machine/chem_dispenser @@ -734,8 +750,8 @@ /datum/stock_part/capacitor = 1, /datum/stock_part/servo = 1, /obj/item/stack/sheet/glass = 1, - /obj/item/stock_parts/cell = 1) - def_components = list(/obj/item/stock_parts/cell = /obj/item/stock_parts/cell/high) + /obj/item/stock_parts/power_store/cell = 1) + def_components = list(/obj/item/stock_parts/power_store/cell = /obj/item/stock_parts/power_store/cell/high) needs_anchored = FALSE /obj/item/circuitboard/machine/chem_dispenser/fullupgrade @@ -746,7 +762,7 @@ /datum/stock_part/capacitor/tier4 = 2, /datum/stock_part/servo/tier4 = 2, /obj/item/stack/sheet/glass = 1, - /obj/item/stock_parts/cell/bluespace = 1, + /obj/item/stock_parts/power_store/cell/bluespace = 1, ) /obj/item/circuitboard/machine/chem_dispenser/mutagensaltpeter @@ -757,7 +773,7 @@ /datum/stock_part/capacitor/tier4 = 2, /datum/stock_part/servo/tier4 = 2, /obj/item/stack/sheet/glass = 1, - /obj/item/stock_parts/cell/bluespace = 1, + /obj/item/stock_parts/power_store/cell/bluespace = 1, ) /obj/item/circuitboard/machine/chem_dispenser/abductor @@ -771,7 +787,7 @@ /datum/stock_part/capacitor/tier4 = 2, /datum/stock_part/servo/tier4 = 2, /obj/item/stack/sheet/glass = 1, - /obj/item/stock_parts/cell/bluespace = 1, + /obj/item/stock_parts/power_store/cell/bluespace = 1, ) needs_anchored = FALSE @@ -951,9 +967,9 @@ build_path = /obj/machinery/recharge_station req_components = list( /datum/stock_part/capacitor = 2, - /obj/item/stock_parts/cell = 1, + /obj/item/stock_parts/power_store/cell = 1, /datum/stock_part/servo = 1) - def_components = list(/obj/item/stock_parts/cell = /obj/item/stock_parts/cell/high) + def_components = list(/obj/item/stock_parts/power_store/cell = /obj/item/stock_parts/power_store/cell/high) /obj/item/circuitboard/machine/destructive_analyzer name = "Destructive Analyzer" @@ -1150,7 +1166,7 @@ /datum/stock_part/capacitor/tier4 = 2, /datum/stock_part/servo/tier4 = 2, /obj/item/stack/sheet/glass = 1, - /obj/item/stock_parts/cell/bluespace = 1, + /obj/item/stock_parts/power_store/cell/bluespace = 1, ) /obj/item/circuitboard/machine/chem_dispenser/drinks/beer @@ -1165,7 +1181,7 @@ /datum/stock_part/capacitor/tier4 = 2, /datum/stock_part/servo/tier4 = 2, /obj/item/stack/sheet/glass = 1, - /obj/item/stock_parts/cell/bluespace = 1, + /obj/item/stock_parts/power_store/cell/bluespace = 1, ) /obj/item/circuitboard/machine/chem_master/condi @@ -1438,7 +1454,7 @@ req_components = list( /datum/stock_part/capacitor = 1, /datum/stock_part/micro_laser = 1, - /obj/item/stock_parts/cell/infinite/abductor = 1) + /obj/item/stock_parts/power_store/cell/infinite/abductor = 1) def_components = list( /datum/stock_part/capacitor = /datum/stock_part/capacitor/tier4, /datum/stock_part/micro_laser = /datum/stock_part/micro_laser/tier4) diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 03618551c0ca2..b4fb604d4574a 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -420,16 +420,19 @@ var/static/regex/crayon_regex = new /regex(@"[^\w!?,.=&%#+/\-]", "ig") return LOWER_TEXT(crayon_regex.Replace(text, "")) -/// Attempts to color the target. Returns how many charges were used. +/// Is this a valid object for use_on to run on? +/obj/item/toy/crayon/proc/can_use_on(atom/target, mob/user, list/modifiers) + if(!isturf(target) && !istype(target, /obj/effect/decal/cleanable)) + return FALSE + return TRUE + +/// Attempts to color the target. /obj/item/toy/crayon/proc/use_on(atom/target, mob/user, list/modifiers) var/static/list/punctuation = list("!","?",".",",","/","+","-","=","%","#","&") if(istype(target, /obj/effect/decal/cleanable)) target = target.loc - if(!isturf(target)) - return - if(!isValidSurface(target)) target.balloon_alert(user, "can't use there!") return @@ -566,13 +569,16 @@ for(var/turf/draw_turf as anything in affected_turfs) reagents.expose(draw_turf, methods = TOUCH, volume_modifier = volume_multiplier) check_empty(user) + return /obj/item/toy/crayon/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers) if (!check_allowed_items(interacting_with)) return NONE - use_on(interacting_with, user, modifiers) - return ITEM_INTERACT_BLOCKING + if(can_use_on(interacting_with, user, modifiers)) + use_on(interacting_with, user, modifiers) + return ITEM_INTERACT_BLOCKING + return NONE /obj/item/toy/crayon/get_writing_implement_details() return list( @@ -857,7 +863,7 @@ else if(actually_paints && target.is_atom_colour(paint_color, min_priority_index = WASHABLE_COLOUR_PRIORITY)) balloon_alert(user, "[target.p_theyre()] already that color!") - return FALSE + return if(ismob(target) && (HAS_TRAIT(target, TRAIT_SPRAY_PAINTABLE))) if(actually_paints) @@ -878,7 +884,7 @@ if (color_is_dark && !(target.flags_1 & ALLOW_DARK_PAINTS_1)) to_chat(user, span_warning("A color that dark on an object like this? Surely not...")) - return FALSE + return if(istype(target, /obj/item/pipe)) if(GLOB.pipe_color_name.Find(paint_color)) @@ -888,7 +894,7 @@ balloon_alert(user, "painted in [GLOB.pipe_color_name[paint_color]] color") else balloon_alert(user, "invalid pipe color!") - return FALSE + return else if(istype(target, /obj/machinery/atmospherics)) if(GLOB.pipe_color_name.Find(paint_color)) var/obj/machinery/atmospherics/target_pipe = target @@ -896,7 +902,7 @@ balloon_alert(user, "painted in [GLOB.pipe_color_name[paint_color]] color") else balloon_alert(user, "invalid pipe color!") - return FALSE + return else target.add_atom_colour(paint_color, WASHABLE_COLOUR_PRIORITY) diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index cbac185f675fe..871892558b9dc 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -28,7 +28,7 @@ /// If the cell can be removed via screwdriver var/cell_removable = TRUE var/obj/item/shockpaddles/paddles - var/obj/item/stock_parts/cell/cell + var/obj/item/stock_parts/power_store/cell /// If true, revive through space suits, allow for combat shocking var/combat = FALSE /// How long does it take to recharge @@ -111,7 +111,7 @@ /obj/item/defibrillator/CheckParts(list/parts_list) ..() - cell = locate(/obj/item/stock_parts/cell) in contents + cell = locate(/obj/item/stock_parts/power_store) in contents update_power() /obj/item/defibrillator/ui_action_click() @@ -158,8 +158,8 @@ /obj/item/defibrillator/attackby(obj/item/W, mob/user, params) if(W == paddles) toggle_paddles() - else if(istype(W, /obj/item/stock_parts/cell)) - var/obj/item/stock_parts/cell/C = W + else if(istype(W, /obj/item/stock_parts/power_store/cell)) + var/obj/item/stock_parts/power_store/cell/C = W if(cell) to_chat(user, span_warning("[src] already has a cell!")) else @@ -311,7 +311,7 @@ /obj/item/defibrillator/compact/combat/loaded/Initialize(mapload) . = ..() - cell = new /obj/item/stock_parts/cell/infinite(src) + cell = new /obj/item/stock_parts/power_store/cell/infinite(src) update_power() /obj/item/defibrillator/compact/combat/loaded/attackby(obj/item/W, mob/user, params) diff --git a/code/game/objects/items/devices/beacon.dm b/code/game/objects/items/devices/beacon.dm index ccd8bb413e31e..a7c34a92c0df7 100644 --- a/code/game/objects/items/devices/beacon.dm +++ b/code/game/objects/items/devices/beacon.dm @@ -48,7 +48,7 @@ return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN /obj/item/beacon/attackby(obj/item/W, mob/user) - if(istype(W, /obj/item/pen)) // needed for things that use custom names like the locator + if(IS_WRITING_UTENSIL(W)) // needed for things that use custom names like the locator var/new_name = tgui_input_text(user, "What would you like the name to be?", "Beacon", max_length = MAX_NAME_LEN) if(!user.can_perform_action(src)) return diff --git a/code/game/objects/items/implants/implantcase.dm b/code/game/objects/items/implants/implantcase.dm index 2695529593f89..ffef74de3c1cc 100644 --- a/code/game/objects/items/implants/implantcase.dm +++ b/code/game/objects/items/implants/implantcase.dm @@ -36,7 +36,7 @@ return ..() /obj/item/implantcase/attackby(obj/item/used_item, mob/living/user, params) - if(istype(used_item, /obj/item/pen)) + if(IS_WRITING_UTENSIL(used_item)) if(!user.can_write(used_item)) return var/new_name = tgui_input_text(user, "What would you like the label to be?", name, max_length = MAX_NAME_LEN) diff --git a/code/game/objects/items/implants/implanter.dm b/code/game/objects/items/implants/implanter.dm index a5242e292a13e..1f462527d530f 100644 --- a/code/game/objects/items/implants/implanter.dm +++ b/code/game/objects/items/implants/implanter.dm @@ -45,7 +45,7 @@ to_chat(user, span_warning("[src] fails to implant [target].")) /obj/item/implanter/attackby(obj/item/I, mob/living/user, params) - if(!istype(I, /obj/item/pen)) + if(IS_WRITING_UTENSIL(I)) return ..() if(!user.can_write(I)) return diff --git a/code/game/objects/items/inducer.dm b/code/game/objects/items/inducer.dm index 086b965e1ac41..ea312fc0df848 100644 --- a/code/game/objects/items/inducer.dm +++ b/code/game/objects/items/inducer.dm @@ -1,16 +1,17 @@ /obj/item/inducer name = "inducer" - desc = "A tool for inductively charging internal power cells." + desc = "A tool for inductively charging internal power cells and batteries." icon = 'icons/obj/tools.dmi' icon_state = "inducer-engi" inhand_icon_state = "inducer-engi" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' force = 7 - var/powertransfer = STANDARD_CELL_CHARGE + /// Multiplier that determines the speed at which this inducer works at. + var/power_transfer_multiplier = 1 var/opened = FALSE - var/cell_type = /obj/item/stock_parts/cell/high - var/obj/item/stock_parts/cell/cell + var/cell_type = /obj/item/stock_parts/power_store/battery/high + var/obj/item/stock_parts/power_store/cell var/recharging = FALSE /obj/item/inducer/Initialize(mapload) @@ -18,9 +19,10 @@ if(!cell && cell_type) cell = new cell_type -/obj/item/inducer/proc/induce(obj/item/stock_parts/cell/target, coefficient) - var/obj/item/stock_parts/cell/our_cell = get_cell() - var/totransfer = min(our_cell.charge, (powertransfer * coefficient)) +/obj/item/inducer/proc/induce(obj/item/stock_parts/power_store/target, coefficient) + var/obj/item/stock_parts/power_store/our_cell = get_cell() + var/rating_base = target.rating_base + var/totransfer = min(our_cell.charge, (rating_base * coefficient * power_transfer_multiplier)) var/transferred = target.give(totransfer) our_cell.use(transferred) @@ -32,7 +34,7 @@ /obj/item/inducer/emp_act(severity) . = ..() - var/obj/item/stock_parts/cell/our_cell = get_cell() + var/obj/item/stock_parts/power_store/our_cell = get_cell() if(!isnull(our_cell) && !(. & EMP_PROTECT_CONTENTS)) our_cell.emp_act(severity) @@ -53,7 +55,7 @@ to_chat(user, span_warning("You don't have the dexterity to use [src]!")) return TRUE - var/obj/item/stock_parts/cell/our_cell = get_cell() + var/obj/item/stock_parts/power_store/our_cell = get_cell() if(isnull(our_cell)) balloon_alert(user, "no cell installed!") @@ -79,9 +81,9 @@ return /obj/item/inducer/attackby(obj/item/used_item, mob/user) - if(istype(used_item, /obj/item/stock_parts/cell)) + if(istype(used_item, /obj/item/stock_parts/power_store/cell)) if(opened) - var/obj/item/stock_parts/cell/our_cell = get_cell() + var/obj/item/stock_parts/power_store/our_cell = get_cell() if(isnull(our_cell)) if(!user.transferItemToLoc(used_item, src)) return @@ -108,8 +110,8 @@ return TRUE recharging = TRUE - var/obj/item/stock_parts/cell/our_cell = get_cell() - var/obj/item/stock_parts/cell/target_cell = target.get_cell() + var/obj/item/stock_parts/power_store/our_cell = get_cell() + var/obj/item/stock_parts/power_store/target_cell = target.get_cell() var/obj/target_as_object = target var/coefficient = 1 @@ -166,7 +168,7 @@ /obj/item/inducer/examine(mob/living/user) . = ..() - var/obj/item/stock_parts/cell/our_cell = get_cell() + var/obj/item/stock_parts/power_store/our_cell = get_cell() if(!isnull(our_cell)) . += span_notice("Its display shows: [display_energy(our_cell.charge)].") else @@ -185,7 +187,7 @@ opened = TRUE /obj/item/inducer/orderable - cell_type = /obj/item/stock_parts/cell/inducer_supply + cell_type = /obj/item/stock_parts/power_store/cell/inducer_supply opened = FALSE /obj/item/inducer/sci @@ -203,5 +205,5 @@ icon_state = "inducer-syndi" inhand_icon_state = "inducer-syndi" desc = "A tool for inductively charging internal power cells. This one has a suspicious colour scheme, and seems to be rigged to transfer charge at a much faster rate." - powertransfer = 2 * STANDARD_CELL_CHARGE - cell_type = /obj/item/stock_parts/cell/super + power_transfer_multiplier = 2 // 2x the base speed + cell_type = /obj/item/stock_parts/power_store/cell/super diff --git a/code/game/objects/items/inspector.dm b/code/game/objects/items/inspector.dm index fec567071fca8..82a36336c42b9 100644 --- a/code/game/objects/items/inspector.dm +++ b/code/game/objects/items/inspector.dm @@ -27,7 +27,7 @@ ///determines the sound that plays when printing a report var/print_sound_mode = INSPECTOR_PRINT_SOUND_MODE_NORMAL ///Power cell used to power the scanner. Paths g - var/obj/item/stock_parts/cell/cell = /obj/item/stock_parts/cell/crap + var/obj/item/stock_parts/power_store/cell = /obj/item/stock_parts/power_store/cell/crap ///Cell cover status var/cell_cover_open = FALSE ///Energy used per print. @@ -62,7 +62,7 @@ return TRUE /obj/item/inspector/attackby(obj/item/I, mob/user, params) - if(cell_cover_open && istype(I, /obj/item/stock_parts/cell)) + if(cell_cover_open && istype(I, /obj/item/stock_parts/power_store/cell)) if(cell) to_chat(user, span_warning("[src] already has a cell installed.")) return diff --git a/code/game/objects/items/maintenance_loot.dm b/code/game/objects/items/maintenance_loot.dm index e667aca6007d9..51a272509969c 100644 --- a/code/game/objects/items/maintenance_loot.dm +++ b/code/game/objects/items/maintenance_loot.dm @@ -23,14 +23,14 @@ //A good battery early in the shift. Source of lead & sulfuric acid reagents. //Add lead material to this once implemented. -/obj/item/stock_parts/cell/lead +/obj/item/stock_parts/power_store/cell/lead name = "lead-acid battery" desc = "A primitive battery. It is quite large and feels unexpectedly heavy." icon = 'icons/obj/maintenance_loot.dmi' icon_state = "lead_battery" throwforce = 10 - maxcharge = STANDARD_CELL_CHARGE * 20 //decent max charge - chargerate = STANDARD_CELL_RATE * 0.7 //charging is about 30% less efficient than lithium batteries. + maxcharge = STANDARD_BATTERY_VALUE //decent max charge + chargerate = STANDARD_BATTERY_RATE * 0.3 //charging is about 70% less efficient than lithium batteries. charge_light_type = null connector_type = "leadacid" rating = 2 //Kind of a mid-tier battery @@ -38,7 +38,7 @@ grind_results = list(/datum/reagent/lead = 15, /datum/reagent/toxin/acid = 15, /datum/reagent/water = 20) //starts partially discharged -/obj/item/stock_parts/cell/lead/Initialize(mapload) +/obj/item/stock_parts/power_store/cell/lead/Initialize(mapload) AddElement(/datum/element/update_icon_blocker) . = ..() var/initial_percent = rand(20, 80) / 100 diff --git a/code/game/objects/items/melee/baton.dm b/code/game/objects/items/melee/baton.dm index 112c527ec28a9..eca126fc6aee0 100644 --- a/code/game/objects/items/melee/baton.dm +++ b/code/game/objects/items/melee/baton.dm @@ -435,7 +435,7 @@ var/throw_stun_chance = 35 - var/obj/item/stock_parts/cell/cell + var/obj/item/stock_parts/power_store/cell var/preload_cell_type //if not empty the baton starts with this type of cell var/cell_hit_cost = STANDARD_CELL_CHARGE var/can_remove_cell = TRUE @@ -449,7 +449,7 @@ /obj/item/melee/baton/security/Initialize(mapload) . = ..() if(preload_cell_type) - if(!ispath(preload_cell_type, /obj/item/stock_parts/cell)) + if(!ispath(preload_cell_type, /obj/item/stock_parts/power_store/cell)) log_mapping("[src] at [AREACOORD(src)] had an invalid preload_cell_type: [preload_cell_type].") else cell = new preload_cell_type(src) @@ -528,8 +528,8 @@ return TRUE /obj/item/melee/baton/security/attackby(obj/item/item, mob/user, params) - if(istype(item, /obj/item/stock_parts/cell)) - var/obj/item/stock_parts/cell/active_cell = item + if(istype(item, /obj/item/stock_parts/power_store/cell)) + var/obj/item/stock_parts/power_store/cell/active_cell = item if(cell) to_chat(user, span_warning("[src] already has a cell!")) else @@ -678,7 +678,7 @@ update_appearance() /obj/item/melee/baton/security/loaded //this one starts with a cell pre-installed. - preload_cell_type = /obj/item/stock_parts/cell/high + preload_cell_type = /obj/item/stock_parts/power_store/cell/high //Makeshift stun baton. Replacement for stun gloves. /obj/item/melee/baton/security/cattleprod @@ -776,7 +776,7 @@ finalize_baton_attack(hit_atom, thrown_by, in_attack_chain = FALSE) /obj/item/melee/baton/security/boomerang/loaded //Same as above, comes with a cell. - preload_cell_type = /obj/item/stock_parts/cell/high + preload_cell_type = /obj/item/stock_parts/power_store/cell/high /obj/item/melee/baton/security/cattleprod/teleprod name = "teleprod" diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index 440b2b740372f..228f359729c31 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -210,7 +210,7 @@ if(!user.cell) return - var/obj/item/stock_parts/cell/our_cell = user.cell + var/obj/item/stock_parts/power_store/our_cell = user.cell if(HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE) && !(our_cell.use(hitcost))) attack_self(user) to_chat(user, span_notice("It's out of charge!")) diff --git a/code/game/objects/items/robot/items/generic.dm b/code/game/objects/items/robot/items/generic.dm index c3338ecc91c88..a98d13770b7ab 100644 --- a/code/game/objects/items/robot/items/generic.dm +++ b/code/game/objects/items/robot/items/generic.dm @@ -220,7 +220,7 @@ /// Whitelist of charging machines var/static/list/charge_machines = typecacheof(list(/obj/machinery/cell_charger, /obj/machinery/recharger, /obj/machinery/recharge_station, /obj/machinery/mech_bay_recharge_port)) /// Whitelist of chargable items - var/static/list/charge_items = typecacheof(list(/obj/item/stock_parts/cell, /obj/item/gun/energy)) + var/static/list/charge_items = typecacheof(list(/obj/item/stock_parts/power_store, /obj/item/gun/energy)) /obj/item/borg/charger/update_icon_state() icon_state = "charger_[mode]" @@ -259,9 +259,9 @@ to_chat(user, span_notice("You stop charging yourself.")) else if(is_type_in_list(target, charge_items)) - var/obj/item/stock_parts/cell/cell = target + var/obj/item/stock_parts/power_store/cell = target if(!istype(cell)) - cell = locate(/obj/item/stock_parts/cell) in target + cell = locate(/obj/item/stock_parts/power_store) in target if(!cell) to_chat(user, span_warning("[target] has no power cell!")) return @@ -298,9 +298,9 @@ to_chat(user, span_notice("You stop charging yourself.")) else if(is_type_in_list(target, charge_items)) - var/obj/item/stock_parts/cell/cell = target + var/obj/item/stock_parts/power_store/cell = target if(!istype(cell)) - cell = locate(/obj/item/stock_parts/cell) in target + cell = locate(/obj/item/stock_parts/power_store) in target if(!cell) to_chat(user, span_warning("[target] has no power cell!")) return diff --git a/code/game/objects/items/robot/items/tools.dm b/code/game/objects/items/robot/items/tools.dm index b9f0c103ba540..8cdf65a431a6a 100644 --- a/code/game/objects/items/robot/items/tools.dm +++ b/code/game/objects/items/robot/items/tools.dm @@ -176,218 +176,145 @@ projectile.speed *= (1 / projectile_speed_coefficient) projectile.cut_overlay(projectile_effect) -//bare minimum omni-toolset for modularity -/obj/item/borg/cyborg_omnitool - name = "cyborg omni-toolset" - desc = "You shouldn't see this in-game normally." +////////////////////// +///CYBORG OMNITOOLS/// +////////////////////// + +/** + Onmi Toolboxs act as a cache of tools for a particular borg's omnitools. Not all borg + get a toolbox (as not all borgs use omnitools), and those that do can only have one + toolbox. The toolbox keeps track of a borg's omnitool arms, and handles speed upgrades. + + Omnitools are the actual tool arms for the cyborg to interact with. When attack_self + is called, they can select a tool from the toolbox. The tool is not moved, and instead + only referenced in place of the omnitool's own attacks. The omnitool also takes on + the tool's sprite, which completes the illusion. In this way, multiple tools are + shared between multiple omnitool arms. A multitool's buffer, for example, will not + depend on which omnitool arm was used to set it. +*/ +/obj/item/cyborg_omnitoolbox + name = "broken cyborg toolbox" + desc = "Some internal part of a broken cyborg." icon = 'icons/mob/silicon/robot_items.dmi' - icon_state = "toolkit_medborg" - ///our tools - var/list/radial_menu_options = list() - ///object we are referencing to for force, sharpness and sound - var/obj/item/reference - //is the toolset upgraded or not - var/upgraded = FALSE - ///how much faster should the toolspeed be? - var/upgraded_toolspeed = 0.7 + icon_state = "lollipop" + toolspeed = 10 + ///List of Omnitool "arms" that the borg has. + var/list/omnitools = list() + ///List of paths for tools. These will be created during Initialize() + var/list/toolpaths = list() + ///Target Toolspeed to set after reciving an omnitool upgrade + var/upgraded_toolspeed = 10 + ///Whether we currently have the upgraded speed + var/currently_upgraded = FALSE + +/obj/item/cyborg_omnitoolbox/Initialize(mapload) + . = ..() + if(!toolpaths.len) + return -/obj/item/borg/cyborg_omnitool/get_all_tool_behaviours() - return list(TOOL_SCALPEL, TOOL_HEMOSTAT) + var/obj/item/newitem + for(var/newpath in toolpaths) + newitem = new newpath(src) + newitem.toolspeed = toolspeed //In case thse have different base speeds as stand-alone tools on other borgs + ADD_TRAIT(newitem, TRAIT_NODROP, CYBORG_ITEM_TRAIT) -/obj/item/borg/cyborg_omnitool/Initialize(mapload) - . = ..() - AddComponent(/datum/component/butchering, \ - speed = 8 SECONDS, \ - effectiveness = 100, \ - disabled = TRUE, \ +/obj/item/cyborg_omnitoolbox/proc/set_upgrade(upgrade = FALSE) + for(var/obj/item/tool in contents) + if(upgrade) + tool.toolspeed = upgraded_toolspeed + else + tool.toolspeed = toolspeed + currently_upgraded = upgrade + +/obj/item/cyborg_omnitoolbox/engineering + toolspeed = 0.5 + upgraded_toolspeed = 0.3 + toolpaths = list( + /obj/item/wrench/cyborg, + /obj/item/wirecutters/cyborg, + /obj/item/screwdriver/cyborg, + /obj/item/crowbar/cyborg, + /obj/item/multitool/cyborg, ) - radial_menu_options = list( - NO_TOOL = image(icon = 'icons/mob/silicon/robot_items.dmi', icon_state = initial(icon_state)), - TOOL_SCALPEL = image(icon = 'icons/obj/medical/surgery_tools.dmi', icon_state = "[TOOL_SCALPEL]"), - TOOL_HEMOSTAT = image(icon = 'icons/obj/medical/surgery_tools.dmi', icon_state = "[TOOL_HEMOSTAT]"), + +/obj/item/cyborg_omnitoolbox/medical + toolspeed = 1 + upgraded_toolspeed = 0.7 + toolpaths = list( + /obj/item/scalpel/cyborg, + /obj/item/surgicaldrill/cyborg, + /obj/item/hemostat/cyborg, + /obj/item/retractor/cyborg, + /obj/item/cautery/cyborg, + /obj/item/circular_saw/cyborg, + /obj/item/bonesetter/cyborg, ) -/obj/item/borg/cyborg_omnitool/attack_self(mob/user) - var/new_tool_behaviour = show_radial_menu(user, src, radial_menu_options, require_near = TRUE, tooltips = TRUE) +/obj/item/borg/cyborg_omnitool + name = "broken cyborg tool arm" + desc = "Some internal part of a broken cyborg." + icon = 'icons/mob/silicon/robot_items.dmi' + icon_state = "lollipop" + ///Ref to the toolbox, since our own loc will be changing + var/obj/item/cyborg_omnitoolbox/toolbox + ///Ref to currently selected tool, if any + var/obj/item/selected - if(isnull(new_tool_behaviour) || new_tool_behaviour == tool_behaviour) +/obj/item/borg/cyborg_omnitool/Initialize(mapload) + . = ..() + if(!iscyborg(loc.loc)) return - if(new_tool_behaviour == NO_TOOL) - tool_behaviour = null - else - tool_behaviour = new_tool_behaviour + var/obj/item/robot_model/model = loc + var/obj/item/cyborg_omnitoolbox/chassis_toolbox = model.toolbox + if(!chassis_toolbox) + return + toolbox = chassis_toolbox + toolbox.omnitools += src - reference_item_for_parameters() - update_tool_parameters(reference) - update_appearance(UPDATE_ICON_STATE) +/obj/item/borg/cyborg_omnitool/attack_self(mob/user) + var/list/radial_menu_options = list() + for(var/obj/item/borgtool in toolbox.contents) + radial_menu_options[borgtool] = image(icon = borgtool.icon, icon_state = borgtool.icon_state) + var/obj/item/potential_new_tool = show_radial_menu(user, src, radial_menu_options, require_near = TRUE, tooltips = TRUE) + if(!potential_new_tool) + return ..() + if(potential_new_tool == selected) + return ..() + for(var/obj/item/borg/cyborg_omnitool/coworker in toolbox.omnitools) + if(coworker.selected == potential_new_tool) + coworker.deselect() //Can I borrow that please + break + selected = potential_new_tool + icon_state = selected.icon_state playsound(src, 'sound/items/change_jaws.ogg', 50, TRUE) - -/// Used to get reference item for the tools -/obj/item/borg/cyborg_omnitool/proc/reference_item_for_parameters() - SHOULD_CALL_PARENT(FALSE) - switch(tool_behaviour) - if(TOOL_SCALPEL) - reference = /obj/item/scalpel - if(TOOL_HEMOSTAT) - reference = /obj/item/hemostat - -/// Used to update sounds and tool parameters during switching -/obj/item/borg/cyborg_omnitool/proc/update_tool_parameters(/obj/item/reference) - if(isnull(reference)) - sharpness = NONE - force = initial(force) - wound_bonus = 0 - bare_wound_bonus = 0 - armour_penetration = 0 - hitsound = initial(hitsound) - usesound = initial(usesound) - else - force = initial(reference.force) - wound_bonus = reference::wound_bonus - bare_wound_bonus = reference::bare_wound_bonus - armour_penetration = reference::armour_penetration - sharpness = initial(reference.sharpness) - hitsound = initial(reference.hitsound) - usesound = initial(reference.usesound) - -/obj/item/borg/cyborg_omnitool/update_icon_state() - icon_state = initial(icon_state) - - if (tool_behaviour) - icon_state += "_[sanitize_css_class_name(tool_behaviour)]" - - if(tool_behaviour) - inhand_icon_state = initial(inhand_icon_state) + "_deactivated" - else - inhand_icon_state = initial(inhand_icon_state) - return ..() -/** - * proc that's used when cyborg is upgraded with an omnitool upgrade board - * - * adds name and desc changes. also changes tools to default configuration to indicate it's been sucessfully upgraded - * changes the toolspeed to the upgraded_toolspeed variable - */ -/obj/item/borg/cyborg_omnitool/proc/upgrade_omnitool() - name = "advanced [name]" - desc += "\nIt seems that this one has been upgraded to perform tasks faster." - toolspeed = upgraded_toolspeed - upgraded = TRUE - tool_behaviour = null - reference_item_for_parameters() - update_tool_parameters(reference) - update_appearance(UPDATE_ICON_STATE) - playsound(src, 'sound/items/change_jaws.ogg', 50, TRUE) - -/** - * proc that's used when a cyborg with an upgraded omnitool is downgraded - * - * reverts all name and desc changes to it's initial variables. also changes tools to default configuration to indicate it's been downgraded - * changes the toolspeed to default variable - */ -/obj/item/borg/cyborg_omnitool/proc/downgrade_omnitool() - name = initial(name) - desc = initial(desc) - toolspeed = initial(toolspeed) - upgraded = FALSE - tool_behaviour = null - reference_item_for_parameters() - update_tool_parameters(reference) - update_appearance(UPDATE_ICON_STATE) +/obj/item/borg/cyborg_omnitool/proc/deselect() + if(!selected) + return + selected = null + icon_state = initial(icon_state) playsound(src, 'sound/items/change_jaws.ogg', 50, TRUE) -/obj/item/borg/cyborg_omnitool/medical - name = "surgical omni-toolset" - desc = "A set of surgical tools used by cyborgs to operate on various surgical operations." - item_flags = SURGICAL_TOOL - -/obj/item/borg/cyborg_omnitool/medical/get_all_tool_behaviours() - return list(TOOL_SCALPEL, TOOL_HEMOSTAT, TOOL_RETRACTOR, TOOL_SAW, TOOL_DRILL, TOOL_CAUTERY, TOOL_BONESET) +/obj/item/borg/cyborg_omnitool/cyborg_unequip() + deselect() + return ..() -/obj/item/borg/cyborg_omnitool/medical/Initialize(mapload) - . = ..() - AddComponent(/datum/component/butchering, \ - speed = 8 SECONDS, \ - effectiveness = 100, \ - disabled = TRUE, \ - ) - radial_menu_options = list( - TOOL_SCALPEL = image(icon = 'icons/obj/medical/surgery_tools.dmi', icon_state = "[TOOL_SCALPEL]"), - TOOL_HEMOSTAT = image(icon = 'icons/obj/medical/surgery_tools.dmi', icon_state = "[TOOL_HEMOSTAT]"), - TOOL_RETRACTOR = image(icon = 'icons/obj/medical/surgery_tools.dmi', icon_state = "[TOOL_RETRACTOR]"), - TOOL_SAW = image(icon = 'icons/obj/medical/surgery_tools.dmi', icon_state = "[TOOL_SAW]"), - TOOL_DRILL = image(icon = 'icons/obj/medical/surgery_tools.dmi', icon_state = "[TOOL_DRILL]"), - TOOL_CAUTERY = image(icon = 'icons/obj/medical/surgery_tools.dmi', icon_state = "[TOOL_CAUTERY]"), - TOOL_BONESET = image(icon = 'icons/obj/medical/surgery_tools.dmi', icon_state = "[TOOL_BONESET]"), - TOOL_DRAPES = image(icon = 'icons/obj/medical/surgery_tools.dmi', icon_state = "[TOOL_DRAPES]"), - ) +/obj/item/borg/cyborg_omnitool/pre_attack(atom/atom, mob/living/user, params) + if(selected) + selected.melee_attack_chain(user, atom, params) + return TRUE + return ..() -/obj/item/borg/cyborg_omnitool/medical/reference_item_for_parameters() - var/datum/component/butchering/butchering = src.GetComponent(/datum/component/butchering) - butchering.butchering_enabled = (tool_behaviour == TOOL_SCALPEL || tool_behaviour == TOOL_SAW) - RemoveElement(/datum/element/eyestab) - qdel(GetComponent(/datum/component/surgery_initiator)) - item_flags = SURGICAL_TOOL - switch(tool_behaviour) - if(TOOL_SCALPEL) - reference = /obj/item/scalpel - AddElement(/datum/element/eyestab) - if(TOOL_DRILL) - reference = /obj/item/surgicaldrill - AddElement(/datum/element/eyestab) - if(TOOL_HEMOSTAT) - reference = /obj/item/hemostat - if(TOOL_RETRACTOR) - reference = /obj/item/retractor - if(TOOL_CAUTERY) - reference = /obj/item/cautery - if(TOOL_SAW) - reference = /obj/item/circular_saw - if(TOOL_BONESET) - reference = /obj/item/bonesetter - if(TOOL_DRAPES) - reference = /obj/item/surgical_drapes - AddComponent(/datum/component/surgery_initiator) - item_flags = null - -//Toolset for engineering cyborgs, this is all of the tools except for the welding tool. since it's quite hard to implement (read:can't be arsed to) /obj/item/borg/cyborg_omnitool/engineering name = "engineering omni-toolset" desc = "A set of engineering tools used by cyborgs to conduct various engineering tasks." - icon = 'icons/obj/items_cyborg.dmi' icon_state = "toolkit_engiborg" - item_flags = null - toolspeed = 0.5 - upgraded_toolspeed = 0.3 - -/obj/item/borg/cyborg_omnitool/engineering/get_all_tool_behaviours() - return list(TOOL_SCREWDRIVER, TOOL_CROWBAR, TOOL_WRENCH, TOOL_WIRECUTTER, TOOL_MULTITOOL) -/obj/item/borg/cyborg_omnitool/engineering/Initialize(mapload) - . = ..() - radial_menu_options = list( - TOOL_SCREWDRIVER = image(icon = 'icons/obj/tools.dmi', icon_state = "[TOOL_SCREWDRIVER]_map"), - TOOL_CROWBAR = image(icon = 'icons/obj/tools.dmi', icon_state = "[TOOL_CROWBAR]"), - TOOL_WRENCH = image(icon = 'icons/obj/tools.dmi', icon_state = "[TOOL_WRENCH]"), - TOOL_WIRECUTTER = image(icon = 'icons/obj/tools.dmi', icon_state = "[TOOL_WIRECUTTER]_map"), - TOOL_MULTITOOL = image(icon = 'icons/obj/devices/tool.dmi', icon_state = "[TOOL_MULTITOOL]"), - ) - -/obj/item/borg/cyborg_omnitool/engineering/reference_item_for_parameters() - RemoveElement(/datum/element/eyestab) - switch(tool_behaviour) - if(TOOL_SCREWDRIVER) - reference = /obj/item/screwdriver - AddElement(/datum/element/eyestab) - if(TOOL_CROWBAR) - reference = /obj/item/crowbar - if(TOOL_WRENCH) - reference = /obj/item/wrench - if(TOOL_WIRECUTTER) - reference = /obj/item/wirecutters - if(TOOL_MULTITOOL) - reference = /obj/item/multitool +/obj/item/borg/cyborg_omnitool/medical + name = "surgical omni-toolset" + desc = "A set of surgical tools used by cyborgs to operate on various surgical operations." + icon_state = "toolkit_medborg" #undef PKBORG_DAMPEN_CYCLE_DELAY #undef POWER_RECHARGE_CYBORG_DRAIN_MULTIPLIER diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index 367c619333e81..25c83d1b9635a 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -76,7 +76,7 @@ head.flash2 = new(head) chest = new(src) chest.wired = TRUE - chest.cell = new /obj/item/stock_parts/cell/high(chest) + chest.cell = new /obj/item/stock_parts/power_store/cell/high(chest) update_appearance() /obj/item/robot_suit/update_overlays() @@ -145,7 +145,7 @@ to_chat(user, span_warning("[src] has no attached torso!")) return - var/obj/item/stock_parts/cell/temp_cell = user.is_holding_item_of_type(/obj/item/stock_parts/cell) + var/obj/item/stock_parts/power_store/cell/temp_cell = user.is_holding_item_of_type(/obj/item/stock_parts/power_store/cell) var/swap_failed = FALSE if(!temp_cell) //if we're not holding a cell swap_failed = TRUE @@ -376,7 +376,7 @@ if(!locomotion) O.set_lockcharge(TRUE) - else if(istype(W, /obj/item/pen)) + else if(IS_WRITING_UTENSIL(W)) to_chat(user, span_warning("You need to use a multitool to name [src]!")) else return ..() diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 1a695442d8a76..84de0c577c32a 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -425,21 +425,18 @@ . = ..() if(!.) return . + if(cyborg.model.toolbox.currently_upgraded) + to_chat(user, span_warning("This unit is already equipped with an omnitool upgrade!")) + return FALSE + cyborg.model.toolbox.set_upgrade(TRUE) ADD_TRAIT(cyborg, TRAIT_FASTMED, REF(src)) - for(var/obj/item/borg/cyborg_omnitool/medical/omnitool_upgrade in cyborg.model.modules) - if(omnitool_upgrade.upgraded) - to_chat(user, span_warning("This unit is already equipped with an omnitool upgrade!")) - return FALSE - for(var/obj/item/borg/cyborg_omnitool/medical/omnitool in cyborg.model.modules) - omnitool.upgrade_omnitool() /obj/item/borg/upgrade/surgery_omnitool/deactivate(mob/living/silicon/robot/cyborg, mob/living/user = usr) . = ..() if(!.) return . + cyborg.model.toolbox.set_upgrade(FALSE) REMOVE_TRAIT(cyborg, TRAIT_FASTMED, REF(src)) - for(var/obj/item/borg/cyborg_omnitool/omnitool in cyborg.model.modules) - omnitool.downgrade_omnitool() /obj/item/borg/upgrade/engineering_omnitool name = "cyborg engineering omni-tool upgrade" @@ -454,19 +451,16 @@ . = ..() if(!.) return . - for(var/obj/item/borg/cyborg_omnitool/engineering/omnitool_upgrade in cyborg.model.modules) - if(omnitool_upgrade.upgraded) - to_chat(user, span_warning("This unit is already equipped with an omnitool upgrade!")) - return FALSE - for(var/obj/item/borg/cyborg_omnitool/engineering/omnitool in cyborg.model.modules) - omnitool.upgrade_omnitool() + if(cyborg.model.toolbox.currently_upgraded) + to_chat(user, span_warning("This unit is already equipped with an omnitool upgrade!")) + return FALSE + cyborg.model.toolbox.set_upgrade(TRUE) /obj/item/borg/upgrade/engineering_omnitool/deactivate(mob/living/silicon/robot/cyborg, mob/living/user = usr) . = ..() if(!.) return . - for(var/obj/item/borg/cyborg_omnitool/omnitool in cyborg.model.modules) - omnitool.downgrade_omnitool() + cyborg.model.toolbox.set_upgrade(FALSE) /obj/item/borg/upgrade/defib name = "medical cyborg defibrillator" diff --git a/code/game/objects/items/signs.dm b/code/game/objects/items/signs.dm index 3bf5c36048b31..85a71dc0e8f75 100644 --- a/code/game/objects/items/signs.dm +++ b/code/game/objects/items/signs.dm @@ -30,7 +30,7 @@ desc = "It reads: [label]" /obj/item/picket_sign/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/pen) || istype(W, /obj/item/toy/crayon)) + if(IS_WRITING_UTENSIL(W)) retext(user, W) else return ..() diff --git a/code/game/objects/items/storage/boxes/food_boxes.dm b/code/game/objects/items/storage/boxes/food_boxes.dm index 45de0e58ff6c1..bab60320c957f 100644 --- a/code/game/objects/items/storage/boxes/food_boxes.dm +++ b/code/game/objects/items/storage/boxes/food_boxes.dm @@ -95,7 +95,7 @@ return ..() /obj/item/storage/box/papersack/storage_insert_on_interacted_with(datum/storage, obj/item/inserted, mob/living/user) - if(istype(inserted, /obj/item/pen)) + if(IS_WRITING_UTENSIL(inserted)) var/choice = show_radial_menu(user, src , papersack_designs, custom_check = CALLBACK(src, PROC_REF(check_menu), user, inserted), radius = 36, require_near = TRUE) if(!choice || choice == design_choice) return FALSE diff --git a/code/game/objects/items/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm index b4d35efdda12a..bdbfa79001ddf 100644 --- a/code/game/objects/items/tanks/tanks.dm +++ b/code/game/objects/items/tanks/tanks.dm @@ -415,6 +415,16 @@ if(tank_assembly) tank_assembly.attack_hand() +/obj/item/tank/attack_self(mob/user, modifiers) + if (tank_assembly) + tank_assembly.attack_self(user) + return TRUE + return ..() + +/obj/item/tank/attack_self_secondary(mob/user, modifiers) + . = ..() + ui_interact(user) + /obj/item/tank/Move() . = ..() if(tank_assembly) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index f98b29e1932b1..8fd16036811fe 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -399,7 +399,7 @@ GLOBAL_LIST_EMPTY(roundstart_station_closets) screentip_change = TRUE if(!locked && !opened) - if(id_card && istype(held_item, /obj/item/pen)) + if(id_card && IS_WRITING_UTENSIL(held_item)) context[SCREENTIP_CONTEXT_LMB] = "Rename" screentip_change = TRUE if(secure && card_reader_installed && !broken) @@ -817,7 +817,7 @@ GLOBAL_LIST_EMPTY(roundstart_station_closets) else balloon_alert(user, "set to [choice]") - else if(!opened && istype(weapon, /obj/item/pen)) + else if(!opened && IS_WRITING_UTENSIL(weapon)) if(locked) balloon_alert(user, "unlock first!") return diff --git a/code/game/objects/structures/crates_lockers/closets/bodybag.dm b/code/game/objects/structures/crates_lockers/closets/bodybag.dm index 38482fcfd9ba9..8eb5cc3b8c0d4 100644 --- a/code/game/objects/structures/crates_lockers/closets/bodybag.dm +++ b/code/game/objects/structures/crates_lockers/closets/bodybag.dm @@ -47,7 +47,7 @@ return ..() /obj/structure/closet/body_bag/attackby(obj/item/interact_tool, mob/user, params) - if (istype(interact_tool, /obj/item/pen) || istype(interact_tool, /obj/item/toy/crayon)) + if (IS_WRITING_UTENSIL(interact_tool)) if(!user.can_write(interact_tool)) return var/t = tgui_input_text(user, "What would you like the label to be?", name, max_length = 53) diff --git a/code/game/objects/structures/crates_lockers/closets/gimmick.dm b/code/game/objects/structures/crates_lockers/closets/gimmick.dm index fecacd678c7c2..f2171b2e8b1b0 100644 --- a/code/game/objects/structures/crates_lockers/closets/gimmick.dm +++ b/code/game/objects/structures/crates_lockers/closets/gimmick.dm @@ -113,7 +113,7 @@ new /obj/item/clothing/head/helmet/space/nasavoid(src) new /obj/item/clothing/suit/space/nasavoid(src) new /obj/item/crowbar(src) - new /obj/item/stock_parts/cell(src) + new /obj/item/stock_parts/power_store/cell(src) new /obj/item/multitool(src) /obj/structure/closet/mini_fridge diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index 86d8e01f98ebe..9493a7c941407 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -82,7 +82,7 @@ . += span_notice("There is a small paper placard on the assembly, written on it is '[created_name]'.") /obj/structure/door_assembly/attackby(obj/item/W, mob/living/user, params) - if(istype(W, /obj/item/pen) && !user.combat_mode) + if(IS_WRITING_UTENSIL(W) && !user.combat_mode) var/t = tgui_input_text(user, "Enter the name for the door", "Airlock Renaming", created_name, MAX_NAME_LEN) if(!t) return diff --git a/code/game/objects/structures/fans.dm b/code/game/objects/structures/fans.dm index 4f0a5fc450bfe..9470b6018dce7 100644 --- a/code/game/objects/structures/fans.dm +++ b/code/game/objects/structures/fans.dm @@ -51,3 +51,5 @@ light_color = LIGHT_COLOR_BLUE light_range = 4 +/obj/structure/fans/tiny/shield/wrench_act(mob/living/user, obj/item/I) + return ITEM_INTERACT_SKIP_TO_ATTACK //how you gonna wrench disassemble a shield????????? diff --git a/code/game/objects/structures/plasticflaps.dm b/code/game/objects/structures/plasticflaps.dm index a2a1e1c04bc20..a5ed048153c41 100644 --- a/code/game/objects/structures/plasticflaps.dm +++ b/code/game/objects/structures/plasticflaps.dm @@ -26,6 +26,7 @@ . = ..() alpha = 0 gen_overlay() + air_update_turf(TRUE, TRUE) /obj/structure/plasticflaps/on_changed_z_level(turf/old_turf, turf/new_turf, same_z_layer, notify_contents) if(same_z_layer) @@ -127,10 +128,6 @@ /obj/structure/plasticflaps/atom_deconstruct(disassembled = TRUE) new /obj/item/stack/sheet/plastic/five(loc) -/obj/structure/plasticflaps/Initialize(mapload) - . = ..() - air_update_turf(TRUE, TRUE) - /obj/structure/plasticflaps/Destroy() var/atom/oldloc = loc . = ..() diff --git a/code/game/objects/structures/signs/_signs.dm b/code/game/objects/structures/signs/_signs.dm index eefbe49ef3229..9268cb9c059ce 100644 --- a/code/game/objects/structures/signs/_signs.dm +++ b/code/game/objects/structures/signs/_signs.dm @@ -85,7 +85,7 @@ return TRUE /obj/structure/sign/attackby(obj/item/I, mob/user, params) - if(is_editable && istype(I, /obj/item/pen)) + if(is_editable && IS_WRITING_UTENSIL(I)) if(!length(GLOB.editable_sign_types)) CRASH("GLOB.editable_sign_types failed to populate") var/choice = tgui_input_list(user, "Select a sign type", "Sign Customization", GLOB.editable_sign_types) @@ -187,12 +187,12 @@ /obj/item/sign/add_context(atom/source, list/context, obj/item/held_item, mob/user) . = ..() - if(is_editable && istype(held_item, /obj/item/pen)) + if(is_editable && IS_WRITING_UTENSIL(held_item)) context[SCREENTIP_CONTEXT_LMB] = "Change design" return CONTEXTUAL_SCREENTIP_SET /obj/item/sign/attackby(obj/item/I, mob/user, params) - if(is_editable && istype(I, /obj/item/pen)) + if(is_editable && IS_WRITING_UTENSIL(I)) if(!length(GLOB.editable_sign_types)) CRASH("GLOB.editable_sign_types failed to populate") var/choice = tgui_input_list(user, "Select a sign type", "Sign Customization", GLOB.editable_sign_types) diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index 3437e2a5ae078..195fbbc643e0a 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -246,7 +246,7 @@ electronics = null ae.forceMove(drop_location()) - else if(istype(W, /obj/item/pen)) + else if(IS_WRITING_UTENSIL(W)) var/t = tgui_input_text(user, "Enter the name for the door", "Windoor Renaming", created_name, MAX_NAME_LEN) if(!t) return diff --git a/code/modules/admin/verbs/borgpanel.dm b/code/modules/admin/verbs/borgpanel.dm index f0f2fc4a8f076..ffeb1cce2731c 100644 --- a/code/modules/admin/verbs/borgpanel.dm +++ b/code/modules/admin/verbs/borgpanel.dm @@ -81,7 +81,7 @@ ADMIN_VERB(borg_panel, R_ADMIN, "Show Borg Panel", ADMIN_VERB_NO_DESCRIPTION, AD message_admins("[key_name_admin(user)] deleted the cell of [ADMIN_LOOKUPFLW(borg)].") log_silicon("[key_name(user)] deleted the cell of [key_name(borg)].") if ("change_cell") - var/chosen = pick_closest_path(null, make_types_fancy(typesof(/obj/item/stock_parts/cell))) + var/chosen = pick_closest_path(null, make_types_fancy(typesof(/obj/item/stock_parts/power_store/cell))) if (!ispath(chosen)) chosen = text2path(chosen) if (chosen) diff --git a/code/modules/admin/verbs/secrets.dm b/code/modules/admin/verbs/secrets.dm index 379b9475dc50b..c124a5fba2266 100644 --- a/code/modules/admin/verbs/secrets.dm +++ b/code/modules/admin/verbs/secrets.dm @@ -604,6 +604,25 @@ ADMIN_VERB(secrets, R_NONE, "Secrets", "Abuse harder than you ever have before w message_admins("[key_name_admin(holder)] [ctf_controller.instagib_mode ? "enabled" : "disabled"] instagib mode in CTF game: [selected_game]") log_admin("[key_name_admin(holder)] [ctf_controller.instagib_mode ? "enabled" : "disabled"] instagib mode in CTF game: [selected_game]") + if("mass_heal") + if(!is_funmin) + return + var/heal_mobs = tgui_alert(usr, "Heal all mobs and return ghosts to their bodies?", "Mass Healing", list("Yes", "No")) + if(!heal_mobs || heal_mobs != "Yes") + return + + for(var/mob/dead/observer/ghost in GLOB.player_list) //Return all ghosts if possible + if(!ghost.mind || !ghost.mind.current) //won't do anything if there is no body + continue + ghost.reenter_corpse() + + for(var/mob/living/player in GLOB.player_list) + player.revive(ADMIN_HEAL_ALL, force_grab_ghost = TRUE) + + sound_to_playing_players('sound/effects/pray_chaplain.ogg') + message_admins("[key_name_admin(holder)] healed everyone.") + log_admin("[key_name(holder)] healed everyone.") + if(E) E.processing = FALSE if(E.announce_when>0) diff --git a/code/modules/antagonists/heretic/items/eldritch_painting.dm b/code/modules/antagonists/heretic/items/eldritch_painting.dm index 3332c4e31ba63..3e9d3675b1351 100644 --- a/code/modules/antagonists/heretic/items/eldritch_painting.dm +++ b/code/modules/antagonists/heretic/items/eldritch_painting.dm @@ -1,6 +1,7 @@ // The basic eldritch painting /obj/item/wallframe/painting/eldritch - name = "The debug and a coder who slept" + name = "The Blank Canvas: A Study in Default Subtypes" + desc = "An impossible painting made of impossible paint. It should not exist in this reality." icon = 'icons/obj/signs.dmi' resistance_flags = FLAMMABLE flags_1 = NONE @@ -9,7 +10,8 @@ pixel_shift = 30 /obj/structure/sign/painting/eldritch - name = "The debug and a coder who slept" + name = "The Blank Canvas: A Study in Default Subtypes" + desc = "An impossible painting made of impossible paint. It should not exist in this reality." icon = 'icons/obj/signs.dmi' icon_state = "eldritch_painting_debug" custom_materials = list(/datum/material/wood =SHEET_MATERIAL_AMOUNT) @@ -22,7 +24,7 @@ /// The trauma the painting applies var/applied_trauma = /datum/brain_trauma/severe/pacifism /// The text that shows up when you cross the paintings path - var/text_to_display = "I should not be seeing this..." + var/text_to_display = "Some things should not be seen by mortal eyes..." /// The range of the paintings effect var/range = 7 @@ -47,12 +49,12 @@ to_chat(viewer, span_notice(text_to_display)) viewer.gain_trauma(applied_trauma, TRAUMA_RESILIENCE_SURGERY) INVOKE_ASYNC(viewer, TYPE_PROC_REF(/mob, emote), "scream") - to_chat(viewer, span_hypnophrase("As you gaze upon the painting, your mind rends to its truth!")) + to_chat(viewer, span_hypnophrase("Your mind is overcome! The painting leaves a mark on your psyche.")) /obj/structure/sign/painting/eldritch/wirecutter_act(mob/living/user, obj/item/I) if(!user.can_block_magic(MAGIC_RESISTANCE)) user.add_mood_event("ripped_eldritch_painting", /datum/mood_event/eldritch_painting) - to_chat(user, span_hypnophrase("Laughter echoes through your mind....")) + to_chat(user, span_hypnophrase("There's an itch in your brain. It's laughing at you...")) qdel(src) return ITEM_INTERACT_SUCCESS @@ -70,23 +72,23 @@ /obj/structure/sign/painting/eldritch/proc/examine_effects(mob/living/carbon/examiner) if(IS_HERETIC(examiner)) - to_chat(examiner, span_notice("Oh, what arts!")) + to_chat(examiner, span_notice("What an engrossing painting!")) else - to_chat(examiner, span_notice("Kinda strange painting.")) + to_chat(examiner, span_notice("What a strange painting...")) -// The sister and He Who Wept eldritch painting +// The Sister and He Who Wept eldritch painting /obj/item/wallframe/painting/eldritch/weeping - name = "The sister and He Who Wept" - desc = "A beautiful artwork depicting a fair lady and HIM, HE WEEPS, I WILL SEE HIM AGAIN." + name = "\improper The Sister and He Who Wept" + desc = "A beautiful painting depicting a fair lady sitting beside Him. He weeps. You will see him again." icon_state = "eldritch_painting_weeping" result_path = /obj/structure/sign/painting/eldritch/weeping /obj/structure/sign/painting/eldritch/weeping - name = "The sister and He Who Wept" - desc = "A beautiful artwork depicting a fair lady and HIM, HE WEEPS, I WILL SEE HIM AGAIN. Destroyable with wirecutters." + name = "\improper The Sister and He Who Wept" + desc = "A beautiful painting depicting a fair lady sitting beside Him. He weeps. You will see him again. Removable with wirecutters." icon_state = "eldritch_painting_weeping" applied_trauma = /datum/brain_trauma/severe/weeping - text_to_display = "Oh what arts! She is so fair, and he...HE WEEPS!!!" + text_to_display = "Such beauty! Such sorrow!" /obj/structure/sign/painting/eldritch/weeping/examine_effects(mob/living/carbon/examiner) if(!IS_HERETIC(examiner)) @@ -95,23 +97,23 @@ examiner.add_mood_event("weeping_withdrawal", /datum/mood_event/eldritch_painting/weeping_withdrawal) return - to_chat(examiner, span_notice("Oh, what arts! Just gazing upon it clears your mind.")) + to_chat(examiner, span_notice("Just gazing upon it clears your mind.")) examiner.remove_status_effect(/datum/status_effect/hallucination) examiner.add_mood_event("heretic_eldritch_painting", /datum/mood_event/eldritch_painting/weeping_heretic) // The First Desire painting, using a lot of the painting/eldritch framework /obj/item/wallframe/painting/eldritch/desire - name = "The First Desire" - desc = "A painting depicting a platter of flesh, just looking at it makes your stomach knot and mouth froth." + name = "\improper The Feast of Desire" + desc = "A painting of an elaborate feast. Despite being made entirely of rotting meat and decaying organs, the food looks very appetising." icon_state = "eldritch_painting_desire" result_path = /obj/structure/sign/painting/eldritch/desire /obj/structure/sign/painting/eldritch/desire - name = "The First Desire" - desc = "A painting depicting a platter of flesh, just looking at it makes your stomach knot and mouth froth. Destroyable with wirecutters." + name = "\improper The Feast of Desire" + desc = "A painting of an elaborate feast. Despite being made entirely of rotting meat and decaying organs, the food looks very appetising. Removable with wirecutters." icon_state = "eldritch_painting_desire" applied_trauma = /datum/brain_trauma/severe/flesh_desire - text_to_display = "What an artwork, just looking at it makes me hunger...." + text_to_display = "Just looking at this painting makes me hungry..." // The special examine interaction for this painting /obj/structure/sign/painting/eldritch/desire/examine_effects(mob/living/carbon/examiner) @@ -120,7 +122,8 @@ examiner.adjust_nutrition(50) to_chat(examiner, span_warning("You feel a searing pain in your stomach!")) examiner.adjustOrganLoss(ORGAN_SLOT_STOMACH, 5) - to_chat(examiner, span_notice("You feel less hungry, but more empty somehow?")) + to_chat(examiner, span_notice("You feel less hungry.")) + to_chat(examiner, span_warning("You should stockpile raw meat and organs, before you get hungry again.")) examiner.add_mood_event("respite_eldritch_hunger", /datum/mood_event/eldritch_painting/desire_examine) return @@ -142,19 +145,20 @@ var/organ_or_bodypart_to_spawn = pick(random_bodypart_or_organ) new organ_or_bodypart_to_spawn(drop_location()) to_chat(examiner, span_notice("A piece of flesh crawls out of the painting and flops onto the floor.")) + to_chat(examiner, span_warning("The void screams!")) // Adds a negative mood event to our heretic examiner.add_mood_event("heretic_eldritch_hunger", /datum/mood_event/eldritch_painting/desire_heretic) // Great chaparral over rolling hills, this one doesn't have the sensor type /obj/item/wallframe/painting/eldritch/vines - name = "Great chaparral over rolling hills" - desc = "A painting depicting a massive thicket, it seems to be attempting to crawl through the frame." + name = "\improper Great Chaparral Over Rolling Hills" + desc = "A painting depicting a massive thicket. This painting teems with life, and seems to strain against its frame." icon_state = "eldritch_painting_vines" result_path = /obj/structure/sign/painting/eldritch/vines /obj/structure/sign/painting/eldritch/vines - name = "Great chaparral over rolling hills" - desc = "A painting depicting a massive thicket, it seems to be attempting to crawl through the frame. Destroyable with wirecutters." + name = "\improper Great Chaparral Over Rolling Hills" + desc = "A painting depicting a massive thicket. This painting teems with life, and seems to strain against its frame. Removable with wirecutters." icon_state = "eldritch_painting_vines" applied_trauma = null // A static list of 5 pretty strong mutations, simple to expand for any admins @@ -179,28 +183,30 @@ . = ..() if(!IS_HERETIC(examiner)) new /datum/spacevine_controller(get_turf(examiner), mutations, 0, 10) - to_chat(examiner, span_hypnophrase("The thicket crawls through the frame, and you suddenly find vines beneath you...")) + to_chat(examiner, span_hypnophrase("You are transfixed for a moment by the vines on the painting.")) + to_chat(examiner, span_notice("You feel something writhing around you.")) return var/item_to_spawn = pick(items_to_spawn) - to_chat(examiner, span_notice("You picture yourself in the thicket picking flowers..")) + to_chat(examiner, span_notice("You are transfixed for a moment by the chaotic patterns the vines make.")) + to_chat(examiner, span_notice("You feel life coalesce and bloom beneath you.")) new item_to_spawn(examiner.drop_location()) examiner.add_mood_event("heretic_vines", /datum/mood_event/eldritch_painting/heretic_vines) // Lady out of gates, gives a brain trauma causing the person to scratch themselves /obj/item/wallframe/painting/eldritch/beauty - name = "Lady out of gates" - desc = "A painting depicting a perfect lady, and I must be perfect like her..." + name = "\improper Lady of the Gate" + desc = "A painting of an otherworldly being. Its thin, porceline-coloured skin is stretched tight over its strange bone structure. It has an odd beauty." icon_state = "eldritch_painting_beauty" result_path = /obj/structure/sign/painting/eldritch/beauty /obj/structure/sign/painting/eldritch/beauty - name = "Lady out of gates" - desc = "A painting depicting a perfect lady, and I must be perfect like her. Destroyable with wirecutters." + name = "\improper Lady of the Gate" + desc = "A painting of an otherworldly being. Its thin, porceline-coloured skin is stretched tight over its strange bone structure. It has an odd beauty. Removable with wirecutters." icon_state = "eldritch_painting_beauty" applied_trauma = /datum/brain_trauma/severe/eldritch_beauty - text_to_display = "Her flesh glows in the pale light, and mine can too...If it wasnt for these imperfections...." + text_to_display = "A beacon of purity, the real world seems so mundane and imperfect in comparison..." /// List of reagents to add to heretics on examine, set to mutadone by default to remove mutations var/list/reagents_to_add = list(/datum/reagent/medicine/mutadone = 5) @@ -211,35 +217,35 @@ return if(!IS_HERETIC(examiner)) - to_chat(examiner, span_hypnophrase("You feel changed, more perfect....")) + to_chat(examiner, span_hypnophrase("You are not yet pure.")) examiner.easy_random_mutate(NEGATIVE + MINOR_NEGATIVE) return - to_chat(examiner, span_notice("Your imperfections shed and you are restored.")) + to_chat(examiner, span_notice("Your imperfections are shed.")) examiner.reagents.add_reagent_list(reagents_to_add) // Climb over the rusted mountain, gives a brain trauma causing the person to randomly rust tiles beneath them /obj/item/wallframe/painting/eldritch/rust - name = "Climb over the rusted mountain" - desc = "A painting depicting something climbing a mountain of rust, it gives you an eerie feeling." + name = "\improper Master of the Rusted Mountain" + desc = "A painting of a strange being climbing a rust-coloured mountain. The brushwork is unnatural and unnerving." icon_state = "eldritch_painting_rust" result_path = /obj/structure/sign/painting/eldritch/rust /obj/structure/sign/painting/eldritch/rust - name = "Climb over the rusted mountain" - desc = "A painting depicting something climbing a mountain of rust, it gives you an eerie feeling. Destroyable with wirecutters." + name = "\improper Master of the Rusted Mountain" + desc = "A painting of a strange being climbing a rust-coloured mountain. The brushwork is unnatural and unnerving. Removable with wirecutters." icon_state = "eldritch_painting_rust" applied_trauma = /datum/brain_trauma/severe/rusting - text_to_display = "It climbs, and I will aid it...The rust calls and I shall answer..." + text_to_display = "The rust decays. The master climbs. It calls. You answer..." // The special examine interaction for this painting /obj/structure/sign/painting/eldritch/rust/examine_effects(mob/living/carbon/examiner) . = ..() if(!IS_HERETIC(examiner)) - to_chat(examiner, span_hypnophrase("It can wait...")) + to_chat(examiner, span_hypnophrase("You feel the rust. The rot.")) examiner.add_mood_event("rusted_examine", /datum/mood_event/eldritch_painting/rust_examine) return - to_chat(examiner, span_notice("You see the climber, and are inspired by it!")) + to_chat(examiner, span_notice("The painting fills you with resolve.")) examiner.add_mood_event("rusted_examine", /datum/mood_event/eldritch_painting/rust_heretic_examine) diff --git a/code/modules/antagonists/heretic/items/forbidden_book.dm b/code/modules/antagonists/heretic/items/forbidden_book.dm index 6a6a799183a41..38f42b58c5e82 100644 --- a/code/modules/antagonists/heretic/items/forbidden_book.dm +++ b/code/modules/antagonists/heretic/items/forbidden_book.dm @@ -1,7 +1,8 @@ // Ye old forbidden book, the Codex Cicatrix. /obj/item/codex_cicatrix name = "Codex Cicatrix" - desc = "This book describes the secrets of the veil between worlds." + desc = "This heavy tome is full of cryptic scribbles and impossible diagrams. \ + According to legend, it can be deciphered to reveal the secrets of the veil between worlds." icon = 'icons/obj/antags/eldritch.dmi' base_icon_state = "book" icon_state = "book" @@ -29,7 +30,7 @@ . += span_notice("Can be used to tap influences for additional knowledge points.") . += span_notice("Can also be used to draw or remove transmutation runes with ease.") - . += span_notice("Additionally, it can work as a focus for your spells in a pinch, though a more specialized relic is recommended, as this may get dropped in combat.") + . += span_notice("Additionally, it can work as a focus for your spells when held.") /obj/item/codex_cicatrix/attack_self(mob/user, modifiers) . = ..() diff --git a/code/modules/antagonists/heretic/items/heretic_armor.dm b/code/modules/antagonists/heretic/items/heretic_armor.dm index e1f7961240683..45ddea163fa71 100644 --- a/code/modules/antagonists/heretic/items/heretic_armor.dm +++ b/code/modules/antagonists/heretic/items/heretic_armor.dm @@ -51,8 +51,8 @@ name = "void hood" icon = 'icons/obj/clothing/head/helmet.dmi' worn_icon = 'icons/mob/clothing/head/helmet.dmi' - desc = "Black like tar, doesn't reflect any light. Runic symbols line the outside, \ - with each flash you loose comprehension of what you are seeing." + desc = "Black like tar, reflecting no light. Runic symbols line the outside. \ + With each flash you lose comprehension of what you are seeing." icon_state = "void_cloak" flags_inv = NONE flags_cover = NONE @@ -73,8 +73,8 @@ /obj/item/clothing/suit/hooded/cultrobes/void name = "void cloak" - desc = "Black like tar, doesn't reflect any light. Runic symbols line the outside, \ - with each flash you loose comprehension of what you are seeing." + desc = "Black like tar, reflecting no light. Runic symbols line the outside. \ + With each flash you lose comprehension of what you are seeing." icon_state = "void_cloak" inhand_icon_state = null allowed = list(/obj/item/melee/sickly_blade) diff --git a/code/modules/antagonists/heretic/items/madness_mask.dm b/code/modules/antagonists/heretic/items/madness_mask.dm index fe80465bfd0d4..b7799d685c48b 100644 --- a/code/modules/antagonists/heretic/items/madness_mask.dm +++ b/code/modules/antagonists/heretic/items/madness_mask.dm @@ -1,7 +1,7 @@ // The spooky "void" / "abyssal" / "madness" mask for heretics. /obj/item/clothing/mask/madness_mask - name = "Abyssal Mask" - desc = "A mask created from the suffering of existence. Looking down it's eyes, you notice something gazing back at you." + name = "abyssal mask" + desc = "A mask created from suffering. When you look into its eyes, it looks back." icon_state = "mad_mask" inhand_icon_state = null w_class = WEIGHT_CLASS_SMALL diff --git a/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm b/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm index b4da4018fc129..ac56b9ba24006 100644 --- a/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm +++ b/code/modules/antagonists/heretic/knowledge/side_lock_moon.dm @@ -2,9 +2,9 @@ /datum/heretic_knowledge/spell/mind_gate name = "Mind Gate" - desc = "Grants you Mind Gate, a spell \ - which deals you 20 brain damage but the target suffers a hallucination,\ - is left confused for 10 seconds, suffers oxygen loss and brain damage." + desc = "Grants you Mind Gate, a spell which inflicts hallucinations, \ + confusion, oxygen loss and brain damage to its target over 10 seconds.\ + The caster takes 20 brain damage per use." gain_text = "My mind swings open like a gate, and its insight will let me perceive the truth." next_knowledge = list( /datum/heretic_knowledge/key_ring, @@ -16,8 +16,8 @@ /datum/heretic_knowledge/unfathomable_curio name = "Unfathomable Curio" - desc = "Allows you to transmute 3 rods, lungs and any belt into an Unfathomable Curio\ - , a belt that can hold blades and items for rituals. Whilst worn it will also \ + desc = "Allows you to transmute 3 rods, lungs and any belt into an Unfathomable Curio, \ + a belt that can hold blades and items for rituals. Whilst worn it will also \ veil you, allowing you to take 5 hits without suffering damage, this veil will recharge very slowly \ outside of combat." gain_text = "The mansus holds many a curio, some are not meant for the mortal eye." @@ -36,16 +36,15 @@ /datum/heretic_knowledge/painting name = "Unsealed Arts" - desc = "Allows you to transmute a canvas and an additional item to create a piece of art, these paintings \ - have different effects depending on the additional item added. Possible paintings: \ - The sister and He Who Wept: Eyes. Clears your own mind, but curses non-heretics with hallucinations. \ - The First Desire: Any bodypart. Supplies you with random organs, but curses non-heretics with a hunger for flesh. \ - Great chaparral over rolling hills: Any grown food. Spreads kudzu when placed and examined by non-heretics. Also supplies you with poppies and harebells. \ - Lady out of gates: Gloves. Clears your mutations, but mutates non-heretics and curses them with scratching. \ - Climb over the rusted mountain: Trash. Curses non-heretics to rust the floor they walk on. \ - Non-heretics can counter most of these effects by examining one of these paintings." - gain_text = "A wind of inspiration blows through me, past the walls and past the gate inspirations lie, yet to be depicted. \ - They yearn for mortal eyes again, and I shall grant that wish." + desc = "Allows you to transmute a canvas and an additional item to create a painting. \ + Each painting has a unique effect and recipe. Possible paintings: \ + The Sister and He Who Wept: Requires a pair of Eyes. Clears your own mind, and curses non-heretics with hallucinations. \ + The Feast of Desire: Requires a severed limb. Supplies you with random organs, and curses non-heretics with a hunger for flesh. \ + Great Chaparral Over Rolling Hills: Requires any plant produce. Spreads kudzu when placed, and supplies you with poppies and harebells. \ + Lady of the Gate: Requires any pair of Gloves. Clears your mutations, mutates non-heretics and curses them with scratching. \ + Master of the Rusted Mountain: Requires a piece of Trash. Curses non-heretics to rust the floor they walk on." + gain_text = "A wind of inspiration blows through me. Beyond the veil and past the gate great works exist, yet to be painted. \ + They yearn for mortal eyes, so I shall give them an audience." next_knowledge = list( /datum/heretic_knowledge/spell/burglar_finesse, /datum/heretic_knowledge/moon_amulet, diff --git a/code/modules/antagonists/ninja/ninjaDrainAct.dm b/code/modules/antagonists/ninja/ninjaDrainAct.dm index 0aaf5dbbfcf3b..f160ebb9c6244 100644 --- a/code/modules/antagonists/ninja/ninjaDrainAct.dm +++ b/code/modules/antagonists/ninja/ninjaDrainAct.dm @@ -85,13 +85,13 @@ hacking_module.charge_message(src, drain_total) //CELL// -/obj/item/stock_parts/cell/ninjadrain_act(mob/living/carbon/human/ninja, obj/item/mod/module/hacker/hacking_module) +/obj/item/stock_parts/power_store/cell/ninjadrain_act(mob/living/carbon/human/ninja, obj/item/mod/module/hacker/hacking_module) if(!ninja || !hacking_module) return NONE INVOKE_ASYNC(src, PROC_REF(ninjadrain_charge), ninja, hacking_module) return COMPONENT_CANCEL_ATTACK_CHAIN -/obj/item/stock_parts/cell/proc/ninjadrain_charge(mob/living/carbon/human/ninja, obj/item/mod/module/hacker/hacking_module) +/obj/item/stock_parts/power_store/cell/proc/ninjadrain_charge(mob/living/carbon/human/ninja, obj/item/mod/module/hacker/hacking_module) var/drain_total = 0 if(charge && !do_after(ninja, 3 SECONDS, target = src, hidden = TRUE)) drain_total = charge diff --git a/code/modules/antagonists/space_dragon/carp_rift.dm b/code/modules/antagonists/space_dragon/carp_rift.dm index 4b8a20acba8d1..828ee94587fcb 100644 --- a/code/modules/antagonists/space_dragon/carp_rift.dm +++ b/code/modules/antagonists/space_dragon/carp_rift.dm @@ -19,7 +19,7 @@ return var/area/rift_location = get_area(owner) if(!(rift_location in dragon.chosen_rift_areas)) - owner.balloon_alert(owner, "can't summon a rift here!") + owner.balloon_alert(owner, "can't summon a rift here! check your objectives!") return for(var/obj/structure/carp_rift/rift as anything in dragon.rift_list) var/area/used_location = get_area(rift) diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm index 1d8936e6068da..5c7f5208254f0 100644 --- a/code/modules/assembly/mousetrap.dm +++ b/code/modules/assembly/mousetrap.dm @@ -153,7 +153,7 @@ * * user: The mob handling the trap */ /obj/item/assembly/mousetrap/proc/clumsy_check(mob/living/carbon/human/user) - if(!armed) + if(!armed || !user) return FALSE if((HAS_TRAIT(user, TRAIT_DUMB) || HAS_TRAIT(user, TRAIT_CLUMSY)) && prob(50)) var/which_hand = BODY_ZONE_PRECISE_L_HAND diff --git a/code/modules/atmospherics/machinery/components/electrolyzer/electrolyzer.dm b/code/modules/atmospherics/machinery/components/electrolyzer/electrolyzer.dm index 2da9ac752b549..4a811c3435cb7 100644 --- a/code/modules/atmospherics/machinery/components/electrolyzer/electrolyzer.dm +++ b/code/modules/atmospherics/machinery/components/electrolyzer/electrolyzer.dm @@ -15,7 +15,7 @@ /// We don't use area power, we always use the cell use_power = NO_POWER_USE ///used to check if there is a cell in the machine - var/obj/item/stock_parts/cell/cell + var/obj/item/stock_parts/power_store/cell ///check if the machine is on or off var/on = FALSE ///check what mode the machine should be (WORKING, STANDBY) @@ -170,7 +170,7 @@ /obj/machinery/electrolyzer/attackby(obj/item/I, mob/user, params) add_fingerprint(user) - if(istype(I, /obj/item/stock_parts/cell)) + if(istype(I, /obj/item/stock_parts/power_store/cell)) if(!panel_open) balloon_alert(user, "open panel!") return diff --git a/code/modules/atmospherics/machinery/components/fusion/hfr_procs.dm b/code/modules/atmospherics/machinery/components/fusion/hfr_procs.dm index 71e5a8bcc5f36..9f2f6a96f4bf8 100644 --- a/code/modules/atmospherics/machinery/components/fusion/hfr_procs.dm +++ b/code/modules/atmospherics/machinery/components/fusion/hfr_procs.dm @@ -330,7 +330,7 @@ var/obj/machinery/power/apc/apc = area.apc if (!apc) return 0 - var/obj/item/stock_parts/cell/cell = apc.cell + var/obj/item/stock_parts/power_store/cell = apc.cell if (!cell) return 0 return cell.percent() diff --git a/code/modules/atmospherics/machinery/components/gas_recipe_machines/atmos_machines_recipes.dm b/code/modules/atmospherics/machinery/components/gas_recipe_machines/atmos_machines_recipes.dm index 184d7680c91af..13c872199dc0c 100644 --- a/code/modules/atmospherics/machinery/components/gas_recipe_machines/atmos_machines_recipes.dm +++ b/code/modules/atmospherics/machinery/components/gas_recipe_machines/atmos_machines_recipes.dm @@ -134,7 +134,7 @@ GLOBAL_LIST_INIT(gas_recipe_meta, gas_recipes_list()) max_temp = 90 energy_release = -800000 requirements = list(/datum/gas/plasma = 800, /datum/gas/helium = 100, /datum/gas/bz = 50) - products = list(/obj/item/stock_parts/cell/crystal_cell = 1) + products = list(/obj/item/stock_parts/power_store/cell/crystal_cell = 1) /datum/gas_recipe/crystallizer/zaukerite id = "zaukerite" diff --git a/code/modules/atmospherics/machinery/components/unary_devices/bluespace_sender.dm b/code/modules/atmospherics/machinery/components/unary_devices/bluespace_sender.dm index 6957389c351b7..ebe053663f9e0 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/bluespace_sender.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/bluespace_sender.dm @@ -61,7 +61,8 @@ GLOBAL_LIST_EMPTY_TYPED(bluespace_senders, /obj/machinery/atmospherics/component /obj/machinery/atmospherics/components/unary/bluespace_sender/add_context(atom/source, list/context, obj/item/held_item, mob/user) . = ..() - context[SCREENTIP_CONTEXT_CTRL_LMB] = "Turn [on ? "off" : "on"]" + if(anchored && !panel_open && is_operational) + context[SCREENTIP_CONTEXT_CTRL_LMB] = "Turn [on ? "off" : "on"]" if(!held_item) return CONTEXTUAL_SCREENTIP_SET switch(held_item.tool_behaviour) @@ -156,7 +157,7 @@ GLOBAL_LIST_EMPTY_TYPED(bluespace_senders, /obj/machinery/atmospherics/component investigate_log("was turned [on ? "on" : "off"] by [key_name(user)]", INVESTIGATE_ATMOS) update_appearance() return CLICK_ACTION_SUCCESS - return CLICK_ACTION_BLOCKING + return NONE /obj/machinery/atmospherics/components/unary/bluespace_sender/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index 5d2d5f6f1f9c7..0b1e7c2768ae9 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -35,7 +35,7 @@ ///Is shielding turned on/off var/shielding_powered = FALSE ///The powercell used to enable shielding - var/obj/item/stock_parts/cell/internal_cell + var/obj/item/stock_parts/power_store/internal_cell ///used while processing to update appearance only when its pressure state changes var/current_pressure_state @@ -52,7 +52,7 @@ . = ..() if(mapload) - internal_cell = new /obj/item/stock_parts/cell/high(src) + internal_cell = new /obj/item/stock_parts/power_store/cell/high(src) if(existing_mixture) air_contents.copy_from(existing_mixture) @@ -85,7 +85,7 @@ context[SCREENTIP_CONTEXT_ALT_LMB] = "Remove tank" if(!held_item) return CONTEXTUAL_SCREENTIP_SET - if(istype(held_item, /obj/item/stock_parts/cell)) + if(istype(held_item, /obj/item/stock_parts/power_store/cell)) context[SCREENTIP_CONTEXT_LMB] = "Insert cell" switch(held_item.tool_behaviour) if(TOOL_SCREWDRIVER) @@ -367,8 +367,8 @@ internal_cell.forceMove(drop_location()) /obj/machinery/portable_atmospherics/canister/attackby(obj/item/item, mob/user, params) - if(istype(item, /obj/item/stock_parts/cell)) - var/obj/item/stock_parts/cell/active_cell = item + if(istype(item, /obj/item/stock_parts/power_store/cell)) + var/obj/item/stock_parts/power_store/cell/active_cell = item if(!panel_open) balloon_alert(user, "open hatch first!") return TRUE diff --git a/code/modules/autowiki/pages/stockparts.dm b/code/modules/autowiki/pages/stockparts.dm index fd92ecfaef476..7d2b68b236b23 100644 --- a/code/modules/autowiki/pages/stockparts.dm +++ b/code/modules/autowiki/pages/stockparts.dm @@ -3,11 +3,16 @@ page = "Template:Autowiki/Content/StockParts" var/list/battery_whitelist = list( - /obj/item/stock_parts/cell, - /obj/item/stock_parts/cell/high, - /obj/item/stock_parts/cell/super, - /obj/item/stock_parts/cell/hyper, - /obj/item/stock_parts/cell/bluespace, + /obj/item/stock_parts/power_store/cell, + /obj/item/stock_parts/power_store/cell/high, + /obj/item/stock_parts/power_store/cell/super, + /obj/item/stock_parts/power_store/cell/hyper, + /obj/item/stock_parts/power_store/cell/bluespace, + /obj/item/stock_parts/power_store/battery, + /obj/item/stock_parts/power_store/battery/high, + /obj/item/stock_parts/power_store/battery/super, + /obj/item/stock_parts/power_store/battery/hyper, + /obj/item/stock_parts/power_store/battery/bluespace, ) /datum/autowiki/stock_parts/generate() @@ -18,7 +23,7 @@ if(initial(type_to_check.abstract_type) == part_type) continue - if(!battery_whitelist.Find(part_type) && ispath(part_type, /obj/item/stock_parts/cell)) + if(!battery_whitelist.Find(part_type) && ispath(part_type, /obj/item/stock_parts/power_store)) continue var/obj/item/stock_parts/stock_part = new part_type() diff --git a/code/modules/bitrunning/components/avatar_connection.dm b/code/modules/bitrunning/components/avatar_connection.dm index b533e2b5661d6..a92e8ef3d2e6e 100644 --- a/code/modules/bitrunning/components/avatar_connection.dm +++ b/code/modules/bitrunning/components/avatar_connection.dm @@ -60,9 +60,16 @@ var/datum/action/avatar_domain_info/action = new(help_datum) action.Grant(avatar) + var/client/our_client = old_body.client + var/alias = our_client?.prefs?.read_preference(/datum/preference/name/hacker_alias) || pick(GLOB.hacker_aliases) + + if(alias && avatar.real_name != alias) + avatar.fully_replace_character_name(avatar.real_name, alias) + avatar.playsound_local(avatar, 'sound/magic/blink.ogg', 25, TRUE) avatar.set_static_vision(2 SECONDS) - avatar.set_temp_blindness(1 SECONDS) + avatar.set_temp_blindness(1 SECONDS) // I'm in + /datum/component/avatar_connection/PostTransfer() var/obj/machinery/netpod/pod = netpod_ref?.resolve() @@ -74,6 +81,7 @@ pod.avatar_ref = WEAKREF(parent) + /datum/component/avatar_connection/RegisterWithParent() ADD_TRAIT(parent, TRAIT_TEMPORARY_BODY, REF(src)) /** @@ -87,6 +95,7 @@ RegisterSignal(parent, COMSIG_LIVING_DEATH, PROC_REF(on_sever_connection)) RegisterSignal(parent, COMSIG_MOB_APPLY_DAMAGE, PROC_REF(on_linked_damage)) + /datum/component/avatar_connection/UnregisterFromParent() REMOVE_TRAIT(parent, TRAIT_TEMPORARY_BODY, REF(src)) UnregisterSignal(parent, list( @@ -98,6 +107,7 @@ COMSIG_MOB_APPLY_DAMAGE, )) + /// Disconnects the avatar and returns the mind to the old_body. /datum/component/avatar_connection/proc/full_avatar_disconnect(cause_damage = FALSE, datum/source) #ifndef UNIT_TESTS @@ -115,6 +125,7 @@ qdel(src) + /// Triggers whenever the server gets a loot crate pushed to goal area /datum/component/avatar_connection/proc/on_domain_completed(datum/source, atom/entered) SIGNAL_HANDLER @@ -127,6 +138,7 @@ new_master = entered, ) + /// Transfers damage from the avatar to the old_body /datum/component/avatar_connection/proc/on_linked_damage(datum/source, damage, damage_type, def_zone, blocked, ...) SIGNAL_HANDLER @@ -147,6 +159,7 @@ if(old_body.stat > SOFT_CRIT) // KO! full_avatar_disconnect(cause_damage = TRUE) + /// Handles minds being swapped around in subsequent avatars /datum/component/avatar_connection/proc/on_mind_transfer(datum/mind/source, mob/living/previous_body) SIGNAL_HANDLER @@ -157,6 +170,7 @@ source.current.TakeComponent(src) + /// Triggers when someone starts prying open our netpod /datum/component/avatar_connection/proc/on_netpod_crowbar(datum/source, mob/living/intruder) SIGNAL_HANDLER @@ -171,6 +185,7 @@ alert.name = "Netpod Breached" alert.desc = "Someone is prying open the netpod. Find an exit." + /// Triggers when the netpod is taking damage and is under 50% /datum/component/avatar_connection/proc/on_netpod_damaged(datum/source) SIGNAL_HANDLER @@ -184,24 +199,28 @@ alert.name = "Integrity Compromised" alert.desc = "The netpod is damaged. Find an exit." + //if your bitrunning avatar somehow manages to acquire and consume a red pill, they will be ejected from the Matrix /datum/component/avatar_connection/proc/disconnect_if_red_pill(datum/source, obj/item/reagent_containers/pill/pill, mob/feeder) SIGNAL_HANDLER if(pill.icon_state == "pill4") full_avatar_disconnect() + /// Triggers when a safe disconnect is called /datum/component/avatar_connection/proc/on_safe_disconnect(datum/source) SIGNAL_HANDLER full_avatar_disconnect() + /// Received message to sever connection /datum/component/avatar_connection/proc/on_sever_connection(datum/source) SIGNAL_HANDLER full_avatar_disconnect(cause_damage = TRUE, source = source) + /// Triggers when the server is shutting down /datum/component/avatar_connection/proc/on_shutting_down(datum/source, mob/living/hackerman) SIGNAL_HANDLER @@ -216,6 +235,7 @@ alert.name = "Domain Rebooting" alert.desc = "The domain is rebooting. Find an exit." + /// Triggers whenever an antag steps onto an exit turf and the server is emagged /datum/component/avatar_connection/proc/on_station_spawn(datum/source) SIGNAL_HANDLER @@ -230,6 +250,7 @@ alert.name = "Security Breach" alert.desc = "A hostile entity is breaching the safehouse. Find an exit." + /// Server has spawned a ghost role threat /datum/component/avatar_connection/proc/on_threat_created(datum/source) SIGNAL_HANDLER @@ -243,6 +264,7 @@ alert.name = "Threat Detected" alert.desc = "Data stream abnormalities present." + /// Returns the mind to the old body /datum/component/avatar_connection/proc/return_to_old_body() var/datum/mind/old_mind = old_mind_ref?.resolve() diff --git a/code/modules/bitrunning/server/obj_generation.dm b/code/modules/bitrunning/server/obj_generation.dm index e8dbd72228c1d..34a870a3426d5 100644 --- a/code/modules/bitrunning/server/obj_generation.dm +++ b/code/modules/bitrunning/server/obj_generation.dm @@ -76,9 +76,6 @@ var/obj/item/card/id/outfit_id = avatar.wear_id if(outfit_id) - outfit_id.assignment = "Bit Avatar" - outfit_id.registered_name = avatar.real_name - outfit_id.registered_account = new() outfit_id.registered_account.replaceable = FALSE diff --git a/code/modules/cards/singlecard.dm b/code/modules/cards/singlecard.dm index 0c228fbbb1723..300523254ed7d 100644 --- a/code/modules/cards/singlecard.dm +++ b/code/modules/cards/singlecard.dm @@ -95,7 +95,7 @@ context[SCREENTIP_CONTEXT_LMB] = "Combine cards" return CONTEXTUAL_SCREENTIP_SET - if(istype(held_item, /obj/item/toy/crayon) || istype(held_item, /obj/item/pen)) + if(IS_WRITING_UTENSIL(held_item)) context[SCREENTIP_CONTEXT_LMB] = blank ? "Write on card" : "Mark card" return CONTEXTUAL_SCREENTIP_SET diff --git a/code/modules/cargo/exports/xenobio.dm b/code/modules/cargo/exports/xenobio.dm index fdd8d38aa4fc6..4b83e97567ece 100644 --- a/code/modules/cargo/exports/xenobio.dm +++ b/code/modules/cargo/exports/xenobio.dm @@ -23,12 +23,12 @@ /datum/export/slime/charged cost = CARGO_CRATE_VALUE unit_name = "\improper EMP-proof slime core" - export_types = list(/obj/item/stock_parts/cell/emproof/slime) + export_types = list(/obj/item/stock_parts/power_store/cell/emproof/slime) /datum/export/slime/hypercharged cost = CARGO_CRATE_VALUE * 1.2 unit_name = "hypercharged slime core" - export_types = list(/obj/item/stock_parts/cell/high/slime_hypercharged) + export_types = list(/obj/item/stock_parts/power_store/cell/high/slime_hypercharged) /datum/export/slime/epic //EPIIIIIIC cost = CARGO_CRATE_VALUE * 0.44 diff --git a/code/modules/cargo/packs/engineering.dm b/code/modules/cargo/packs/engineering.dm index 98e1162b5f6a7..771cba47df61d 100644 --- a/code/modules/cargo/packs/engineering.dm +++ b/code/modules/cargo/packs/engineering.dm @@ -92,7 +92,7 @@ name = "Power Cell Crate" desc = "Looking for power overwhelming? Look no further. Contains three high-voltage power cells." cost = CARGO_CRATE_VALUE * 3 - contains = list(/obj/item/stock_parts/cell/high = 3) + contains = list(/obj/item/stock_parts/power_store/cell/high = 3) crate_name = "power cell crate" crate_type = /obj/structure/closet/crate/engineering/electrical diff --git a/code/modules/cargo/supplypod_beacon.dm b/code/modules/cargo/supplypod_beacon.dm index 8f1166002def8..2d9a618bb414e 100644 --- a/code/modules/cargo/supplypod_beacon.dm +++ b/code/modules/cargo/supplypod_beacon.dm @@ -103,7 +103,7 @@ return CLICK_ACTION_SUCCESS /obj/item/supplypod_beacon/attackby(obj/item/W, mob/user) - if(!istype(W, /obj/item/pen)) //give a tag that is visible from the linked express console + if(IS_WRITING_UTENSIL(W)) //give a tag that is visible from the linked express console return ..() var/new_beacon_name = tgui_input_text(user, "What would you like the tag to be?", "Beacon Tag", max_length = MAX_NAME_LEN) if(isnull(new_beacon_name)) diff --git a/code/modules/client/preferences/names.dm b/code/modules/client/preferences/names.dm index 9afc8da18c1aa..8456eb9a62709 100644 --- a/code/modules/client/preferences/names.dm +++ b/code/modules/client/preferences/names.dm @@ -174,3 +174,15 @@ return TRUE return FALSE + + +/// The name to use while bitrunning +/datum/preference/name/hacker_alias + explanation = "Hacker alias" + group = "bitrunning" + savefile_key = "hacker_alias" + allow_numbers = TRUE + relevant_job = /datum/job/bitrunner + +/datum/preference/name/hacker_alias/create_default_value() + return pick(GLOB.hacker_aliases) diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 807e795568821..ef90fcf97e10a 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -221,6 +221,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list( visor_flags_cover = MASKCOVERSEYES visor_vars_to_toggle = VISOR_FLASHPROTECT | VISOR_TINT resistance_flags = FIRE_PROOF + clothing_flags = parent_type::clothing_flags | INTERNALS_ADJUST_EXEMPT /datum/armor/gas_welding melee = 10 diff --git a/code/modules/clothing/spacesuits/_spacesuits.dm b/code/modules/clothing/spacesuits/_spacesuits.dm index a30156abe1f43..703000a1f9133 100644 --- a/code/modules/clothing/spacesuits/_spacesuits.dm +++ b/code/modules/clothing/spacesuits/_spacesuits.dm @@ -62,7 +62,7 @@ /// The default temperature setting var/temperature_setting = BODYTEMP_NORMAL /// If this is a path, this gets created as an object in Initialize. - var/obj/item/stock_parts/cell/cell = /obj/item/stock_parts/cell/high + var/obj/item/stock_parts/power_store/cell = /obj/item/stock_parts/power_store/cell/high /// Status of the cell cover on the suit var/cell_cover_open = FALSE /// Status of the thermal regulator @@ -185,7 +185,7 @@ // object handling for accessing features of the suit /obj/item/clothing/suit/space/attackby(obj/item/I, mob/user, params) - if(!cell_cover_open || !istype(I, /obj/item/stock_parts/cell)) + if(!cell_cover_open || !istype(I, /obj/item/stock_parts/power_store/cell)) return ..() if(cell) to_chat(user, span_warning("[src] already has a cell installed.")) diff --git a/code/modules/clothing/spacesuits/bountyhunter.dm b/code/modules/clothing/spacesuits/bountyhunter.dm index 9218deb5633fc..cb8498dac14ca 100644 --- a/code/modules/clothing/spacesuits/bountyhunter.dm +++ b/code/modules/clothing/spacesuits/bountyhunter.dm @@ -7,7 +7,7 @@ armor_type = /datum/armor/space_hunter strip_delay = 130 resistance_flags = FIRE_PROOF | ACID_PROOF - cell = /obj/item/stock_parts/cell/hyper + cell = /obj/item/stock_parts/power_store/cell/hyper /datum/armor/space_hunter melee = 60 diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm index cbacf064052db..67702582ff857 100644 --- a/code/modules/clothing/spacesuits/syndi.dm +++ b/code/modules/clothing/spacesuits/syndi.dm @@ -40,7 +40,7 @@ GLOBAL_LIST_INIT(syndicate_space_suits_to_helmets,list( w_class = WEIGHT_CLASS_NORMAL allowed = list(/obj/item/gun, /obj/item/melee/baton, /obj/item/melee/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) armor_type = /datum/armor/space_syndicate - cell = /obj/item/stock_parts/cell/hyper + cell = /obj/item/stock_parts/power_store/cell/hyper var/helmet_type = /obj/item/clothing/head/helmet/space/syndicate //Green syndicate space suit diff --git a/code/modules/deathmatch/deathmatch_loadouts.dm b/code/modules/deathmatch/deathmatch_loadouts.dm index 9e86bf9befbb7..b4c6af04304eb 100644 --- a/code/modules/deathmatch/deathmatch_loadouts.dm +++ b/code/modules/deathmatch/deathmatch_loadouts.dm @@ -653,7 +653,7 @@ shoes = /obj/item/clothing/shoes/sneakers/black gloves = /obj/item/clothing/gloves/cut l_pocket = /obj/item/reagent_containers/hypospray/medipen/methamphetamine - r_pocket = /obj/item/stock_parts/cell/high + r_pocket = /obj/item/stock_parts/power_store/cell/high belt = /obj/item/storage/belt/utility/full /datum/outfit/deathmatch_loadout/abductor diff --git a/code/modules/escape_menu/home_page.dm b/code/modules/escape_menu/home_page.dm index 5b1f76056777e..3fa89ff5d0589 100644 --- a/code/modules/escape_menu/home_page.dm +++ b/code/modules/escape_menu/home_page.dm @@ -17,7 +17,7 @@ src, "Character", /* offset = */ 2, - CALLBACK(src, PROC_REF(home_open_charater_settings)), + CALLBACK(src, PROC_REF(home_open_character_settings)), ) ) @@ -56,7 +56,7 @@ /datum/escape_menu/proc/home_resume() qdel(src) -/datum/escape_menu/proc/home_open_charater_settings() +/datum/escape_menu/proc/home_open_character_settings() client?.prefs.current_window = PREFERENCE_TAB_CHARACTER_PREFERENCES client?.prefs.update_static_data(client?.mob) client?.prefs.ui_interact(client?.mob) diff --git a/code/modules/experisci/experiment/experiments.dm b/code/modules/experisci/experiment/experiments.dm index 7a7c073b75a6a..a025d90b44f4e 100644 --- a/code/modules/experisci/experiment/experiments.dm +++ b/code/modules/experisci/experiment/experiments.dm @@ -305,7 +305,7 @@ /obj/machinery/chem_dispenser/drinks/beer = 1, /obj/machinery/power/smes = 2 ) - required_stock_part = /obj/item/stock_parts/cell/hyper + required_stock_part = /obj/item/stock_parts/power_store/cell/hyper /datum/experiment/scanning/points/machinery_pinpoint_scan/tier3_microlaser name = "Ultra-high-power Micro-lasers Calibration" diff --git a/code/modules/explorer_drone/exploration_events/trader.dm b/code/modules/explorer_drone/exploration_events/trader.dm index 626411cb93587..b686a53582d53 100644 --- a/code/modules/explorer_drone/exploration_events/trader.dm +++ b/code/modules/explorer_drone/exploration_events/trader.dm @@ -61,7 +61,7 @@ required_site_traits = list(EXPLORATION_SITE_TECHNOLOGY) band_values = list(EXOSCANNER_BAND_TECH=2) requires_translator = FALSE - required_path = /obj/item/stock_parts/cell/high + required_path = /obj/item/stock_parts/power_store/cell/high traded_path = /obj/item/storage/pill_bottle/happy amount = 3 @@ -80,7 +80,7 @@ deep_scan_description = "You spot a giant \"FRESH FISH\" sign on site." required_site_traits = list(EXPLORATION_SITE_HABITABLE,EXPLORATION_SITE_SURFACE) band_values = list(EXOSCANNER_BAND_LIFE=2) - required_path = /obj/item/stock_parts/cell/high + required_path = /obj/item/stock_parts/power_store/cell/high traded_path = /obj/item/storage/fish_case/random amount = 3 diff --git a/code/modules/explorer_drone/loot.dm b/code/modules/explorer_drone/loot.dm index b616f4dbf9926..b6aaa26c6c662 100644 --- a/code/modules/explorer_drone/loot.dm +++ b/code/modules/explorer_drone/loot.dm @@ -152,11 +152,11 @@ GLOBAL_LIST_INIT(adventure_loot_generator_index,generate_generator_index()) lefthand_file = 'icons/mob/inhands/items/firelance_lefthand.dmi' var/windup_time = 10 SECONDS var/melt_range = 3 - var/obj/item/stock_parts/cell/cell + var/obj/item/stock_parts/power_store/cell /obj/item/firelance/Initialize(mapload) . = ..() - cell = new /obj/item/stock_parts/cell(src) + cell = new /obj/item/stock_parts/power_store/cell(src) AddComponent(/datum/component/two_handed) /obj/item/firelance/attack(mob/living/M, mob/living/user, params) diff --git a/code/modules/fishing/fish/fish_types.dm b/code/modules/fishing/fish/fish_types.dm index 27d43ea7dd280..f61cb43b22424 100644 --- a/code/modules/fishing/fish/fish_types.dm +++ b/code/modules/fishing/fish/fish_types.dm @@ -316,7 +316,7 @@ random_case_rarity = FISH_RARITY_GOOD_LUCK_FINDING_THIS required_temperature_min = MIN_AQUARIUM_TEMP+10 required_temperature_max = MIN_AQUARIUM_TEMP+30 - favorite_bait = list(/obj/item/stock_parts/cell/lead) + favorite_bait = list(/obj/item/stock_parts/power_store/cell/lead) fish_traits = list( /datum/fish_trait/parthenogenesis, /datum/fish_trait/mixotroph, @@ -651,7 +651,7 @@ average_size = 30 average_weight = 500 random_case_rarity = FISH_RARITY_VERY_RARE - favorite_bait = list(/obj/item/stock_parts/cell/lead) + favorite_bait = list(/obj/item/stock_parts/power_store/cell/lead) required_temperature_min = MIN_AQUARIUM_TEMP+18 required_temperature_max = MIN_AQUARIUM_TEMP+26 fish_traits = list( diff --git a/code/modules/fishing/fishing_rod.dm b/code/modules/fishing/fishing_rod.dm index b748a5215b6a6..6ee02d6d9de4d 100644 --- a/code/modules/fishing/fishing_rod.dm +++ b/code/modules/fishing/fishing_rod.dm @@ -277,7 +277,7 @@ if(istype(bait, /obj/item/food/bait)) var/obj/item/food/bait/real_bait = bait bait_state = real_bait.rod_overlay_icon_state - if(istype(bait, /obj/item/stock_parts/cell/lead)) + if(istype(bait, /obj/item/stock_parts/power_store/cell/lead)) bait_state = "battery_overlay" . += bait_state diff --git a/code/modules/food_and_drinks/machinery/microwave.dm b/code/modules/food_and_drinks/machinery/microwave.dm index 0cb9867723455..b3233386f9789 100644 --- a/code/modules/food_and_drinks/machinery/microwave.dm +++ b/code/modules/food_and_drinks/machinery/microwave.dm @@ -53,9 +53,9 @@ /// If we use a cell instead of powernet var/cell_powered = FALSE /// The cell we charge with - var/obj/item/stock_parts/cell/cell + var/obj/item/stock_parts/power_store/cell /// The cell we're charging - var/obj/item/stock_parts/cell/vampire_cell + var/obj/item/stock_parts/power_store/vampire_cell /// Capable of vampire charging PDAs var/vampire_charging_capable = FALSE /// Charge contents of microwave instead of cook @@ -123,7 +123,7 @@ if(cell_powered) if(!isnull(cell)) context[SCREENTIP_CONTEXT_CTRL_LMB] = "Remove cell" - else if(held_item && istype(held_item, /obj/item/stock_parts/cell)) + else if(held_item && istype(held_item, /obj/item/stock_parts/power_store/cell)) context[SCREENTIP_CONTEXT_CTRL_LMB] = "Insert cell" if(held_item?.tool_behaviour == TOOL_WRENCH) @@ -385,7 +385,7 @@ return TRUE return ..() - if(istype(item, /obj/item/stock_parts/cell) && cell_powered) + if(istype(item, /obj/item/stock_parts/power_store/cell) && cell_powered) var/swapped = FALSE if(!isnull(cell)) cell.forceMove(drop_location()) @@ -903,12 +903,12 @@ /obj/machinery/microwave/engineering/Initialize(mapload) . = ..() if(mapload) - cell = new /obj/item/stock_parts/cell/upgraded/plus + cell = new /obj/item/stock_parts/power_store/cell/upgraded/plus update_appearance() /obj/machinery/microwave/engineering/cell_included/Initialize(mapload) . = ..() - cell = new /obj/item/stock_parts/cell/upgraded/plus + cell = new /obj/item/stock_parts/power_store/cell/upgraded/plus update_appearance() #undef MICROWAVE_NORMAL diff --git a/code/modules/food_and_drinks/pizzabox.dm b/code/modules/food_and_drinks/pizzabox.dm index a847b15e86161..417ac543612fd 100644 --- a/code/modules/food_and_drinks/pizzabox.dm +++ b/code/modules/food_and_drinks/pizzabox.dm @@ -228,7 +228,7 @@ return else if(bomb) balloon_alert(user, "already rigged!") - else if(istype(I, /obj/item/pen)) + else if(IS_WRITING_UTENSIL(I)) if(!open) if(!user.can_write(I)) return diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm index 67d1ca54c0028..cc27a6f078bef 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm @@ -113,7 +113,7 @@ /obj/item/food/flatdough = 1, /datum/reagent/consumable/milk = 1, /datum/reagent/consumable/cherryjelly = 5, - /obj/item/stock_parts/cell/super =1, + /obj/item/stock_parts/power_store/cell/super =1, /obj/item/melee/sabre = 1 ) result = /obj/item/food/powercrepe diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm index c0c99bbe6523b..a215ecdd750d3 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pie.dm @@ -241,7 +241,7 @@ /datum/crafting_recipe/food/bacid_pie reqs = list( /obj/item/food/pie/plain = 1, - /obj/item/stock_parts/cell = 2, + /obj/item/stock_parts/power_store/cell = 2, ) result = /obj/item/food/pie/bacid_pie category = CAT_PIE diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pizza.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pizza.dm index fd7ec3301637b..f67071a86f51e 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_pizza.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_pizza.dm @@ -104,7 +104,7 @@ /datum/crafting_recipe/food/energypizza reqs = list( /obj/item/food/flatdough = 1, - /obj/item/stock_parts/cell = 2, + /obj/item/stock_parts/power_store/cell = 2, ) result = /obj/item/food/pizza/energy/raw category = CAT_PIZZA diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index 3f47982e16ee9..791b7ac51a253 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -1088,12 +1088,12 @@ user.examinate(src) /obj/machinery/hydroponics/click_ctrl(mob/user) + if(!anchored) + return NONE if(!powered()) to_chat(user, span_warning("[name] has no power.")) update_use_power(NO_POWER_USE) return CLICK_ACTION_BLOCKING - if(!anchored) - return CLICK_ACTION_BLOCKING set_self_sustaining(!self_sustaining) to_chat(user, span_notice("You [self_sustaining ? "activate" : "deactivated"] [src]'s autogrow function[self_sustaining ? ", maintaining the tray's health while using high amounts of power" : ""].")) return CLICK_ACTION_SUCCESS diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm index b273cfb6d5854..c5861140e4e56 100644 --- a/code/modules/hydroponics/plant_genes.dm +++ b/code/modules/hydroponics/plant_genes.dm @@ -330,7 +330,7 @@ to_chat(eater, span_notice("You feel energized as you bite into [our_plant].")) var/batteries_recharged = FALSE var/obj/item/seeds/our_seed = our_plant.get_plant_seed() - for(var/obj/item/stock_parts/cell/found_cell in eater.get_all_contents()) + for(var/obj/item/stock_parts/power_store/found_cell in eater.get_all_contents()) var/newcharge = min(our_seed.potency * 0.01 * found_cell.maxcharge, found_cell.maxcharge) if(found_cell.charge < newcharge) found_cell.charge = newcharge @@ -586,7 +586,7 @@ return to_chat(user, span_notice("You add some cable to [our_plant] and slide it inside the battery encasing.")) - var/obj/item/stock_parts/cell/potato/pocell = new /obj/item/stock_parts/cell/potato(user.loc) + var/obj/item/stock_parts/power_store/cell/potato/pocell = new /obj/item/stock_parts/power_store/cell/potato(user.loc) pocell.icon = our_plant.icon // Just in case the plant icons get spread out in different files eventually, this trait won't cause error sprites (also yay downstreams) pocell.icon_state = our_plant.icon_state pocell.maxcharge = our_seed.potency * 0.02 * STANDARD_CELL_CHARGE diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index f46f4c3912a0f..fefd4d999387f 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -462,7 +462,7 @@ return /obj/item/seeds/attackby(obj/item/O, mob/user, params) - if(istype(O, /obj/item/pen)) + if(IS_WRITING_UTENSIL(O)) var/choice = tgui_input_list(usr, "What would you like to change?", "Seed Alteration", list("Plant Name", "Seed Description", "Product Description")) if(isnull(choice)) return diff --git a/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm b/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm index 0a037482bc1fd..f204518acc53b 100644 --- a/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm +++ b/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm @@ -89,55 +89,8 @@ . += span_cult_italic("It has the blood of [num_slain] fallen cultist[num_slain == 1 ? "" : "s"] on it. \ Offering it to Nar'sie will transform it into a [num_slain >= 3 ? "powerful" : "standard"] cult weapon.") -/obj/item/nullrod/godhand - name = "god hand" - desc = "This hand of yours glows with an awesome power!" - icon = 'icons/obj/weapons/hand.dmi' - icon_state = "disintegrate" - inhand_icon_state = "disintegrate" - lefthand_file = 'icons/mob/inhands/items/touchspell_lefthand.dmi' - righthand_file = 'icons/mob/inhands/items/touchspell_righthand.dmi' - slot_flags = null - item_flags = ABSTRACT | DROPDEL - w_class = WEIGHT_CLASS_HUGE - hitsound = 'sound/weapons/sear.ogg' - damtype = BURN - attack_verb_continuous = list("punches", "cross counters", "pummels") - attack_verb_simple = list(SFX_PUNCH, "cross counter", "pummel") - menu_description = "An undroppable god hand dealing burn damage. Disappears if the arm holding it is cut off." - -/obj/item/nullrod/godhand/Initialize(mapload) - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT) - -/obj/item/nullrod/staff - name = "red holy staff" - desc = "It has a mysterious, protective aura." - icon = 'icons/obj/weapons/staff.dmi' - icon_state = "godstaff-red" - inhand_icon_state = "godstaff-red" - lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' - w_class = WEIGHT_CLASS_HUGE - force = 5 - slot_flags = ITEM_SLOT_BACK - block_chance = 50 - block_sound = 'sound/weapons/genhit.ogg' - menu_description = "A red staff which provides a medium chance of blocking incoming attacks via a protective red aura around its user, but deals very low amount of damage. Can be worn only on the back." - /// The icon which appears over the mob holding the item - var/shield_icon = "shield-red" - -/obj/item/nullrod/staff/worn_overlays(mutable_appearance/standing, isinhands) - . = ..() - if(isinhands) - . += mutable_appearance('icons/effects/effects.dmi', shield_icon, MOB_SHIELD_LAYER) - -/obj/item/nullrod/staff/blue - name = "blue holy staff" - icon_state = "godstaff-blue" - inhand_icon_state = "godstaff-blue" - shield_icon = "shield-old" - menu_description = "A blue staff which provides a medium chance of blocking incoming attacks via a protective blue aura around its user, but deals very low amount of damage. Can be worn only on the back." +/// Claymore Variant +/// This subtype possesses a block chance and is sharp. /obj/item/nullrod/claymore name = "holy claymore" @@ -249,27 +202,8 @@ inhand_icon_state = "e_cutlass_on" worn_icon_state = "swordred" -/obj/item/nullrod/sord - name = "\improper UNREAL SORD" - desc = "This thing is so unspeakably HOLY you are having a hard time even holding it." - icon = 'icons/obj/weapons/sword.dmi' - icon_state = "sord" - inhand_icon_state = "sord" - worn_icon_state = "sord" - lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - force = 4.13 - throwforce = 1 - slot_flags = ITEM_SLOT_BELT - hitsound = 'sound/weapons/bladeslice.ogg' - attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts") - attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut") - menu_description = "An odd s(w)ord dealing a laughable amount of damage. Fits in pockets. Can be worn on the belt." - -/obj/item/nullrod/sord/suicide_act(mob/living/user) //a near-exact copy+paste of the actual sord suicide_act() - user.visible_message(span_suicide("[user] is trying to impale [user.p_them()]self with [src]! It might be a suicide attempt if it weren't so HOLY."), \ - span_suicide("You try to impale yourself with [src], but it's TOO HOLY...")) - return SHAME +/// Vibro Variant +/// This subtype possesses armor penetration and is sharp. /obj/item/nullrod/vibro name = "high frequency blade" @@ -342,6 +276,89 @@ toolspeed = 0.5 //same speed as an active chainsaw chaplain_spawnable = FALSE //prevents being pickable as a chaplain weapon (it has 30 force) +/// Other Variants +/// Not a special category on their own, but usually possess more unique mechanics + +// God Hand - Cannot be dropped. Does burn damage. + +/obj/item/nullrod/godhand + name = "god hand" + desc = "This hand of yours glows with an awesome power!" + icon = 'icons/obj/weapons/hand.dmi' + icon_state = "disintegrate" + inhand_icon_state = "disintegrate" + lefthand_file = 'icons/mob/inhands/items/touchspell_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items/touchspell_righthand.dmi' + slot_flags = null + item_flags = ABSTRACT | DROPDEL + w_class = WEIGHT_CLASS_HUGE + hitsound = 'sound/weapons/sear.ogg' + damtype = BURN + attack_verb_continuous = list("punches", "cross counters", "pummels") + attack_verb_simple = list(SFX_PUNCH, "cross counter", "pummel") + menu_description = "An undroppable god hand dealing burn damage. Disappears if the arm holding it is cut off." + +/obj/item/nullrod/godhand/Initialize(mapload) + . = ..() + ADD_TRAIT(src, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT) + +// Red/Blue Holy Staff - 50% block chance, almost no damage at all. + +/obj/item/nullrod/staff + name = "red holy staff" + desc = "It has a mysterious, protective aura." + icon = 'icons/obj/weapons/staff.dmi' + icon_state = "godstaff-red" + inhand_icon_state = "godstaff-red" + lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' + w_class = WEIGHT_CLASS_HUGE + force = 5 + slot_flags = ITEM_SLOT_BACK + block_chance = 50 + block_sound = 'sound/weapons/genhit.ogg' + menu_description = "A red staff which provides a medium chance of blocking incoming attacks via a protective red aura around its user, but deals very low amount of damage. Can be worn only on the back." + /// The icon which appears over the mob holding the item + var/shield_icon = "shield-red" + +/obj/item/nullrod/staff/worn_overlays(mutable_appearance/standing, isinhands) + . = ..() + if(isinhands) + . += mutable_appearance('icons/effects/effects.dmi', shield_icon, MOB_SHIELD_LAYER) + +/obj/item/nullrod/staff/blue + name = "blue holy staff" + icon_state = "godstaff-blue" + inhand_icon_state = "godstaff-blue" + shield_icon = "shield-old" + menu_description = "A blue staff which provides a medium chance of blocking incoming attacks via a protective blue aura around its user, but deals very low amount of damage. Can be worn only on the back." + +// SORD - It is unspeakably shitty. + +/obj/item/nullrod/sord + name = "\improper UNREAL SORD" + desc = "This thing is so unspeakably HOLY you are having a hard time even holding it." + icon = 'icons/obj/weapons/sword.dmi' + icon_state = "sord" + inhand_icon_state = "sord" + worn_icon_state = "sord" + lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' + force = 4.13 + throwforce = 1 + slot_flags = ITEM_SLOT_BELT + hitsound = 'sound/weapons/bladeslice.ogg' + attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts") + attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut") + menu_description = "An odd s(w)ord dealing a laughable amount of damage. Fits in pockets. Can be worn on the belt." + +/obj/item/nullrod/sord/suicide_act(mob/living/user) //a near-exact copy+paste of the actual sord suicide_act() + user.visible_message(span_suicide("[user] is trying to impale [user.p_them()]self with [src]! It might be a suicide attempt if it weren't so HOLY."), \ + span_suicide("You try to impale yourself with [src], but it's TOO HOLY...")) + return SHAME + +// Relic War Hammer - Nothing special. + /obj/item/nullrod/hammer name = "relic war hammer" desc = "This war hammer cost the chaplain forty thousand space dollars." @@ -360,6 +377,8 @@ . = ..() AddElement(/datum/element/kneejerk) +// Chainsaw Hand - Cannot be dropped. + /obj/item/nullrod/chainsaw name = "chainsaw hand" desc = "Good? Bad? You're the guy with the chainsaw hand." @@ -389,6 +408,8 @@ butcher_sound = hitsound, \ ) +// Clown Dagger - Nothing special, just honks. + /obj/item/nullrod/clown name = "clown dagger" desc = "Used for absolutely hilarious sacrifices." @@ -404,6 +425,8 @@ attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut") menu_description = "A sharp dagger. Fits in pockets. Can be worn on the belt. Honk." +// Pride-struck Hammer - Transfers reagents in your body to those you hit. + #define CHEMICAL_TRANSFER_CHANCE 30 /obj/item/nullrod/pride_hammer @@ -436,6 +459,8 @@ #undef CHEMICAL_TRANSFER_CHANCE +// Holy Whip - Does more damage to vampires. + /obj/item/nullrod/whip name = "holy whip" desc = "What a terrible night to be on Space Station 13." @@ -451,6 +476,8 @@ hitsound = 'sound/weapons/chainhit.ogg' menu_description = "A whip. Deals extra damage to vampires. Fits in pockets. Can be worn on the belt." +// Atheist's Fedora - Wear it on your head. No melee damage, massive throw force. + /obj/item/nullrod/fedora name = "atheist's fedora" desc = "The brim of the hat is as sharp as your wit. The edge would hurt almost as much as disproving the existence of God." @@ -474,6 +501,8 @@ user.visible_message(span_suicide("[user] is killing [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to get further from god!")) return (BRUTELOSS|FIRELOSS) +// Dark Blessing - Replaces your arm with an armblade. Cannot be dropped. + /obj/item/nullrod/armblade name = "dark blessing" desc = "Particularly twisted deities grant gifts of dubious value." @@ -498,12 +527,16 @@ effectiveness = 70, \ ) +// Unholy Blessing - Just a reskinned dark blessing. + /obj/item/nullrod/armblade/tentacle name = "unholy blessing" icon_state = "tentacle" inhand_icon_state = "tentacle" menu_description = "An undroppable sharp tentacle capable of inflicting deep wounds. Capable of an ineffective butchering of bodies. Disappears if the arm holding it is cut off." +// Carp-sie Plushie - Gives you the carp faction so that you can be friends with carp. + /obj/item/nullrod/carp name = "carp-sie plushie" desc = "An adorable stuffed toy that resembles the god of all carp. The teeth look pretty sharp. Activate it to receive the blessing of Carp-Sie." @@ -525,7 +558,9 @@ . = ..() AddComponent(/datum/component/faction_granter, FACTION_CARP, holy_role_required = HOLY_ROLE_PRIEST, grant_message = span_boldnotice("You are blessed by Carp-Sie. Wild space carp will no longer attack you.")) -/obj/item/nullrod/claymore/bostaff //May as well make it a "claymore" and inherit the blocking +// Monk's Staff - Higher block, lower damage. + +/obj/item/nullrod/bostaff name = "monk's staff" desc = "A long, tall staff made of polished wood. Traditionally used in ancient old-Earth martial arts, it is now used to harass the clown." force = 15 @@ -533,7 +568,6 @@ block_sound = 'sound/weapons/genhit.ogg' slot_flags = ITEM_SLOT_BACK w_class = WEIGHT_CLASS_BULKY - sharpness = NONE hitsound = SFX_SWING_HIT attack_verb_continuous = list("smashes", "slams", "whacks", "thwacks") attack_verb_simple = list("smash", "slam", "whack", "thwack") @@ -543,7 +577,9 @@ worn_icon_state = "bostaff0" lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' - menu_description = "A staff which provides a medium-low chance of blocking incoming melee attacks and deals a little less damage due to being made of wood. Can be worn on the back." + menu_description = "A staff which provides a medium-low chance of blocking incoming melee attacks and deals a little less damage. Can be worn on the back." + +// Arrhythmic Knife - Lets your walk without rhythm by varying your walk speed. Can't be put away. /obj/item/nullrod/tribal_knife name = "arrhythmic knife" @@ -581,6 +617,8 @@ if(wielder.is_holding(src)) wielder.update_equipment_speed_mods() +// Unholy Pitchfork - Does absolutely nothing special, it is just bigger. + /obj/item/nullrod/pitchfork name = "unholy pitchfork" desc = "Holding this makes you look absolutely devilish." @@ -598,6 +636,8 @@ sharpness = SHARP_EDGED menu_description = "A sharp pitchfork. Can be worn on the back." +// Egyptian Staff - Used as a tool for making mummy wraps. + /obj/item/nullrod/egyptian name = "egyptian staff" desc = "A tutorial in mummification is carved into the staff. You could probably craft the wraps if you had some cloth." @@ -613,6 +653,8 @@ attack_verb_simple = list("bash", "smack", "whack") menu_description = "A staff. Can be used as a tool to craft exclusive egyptian items. Easily stored. Can be worn on the back." +// Hypertool - It does brain damage rather than normal damage. + /obj/item/nullrod/hypertool name = "hypertool" desc = "A tool so powerful even you cannot perfectly use it." @@ -630,6 +672,8 @@ hitsound = 'sound/effects/sparks4.ogg' menu_description = "A tool dealing brain damage which partially penetrates armor. Fits in pockets. Can be worn on the belt." +// Ancient Spear - Slight armor penetration, based on the Brass Spear from the Clockcult game mode. + /obj/item/nullrod/spear name = "ancient spear" desc = "An ancient spear made of brass, I mean gold, I mean bronze. It looks highly mechanical." @@ -646,3 +690,174 @@ attack_verb_simple = list("stab", "poke", "slash", "clock") hitsound = 'sound/weapons/bladeslice.ogg' menu_description = "A pointy spear which penetrates armor a little. Can be worn only on the belt." + +// Nullblade - For when you really want to feel like rolling dice during combat + +/obj/item/nullrod/nullblade + name = "nullblade" + desc = "Clerical assassins are not officially recognized by the collective faiths of Nanotrasen. And yet, here you are." + icon = 'icons/obj/weapons/sword.dmi' + icon_state = "nullsword" + inhand_icon_state = "nullsword" + worn_icon_state = "nullsword" + lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' + w_class = WEIGHT_CLASS_BULKY + force = 12 + wound_bonus = 10 + bare_wound_bonus = 30 + slot_flags = ITEM_SLOT_BELT + block_sound = 'sound/weapons/parry.ogg' + sharpness = SHARP_POINTY + hitsound = 'sound/weapons/bladeslice.ogg' + attack_verb_continuous = list("attacks", "punctures", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts") + attack_verb_simple = list("attack", "puncture", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut") + menu_description = "A blade that deals variable, low amounts of damage, but does easily inflict wounds. \ + The stronger your swinging arm is, the stronger the blade is, though only slightly. \ + Against debilitated targets, can also deal additional sneak attack damage with a very high wound chance." + +/obj/item/nullrod/nullblade/melee_attack_chain(mob/user, atom/target, params) + //Track our actual force separately + var/old_force = force + force = 0 + //Potential dice roll for our baseline force + force += roll("1d6") + + //Now we can check for our user's potential 'strength' value. As a baseline, we'll use a default value of 4 for the sake of nonhuman users. + var/strength_value = 4 + + //We can use our human wielder's arm strength to determine their 'strength'. We add unarmed lower and upper, then divide by four. + //This isn't how strength works in dnd but who fucking cares. + if(ishuman(user)) + var/mob/living/carbon/human/human_user = user + var/obj/item/bodypart/wielding_bodypart = human_user.get_active_hand() + strength_value = round((wielding_bodypart.unarmed_damage_low + wielding_bodypart.unarmed_damage_high) * 0.25, 1) + + force += strength_value + + //If our old_force is higher than our initial force, add the difference to this calculation. + //We do this because our force could have been changed by things like whetstones and RPG stats. + force += old_force - initial(force) + + . = ..() + //Reapply our old force. + force = old_force + +/obj/item/nullrod/nullblade/afterattack(atom/target, mob/user, click_parameters) + if(!isliving(target)) + return + + var/mob/living/living_target = target + + if(user == living_target) + return + + if(living_target.stat == DEAD) + return + + sneak_attack(living_target, user) + +/// If our target is incapacitated, unable to protect themselves, or we attack them from behind, we sneak attack! +/obj/item/nullrod/nullblade/proc/sneak_attack(mob/living/living_target, mob/user) + // Did we successfully meet the criteria for a sneak attack? + var/successful_sneak_attack = FALSE + + // Did our sneak attack fail due to a special effect? + var/sneak_attack_fail_message = FALSE + + // The force our sneak attack applies. Starts as 3d6, then changed based on certain factors. + var/sneak_attack_dice = roll("3d6") + + // Status effects on the target that grant us sneak attacks + if(living_target.is_blind()) + successful_sneak_attack = TRUE + + else if(living_target.get_timed_status_effect_duration(/datum/status_effect/staggered)) + successful_sneak_attack = TRUE + + else if(living_target.get_timed_status_effect_duration(/datum/status_effect/confusion)) + successful_sneak_attack = TRUE + + // Our target is in some kind of grapple, which prevents them form protecting themselves. + else if(living_target.pulledby && living_target.pulledby.grab_state >= GRAB_AGGRESSIVE) + successful_sneak_attack = TRUE + + // traits that render you unable to defend yourself properly from an attack + else if(HAS_TRAIT(living_target, TRAIT_SPINNING) || HAS_TRAIT(living_target, TRAIT_HANDS_BLOCKED)) + successful_sneak_attack = TRUE + + // We'll take "same tile" as "behind" for ease + else if(living_target.loc == user.loc) + successful_sneak_attack = TRUE + + // We'll also assume lying down is vulnerable, as mob directions when lying are unclear and you have trouble defending yourself from prone + else if(living_target.body_position == LYING_DOWN) + successful_sneak_attack = TRUE + + // Now check for if we're behind + var/dir_living_target_to_user = get_dir(living_target, user) + if(living_target.dir & REVERSE_DIR(dir_living_target_to_user)) + successful_sneak_attack = TRUE + + /// Now we'll check for things that STOP a sneak attack. Why? Because this mechanic isn't complicated enough and I must insert more ivory tower design. + + if(living_target.mob_biotypes & MOB_SLIME) // SLIMES HAVE NO ANATOMY. + successful_sneak_attack = FALSE + sneak_attack_fail_message = TRUE + + else if(living_target.incorporeal_move >= 1 && !HAS_TRAIT(living_target, TRAIT_REVENANT_REVEALED)) // WE CAN'T SNEAK ATTACK INCORPOREAL JERKS. BUT WE CAN SNEAK ATTACK REVEALED REVENANTS BECAUSE DUH, NULLROD. + successful_sneak_attack = FALSE + sneak_attack_fail_message = TRUE + + else if(IS_HERETIC_MONSTER(living_target) && prob(50)) // IT IS HARD TO SNEAK ATTACK SOMETHING WITH TOO MANY REDUNDANT EVERYTHINGS. + successful_sneak_attack = FALSE + sneak_attack_fail_message = TRUE + + else if(HAS_TRAIT(living_target, TRAIT_STABLEHEART) && prob(50)) // THEIR ANATOMY IS FUCKING WEIRD. + successful_sneak_attack = FALSE + sneak_attack_fail_message = TRUE + + else if(HAS_TRAIT(living_target, TRAIT_MIND_READER) && !user.can_block_magic(MAGIC_RESISTANCE_MIND, charge_cost = 0)) // FORESIGHT SAYS 'FUCK YOU' TO SNEAK ATTACKERS. BUT IF YOU HAVE A TIN FOIL HAT, YOU'RE SAFE! + successful_sneak_attack = FALSE + sneak_attack_fail_message = TRUE + + else if(user.is_blind()) // YOU CAN'T STAB PRECISELY WHAT YOU CAN'T SEE. + successful_sneak_attack = FALSE + sneak_attack_fail_message = TRUE + + /// And so we return here if we are not entitled to a sneak attack. + if(!successful_sneak_attack) + if(sneak_attack_fail_message) + user.balloon_alert(living_target, "sneak attack avoided!") + return + + /// And now we'll deal with sneak attack damage modifiers. + + // If our target is also unconscious for some reason, we get even more damage. Coup de grace, motherfucker. + if(HAS_TRAIT(living_target, TRAIT_KNOCKEDOUT)) + sneak_attack_dice += roll("1d6") + new /obj/effect/temp_visual/crit(get_turf(living_target)) + + // If the target is rebuked, we also add some additional damage. It is the closest thing to 'studying' your target, okay? + if(living_target.has_status_effect(/datum/status_effect/rebuked)) + sneak_attack_dice += 2 + + // If we're morbid, and the target has been dissected, we get an extra d6. + // The chances of this occuring are quite low, as even having this weapon means you're locked out of becoming morbid as a chaplain, but when it does come up... + // Or the coroner stole this blade to go hunt the recently dead... + if(HAS_TRAIT(user, TRAIT_MORBID) && HAS_TRAIT(living_target, TRAIT_DISSECTED)) + sneak_attack_dice += roll("1d6") + + // Baton + this weapon might be a little too much fun so we're nerfing this combination outright. + if(HAS_TRAIT(living_target, TRAIT_IWASBATONED)) + sneak_attack_dice *= 0.5 + + // Affecting body part check. + var/obj/item/bodypart/affecting = living_target.get_bodypart(user.get_random_valid_zone(user.zone_selected)) + // Target's armor value. Accounts for armor penetration even though we have no armour_penetration defined on the parent. + var/armor_block = living_target.run_armor_check(affecting, MELEE, armour_penetration = armour_penetration) + + // We got a sneak attack! + living_target.apply_damage(round(sneak_attack_dice, DAMAGE_PRECISION), BRUTE, def_zone = affecting, blocked = armor_block, wound_bonus = bare_wound_bonus, sharpness = SHARP_EDGED) + living_target.balloon_alert(user, "sneak attack!") + playsound(living_target, 'sound/weapons/guillotine.ogg', 50, TRUE) diff --git a/code/modules/jobs/job_types/station_trait/human_ai.dm b/code/modules/jobs/job_types/station_trait/human_ai.dm index 2b13e1adae8a0..0768505b66553 100644 --- a/code/modules/jobs/job_types/station_trait/human_ai.dm +++ b/code/modules/jobs/job_types/station_trait/human_ai.dm @@ -21,7 +21,7 @@ paycheck = null paycheck_department = null - mind_traits = list(DISPLAYS_JOB_IN_BINARY) + mind_traits = list(TRAIT_DISPLAY_JOB_IN_BINARY) liver_traits = list(TRAIT_HUMAN_AI_METABOLISM) departments_list = list( diff --git a/code/modules/library/book.dm b/code/modules/library/book.dm index 19b65f82489ea..5ae9afcdcbe49 100644 --- a/code/modules/library/book.dm +++ b/code/modules/library/book.dm @@ -101,7 +101,7 @@ if(burn_paper_product_attackby_check(attacking_item, user)) return - if(istype(attacking_item, /obj/item/pen)) + if(IS_WRITING_UTENSIL(attacking_item)) if(!user.can_perform_action(src) || !user.can_write(attacking_item)) return if(user.is_blind()) diff --git a/code/modules/library/bookcase.dm b/code/modules/library/bookcase.dm index 822e4ae583c97..16925dd5138e7 100644 --- a/code/modules/library/bookcase.dm +++ b/code/modules/library/bookcase.dm @@ -130,7 +130,7 @@ atom_storage.attempt_remove(T, src) to_chat(user, span_notice("You empty \the [I] into \the [src].")) update_appearance() - else if(istype(I, /obj/item/pen)) + else if(IS_WRITING_UTENSIL(I)) if(!user.can_perform_action(src) || !user.can_write(I)) return var/newname = tgui_input_text(user, "What would you like to title this bookshelf?", "Bookshelf Renaming", max_length = MAX_NAME_LEN) diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index 2a4137da0c8a0..a65159a3f8225 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -688,11 +688,22 @@ GLOBAL_VAR_INIT(library_table_modified, 0) icon = 'icons/obj/service/library.dmi' icon_state = "bigscanner" desc = "It's an industrial strength book scanner. Perfect!" + circuit = /obj/item/circuitboard/machine/libraryscanner density = TRUE var/obj/item/book/held_book ///Our scanned-in book var/datum/book_info/cache +/obj/machinery/libraryscanner/screwdriver_act(mob/living/user, obj/item/tool) + . = ..() + if(default_deconstruction_screwdriver(user, "bigscanner2", "bigscanner", tool)) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/libraryscanner/crowbar_act(mob/living/user, obj/item/tool) + . = ..() + if(default_deconstruction_crowbar(tool)) + return ITEM_INTERACT_SUCCESS + /obj/machinery/libraryscanner/Destroy() held_book = null cache = null @@ -760,6 +771,7 @@ GLOBAL_VAR_INIT(library_table_modified, 0) icon = 'icons/obj/service/library.dmi' icon_state = "binder" desc = "Only intended for binding paper products." + circuit = /obj/item/circuitboard/machine/bookbinder density = TRUE /// Are we currently binding a book? @@ -768,10 +780,15 @@ GLOBAL_VAR_INIT(library_table_modified, 0) /// Name of the author for the book, set by scanning your ID. var/scanned_name -/obj/machinery/bookbinder/wrench_act(mob/living/user, obj/item/tool) +/obj/machinery/bookbinder/screwdriver_act(mob/living/user, obj/item/tool) + . = ..() + if(default_deconstruction_screwdriver(user, "binder2", "binder", tool)) + return ITEM_INTERACT_SUCCESS + +/obj/machinery/bookbinder/crowbar_act(mob/living/user, obj/item/tool) . = ..() - default_unfasten_wrench(user, tool) - return ITEM_INTERACT_SUCCESS + if(default_deconstruction_crowbar(tool)) + return ITEM_INTERACT_SUCCESS /obj/machinery/bookbinder/attackby(obj/hitby, mob/user, params) if(istype(hitby, /obj/item/paper)) diff --git a/code/modules/mob/living/basic/bots/_bots.dm b/code/modules/mob/living/basic/bots/_bots.dm index 03dc06dcda549..22ab453226912 100644 --- a/code/modules/mob/living/basic/bots/_bots.dm +++ b/code/modules/mob/living/basic/bots/_bots.dm @@ -517,8 +517,8 @@ GLOBAL_LIST_INIT(command_strings, list( item_to_drop = drop_item item_to_drop.forceMove(dropzone) - if(istype(item_to_drop, /obj/item/stock_parts/cell)) - var/obj/item/stock_parts/cell/dropped_cell = item_to_drop + if(istype(item_to_drop, /obj/item/stock_parts/power_store/cell)) + var/obj/item/stock_parts/power_store/cell/dropped_cell = item_to_drop dropped_cell.charge = 0 dropped_cell.update_appearance() return @@ -814,6 +814,11 @@ GLOBAL_LIST_INIT(command_strings, list( /mob/living/basic/bot/spawn_gibs(drop_bitflags = NONE) new /obj/effect/gibspawner/robot(drop_location(), src) +/mob/living/basic/bot/get_hit_area_message(input_area) + // we just get hit, there's no complexity for hitting an arm (if it exists) or anything. + // we also need to return an empty string as otherwise it would falsely say that we get hit in the chest or something strange like that (bots don't have "chests") + return "" + /mob/living/basic/bot/proc/on_bot_movement(atom/movable/source, atom/oldloc, dir, forced) return diff --git a/code/modules/mob/living/basic/bots/vibebot/vibebot.dm b/code/modules/mob/living/basic/bots/vibebot/vibebot.dm new file mode 100644 index 0000000000000..c872e1ea5959c --- /dev/null +++ b/code/modules/mob/living/basic/bots/vibebot/vibebot.dm @@ -0,0 +1,30 @@ +/mob/living/basic/bot/vibebot + name = "\improper Vibebot" + desc = "A little robot. It's just vibing, doing its thing." + icon = 'icons/mob/silicon/aibots.dmi' + icon_state = "vibebot1" + base_icon_state = "vibebot" + pass_flags = PASSMOB | PASSFLAPS + light_system = OVERLAY_LIGHT + light_range = 6 + ai_controller = /datum/ai_controller/basic_controller/bot/vibebot + light_power = 2 + + hackables = "vibing scanners" + radio_key = /obj/item/encryptionkey/headset_service + radio_channel = RADIO_CHANNEL_SERVICE + bot_type = VIBE_BOT + data_hud_type = DATA_HUD_DIAGNOSTIC_BASIC + path_image_color = "#2cac12" + possessed_message = "You are a vibebot! Maintain the station's vibes to the best of your ability!" + +/mob/living/basic/bot/vibebot/Initialize(mapload) + . = ..() + var/static/list/innate_actions = list( + /datum/action/cooldown/mob_cooldown/bot/vibe = BB_VIBEBOT_PARTY_ABILITY, + ) + + grant_actions_by_list(innate_actions) + var/obj/item/instrument/piano_synth/piano = new(src) + ai_controller.set_blackboard_key(BB_SONG_INSTRUMENT, piano) + update_appearance(UPDATE_ICON) diff --git a/code/modules/mob/living/basic/bots/vibebot/vibebot_abilities.dm b/code/modules/mob/living/basic/bots/vibebot/vibebot_abilities.dm new file mode 100644 index 0000000000000..b3fcec9813b0b --- /dev/null +++ b/code/modules/mob/living/basic/bots/vibebot/vibebot_abilities.dm @@ -0,0 +1,59 @@ +/** + * Vibebot's vibe ability + * + * Given to vibebots so sentient ones can change/reset thier colors at will. + */ +#define VIBE_MOOD_TIMER 30 SECONDS +/datum/action/cooldown/mob_cooldown/bot/vibe + name = "Vibe" + desc = "Use on yourself to remove color!" + click_to_activate = TRUE + button_icon = 'icons/mob/actions/actions_minor_antag.dmi' + button_icon_state = "funk" + ///cooldown to apply a new mood + COOLDOWN_DECLARE(change_mood) + +/datum/action/cooldown/mob_cooldown/bot/vibe/Grant(mob/granted_to) + . = ..() + if(isnull(granted_to)) + return + RegisterSignal(granted_to, COMSIG_BOT_RESET, PROC_REF(remove_colors)) + +/datum/action/cooldown/mob_cooldown/bot/vibe/Activate(atom/target) + if(target == owner) + remove_colors() + return TRUE + vibe() + StartCooldown() + return TRUE + +///Gives a random color +/datum/action/cooldown/mob_cooldown/bot/vibe/proc/vibe() + var/mob/living/basic/bot/bot_owner = owner + var/final_color = (bot_owner.bot_access_flags & BOT_COVER_EMAGGED) ? COLOR_GRAY : "#[random_color()]" + owner.remove_atom_colour(TEMPORARY_COLOUR_PRIORITY) + owner.add_atom_colour(final_color, TEMPORARY_COLOUR_PRIORITY) + owner.set_light_color(owner.color) + if(!COOLDOWN_FINISHED(src, change_mood)) + return + var/mood_to_add = bot_owner.bot_access_flags & BOT_COVER_EMAGGED ? /datum/mood_event/depressing_party : /datum/mood_event/festive_party + for(var/mob/living/carbon/human/human_target in oview(1, owner)) + human_target.add_mood_event("vibebot_party", mood_to_add) + COOLDOWN_START(src, change_mood, VIBE_MOOD_TIMER) + +///Removes all colors +/datum/action/cooldown/mob_cooldown/bot/vibe/proc/remove_colors() + owner.remove_atom_colour(TEMPORARY_COLOUR_PRIORITY) + owner.set_light_color(null) + +/datum/mood_event/depressing_party + description = "That was a really grim party..." + mood_change = -1 + timeout = 30 SECONDS + +/datum/mood_event/festive_party + description = "That was a really fantastic party!" + mood_change = 2 + timeout = 30 SECONDS + +#undef VIBE_MOOD_TIMER diff --git a/code/modules/mob/living/basic/bots/vibebot/vibebot_ai.dm b/code/modules/mob/living/basic/bots/vibebot/vibebot_ai.dm new file mode 100644 index 0000000000000..945b09274d783 --- /dev/null +++ b/code/modules/mob/living/basic/bots/vibebot/vibebot_ai.dm @@ -0,0 +1,88 @@ +/datum/ai_controller/basic_controller/bot/vibebot + blackboard = list( + BB_UNREACHABLE_LIST_COOLDOWN = 2 MINUTES, + BB_VIBEBOT_HAPPY_SONG = VIBEBOT_CHEER_SONG, + BB_VIBEBOT_GRIM_SONG = VIBEBOT_GRIM_MUSIC, + BB_VIBEBOT_BIRTHDAY_SONG = VIBEBOT_HAPPY_BIRTHDAY, + ) + planning_subtrees = list( + /datum/ai_planning_subtree/respond_to_summon, + /datum/ai_planning_subtree/manage_unreachable_list, + /datum/ai_planning_subtree/find_party_friends, + /datum/ai_planning_subtree/find_patrol_beacon, + ) + reset_keys = list( + BB_BEACON_TARGET, + BB_PREVIOUS_BEACON_TARGET, + BB_VIBEBOT_PARTY_TARGET, + BB_BOT_SUMMON_TARGET, + ) + ai_traits = PAUSE_DURING_DO_AFTER + +/datum/ai_controller/basic_controller/bot/vibebot/TryPossessPawn(atom/new_pawn) + . = ..() + if(. & AI_CONTROLLER_INCOMPATIBLE) + return + RegisterSignal(new_pawn, COMSIG_AI_BLACKBOARD_KEY_SET(BB_VIBEBOT_PARTY_TARGET), PROC_REF(play_music)) + +/datum/ai_controller/basic_controller/bot/vibebot/proc/play_music(datum/source, blackboard_key) + SIGNAL_HANDLER + + var/mob/living/basic/bot/living_bot = pawn + var/obj/item/instrument/instrument = blackboard[BB_SONG_INSTRUMENT] + if(isnull(instrument)) + return + var/atom/target = blackboard[blackboard_key] + var/datum/song/song = instrument.song + song.stop_playing() + var/song_lines + if(living_bot.bot_access_flags & BOT_COVER_EMAGGED) + song_lines = blackboard[BB_VIBEBOT_GRIM_SONG] + else + song_lines = HAS_TRAIT(target, TRAIT_BIRTHDAY_BOY) ? blackboard[BB_VIBEBOT_BIRTHDAY_SONG] : blackboard[BB_VIBEBOT_HAPPY_SONG] + if(isnull(song_lines)) + return + song.ParseSong(new_song = song_lines) + song.start_playing(pawn) + addtimer(CALLBACK(song, TYPE_PROC_REF(/datum/song, stop_playing)), 10 SECONDS) //in 10 seconds, stop playing music + +///subtree we use to find party friends in general +/datum/ai_planning_subtree/find_party_friends + +/datum/ai_planning_subtree/find_party_friends/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick) + var/static/list/type_to_search = typecacheof(list(/mob/living/carbon/human)) + if(!controller.blackboard_key_exists(BB_VIBEBOT_PARTY_TARGET)) + controller.queue_behavior(/datum/ai_behavior/bot_search/party_friends, BB_VIBEBOT_PARTY_TARGET, type_to_search) + return + + controller.queue_behavior(/datum/ai_behavior/targeted_mob_ability/and_clear_target/vibebot_party, BB_VIBEBOT_PARTY_ABILITY, BB_VIBEBOT_PARTY_TARGET) + return SUBTREE_RETURN_FINISH_PLANNING + +///behavior we use to party with people +/datum/ai_behavior/targeted_mob_ability/and_clear_target/vibebot_party + behavior_flags = AI_BEHAVIOR_REQUIRE_REACH | AI_BEHAVIOR_REQUIRE_MOVEMENT + +/datum/ai_behavior/targeted_mob_ability/and_clear_target/vibebot_party/setup(datum/ai_controller/controller, ability_key, target_key) + . = ..() + var/atom/target = controller.blackboard[target_key] + if(QDELETED(target)) + return FALSE + set_movement_target(controller, target) + +/datum/ai_behavior/targeted_mob_ability/and_clear_target/vibebot_party/finish_action(datum/ai_controller/controller, succeeded, ability_key, target_key) + var/atom/target = controller.blackboard[target_key] + controller.set_blackboard_key_assoc_lazylist(BB_TEMPORARY_IGNORE_LIST, target, TRUE) + if(succeeded) + var/mob/living/living_pawn = controller.pawn + living_pawn.manual_emote("celebrates with [target]!") + living_pawn.emote("flip") + return ..() + +///behavior that searches for party friends +/datum/ai_behavior/bot_search/party_friends + action_cooldown = 5 SECONDS + +/datum/ai_behavior/bot_search/party_friends/valid_target(datum/ai_controller/basic_controller/bot/controller, mob/living/carbon/human/my_target) + if(my_target.stat != CONSCIOUS || isnull(my_target.mind)) + return FALSE + return (my_target.mob_mood.mood_level < MOOD_LEVEL_NEUTRAL || HAS_TRAIT(my_target, TRAIT_BIRTHDAY_BOY)) diff --git a/code/modules/mob/living/basic/festivus_pole.dm b/code/modules/mob/living/basic/festivus_pole.dm index 838674c081124..1c1a88dd31fe5 100644 --- a/code/modules/mob/living/basic/festivus_pole.dm +++ b/code/modules/mob/living/basic/festivus_pole.dm @@ -68,8 +68,8 @@ return visible_message(span_warning("[src] crackles with static electricity!")) for(var/atom/affected in range(2, get_turf(src))) - if(istype(affected, /obj/item/stock_parts/cell)) - var/obj/item/stock_parts/cell/cell = affected + if(istype(affected, /obj/item/stock_parts/power_store/cell)) + var/obj/item/stock_parts/power_store/cell/cell = affected cell.give(FESTIVUS_RECHARGE_VALUE) cell.update_appearance() if(istype(affected, /mob/living/silicon/robot)) @@ -112,7 +112,7 @@ var/obj/machinery/power/apc/apc_target = dinner if(!apc_target.cell) return FALSE - var/obj/item/stock_parts/cell/apc_cell = apc_target.cell + var/obj/item/stock_parts/power_store/cell/apc_cell = apc_target.cell if(apc_cell.charge == apc_cell.maxcharge) //if its full charge we no longer feed it return FALSE diff --git a/code/modules/mob/living/basic/icemoon/wolf/wolf_ai.dm b/code/modules/mob/living/basic/icemoon/wolf/wolf_ai.dm index f0809d2ec86da..423a33bb4767a 100644 --- a/code/modules/mob/living/basic/icemoon/wolf/wolf_ai.dm +++ b/code/modules/mob/living/basic/icemoon/wolf/wolf_ai.dm @@ -7,7 +7,12 @@ BB_BASIC_MOB_FLEE_DISTANCE = 30, BB_VISION_RANGE = 9, BB_TARGET_MINIMUM_STAT = HARD_CRIT, - BB_REINFORCEMENTS_EMOTE = "unleashes a chilling howl, calling for aid!" + BB_REINFORCEMENTS_EMOTE = "unleashes a chilling howl, calling for aid!", + BB_OWNER_SELF_HARM_RESPONSES = list( + "*me howls in dissaproval.", + "*me whines sadly.", + "*me attempts to take your hand in its mouth." + ) ) ai_movement = /datum/ai_movement/basic_avoidance diff --git a/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm b/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm index d2b282f5b6235..8cd3c567a7d2d 100644 --- a/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm +++ b/code/modules/mob/living/basic/lavaland/raptor/_raptor.dm @@ -83,7 +83,7 @@ GLOBAL_LIST_EMPTY(raptor_population) var/static/list/display_emote = list( BB_EMOTE_SAY = list("Chirp chirp chirp!", "Kweh!", "Bwark!"), - BB_EMOTE_SEE = list("shakes its feathers!", "stretches!", "flaps it's wings!", "pecks at the ground!"), + BB_EMOTE_SEE = list("shakes its feathers!", "stretches!", "flaps its wings!", "pecks at the ground!"), BB_EMOTE_SOUND = list( 'sound/creatures/raptor_1.ogg', 'sound/creatures/raptor_2.ogg', diff --git a/code/modules/mob/living/basic/minebots/minebot_ai.dm b/code/modules/mob/living/basic/minebots/minebot_ai.dm index 959049f957d73..62aeaf3aa7923 100644 --- a/code/modules/mob/living/basic/minebots/minebot_ai.dm +++ b/code/modules/mob/living/basic/minebots/minebot_ai.dm @@ -9,6 +9,13 @@ BB_MINEBOT_AUTO_DEFEND = TRUE, BB_BLACKLIST_MINERAL_TURFS = list(/turf/closed/mineral/gibtonite), BB_AUTOMATED_MINING = FALSE, + BB_OWNER_SELF_HARM_RESPONSES = list( + "Please stop hurting yourself.", + "There is no need to do that.", + "Your actions are illogical.", + "Please make better choices.", + "Remember, you have beaten your worst days before." + ) ) ai_movement = /datum/ai_movement/basic_avoidance diff --git a/code/modules/mob/living/basic/slime/life.dm b/code/modules/mob/living/basic/slime/life.dm index 68cd33ce7750b..d101b48fea7a1 100644 --- a/code/modules/mob/living/basic/slime/life.dm +++ b/code/modules/mob/living/basic/slime/life.dm @@ -36,10 +36,10 @@ ///Handles the consumption of nutrition, and growth /mob/living/basic/slime/proc/handle_nutrition(seconds_per_tick = SSMOBS_DT) if(hunger_disabled) //God as my witness, I will never go hungry again - set_nutrition(700) + set_nutrition(100) return - if(SPT_PROB(7.5, seconds_per_tick)) + if(SPT_PROB(1.25, seconds_per_tick)) adjust_nutrition((life_stage == SLIME_LIFE_STAGE_ADULT ? -1 : -0.5) * seconds_per_tick) if(nutrition < SLIME_STARVE_NUTRITION) @@ -63,7 +63,7 @@ if (SLIME_GROW_NUTRITION <= nutrition) if(amount_grown < SLIME_EVOLUTION_THRESHOLD) - adjust_nutrition(-10 * seconds_per_tick) + adjust_nutrition(-2.5 * seconds_per_tick) amount_grown++ if(powerlevel < SLIME_MAX_POWER && SPT_PROB(30-powerlevel*2, seconds_per_tick)) diff --git a/code/modules/mob/living/basic/space_fauna/space_dragon/space_dragon.dm b/code/modules/mob/living/basic/space_fauna/space_dragon/space_dragon.dm index 2286f65b79758..1776e69358139 100644 --- a/code/modules/mob/living/basic/space_fauna/space_dragon/space_dragon.dm +++ b/code/modules/mob/living/basic/space_fauna/space_dragon/space_dragon.dm @@ -4,7 +4,7 @@ #define DOAFTER_SOURCE_SPACE_DRAGON_INTERACTION "space dragon interaction" /** - * Advanced stage of the space carp life cycle, spawned as a midround antagonist or via traitor transformation. + * Advanced stage of the space carp life cycle, spawned as a midround antagonist * Can eat corpses to heal, blow people back with its wings, and obviously as a dragon it breathes fire. It can even tear through walls. * The midround even version also creates rifts which summon carp, and heals when near them. */ @@ -47,6 +47,9 @@ death_message = "screeches in agony as it collapses to the floor, its life extinguished." butcher_results = list(/obj/item/stack/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/bone = 30) can_buckle_to = FALSE + lighting_cutoff_red = 12 + lighting_cutoff_green = 15 + lighting_cutoff_blue = 34 /// The colour of the space dragon var/chosen_colour diff --git a/code/modules/mob/living/basic/vermin/cockroach.dm b/code/modules/mob/living/basic/vermin/cockroach.dm index 224c716153960..0680de631cbae 100644 --- a/code/modules/mob/living/basic/vermin/cockroach.dm +++ b/code/modules/mob/living/basic/vermin/cockroach.dm @@ -68,6 +68,10 @@ blackboard = list( BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic, BB_PET_TARGETING_STRATEGY = /datum/targeting_strategy/basic/not_friends, + BB_OWNER_SELF_HARM_RESPONSES = list( + "*me waves its antennae in disapproval.", + "*me chitters sadly." + ) ) ai_traits = STOP_MOVING_WHEN_PULLED diff --git a/code/modules/mob/living/basic/vermin/frog.dm b/code/modules/mob/living/basic/vermin/frog.dm index 65b5dcbb277b9..a674169dbd5ce 100644 --- a/code/modules/mob/living/basic/vermin/frog.dm +++ b/code/modules/mob/living/basic/vermin/frog.dm @@ -111,6 +111,10 @@ blackboard = list( BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic, BB_PET_TARGETING_STRATEGY = /datum/targeting_strategy/basic/not_friends, + BB_OWNER_SELF_HARM_RESPONSES = list( + "*me licks its own eyeballs in disapproval.", + "*me croaks sadly." + ) ) ai_movement = /datum/ai_movement/basic_avoidance diff --git a/code/modules/mob/living/basic/vermin/mouse.dm b/code/modules/mob/living/basic/vermin/mouse.dm index f951b8c4898fc..3cce5e3481784 100644 --- a/code/modules/mob/living/basic/vermin/mouse.dm +++ b/code/modules/mob/living/basic/vermin/mouse.dm @@ -416,6 +416,11 @@ BB_BASIC_MOB_CURRENT_TARGET = null, // heathen BB_CURRENT_HUNTING_TARGET = null, // cheese BB_LOW_PRIORITY_HUNTING_TARGET = null, // cable + BB_OWNER_SELF_HARM_RESPONSES = list( + "*me cleans its whiskers in disapproval.", + "*me squeaks sadly.", + "*me sheds a single small tear." + ) ) ai_traits = STOP_MOVING_WHEN_PULLED diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 19e4b7a43deb6..b1efa734321c5 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -292,8 +292,8 @@ return toggle_open_internals(tank, is_external) // Use mask in absence of tube. if(isclothing(wear_mask) && ((wear_mask.visor_flags & MASKINTERNALS) || (wear_mask.clothing_flags & MASKINTERNALS))) - // Adjust dishevelled breathing mask back onto face. - if (wear_mask.up) + // Adjust dishevelled breathing mask back onto face unless it is exempt. + if ((wear_mask.up) && !(wear_mask.clothing_flags & INTERNALS_ADJUST_EXEMPT)) wear_mask.adjust_visor(src) return toggle_open_internals(tank, is_external) // Use helmet in absence of tube or valid mask. diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index 68175333519a1..67358fa912a3b 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -679,7 +679,7 @@ if(!can_run_emote(user, TRUE, intentional)) return FALSE - if(is_banned_from(user.ckey, "Emote")) + if(!isnull(user.ckey) && is_banned_from(user.ckey, "Emote")) to_chat(user, span_boldwarning("You cannot send custom emotes (banned).")) return FALSE diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index df15d979836b6..54fce885a8056 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1333,16 +1333,16 @@ // Note - AI's and borgs have the MOBILITY_UI bitflag set even though they don't have hands // Also if it is not set, the mob could be incapcitated, knocked out, unconscious, asleep, EMP'd, etc. if(!(mobility_flags & MOBILITY_UI) && !(action_bitflags & ALLOW_RESTING)) - to_chat(src, span_warning("You can't do that right now!")) + to_chat(src, span_warning("You don't have the mobility for this!")) return FALSE // NEED_HANDS is already checked by MOBILITY_UI for humans so this is for silicons if((action_bitflags & NEED_HANDS)) if(HAS_TRAIT(src, TRAIT_HANDS_BLOCKED)) - to_chat(src, span_warning("You can't do that right now!")) + to_chat(src, span_warning("You hands are blocked for this action!")) return FALSE if(!can_hold_items(isitem(target) ? target : null)) // almost redundant if it weren't for mobs - to_chat(src, span_warning("You don't have the physical ability to do this!")) + to_chat(src, span_warning("You don't have the hands for this action!")) return FALSE if(!(action_bitflags & BYPASS_ADJACENCY) && !recursive_loc_check(src, target) && !CanReach(target)) diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index acc49dd572145..0b844a2362afb 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -3,6 +3,7 @@ hud_possible = list(HEALTH_HUD,STATUS_HUD,ANTAG_HUD) pressure_resistance = 10 hud_type = /datum/hud/living + interaction_flags_mouse_drop = ALLOW_RESTING ///Tracks the current size of the mob in relation to its original size. Use update_transform(resize) to change it. var/current_size = RESIZE_DEFAULT_SIZE diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm index 70e7d8b34ab25..2346c36ba5c03 100644 --- a/code/modules/mob/living/silicon/robot/robot_defense.dm +++ b/code/modules/mob/living/silicon/robot/robot_defense.dm @@ -22,7 +22,7 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real to_chat(user, span_warning("The wires seem fine, there's no need to fix them.")) return - if(istype(W, /obj/item/stock_parts/cell) && opened) // trying to put a cell inside + if(istype(W, /obj/item/stock_parts/power_store/cell) && opened) // trying to put a cell inside if(wiresexposed) to_chat(user, span_warning("Close the cover first!")) else if(cell) diff --git a/code/modules/mob/living/silicon/robot/robot_defines.dm b/code/modules/mob/living/silicon/robot/robot_defines.dm index 0701584476cd2..48995a1582e66 100644 --- a/code/modules/mob/living/silicon/robot/robot_defines.dm +++ b/code/modules/mob/living/silicon/robot/robot_defines.dm @@ -40,7 +40,7 @@ ///Used for deconstruction to remember what the borg was constructed out of. var/obj/item/robot_suit/robot_suit = null ///If this is a path, this gets created as an object in Initialize. - var/obj/item/stock_parts/cell/cell = /obj/item/stock_parts/cell/high + var/obj/item/stock_parts/power_store/cell = /obj/item/stock_parts/power_store/cell/high ///If the lamp isn't broken. var/lamp_functional = TRUE @@ -202,7 +202,7 @@ Your cyborg LMG will slowly produce ammunition from your power supply, and your operative pinpointer will find and locate fellow nuclear operatives. \ Help the operatives secure the disk at all costs!" set_model = /obj/item/robot_model/syndicate - cell = /obj/item/stock_parts/cell/hyper + cell = /obj/item/stock_parts/power_store/cell/hyper radio = /obj/item/radio/borg/syndicate /mob/living/silicon/robot/model/syndicate/Initialize(mapload) diff --git a/code/modules/mob/living/silicon/robot/robot_model.dm b/code/modules/mob/living/silicon/robot/robot_model.dm index 1721d6ec2c102..4fc4bd5d8c15d 100644 --- a/code/modules/mob/living/silicon/robot/robot_model.dm +++ b/code/modules/mob/living/silicon/robot/robot_model.dm @@ -53,9 +53,17 @@ var/list/ride_offset_y = list("north" = 4, "south" = 4, "east" = 3, "west" = 3) ///List of skins the borg can be reskinned to, optional var/list/borg_skins + ///Omnitoolbox, holder of certain borg tools. Not all models have one + var/obj/item/cyborg_omnitoolbox/toolbox + ///Path to toolbox, if a model gets one + var/toolbox_path /obj/item/robot_model/Initialize(mapload) . = ..() + + if(toolbox_path) + toolbox = new toolbox_path(src) + for(var/path in basic_modules) var/obj/item/new_module = new path(src) basic_modules += new_module @@ -398,6 +406,7 @@ model_select_icon = "engineer" model_traits = list(TRAIT_NEGATES_GRAVITY) hat_offset = -4 + toolbox_path = /obj/item/cyborg_omnitoolbox/engineering /obj/item/robot_model/janitor name = "Janitor" @@ -678,6 +687,7 @@ /obj/item/reagent_containers/syringe, /obj/item/borg/cyborg_omnitool/medical, /obj/item/borg/cyborg_omnitool/medical, + /obj/item/surgical_drapes/cyborg, /obj/item/blood_filter, /obj/item/extinguisher/mini, /obj/item/emergency_bed/silicon, @@ -695,6 +705,7 @@ model_select_icon = "medical" model_traits = list(TRAIT_PUSHIMMUNE) hat_offset = 3 + toolbox_path = /obj/item/cyborg_omnitoolbox/medical borg_skins = list( "Machinified Doctor" = list(SKIN_ICON_STATE = "medical"), "Qualified Doctor" = list(SKIN_ICON_STATE = "qualified_doctor"), @@ -877,6 +888,7 @@ /obj/item/healthanalyzer, /obj/item/borg/cyborg_omnitool/medical, /obj/item/borg/cyborg_omnitool/medical, + /obj/item/surgical_drapes/cyborg, /obj/item/blood_filter, /obj/item/melee/energy/sword/cyborg/saw, /obj/item/emergency_bed/silicon, @@ -892,6 +904,7 @@ model_select_icon = "malf" model_traits = list(TRAIT_PUSHIMMUNE) hat_offset = 3 + toolbox_path = /obj/item/cyborg_omnitoolbox/medical /obj/item/robot_model/saboteur name = "Syndicate Saboteur" @@ -921,6 +934,7 @@ model_select_icon = "malf" model_traits = list(TRAIT_PUSHIMMUNE, TRAIT_NEGATES_GRAVITY) hat_offset = -4 + toolbox_path = /obj/item/cyborg_omnitoolbox/engineering canDispose = TRUE /obj/item/robot_model/syndicate/kiltborg diff --git a/code/modules/mob/living/silicon/silicon_say.dm b/code/modules/mob/living/silicon/silicon_say.dm index b1b8b4bc88010..1468b9c736591 100644 --- a/code/modules/mob/living/silicon/silicon_say.dm +++ b/code/modules/mob/living/silicon/silicon_say.dm @@ -8,7 +8,7 @@ var/mob/living/silicon/player = src designation = trim_left(player.designation + " " + player.job) - if(HAS_TRAIT(mind, DISPLAYS_JOB_IN_BINARY)) + if(HAS_TRAIT(mind, TRAIT_DISPLAY_JOB_IN_BINARY)) designation = mind.assigned_role.title if(isAI(src)) diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index 944a00af9b63e..48d83da80a9c1 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -555,8 +555,8 @@ item_to_drop = drop_item item_to_drop.forceMove(dropzone) - if(istype(item_to_drop, /obj/item/stock_parts/cell)) - var/obj/item/stock_parts/cell/dropped_cell = item_to_drop + if(istype(item_to_drop, /obj/item/stock_parts/power_store/cell)) + var/obj/item/stock_parts/power_store/cell/dropped_cell = item_to_drop dropped_cell.charge = 0 dropped_cell.update_appearance() @@ -1215,3 +1215,8 @@ Pass a positive integer as an argument to override a bot's default speed. /mob/living/simple_animal/bot/spawn_gibs(drop_bitflags = NONE) new /obj/effect/gibspawner/robot(drop_location(), src) + +/mob/living/simple_animal/bot/get_hit_area_message(input_area) + // we just get hit, there's no complexity for hitting an arm (if it exists) or anything. + // we also need to return an empty string as otherwise it would falsely say that we get hit in the chest or something strange like that (bots don't have "chests") + return "" diff --git a/code/modules/mob/living/simple_animal/bot/construction.dm b/code/modules/mob/living/simple_animal/bot/construction.dm index 7d4565b46f4fb..a349ca6499598 100644 --- a/code/modules/mob/living/simple_animal/bot/construction.dm +++ b/code/modules/mob/living/simple_animal/bot/construction.dm @@ -12,7 +12,7 @@ /obj/item/bot_assembly/attackby(obj/item/I, mob/user, params) ..() - if(istype(I, /obj/item/pen)) + if(IS_WRITING_UTENSIL(I)) rename_bot() return diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm index 7a205da5c089f..39db78fdffb1d 100644 --- a/code/modules/mob/living/simple_animal/bot/mulebot.dm +++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm @@ -52,7 +52,7 @@ var/auto_pickup = TRUE /// true if auto-pickup at beacon var/report_delivery = TRUE /// true if bot will announce an arrival to a location. - var/obj/item/stock_parts/cell/cell /// Internal Powercell + var/obj/item/stock_parts/power_store/cell /// Internal Powercell var/cell_move_power_usage = 1///How much power we use when we move. var/num_steps = 0 ///The amount of steps we should take until we rest for a time. @@ -78,7 +78,7 @@ access_card.add_access(cargo_trim.access + cargo_trim.wildcard_access) prev_access = access_card.access.Copy() - cell = new /obj/item/stock_parts/cell/upgraded(src, 2000) + cell = new /obj/item/stock_parts/power_store/cell/upgraded(src, 2000) AddElement(/datum/element/ridable, /datum/component/riding/creature/mulebot) diag_hud_set_mulebotcell() @@ -181,7 +181,7 @@ return ITEM_INTERACT_SUCCESS /mob/living/simple_animal/bot/mulebot/attackby(obj/item/I, mob/living/user, params) - if(istype(I, /obj/item/stock_parts/cell) && bot_cover_flags & BOT_COVER_MAINTS_OPEN) + if(istype(I, /obj/item/stock_parts/power_store/cell) && bot_cover_flags & BOT_COVER_MAINTS_OPEN) if(cell) to_chat(user, span_warning("[src] already has a power cell!")) return TRUE @@ -638,7 +638,7 @@ if(load) // if loaded, unload at target if(report_delivery) - speak("Destination [destination] reached. Unloading [load].",radio_channel) + speak("Destination [RUNECHAT_BOLD("[destination]")] reached. Unloading [load].",radio_channel) unload(loaddir) else // not loaded @@ -654,7 +654,7 @@ if(AM?.Adjacent(src)) load(AM) if(report_delivery) - speak("Now loading [load] at [get_area_name(src)].", radio_channel) + speak("Now loading [load] at [RUNECHAT_BOLD("[get_area_name(src)]")].", radio_channel) // whatever happened, check to see if we return home if(auto_return && home_destination && destination != home_destination) diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index ba0e10484d81d..7448f6d34bc79 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -121,7 +121,7 @@ /mob/living/simple_animal/bot/secbot/beepsky/explode() var/atom/Tsec = drop_location() - new /obj/item/stock_parts/cell/potato(Tsec) + new /obj/item/stock_parts/power_store/cell/potato(Tsec) var/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass/drinking_oil = new(Tsec) drinking_oil.reagents.add_reagent(/datum/reagent/consumable/ethanol/whiskey, 15) return ..() @@ -262,7 +262,7 @@ if(HAS_TRAIT(user, TRAIT_PACIFISM)) user.visible_message(span_notice("[user] taunts [src], daring [p_them()] to give chase!"), \ span_notice("You taunt [src], daring [p_them()] to chase you!"), span_hear("You hear someone shout a daring taunt!"), DEFAULT_MESSAGE_RANGE, user) - speak("Taunted by pacifist scumbag [user] in [get_area(src)].", radio_channel) + speak("Taunted by pacifist scumbag [RUNECHAT_BOLD("[user]")] in [get_area(src)].", radio_channel) // Interrupt the attack chain. We've already handled this scenario for pacifists. return @@ -374,7 +374,7 @@ log_combat(src, current_target, "stunned") if(security_mode_flags & SECBOT_DECLARE_ARRESTS) var/area/location = get_area(src) - speak("[security_mode_flags & SECBOT_HANDCUFF_TARGET ? "Arresting" : "Detaining"] level [threat] scumbag [current_target] in [location].", radio_channel) + speak("[security_mode_flags & SECBOT_HANDCUFF_TARGET ? "Arresting" : "Detaining"] level [threat] scumbag [RUNECHAT_BOLD("[current_target]")] in [location].", radio_channel) current_target.visible_message(span_danger("[src] stuns [current_target]!"),\ span_userdanger("[src] stuns you!")) diff --git a/code/modules/mob/living/simple_animal/bot/vibebot.dm b/code/modules/mob/living/simple_animal/bot/vibebot.dm deleted file mode 100644 index 582b1b5371da5..0000000000000 --- a/code/modules/mob/living/simple_animal/bot/vibebot.dm +++ /dev/null @@ -1,97 +0,0 @@ -/mob/living/simple_animal/bot/vibebot - name = "\improper Vibebot" - desc = "A little robot. It's just vibing, doing its thing." - icon = 'icons/mob/silicon/aibots.dmi' - icon_state = "vibebot1" - base_icon_state = "vibebot" - density = FALSE - anchored = FALSE - health = 25 - maxHealth = 25 - pass_flags = PASSMOB | PASSFLAPS - light_system = OVERLAY_LIGHT - light_range = 6 - light_power = 2 - - hackables = "vibing scanners" - radio_key = /obj/item/encryptionkey/headset_service - radio_channel = RADIO_CHANNEL_SERVICE - bot_type = VIBE_BOT - data_hud_type = DATA_HUD_DIAGNOSTIC_BASIC - path_image_color = "#2cac12" - possessed_message = "You are a vibebot! Maintain the station's vibes to the best of your ability!" - - ///The vibe ability given to vibebots, so sentient ones can still change their color. - var/datum/action/innate/vibe/vibe_ability - -/mob/living/simple_animal/bot/vibebot/Initialize(mapload) - . = ..() - vibe_ability = new(src) - vibe_ability.Grant(src) - update_appearance(UPDATE_ICON) - -/mob/living/simple_animal/bot/vibebot/Destroy() - QDEL_NULL(vibe_ability) - return ..() - -/mob/living/simple_animal/bot/vibebot/handle_automated_action() - . = ..() - if(!.) - return - - if(bot_mode_flags & BOT_MODE_ON) - vibe_ability.Trigger() - - if(!(bot_mode_flags & BOT_MODE_AUTOPATROL)) - return - - switch(mode) - if(BOT_IDLE, BOT_START_PATROL) - start_patrol() - if(BOT_PATROL) - bot_patrol() - -/mob/living/simple_animal/bot/vibebot/turn_off() - vibe_ability.remove_colors() - return ..() - -/** - * Vibebot's vibe ability - * - * Given to vibebots so sentient ones can change/reset thier colors at will. - */ -/datum/action/innate/vibe - name = "Vibe" - desc = "LMB: Change vibe color. RMB: Reset vibe color." - button_icon = 'icons/mob/actions/actions_minor_antag.dmi' - button_icon_state = "funk" - -/datum/action/innate/vibe/IsAvailable(feedback = FALSE) - . = ..() - if(!.) - return FALSE - if(isbot(owner)) - var/mob/living/simple_animal/bot/bot_mob = owner - if(!(bot_mob.bot_mode_flags & BOT_MODE_ON)) - return FALSE - return TRUE - -/datum/action/innate/vibe/Trigger(trigger_flags) - . = ..() - if(!.) - return - if(trigger_flags & TRIGGER_SECONDARY_ACTION) - remove_colors() - else - vibe() - -///Gives a random color -/datum/action/innate/vibe/proc/vibe() - owner.remove_atom_colour(TEMPORARY_COLOUR_PRIORITY) - owner.add_atom_colour("#[random_color()]", TEMPORARY_COLOUR_PRIORITY) - owner.set_light_color(owner.color) - -///Removes all colors -/datum/action/innate/vibe/proc/remove_colors() - owner.remove_atom_colour(TEMPORARY_COLOUR_PRIORITY) - owner.set_light_color(null) diff --git a/code/modules/mob/mob_say.dm b/code/modules/mob/mob_say.dm index 7caa4489095ff..568aee6690292 100644 --- a/code/modules/mob/mob_say.dm +++ b/code/modules/mob/mob_say.dm @@ -181,7 +181,7 @@ var/customsaypos = findtext(message, "*") if(!customsaypos) return message - if (is_banned_from(ckey, "Emote")) + if (!isnull(ckey) && is_banned_from(ckey, "Emote")) return copytext(message, customsaypos + 1) mods[MODE_CUSTOM_SAY_EMOTE] = copytext(message, 1, customsaypos) message = copytext(message, customsaypos + 1) diff --git a/code/modules/mod/mod_control.dm b/code/modules/mod/mod_control.dm index c386f7f51c634..734cc6ba2510d 100644 --- a/code/modules/mod/mod_control.dm +++ b/code/modules/mod/mod_control.dm @@ -358,7 +358,7 @@ return NONE /obj/item/mod/control/get_cell() - var/obj/item/stock_parts/cell/cell = get_charge_source() + var/obj/item/stock_parts/power_store/cell = get_charge_source() if(!istype(cell)) return null return cell diff --git a/code/modules/mod/mod_core.dm b/code/modules/mod/mod_core.dm index e62be77fe557e..70f95297b9404 100644 --- a/code/modules/mod/mod_core.dm +++ b/code/modules/mod/mod_core.dm @@ -85,7 +85,7 @@ Which one you have in your suit is unclear, but either way, \ it's been repurposed to be an internal power source for a Modular Outerwear Device." /// Installed cell. - var/obj/item/stock_parts/cell/cell + var/obj/item/stock_parts/power_store/cell /obj/item/mod/core/standard/Destroy() QDEL_NULL(cell) @@ -114,15 +114,15 @@ return cell /obj/item/mod/core/standard/charge_amount() - var/obj/item/stock_parts/cell/charge_source = charge_source() + var/obj/item/stock_parts/power_store/charge_source = charge_source() return charge_source?.charge || 0 /obj/item/mod/core/standard/max_charge_amount(amount) - var/obj/item/stock_parts/cell/charge_source = charge_source() + var/obj/item/stock_parts/power_store/charge_source = charge_source() return charge_source?.maxcharge || 1 /obj/item/mod/core/standard/add_charge(amount) - var/obj/item/stock_parts/cell/charge_source = charge_source() + var/obj/item/stock_parts/power_store/charge_source = charge_source() if(isnull(charge_source)) return FALSE . = charge_source.give(amount) @@ -131,7 +131,7 @@ return . /obj/item/mod/core/standard/subtract_charge(amount) - var/obj/item/stock_parts/cell/charge_source = charge_source() + var/obj/item/stock_parts/power_store/charge_source = charge_source() if(isnull(charge_source)) return FALSE . = charge_source.use(amount, TRUE) @@ -209,7 +209,7 @@ /obj/item/mod/core/standard/proc/on_attackby(datum/source, obj/item/attacking_item, mob/user) SIGNAL_HANDLER - if(istype(attacking_item, /obj/item/stock_parts/cell)) + if(istype(attacking_item, /obj/item/stock_parts/power_store/cell)) if(!mod.open) mod.balloon_alert(user, "open the cover first!") playsound(mod, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) @@ -239,7 +239,7 @@ /obj/item/mod/core/standard/proc/on_borg_charge(datum/source, datum/callback/charge_cell, seconds_per_tick) SIGNAL_HANDLER - var/obj/item/stock_parts/cell/target_cell = charge_source() + var/obj/item/stock_parts/power_store/target_cell = charge_source() if(isnull(target_cell)) return diff --git a/code/modules/mod/mod_link.dm b/code/modules/mod/mod_link.dm index 40a0fb94f17f7..5733d48f45f6f 100644 --- a/code/modules/mod/mod_link.dm +++ b/code/modules/mod/mod_link.dm @@ -140,7 +140,7 @@ icon_state = "modlink" actions_types = list(/datum/action/item_action/call_link) /// The installed power cell. - var/obj/item/stock_parts/cell/cell + var/obj/item/stock_parts/power_store/cell /// The MODlink datum we operate. var/datum/mod_link/mod_link /// Initial frequency of the MODlink. @@ -203,7 +203,7 @@ /obj/item/clothing/neck/link_scryer/attackby(obj/item/attacked_by, mob/user, params) . = ..() - if(cell || !istype(attacked_by, /obj/item/stock_parts/cell)) + if(cell || !istype(attacked_by, /obj/item/stock_parts/power_store/cell)) return if(!user.transferItemToLoc(attacked_by, src)) return @@ -311,7 +311,7 @@ /obj/item/clothing/neck/link_scryer/loaded/Initialize(mapload) . = ..() - cell = new /obj/item/stock_parts/cell/high(src) + cell = new /obj/item/stock_parts/power_store/cell/high(src) /obj/item/clothing/neck/link_scryer/loaded/charlie starting_frequency = MODLINK_FREQ_CHARLIE diff --git a/code/modules/mod/mod_types.dm b/code/modules/mod/mod_types.dm index 539237fa3e801..d6465960beb28 100644 --- a/code/modules/mod/mod_types.dm +++ b/code/modules/mod/mod_types.dm @@ -5,7 +5,7 @@ /// The MOD core we apply to the suit. var/applied_core = /obj/item/mod/core/standard /// The cell we apply to the core. Only applies to standard core suits. - var/applied_cell = /obj/item/stock_parts/cell/high + var/applied_cell = /obj/item/stock_parts/power_store/cell/high /// List of modules we spawn with. var/list/applied_modules = list() /// Modules that we pin when the suit is installed for the first time, for convenience, can be applied or theme inbuilt modules. @@ -82,7 +82,7 @@ /obj/item/mod/control/pre_equipped/advanced theme = /datum/mod_theme/advanced - applied_cell = /obj/item/stock_parts/cell/super + applied_cell = /obj/item/stock_parts/power_store/cell/super applied_modules = list( /obj/item/mod/module/storage/large_capacity, /obj/item/mod/module/welding, @@ -139,7 +139,7 @@ /obj/item/mod/control/pre_equipped/rescue theme = /datum/mod_theme/rescue - applied_cell = /obj/item/stock_parts/cell/super + applied_cell = /obj/item/stock_parts/power_store/cell/super applied_modules = list( /obj/item/mod/module/storage/large_capacity, /obj/item/mod/module/flashlight, @@ -149,7 +149,7 @@ /obj/item/mod/control/pre_equipped/research theme = /datum/mod_theme/research - applied_cell = /obj/item/stock_parts/cell/super + applied_cell = /obj/item/stock_parts/power_store/cell/super applied_modules = list( /obj/item/mod/module/storage/large_capacity, /obj/item/mod/module/welding, @@ -174,7 +174,7 @@ /obj/item/mod/control/pre_equipped/safeguard theme = /datum/mod_theme/safeguard - applied_cell = /obj/item/stock_parts/cell/super + applied_cell = /obj/item/stock_parts/power_store/cell/super applied_modules = list( /obj/item/mod/module/storage/large_capacity, /obj/item/mod/module/magnetic_harness, @@ -192,7 +192,7 @@ /obj/item/mod/control/pre_equipped/magnate theme = /datum/mod_theme/magnate - applied_cell = /obj/item/stock_parts/cell/hyper + applied_cell = /obj/item/stock_parts/power_store/cell/hyper applied_modules = list( /obj/item/mod/module/storage/large_capacity, /obj/item/mod/module/hat_stabilizer, @@ -218,7 +218,7 @@ /obj/item/mod/control/pre_equipped/traitor theme = /datum/mod_theme/syndicate starting_frequency = MODLINK_FREQ_SYNDICATE - applied_cell = /obj/item/stock_parts/cell/super + applied_cell = /obj/item/stock_parts/power_store/cell/super applied_modules = list( /obj/item/mod/module/storage/syndicate, /obj/item/mod/module/shock_absorber, @@ -239,7 +239,7 @@ /obj/item/mod/control/pre_equipped/traitor_elite theme = /datum/mod_theme/elite starting_frequency = MODLINK_FREQ_SYNDICATE - applied_cell = /obj/item/stock_parts/cell/bluespace + applied_cell = /obj/item/stock_parts/power_store/cell/bluespace applied_modules = list( /obj/item/mod/module/storage/syndicate, /obj/item/mod/module/shock_absorber, @@ -261,7 +261,7 @@ /obj/item/mod/control/pre_equipped/nuclear theme = /datum/mod_theme/syndicate starting_frequency = MODLINK_FREQ_SYNDICATE - applied_cell = /obj/item/stock_parts/cell/hyper + applied_cell = /obj/item/stock_parts/power_store/cell/hyper req_access = list(ACCESS_SYNDICATE) applied_modules = list( /obj/item/mod/module/storage/syndicate, @@ -298,7 +298,7 @@ /obj/item/mod/control/pre_equipped/elite theme = /datum/mod_theme/elite starting_frequency = MODLINK_FREQ_SYNDICATE - applied_cell = /obj/item/stock_parts/cell/bluespace + applied_cell = /obj/item/stock_parts/power_store/cell/bluespace req_access = list(ACCESS_SYNDICATE) applied_modules = list( /obj/item/mod/module/storage/syndicate, @@ -341,7 +341,7 @@ /obj/item/mod/control/pre_equipped/infiltrator theme = /datum/mod_theme/infiltrator starting_frequency = MODLINK_FREQ_SYNDICATE - applied_cell = /obj/item/stock_parts/cell/super + applied_cell = /obj/item/stock_parts/power_store/cell/super applied_modules = list( /obj/item/mod/module/emp_shield, /obj/item/mod/module/magnetic_harness, @@ -355,7 +355,7 @@ /obj/item/mod/control/pre_equipped/interdyne theme = /datum/mod_theme/interdyne starting_frequency = MODLINK_FREQ_SYNDICATE - applied_cell = /obj/item/stock_parts/cell/super + applied_cell = /obj/item/stock_parts/power_store/cell/super applied_modules = list( /obj/item/mod/module/organ_thrower, /obj/item/mod/module/defibrillator/combat, @@ -383,7 +383,7 @@ /obj/item/mod/control/pre_equipped/ninja theme = /datum/mod_theme/ninja starting_frequency = null - applied_cell = /obj/item/stock_parts/cell/ninja + applied_cell = /obj/item/stock_parts/power_store/cell/ninja applied_modules = list( /obj/item/mod/module/storage, /obj/item/mod/module/noslip, @@ -422,7 +422,7 @@ /obj/item/mod/control/pre_equipped/glitch theme = /datum/mod_theme/glitch starting_frequency = null - applied_cell = /obj/item/stock_parts/cell/bluespace + applied_cell = /obj/item/stock_parts/power_store/cell/bluespace applied_modules = list( /obj/item/mod/module/storage, /obj/item/mod/module/magnetic_harness, @@ -439,7 +439,7 @@ /obj/item/mod/control/pre_equipped/responsory theme = /datum/mod_theme/responsory starting_frequency = MODLINK_FREQ_CENTCOM - applied_cell = /obj/item/stock_parts/cell/hyper + applied_cell = /obj/item/stock_parts/power_store/cell/hyper req_access = list(ACCESS_CENT_GENERAL) applied_modules = list( /obj/item/mod/module/storage/large_capacity, @@ -504,7 +504,7 @@ /obj/item/mod/control/pre_equipped/responsory/inquisitory/syndie starting_frequency = MODLINK_FREQ_SYNDICATE req_access = null - applied_cell = /obj/item/stock_parts/cell/super + applied_cell = /obj/item/stock_parts/power_store/cell/super theme = /datum/mod_theme/responsory/traitor applied_modules = list( /obj/item/mod/module/storage/syndicate, @@ -539,7 +539,7 @@ /obj/item/mod/control/pre_equipped/apocryphal theme = /datum/mod_theme/apocryphal starting_frequency = MODLINK_FREQ_CENTCOM - applied_cell = /obj/item/stock_parts/cell/bluespace + applied_cell = /obj/item/stock_parts/power_store/cell/bluespace req_access = list(ACCESS_CENT_SPECOPS) applied_modules = list( /obj/item/mod/module/storage/bluespace, diff --git a/code/modules/mod/modules/modules_antag.dm b/code/modules/mod/modules/modules_antag.dm index 8d8d777592466..8ae22e435839b 100644 --- a/code/modules/mod/modules/modules_antag.dm +++ b/code/modules/mod/modules/modules_antag.dm @@ -516,10 +516,10 @@ mod.item_flags &= ~EXAMINE_SKIP /obj/item/mod/module/infiltrator/on_suit_activation() - mod.wearer.add_traits(list(TRAIT_SILENT_FOOTSTEPS, TRAIT_UNKNOWN), MOD_TRAIT) + mod.wearer.add_traits(traits_to_add, MOD_TRAIT) var/obj/item/clothing/head_cover = mod.get_part_from_slot(ITEM_SLOT_HEAD) if(istype(head_cover)) - head_cover.flash_protect = FLASH_PROTECTION_WELDER + head_cover.flash_protect = FLASH_PROTECTION_WELDER_HYPER_SENSITIVE /obj/item/mod/module/infiltrator/on_suit_deactivation(deleting = FALSE) mod.wearer.remove_traits(traits_to_add, MOD_TRAIT) diff --git a/code/modules/mod/modules/modules_engineering.dm b/code/modules/mod/modules/modules_engineering.dm index e1081d0365a9b..cac8cfaa26eff 100644 --- a/code/modules/mod/modules/modules_engineering.dm +++ b/code/modules/mod/modules/modules_engineering.dm @@ -16,7 +16,7 @@ var/obj/item/clothing/head_cover = mod.get_part_from_slot(ITEM_SLOT_HEAD) || mod.get_part_from_slot(ITEM_SLOT_MASK) || mod.get_part_from_slot(ITEM_SLOT_EYES) if(istype(head_cover)) //this is a screen that displays an image, so flash sensitives can use this to protect against flashes. - head_cover.flash_protect = FLASH_PROTECTION_MAXIMUM + head_cover.flash_protect = FLASH_PROTECTION_WELDER_HYPER_SENSITIVE /obj/item/mod/module/welding/on_suit_deactivation(deleting = FALSE) if(deleting) diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm index 0e2071a84b910..1ece8577d3c6b 100644 --- a/code/modules/modular_computers/computers/item/computer.dm +++ b/code/modules/modular_computers/computers/item/computer.dm @@ -19,7 +19,7 @@ ///The disk in this PDA. If set, this will be inserted on Initialize. var/obj/item/computer_disk/inserted_disk ///The power cell the computer uses to run on. - var/obj/item/stock_parts/cell/internal_cell = /obj/item/stock_parts/cell + var/obj/item/stock_parts/power_store/internal_cell = /obj/item/stock_parts/power_store/cell ///A pAI currently loaded into the modular computer. var/obj/item/pai_card/inserted_pai ///Does the console update the crew manifest when the ID is removed? @@ -75,9 +75,9 @@ var/comp_light_color = COLOR_WHITE ///Power usage when the computer is open (screen is active) and can be interacted with. - var/base_active_power_usage = 125 + var/base_active_power_usage = 2 WATTS ///Power usage when the computer is idle and screen is off. - var/base_idle_power_usage = 5 + var/base_idle_power_usage = 1 WATTS // Modular computers can run on various devices. Each DEVICE (Laptop, Console & Tablet) // must have it's own DMI file. Icon states must be called exactly the same in all files, but may look differently @@ -787,87 +787,6 @@ return name = "[saved_identification] ([saved_job])" -/obj/item/modular_computer/attackby(obj/item/attacking_item, mob/user, params) - // Check for ID first - if(isidcard(attacking_item) && InsertID(attacking_item, user)) - return - - // Check for cash next - if(computer_id_slot && iscash(attacking_item)) - var/obj/item/card/id/inserted_id = computer_id_slot.GetID() - if(inserted_id) - inserted_id.attackby(attacking_item, user) // If we do, try and put that attacking object in - return - - // Inserting a pAI - if(istype(attacking_item, /obj/item/pai_card) && insert_pai(user, attacking_item)) - return - - if(istype(attacking_item, /obj/item/stock_parts/cell)) - if(ismachinery(physical)) - return - if(internal_cell) - to_chat(user, span_warning("You try to connect \the [attacking_item] to \the [src], but its connectors are occupied.")) - return - if(user && !user.transferItemToLoc(attacking_item, src)) - return - internal_cell = attacking_item - to_chat(user, span_notice("You plug \the [attacking_item] to \the [src].")) - return - - if(istype(attacking_item, /obj/item/photo)) - var/obj/item/photo/attacking_photo = attacking_item - if(store_file(new /datum/computer_file/picture(attacking_photo.picture))) - balloon_alert(user, "photo scanned") - else - balloon_alert(user, "no space!") - return - - // Check if any Applications need it - for(var/datum/computer_file/item_holding_app as anything in stored_files) - if(item_holding_app.application_attackby(attacking_item, user)) - return - - if(istype(attacking_item, /obj/item/paper)) - if(stored_paper >= max_paper) - balloon_alert(user, "no more room!") - return - if(!user.temporarilyRemoveItemFromInventory(attacking_item)) - return FALSE - balloon_alert(user, "inserted paper") - qdel(attacking_item) - stored_paper++ - return - if(istype(attacking_item, /obj/item/paper_bin)) - var/obj/item/paper_bin/bin = attacking_item - if(bin.total_paper <= 0) - balloon_alert(user, "empty bin!") - return - var/papers_added //just to keep track - while((bin.total_paper > 0) && (stored_paper < max_paper)) - papers_added++ - stored_paper++ - bin.remove_paper() - if(!papers_added) - return - balloon_alert(user, "inserted paper") - to_chat(user, span_notice("Added in [papers_added] new sheets. You now have [stored_paper] / [max_paper] printing paper stored.")) - bin.update_appearance() - return - - // Insert a data disk - if(istype(attacking_item, /obj/item/computer_disk)) - if(inserted_disk) - user.put_in_hands(inserted_disk) - balloon_alert(user, "disks swapped") - if(!user.transferItemToLoc(attacking_item, src)) - return - inserted_disk = attacking_item - playsound(src, 'sound/machines/card_slide.ogg', 50) - return - - return ..() - /obj/item/modular_computer/screwdriver_act_secondary(mob/living/user, obj/item/tool) . = ..() if(internal_cell) @@ -902,6 +821,112 @@ update_appearance() return ITEM_INTERACT_SUCCESS +/obj/item/modular_computer/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(isidcard(tool)) + return InsertID(tool, user) ? ITEM_INTERACT_SUCCESS : ITEM_INTERACT_BLOCKING + + if(iscash(tool)) + return money_act(user, tool) + + if(istype(tool, /obj/item/pai_card)) + return pai_act(user, tool) + + if(istype(tool, /obj/item/stock_parts/power_store/cell)) + return cell_act(user, tool) + + if(istype(tool, /obj/item/photo)) + return photo_act(user, tool) + + // Check if any Applications need our item + for(var/datum/computer_file/item_holding_app as anything in stored_files) + var/app_return = item_holding_app.application_item_interaction(user, tool, modifiers) + if(app_return) + return app_return + + if(istype(tool, /obj/item/paper)) + return paper_act(user, tool) + + if(istype(tool, /obj/item/paper_bin)) + return paper_bin_act(user, tool) + + if(istype(tool, /obj/item/computer_disk)) + return computer_disk_act(user, tool) + +/obj/item/modular_computer/proc/money_act(mob/user, obj/item/money) + var/obj/item/card/id/inserted_id = computer_id_slot?.GetID() + if(!inserted_id) + balloon_alert(user, "no ID!") + return ITEM_INTERACT_BLOCKING + return inserted_id.insert_money(money, user) ? ITEM_INTERACT_SUCCESS : ITEM_INTERACT_BLOCKING + +/obj/item/modular_computer/proc/pai_act(mob/user, obj/item/pai_card/card) + if(inserted_pai) + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(card, src)) + return ITEM_INTERACT_BLOCKING + inserted_pai = card + balloon_alert(user, "inserted pai") + if(inserted_pai.pai) + inserted_pai.pai.give_messenger_ability() + update_appearance(UPDATE_ICON) + return ITEM_INTERACT_SUCCESS + +/obj/item/modular_computer/proc/cell_act(mob/user, obj/item/stock_parts/power_store/cell/new_cell) + if(ismachinery(physical)) + return ITEM_INTERACT_BLOCKING + if(internal_cell) + to_chat(user, span_warning("You try to connect \the [new_cell] to \the [src], but its connectors are occupied.")) + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(new_cell, src)) + return ITEM_INTERACT_BLOCKING + internal_cell = new_cell + to_chat(user, span_notice("You plug \the [new_cell] to \the [src].")) + return ITEM_INTERACT_SUCCESS + +/obj/item/modular_computer/proc/photo_act(mob/user, obj/item/photo/scanned_photo) + if(!store_file(new /datum/computer_file/picture(scanned_photo.picture))) + balloon_alert(user, "no space!") + return ITEM_INTERACT_BLOCKING + balloon_alert(user, "photo scanned") + return ITEM_INTERACT_SUCCESS + +/obj/item/modular_computer/proc/paper_act(mob/user, obj/item/paper/new_paper) + if(stored_paper >= max_paper) + balloon_alert(user, "no more room!") + return ITEM_INTERACT_BLOCKING + if(!user.temporarilyRemoveItemFromInventory(new_paper)) + return ITEM_INTERACT_BLOCKING + balloon_alert(user, "inserted paper") + qdel(new_paper) + stored_paper++ + return ITEM_INTERACT_SUCCESS + +/obj/item/modular_computer/proc/paper_bin_act(mob/user, obj/item/paper_bin/bin) + if(bin.total_paper <= 0) + balloon_alert(user, "empty bin!") + return ITEM_INTERACT_BLOCKING + var/papers_added //just to keep track + while((bin.total_paper > 0) && (stored_paper < max_paper)) + papers_added++ + stored_paper++ + bin.remove_paper() + if(!papers_added) + return ITEM_INTERACT_BLOCKING + balloon_alert(user, "inserted paper") + to_chat(user, span_notice("Added in [papers_added] new sheets. You now have [stored_paper] / [max_paper] printing paper stored.")) + bin.update_appearance() + return ITEM_INTERACT_SUCCESS + +/obj/item/modular_computer/proc/computer_disk_act(mob/user, obj/item/computer_disk/disk) + if(!user.transferItemToLoc(disk, src)) + return ITEM_INTERACT_BLOCKING + if(inserted_disk) + user.put_in_hands(inserted_disk) + balloon_alert(user, "disks swapped") + inserted_disk = disk + playsound(src, 'sound/machines/card_slide.ogg', 50) + return ITEM_INTERACT_SUCCESS + /obj/item/modular_computer/atom_deconstruct(disassembled = TRUE) remove_pai() eject_aicard() @@ -936,18 +961,6 @@ /obj/item/modular_computer/proc/get_messenger_ending() return "Sent from my PDA" -/obj/item/modular_computer/proc/insert_pai(mob/user, obj/item/pai_card/card) - if(inserted_pai) - return FALSE - if(!user.transferItemToLoc(card, src)) - return FALSE - inserted_pai = card - balloon_alert(user, "inserted pai") - if(inserted_pai.pai) - inserted_pai.pai.give_messenger_ability() - update_appearance(UPDATE_ICON) - return TRUE - /obj/item/modular_computer/proc/remove_pai(mob/user) if(!inserted_pai) return FALSE @@ -962,6 +975,12 @@ update_appearance(UPDATE_ICON) return TRUE +/// Get all stored files, including external disk files optionaly +/obj/item/modular_computer/proc/get_files(include_disk_files = FALSE) + if(!include_disk_files || !inserted_disk) + return stored_files + return stored_files + inserted_disk.stored_files + /** * Debug ModPC * Used to spawn all programs for Create and Destroy unit test. diff --git a/code/modules/modular_computers/computers/item/pda.dm b/code/modules/modular_computers/computers/item/pda.dm index c2327eac4b3b0..ca10b6c53ad84 100644 --- a/code/modules/modular_computers/computers/item/pda.dm +++ b/code/modules/modular_computers/computers/item/pda.dm @@ -141,7 +141,9 @@ return . || NONE /obj/item/modular_computer/pda/item_interaction(mob/living/user, obj/item/tool, list/modifiers) - + . = ..() + if(.) + return . if(!is_type_in_list(tool, contained_item)) return NONE if(tool.w_class >= WEIGHT_CLASS_SMALL) // Anything equal to or larger than small won't work diff --git a/code/modules/modular_computers/computers/item/processor.dm b/code/modules/modular_computers/computers/item/processor.dm index 3a8f58576c945..ad5d36a87cdd4 100644 --- a/code/modules/modular_computers/computers/item/processor.dm +++ b/code/modules/modular_computers/computers/item/processor.dm @@ -8,7 +8,7 @@ icon_state_unpowered = null icon_state_menu = null hardware_flag = NONE - internal_cell = /obj/item/stock_parts/cell/crap + internal_cell = /obj/item/stock_parts/power_store/cell/crap ///The modular computer MACHINE that hosts us. var/obj/machinery/modular_computer/machinery_computer diff --git a/code/modules/modular_computers/computers/machinery/modular_computer.dm b/code/modules/modular_computers/computers/machinery/modular_computer.dm index 6f0050534cce7..48cbc57d7455f 100644 --- a/code/modules/modular_computers/computers/machinery/modular_computer.dm +++ b/code/modules/modular_computers/computers/machinery/modular_computer.dm @@ -137,7 +137,7 @@ ///Try to recharge our internal cell if it isn't fully charged. /obj/machinery/modular_computer/process(seconds_per_tick) - var/obj/item/stock_parts/cell/cell = get_cell() + var/obj/item/stock_parts/power_store/cell = get_cell() if(isnull(cell) || cell.percent() >= 100) return charge_cell(idle_power_usage * seconds_per_tick, cell) @@ -154,8 +154,8 @@ /obj/machinery/modular_computer/welder_act(mob/user, obj/item/tool) return CPU_INTERACTABLE(user) ? cpu.welder_act(user, tool) : ..() -/obj/machinery/modular_computer/attackby(obj/item/weapon, mob/living/user) - return (CPU_INTERACTABLE(user) && !user.combat_mode) ? cpu.attackby(weapon, user) : ..() +/obj/machinery/modular_computer/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + return (CPU_INTERACTABLE(user) && !user.combat_mode) ? cpu.item_interaction(user, tool, modifiers) : ..() /obj/machinery/modular_computer/attacked_by(obj/item/attacking_item, mob/living/user) return CPU_INTERACTABLE(user) ? cpu.attacked_by(attacking_item, user) : ..() diff --git a/code/modules/modular_computers/file_system/computer_file.dm b/code/modules/modular_computers/file_system/computer_file.dm index 7b4fc67609119..05f3272d83346 100644 --- a/code/modules/modular_computers/file_system/computer_file.dm +++ b/code/modules/modular_computers/file_system/computer_file.dm @@ -66,9 +66,9 @@ /datum/computer_file/proc/on_examine(obj/item/modular_computer/source, mob/user) return null -/// Called when attacking a tablet with an item, checking if any application uses it. Return TRUE to cancel the attack chain. -/datum/computer_file/proc/application_attackby(obj/item/attacking_item, mob/living/user) - return FALSE +/// Called on modular computer item_interaction, checking if any application uses the given item. Uses the item interaction chain flags. +/datum/computer_file/proc/application_item_interaction(mob/living/user, obj/item/tool, list/modifiers) + return NONE /** * Implement this when your program has an object that the user can eject. diff --git a/code/modules/modular_computers/file_system/programs/airestorer.dm b/code/modules/modular_computers/file_system/programs/airestorer.dm index 57c9e73007218..0fe930cfd072f 100644 --- a/code/modules/modular_computers/file_system/programs/airestorer.dm +++ b/code/modules/modular_computers/file_system/programs/airestorer.dm @@ -57,22 +57,22 @@ return TRUE -/datum/computer_file/program/ai_restorer/application_attackby(obj/item/attacking_item, mob/living/user) - if(!computer) - return FALSE - if(!istype(attacking_item, /obj/item/aicard)) - return FALSE +/datum/computer_file/program/ai_restorer/application_item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/aicard)) + return aicard_act(user, tool) +/datum/computer_file/program/ai_restorer/proc/aicard_act(mob/living/user, obj/item/aicard/used_aicard) + if(!computer) + return NONE if(stored_card) - to_chat(user, span_warning("You try to insert \the [attacking_item] into \the [computer.name], but the slot is occupied.")) - return FALSE - if(user && !user.transferItemToLoc(attacking_item, computer)) - return FALSE - - stored_card = attacking_item - to_chat(user, span_notice("You insert \the [attacking_item] into \the [computer.name].")) - - return TRUE + to_chat(user, span_warning("You try to insert \the [used_aicard] into \the [computer.name], but the slot is occupied.")) + return ITEM_INTERACT_BLOCKING + if(!user.transferItemToLoc(used_aicard, computer)) + return ITEM_INTERACT_BLOCKING + + stored_card = used_aicard + to_chat(user, span_notice("You insert \the [used_aicard] into \the [computer.name].")) + return ITEM_INTERACT_SUCCESS /datum/computer_file/program/ai_restorer/try_eject(mob/living/user, forced = FALSE) if(!stored_card) diff --git a/code/modules/modular_computers/file_system/programs/frontier.dm b/code/modules/modular_computers/file_system/programs/frontier.dm index 7a65513508d3e..c8030287e8943 100644 --- a/code/modules/modular_computers/file_system/programs/frontier.dm +++ b/code/modules/modular_computers/file_system/programs/frontier.dm @@ -24,16 +24,19 @@ if(!CONFIG_GET(flag/no_default_techweb_link) && !linked_techweb) CONNECT_TO_RND_SERVER_ROUNDSTART(linked_techweb, computer) -/datum/computer_file/program/scipaper_program/application_attackby(obj/item/attacking_item, mob/living/user) - if(!istype(attacking_item, /obj/item/multitool)) - return FALSE - var/obj/item/multitool/attacking_tool = attacking_item - if(!QDELETED(attacking_tool.buffer) && istype(attacking_tool.buffer, /datum/techweb)) - linked_techweb = attacking_tool.buffer - return TRUE +/datum/computer_file/program/scipaper_program/application_item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/multitool)) + return multitool_act(user, tool) + +/datum/computer_file/program/scipaper_program/proc/multitool_act(mob/living/user, obj/item/multitool/used_multitool) + if(QDELETED(used_multitool.buffer) || !istype(used_multitool.buffer, /datum/techweb)) + return ITEM_INTERACT_BLOCKING + linked_techweb = used_multitool.buffer + computer.balloon_alert(user, "buffer linked!") + return ITEM_INTERACT_SUCCESS /datum/computer_file/program/scipaper_program/proc/recheck_file_presence() - if(selected_file in computer.stored_files) + if(selected_file in computer.get_files(include_disk_files = TRUE)) return FALSE UnregisterSignal(selected_file, COMSIG_COMPUTER_FILE_DELETE) selected_file = null @@ -92,7 +95,7 @@ data["allowedTiers"] = list() data["allowedPartners"] = list() // Both the file and experiment list are assoc lists. ID as value, display name as keys. - for(var/datum/computer_file/data/ordnance/ordnance_file in computer.stored_files) + for(var/datum/computer_file/data/ordnance/ordnance_file in computer.get_files(include_disk_files = TRUE)) data["fileList"] += list(ordnance_file.filename = ordnance_file.uid) if(selected_file) for (var/possible_experiment in selected_file.possible_experiments) @@ -189,7 +192,7 @@ if(selected_file) UnregisterSignal(selected_file, COMSIG_COMPUTER_FILE_DELETE) paper_to_be.set_experiment() // Clears the paper info. - for(var/datum/computer_file/data/ordnance/ordnance_data in computer.stored_files) + for(var/datum/computer_file/data/ordnance/ordnance_data in computer.get_files(include_disk_files = TRUE)) if(ordnance_data.uid == params["selected_uid"]) selected_file = ordnance_data RegisterSignal(selected_file, COMSIG_COMPUTER_FILE_DELETE, PROC_REF(recheck_file_presence)) diff --git a/code/modules/modular_computers/file_system/programs/maintenance/modsuit.dm b/code/modules/modular_computers/file_system/programs/maintenance/modsuit.dm index 0d094ced4f52a..b2c492d3268f8 100644 --- a/code/modules/modular_computers/file_system/programs/maintenance/modsuit.dm +++ b/code/modules/modular_computers/file_system/programs/maintenance/modsuit.dm @@ -17,12 +17,10 @@ unsync_modsuit() return ..() -/datum/computer_file/program/maintenance/modsuit_control/application_attackby(obj/item/attacking_item, mob/living/user) - . = ..() - if(!istype(attacking_item, /obj/item/mod/control)) - return FALSE - sync_modsuit(attacking_item, user) - return TRUE +/datum/computer_file/program/maintenance/modsuit_control/application_item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/mod/control)) + sync_modsuit(tool, user) + return ITEM_INTERACT_SUCCESS /datum/computer_file/program/maintenance/modsuit_control/proc/sync_modsuit(obj/item/mod/control/new_modsuit, mob/living/user) if(controlled_suit) diff --git a/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm b/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm index 0b2f478172b5e..4ad633aa94df4 100644 --- a/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm +++ b/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm @@ -166,7 +166,8 @@ if("PDA_ringSet") var/mob/living/user = usr var/new_ringtone = tgui_input_text(user, "Enter a new ringtone", "Ringtone", ringtone, encode = FALSE) - if(!in_range(computer, user) || computer.loc != user) + if(!computer.can_interact(user)) + computer.balloon_alert(user, "can't reach!") return FALSE return set_ringtone(new_ringtone, user) @@ -381,6 +382,10 @@ data["sending_virus"] = sending_virus return data +/datum/computer_file/program/messenger/ui_assets(mob/user) + . = ..() + . += get_asset_datum(/datum/asset/spritesheet/chat) + ////////////////////// // MESSAGE HANDLING // ////////////////////// @@ -463,7 +468,7 @@ if(sender && !check_pda_message_against_filter(message, sender)) return null - return message + return emoji_parse(message) /// Sends a message to targets via PDA. When sending to everyone, set `everyone` to true so the message is formatted accordingly /datum/computer_file/program/messenger/proc/send_message(atom/source, message, list/targets, everyone = FALSE) @@ -628,10 +633,8 @@ if(rigged) log_bomber(sender, "sent a rigged PDA message (Name: [fake_name]. Job: [fake_job]) to [english_list(stringified_targets)] [!is_special_character(sender) ? "(SENT BY NON-ANTAG)" : ""]") - message = emoji_parse(message) //already sent- this just shows the sent emoji as one to the sender in the to_chat - // Show it to ghosts - var/ghost_message = span_game_say("[span_name("[source]")] [rigged ? "(as [span_name(fake_name)]) Rigged " : ""]PDA Message --> [span_name("[signal.format_target()]")]: \"[signal.format_message()]\"") + var/ghost_message = span_game_say("[span_name(signal.format_sender())] [rigged ? "(as [span_name(fake_name)]) Rigged " : ""]PDA Message --> [span_name("[signal.format_target()]")]: \"[signal.format_message()]\"") var/list/message_listeners = GLOB.dead_player_list + GLOB.current_observers_list for(var/mob/listener as anything in message_listeners) if(!(get_chat_toggles(listener) & CHAT_GHOSTPDA)) @@ -678,7 +681,7 @@ viewing_messages_of = REF(chat) var/list/mob/living/receievers = list() - if(computer.inserted_pai) + if(computer.inserted_pai && computer.inserted_pai.pai) receievers += computer.inserted_pai.pai if(computer.loc && isliving(computer.loc)) receievers += computer.loc @@ -708,7 +711,6 @@ sender_title = "[sender_title]" var/inbound_message = "[signal.format_message()]" - inbound_message = emoji_parse(inbound_message) var/photo_message = signal.data["photo"] ? " (Photo Attached)" : "" to_chat(messaged_mob, span_infoplain("[icon2html(computer, messaged_mob)] PDA message from [sender_title], \"[inbound_message]\"[photo_message] [reply]")) @@ -727,7 +729,7 @@ if(QDELETED(src)) return - if(!usr.can_perform_action(computer, FORBID_TELEKINESIS_REACH)) + if(!usr.can_perform_action(computer, FORBID_TELEKINESIS_REACH | ALLOW_RESTING)) return // send an activation message and open the messenger diff --git a/code/modules/modular_computers/file_system/programs/techweb.dm b/code/modules/modular_computers/file_system/programs/techweb.dm index 1394b9556a698..014e6a56727a3 100644 --- a/code/modules/modular_computers/file_system/programs/techweb.dm +++ b/code/modules/modular_computers/file_system/programs/techweb.dm @@ -26,13 +26,16 @@ if(!CONFIG_GET(flag/no_default_techweb_link) && !stored_research) CONNECT_TO_RND_SERVER_ROUNDSTART(stored_research, computer) -/datum/computer_file/program/science/application_attackby(obj/item/attacking_item, mob/living/user) - if(!istype(attacking_item, /obj/item/multitool)) - return FALSE - var/obj/item/multitool/attacking_tool = attacking_item - if(!QDELETED(attacking_tool.buffer) && istype(attacking_tool.buffer, /datum/techweb)) - stored_research = attacking_tool.buffer - return TRUE +/datum/computer_file/program/science/application_item_interaction(mob/living/user, obj/item/tool, list/modifiers) + if(istype(tool, /obj/item/multitool)) + return multitool_act(user, tool) + +/datum/computer_file/program/science/proc/multitool_act(mob/living/user, obj/item/multitool/used_multitool) + if(QDELETED(used_multitool.buffer) || !istype(used_multitool.buffer, /datum/techweb)) + return ITEM_INTERACT_BLOCKING + stored_research = used_multitool.buffer + computer.balloon_alert(user, "buffer linked!") + return ITEM_INTERACT_SUCCESS /datum/computer_file/program/science/ui_assets(mob/user) return list( diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index 4d0a0efe59639..3ee556b3adf4f 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -77,7 +77,7 @@ return to_chat(user, span_notice("You put [weapon] into [src].")) update_appearance() - else if(istype(weapon, /obj/item/pen)) + else if(IS_WRITING_UTENSIL(weapon)) rename(user, weapon) /obj/item/folder/attack_self(mob/user) diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index 0b9c4feccb18c..7b734c1530666 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -78,7 +78,7 @@ /obj/item/paperplane/attackby(obj/item/attacking_item, mob/user, params) if(burn_paper_product_attackby_check(attacking_item, user)) return - if(istype(attacking_item, /obj/item/pen) || istype(attacking_item, /obj/item/toy/crayon)) + if(IS_WRITING_UTENSIL(attacking_item)) to_chat(user, span_warning("You should unfold [src] before changing it!")) return else if(istype(attacking_item, /obj/item/stamp)) //we don't randomize stamps on a paperplane diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 53df8dbd35b97..6043890bebd43 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -34,6 +34,8 @@ var/dart_insert_icon = 'icons/obj/weapons/guns/toy.dmi' var/dart_insert_casing_icon_state = "overlay_pen" var/dart_insert_projectile_icon_state = "overlay_pen_proj" + /// If this pen can be clicked in order to retract it + var/can_click = TRUE /obj/item/pen/Initialize(mapload) . = ..() @@ -47,6 +49,34 @@ AddElement(/datum/element/tool_renaming) RegisterSignal(src, COMSIG_DART_INSERT_ADDED, PROC_REF(on_inserted_into_dart)) RegisterSignal(src, COMSIG_DART_INSERT_REMOVED, PROC_REF(on_removed_from_dart)) + if (!can_click) + return + create_transform_component() + RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, PROC_REF(on_transform)) + +/// Proc that child classes can override to have custom transforms, like edaggers or pendrivers +/obj/item/pen/proc/create_transform_component() + AddComponent( \ + /datum/component/transforming, \ + sharpness_on = NONE, \ + inhand_icon_change = FALSE, \ + ) + +/* + * Signal proc for [COMSIG_TRANSFORMING_ON_TRANSFORM]. + * + * Clicks the pen to make an annoying sound. Clickity clickery click! + */ +/obj/item/pen/proc/on_transform(obj/item/source, mob/user, active) + SIGNAL_HANDLER + + if(user) + balloon_alert(user, "clicked") + playsound(src, 'sound/machines/click.ogg', 30, TRUE, -3) + icon_state = initial(icon_state) + (active ? "_retracted" : "") + update_appearance(UPDATE_ICON) + + return COMPONENT_NO_DEFAULT_MESSAGE /obj/item/pen/proc/on_inserted_into_dart(datum/source, obj/projectile/dart, mob/user, embedded = FALSE) SIGNAL_HANDLER @@ -90,6 +120,7 @@ name = "four-color pen" icon_state = "pen_4color" colour = COLOR_BLACK + can_click = FALSE /obj/item/pen/fourcolor/attack_self(mob/living/carbon/user) . = ..() @@ -110,6 +141,8 @@ colour = COLOR_BLACK to_chat(user, span_notice("\The [src] will now write in [chosen_color].")) desc = "It's a fancy four-color ink pen, set to [chosen_color]." + balloon_alert(user, "clicked") + playsound(src, 'sound/machines/click.ogg', 30, TRUE, -3) /obj/item/pen/fountain name = "fountain pen" @@ -119,6 +152,7 @@ requires_gravity = FALSE // fancy spess pens dart_insert_casing_icon_state = "overlay_fountainpen" dart_insert_projectile_icon_state = "overlay_fountainpen_proj" + can_click = FALSE /obj/item/pen/charcoal name = "charcoal stylus" @@ -129,6 +163,7 @@ custom_materials = null grind_results = list(/datum/reagent/ash = 5, /datum/reagent/cellulose = 10) requires_gravity = FALSE // this is technically a pencil + can_click = FALSE /datum/crafting_recipe/charcoal_stylus name = "Charcoal Stylus" @@ -187,19 +222,17 @@ insert_comp.casing_overlay_icon_state = overlay_reskin[current_skin] insert_comp.projectile_overlay_icon_state = "[overlay_reskin[current_skin]]_proj" -/obj/item/pen/attack_self(mob/living/carbon/user) - . = ..() - if(.) - return +/obj/item/pen/item_ctrl_click(mob/living/carbon/user) if(loc != user) to_chat(user, span_warning("You must be holding the pen to continue!")) - return + return CLICK_ACTION_BLOCKING var/deg = tgui_input_number(user, "What angle would you like to rotate the pen head to? (0-360)", "Rotate Pen Head", max_value = 360) if(isnull(deg) || QDELETED(user) || QDELETED(src) || !user.can_perform_action(src, FORBID_TELEKINESIS_REACH) || loc != user) - return + return CLICK_ACTION_BLOCKING degrees = deg to_chat(user, span_notice("You rotate the top of the pen to [deg] degrees.")) SEND_SIGNAL(src, COMSIG_PEN_ROTATED, deg, user) + return CLICK_ACTION_SUCCESS /obj/item/pen/attack(mob/living/M, mob/user, params) if(force) // If the pen has a force value, call the normal attack procs. Used for e-daggers and captain's pen mostly. @@ -212,6 +245,8 @@ return TRUE /obj/item/pen/get_writing_implement_details() + if (HAS_TRAIT(src, TRAIT_TRANSFORM_ACTIVE)) + return null return list( interaction_mode = MODE_WRITING, font = font, @@ -287,6 +322,9 @@ speed = 6 SECONDS, \ butcher_sound = 'sound/weapons/blade1.ogg', \ ) + RegisterSignal(src, COMSIG_DETECTIVE_SCANNED, PROC_REF(on_scan)) + +/obj/item/pen/edagger/create_transform_component() AddComponent( \ /datum/component/transforming, \ force_on = 18, \ @@ -296,8 +334,6 @@ w_class_on = WEIGHT_CLASS_NORMAL, \ inhand_icon_change = FALSE, \ ) - RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, PROC_REF(on_transform)) - RegisterSignal(src, COMSIG_DETECTIVE_SCANNED, PROC_REF(on_scan)) /obj/item/pen/edagger/on_inserted_into_dart(datum/source, obj/item/ammo_casing/dart, mob/user) . = ..() @@ -369,9 +405,7 @@ * Handles swapping their icon files to edagger related icon files - * as they're supposed to look like a normal pen. */ -/obj/item/pen/edagger/proc/on_transform(obj/item/source, mob/user, active) - SIGNAL_HANDLER - +/obj/item/pen/edagger/on_transform(obj/item/source, mob/user, active) if(active) name = hidden_name desc = hidden_desc @@ -418,6 +452,7 @@ colour = COLOR_BLUE dart_insert_casing_icon_state = "overlay_survivalpen" dart_insert_projectile_icon_state = "overlay_survivalpen_proj" + can_click = FALSE /obj/item/pen/survival/on_inserted_into_dart(datum/source, obj/item/ammo_casing/dart, mob/user) . = ..() @@ -456,6 +491,9 @@ /obj/item/pen/screwdriver/Initialize(mapload) . = ..() + AddElement(/datum/element/update_icon_updates_onmob) + +/obj/item/pen/screwdriver/create_transform_component() AddComponent( \ /datum/component/transforming, \ throwforce_on = 5, \ @@ -464,12 +502,7 @@ inhand_icon_change = FALSE, \ ) - RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, PROC_REF(toggle_screwdriver)) - AddElement(/datum/element/update_icon_updates_onmob) - -/obj/item/pen/screwdriver/proc/toggle_screwdriver(obj/item/source, mob/user, active) - SIGNAL_HANDLER - +/obj/item/pen/screwdriver/on_transform(obj/item/source, mob/user, active) if(user) balloon_alert(user, active ? "extended" : "retracted") playsound(src, 'sound/weapons/batonextend.ogg', 50, TRUE) diff --git a/code/modules/photography/photos/photo.dm b/code/modules/photography/photos/photo.dm index b34ff459c0075..b009c5b2e7913 100644 --- a/code/modules/photography/photos/photo.dm +++ b/code/modules/photography/photos/photo.dm @@ -68,7 +68,7 @@ /obj/item/photo/attackby(obj/item/P, mob/user, params) if(burn_paper_product_attackby_check(P, user)) return - if(istype(P, /obj/item/pen) || istype(P, /obj/item/toy/crayon)) + if(IS_WRITING_UTENSIL(P)) if(!user.can_write(P)) return var/txt = tgui_input_text(user, "What would you like to write on the back?", "Photo Writing", max_length = 128) diff --git a/code/modules/power/apc/apc_attack.dm b/code/modules/power/apc/apc_attack.dm index 50f10c47e33c1..2752ae3c2bfdf 100644 --- a/code/modules/power/apc/apc_attack.dm +++ b/code/modules/power/apc/apc_attack.dm @@ -29,7 +29,7 @@ return var/charge_limit = ETHEREAL_CHARGE_DANGEROUS - APC_POWER_GAIN var/obj/item/organ/internal/stomach/ethereal/stomach = maybe_stomach - var/obj/item/stock_parts/cell/stomach_cell = stomach.cell + var/obj/item/stock_parts/power_store/stomach_cell = stomach.cell if(!((stomach?.drain_time < world.time) && LAZYACCESS(modifiers, RIGHT_CLICK))) return if(ethereal.combat_mode) diff --git a/code/modules/power/apc/apc_contextual_tips.dm b/code/modules/power/apc/apc_contextual_tips.dm index 4fe6458e4eba9..ad109cd397a06 100644 --- a/code/modules/power/apc/apc_contextual_tips.dm +++ b/code/modules/power/apc/apc_contextual_tips.dm @@ -43,8 +43,8 @@ if (opened == APC_COVER_OPENED && !has_electronics) context[SCREENTIP_CONTEXT_LMB] = "Disassemble the APC" - else if(istype(held_item, /obj/item/stock_parts/cell) && opened == APC_COVER_OPENED) - context[SCREENTIP_CONTEXT_LMB] = "Insert Cell" + else if(istype(held_item, /obj/item/stock_parts/power_store/battery) && opened == APC_COVER_OPENED) + context[SCREENTIP_CONTEXT_LMB] = "Insert Battery" else if(istype(held_item, /obj/item/stack/cable_coil) && opened == APC_COVER_OPENED) context[SCREENTIP_CONTEXT_LMB] = "Create wire terminal" @@ -56,7 +56,7 @@ if (!has_electronics) context[SCREENTIP_CONTEXT_LMB] = "Insert an APC board" else if(!cell) - context[SCREENTIP_CONTEXT_LMB] = "Insert a cell" + context[SCREENTIP_CONTEXT_LMB] = "Insert a battery" else if(istype(held_item, /obj/item/wallframe/apc)) context[SCREENTIP_CONTEXT_LMB] = "Replace damaged frame" diff --git a/code/modules/power/apc/apc_main.dm b/code/modules/power/apc/apc_main.dm index 69732c69b97ac..329f77ab7186d 100644 --- a/code/modules/power/apc/apc_main.dm +++ b/code/modules/power/apc/apc_main.dm @@ -30,11 +30,11 @@ ///Mapper helper to tie an apc to another area var/areastring = null ///Reference to our internal cell - var/obj/item/stock_parts/cell/cell + var/obj/item/stock_parts/power_store/cell ///Initial cell charge % var/start_charge = 90 ///Type of cell we start with - var/cell_type = /obj/item/stock_parts/cell/upgraded //Base cell has 2500 capacity. Enter the path of a different cell you want to use. cell determines charge rates, max capacity, ect. These can also be changed with other APC vars, but isn't recommended to minimize the risk of accidental usage of dirty editted APCs + var/cell_type = /obj/item/stock_parts/power_store/battery/upgraded //Base cell has 2500 capacity. Enter the path of a different cell you want to use. cell determines charge rates, max capacity, ect. These can also be changed with other APC vars, but isn't recommended to minimize the risk of accidental usage of dirty editted APCs ///State of the cover (closed, opened, removed) var/opened = APC_COVER_CLOSED ///Is the APC shorted and not working? @@ -689,12 +689,12 @@ ///Used for cell_5k apc helper, which installs 5k cell into apc. /obj/machinery/power/apc/proc/install_cell_5k() - cell_type = /obj/item/stock_parts/cell/upgraded/plus + cell_type = /obj/item/stock_parts/power_store/battery/upgraded cell = new cell_type(src) /// Used for cell_10k apc helper, which installs 10k cell into apc. /obj/machinery/power/apc/proc/install_cell_10k() - cell_type = /obj/item/stock_parts/cell/high + cell_type = /obj/item/stock_parts/power_store/battery/high cell = new cell_type(src) /// Used for unlocked apc helper, which unlocks the apc. diff --git a/code/modules/power/apc/apc_tool_act.dm b/code/modules/power/apc/apc_tool_act.dm index a82ce2f8f0d50..2072ab145614d 100644 --- a/code/modules/power/apc/apc_tool_act.dm +++ b/code/modules/power/apc/apc_tool_act.dm @@ -11,7 +11,7 @@ togglelock(user) return ITEM_INTERACT_SUCCESS - if(istype(tool, /obj/item/stock_parts/cell)) + if(istype(tool, /obj/item/stock_parts/power_store)) . = cell_act(user, tool) else if(istype(tool, /obj/item/stack/cable_coil)) . = cable_act(user, tool, LAZYACCESS(modifiers, RIGHT_CLICK)) @@ -52,7 +52,7 @@ return ITEM_INTERACT_SUCCESS /// Called when we interact with the APC with a cell, attempts to insert it -/obj/machinery/power/apc/proc/cell_act(mob/living/user, obj/item/stock_parts/cell/new_cell) +/obj/machinery/power/apc/proc/cell_act(mob/living/user, obj/item/stock_parts/power_store/new_cell) if(!opened) return NONE @@ -184,7 +184,7 @@ return ITEM_INTERACT_BLOCKING if(!pseudocircuit.adapt_circuit(user, circuit_cost = 0.5 * STANDARD_CELL_CHARGE)) return ITEM_INTERACT_BLOCKING - var/obj/item/stock_parts/cell/crap/empty/bad_cell = new(src) + var/obj/item/stock_parts/power_store/battery/crap/empty/bad_cell = new(src) bad_cell.forceMove(src) cell = bad_cell user.visible_message( @@ -424,7 +424,7 @@ if(machine_stat & MAINT) balloon_alert(user, "no board for a cell!") return FALSE - var/obj/item/stock_parts/cell/crap/empty/C = new(src) + var/obj/item/stock_parts/power_store/battery/crap/empty/C = new(src) C.forceMove(src) cell = C balloon_alert(user, "power cell installed") diff --git a/code/modules/power/battery.dm b/code/modules/power/battery.dm new file mode 100644 index 0000000000000..8a6be8d85aa5f --- /dev/null +++ b/code/modules/power/battery.dm @@ -0,0 +1,79 @@ +/obj/item/stock_parts/power_store/battery + name = "megacell" + desc = "A series of rechargeable electrochemical cells wired together to hold significantly more power than a standard power cell." + icon = 'icons/obj/machines/cell_charger.dmi' + icon_state = "cellbig" + cell_size_prefix = "cellbig" + inhand_icon_state = "cell" + lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' + w_class = WEIGHT_CLASS_NORMAL + force = 10 + throwforce = 5 + throw_speed = 2 + throw_range = 2 + custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*12, /datum/material/glass=SMALL_MATERIAL_AMOUNT*2) + grind_results = list(/datum/reagent/lithium = 60, /datum/reagent/iron = 10, /datum/reagent/silicon = 10) + rating_base = STANDARD_BATTERY_CHARGE + maxcharge = STANDARD_BATTERY_CHARGE + chargerate = STANDARD_BATTERY_RATE + +/obj/item/stock_parts/power_store/battery/empty + empty = TRUE + +/obj/item/stock_parts/power_store/battery/upgraded + name = "upgraded megacell" + desc = "A battery with a slightly higher capacity than normal!" + maxcharge = STANDARD_BATTERY_CHARGE * 2.5 + custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT*2.5) + chargerate = STANDARD_BATTERY_RATE * 0.5 + +/obj/item/stock_parts/power_store/battery/high + name = "high-capacity megacell" + icon_state = "hcellbig" + maxcharge = STANDARD_BATTERY_CHARGE * 10 + custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT * 3) + chargerate = STANDARD_BATTERY_RATE * 0.75 + +/obj/item/stock_parts/power_store/battery/high/empty + empty = TRUE + +/obj/item/stock_parts/power_store/battery/super + name = "super-capacity megacell" + icon_state = "scellbig" + maxcharge = STANDARD_BATTERY_CHARGE * 20 + custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT * 4) + chargerate = STANDARD_BATTERY_RATE + +/obj/item/stock_parts/power_store/battery/super/empty + empty = TRUE + +/obj/item/stock_parts/power_store/battery/hyper + name = "hyper-capacity megacell" + icon_state = "hpcellbig" + maxcharge = STANDARD_BATTERY_CHARGE * 30 + custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT * 5) + chargerate = STANDARD_BATTERY_RATE * 1.5 + +/obj/item/stock_parts/power_store/battery/hyper/empty + empty = TRUE + +/obj/item/stock_parts/power_store/battery/bluespace + name = "bluespace megacell" + desc = "A rechargeable transdimensional megacell." + icon_state = "bscellbig" + maxcharge = STANDARD_BATTERY_CHARGE * 40 + custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT*6) + chargerate = STANDARD_BATTERY_RATE * 2 + +/obj/item/stock_parts/power_store/battery/bluespace/empty + empty = TRUE + +/obj/item/stock_parts/power_store/battery/crap + name = "\improper Nanotrasen brand rechargeable AA megacell" + desc = "You can't top the plasma top." //TOTALLY TRADEMARK INFRINGEMENT + maxcharge = STANDARD_BATTERY_CHARGE * 0.5 + custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT*1) + +/obj/item/stock_parts/power_store/battery/crap/empty + empty = TRUE diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 74352134f59f4..fbb36703cc569 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -1,13 +1,10 @@ -#define CELL_DRAIN_TIME 35 -#define CELL_POWER_GAIN (0.06 * STANDARD_CELL_CHARGE) -#define CELL_POWER_DRAIN (0.75 * STANDARD_CELL_CHARGE) /** * # Power cell * - * Batteries. + * Power cells, used primarily for handheld and portable things. Holds a reasonable amount of power. */ -/obj/item/stock_parts/cell +/obj/item/stock_parts/power_store/cell name = "power cell" desc = "A rechargeable electrochemical power cell." icon = 'icons/obj/machines/cell_charger.dmi' @@ -22,307 +19,26 @@ w_class = WEIGHT_CLASS_SMALL custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*7, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.5) grind_results = list(/datum/reagent/lithium = 15, /datum/reagent/iron = 5, /datum/reagent/silicon = 5) - ///Current charge in cell units - var/charge = 0 - ///Maximum charge in cell units - var/maxcharge = STANDARD_CELL_CHARGE - ///If the cell has been booby-trapped by injecting it with plasma. Chance on use() to explode. - var/rigged = FALSE - ///If the power cell was damaged by an explosion, chance for it to become corrupted and function the same as rigged. - var/corrupted = FALSE - ///How much power is given per second in a recharger. - var/chargerate = STANDARD_CELL_RATE * 0.05 - ///If true, the cell will state it's maximum charge in it's description - var/ratingdesc = TRUE - ///If it's a grown that acts as a battery, add a wire overlay to it. - var/grown_battery = FALSE - ///What charge lige sprite to use, null if no light - var/charge_light_type = "standard" - ///What connector sprite to use when in a cell charger, null if no connectors - var/connector_type = "standard" - ///Does the cell start without any charge? - var/empty = FALSE - -/obj/item/stock_parts/cell/get_cell() - return src - -/obj/item/stock_parts/cell/Initialize(mapload, override_maxcharge) - . = ..() - create_reagents(5, INJECTABLE | DRAINABLE) - if (override_maxcharge) - maxcharge = override_maxcharge - rating = max(round(maxcharge / (STANDARD_CELL_CHARGE * 10), 1), 1) - if(!charge) - charge = maxcharge - if(empty) - charge = 0 - if(ratingdesc) - desc += " This one has a rating of [display_energy(maxcharge)][prob(10) ? ", and you should not swallow it" : ""]." //joke works better if it's not on every cell - update_appearance() - - RegisterSignal(src, COMSIG_ITEM_MAGICALLY_CHARGED, PROC_REF(on_magic_charge)) - var/static/list/loc_connections = list( - COMSIG_ITEM_MAGICALLY_CHARGED = PROC_REF(on_magic_charge), - ) - AddElement(/datum/element/connect_loc, loc_connections) - -/** - * Signal proc for [COMSIG_ITEM_MAGICALLY_CHARGED] - * - * If we, or the item we're located in, is subject to the charge spell, gain some charge back - */ -/obj/item/stock_parts/cell/proc/on_magic_charge(datum/source, datum/action/cooldown/spell/charge/spell, mob/living/caster) - SIGNAL_HANDLER - - // This shouldn't be running if we're not being held by a mob, - // or if we're not within an object being held by a mob, but just in case... - if(!ismovable(loc)) - return - - . = COMPONENT_ITEM_CHARGED - - if(prob(80)) - maxcharge -= STANDARD_CELL_CHARGE * 0.2 - - if(maxcharge <= 1) // Div by 0 protection - maxcharge = 1 - . |= COMPONENT_ITEM_BURNT_OUT - - charge = maxcharge - update_appearance() - - // Guns need to process their chamber when we've been charged - if(isgun(loc)) - var/obj/item/gun/gun_loc = loc - gun_loc.process_chamber() - - // The thing we're in might have overlays or icon states for whether the cell is charged - if(!ismob(loc)) - loc.update_appearance() - - return . - -/obj/item/stock_parts/cell/create_reagents(max_vol, flags) - . = ..() - RegisterSignals(reagents, list(COMSIG_REAGENTS_NEW_REAGENT, COMSIG_REAGENTS_ADD_REAGENT, COMSIG_REAGENTS_DEL_REAGENT, COMSIG_REAGENTS_REM_REAGENT), PROC_REF(on_reagent_change)) - RegisterSignal(reagents, COMSIG_QDELETING, PROC_REF(on_reagents_del)) - -/// Handles properly detaching signal hooks. -/obj/item/stock_parts/cell/proc/on_reagents_del(datum/reagents/reagents) - SIGNAL_HANDLER - UnregisterSignal(reagents, list(COMSIG_REAGENTS_NEW_REAGENT, COMSIG_REAGENTS_ADD_REAGENT, COMSIG_REAGENTS_DEL_REAGENT, COMSIG_REAGENTS_REM_REAGENT, COMSIG_QDELETING)) - return NONE - -/obj/item/stock_parts/cell/update_overlays() - . = ..() - if(grown_battery) - . += mutable_appearance('icons/obj/machines/cell_charger.dmi', "grown_wires") - if((charge < 0.01) || !charge_light_type) - return - . += mutable_appearance('icons/obj/machines/cell_charger.dmi', "cell-[charge_light_type]-o[(percent() >= 99.5) ? 2 : 1]") - -/obj/item/stock_parts/cell/vv_edit_var(vname, vval) - if(vname == NAMEOF(src, charge)) - charge = clamp(vval, 0, maxcharge) - return TRUE - if(vname == NAMEOF(src, maxcharge)) - if(charge > vval) - charge = vval - if(vname == NAMEOF(src, corrupted) && vval && !corrupted) - corrupt(TRUE) - return TRUE - return ..() - - -/** - * Returns the percentage of the cell's charge. - */ -/obj/item/stock_parts/cell/proc/percent() // return % charge of cell - return 100 * charge / maxcharge - -/** - * Returns the maximum charge of the cell. - */ -/obj/item/stock_parts/cell/proc/max_charge() - return maxcharge - -/** - * Returns the current charge of the cell. - */ -/obj/item/stock_parts/cell/proc/charge() - return charge - -/** - * Returns the amount of charge used on the cell. - */ -/obj/item/stock_parts/cell/proc/used_charge() - return maxcharge - charge - -/// Use power from the cell. -/// Args: -/// - used: Amount of power in joules to use. -/// - force: If true, uses the remaining power from the cell if there isn't enough power to supply the demand. -/// Returns: The power used from the cell in joules. -/obj/item/stock_parts/cell/use(used, force = FALSE) - var/power_used = min(used, charge) - if(rigged && power_used > 0) - explode() - return 0 // The cell decided to explode so we won't be able to use it. - if(!force && charge < used) - return 0 - charge -= power_used - if(!istype(loc, /obj/machinery/power/apc)) - SSblackbox.record_feedback("tally", "cell_used", 1, type) - return power_used - -/// Recharge the cell. -/// Args: -/// - amount: The amount of energy to give to the cell in joules. -/// Returns: The power given to the cell in joules. -/obj/item/stock_parts/cell/proc/give(amount) - var/power_used = min(maxcharge-charge,amount) - charge += power_used - if(rigged && amount > 0) - explode() - return power_used - -/** - * Changes the charge of the cell. - * Args: - * - amount: The energy to give to the cell (can be negative). - * Returns: The energy that was given to the cell (can be negative). - */ -/obj/item/stock_parts/cell/proc/change(amount) - var/energy_used = clamp(amount, -charge, maxcharge - charge) - charge += energy_used - if(rigged && energy_used) - explode() - return energy_used - -/obj/item/stock_parts/cell/examine(mob/user) - . = ..() - if(rigged) - . += span_danger("This power cell seems to be faulty!") - else - . += "The charge meter reads [CEILING(percent(), 0.1)]%." //so it doesn't say 0% charge when the overlay indicates it still has charge - -/obj/item/stock_parts/cell/suicide_act(mob/living/user) - user.visible_message(span_suicide("[user] is licking the electrodes of [src]! It looks like [user.p_theyre()] trying to commit suicide!")) - return FIRELOSS - -/obj/item/stock_parts/cell/proc/on_reagent_change(datum/reagents/holder, ...) - SIGNAL_HANDLER - rigged = (corrupted || holder.has_reagent(/datum/reagent/toxin/plasma, 5)) ? TRUE : FALSE //has_reagent returns the reagent datum - return NONE - - -/obj/item/stock_parts/cell/proc/explode() - if(!charge) - return - var/range_devastation = -1 - var/range_heavy = round(sqrt(charge / (3.6 * STANDARD_CELL_CHARGE))) - var/range_light = round(sqrt(charge / (0.9 * STANDARD_CELL_CHARGE))) - var/range_flash = range_light - if(!range_light) - rigged = FALSE - corrupt() - return - - message_admins("[ADMIN_LOOKUPFLW(usr)] has triggered a rigged/corrupted power cell explosion at [AREACOORD(loc)].") - usr?.log_message("triggered a rigged/corrupted power cell explosion", LOG_GAME) - usr?.log_message("triggered a rigged/corrupted power cell explosion", LOG_VICTIM, log_globally = FALSE) - - explosion(src, devastation_range = range_devastation, heavy_impact_range = range_heavy, light_impact_range = range_light, flash_range = range_flash) - qdel(src) - -/obj/item/stock_parts/cell/proc/corrupt(force) - charge /= 2 - maxcharge = max(maxcharge/2, chargerate) - if (force || prob(10)) - rigged = TRUE //broken batterys are dangerous - corrupted = TRUE - -/obj/item/stock_parts/cell/emp_act(severity) - . = ..() - if(. & EMP_PROTECT_SELF) - return - use(STANDARD_CELL_CHARGE / severity, force = TRUE) - -/obj/item/stock_parts/cell/ex_act(severity, target) - . = ..() - if(QDELETED(src)) - return FALSE - - switch(severity) - if(EXPLODE_HEAVY) - if(prob(50)) - corrupt() - if(EXPLODE_LIGHT) - if(prob(25)) - corrupt() - - return TRUE - -/obj/item/stock_parts/cell/attack_self(mob/user) - if(ishuman(user)) - var/mob/living/carbon/human/H = user - var/obj/item/organ/internal/stomach/maybe_stomach = H.get_organ_slot(ORGAN_SLOT_STOMACH) - - if(istype(maybe_stomach, /obj/item/organ/internal/stomach/ethereal)) - - var/charge_limit = ETHEREAL_CHARGE_DANGEROUS - CELL_POWER_GAIN - var/obj/item/organ/internal/stomach/ethereal/stomach = maybe_stomach - var/obj/item/stock_parts/cell/stomach_cell = stomach.cell - if((stomach.drain_time > world.time) || !stomach) - return - if(charge < CELL_POWER_DRAIN) - to_chat(H, span_warning("[src] doesn't have enough power!")) - return - if(stomach_cell.charge() > charge_limit) - to_chat(H, span_warning("Your charge is full!")) - return - to_chat(H, span_notice("You begin clumsily channeling power from [src] into your body.")) - stomach.drain_time = world.time + CELL_DRAIN_TIME - while(do_after(user, CELL_DRAIN_TIME, target = src)) - if((charge < CELL_POWER_DRAIN) || (stomach_cell.charge() > charge_limit)) - return - if(istype(stomach)) - to_chat(H, span_notice("You receive some charge from [src], wasting some in the process.")) - stomach.adjust_charge(CELL_POWER_GAIN) - charge -= CELL_POWER_DRAIN //you waste way more than you receive, so that ethereals cant just steal one cell and forget about hunger - else - to_chat(H, span_warning("You can't receive charge from [src]!")) - return - - -/obj/item/stock_parts/cell/blob_act(obj/structure/blob/B) - SSexplosions.high_mov_atom += src - -/obj/item/stock_parts/cell/proc/get_electrocute_damage() - return ELECTROCUTE_DAMAGE(charge / max(0.001 * STANDARD_CELL_CHARGE, 1)) // Wouldn't want it to consider more energy than whatever is actually in the cell if for some strange reason someone set the STANDARD_CELL_CHARGE to below 1kJ. - -/obj/item/stock_parts/cell/get_part_rating() - return maxcharge * 10 + charge /* Cell variants*/ -/obj/item/stock_parts/cell/empty +/obj/item/stock_parts/power_store/cell/empty empty = TRUE -/obj/item/stock_parts/cell/crap - name = "\improper Nanotrasen brand rechargeable AA battery" +/obj/item/stock_parts/power_store/cell/crap + name = "\improper Nanotrasen brand rechargeable AA cell" desc = "You can't top the plasma top." //TOTALLY TRADEMARK INFRINGEMENT icon_state = "aa_cell" maxcharge = STANDARD_CELL_CHARGE * 0.5 custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT*0.4) -/obj/item/stock_parts/cell/crap/Initialize(mapload) +/obj/item/stock_parts/power_store/cell/crap/Initialize(mapload) AddElement(/datum/element/update_icon_blocker) return ..() -/obj/item/stock_parts/cell/crap/empty +/obj/item/stock_parts/power_store/cell/crap/empty empty = TRUE -/obj/item/stock_parts/cell/upgraded +/obj/item/stock_parts/power_store/cell/upgraded name = "upgraded power cell" desc = "A power cell with a slightly higher capacity than normal!" icon_state = "9v_cell" @@ -330,82 +46,82 @@ custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT*0.5) chargerate = STANDARD_CELL_RATE * 0.5 -/obj/item/stock_parts/cell/upgraded/Initialize(mapload) +/obj/item/stock_parts/power_store/cell/upgraded/Initialize(mapload) AddElement(/datum/element/update_icon_blocker) return ..() -/obj/item/stock_parts/cell/upgraded/plus +/obj/item/stock_parts/power_store/cell/upgraded/plus name = "upgraded power cell+" desc = "A power cell with an even higher capacity than the base model!" maxcharge = STANDARD_CELL_CHARGE * 5 -/obj/item/stock_parts/cell/secborg - name = "security borg rechargeable D battery" +/obj/item/stock_parts/power_store/cell/secborg + name = "security borg rechargeable D cell" maxcharge = STANDARD_CELL_CHARGE * 0.6 custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT*0.4) -/obj/item/stock_parts/cell/secborg/empty +/obj/item/stock_parts/power_store/cell/secborg/empty empty = TRUE -/obj/item/stock_parts/cell/mini_egun +/obj/item/stock_parts/power_store/cell/mini_egun name = "miniature energy gun power cell" maxcharge = STANDARD_CELL_CHARGE * 0.6 -/obj/item/stock_parts/cell/hos_gun +/obj/item/stock_parts/power_store/cell/hos_gun name = "X-01 multiphase energy gun power cell" maxcharge = STANDARD_CELL_CHARGE * 1.2 -/obj/item/stock_parts/cell/pulse //200 pulse shots +/obj/item/stock_parts/power_store/cell/pulse //200 pulse shots name = "pulse rifle power cell" maxcharge = STANDARD_CELL_CHARGE * 40 chargerate = STANDARD_CELL_RATE * 0.75 -/obj/item/stock_parts/cell/pulse/carbine //25 pulse shots +/obj/item/stock_parts/power_store/cell/pulse/carbine //25 pulse shots name = "pulse carbine power cell" maxcharge = STANDARD_CELL_CHARGE * 5 -/obj/item/stock_parts/cell/pulse/pistol //10 pulse shots +/obj/item/stock_parts/power_store/cell/pulse/pistol //10 pulse shots name = "pulse pistol power cell" maxcharge = STANDARD_CELL_CHARGE * 2 -/obj/item/stock_parts/cell/ninja +/obj/item/stock_parts/power_store/cell/ninja name = "black power cell" icon_state = "bscell" maxcharge = STANDARD_CELL_CHARGE * 10 custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT*0.6) chargerate = STANDARD_CELL_RATE -/obj/item/stock_parts/cell/high +/obj/item/stock_parts/power_store/cell/high name = "high-capacity power cell" icon_state = "hcell" maxcharge = STANDARD_CELL_CHARGE * 10 custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT*0.6) chargerate = STANDARD_CELL_RATE * 0.75 -/obj/item/stock_parts/cell/high/empty +/obj/item/stock_parts/power_store/cell/high/empty empty = TRUE -/obj/item/stock_parts/cell/super +/obj/item/stock_parts/power_store/cell/super name = "super-capacity power cell" icon_state = "scell" maxcharge = STANDARD_CELL_CHARGE * 20 custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT * 3) chargerate = STANDARD_CELL_RATE -/obj/item/stock_parts/cell/super/empty +/obj/item/stock_parts/power_store/cell/super/empty empty = TRUE -/obj/item/stock_parts/cell/hyper +/obj/item/stock_parts/power_store/cell/hyper name = "hyper-capacity power cell" icon_state = "hpcell" maxcharge = STANDARD_CELL_CHARGE * 30 custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT * 4) chargerate = STANDARD_CELL_RATE * 1.5 -/obj/item/stock_parts/cell/hyper/empty +/obj/item/stock_parts/power_store/cell/hyper/empty empty = TRUE -/obj/item/stock_parts/cell/bluespace +/obj/item/stock_parts/power_store/cell/bluespace name = "bluespace power cell" desc = "A rechargeable transdimensional power cell." icon_state = "bscell" @@ -413,10 +129,10 @@ custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT*6) chargerate = STANDARD_CELL_RATE * 2 -/obj/item/stock_parts/cell/bluespace/empty +/obj/item/stock_parts/power_store/cell/bluespace/empty empty = TRUE -/obj/item/stock_parts/cell/infinite +/obj/item/stock_parts/power_store/cell/infinite name = "infinite-capacity power cell" icon_state = "icell" maxcharge = INFINITY //little disappointing if you examine it and it's not huge @@ -424,10 +140,10 @@ chargerate = INFINITY ratingdesc = FALSE -/obj/item/stock_parts/cell/infinite/use(used, force = FALSE) +/obj/item/stock_parts/power_store/cell/infinite/use(used, force = FALSE) return TRUE -/obj/item/stock_parts/cell/infinite/abductor +/obj/item/stock_parts/power_store/cell/infinite/abductor name = "void core" desc = "An alien power cell that produces energy seemingly out of nowhere." icon = 'icons/obj/antags/abductor.dmi' @@ -435,11 +151,11 @@ maxcharge = STANDARD_CELL_CHARGE * 50 ratingdesc = FALSE -/obj/item/stock_parts/cell/infinite/abductor/Initialize(mapload) +/obj/item/stock_parts/power_store/cell/infinite/abductor/Initialize(mapload) AddElement(/datum/element/update_icon_blocker) return ..() -/obj/item/stock_parts/cell/potato +/obj/item/stock_parts/power_store/cell/potato name = "potato battery" desc = "A rechargeable starch based power cell." icon = 'icons/obj/service/hydroponics/harvest.dmi' @@ -451,26 +167,26 @@ grown_battery = TRUE //it has the overlays for wires custom_premium_price = PAYCHECK_CREW -/obj/item/stock_parts/cell/potato/Initialize(mapload, override_maxcharge) +/obj/item/stock_parts/power_store/cell/potato/Initialize(mapload, override_maxcharge) charge = maxcharge * 0.3 . = ..() -/obj/item/stock_parts/cell/emproof +/obj/item/stock_parts/power_store/cell/emproof name = "\improper EMP-proof cell" desc = "An EMP-proof cell." maxcharge = STANDARD_CELL_CHARGE * 0.5 -/obj/item/stock_parts/cell/emproof/Initialize(mapload) +/obj/item/stock_parts/power_store/cell/emproof/Initialize(mapload) AddElement(/datum/element/empprotection, EMP_PROTECT_SELF) return ..() -/obj/item/stock_parts/cell/emproof/empty +/obj/item/stock_parts/power_store/cell/emproof/empty empty = TRUE -/obj/item/stock_parts/cell/emproof/corrupt() +/obj/item/stock_parts/power_store/cell/emproof/corrupt() return -/obj/item/stock_parts/cell/emproof/slime +/obj/item/stock_parts/power_store/cell/emproof/slime name = "EMP-proof slime core" desc = "A yellow slime core infused with plasma. Its organic nature makes it immune to EMPs." icon = 'icons/mob/simple/slimes.dmi' @@ -480,21 +196,21 @@ charge_light_type = null connector_type = "slimecore" -/obj/item/stock_parts/cell/emergency_light +/obj/item/stock_parts/power_store/cell/emergency_light name = "miniature power cell" desc = "A tiny power cell with a very low power capacity. Used in light fixtures to power them in the event of an outage." maxcharge = STANDARD_CELL_CHARGE * 0.12 //Emergency lights use 0.2 W per tick, meaning ~10 minutes of emergency power from a cell custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT*0.2) w_class = WEIGHT_CLASS_TINY -/obj/item/stock_parts/cell/emergency_light/Initialize(mapload) +/obj/item/stock_parts/power_store/cell/emergency_light/Initialize(mapload) . = ..() var/area/area = get_area(src) if(area) if(!area.lightswitch || !area.light_power) charge = 0 //For naturally depowered areas, we start with no power -/obj/item/stock_parts/cell/crystal_cell +/obj/item/stock_parts/power_store/cell/crystal_cell name = "crystal power cell" desc = "A very high power cell made from crystallized plasma" icon_state = "crystal_cell" @@ -505,10 +221,10 @@ custom_materials = null grind_results = null -/obj/item/stock_parts/cell/inducer_supply +/obj/item/stock_parts/power_store/cell/inducer_supply maxcharge = STANDARD_CELL_CHARGE * 5 -/obj/item/stock_parts/cell/ethereal +/obj/item/stock_parts/power_store/cell/ethereal name = "ahelp it" desc = "you sohuldn't see this" maxcharge = ETHEREAL_CHARGE_DANGEROUS @@ -519,10 +235,6 @@ custom_materials = null grind_results = null -/obj/item/stock_parts/cell/ethereal/examine(mob/user) +/obj/item/stock_parts/power_store/cell/ethereal/examine(mob/user) . = ..() CRASH("[src.type] got examined by [user]") - -#undef CELL_DRAIN_TIME -#undef CELL_POWER_GAIN -#undef CELL_POWER_DRAIN diff --git a/code/modules/power/lighting/light.dm b/code/modules/power/lighting/light.dm index 9d3eb222fb843..3781944ad0099 100644 --- a/code/modules/power/lighting/light.dm +++ b/code/modules/power/lighting/light.dm @@ -37,7 +37,7 @@ ///Count of number of times switched on/off, this is used to calculate the probability the light burns out var/switchcount = 0 ///Cell reference - var/obj/item/stock_parts/cell/cell + var/obj/item/stock_parts/power_store/cell /// If TRUE, then cell is null, but one is pretending to exist. /// This is to defer emergency cell creation unless necessary, as it is very expensive. var/has_mock_cell = TRUE @@ -321,7 +321,7 @@ /obj/machinery/light/get_cell() if (has_mock_cell) - cell = new /obj/item/stock_parts/cell/emergency_light(src) + cell = new /obj/item/stock_parts/power_store/cell/emergency_light(src) has_mock_cell = FALSE return cell @@ -421,7 +421,7 @@ new /obj/item/stack/cable_coil(loc, 1, "red") transfer_fingerprints_to(new_light) - var/obj/item/stock_parts/cell/real_cell = get_cell() + var/obj/item/stock_parts/power_store/real_cell = get_cell() if(!QDELETED(real_cell)) new_light.cell = real_cell real_cell.forceMove(new_light) @@ -482,8 +482,8 @@ /obj/machinery/light/proc/use_emergency_power(power_usage_amount = LIGHT_EMERGENCY_POWER_USE) if(!has_emergency_power(power_usage_amount)) return FALSE - var/obj/item/stock_parts/cell/real_cell = get_cell() - if(real_cell.charge > 2.5 * /obj/item/stock_parts/cell/emergency_light::maxcharge) //it's meant to handle 120 W, ya doofus + var/obj/item/stock_parts/power_store/real_cell = get_cell() + if(real_cell.charge > 2.5 * /obj/item/stock_parts/power_store/cell/emergency_light::maxcharge) //it's meant to handle 120 W, ya doofus visible_message(span_warning("[src] short-circuits from too powerful of a power cell!")) burn_out() return FALSE diff --git a/code/modules/power/lighting/light_construct.dm b/code/modules/power/lighting/light_construct.dm index 8b79c33d69bcb..2bca5e3b3f157 100644 --- a/code/modules/power/lighting/light_construct.dm +++ b/code/modules/power/lighting/light_construct.dm @@ -17,7 +17,7 @@ ///Reference for light object var/obj/machinery/light/new_light = null ///Reference for the internal cell - var/obj/item/stock_parts/cell/cell + var/obj/item/stock_parts/power_store/cell ///Can we support a cell? var/cell_connectors = TRUE @@ -71,14 +71,14 @@ if(!cell) return to_chat(user, span_notice("You telekinetically remove [cell].")) - var/obj/item/stock_parts/cell/cell_reference = cell + var/obj/item/stock_parts/power_store/cell_reference = cell cell = null cell_reference.forceMove(drop_location()) return cell_reference.attack_tk(user) /obj/structure/light_construct/attackby(obj/item/tool, mob/user, params) add_fingerprint(user) - if(istype(tool, /obj/item/stock_parts/cell)) + if(istype(tool, /obj/item/stock_parts/power_store/cell)) if(!cell_connectors) to_chat(user, span_warning("This [name] can't support a power cell!")) return diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index 71daf214019c7..5cfeab92f06ca 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -117,8 +117,6 @@ // returns true if the area has power on given channel (or doesn't require power). // defaults to power_channel /obj/machinery/proc/powered(chan = power_channel, ignore_use_power = FALSE) - if(!loc) - return FALSE if(!use_power && !ignore_use_power) return TRUE @@ -251,7 +249,7 @@ * - channel: The power channel to use. * Returns: The amount of energy the cell received. */ -/obj/machinery/proc/charge_cell(amount, obj/item/stock_parts/cell/cell, grid_only = FALSE, channel = AREA_USAGE_EQUIP) +/obj/machinery/proc/charge_cell(amount, obj/item/stock_parts/power_store/cell, grid_only = FALSE, channel = AREA_USAGE_EQUIP) var/demand = use_energy(min(amount, cell.used_charge()), channel = channel, ignore_apc = grid_only) var/power_given = cell.give(demand) return power_given @@ -451,11 +449,11 @@ power_source = Cable.powernet var/datum/powernet/PN - var/obj/item/stock_parts/cell/cell + var/obj/item/stock_parts/power_store/cell if (istype(power_source, /datum/powernet)) PN = power_source - else if (istype(power_source, /obj/item/stock_parts/cell)) + else if (istype(power_source, /obj/item/stock_parts/power_store)) cell = power_source else if (istype(power_source, /obj/machinery/power/apc)) var/obj/machinery/power/apc/apc = power_source @@ -494,7 +492,7 @@ return FALSE var/datum/powernet/PN = powernet_info["powernet"] - var/obj/item/stock_parts/cell/cell = powernet_info["cell"] + var/obj/item/stock_parts/power_store/cell = powernet_info["cell"] var/PN_damage = 0 var/cell_damage = 0 @@ -519,7 +517,7 @@ source_area.apc?.terminal?.use_energy(drained_energy) else if (istype(power_source, /datum/powernet)) PN.delayedload += (min(drained_energy, max(PN.newavail - PN.delayedload, 0))) - else if (istype(power_source, /obj/item/stock_parts/cell)) + else if (istype(power_source, /obj/item/stock_parts/power_store)) cell.use(drained_energy) return drained_energy diff --git a/code/modules/power/power_store.dm b/code/modules/power/power_store.dm new file mode 100644 index 0000000000000..688dc70908f36 --- /dev/null +++ b/code/modules/power/power_store.dm @@ -0,0 +1,326 @@ +#define CELL_DRAIN_TIME 35 +#define CELL_POWER_GAIN (0.06 * STANDARD_CELL_CHARGE) +#define CELL_POWER_DRAIN (0.75 * STANDARD_CELL_CHARGE) + +/** + * # Power store abstract type + * + * Abstract type for a stock part that holds power. + */ +/obj/item/stock_parts/power_store + name = "power store abstract" + /// The size icon overlay prefix. + var/cell_size_prefix = "cell" + ///Current charge in cell units + var/charge = 0 + /// Standard cell charge used for rating + var/rating_base = STANDARD_CELL_CHARGE + ///Maximum charge in cell units + var/maxcharge = STANDARD_CELL_CHARGE + ///If the cell has been booby-trapped by injecting it with plasma. Chance on use() to explode. + var/rigged = FALSE + ///If the power cell was damaged by an explosion, chance for it to become corrupted and function the same as rigged. + var/corrupted = FALSE + ///How much power is given per second in a recharger. + var/chargerate = STANDARD_CELL_RATE * 0.05 + ///If true, the cell will state it's maximum charge in it's description + var/ratingdesc = TRUE + ///If it's a grown that acts as a battery, add a wire overlay to it. + var/grown_battery = FALSE + ///What charge lige sprite to use, null if no light + var/charge_light_type = "standard" + ///What connector sprite to use when in a cell charger, null if no connectors + var/connector_type = "standard" + ///Does the cell start without any charge? + var/empty = FALSE + +/obj/item/stock_parts/power_store/get_cell() + return src + +/obj/item/stock_parts/power_store/Initialize(mapload, override_maxcharge) + . = ..() + create_reagents(5, INJECTABLE | DRAINABLE) + if (override_maxcharge) + maxcharge = override_maxcharge + rating = max(round(maxcharge / (rating_base * 10), 1), 1) + if(!charge) + charge = maxcharge + if(empty) + charge = 0 + if(ratingdesc) + desc += " This one has a rating of [display_energy(maxcharge)][prob(10) ? ", and you should not swallow it" : ""]." //joke works better if it's not on every cell + update_appearance() + + RegisterSignal(src, COMSIG_ITEM_MAGICALLY_CHARGED, PROC_REF(on_magic_charge)) + var/static/list/loc_connections = list( + COMSIG_ITEM_MAGICALLY_CHARGED = PROC_REF(on_magic_charge), + ) + AddElement(/datum/element/connect_loc, loc_connections) + +/** + * Signal proc for [COMSIG_ITEM_MAGICALLY_CHARGED] + * + * If we, or the item we're located in, is subject to the charge spell, gain some charge back + */ +/obj/item/stock_parts/power_store/proc/on_magic_charge(datum/source, datum/action/cooldown/spell/charge/spell, mob/living/caster) + SIGNAL_HANDLER + + // This shouldn't be running if we're not being held by a mob, + // or if we're not within an object being held by a mob, but just in case... + if(!ismovable(loc)) + return + + . = COMPONENT_ITEM_CHARGED + + if(prob(80)) + maxcharge -= rating_base * 0.2 + + if(maxcharge <= 1) // Div by 0 protection + maxcharge = 1 + . |= COMPONENT_ITEM_BURNT_OUT + + charge = maxcharge + update_appearance() + + // Guns need to process their chamber when we've been charged + if(isgun(loc)) + var/obj/item/gun/gun_loc = loc + gun_loc.process_chamber() + + // The thing we're in might have overlays or icon states for whether the cell is charged + if(!ismob(loc)) + loc.update_appearance() + + return . + +/obj/item/stock_parts/power_store/create_reagents(max_vol, flags) + . = ..() + RegisterSignals(reagents, list(COMSIG_REAGENTS_NEW_REAGENT, COMSIG_REAGENTS_ADD_REAGENT, COMSIG_REAGENTS_DEL_REAGENT, COMSIG_REAGENTS_REM_REAGENT), PROC_REF(on_reagent_change)) + RegisterSignal(reagents, COMSIG_QDELETING, PROC_REF(on_reagents_del)) + +/// Handles properly detaching signal hooks. +/obj/item/stock_parts/power_store/proc/on_reagents_del(datum/reagents/reagents) + SIGNAL_HANDLER + UnregisterSignal(reagents, list(COMSIG_REAGENTS_NEW_REAGENT, COMSIG_REAGENTS_ADD_REAGENT, COMSIG_REAGENTS_DEL_REAGENT, COMSIG_REAGENTS_REM_REAGENT, COMSIG_QDELETING)) + return NONE + +/obj/item/stock_parts/power_store/update_overlays() + . = ..() + if(grown_battery) + . += mutable_appearance('icons/obj/machines/cell_charger.dmi', "grown_wires") + if((charge < 0.01) || !charge_light_type) + return + . += mutable_appearance('icons/obj/machines/cell_charger.dmi', "[cell_size_prefix]-[charge_light_type]-o[(percent() >= 99.5) ? 2 : 1]") + +/obj/item/stock_parts/power_store/vv_edit_var(vname, vval) + if(vname == NAMEOF(src, charge)) + charge = clamp(vval, 0, maxcharge) + return TRUE + if(vname == NAMEOF(src, maxcharge)) + if(charge > vval) + charge = vval + if(vname == NAMEOF(src, corrupted) && vval && !corrupted) + corrupt(TRUE) + return TRUE + return ..() + + +/** + * Returns the percentage of the cell's charge. + */ +/obj/item/stock_parts/power_store/proc/percent() // return % charge of cell + return 100 * charge / maxcharge + +/** + * Returns the maximum charge of the cell. + */ +/obj/item/stock_parts/power_store/proc/max_charge() + return maxcharge + +/** + * Returns the current charge of the cell. + */ +/obj/item/stock_parts/power_store/proc/charge() + return charge + +/** + * Returns the amount of charge used on the cell. + */ +/obj/item/stock_parts/power_store/proc/used_charge() + return maxcharge - charge + +/// Use power from the cell. +/// Args: +/// - used: Amount of power in joules to use. +/// - force: If true, uses the remaining power from the cell if there isn't enough power to supply the demand. +/// Returns: The power used from the cell in joules. +/obj/item/stock_parts/power_store/use(used, force = FALSE) + var/power_used = min(used, charge) + if(rigged && power_used > 0) + explode() + return 0 // The cell decided to explode so we won't be able to use it. + if(!force && charge < used) + return 0 + charge -= power_used + if(!istype(loc, /obj/machinery/power/apc)) + SSblackbox.record_feedback("tally", "cell_used", 1, type) + return power_used + +/// Recharge the cell. +/// Args: +/// - amount: The amount of energy to give to the cell in joules. +/// Returns: The power given to the cell in joules. +/obj/item/stock_parts/power_store/proc/give(amount) + var/power_used = min(maxcharge-charge,amount) + charge += power_used + if(rigged && amount > 0) + explode() + return power_used + +/** + * Changes the charge of the cell. + * Args: + * - amount: The energy to give to the cell (can be negative). + * Returns: The energy that was given to the cell (can be negative). + */ +/obj/item/stock_parts/power_store/proc/change(amount) + var/energy_used = clamp(amount, -charge, maxcharge - charge) + charge += energy_used + if(rigged && energy_used) + explode() + return energy_used + +/obj/item/stock_parts/power_store/examine(mob/user) + . = ..() + if(rigged) + . += span_danger("This [name] seems to be faulty!") + else + . += "The charge meter reads [CEILING(percent(), 0.1)]%." //so it doesn't say 0% charge when the overlay indicates it still has charge + +/obj/item/stock_parts/power_store/proc/on_reagent_change(datum/reagents/holder, ...) + SIGNAL_HANDLER + rigged = (corrupted || holder.has_reagent(/datum/reagent/toxin/plasma, 5)) ? TRUE : FALSE //has_reagent returns the reagent datum + return NONE + + +/obj/item/stock_parts/power_store/proc/explode() + if(!charge) + return + var/range_devastation = -1 + var/range_heavy = round(sqrt(charge / (3.6 * rating_base))) + var/range_light = round(sqrt(charge / (0.9 * rating_base))) + var/range_flash = range_light + if(!range_light) + rigged = FALSE + corrupt() + return + + message_admins("[ADMIN_LOOKUPFLW(usr)] has triggered a rigged/corrupted power cell explosion at [AREACOORD(loc)].") + usr?.log_message("triggered a rigged/corrupted power cell explosion", LOG_GAME) + usr?.log_message("triggered a rigged/corrupted power cell explosion", LOG_VICTIM, log_globally = FALSE) + + explosion(src, devastation_range = range_devastation, heavy_impact_range = range_heavy, light_impact_range = range_light, flash_range = range_flash) + qdel(src) + +/obj/item/stock_parts/power_store/proc/corrupt(force) + charge /= 2 + maxcharge = max(maxcharge/2, chargerate) + if (force || prob(10)) + rigged = TRUE //broken batterys are dangerous + corrupted = TRUE + +/obj/item/stock_parts/power_store/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return + use(STANDARD_CELL_CHARGE / severity, force = TRUE) + +/obj/item/stock_parts/power_store/ex_act(severity, target) + . = ..() + if(QDELETED(src)) + return FALSE + + switch(severity) + if(EXPLODE_HEAVY) + if(prob(50)) + corrupt() + if(EXPLODE_LIGHT) + if(prob(25)) + corrupt() + + return TRUE + +/obj/item/stock_parts/power_store/suicide_act(mob/living/user) + user.visible_message(span_suicide("[user] is licking the electrodes of [src]! It looks like [user.p_theyre()] trying to commit suicide!")) + do_sparks(2, TRUE, user) + var/eating_success = do_after(user, 5 SECONDS, src) + if(QDELETED(user)) + return SHAME + if(!eating_success || QDELETED(src) || charge == 0) + user.visible_message(span_suicide("[user] chickens out!")) + return SHAME + playsound(user, 'sound/effects/sparks1.ogg', charge / maxcharge) + var/damage = charge / (1 KILO JOULES) + user.electrocute_act(damage, src, 1, SHOCK_IGNORE_IMMUNITY|SHOCK_DELAY_STUN|SHOCK_NOGLOVES) + charge = 0 + update_appearance() + if(user.stat != DEAD) + to_chat(user, span_suicide("There's not enough charge in [src] to kill you!")) + return SHAME + addtimer(CALLBACK(src, PROC_REF(gib_user), user, charge), 3 SECONDS) + return MANUAL_SUICIDE + +/obj/item/stock_parts/power_store/proc/gib_user(mob/living/user, discharged_energy) + if(QDELETED(user)) + return + if(discharged_energy < STANDARD_BATTERY_CHARGE) + return + user.dropItemToGround(src) + user.dust(just_ash = TRUE) + playsound(src, 'sound/magic/lightningshock.ogg', 50, TRUE, 10) + tesla_zap(source = src, zap_range = 10, power = discharged_energy) + +/obj/item/stock_parts/power_store/attack_self(mob/user) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + var/obj/item/organ/internal/stomach/maybe_stomach = H.get_organ_slot(ORGAN_SLOT_STOMACH) + + if(istype(maybe_stomach, /obj/item/organ/internal/stomach/ethereal)) + + var/charge_limit = ETHEREAL_CHARGE_DANGEROUS - CELL_POWER_GAIN + var/obj/item/organ/internal/stomach/ethereal/stomach = maybe_stomach + var/obj/item/stock_parts/power_store/stomach_cell = stomach.cell + if((stomach.drain_time > world.time) || !stomach) + return + if(charge < CELL_POWER_DRAIN) + to_chat(H, span_warning("[src] doesn't have enough power!")) + return + if(stomach_cell.charge() > charge_limit) + to_chat(H, span_warning("Your charge is full!")) + return + to_chat(H, span_notice("You begin clumsily channeling power from [src] into your body.")) + stomach.drain_time = world.time + CELL_DRAIN_TIME + while(do_after(user, CELL_DRAIN_TIME, target = src)) + if((charge < CELL_POWER_DRAIN) || (stomach_cell.charge() > charge_limit)) + return + if(istype(stomach)) + to_chat(H, span_notice("You receive some charge from [src], wasting some in the process.")) + stomach.adjust_charge(CELL_POWER_GAIN) + charge -= CELL_POWER_DRAIN //you waste way more than you receive, so that ethereals cant just steal one cell and forget about hunger + else + to_chat(H, span_warning("You can't receive charge from [src]!")) + return + + +/obj/item/stock_parts/power_store/blob_act(obj/structure/blob/B) + SSexplosions.high_mov_atom += src + +/obj/item/stock_parts/power_store/proc/get_electrocute_damage() + return ELECTROCUTE_DAMAGE(charge / max(0.001 * STANDARD_CELL_CHARGE, 1)) // Wouldn't want it to consider more energy than whatever is actually in the cell if for some strange reason someone set the STANDARD_CELL_CHARGE to below 1kJ. + +/obj/item/stock_parts/power_store/get_part_rating() + return maxcharge * 10 + charge + +#undef CELL_DRAIN_TIME +#undef CELL_POWER_GAIN +#undef CELL_POWER_DRAIN diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index 0cad7bdcef557..935601b834bc3 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -23,7 +23,7 @@ can_change_cable_layer = TRUE /// The charge capacity. - var/capacity = 50 * STANDARD_CELL_CHARGE // The board defaults with 5 high capacity power cells. + var/capacity = 50 * STANDARD_BATTERY_CHARGE // The board defaults with 5 high capacity batteries. /// The current charge. var/charge = 0 @@ -71,7 +71,7 @@ power_coefficient += capacitor.tier input_level_max = initial(input_level_max) * power_coefficient output_level_max = initial(output_level_max) * power_coefficient - for(var/obj/item/stock_parts/cell/power_cell in component_parts) + for(var/obj/item/stock_parts/power_store/power_cell in component_parts) max_charge += power_cell.maxcharge new_charge += power_cell.charge capacity = max_charge @@ -203,7 +203,7 @@ return ..() /obj/machinery/power/smes/on_deconstruction(disassembled) - for(var/obj/item/stock_parts/cell/cell in component_parts) + for(var/obj/item/stock_parts/power_store/cell in component_parts) cell.charge = (charge / capacity) * cell.maxcharge /obj/machinery/power/smes/Destroy() @@ -431,7 +431,7 @@ outputting = output_attempt output_level = rand(0, output_level_max) input_level = rand(0, input_level_max) - charge -= STANDARD_CELL_CHARGE/severity + charge -= STANDARD_BATTERY_CHARGE/severity if (charge < 0) charge = 0 update_appearance() @@ -442,19 +442,19 @@ name = "super capacity power storage unit" desc = "A super-capacity superconducting magnetic energy storage (SMES) unit. Relatively rare, and typically installed in long-range outposts where minimal maintenance is expected." circuit = /obj/item/circuitboard/machine/smes/super - capacity = 100 * STANDARD_CELL_CHARGE + capacity = 100 * STANDARD_BATTERY_CHARGE /obj/machinery/power/smes/super/full - charge = 100 * STANDARD_CELL_CHARGE + charge = 100 * STANDARD_BATTERY_CHARGE /obj/machinery/power/smes/full - charge = 50 * STANDARD_CELL_CHARGE + charge = 50 * STANDARD_BATTERY_CHARGE /obj/machinery/power/smes/ship - charge = 20 * STANDARD_CELL_CHARGE + charge = 20 * STANDARD_BATTERY_CHARGE /obj/machinery/power/smes/engineering - charge = 50 * STANDARD_CELL_CHARGE // Engineering starts with some charge for singulo //sorry little one, singulo as engine is gone + charge = 50 * STANDARD_BATTERY_CHARGE // Engineering starts with some charge for singulo //sorry little one, singulo as engine is gone output_level = 90 KILO WATTS /obj/machinery/power/smes/magical diff --git a/code/modules/projectiles/ammunition/ballistic/foam.dm b/code/modules/projectiles/ammunition/ballistic/foam.dm index 2895d74555be5..7ffa317897a83 100644 --- a/code/modules/projectiles/ammunition/ballistic/foam.dm +++ b/code/modules/projectiles/ammunition/ballistic/foam.dm @@ -10,6 +10,8 @@ harmful = FALSE var/modified = FALSE var/static/list/insertable_items_hint = list(/obj/item/pen) + ///For colored magazine overlays. + var/tip_color = "blue" /obj/item/ammo_casing/foam_dart/Initialize(mapload) . = ..() @@ -56,4 +58,5 @@ projectile_type = /obj/projectile/bullet/foam_dart/riot icon_state = "foamdart_riot" base_icon_state = "foamdart_riot" + tip_color = "red" custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT* 1.125) diff --git a/code/modules/projectiles/boxes_magazines/external/smg.dm b/code/modules/projectiles/boxes_magazines/external/smg.dm index 7e9fc44f58578..3ebb459ed9319 100644 --- a/code/modules/projectiles/boxes_magazines/external/smg.dm +++ b/code/modules/projectiles/boxes_magazines/external/smg.dm @@ -76,7 +76,7 @@ /obj/item/ammo_box/magazine/smgm45 name = "SMG magazine (.45)" - icon_state = "c20r45-24" + icon_state = "c20r45" base_icon_state = "c20r45" ammo_type = /obj/item/ammo_casing/c45 caliber = CALIBER_45 diff --git a/code/modules/projectiles/boxes_magazines/external/toy.dm b/code/modules/projectiles/boxes_magazines/external/toy.dm index 3a841c605a18c..a153c25107aa8 100644 --- a/code/modules/projectiles/boxes_magazines/external/toy.dm +++ b/code/modules/projectiles/boxes_magazines/external/toy.dm @@ -29,17 +29,30 @@ /obj/item/ammo_box/magazine/toy/smgm45 name = "donksoft SMG magazine" icon_state = "c20r45-toy" - base_icon_state = "c20r45" + base_icon_state = "c20r45-toy" caliber = CALIBER_FOAM ammo_type = /obj/item/ammo_casing/foam_dart max_ammo = 20 /obj/item/ammo_box/magazine/toy/smgm45/update_icon_state() . = ..() - icon_state = "[base_icon_state]-[round(ammo_count(), 2)]" + icon_state = "[base_icon_state]-base" + +/obj/item/ammo_box/magazine/toy/smgm45/update_overlays() + . = ..() + if(!LAZYLEN(stored_ammo)) + return + for(var/i in 1 to stored_ammo.len) + var/round_number = round(i, 2) //i meant the number of the round in the magazine, but i guess it's a round number too lol. + if(round_number == i) //only count odd numbers. + continue + var/obj/item/ammo_casing/foam_dart/boolet = stored_ammo[i] + . += "c20r45-foam-[boolet.tip_color]-[round_number]" + /obj/item/ammo_box/magazine/toy/smgm45/riot icon_state = "c20r45-riot" + base_icon_state = "c20r45-riot" ammo_type = /obj/item/ammo_casing/foam_dart/riot /obj/item/ammo_box/magazine/toy/m762 diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index b977441e9ae11..3571e0858c8af 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -5,8 +5,8 @@ icon = 'icons/obj/weapons/guns/energy.dmi' /// What type of power cell this uses - var/obj/item/stock_parts/cell/cell - var/cell_type = /obj/item/stock_parts/cell + var/obj/item/stock_parts/power_store/cell + var/cell_type = /obj/item/stock_parts/power_store/cell ///if the weapon has custom icons for individual ammo types it can switch between. ie disabler beams, taser, laser/lethals, ect. var/modifystate = FALSE var/list/ammo_type = list(/obj/item/ammo_casing/energy) diff --git a/code/modules/projectiles/guns/energy/energy_gun.dm b/code/modules/projectiles/guns/energy/energy_gun.dm index 78e75d1f30665..3ce3338bf8749 100644 --- a/code/modules/projectiles/guns/energy/energy_gun.dm +++ b/code/modules/projectiles/guns/energy/energy_gun.dm @@ -34,7 +34,7 @@ icon_state = "mini" inhand_icon_state = "gun" w_class = WEIGHT_CLASS_SMALL - cell_type = /obj/item/stock_parts/cell/mini_egun + cell_type = /obj/item/stock_parts/power_store/cell/mini_egun ammo_x_offset = 2 charge_sections = 3 single_shot_type_overlay = FALSE @@ -75,7 +75,7 @@ /obj/item/gun/energy/e_gun/hos name = "\improper X-01 MultiPhase Energy Gun" desc = "This is an expensive, modern recreation of an antique laser gun. This gun has several unique firemodes, but lacks the ability to recharge over time." - cell_type = /obj/item/stock_parts/cell/hos_gun + cell_type = /obj/item/stock_parts/power_store/cell/hos_gun icon_state = "hoslaser" w_class = WEIGHT_CLASS_NORMAL force = 10 diff --git a/code/modules/projectiles/guns/energy/laser_gatling.dm b/code/modules/projectiles/guns/energy/laser_gatling.dm index 0f5e7d3deac58..e4375bd4832aa 100644 --- a/code/modules/projectiles/guns/energy/laser_gatling.dm +++ b/code/modules/projectiles/guns/energy/laser_gatling.dm @@ -13,7 +13,7 @@ w_class = WEIGHT_CLASS_HUGE var/obj/item/gun/energy/minigun/gun - var/obj/item/stock_parts/cell/minigun/battery + var/obj/item/stock_parts/power_store/cell/minigun/battery var/armed = FALSE //whether the gun is attached, FALSE is attached, TRUE is the gun is wielded. var/overheat = 0 var/overheat_max = 40 @@ -102,7 +102,7 @@ custom_materials = null weapon_weight = WEAPON_HEAVY ammo_type = list(/obj/item/ammo_casing/energy/laser/minigun) - cell_type = /obj/item/stock_parts/cell/crap + cell_type = /obj/item/stock_parts/power_store/cell/crap item_flags = NEEDS_PERMIT | SLOWS_WHILE_IN_HAND can_charge = FALSE var/obj/item/minigunpack/ammo_pack @@ -148,7 +148,7 @@ return FALSE return ..() -/obj/item/stock_parts/cell/minigun +/obj/item/stock_parts/power_store/cell/minigun name = "gatling gun fusion core" desc = "Where did these come from?" maxcharge = 500 * STANDARD_CELL_CHARGE diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm index a589594d79628..0635de8037adf 100644 --- a/code/modules/projectiles/guns/energy/pulse.dm +++ b/code/modules/projectiles/guns/energy/pulse.dm @@ -10,7 +10,7 @@ obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BACK ammo_type = list(/obj/item/ammo_casing/energy/laser/pulse, /obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/laser) - cell_type = /obj/item/stock_parts/cell/pulse + cell_type = /obj/item/stock_parts/power_store/cell/pulse /obj/item/gun/energy/pulse/Initialize(mapload) . = ..() @@ -44,7 +44,7 @@ icon_state = "pulse_carbine" worn_icon_state = "gun" inhand_icon_state = null - cell_type = /obj/item/stock_parts/cell/pulse/carbine + cell_type = /obj/item/stock_parts/power_store/cell/pulse/carbine /obj/item/gun/energy/pulse/carbine/add_seclight_point() AddComponent(/datum/component/seclite_attachable, \ @@ -63,7 +63,7 @@ name = "pulse destroyer" desc = "A heavy-duty energy rifle built for pure destruction." worn_icon_state = "pulse" - cell_type = /obj/item/stock_parts/cell/infinite + cell_type = /obj/item/stock_parts/power_store/cell/infinite ammo_type = list(/obj/item/ammo_casing/energy/laser/pulse) /obj/item/gun/energy/pulse/destroyer/attack_self(mob/living/user) @@ -77,7 +77,7 @@ icon_state = "pulse_pistol" worn_icon_state = "gun" inhand_icon_state = "gun" - cell_type = /obj/item/stock_parts/cell/pulse/pistol + cell_type = /obj/item/stock_parts/power_store/cell/pulse/pistol /obj/item/gun/energy/pulse/pistol/loyalpin pin = /obj/item/firing_pin/implant/mindshield @@ -87,4 +87,4 @@ desc = "A compact pulse core in a classic handgun frame for Nanotrasen officers. It's not the size of the gun, it's the size of the hole it puts through people." icon_state = "m1911" inhand_icon_state = "gun" - cell_type = /obj/item/stock_parts/cell/infinite + cell_type = /obj/item/stock_parts/power_store/cell/infinite diff --git a/code/modules/projectiles/guns/energy/recharge.dm b/code/modules/projectiles/guns/energy/recharge.dm index 1b9409478cd7e..0aa14b48c32f6 100644 --- a/code/modules/projectiles/guns/energy/recharge.dm +++ b/code/modules/projectiles/guns/energy/recharge.dm @@ -4,7 +4,7 @@ base_icon_state = "kineticgun" desc = "A self recharging gun. Holds one shot at a time." automatic_charge_overlays = FALSE - cell_type = /obj/item/stock_parts/cell/emproof + cell_type = /obj/item/stock_parts/power_store/cell/emproof /// If set to something, instead of an overlay, sets the icon_state directly. var/no_charge_state /// Does it hold charge when not put away? diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index a342b0e85f405..653cffcbeec7d 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -52,7 +52,7 @@ inhand_icon_state = "c20r" w_class = WEIGHT_CLASS_BULKY ammo_type = list(/obj/item/ammo_casing/energy/meteor) - cell_type = /obj/item/stock_parts/cell/potato + cell_type = /obj/item/stock_parts/power_store/cell/potato clumsy_check = 0 //Admin spawn only, might as well let clowns use it. selfcharge = 1 automatic_charge_overlays = FALSE @@ -297,7 +297,7 @@ desc = "An LMG that fires 3D-printed flechettes. They are slowly resupplied using the cyborg's internal power source." icon_state = "l6_cyborg" icon = 'icons/obj/weapons/guns/ballistic.dmi' - cell_type = /obj/item/stock_parts/cell/secborg + cell_type = /obj/item/stock_parts/power_store/cell/secborg ammo_type = list(/obj/item/ammo_casing/energy/c3dbullet) can_charge = FALSE use_cyborg_cell = TRUE @@ -314,7 +314,7 @@ desc = "A gun that changes temperatures. Comes with a collapsible stock." w_class = WEIGHT_CLASS_NORMAL ammo_type = list(/obj/item/ammo_casing/energy/temp, /obj/item/ammo_casing/energy/temp/hot) - cell_type = /obj/item/stock_parts/cell/high + cell_type = /obj/item/stock_parts/power_store/cell/high pin = null /obj/item/gun/energy/temperature/security diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index 68c4c2abff059..cbd6449269ccc 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -11,13 +11,13 @@ processing_flags = NONE /// The cell used to dispense reagents - var/obj/item/stock_parts/cell/cell - /// Efficiency used when converting cell power to reagents. Units (volume) per joule. - var/powerefficiency = 1e-4 + var/obj/item/stock_parts/power_store/cell + /// Efficiency used when converting cell power to reagents. Joule per volume. + var/power_cost = 0.1 KILO WATTS /// The current amount this machine is dispensing var/amount = 30 /// The rate at which this machine recharges the power cell. - var/recharge_amount = 1.25 KILO WATTS + var/recharge_amount = 0.3 KILO WATTS /// The temperature reagents are dispensed into the beaker var/dispensed_temperature = DEFAULT_REAGENT_TEMPERATURE /// If the UI has the pH meter shown @@ -124,7 +124,7 @@ if(in_range(user, src) || isobserver(user)) . += "The status display reads:\n\ Recharge rate: [display_power(recharge_amount, convert = FALSE)].\n\ - Energy cost: [siunit(INVERSE(powerefficiency), "J/u", 3)]." + Energy cost: [siunit(power_cost, "J/u", 3)]." . += span_notice("Use RMB to eject a stored beaker.") /obj/machinery/chem_dispenser/on_set_is_operational(old_value) @@ -278,7 +278,7 @@ var/datum/reagents/holder = beaker.reagents var/to_dispense = max(0, min(amount, holder.maximum_volume - holder.total_volume)) - if(!cell.use(to_dispense / powerefficiency)) + if(!cell.use(to_dispense * power_cost)) say("Not enough energy to complete operation!") return holder.add_reagent(reagent, to_dispense, reagtemp = dispensed_temperature, added_purity = base_reagent_purity) @@ -321,7 +321,7 @@ var/to_dispense = max(0, min(dispense_amount, holder.maximum_volume - holder.total_volume)) if(!to_dispense) continue - if(!cell.use(to_dispense / powerefficiency)) + if(!cell.use(to_dispense * power_cost)) say("Not enough energy to complete operation!") return holder.add_reagent(reagent, to_dispense, reagtemp = dispensed_temperature, added_purity = base_reagent_purity) @@ -412,7 +412,7 @@ if(. & EMP_PROTECT_SELF) return var/list/datum/reagents/R = list() - var/total = min(rand(7,15), FLOOR(cell.charge*powerefficiency, 1)) + var/total = min(rand(7,15), FLOOR(cell.charge*INVERSE(power_cost), 1)) var/datum/reagents/Q = new(total*10) if(beaker?.reagents) R += beaker.reagents @@ -422,7 +422,7 @@ chem_splash(get_turf(src), null, 3, R) if(beaker?.reagents) beaker.reagents.remove_all() - cell.use(total/powerefficiency) + cell.use(total * power_cost) cell.emp_act(severity) work_animation() visible_message(span_danger("[src] malfunctions, spraying chemicals everywhere!")) @@ -430,12 +430,12 @@ /obj/machinery/chem_dispenser/RefreshParts() . = ..() recharge_amount = initial(recharge_amount) - var/newpowereff = INVERSE(1.5e4) + var/new_power_cost = initial(power_cost) var/parts_rating = 0 - for(var/obj/item/stock_parts/cell/stock_cell in component_parts) + for(var/obj/item/stock_parts/power_store/stock_cell in component_parts) cell = stock_cell for(var/datum/stock_part/matter_bin/matter_bin in component_parts) - newpowereff += matter_bin.tier / 6e4 + new_power_cost -= (matter_bin.tier * 0.25 KILO WATTS) parts_rating += matter_bin.tier for(var/datum/stock_part/capacitor/capacitor in component_parts) recharge_amount *= capacitor.tier @@ -446,7 +446,7 @@ else dispensable_reagents -= upgrade_reagents parts_rating += servo.tier - powerefficiency = round(newpowereff, 1e-5) + power_cost = max(new_power_cost, 0.1 KILO WATTS) /obj/machinery/chem_dispenser/proc/replace_beaker(mob/living/user, obj/item/reagent_containers/new_beaker) if(!user) diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm index b3a287707629b..868917893c90c 100644 --- a/code/modules/reagents/chemistry/recipes/medicine.dm +++ b/code/modules/reagents/chemistry/recipes/medicine.dm @@ -345,6 +345,7 @@ /datum/chemical_reaction/medicine/medsuture required_reagents = list(/datum/reagent/cellulose = 10, /datum/reagent/toxin/formaldehyde = 20, /datum/reagent/medicine/polypyr = 15) //This might be a bit much, reagent cost should be reviewed after implementation. + reaction_flags = REACTION_INSTANT reaction_tags = REACTION_TAG_EASY | REACTION_TAG_HEALING | REACTION_TAG_BRUTE /datum/chemical_reaction/medicine/medsuture/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume) @@ -354,6 +355,7 @@ /datum/chemical_reaction/medicine/medmesh required_reagents = list(/datum/reagent/cellulose = 10, /datum/reagent/consumable/aloejuice = 20, /datum/reagent/space_cleaner/sterilizine = 10) + reaction_flags = REACTION_INSTANT reaction_tags = REACTION_TAG_EASY | REACTION_TAG_HEALING | REACTION_TAG_BURN /datum/chemical_reaction/medicine/medmesh/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume) @@ -363,6 +365,7 @@ /datum/chemical_reaction/medicine/poultice required_reagents = list(/datum/reagent/toxin/bungotoxin = 20, /datum/reagent/cellulose = 20, /datum/reagent/consumable/aloejuice = 20) + reaction_flags = REACTION_INSTANT reaction_tags = REACTION_TAG_EASY | REACTION_TAG_HEALING | REACTION_TAG_BRUTE | REACTION_TAG_BURN /datum/chemical_reaction/medicine/poultice/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume) diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index 6407ff0fb8b2b..a60432c078429 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -262,7 +262,7 @@ required_container = /obj/item/slime_extract/yellow /datum/chemical_reaction/slime/slimecell/on_reaction(datum/reagents/holder, created_volume) - new /obj/item/stock_parts/cell/emproof/slime(get_turf(holder.my_atom)) + new /obj/item/stock_parts/power_store/cell/emproof/slime(get_turf(holder.my_atom)) ..() /datum/chemical_reaction/slime/slimeglow diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm index 89b9e7c748cb4..75fc8aef8920c 100644 --- a/code/modules/reagents/reagent_containers/blood_pack.dm +++ b/code/modules/reagents/reagent_containers/blood_pack.dm @@ -74,7 +74,7 @@ /obj/item/reagent_containers/blood/snail blood_type = "S" unique_blood = /datum/reagent/lube - + /obj/item/reagent_containers/blood/snail/examine() . = ..() . += span_notice("It's a bit slimy... The label indicates that this is meant for snails.") @@ -100,7 +100,7 @@ blood_type = "U" /obj/item/reagent_containers/blood/attackby(obj/item/tool, mob/user, params) - if (istype(tool, /obj/item/pen) || istype(tool, /obj/item/toy/crayon)) + if (IS_WRITING_UTENSIL(tool)) if(!user.can_write(tool)) return var/custom_label = tgui_input_text(user, "What would you like to label the blood pack?", "Blood Pack", name, MAX_NAME_LEN) diff --git a/code/modules/reagents/reagent_containers/cups/bottle.dm b/code/modules/reagents/reagent_containers/cups/bottle.dm index 0b47a89e4b2a0..97906b26240e5 100644 --- a/code/modules/reagents/reagent_containers/cups/bottle.dm +++ b/code/modules/reagents/reagent_containers/cups/bottle.dm @@ -510,7 +510,7 @@ balloon_alert(user, "transferred [transfer_amount] unit\s") flick("syrup_anim",src) - if(istype(attacking_item, /obj/item/pen)) + if(IS_WRITING_UTENSIL(attacking_item)) rename(user, attacking_item) attacking_item.update_appearance() diff --git a/code/modules/reagents/reagent_containers/misc.dm b/code/modules/reagents/reagent_containers/misc.dm index f7152204f9ebc..d2dc2adfb5f76 100644 --- a/code/modules/reagents/reagent_containers/misc.dm +++ b/code/modules/reagents/reagent_containers/misc.dm @@ -8,13 +8,13 @@ reagent_flags = OPENCONTAINER fill_icon_state = "maunafilling" fill_icon_thresholds = list(25) - var/obj/item/stock_parts/cell/cell + var/obj/item/stock_parts/power_store/cell var/open = FALSE var/on = FALSE /obj/item/reagent_containers/cup/maunamug/Initialize(mapload, vol) . = ..() - cell = new /obj/item/stock_parts/cell(src) + cell = new /obj/item/stock_parts/power_store/cell(src) /obj/item/reagent_containers/cup/maunamug/get_cell() return cell @@ -75,7 +75,7 @@ /obj/item/reagent_containers/cup/maunamug/attackby(obj/item/I, mob/user, params) add_fingerprint(user) - if(!istype(I, /obj/item/stock_parts/cell)) + if(!istype(I, /obj/item/stock_parts/power_store/cell)) return ..() if(!open) to_chat(user, span_warning("The battery case must be open to insert a power cell!")) diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index f02bfff4a0987..a6be96a43a811 100644 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -113,7 +113,7 @@ sort_tag = dest_tagger.currTag playsound(loc, 'sound/machines/twobeep_high.ogg', 100, TRUE) update_appearance() - else if(istype(item, /obj/item/pen)) + else if(IS_WRITING_UTENSIL(item)) if(!user.can_write(item)) return var/str = tgui_input_text(user, "Label text?", "Set label", max_length = MAX_NAME_LEN) diff --git a/code/modules/religion/religion_sects.dm b/code/modules/religion/religion_sects.dm index a8f23225a8ba8..0789cb2ac2086 100644 --- a/code/modules/religion/religion_sects.dm +++ b/code/modules/religion/religion_sects.dm @@ -146,7 +146,7 @@ do not heal organic limbs. You can now sacrifice cells, with favor depending on their charge." tgui_icon = "robot" alignment = ALIGNMENT_NEUT - desired_items = list(/obj/item/stock_parts/cell = "with battery charge") + desired_items = list(/obj/item/stock_parts/power_store = "with battery charge") rites_list = list(/datum/religion_rites/synthconversion, /datum/religion_rites/machine_blessing) altar_icon_state = "convertaltar-blue" max_favor = 2500 @@ -196,7 +196,7 @@ blessed.add_mood_event("blessing", /datum/mood_event/blessing) return TRUE -/datum/religion_sect/mechanical/on_sacrifice(obj/item/stock_parts/cell/power_cell, mob/living/chap) +/datum/religion_sect/mechanical/on_sacrifice(obj/item/stock_parts/power_store/cell/power_cell, mob/living/chap) if(!istype(power_cell)) return diff --git a/code/modules/research/designs/autolathe/engineering_designs.dm b/code/modules/research/designs/autolathe/engineering_designs.dm index 6d1bfed8ea1df..dc87b747959ca 100644 --- a/code/modules/research/designs/autolathe/engineering_designs.dm +++ b/code/modules/research/designs/autolathe/engineering_designs.dm @@ -76,7 +76,7 @@ id = "miniature_power_cell" build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE materials = list(/datum/material/glass =SMALL_MATERIAL_AMOUNT*0.2) - build_path = /obj/item/stock_parts/cell/emergency_light + build_path = /obj/item/stock_parts/power_store/cell/emergency_light category = list( RND_CATEGORY_INITIAL, RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_LIGHTING, diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index ef6c65d183175..8f857f77e8286 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -1177,3 +1177,23 @@ RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design/board/bookbinder + name = "Book Binder" + desc = "The circuit board for a book binder" + id = "bookbinder" + build_path = /obj/item/circuitboard/machine/bookbinder + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE + +/datum/design/board/libraryscanner + name = "Book Scanner" + desc = "The circuit board for a book scanner" + id = "libraryscanner" + build_path = /obj/item/circuitboard/machine/libraryscanner + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index 46e43b0ac6661..4e95e9d4dfda7 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -568,7 +568,7 @@ /datum/design/cyberimp_nutriment name = "Nutriment Pump Implant" - desc = "This implant with synthesize and pump into your bloodstream a small amount of nutriment when you are starving." + desc = "This implant will synthesize and pump into your bloodstream a small amount of nutriment when you are starving." id = "ci-nutriment" build_type = PROTOLATHE | AWAY_LATHE | MECHFAB construction_time = 4 SECONDS @@ -585,7 +585,7 @@ /datum/design/cyberimp_nutriment_plus name = "Nutriment Pump Implant PLUS" - desc = "This implant with synthesize and pump into your bloodstream a small amount of nutriment when you are hungry." + desc = "This implant will synthesize and pump into your bloodstream a small amount of nutriment when you are hungry." id = "ci-nutrimentplus" build_type = PROTOLATHE | AWAY_LATHE | MECHFAB construction_time = 5 SECONDS diff --git a/code/modules/research/designs/power_designs.dm b/code/modules/research/designs/power_designs.dm index 700f99a643504..deb2256ff10f0 100644 --- a/code/modules/research/designs/power_designs.dm +++ b/code/modules/research/designs/power_designs.dm @@ -4,12 +4,12 @@ /datum/design/basic_cell name = "Basic Power Cell" - desc = "A basic power cell that holds 1 MJ of energy." + desc = "A basic power cell that holds 10 KW of energy." id = "basic_cell" build_type = PROTOLATHE | AWAY_LATHE | AUTOLATHE |MECHFAB materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 7, /datum/material/glass =SMALL_MATERIAL_AMOUNT * 0.5) construction_time = 10 SECONDS - build_path = /obj/item/stock_parts/cell/empty + build_path = /obj/item/stock_parts/power_store/cell/empty category = list( RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1 ) @@ -17,12 +17,12 @@ /datum/design/high_cell name = "High-Capacity Power Cell" - desc = "A power cell that holds 10 MJ of energy." + desc = "A power cell that holds 100 KW of energy." id = "high_cell" build_type = PROTOLATHE | AWAY_LATHE | AUTOLATHE | MECHFAB materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 7, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.6) construction_time = 10 SECONDS - build_path = /obj/item/stock_parts/cell/high/empty + build_path = /obj/item/stock_parts/power_store/cell/high/empty category = list( RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1 ) @@ -30,12 +30,12 @@ /datum/design/super_cell name = "Super-Capacity Power Cell" - desc = "A power cell that holds 20 MJ of energy." + desc = "A power cell that holds 200 KW of energy." id = "super_cell" build_type = PROTOLATHE | AWAY_LATHE | MECHFAB materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 7, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.7) construction_time = 10 SECONDS - build_path = /obj/item/stock_parts/cell/super/empty + build_path = /obj/item/stock_parts/power_store/cell/super/empty category = list( RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_2 ) @@ -43,12 +43,12 @@ /datum/design/hyper_cell name = "Hyper-Capacity Power Cell" - desc = "A power cell that holds 30 MJ of energy." + desc = "A power cell that holds 300 KW of energy." id = "hyper_cell" build_type = PROTOLATHE | AWAY_LATHE | MECHFAB materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 7, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.8) construction_time = 10 SECONDS - build_path = /obj/item/stock_parts/cell/hyper/empty + build_path = /obj/item/stock_parts/power_store/cell/hyper/empty category = list( RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_3 ) @@ -56,17 +56,83 @@ /datum/design/bluespace_cell name = "Bluespace Power Cell" - desc = "A power cell that holds 40 MJ of energy." + desc = "A power cell that holds 400 KW of energy." id = "bluespace_cell" build_type = PROTOLATHE | AWAY_LATHE | MECHFAB materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 8, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 1.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.6, /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 1.6, /datum/material/titanium =SMALL_MATERIAL_AMOUNT * 3, /datum/material/bluespace =SMALL_MATERIAL_AMOUNT) construction_time = 10 SECONDS - build_path = /obj/item/stock_parts/cell/bluespace/empty + build_path = /obj/item/stock_parts/power_store/cell/bluespace/empty category = list( RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_4 ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING +/datum/design/basic_battery + name = "Basic Megacell" + desc = "A basic megacell that holds 1 MJ of energy." + id = "basic_battery" + build_type = PROTOLATHE | AWAY_LATHE | AUTOLATHE |MECHFAB + materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 12, /datum/material/glass =SMALL_MATERIAL_AMOUNT * 2) + construction_time = 10 SECONDS + build_path = /obj/item/stock_parts/power_store/battery/empty + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_1 + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design/high_battery + name = "High-Capacity Megacell" + desc = "A megacell that holds 10 MJ of energy." + id = "high_battery" + build_type = PROTOLATHE | AWAY_LATHE | AUTOLATHE | MECHFAB + materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 12, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3) + construction_time = 10 SECONDS + build_path = /obj/item/stock_parts/power_store/battery/high/empty + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_2 + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design/super_battery + name = "Super-Capacity Megacell" + desc = "A megacell that holds 20 MJ of energy." + id = "super_battery" + build_type = PROTOLATHE | AWAY_LATHE | MECHFAB + materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 12, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4) + construction_time = 10 SECONDS + build_path = /obj/item/stock_parts/power_store/battery/super/empty + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_3 + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design/hyper_battery + name = "Hyper-Capacity Megacell" + desc = "A megacell that holds 30 MJ of energy." + id = "hyper_battery" + build_type = PROTOLATHE | AWAY_LATHE | MECHFAB + materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 12, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5) + construction_time = 10 SECONDS + build_path = /obj/item/stock_parts/power_store/battery/hyper/empty + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_3 + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design/bluespace_battery + name = "Bluespace Megacell" + desc = "A megacell that holds 40 MJ of energy." + id = "bluespace_battery" + build_type = PROTOLATHE | AWAY_LATHE | MECHFAB + materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 12, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 1.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 6, /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 1.6, /datum/material/titanium =SMALL_MATERIAL_AMOUNT * 3, /datum/material/bluespace =SMALL_MATERIAL_AMOUNT) + construction_time = 10 SECONDS + build_path = /obj/item/stock_parts/power_store/battery/bluespace/empty + category = list( + RND_CATEGORY_STOCK_PARTS + RND_SUBCATEGORY_STOCK_PARTS_4 + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + + /datum/design/inducer name = "Inducer" desc = "The NT-75 Electromagnetic Power Inducer can wirelessly induce electric charge in an object, allowing you to recharge power cells without having to remove them." diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index 89c69b7334e40..affe82275ab14 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -60,7 +60,7 @@ /obj/machinery/rnd/experimentor/proc/generate_valid_items_and_item_reactions() var/static/list/banned_typecache = typecacheof(list( - /obj/item/stock_parts/cell/infinite, + /obj/item/stock_parts/power_store/cell/infinite, /obj/item/grenade/chem_grenade/tuberculosis )) diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm index d110dab03e02d..295cd05fe9040 100644 --- a/code/modules/research/machinery/_production.dm +++ b/code/modules/research/machinery/_production.dm @@ -416,8 +416,9 @@ var/number_to_make = (initial(stack_item.amount) * items_remaining) while(number_to_make > max_stack_amount) created = new stack_item(null, max_stack_amount) //it's imporant to spawn things in nullspace, since obj's like stacks qdel when they enter a tile/merge with other stacks of the same type, resulting in runtimes. - created.pixel_x = created.base_pixel_x + rand(-6, 6) - created.pixel_y = created.base_pixel_y + rand(-6, 6) + if(isitem(created)) + created.pixel_x = created.base_pixel_x + rand(-6, 6) + created.pixel_y = created.base_pixel_y + rand(-6, 6) created.forceMove(target) number_to_make -= max_stack_amount @@ -426,8 +427,9 @@ created = new design.build_path(null) split_materials_uniformly(design_materials, material_cost_coefficient, created) - created.pixel_x = created.base_pixel_x + rand(-6, 6) - created.pixel_y = created.base_pixel_y + rand(-6, 6) + if(isitem(created)) + created.pixel_x = created.base_pixel_x + rand(-6, 6) + created.pixel_y = created.base_pixel_y + rand(-6, 6) SSblackbox.record_feedback("nested tally", "lathe_printed_items", 1, list("[type]", "[created.type]")) created.forceMove(target) diff --git a/code/modules/research/stock_parts.dm b/code/modules/research/stock_parts.dm index 3c7b48cef519b..46bd8746663b8 100644 --- a/code/modules/research/stock_parts.dm +++ b/code/modules/research/stock_parts.dm @@ -95,8 +95,8 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good /obj/item/storage/part_replacer/bluespace/proc/on_part_entered(datum/source, obj/item/inserted_component) SIGNAL_HANDLER - if(istype(inserted_component, /obj/item/stock_parts/cell)) - var/obj/item/stock_parts/cell/inserted_cell = inserted_component + if(istype(inserted_component, /obj/item/stock_parts/power_store)) + var/obj/item/stock_parts/power_store/inserted_cell = inserted_component if(inserted_cell.rigged || inserted_cell.corrupted) message_admins("[ADMIN_LOOKUPFLW(usr)] has inserted rigged/corrupted [inserted_cell] into [src].") usr.log_message("has inserted rigged/corrupted [inserted_cell] into [src].", LOG_GAME) @@ -144,7 +144,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good new /obj/item/stock_parts/servo(src) new /obj/item/stock_parts/micro_laser(src) new /obj/item/stock_parts/matter_bin(src) - new /obj/item/stock_parts/cell/high(src) + new /obj/item/stock_parts/power_store/cell/high(src) /obj/item/storage/part_replacer/bluespace/tier2 @@ -155,7 +155,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good new /obj/item/stock_parts/servo/nano(src) new /obj/item/stock_parts/micro_laser/high(src) new /obj/item/stock_parts/matter_bin/adv(src) - new /obj/item/stock_parts/cell/super(src) + new /obj/item/stock_parts/power_store/cell/super(src) /obj/item/storage/part_replacer/bluespace/tier3 @@ -166,7 +166,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good new /obj/item/stock_parts/servo/pico(src) new /obj/item/stock_parts/micro_laser/ultra(src) new /obj/item/stock_parts/matter_bin/super(src) - new /obj/item/stock_parts/cell/hyper(src) + new /obj/item/stock_parts/power_store/cell/hyper(src) /obj/item/storage/part_replacer/bluespace/tier4 @@ -177,7 +177,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good new /obj/item/stock_parts/servo/femto(src) new /obj/item/stock_parts/micro_laser/quadultra(src) new /obj/item/stock_parts/matter_bin/bluespace(src) - new /obj/item/stock_parts/cell/bluespace(src) + new /obj/item/stock_parts/power_store/cell/bluespace(src) /obj/item/storage/part_replacer/cargo //used in a cargo crate diff --git a/code/modules/research/techweb/_techweb.dm b/code/modules/research/techweb/_techweb.dm index b4b137d8e2187..3c920f6b9a6fe 100644 --- a/code/modules/research/techweb/_techweb.dm +++ b/code/modules/research/techweb/_techweb.dm @@ -108,7 +108,7 @@ /datum/techweb/proc/add_point_list(list/pointlist) for(var/i in pointlist) if((i in SSresearch.point_types) && pointlist[i] > 0) - research_points[i] += pointlist[i] + research_points[i] = FLOOR(research_points[i] + pointlist[i], 0.1) /datum/techweb/proc/add_points_all(amount) var/list/l = SSresearch.point_types.Copy() @@ -119,7 +119,7 @@ /datum/techweb/proc/remove_point_list(list/pointlist) for(var/i in pointlist) if((i in SSresearch.point_types) && pointlist[i] > 0) - research_points[i] = max(0, research_points[i] - pointlist[i]) + research_points[i] = FLOOR(max(0, research_points[i] - pointlist[i]), 0.1) /datum/techweb/proc/remove_points_all(amount) var/list/l = SSresearch.point_types.Copy() @@ -130,7 +130,7 @@ /datum/techweb/proc/modify_point_list(list/pointlist) for(var/i in pointlist) if((i in SSresearch.point_types) && pointlist[i] != 0) - research_points[i] = max(0, research_points[i] + pointlist[i]) + research_points[i] = FLOOR(max(0, research_points[i] + pointlist[i]), 0.1) /datum/techweb/proc/modify_points_all(amount) var/list/l = SSresearch.point_types.Copy() diff --git a/code/modules/research/techweb/nodes/engi_nodes.dm b/code/modules/research/techweb/nodes/engi_nodes.dm index 182f689c372cd..02d20fef5fcd4 100644 --- a/code/modules/research/techweb/nodes/engi_nodes.dm +++ b/code/modules/research/techweb/nodes/engi_nodes.dm @@ -6,12 +6,14 @@ description = "Foundational components that form the backbone of station operations, encompassing a range of essential equipment necessary for day-to-day functionality." design_ids = list( "micro_servo", + "basic_battery", "basic_capacitor", + "basic_cell", "basic_matter_bin", "basic_micro_laser", "basic_scanning", + "high_battery", "high_cell", - "basic_cell", "miniature_power_cell", "condenser", "igniter", @@ -36,6 +38,7 @@ "nano_servo", "adv_matter_bin", "adv_scanning", + "super_battery", "super_cell", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) @@ -51,6 +54,7 @@ "pico_servo", "super_matter_bin", "phasic_scanning", + "hyper_battery", "hyper_cell", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS) @@ -69,6 +73,7 @@ "femto_servo", "bluespace_matter_bin", "triphasic_scanning", + "bluespace_battery", "bluespace_cell", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS) diff --git a/code/modules/research/techweb/nodes/medbay_nodes.dm b/code/modules/research/techweb/nodes/medbay_nodes.dm index ce4ef103eda2d..ca884f1ebd566 100644 --- a/code/modules/research/techweb/nodes/medbay_nodes.dm +++ b/code/modules/research/techweb/nodes/medbay_nodes.dm @@ -27,6 +27,11 @@ "dropper", "pillbottle", ) + experiments_to_unlock = list( + /datum/experiment/autopsy/human, + /datum/experiment/autopsy/nonhuman, + /datum/experiment/autopsy/xenomorph, + ) /datum/techweb_node/chem_synthesis id = "chem_synthesis" diff --git a/code/modules/research/techweb/nodes/service_nodes.dm b/code/modules/research/techweb/nodes/service_nodes.dm index ff56afc115eb5..61c7e2545543b 100644 --- a/code/modules/research/techweb/nodes/service_nodes.dm +++ b/code/modules/research/techweb/nodes/service_nodes.dm @@ -82,6 +82,8 @@ "idcard", "c-reader", "libraryconsole", + "libraryscanner", + "bookbinder", "barcode_scanner", "vendor", "custom_vendor_refill", diff --git a/code/modules/research/xenobiology/crossbreeding/_misc.dm b/code/modules/research/xenobiology/crossbreeding/_misc.dm index 75fabc77cf153..b07299813d612 100644 --- a/code/modules/research/xenobiology/crossbreeding/_misc.dm +++ b/code/modules/research/xenobiology/crossbreeding/_misc.dm @@ -80,7 +80,7 @@ Slimecrossing Items new /obj/effect/timestop(get_turf(target), 2, 50, list(user)) //Hypercharged slime cell - Charged Yellow -/obj/item/stock_parts/cell/high/slime_hypercharged +/obj/item/stock_parts/power_store/cell/high/slime_hypercharged name = "hypercharged slime core" desc = "A charged yellow slime extract, infused with plasma. It almost hurts to touch." icon = 'icons/mob/simple/slimes.dmi' diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm index 658d0734f4e27..832d266723d13 100644 --- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm +++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm @@ -589,11 +589,11 @@ return ..() cooldown = max_cooldown var/list/batteries = list() - for(var/obj/item/stock_parts/cell/C in owner.get_all_contents()) + for(var/obj/item/stock_parts/power_store/C in owner.get_all_contents()) if(C.charge < C.maxcharge) batteries += C if(batteries.len) - var/obj/item/stock_parts/cell/ToCharge = pick(batteries) + var/obj/item/stock_parts/power_store/ToCharge = pick(batteries) ToCharge.charge += min(ToCharge.maxcharge - ToCharge.charge, ToCharge.maxcharge/10) //10% of the cell, or to maximum. return ..() diff --git a/code/modules/research/xenobiology/crossbreeding/charged.dm b/code/modules/research/xenobiology/crossbreeding/charged.dm index 76c4d3eaa1437..ca026ae9f33f7 100644 --- a/code/modules/research/xenobiology/crossbreeding/charged.dm +++ b/code/modules/research/xenobiology/crossbreeding/charged.dm @@ -81,7 +81,7 @@ Charged extracts: effect_desc = "Creates a hypercharged slime cell battery, which has high capacity but takes longer to recharge." /obj/item/slimecross/charged/yellow/do_effect(mob/user) - new /obj/item/stock_parts/cell/high/slime_hypercharged(get_turf(user)) + new /obj/item/stock_parts/power_store/cell/high/slime_hypercharged(get_turf(user)) user.visible_message(span_notice("[src] sparks violently, and swells with electric power!")) ..() diff --git a/code/modules/research/xenobiology/crossbreeding/industrial.dm b/code/modules/research/xenobiology/crossbreeding/industrial.dm index da878b77b5a05..9d5ed59fcec0d 100644 --- a/code/modules/research/xenobiology/crossbreeding/industrial.dm +++ b/code/modules/research/xenobiology/crossbreeding/industrial.dm @@ -85,10 +85,10 @@ Industrial extracts: colour = SLIME_TYPE_YELLOW effect_desc = "Produces high capacity power cells, which are not fully charged on creation." plasmarequired = 5 - itempath = /obj/item/stock_parts/cell/high + itempath = /obj/item/stock_parts/power_store/cell/high /obj/item/slimecross/industrial/yellow/do_after_spawn(obj/item/spawned) - var/obj/item/stock_parts/cell/high/C = spawned + var/obj/item/stock_parts/power_store/cell/high/C = spawned if(istype(C)) C.charge = rand(0,C.maxcharge/2) diff --git a/code/modules/research/xenobiology/crossbreeding/regenerative.dm b/code/modules/research/xenobiology/crossbreeding/regenerative.dm index e46290bef28d5..82beed78e439c 100644 --- a/code/modules/research/xenobiology/crossbreeding/regenerative.dm +++ b/code/modules/research/xenobiology/crossbreeding/regenerative.dm @@ -82,11 +82,11 @@ Regenerative extracts: /obj/item/slimecross/regenerative/yellow/core_effect(mob/living/target, mob/user) var/list/batteries = list() - for(var/obj/item/stock_parts/cell/C in target.get_all_contents()) + for(var/obj/item/stock_parts/power_store/C in target.get_all_contents()) if(C.charge < C.maxcharge) batteries += C if(batteries.len) - var/obj/item/stock_parts/cell/ToCharge = pick(batteries) + var/obj/item/stock_parts/power_store/ToCharge = pick(batteries) ToCharge.charge = ToCharge.maxcharge to_chat(target, span_notice("You feel a strange electrical pulse, and one of your electrical items was recharged.")) diff --git a/code/modules/spells/spell_types/self/mutate.dm b/code/modules/spells/spell_types/self/mutate.dm index 477c7e6723c3a..7ebd9ab4d1bfe 100644 --- a/code/modules/spells/spell_types/self/mutate.dm +++ b/code/modules/spells/spell_types/self/mutate.dm @@ -57,7 +57,7 @@ cast_on.add_atom_colour(COLOR_VIBRANT_LIME, TEMPORARY_COLOUR_PRIORITY) /datum/action/cooldown/spell/apply_mutations/mutate/remove_mutations(mob/living/carbon/human/cast_on) - if(QDELETED(cast_on) || !is_valid_target(cast_on)) + if(QDELETED(cast_on) || !is_valid_target(cast_on)) // Not 100% sure if this check is still needed, leaving it just in case return - + ..() cast_on.remove_atom_colour(TEMPORARY_COLOUR_PRIORITY) diff --git a/code/modules/surgery/bodyparts/head.dm b/code/modules/surgery/bodyparts/head.dm index 5685b12b9ef62..66f42c1e039ba 100644 --- a/code/modules/surgery/bodyparts/head.dm +++ b/code/modules/surgery/bodyparts/head.dm @@ -76,6 +76,9 @@ ///Current lipstick trait, if any (such as TRAIT_KISS_OF_DEATH) var/stored_lipstick_trait + /// How many teeth the head's species has, humans have 32 so that's the default. Used for a limit to dental pill implants. + var/teeth_count = 32 + /// Offset to apply to equipment worn on the ears var/datum/worn_feature_offset/worn_ears_offset /// Offset to apply to equipment worn on the eyes diff --git a/code/modules/surgery/bodyparts/robot_bodyparts.dm b/code/modules/surgery/bodyparts/robot_bodyparts.dm index 5c6bd527d1b88..314f3396f0afe 100644 --- a/code/modules/surgery/bodyparts/robot_bodyparts.dm +++ b/code/modules/surgery/bodyparts/robot_bodyparts.dm @@ -215,7 +215,7 @@ wing_types = list(/obj/item/organ/external/wings/functional/robotic) var/wired = FALSE - var/obj/item/stock_parts/cell/cell = null + var/obj/item/stock_parts/power_store/cell = null /obj/item/bodypart/chest/robot/emp_effect(severity, protection) . = ..() @@ -291,7 +291,7 @@ ), AUGMENTATION_TRAIT) /obj/item/bodypart/chest/robot/attackby(obj/item/weapon, mob/user, params) - if(istype(weapon, /obj/item/stock_parts/cell)) + if(istype(weapon, /obj/item/stock_parts/power_store/cell)) if(cell) to_chat(user, span_warning("You have already inserted a cell!")) return diff --git a/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm index 20e4b58660795..05645ed20df2e 100644 --- a/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/ethereal_bodyparts.dm @@ -103,3 +103,4 @@ icon_state = "lustrous_head" limb_id = SPECIES_ETHEREAL_LUSTROUS head_flags = NONE + teeth_count = 0 // bro you seen these thinsg. they got a crystal for a head aint no teeth here diff --git a/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm index 157e5b04fe68e..350e2f32883fb 100644 --- a/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/lizard_bodyparts.dm @@ -3,6 +3,8 @@ limb_id = SPECIES_LIZARD is_dimorphic = FALSE head_flags = HEAD_LIPS|HEAD_EYESPRITES|HEAD_EYECOLOR|HEAD_EYEHOLES|HEAD_DEBRAIN + // lizardshave many teeth + teeth_count = 72 /obj/item/bodypart/chest/lizard icon_greyscale = 'icons/mob/human/species/lizard/bodyparts.dmi' diff --git a/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm index fa3ab9cc49d39..f9a71a4e6d4dd 100644 --- a/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm @@ -5,6 +5,7 @@ burn_modifier = 2 head_flags = HEAD_EYESPRITES|HEAD_DEBRAIN biological_state = (BIO_FLESH|BIO_BLOODED) + teeth_count = 0 /obj/item/bodypart/chest/snail limb_id = SPECIES_SNAIL @@ -51,6 +52,7 @@ is_dimorphic = FALSE should_draw_greyscale = FALSE head_flags = NONE + teeth_count = 0 /obj/item/bodypart/chest/abductor limb_id = SPECIES_ABDUCTOR @@ -146,6 +148,7 @@ ///LUMINESCENT /obj/item/bodypart/head/jelly/luminescent limb_id = SPECIES_LUMINESCENT + teeth_count = 0 /obj/item/bodypart/chest/jelly/luminescent limb_id = SPECIES_LUMINESCENT @@ -250,6 +253,7 @@ is_dimorphic = FALSE should_draw_greyscale = FALSE head_flags = HEAD_EYESPRITES|HEAD_EYEHOLES|HEAD_DEBRAIN + teeth_count = 0 /obj/item/bodypart/chest/fly limb_id = SPECIES_FLYPERSON @@ -367,6 +371,7 @@ is_dimorphic = TRUE burn_modifier = 1.25 head_flags = NONE + teeth_count = 0 /obj/item/bodypart/chest/mushroom limb_id = SPECIES_MUSHROOM @@ -436,6 +441,8 @@ should_draw_greyscale = FALSE dmg_overlay_type = null head_flags = NONE + // too hard to drill through + teeth_count = 0 /obj/item/bodypart/head/golem/Initialize(mapload) worn_ears_offset = new( diff --git a/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm index 375b37ca434d6..323cef05b8c5d 100644 --- a/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/moth_bodyparts.dm @@ -6,6 +6,7 @@ is_dimorphic = FALSE should_draw_greyscale = FALSE head_flags = HEAD_LIPS|HEAD_EYESPRITES|HEAD_EYEHOLES|HEAD_DEBRAIN //what the fuck, moths have lips? + teeth_count = 0 /obj/item/bodypart/chest/moth icon = 'icons/mob/human/species/moth/bodyparts.dmi' diff --git a/code/modules/surgery/dental_implant.dm b/code/modules/surgery/dental_implant.dm index d720039d56b7e..3c645f240d484 100644 --- a/code/modules/surgery/dental_implant.dm +++ b/code/modules/surgery/dental_implant.dm @@ -2,16 +2,35 @@ name = "Dental implant" possible_locs = list(BODY_ZONE_PRECISE_MOUTH) steps = list( - /datum/surgery_step/drill, + /datum/surgery_step/drill/pill, /datum/surgery_step/insert_pill, ) +/datum/surgery_step/drill/pill/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + . = ..() + var/count = 0 + var/obj/item/bodypart/head/teeth_receptangle = target.get_bodypart(BODY_ZONE_HEAD) + + ASSERT(teeth_receptangle) + + for(var/obj/item/reagent_containers/pill/dental in teeth_receptangle) + count++ + + if(teeth_receptangle.teeth_count == 0) + to_chat(user, span_notice("[user] has no teeth, doofus!")) + return SURGERY_STEP_FAIL + + if(count >= teeth_receptangle.teeth_count) + to_chat(user, span_notice("[user]'s teeth have all been replaced with pills already!")) + return SURGERY_STEP_FAIL + /datum/surgery_step/insert_pill name = "insert pill" implements = list(/obj/item/reagent_containers/pill = 100) time = 16 /datum/surgery_step/insert_pill/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + display_results( user, target, @@ -25,7 +44,8 @@ if(!istype(tool)) return FALSE - user.transferItemToLoc(tool, target, TRUE) + // Pills go into head + user.transferItemToLoc(tool, target.get_bodypart(BODY_ZONE_HEAD), TRUE) var/datum/action/item_action/activate_pill/pill_action = new(tool) pill_action.name = "Activate [tool.name]" diff --git a/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm b/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm index 2675f46d13d6e..887df31e3fff8 100644 --- a/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm +++ b/code/modules/surgery/organs/internal/stomach/stomach_ethereal.dm @@ -4,13 +4,13 @@ desc = "A crystal-like organ that stores the electric charge of ethereals." organ_traits = list(TRAIT_NOHUNGER) // We have our own hunger mechanic. /// Where the energy of the stomach is stored. - var/obj/item/stock_parts/cell/cell + var/obj/item/stock_parts/power_store/cell ///used to keep ethereals from spam draining power sources var/drain_time = 0 /obj/item/organ/internal/stomach/ethereal/Initialize(mapload) . = ..() - cell = new /obj/item/stock_parts/cell/ethereal(null) + cell = new /obj/item/stock_parts/power_store/cell/ethereal(null) /obj/item/organ/internal/stomach/ethereal/Destroy() QDEL_NULL(cell) diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index a555548e43268..17444590cf2ef 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -124,6 +124,10 @@ if(isnull(step)) return FALSE var/obj/item/tool = user.get_active_held_item() + if(istype(tool, /obj/item/borg/cyborg_omnitool)) //catches borg surgeries + var/obj/item/borg/cyborg_omnitool/toolarm = tool + if(toolarm.selected) + tool = toolarm.selected if(step.try_op(user, target, user.zone_selected, tool, src, try_to_fail)) return TRUE if(tool && tool.item_flags & SURGICAL_TOOL) //Just because you used the wrong tool it doesn't mean you meant to whack the patient with it diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm index be4bdb6db5d24..6c3ee9c014713 100644 --- a/code/modules/surgery/tools.dm +++ b/code/modules/surgery/tools.dm @@ -22,6 +22,9 @@ desc = "Micro-mechanical manipulator for retracting stuff." toolspeed = 0.5 +/obj/item/retractor/cyborg + icon = 'icons/mob/silicon/robot_items.dmi' + icon_state = "toolkit_medborg_retractor" /obj/item/hemostat name = "hemostat" @@ -49,6 +52,9 @@ desc = "Tiny servos power a pair of pincers to stop bleeding." toolspeed = 0.5 +/obj/item/hemostat/cyborg + icon = 'icons/mob/silicon/robot_items.dmi' + icon_state = "toolkit_medborg_hemostat" /obj/item/cautery name = "cautery" @@ -80,6 +86,10 @@ desc = "A heated element that cauterizes wounds." toolspeed = 0.5 +/obj/item/cautery/cyborg + icon = 'icons/mob/silicon/robot_items.dmi' + icon_state = "toolkit_medborg_cautery" + /obj/item/cautery/advanced name = "searing tool" desc = "It projects a high power laser used for medical applications." @@ -175,6 +185,10 @@ playsound(user, 'sound/machines/juicer.ogg', 20, TRUE) return MANUAL_SUICIDE +/obj/item/surgicaldrill/cyborg + icon = 'icons/mob/silicon/robot_items.dmi' + icon_state = "toolkit_medborg_drill" + /obj/item/surgicaldrill/augment desc = "Effectively a small power drill contained within your arm. May or may not pierce the heavens." hitsound = 'sound/weapons/circsawhit.ogg' @@ -225,6 +239,10 @@ user.visible_message(span_suicide("[user] is slitting [user.p_their()] [pick("wrists", "throat", "stomach")] with [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return BRUTELOSS +/obj/item/scalpel/cyborg + icon = 'icons/mob/silicon/robot_items.dmi' + icon_state = "toolkit_medborg_scalpel" + /obj/item/scalpel/augment desc = "Ultra-sharp blade attached directly to your bone for extra-accuracy." toolspeed = 0.5 @@ -276,6 +294,10 @@ /obj/item/circular_saw/get_surgery_tool_overlay(tray_extended) return surgical_tray_overlay +/obj/item/circular_saw/cyborg + icon = 'icons/mob/silicon/robot_items.dmi' + icon_state = "toolkit_medborg_saw" + /obj/item/circular_saw/augment desc = "A small but very fast spinning saw. It rips and tears until it is done." w_class = WEIGHT_CLASS_SMALL @@ -299,6 +321,10 @@ . = ..() AddComponent(/datum/component/surgery_initiator) +/obj/item/surgical_drapes/cyborg + icon = 'icons/mob/silicon/robot_items.dmi' + icon_state = "toolkit_medborg_surgicaldrapes" + /obj/item/surgical_processor //allows medical cyborgs to scan and initiate advanced surgeries name = "surgical processor" desc = "A device for scanning and initiating surgeries from a disk or operating computer." @@ -580,6 +606,10 @@ /obj/item/bonesetter/get_surgery_tool_overlay(tray_extended) return "bonesetter" + (tray_extended ? "" : "_out") +/obj/item/bonesetter/cyborg + icon = 'icons/mob/silicon/robot_items.dmi' + icon_state = "toolkit_medborg_bonesetter" + /obj/item/blood_filter name = "blood filter" desc = "For filtering the blood." diff --git a/code/modules/unit_tests/simple_animal_freeze.dm b/code/modules/unit_tests/simple_animal_freeze.dm index 7db63d6b48df6..706fe290cccf4 100644 --- a/code/modules/unit_tests/simple_animal_freeze.dm +++ b/code/modules/unit_tests/simple_animal_freeze.dm @@ -21,7 +21,6 @@ /mob/living/simple_animal/bot/secbot/grievous, /mob/living/simple_animal/bot/secbot/grievous/toy, /mob/living/simple_animal/bot/secbot/pingsky, - /mob/living/simple_animal/bot/vibebot, /mob/living/simple_animal/hostile, /mob/living/simple_animal/hostile/asteroid, /mob/living/simple_animal/hostile/asteroid/curseblob, diff --git a/code/modules/vehicles/mecha/_mecha.dm b/code/modules/vehicles/mecha/_mecha.dm index 1155e6293d252..f36beee83cd77 100644 --- a/code/modules/vehicles/mecha/_mecha.dm +++ b/code/modules/vehicles/mecha/_mecha.dm @@ -46,7 +46,7 @@ ///if we cant use our equipment(such as due to EMP) var/equipment_disabled = FALSE /// Keeps track of the mech's cell - var/obj/item/stock_parts/cell/cell + var/obj/item/stock_parts/power_store/cell /// Keeps track of the mech's scanning module var/obj/item/stock_parts/scanning_module/scanmod /// Keeps track of the mech's capacitor @@ -305,7 +305,7 @@ ///Add parts on mech spawning. Skipped in manual construction. /obj/vehicle/sealed/mecha/proc/populate_parts() - cell = new /obj/item/stock_parts/cell/high(src) + cell = new /obj/item/stock_parts/power_store/cell/high(src) scanmod = new /obj/item/stock_parts/scanning_module(src) capacitor = new /obj/item/stock_parts/capacitor(src) servo = new /obj/item/stock_parts/servo(src) @@ -313,7 +313,7 @@ /obj/vehicle/sealed/mecha/CheckParts(list/parts_list) . = ..() - cell = locate(/obj/item/stock_parts/cell) in contents + cell = locate(/obj/item/stock_parts/power_store) in contents diag_hud_set_mechcell() scanmod = locate(/obj/item/stock_parts/scanning_module) in contents capacitor = locate(/obj/item/stock_parts/capacitor) in contents diff --git a/code/modules/vehicles/mecha/combat/durand.dm b/code/modules/vehicles/mecha/combat/durand.dm index b44478582c031..c6fcae75bc98f 100644 --- a/code/modules/vehicles/mecha/combat/durand.dm +++ b/code/modules/vehicles/mecha/combat/durand.dm @@ -271,7 +271,9 @@ own integrity back to max. Shield is automatically dropped if we run out of powe return . = ..() flick("shield_impact", src) - if(!chassis.use_energy((max_integrity - atom_integrity) * 0.1 * STANDARD_CELL_CHARGE)) + if(!.) + return + if(!chassis.use_energy(. * (STANDARD_CELL_CHARGE / 15))) chassis.cell?.charge = 0 for(var/O in chassis.occupants) var/mob/living/occupant = O diff --git a/code/modules/vehicles/mecha/combat/gygax.dm b/code/modules/vehicles/mecha/combat/gygax.dm index 0284f10d23d43..0acb746c52d4a 100644 --- a/code/modules/vehicles/mecha/combat/gygax.dm +++ b/code/modules/vehicles/mecha/combat/gygax.dm @@ -78,7 +78,7 @@ max_ammo() /obj/vehicle/sealed/mecha/gygax/dark/loaded/populate_parts() - cell = new /obj/item/stock_parts/cell/bluespace(src) + cell = new /obj/item/stock_parts/power_store/cell/bluespace(src) scanmod = new /obj/item/stock_parts/scanning_module/triphasic(src) capacitor = new /obj/item/stock_parts/capacitor/quadratic(src) servo = new /obj/item/stock_parts/servo/femto(src) diff --git a/code/modules/vehicles/mecha/combat/honker.dm b/code/modules/vehicles/mecha/combat/honker.dm index a7c9f018d2869..83934244638aa 100644 --- a/code/modules/vehicles/mecha/combat/honker.dm +++ b/code/modules/vehicles/mecha/combat/honker.dm @@ -75,7 +75,7 @@ acid = 100 /obj/vehicle/sealed/mecha/honker/dark/loaded/populate_parts() - cell = new /obj/item/stock_parts/cell/hyper(src) + cell = new /obj/item/stock_parts/power_store/cell/hyper(src) scanmod = new /obj/item/stock_parts/scanning_module/phasic(src) capacitor = new /obj/item/stock_parts/capacitor/super(src) servo = new /obj/item/stock_parts/servo/pico(src) diff --git a/code/modules/vehicles/mecha/combat/marauder.dm b/code/modules/vehicles/mecha/combat/marauder.dm index 3cc73214fcac1..48e2d60cbd68e 100644 --- a/code/modules/vehicles/mecha/combat/marauder.dm +++ b/code/modules/vehicles/mecha/combat/marauder.dm @@ -48,7 +48,7 @@ ) /obj/vehicle/sealed/mecha/marauder/loaded/populate_parts() - cell = new /obj/item/stock_parts/cell/bluespace(src) + cell = new /obj/item/stock_parts/power_store/cell/bluespace(src) scanmod = new /obj/item/stock_parts/scanning_module/triphasic(src) capacitor = new /obj/item/stock_parts/capacitor/quadratic(src) servo = new /obj/item/stock_parts/servo/femto(src) @@ -169,7 +169,7 @@ max_ammo() /obj/vehicle/sealed/mecha/marauder/mauler/loaded/populate_parts() - cell = new /obj/item/stock_parts/cell/bluespace(src) + cell = new /obj/item/stock_parts/power_store/cell/bluespace(src) scanmod = new /obj/item/stock_parts/scanning_module/triphasic(src) capacitor = new /obj/item/stock_parts/capacitor/quadratic(src) servo = new /obj/item/stock_parts/servo/femto(src) diff --git a/code/modules/vehicles/mecha/combat/reticence.dm b/code/modules/vehicles/mecha/combat/reticence.dm index 5dcc5f34e912b..0860fbc407fbc 100644 --- a/code/modules/vehicles/mecha/combat/reticence.dm +++ b/code/modules/vehicles/mecha/combat/reticence.dm @@ -42,7 +42,7 @@ ) /obj/vehicle/sealed/mecha/reticence/loaded/populate_parts() - cell = new /obj/item/stock_parts/cell/bluespace(src) + cell = new /obj/item/stock_parts/power_store/cell/bluespace(src) scanmod = new /obj/item/stock_parts/scanning_module/phasic(src) capacitor = new /obj/item/stock_parts/capacitor/super(src) servo = new /obj/item/stock_parts/servo/pico(src) diff --git a/code/modules/vehicles/mecha/mecha_construction_paths.dm b/code/modules/vehicles/mecha/mecha_construction_paths.dm index e77b1eebacfab..f4b1a679596b9 100644 --- a/code/modules/vehicles/mecha/mecha_construction_paths.dm +++ b/code/modules/vehicles/mecha/mecha_construction_paths.dm @@ -209,7 +209,7 @@ "backward_message" = "removed servo" ), list( - "key" = /obj/item/stock_parts/cell, + "key" = /obj/item/stock_parts/power_store/cell, "action" = ITEM_MOVE_INSIDE, "back_key" = TOOL_SCREWDRIVER, "desc" = "Servo is secured, and the power cell can be added.", @@ -542,7 +542,7 @@ "desc" = "HONK!!!!!!" ), list( - "key" = /obj/item/stock_parts/cell, + "key" = /obj/item/stock_parts/power_store/cell, "action" = ITEM_MOVE_INSIDE, "desc" = "Laughter cell can be added!", "forward_message" = "added laughter" @@ -715,7 +715,7 @@ "backward_message" = "disconnected bluespace crystal" ), list( - "key" = /obj/item/stock_parts/cell, + "key" = /obj/item/stock_parts/power_store/cell, "action" = ITEM_MOVE_INSIDE, "back_key" = TOOL_SCREWDRIVER, "desc" = "The bluespace crystal is engaged, and the power cell can be added.", diff --git a/code/modules/vehicles/mecha/mecha_defense.dm b/code/modules/vehicles/mecha/mecha_defense.dm index 426efaf1e6fee..912993d1ee640 100644 --- a/code/modules/vehicles/mecha/mecha_defense.dm +++ b/code/modules/vehicles/mecha/mecha_defense.dm @@ -261,7 +261,7 @@ balloon_alert(user, "open the panel first!") return - if(istype(weapon, /obj/item/stock_parts/cell)) + if(istype(weapon, /obj/item/stock_parts/power_store/cell)) if(!cell) if(!user.transferItemToLoc(weapon, src, silent = FALSE)) return diff --git a/code/modules/vehicles/mecha/working/ripley.dm b/code/modules/vehicles/mecha/working/ripley.dm index be9dc0d69c337..754a6b820d721 100644 --- a/code/modules/vehicles/mecha/working/ripley.dm +++ b/code/modules/vehicles/mecha/working/ripley.dm @@ -281,7 +281,7 @@ GLOBAL_DATUM(cargo_ripley, /obj/vehicle/sealed/mecha/ripley/cargo) return ..() /obj/vehicle/sealed/mecha/ripley/cargo/populate_parts() - cell = new /obj/item/stock_parts/cell/high(src) + cell = new /obj/item/stock_parts/power_store/cell/high(src) //No scanmod for Big Bess capacitor = new /obj/item/stock_parts/capacitor(src) servo = new /obj/item/stock_parts/servo(src) diff --git a/code/modules/vehicles/motorized_wheelchair.dm b/code/modules/vehicles/motorized_wheelchair.dm index 8dbdfd93e8f69..cecf6b815e249 100644 --- a/code/modules/vehicles/motorized_wheelchair.dm +++ b/code/modules/vehicles/motorized_wheelchair.dm @@ -20,7 +20,7 @@ /datum/stock_part/capacitor, ) ///power cell we draw power from - var/obj/item/stock_parts/cell/power_cell + var/obj/item/stock_parts/power_store/power_cell ///stock parts for this chair var/list/component_parts = list() @@ -34,7 +34,7 @@ component_parts += GLOB.stock_part_datums[/datum/stock_part/capacitor] component_parts += GLOB.stock_part_datums[/datum/stock_part/servo] component_parts += GLOB.stock_part_datums[/datum/stock_part/servo] - power_cell = new /obj/item/stock_parts/cell(src) + power_cell = new /obj/item/stock_parts/power_store/cell(src) /obj/vehicle/ridden/wheelchair/motorized/make_ridable() AddElement(/datum/element/ridable, /datum/component/riding/vehicle/wheelchair/motorized) @@ -45,7 +45,7 @@ component_parts = list() for(var/obj/item/stock_parts/part in parts_list) - if(istype(part, /obj/item/stock_parts/cell)) // power cell, physically moves into the wheelchair + if(istype(part, /obj/item/stock_parts/power_store/cell)) // power cell, physically moves into the wheelchair power_cell = part part.forceMove(src) continue @@ -109,7 +109,7 @@ if(!panel_open) return ..() - if(istype(attacking_item, /obj/item/stock_parts/cell)) + if(istype(attacking_item, /obj/item/stock_parts/power_store/cell)) if(power_cell) to_chat(user, span_warning("There is a power cell already installed.")) else @@ -232,4 +232,4 @@ component_parts += GLOB.stock_part_datums[/datum/stock_part/capacitor] component_parts += GLOB.stock_part_datums[/datum/stock_part/servo/tier2] component_parts += GLOB.stock_part_datums[/datum/stock_part/servo] - power_cell = new /obj/item/stock_parts/cell/upgraded/plus(src) + power_cell = new /obj/item/stock_parts/power_store/cell/upgraded/plus(src) diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm index ed6d085abe593..9ca0d41d85367 100644 --- a/code/modules/vending/_vending.dm +++ b/code/modules/vending/_vending.dm @@ -1778,7 +1778,7 @@ GLOBAL_LIST_EMPTY(vending_machines_to_restock) speak("\The [src] has been linked to [card_used].") if(compartmentLoadAccessCheck(user)) - if(istype(attack_item, /obj/item/pen)) + if(IS_WRITING_UTENSIL(attack_item)) name = tgui_input_text(user, "Set name", "Name", name, 20) desc = tgui_input_text(user, "Set description", "Description", desc, 60) slogan_list += tgui_input_text(user, "Set slogan", "Slogan", "Epic", 60) diff --git a/code/modules/vending/assist.dm b/code/modules/vending/assist.dm index a043a365046e2..c1cffea115fd8 100644 --- a/code/modules/vending/assist.dm +++ b/code/modules/vending/assist.dm @@ -20,7 +20,8 @@ /obj/item/assembly/health = 2, /obj/item/assembly/timer = 2, /obj/item/assembly/voice = 2, - /obj/item/stock_parts/cell/high = 1, + /obj/item/stock_parts/power_store/cell/high = 1, + /obj/item/stock_parts/power_store/battery/high = 1, /obj/item/market_uplink/blackmarket = 1, ) premium = list( diff --git a/code/modules/vending/engineering.dm b/code/modules/vending/engineering.dm index 801a44e0f20df..48da7e27b1286 100644 --- a/code/modules/vending/engineering.dm +++ b/code/modules/vending/engineering.dm @@ -20,7 +20,8 @@ /obj/item/multitool = 12, /obj/item/wrench = 12, /obj/item/t_scanner = 12, - /obj/item/stock_parts/cell = 8, + /obj/item/stock_parts/power_store/cell = 8, + /obj/item/stock_parts/power_store/battery = 8, /obj/item/weldingtool = 8, /obj/item/clothing/head/utility/welding = 8, /obj/item/light/tube = 10, diff --git a/code/modules/vending/engivend.dm b/code/modules/vending/engivend.dm index ce7e1bf12bdd6..1522d0047b098 100644 --- a/code/modules/vending/engivend.dm +++ b/code/modules/vending/engivend.dm @@ -11,7 +11,8 @@ /obj/item/multitool = 4, /obj/item/grenade/chem_grenade/smart_metal_foam = 10, /obj/item/geiger_counter = 5, - /obj/item/stock_parts/cell/high = 10, + /obj/item/stock_parts/power_store/cell/high = 10, + /obj/item/stock_parts/power_store/battery/high = 10, /obj/item/electronics/airlock = 10, /obj/item/electronics/apc = 10, /obj/item/electronics/airalarm = 10, @@ -19,7 +20,7 @@ /obj/item/electronics/firelock = 10, ) contraband = list( - /obj/item/stock_parts/cell/potato = 3, + /obj/item/stock_parts/power_store/cell/potato = 3, ) premium = list( /obj/item/storage/belt/utility = 3, diff --git a/code/modules/vending/robotics.dm b/code/modules/vending/robotics.dm index 30bf8543d504c..8796e8d756192 100644 --- a/code/modules/vending/robotics.dm +++ b/code/modules/vending/robotics.dm @@ -12,7 +12,7 @@ /obj/item/clothing/under/rank/rnd/roboticist = 4, /obj/item/stack/cable_coil = 4, /obj/item/assembly/flash/handheld = 4, - /obj/item/stock_parts/cell/high = 12, + /obj/item/stock_parts/power_store/cell/high = 12, /obj/item/assembly/prox_sensor = 3, /obj/item/assembly/signaler = 3, /obj/item/healthanalyzer = 3, diff --git a/code/modules/wiremod/components/abstract/module.dm b/code/modules/wiremod/components/abstract/module.dm index ad544354298b2..4dd144b4c80e3 100644 --- a/code/modules/wiremod/components/abstract/module.dm +++ b/code/modules/wiremod/components/abstract/module.dm @@ -190,7 +190,7 @@ )) return ..() -/obj/item/circuit_component/module/proc/handle_set_cell(datum/source, obj/item/stock_parts/cell/cell) +/obj/item/circuit_component/module/proc/handle_set_cell(datum/source, obj/item/stock_parts/power_store/cell/cell) SIGNAL_HANDLER internal_circuit.set_cell(cell) diff --git a/code/modules/wiremod/components/atom/remotecam.dm b/code/modules/wiremod/components/atom/remotecam.dm index 3d5afa2381cd9..d5a8506c5cf04 100644 --- a/code/modules/wiremod/components/atom/remotecam.dm +++ b/code/modules/wiremod/components/atom/remotecam.dm @@ -262,7 +262,7 @@ if (current_camera_emp) close_camera() return - var/obj/item/stock_parts/cell/cell = parent.get_cell() + var/obj/item/stock_parts/power_store/cell = parent.get_cell() //If cell doesn't exist, or we ran out of power if(!cell?.use(current_camera_range > 0 ? REMOTECAM_ENERGY_USAGE_FAR : REMOTECAM_ENERGY_USAGE_NEAR)) close_camera() @@ -393,7 +393,7 @@ if(!bci.owner || bci.owner.is_blind() || bci.owner.stat >= UNCONSCIOUS) close_camera() return - var/obj/item/stock_parts/cell/cell = parent.get_cell() + var/obj/item/stock_parts/power_store/cell = parent.get_cell() //If cell doesn't exist, or we ran out of power if(!cell?.use(current_camera_range > 0 ? REMOTECAM_ENERGY_USAGE_FAR : REMOTECAM_ENERGY_USAGE_NEAR)) close_camera() @@ -422,7 +422,7 @@ if(shell_parent.loc.atom_storage) close_camera() return - var/obj/item/stock_parts/cell/cell = parent.get_cell() + var/obj/item/stock_parts/power_store/cell = parent.get_cell() //If cell doesn't exist, or we ran out of power if(!cell?.use(REMOTECAM_ENERGY_USAGE_NEAR)) close_camera() diff --git a/code/modules/wiremod/core/component.dm b/code/modules/wiremod/core/component.dm index 7f7bddaa5727a..ff0e64cd9a4dc 100644 --- a/code/modules/wiremod/core/component.dm +++ b/code/modules/wiremod/core/component.dm @@ -268,7 +268,7 @@ var/flags = SEND_SIGNAL(parent, COMSIG_CIRCUIT_PRE_POWER_USAGE, energy_usage_per_input) if(!(flags & COMPONENT_OVERRIDE_POWER_USAGE)) - var/obj/item/stock_parts/cell/cell = parent.get_cell() + var/obj/item/stock_parts/power_store/cell = parent.get_cell() if(!cell?.use(energy_usage_per_input)) return FALSE diff --git a/code/modules/wiremod/core/integrated_circuit.dm b/code/modules/wiremod/core/integrated_circuit.dm index 5a825b81482e8..f24c5dac6671e 100644 --- a/code/modules/wiremod/core/integrated_circuit.dm +++ b/code/modules/wiremod/core/integrated_circuit.dm @@ -24,7 +24,7 @@ GLOBAL_LIST_EMPTY_TYPED(integrated_circuits, /obj/item/integrated_circuit) var/label_max_length = 24 /// The power of the integrated circuit - var/obj/item/stock_parts/cell/cell + var/obj/item/stock_parts/power_store/cell /// The shell that this circuitboard is attached to. Used by components. var/atom/movable/shell @@ -98,7 +98,7 @@ GLOBAL_LIST_EMPTY_TYPED(integrated_circuits, /obj/item/integrated_circuit) /obj/item/integrated_circuit/loaded/Initialize(mapload) . = ..() - set_cell(new /obj/item/stock_parts/cell/high(src)) + set_cell(new /obj/item/stock_parts/power_store/cell/high(src)) /obj/item/integrated_circuit/Destroy() for(var/obj/item/circuit_component/to_delete in attached_components) @@ -132,7 +132,7 @@ GLOBAL_LIST_EMPTY_TYPED(integrated_circuits, /obj/item/integrated_circuit) * Arguments: * * cell_to_set - The new cell of the circuit. Can be null. **/ -/obj/item/integrated_circuit/proc/set_cell(obj/item/stock_parts/cell_to_set) +/obj/item/integrated_circuit/proc/set_cell(obj/item/stock_parts/power_store/cell_to_set) SEND_SIGNAL(src, COMSIG_CIRCUIT_SET_CELL, cell_to_set) cell = cell_to_set @@ -152,7 +152,7 @@ GLOBAL_LIST_EMPTY_TYPED(integrated_circuits, /obj/item/integrated_circuit) add_component_manually(I, user) return - if(istype(I, /obj/item/stock_parts/cell)) + if(istype(I, /obj/item/stock_parts/power_store/cell)) if(cell) balloon_alert(user, "there already is a cell inside!") return diff --git a/code/modules/wiremod/shell/brain_computer_interface.dm b/code/modules/wiremod/shell/brain_computer_interface.dm index 3cd9a3d6bc08f..67a3a41a48828 100644 --- a/code/modules/wiremod/shell/brain_computer_interface.dm +++ b/code/modules/wiremod/shell/brain_computer_interface.dm @@ -256,7 +256,7 @@ return ..() /datum/action/innate/bci_charge_action/Trigger(trigger_flags) - var/obj/item/stock_parts/cell/cell = circuit_component.parent.cell + var/obj/item/stock_parts/power_store/cell/cell = circuit_component.parent.cell if (isnull(cell)) to_chat(owner, span_boldwarning("[circuit_component.parent] has no power cell.")) @@ -269,7 +269,7 @@ /datum/action/innate/bci_charge_action/update_button_status(atom/movable/screen/movable/action_button/button, force = FALSE) . = ..() - var/obj/item/stock_parts/cell/cell = circuit_component.parent.cell + var/obj/item/stock_parts/power_store/cell/cell = circuit_component.parent.cell button.maptext = cell ? MAPTEXT("[cell.percent()]%") : "" /obj/machinery/bci_implanter diff --git a/code/modules/wiremod/shell/gun.dm b/code/modules/wiremod/shell/gun.dm index 8e9a3d987fd6d..7115c3b548bee 100644 --- a/code/modules/wiremod/shell/gun.dm +++ b/code/modules/wiremod/shell/gun.dm @@ -9,7 +9,7 @@ icon = 'icons/obj/science/circuits.dmi' icon_state = "setup_gun" ammo_type = list(/obj/item/ammo_casing/energy/wiremod_gun) - cell_type = /obj/item/stock_parts/cell/emproof/wiremod_gun + cell_type = /obj/item/stock_parts/power_store/cell/emproof/wiremod_gun item_flags = NONE light_system = OVERLAY_LIGHT_DIRECTIONAL light_on = FALSE @@ -29,7 +29,7 @@ damage = 0 range = 7 -/obj/item/stock_parts/cell/emproof/wiremod_gun +/obj/item/stock_parts/power_store/cell/emproof/wiremod_gun maxcharge = 0.1 * STANDARD_CELL_CHARGE /obj/item/gun/energy/wiremod_gun/Initialize(mapload) diff --git a/html/changelogs/AutoChangeLog-pr-83811.yml b/html/changelogs/AutoChangeLog-pr-83811.yml new file mode 100644 index 0000000000000..2aaf9471f4b48 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-83811.yml @@ -0,0 +1,4 @@ +author: "mc-oofert" +delete-after: True +changes: + - qol: "space dragon can see in the dark and the invalid rift location alert is more informative" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-83831.yml b/html/changelogs/AutoChangeLog-pr-83831.yml new file mode 100644 index 0000000000000..b3e655a55ddf2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-83831.yml @@ -0,0 +1,7 @@ +author: "carlarctg" +delete-after: True +changes: + - bugfix: "There's now a limit to how many dental implants you can cram into your mouth, which is governed by your species' teeth limit." + - refactor: "Most species have 32 teeth, due to being based on humans, weirding me out when thinking about their teeth, or lack of enough information" + - refactor: "Moths and flypeople have NO teeth. They CAN'T get dental implants. I'm NERFING moths." + - refactor: "Lizards have seventy-five (!!!) teeth. Lizards are weird." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84043.yml b/html/changelogs/AutoChangeLog-pr-84043.yml new file mode 100644 index 0000000000000..5397404f75b8d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-84043.yml @@ -0,0 +1,5 @@ +author: "mc-oofert" +delete-after: True +changes: + - bugfix: "durand shield doesnt immediately depower the mech when taking stamina damage" + - balance: "durand shield is a bit stronger" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84072.yml b/html/changelogs/AutoChangeLog-pr-84072.yml new file mode 100644 index 0000000000000..c36813ba598d8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-84072.yml @@ -0,0 +1,4 @@ +author: "GPeckman" +delete-after: True +changes: + - bugfix: "Analyzers should work on bioscrambler anomalies again." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84075.yml b/html/changelogs/AutoChangeLog-pr-84075.yml new file mode 100644 index 0000000000000..427cc4f1ae6d0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-84075.yml @@ -0,0 +1,4 @@ +author: "GoblinBackwards" +delete-after: True +changes: + - bugfix: "Interacting with an assembly bomb in hand will now allow you to interact with the attached assembly instead of opening the gas tank UI. Right-clicking will display the gas tank UI instead." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84079.yml b/html/changelogs/AutoChangeLog-pr-84079.yml new file mode 100644 index 0000000000000..f191e2ef2cfad --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-84079.yml @@ -0,0 +1,6 @@ +author: "Watermelon, Mayhazah" +delete-after: True +changes: + - balance: "Drastically reduces the power consumption and max charge of power cells" + - balance: "Added a new stock part called the battery, used primarily in the construction of APCs and SMESs." + - rscadd: "Suiciding with a cell/battery will shock you and potentially dust you/shock the people around you if the charge is great enough." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84135.yml b/html/changelogs/AutoChangeLog-pr-84135.yml new file mode 100644 index 0000000000000..b503e29e311d5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-84135.yml @@ -0,0 +1,4 @@ +author: "Guestify" +delete-after: True +changes: + - bugfix: "The visor of the welding mask no longer goes down when you enable internals" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84143.yml b/html/changelogs/AutoChangeLog-pr-84143.yml new file mode 100644 index 0000000000000..68b36d831d4f6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-84143.yml @@ -0,0 +1,5 @@ +author: "Ben10Omintrix" +delete-after: True +changes: + - refactor: "vibebots are not basic bots" + - rscadd: "vibebots will now seek out the depressed and cheer them up" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84155.yml b/html/changelogs/AutoChangeLog-pr-84155.yml deleted file mode 100644 index 5b99d012a7a91..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-84155.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Rhials" -delete-after: True -changes: - - bugfix: "Drone fabricator subtypes that spawn pre-loaded now actually start with materials inside." - - bugfix: "The binocular fabriactor on the MediSim shuttle works again." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84180.yml b/html/changelogs/AutoChangeLog-pr-84180.yml deleted file mode 100644 index ba812904516a5..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-84180.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Rhials" -delete-after: True -changes: - - sound: "The abductor team now has their own antag stinger." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84181.yml b/html/changelogs/AutoChangeLog-pr-84181.yml deleted file mode 100644 index 7631a664e9f59..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-84181.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "DaCoolBoss" -delete-after: True -changes: - - spellcheck: "Grapple gun's description has been updated." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84215.yml b/html/changelogs/AutoChangeLog-pr-84215.yml deleted file mode 100644 index 7466a3b2006aa..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-84215.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "DaCoolBoss" -delete-after: True -changes: - - spellcheck: "rewrote GLA device's description for clarity" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84232.yml b/html/changelogs/AutoChangeLog-pr-84232.yml new file mode 100644 index 0000000000000..def406abaac4a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-84232.yml @@ -0,0 +1,4 @@ +author: "mc-oofert" +delete-after: True +changes: + - rscadd: "wawastation stand-in shuttle" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84278.yml b/html/changelogs/AutoChangeLog-pr-84278.yml new file mode 100644 index 0000000000000..e29caa1b8963f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-84278.yml @@ -0,0 +1,4 @@ +author: "hyperjll" +delete-after: True +changes: + - balance: "Thanks to incredible strides in selective slime breeding, slimes require substantially less nutrients to grow into adults, and split into children." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84279.yml b/html/changelogs/AutoChangeLog-pr-84279.yml new file mode 100644 index 0000000000000..9fcd48259c7bb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-84279.yml @@ -0,0 +1,5 @@ +author: "jlsnow301" +delete-after: True +changes: + - rscadd: "Bitrunning: You can now choose your hacker alias in prefs." + - rscadd: "Bit avatars get orbit icons." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-84282.yml b/html/changelogs/AutoChangeLog-pr-84282.yml new file mode 100644 index 0000000000000..fe26b6cb2c010 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-84282.yml @@ -0,0 +1,4 @@ +author: "SmArtKar" +delete-after: True +changes: + - bugfix: "RND console now properly rounds research points" \ No newline at end of file diff --git a/html/changelogs/archive/2024-06.yml b/html/changelogs/archive/2024-06.yml index c7345de5701b7..267b8ab773265 100644 --- a/html/changelogs/archive/2024-06.yml +++ b/html/changelogs/archive/2024-06.yml @@ -1046,3 +1046,110 @@ - qol: Oven trays now count as valid trays to cut food on. - rscadd: The game settings menu can now actually be accessed through the escape menu. +2024-06-25: + 00-Steven: + - refactor: Modular computers (PDAs, laptops, etc) and their applications have had + their item interaction logic refactored. Please report any issues. + - bugfix: You can deposit cash into IDs inside of PDAs by slapping it against the + PDA again. + ArcaneMusic: + - admin: Admins have a new secret to mass revive and heal all players on the server. + Bisar: + - bugfix: The light eater can now again eat lights from things with lights. + DaCoolBoss: + - spellcheck: fixed typos in a few heretic items + - spellcheck: rewrote parts of the lunar heretic's abilities, items and traumas + - spellcheck: rewrote GLA device's description for clarity + - spellcheck: Grapple gun's description has been updated. + Fluffles: + - bugfix: emoji show up in the messenger UI + - bugfix: emoji show up in the message server monitor UI + - bugfix: you can adjust your pda ringtone in-game + - bugfix: having an empty pAI in your pda doesn't break ringtones + - bugfix: pdas specifically set to not consume power don't constantly switch to + messenger + - bugfix: you can use the quick-reply button for messages while resting + - bugfix: deadchat pda messages show the imprinted sender's name instead of whoever + is holding the pda + - bugfix: emoji show up in deadchat pda messages + FlufflesTheDog: + - bugfix: printed medical beds are no longer randomly offset + Goat: + - rscadd: Added boards for the library's book binder and scanner, printable at the + service fabricator once computer tech is researched. Spritework done by lepiromano. + GoblinBackwards: + - bugfix: Fixed ctrl-click not dragging the bluespace gas sender or hydroponics + trays. + Guestify: + - bugfix: Fixed secbots and mulebots bold text + IsaacExists: + - spellcheck: Shrapnel removal messages now have closing parenthesis, removed unnecessary + punctuation. + - spellcheck: The nutriment pump implant's description in the lathes are no longer + typo'd. + Jacquerel: + - bugfix: Minebots, Tamed Wolves, and Regal Rat Minions will now give you some space + if you start attacking yourself, rather than joining in. + MGOOOOOO: + - bugfix: Orange balloons are no longer invisible in the hand slot. + MTandi: + - qol: NT Frontier app now allows to select experiments from inserted data disks + - bugfix: Autopsy experiments for techweb can be performed roundstart + MrDas: + - bugfix: Fixed the duration of wizard's mutate spell. + Rhials: + - sound: The abductor team now has their own antag stinger. + - bugfix: Drone fabricator subtypes that spawn pre-loaded now actually start with + materials inside. + - bugfix: The binocular fabriactor on the MediSim shuttle works again. + ShizCalev: + - image: Foam darts in the magazine of a toy/riot C20R45 will now show the correct + color corresponding to the type of said dart loaded in it instead of a generic + bullet sprite. + SmArtKar: + - bugfix: Fixed crayons not being usable on anything except turfs (including washing + machines) + - rscadd: You can now click pens! Clickity clickery click! + - bugfix: E-Daggers can now break lockers/other renamable objects, and pendrivers + can now extract their electronics. + - code_imp: Most pen typechecks now check for writing implements. + SyncIt21: + - bugfix: you can piggyback on players again + - bugfix: you can strip someone while lying down + - bugfix: paraplegics can buckle others & themselves to chairs & mobs + - qol: improved feedback messages when an action cannot be done + mc-oofert: + - bugfix: wawa ordnance air alarms dont send alerts roundstart + - qol: wawa ordnance gets more portable atmos machines to compensate for having + next to no actual portable atmos machines + - bugfix: wawa ordnance gets 3 random roundstart cores (forgor to add) + necromanceranne: + - bugfix: The Infiltrator module now has the same welding protections as the engineering + module. + - bugfix: The infiltrator module now properly protects you from head impacts. Helpful + if you wipe out on your hoverboard while fleeing the cops. + - code_imp: Improves the definitions for welding protection values. + - bugfix: The Stimmed mutation now has the appropriate instability value for a largely + meaningless mutation. + - rscadd: The nullblade, a nullrod variant that is weaker outright, but can inflict + severe wounds by performing a sneak attack. Debilitate your target or attack + from behind. + - bugfix: The shortsword sprite no longer has a misaligned handle. + - code_imp: Organized the nullrod file, and removed some unnecessary subtyping on + various types of nullrods. + norsvenska: + - bugfix: '[IceBox] The Head of Personnel''s Requests Console announcements now + correctly display the HoP as the announcer, rather than "Unknown"' + san7890: + - bugfix: You should no longer attack mobs that don't have a chest in the chest + (bots). + the-orange-cow: + - bugfix: Medicated suture, advanced regenerative mesh, and mourning poultice reactions + should more consistently spawn the items they are meant to produce. + uaioy: + - spellcheck: fixed typo in raptor emote + vinylspiders: + - bugfix: fixes an issue that was causing the quirk config tooltips to render behind + the window, making them nearly impossible to read. + zxaber: + - bugfix: Refactored borg omnitool code, fixing most of the unique interaction issues. diff --git a/icons/mob/clothing/belt.dmi b/icons/mob/clothing/belt.dmi index f8673eedd9518..44ede20f2a5a1 100644 Binary files a/icons/mob/clothing/belt.dmi and b/icons/mob/clothing/belt.dmi differ diff --git a/icons/mob/clothing/belt_mirror.dmi b/icons/mob/clothing/belt_mirror.dmi index 69fd53612f01d..9594f6227730f 100644 Binary files a/icons/mob/clothing/belt_mirror.dmi and b/icons/mob/clothing/belt_mirror.dmi differ diff --git a/icons/mob/huds/hud.dmi b/icons/mob/huds/hud.dmi index a3bbdf2ede075..086e886bab7b2 100644 Binary files a/icons/mob/huds/hud.dmi and b/icons/mob/huds/hud.dmi differ diff --git a/icons/mob/inhands/weapons/swords_lefthand.dmi b/icons/mob/inhands/weapons/swords_lefthand.dmi index 40c58203286df..b9552c754c082 100644 Binary files a/icons/mob/inhands/weapons/swords_lefthand.dmi and b/icons/mob/inhands/weapons/swords_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/swords_righthand.dmi b/icons/mob/inhands/weapons/swords_righthand.dmi index 0600498a34ba9..f132e997658cb 100644 Binary files a/icons/mob/inhands/weapons/swords_righthand.dmi and b/icons/mob/inhands/weapons/swords_righthand.dmi differ diff --git a/icons/mob/silicon/robot_items.dmi b/icons/mob/silicon/robot_items.dmi index 5ad091d6c9f86..00c813ace7f48 100644 Binary files a/icons/mob/silicon/robot_items.dmi and b/icons/mob/silicon/robot_items.dmi differ diff --git a/icons/obj/machines/cell_charger.dmi b/icons/obj/machines/cell_charger.dmi index 0c9ca53544286..1082130dadb1e 100644 Binary files a/icons/obj/machines/cell_charger.dmi and b/icons/obj/machines/cell_charger.dmi differ diff --git a/icons/obj/service/bureaucracy.dmi b/icons/obj/service/bureaucracy.dmi index e9f8347b0487b..b400b7aee8b72 100644 Binary files a/icons/obj/service/bureaucracy.dmi and b/icons/obj/service/bureaucracy.dmi differ diff --git a/icons/obj/service/library.dmi b/icons/obj/service/library.dmi index 79a06dd4b8f91..f9273a55e5530 100644 Binary files a/icons/obj/service/library.dmi and b/icons/obj/service/library.dmi differ diff --git a/icons/obj/toys/balloons.dmi b/icons/obj/toys/balloons.dmi index 96afdaea2c0ed..1e02ed072d79e 100644 Binary files a/icons/obj/toys/balloons.dmi and b/icons/obj/toys/balloons.dmi differ diff --git a/icons/obj/weapons/guns/ammo.dmi b/icons/obj/weapons/guns/ammo.dmi index 7554749a7e4be..e3a82a81cd31d 100644 Binary files a/icons/obj/weapons/guns/ammo.dmi and b/icons/obj/weapons/guns/ammo.dmi differ diff --git a/icons/obj/weapons/sword.dmi b/icons/obj/weapons/sword.dmi index ca819ffcc5136..9b5a989a0514d 100644 Binary files a/icons/obj/weapons/sword.dmi and b/icons/obj/weapons/sword.dmi differ diff --git a/strings/names/hackers.txt b/strings/names/hackers.txt new file mode 100644 index 0000000000000..e2722fb09fd21 --- /dev/null +++ b/strings/names/hackers.txt @@ -0,0 +1,46 @@ +Ne0Phyte +CipherX +Gh0stWire +L33tByt3 +Vortex9 +Syn4pse +DarkMatt3r +QuantumDr1ft +Crash0verr1de +Z3r0C00l +NyxShad0w +Gl1tchR3aper +CryptoWra1th +Raz0rEdge +VoidWalk3r +Neur0mancer +EchoH3xx +DataSt0rm +CyberS1ren +Rogu3Protocol +Nexu5Prim3 +CircuitBr3aker +EnigmaPulse +PhantomBit +FluxC4pac1tor +OmegaC0dec +Ne0nRon1n +Senpa1Sw1pe +MechaM0chii +SakuraSn1per +WaifuWarri0r +KatanaKid99 +xXDarkL0rd69Xx +H4xx0rNinja +CyberNinja1337 +Ub3r1337Sk1llz +PhrEaK420 +IRCWizard69 +EliteWar3zKing +Y2KPwn3r +BBSPh34r +BlackWill0w69 +2038Pr0blem +Sp4ceW1nd +B0bbyT4bles +C0deInjector diff --git a/tgstation.dme b/tgstation.dme index ce40a5948a3a4..95898ab0e9dc2 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4666,6 +4666,9 @@ #include "code\modules\mob\living\basic\bots\hygienebot\hygienebot_ai.dm" #include "code\modules\mob\living\basic\bots\medbot\medbot.dm" #include "code\modules\mob\living\basic\bots\medbot\medbot_ai.dm" +#include "code\modules\mob\living\basic\bots\vibebot\vibebot.dm" +#include "code\modules\mob\living\basic\bots\vibebot\vibebot_abilities.dm" +#include "code\modules\mob\living\basic\bots\vibebot\vibebot_ai.dm" #include "code\modules\mob\living\basic\clown\clown.dm" #include "code\modules\mob\living\basic\clown\clown_ai.dm" #include "code\modules\mob\living\basic\cult\shade.dm" @@ -5116,7 +5119,6 @@ #include "code\modules\mob\living\simple_animal\bot\mulebot.dm" #include "code\modules\mob\living\simple_animal\bot\secbot.dm" #include "code\modules\mob\living\simple_animal\bot\SuperBeepsky.dm" -#include "code\modules\mob\living\simple_animal\bot\vibebot.dm" #include "code\modules\mob\living\simple_animal\hostile\dark_wizard.dm" #include "code\modules\mob\living\simple_animal\hostile\hostile.dm" #include "code\modules\mob\living\simple_animal\hostile\illusion.dm" @@ -5333,6 +5335,7 @@ #include "code\modules\plumbing\plumbers\teleporter.dm" #include "code\modules\plumbing\plumbers\vatgrower.dm" #include "code\modules\point\point.dm" +#include "code\modules\power\battery.dm" #include "code\modules\power\cable.dm" #include "code\modules\power\cell.dm" #include "code\modules\power\energy_accumulator.dm" @@ -5343,6 +5346,7 @@ #include "code\modules\power\pipecleaners.dm" #include "code\modules\power\port_gen.dm" #include "code\modules\power\power.dm" +#include "code\modules\power\power_store.dm" #include "code\modules\power\powernet.dm" #include "code\modules\power\rtg.dm" #include "code\modules\power\smes.dm" diff --git a/tgui/packages/tgui/interfaces/MessageMonitor.tsx b/tgui/packages/tgui/interfaces/MessageMonitor.tsx index ed3afac07a2c2..fb237bb786d4d 100644 --- a/tgui/packages/tgui/interfaces/MessageMonitor.tsx +++ b/tgui/packages/tgui/interfaces/MessageMonitor.tsx @@ -133,7 +133,12 @@ const MessageLogsScreen = (props) => { {message.sender} {message.recipient} - {message.message} + + + ))} diff --git a/tgui/packages/tgui/interfaces/NtosMessenger/ChatScreen.tsx b/tgui/packages/tgui/interfaces/NtosMessenger/ChatScreen.tsx index b168b05729786..bdbd24adb25ec 100644 --- a/tgui/packages/tgui/interfaces/NtosMessenger/ChatScreen.tsx +++ b/tgui/packages/tgui/interfaces/NtosMessenger/ChatScreen.tsx @@ -1,5 +1,4 @@ import { BooleanLike } from 'common/react'; -import { decodeHtmlEntities } from 'common/string'; import { Component, createRef, RefObject } from 'react'; import { useBackend } from '../../backend'; @@ -402,12 +401,14 @@ const ChatMessage = (props: ChatMessageProps) => { const { message, everyone, outgoing, photoPath, timestamp, onPreviewImage } = props; - const displayMessage = decodeHtmlEntities(message); + const messageHTML = { + __html: `${message}`, + }; return ( - {displayMessage} + {
{fileList.length === 0 && ( - Use the File Manager app to download files from a disk. + Use data disk to download files from compressor or doppler array. )} @@ -58,7 +58,7 @@ const PaperPublishing = (props) => { label="File (required)" buttons={