diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index fc3f2852fc..00dc7b1d10 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -7,15 +7,5 @@ #deathride58 /modular_citadel/ @deathride58 -#LetterJay -/modular_citadel/code/modules/client/loadout/__donator.dm @LetterJay - -#Poojawa - -/modular_citadel/code/modules/vore @Poojawa -/code/game/objects/items/devices/dogborg_sleeper.dm @Poojawa -/modular_citadel/code/modules/mob/living/silicon/robot/dogborg_equipment.dm @Poojawa -/tgui/ @Poojawa -/modular_citadel/code/modules/clothing/spacesuits/flightsuit.dm @Poojawa -/modular_citadel/code/game/objects/ids.dm @Poojawa -/sound/vore @Poojawa \ No newline at end of file +#LetterJay +/modular_citadel/code/modules/client/loadout/__donator.dm @LetterJay diff --git a/.travis.yml b/.travis.yml index 60a2a7e7b4..fa42ba3aef 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ env: - BYOND_MAJOR="512" - BYOND_MINOR="1418" - NODE_VERSION="4" - - RUST_G_VERSION="0.2.0" + - RUST_G_VERSION="0.3.0" - BUILD_TOOLS=false - BUILD_TESTING=false - DM_MAPFILE="loadallmaps" @@ -21,8 +21,6 @@ cache: directories: - $HOME/BYOND-${BYOND_MAJOR}.${BYOND_MINOR} - tgui/node_modules - - $HOME/.rustup - - $HOME/.cargo addons: @@ -34,6 +32,7 @@ addons: - gcc-multilib - python3 - python3-pip + - libssl-dev:i386 install: - tools/travis/install_build_tools.sh diff --git a/SQL/database_changelog.txt b/SQL/database_changelog.txt index 6e6bd7f7ca..83bc78050d 100644 --- a/SQL/database_changelog.txt +++ b/SQL/database_changelog.txt @@ -2,14 +2,22 @@ Any time you make a change to the schema files, remember to increment the databa The latest database version is 4.1; The query to update the schema revision table is: -INSERT INTO `schema_revision` (`major`, `minor`) VALUES (4, 1); +INSERT INTO `schema_revision` (`major`, `minor`) VALUES (4, 2); or -INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (4, 1); +INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (4, 2); In any query remember to add a prefix to the table names if you use one. ---------------------------------------------------- +Version 4.2, 17 April 2018, by Jordie0608 +Modified table 'admin', adding the columns 'round_id' and 'target' +ALTER TABLE `admin_log` + ADD COLUMN `round_id` INT UNSIGNED NOT NULL AFTER `datetime`, + ADD COLUMN `target` VARCHAR(32) NOT NULL AFTER `operation`; + +---------------------------------------------------- + Version 4.1, 3 February 2018, by Jordie0608 Modified tables 'admin', 'admin_log' and 'admin_rank', removing unnecessary columns and adding support for excluding rights flags from admin ranks. This change was made to enable use of sql-based admin loading. @@ -41,7 +49,6 @@ ALTER TABLE `admin_ranks` DROP PRIMARY KEY, ADD PRIMARY KEY (`rank`); - ---------------------------------------------------- Version 4.0, 12 November 2017, by Jordie0608 diff --git a/SQL/tgstation_schema.sql b/SQL/tgstation_schema.sql index ddd31a7e80..92411ea895 100644 --- a/SQL/tgstation_schema.sql +++ b/SQL/tgstation_schema.sql @@ -33,9 +33,11 @@ DROP TABLE IF EXISTS `admin_log`; CREATE TABLE `admin_log` ( `id` int(11) NOT NULL AUTO_INCREMENT, `datetime` datetime NOT NULL, + `round_id` int(11) unsigned NOT NULL, `adminckey` varchar(32) NOT NULL, `adminip` int(10) unsigned NOT NULL, `operation` enum('add admin','remove admin','change admin rank','add rank','remove rank','change rank flags') NOT NULL, + `target` varchar(32) NOT NULL, `log` varchar(1000) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; diff --git a/SQL/tgstation_schema_prefixed.sql b/SQL/tgstation_schema_prefixed.sql index 01e0ed150b..de9d67e335 100644 --- a/SQL/tgstation_schema_prefixed.sql +++ b/SQL/tgstation_schema_prefixed.sql @@ -33,9 +33,11 @@ DROP TABLE IF EXISTS `SS13_admin_log`; CREATE TABLE `SS13_admin_log` ( `id` int(11) NOT NULL AUTO_INCREMENT, `datetime` datetime NOT NULL, + `round_id` int(11) unsigned NOT NULL, `adminckey` varchar(32) NOT NULL, `adminip` int(10) unsigned NOT NULL, `operation` enum('add admin','remove admin','change admin rank','add rank','remove rank','change rank flags') NOT NULL, + `target` varchar(32) NOT NULL, `log` varchar(1000) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm index 56bc9a0548..e08776fd4a 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm @@ -54,7 +54,7 @@ /turf/open/floor/plating, /area/ruin/powered/beach) "an" = ( -/obj/item/device/flashlight/lantern, +/obj/item/flashlight/lantern, /obj/machinery/light/small{ dir = 1 }, @@ -207,7 +207,7 @@ /area/ruin/powered/beach) "aQ" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/wood, /area/ruin/powered/beach) "aR" = ( @@ -341,7 +341,7 @@ dir = 8 }, /obj/structure/window/reinforced, -/obj/item/device/megaphone, +/obj/item/megaphone, /turf/open/floor/wood, /area/ruin/powered/beach) "bH" = ( @@ -382,7 +382,7 @@ /turf/open/floor/plating/beach/sand, /area/ruin/powered/beach) "bO" = ( -/obj/item/device/camera, +/obj/item/camera, /turf/open/floor/plating/beach/sand, /area/ruin/powered/beach) "bP" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm index 7890b3b258..c9712b6164 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm @@ -358,7 +358,7 @@ invisibility = 101 }, /obj/structure/table, -/obj/item/device/flashlight/lamp/bananalamp, +/obj/item/flashlight/lamp/bananalamp, /turf/open/indestructible{ icon_state = "white" }, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm index b75d7c5233..73f7a7729a 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm @@ -37,12 +37,12 @@ /area/ruin/powered/animal_hospital) "aj" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/cmo, /area/ruin/powered/animal_hospital) "ak" = ( /obj/structure/table/wood, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/item/pen/blue, /turf/open/floor/plasteel/cmo, /area/ruin/powered/animal_hospital) @@ -281,7 +281,7 @@ /area/ruin/powered/animal_hospital) "bb" = ( /obj/structure/table/reinforced, -/obj/item/device/laser_pointer, +/obj/item/laser_pointer, /obj/machinery/light{ dir = 4 }, @@ -335,9 +335,9 @@ /area/ruin/powered/animal_hospital) "bk" = ( /obj/structure/reagent_dispensers/fueltank, -/obj/item/device/flashlight/glowstick/blue, -/obj/item/device/flashlight/glowstick/blue, -/obj/item/device/flashlight/glowstick/blue, +/obj/item/flashlight/glowstick/blue, +/obj/item/flashlight/glowstick/blue, +/obj/item/flashlight/glowstick/blue, /turf/open/floor/plating, /area/ruin/powered/animal_hospital) "bl" = ( @@ -435,7 +435,7 @@ /area/ruin/powered/animal_hospital) "by" = ( /obj/structure/table/reinforced, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/blue/side{ dir = 8 }, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm index ea7e87e385..0bcddfcbe7 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_ash_walker1.dmm @@ -107,7 +107,7 @@ /obj/structure/stone_tile/cracked{ dir = 1 }, -/obj/item/device/flashlight/lantern, +/obj/item/flashlight/lantern, /turf/open/indestructible/boss/air, /area/ruin/unpowered/ash_walkers) "av" = ( @@ -152,7 +152,7 @@ /obj/structure/stone_tile/cracked{ dir = 8 }, -/obj/item/device/flashlight/lantern, +/obj/item/flashlight/lantern, /turf/open/indestructible/boss/air, /area/ruin/unpowered/ash_walkers) "az" = ( @@ -165,7 +165,7 @@ /obj/structure/stone_tile/cracked{ dir = 8 }, -/obj/item/device/malf_upgrade, +/obj/item/malf_upgrade, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/ash_walkers) "aB" = ( @@ -479,10 +479,10 @@ /area/ruin/unpowered/ash_walkers) "bn" = ( /obj/structure/closet/crate/radiation, -/obj/item/device/flashlight/lantern, -/obj/item/device/flashlight/lantern, -/obj/item/device/flashlight/lantern, -/obj/item/device/flashlight/flare, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, +/obj/item/flashlight/flare, /obj/structure/stone_tile/block/cracked{ dir = 8 }, @@ -510,7 +510,7 @@ /obj/structure/stone_tile{ dir = 4 }, -/obj/item/device/flashlight/lantern, +/obj/item/flashlight/lantern, /turf/open/indestructible/boss/air, /area/ruin/unpowered/ash_walkers) "bq" = ( @@ -549,7 +549,7 @@ /obj/structure/stone_tile/cracked{ dir = 4 }, -/obj/item/device/flashlight/lantern, +/obj/item/flashlight/lantern, /turf/open/indestructible/boss/air, /area/ruin/unpowered/ash_walkers) "bv" = ( @@ -557,9 +557,9 @@ dir = 8 }, /obj/structure/closet/crate, -/obj/item/device/flashlight/lantern, -/obj/item/device/flashlight/lantern, -/obj/item/device/flashlight/lantern, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/ash_walkers) "bw" = ( @@ -591,9 +591,9 @@ dir = 8 }, /obj/structure/stone_tile/cracked, -/obj/item/device/flashlight/lantern, -/obj/item/device/flashlight/lantern, -/obj/item/device/flashlight/lantern, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, /turf/open/indestructible/boss, /area/ruin/unpowered/ash_walkers) "bz" = ( @@ -1015,7 +1015,7 @@ /obj/structure/stone_tile/block/cracked{ dir = 4 }, -/obj/item/device/flashlight/lantern, +/obj/item/flashlight/lantern, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/ash_walkers) "cE" = ( @@ -1329,7 +1329,7 @@ /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "dx" = ( -/obj/item/device/flashlight/lantern, +/obj/item/flashlight/lantern, /obj/structure/stone_tile/center, /obj/effect/mapping_helpers/no_lava, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm index eee442825e..7c166a1a56 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_cultaltar.dmm @@ -60,7 +60,7 @@ color = "#ff0000"; used = 1 }, -/obj/item/device/cult_shift, +/obj/item/cult_shift, /obj/effect/decal/remains/human, /obj/item/melee/cultblade/dagger, /obj/effect/step_trigger/sound_effect{ diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm index 7c1bda845e..a87bdf704b 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm @@ -15,8 +15,8 @@ /obj/item/pickaxe, /obj/item/storage/bag/ore, /obj/item/storage/bag/ore, -/obj/item/device/mining_scanner, -/obj/item/device/flashlight/lantern, +/obj/item/mining_scanner, +/obj/item/flashlight/lantern, /obj/item/card/id/mining, /turf/open/floor/plating, /area/ruin/powered/golem_ship) @@ -28,8 +28,8 @@ /obj/item/pickaxe, /obj/item/storage/bag/ore, /obj/item/storage/bag/ore, -/obj/item/device/mining_scanner, -/obj/item/device/flashlight/lantern, +/obj/item/mining_scanner, +/obj/item/flashlight/lantern, /obj/item/card/id/mining, /turf/open/floor/plating, /area/ruin/powered/golem_ship) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm index 22f1de575e..7ea0145f94 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm @@ -30,7 +30,7 @@ /turf/open/floor/pod/dark, /area/ruin/powered) "h" = ( -/obj/item/device/gps/computer, +/obj/item/gps/computer, /obj/structure/tubes, /turf/open/floor/pod/dark, /area/ruin/powered) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm index 8fbe0f7803..ba9b8b5c36 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_syndicate_base1.dmm @@ -20,11 +20,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -44,11 +41,9 @@ /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/main) "ag" = ( -/obj/machinery/airalarm{ +/obj/machinery/airalarm/syndicate{ dir = 4; - pixel_x = -24; - req_access = null; - req_access_txt = "150" + pixel_x = -24 }, /turf/open/floor/plasteel/red/side{ dir = 8 @@ -100,9 +95,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/machinery/chem_dispenser, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, +/obj/machinery/chem_dispenser/fullupgrade, /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/chemistry) "cA" = ( @@ -187,21 +182,16 @@ /area/ruin/unpowered/syndicate_lava_base/cargo) "dA" = ( /obj/structure/closet/l3closet, -/obj/machinery/power/apc{ +/obj/machinery/power/apc/syndicate{ dir = 8; name = "Chemistry APC"; - pixel_x = -24; - req_access = null; - req_access_txt = "150" + pixel_x = -24 }, /obj/structure/cable/yellow{ icon_state = "0-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/white/side{ @@ -209,11 +199,8 @@ }, /area/ruin/unpowered/syndicate_lava_base/chemistry) "dB" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 8 }, /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/chemistry) @@ -287,10 +274,8 @@ /turf/open/floor/plasteel/dark, /area/ruin/unpowered/syndicate_lava_base/cargo) "dL" = ( -/obj/machinery/airalarm{ - pixel_y = 24; - req_access = null; - req_access_txt = "150" +/obj/machinery/airalarm/syndicate{ + pixel_y = 24 }, /obj/structure/closet/crate, /obj/item/extinguisher{ @@ -305,24 +290,24 @@ pixel_x = 1; pixel_y = -1 }, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = -5; pixel_y = 5 }, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = -2; pixel_y = 2 }, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = -1 }, -/obj/item/device/radio/headset/syndicate/alt{ +/obj/item/radio/headset/syndicate/alt{ pixel_x = -3; pixel_y = 3 }, -/obj/item/device/radio/headset/syndicate/alt, -/obj/item/device/radio/headset/syndicate/alt{ +/obj/item/radio/headset/syndicate/alt, +/obj/item/radio/headset/syndicate/alt{ pixel_x = 3; pixel_y = -3 }, @@ -390,11 +375,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /turf/open/floor/plasteel/white/side{ dir = 8 }, @@ -437,11 +418,9 @@ pixel_x = -3 }, /obj/item/reagent_containers/dropper, -/obj/machinery/airalarm{ +/obj/machinery/airalarm/syndicate{ dir = 8; - pixel_x = 24; - req_access = null; - req_access_txt = "150" + pixel_x = 24 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/white/side{ @@ -512,11 +491,11 @@ /area/ruin/unpowered/syndicate_lava_base/cargo) "ee" = ( /obj/structure/rack, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = -3; pixel_y = 3 }, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/brown{ dir = 1 @@ -529,12 +508,10 @@ /obj/structure/cable/yellow{ icon_state = "0-2" }, -/obj/machinery/power/apc{ +/obj/machinery/power/apc/syndicate{ dir = 1; name = "Cargo Bay APC"; - pixel_y = 24; - req_access = null; - req_access_txt = "150" + pixel_y = 24 }, /obj/structure/closet/emcloset/anchored, /obj/effect/decal/cleanable/dirt, @@ -649,27 +626,27 @@ /area/ruin/unpowered/syndicate_lava_base/testlab) "eq" = ( /obj/structure/table/reinforced, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/voice, -/obj/item/device/assembly/voice, -/obj/item/device/assembly/voice, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/signaler, +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/voice, +/obj/item/assembly/voice, +/obj/item/assembly/voice, +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, /obj/item/screwdriver/nuke, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -689,11 +666,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /turf/open/floor/plasteel/white/side{ dir = 8 }, @@ -730,27 +703,27 @@ pixel_y = 3 }, /obj/item/stack/cable_coil/white, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = -3; pixel_y = -3 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = -3; pixel_y = -3 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = -3; pixel_y = -3 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 3; pixel_y = 3 }, @@ -779,11 +752,8 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 }, /turf/open/floor/plasteel/vault{ dir = 5 @@ -796,11 +766,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault{ @@ -814,11 +781,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 1 }, /turf/open/floor/plasteel/vault{ dir = 5 @@ -832,11 +796,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/mining/glass{ @@ -854,11 +815,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/cargo) @@ -870,11 +828,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 }, /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/cargo) @@ -955,28 +910,20 @@ dir = 1; pixel_y = -24 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 4 }, /turf/open/floor/plasteel/vault{ dir = 8 }, /area/ruin/unpowered/syndicate_lava_base/testlab) "eN" = ( -/obj/machinery/airalarm{ +/obj/machinery/airalarm/syndicate{ dir = 1; - pixel_y = -24; - req_access = null; - req_access_txt = "150" + pixel_y = -24 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /turf/open/floor/plasteel/vault{ dir = 8 @@ -987,11 +934,8 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /turf/open/floor/plasteel/vault{ dir = 8 @@ -1004,11 +948,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 }, /turf/open/floor/plasteel/vault{ dir = 8 @@ -1018,7 +959,7 @@ /obj/machinery/light/small, /obj/structure/table/reinforced, /obj/item/restraints/handcuffs, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/effect/decal/cleanable/dirt, /obj/item/storage/box/monkeycubes{ pixel_x = 4; @@ -1037,11 +978,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /turf/open/floor/plasteel/white/side{ dir = 10 }, @@ -1063,8 +1000,8 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/chem_dispenser, /obj/effect/decal/cleanable/dirt, +/obj/machinery/chem_dispenser/fullupgrade, /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/chemistry) "eV" = ( @@ -1078,11 +1015,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -1118,11 +1051,8 @@ /obj/item/storage/box/donkpockets{ pixel_x = 2 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 1 }, /turf/open/floor/plasteel/dark, /area/ruin/unpowered/syndicate_lava_base/cargo) @@ -1155,20 +1085,14 @@ /area/ruin/unpowered/syndicate_lava_base/cargo) "fc" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 }, /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/cargo) "fd" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 8 }, /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/cargo) @@ -1182,11 +1106,8 @@ /turf/open/floor/mineral/plastitanium, /area/ruin/unpowered/syndicate_lava_base/cargo) "ff" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 4 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/white/side{ @@ -1195,22 +1116,16 @@ /area/ruin/unpowered/syndicate_lava_base/virology) "fg" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 }, /turf/open/floor/plasteel/white/side{ dir = 6 }, /area/ruin/unpowered/syndicate_lava_base/virology) "fh" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 4 }, /turf/open/floor/plasteel/white/side{ dir = 10 @@ -1223,12 +1138,10 @@ pixel_y = 2 }, /obj/item/storage/box/syringes, -/obj/machinery/power/apc{ +/obj/machinery/power/apc/syndicate{ dir = 1; name = "Virology APC"; - pixel_y = 24; - req_access = null; - req_access_txt = "150" + pixel_y = 24 }, /obj/structure/cable/yellow{ icon_state = "0-2" @@ -1244,7 +1157,7 @@ pixel_y = 28 }, /obj/item/clothing/gloves/color/latex, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/item/clothing/glasses/hud/health, /obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt, @@ -1257,12 +1170,10 @@ }, /area/ruin/unpowered/syndicate_lava_base/virology) "fk" = ( -/obj/machinery/power/apc{ +/obj/machinery/power/apc/syndicate{ dir = 2; name = "Experimentation Lab APC"; - pixel_y = -24; - req_access = null; - req_access_txt = "150" + pixel_y = -24 }, /obj/structure/cable/yellow{ icon_state = "0-4" @@ -1274,11 +1185,7 @@ /area/ruin/unpowered/syndicate_lava_base/testlab) "fl" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /obj/structure/extinguisher_cabinet{ pixel_x = 25 }, @@ -1299,11 +1206,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /turf/open/floor/plasteel/white, /area/ruin/unpowered/syndicate_lava_base/chemistry) "fn" = ( @@ -1349,11 +1252,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault{ dir = 5 @@ -1364,40 +1263,12 @@ dir = 8 }, /obj/structure/closet/crate, -/obj/item/stock_parts/capacitor/quadratic, -/obj/item/stock_parts/capacitor/quadratic, -/obj/item/stock_parts/cell/bluespace{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/stock_parts/cell/bluespace{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/stock_parts/manipulator/femto{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/stock_parts/manipulator/femto{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/stock_parts/matter_bin/bluespace{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/item/stock_parts/matter_bin/bluespace{ - pixel_x = -6; - pixel_y = 6 - }, -/obj/item/stock_parts/micro_laser/quadultra, -/obj/item/stock_parts/micro_laser/quadultra, -/obj/item/stock_parts/scanning_module/triphasic{ - pixel_x = -4 - }, -/obj/item/stock_parts/scanning_module/triphasic{ - pixel_x = -4 - }, +/obj/item/storage/box/stockparts/deluxe, +/obj/item/stack/sheet/metal/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/circuitboard/machine/processor, +/obj/item/circuitboard/machine/gibber, +/obj/item/circuitboard/machine/deep_fryer, /turf/open/floor/plasteel/dark, /area/ruin/unpowered/syndicate_lava_base/cargo) "ft" = ( @@ -1428,11 +1299,9 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/machinery/airalarm{ +/obj/machinery/airalarm/syndicate{ dir = 4; - pixel_x = -24; - req_access = null; - req_access_txt = "150" + pixel_x = -24 }, /obj/structure/table, /obj/item/clothing/suit/hazardvest, @@ -1443,10 +1312,10 @@ /obj/item/clothing/head/soft{ pixel_x = -8 }, -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = 5 }, -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = 5 }, /turf/open/floor/plasteel/brown{ @@ -1476,11 +1345,7 @@ req_access_txt = "150" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /turf/open/floor/plasteel/white, /area/ruin/unpowered/syndicate_lava_base/virology) "fz" = ( @@ -1489,11 +1354,7 @@ req_access_txt = "150" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /turf/open/floor/plasteel/white, /area/ruin/unpowered/syndicate_lava_base/virology) "fA" = ( @@ -1536,10 +1397,8 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/machinery/airalarm{ - pixel_y = 24; - req_access = null; - req_access_txt = "150" +/obj/machinery/airalarm/syndicate{ + pixel_y = 24 }, /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/main) @@ -1553,11 +1412,7 @@ "fG" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /obj/machinery/door/airlock/hatch{ name = "Experimentation Lab"; req_access_txt = "150" @@ -1581,11 +1436,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /turf/open/floor/plasteel/white/side{ dir = 1 }, @@ -1601,11 +1452,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /obj/machinery/door/airlock/mining/glass{ name = "Warehouse"; req_access_txt = "150" @@ -1704,11 +1551,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/white, @@ -1717,11 +1561,8 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 1 }, /turf/open/floor/plasteel/white, /area/ruin/unpowered/syndicate_lava_base/virology) @@ -1729,21 +1570,15 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /turf/open/floor/plasteel/white, /area/ruin/unpowered/syndicate_lava_base/virology) "gs" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 2 }, /obj/machinery/light/small, /obj/effect/decal/cleanable/dirt, @@ -1753,11 +1588,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 1 }, /turf/open/floor/plasteel/white/side{ dir = 9 @@ -1767,11 +1599,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "1-4" @@ -1784,11 +1613,8 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/disposalpipe/segment, /obj/structure/cable/yellow{ @@ -1800,11 +1626,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -1820,11 +1643,8 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -1838,11 +1658,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 1 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -1867,11 +1684,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -1885,11 +1699,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -1903,11 +1714,7 @@ /obj/structure/cable/yellow{ icon_state = "2-8" }, -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer3, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -1926,11 +1733,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/main) @@ -1941,11 +1745,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/main) @@ -1954,11 +1755,8 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 2 }, /obj/structure/cable/yellow{ icon_state = "1-8" @@ -1972,11 +1770,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/main) @@ -1988,11 +1783,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/main) @@ -2006,11 +1798,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /turf/open/floor/plasteel/brown/corner{ dir = 4 @@ -2023,11 +1812,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 }, /turf/open/floor/plasteel/brown{ dir = 1 @@ -2087,30 +1873,21 @@ req_access_txt = "150" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /turf/open/floor/plasteel/white, /area/ruin/unpowered/syndicate_lava_base/virology) "gU" = ( -/obj/machinery/airalarm{ +/obj/machinery/airalarm/syndicate{ dir = 4; - pixel_x = -24; - req_access = null; - req_access_txt = "150" + pixel_x = -24 }, /obj/structure/sink{ dir = 8; pixel_x = -12; pixel_y = 2 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 1 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/white/side{ @@ -2179,11 +1956,8 @@ /obj/effect/turf_decal/stripes/line{ dir = 6 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 1 }, /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/main) @@ -2198,11 +1972,7 @@ /area/ruin/unpowered/syndicate_lava_base/main) "hc" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -2289,11 +2059,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /turf/open/floor/plasteel/white/side{ dir = 1 }, @@ -2369,18 +2135,12 @@ /turf/open/floor/plating, /area/ruin/unpowered/syndicate_lava_base/main) "hx" = ( -/obj/machinery/airalarm{ +/obj/machinery/airalarm/syndicate{ dir = 4; - pixel_x = -24; - req_access = null; - req_access_txt = "150" + pixel_x = -24 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -2435,11 +2195,8 @@ /area/ruin/unpowered/syndicate_lava_base/virology) "hF" = ( /obj/machinery/light/small, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 1 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/white/side, @@ -2480,7 +2237,7 @@ }, /obj/structure/closet/emcloset/anchored, /obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, /obj/item/clothing/mask/gas, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -2491,11 +2248,7 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -2507,10 +2260,8 @@ /obj/structure/table/wood, /obj/item/ammo_box/magazine/m10mm, /obj/item/ammo_box/magazine/sniper_rounds, -/obj/machinery/airalarm{ - pixel_y = 24; - req_access = null; - req_access_txt = "150" +/obj/machinery/airalarm/syndicate{ + pixel_y = 24 }, /turf/open/floor/plasteel/grimy, /area/ruin/unpowered/syndicate_lava_base/dormitories) @@ -2518,11 +2269,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, /turf/open/floor/plasteel/grimy, /area/ruin/unpowered/syndicate_lava_base/dormitories) "hO" = ( @@ -2532,20 +2279,14 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, /turf/open/floor/plasteel/grimy, /area/ruin/unpowered/syndicate_lava_base/dormitories) "hQ" = ( /obj/structure/table/wood, /obj/item/ammo_box/magazine/m10mm, -/obj/machinery/airalarm{ - pixel_y = 24; - req_access = null; - req_access_txt = "150" +/obj/machinery/airalarm/syndicate{ + pixel_y = 24 }, /turf/open/floor/plasteel/grimy, /area/ruin/unpowered/syndicate_lava_base/dormitories) @@ -2620,22 +2361,16 @@ icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 8 }, /turf/open/floor/plasteel/red/side{ dir = 8 }, /area/ruin/unpowered/syndicate_lava_base/main) "ia" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 8 }, /turf/open/floor/plasteel/red/side{ dir = 4 @@ -2650,11 +2385,7 @@ /area/ruin/unpowered/syndicate_lava_base/dormitories) "ic" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /turf/open/floor/plasteel/grimy, /area/ruin/unpowered/syndicate_lava_base/dormitories) "id" = ( @@ -2718,11 +2449,7 @@ /area/ruin/unpowered/syndicate_lava_base/main) "ij" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -2740,11 +2467,7 @@ name = "Cabin 2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/dormitories) "im" = ( @@ -2761,11 +2484,7 @@ name = "Cabin 4" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/dormitories) "ip" = ( @@ -2844,11 +2563,7 @@ /area/ruin/unpowered/syndicate_lava_base/main) "ix" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -2868,21 +2583,15 @@ /area/ruin/unpowered/syndicate_lava_base/dormitories) "iA" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/neutral/side{ dir = 1 }, /area/ruin/unpowered/syndicate_lava_base/dormitories) "iB" = ( -/obj/machinery/airalarm{ - pixel_y = 24; - req_access = null; - req_access_txt = "150" +/obj/machinery/airalarm/syndicate{ + pixel_y = 24 }, /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/effect/decal/cleanable/dirt, @@ -2901,22 +2610,14 @@ dir = 2; pixel_y = 24 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, /turf/open/floor/plasteel/neutral/corner{ dir = 4 }, /area/ruin/unpowered/syndicate_lava_base/dormitories) "iE" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /turf/open/floor/plasteel/neutral/side{ dir = 1 }, @@ -2968,11 +2669,9 @@ /turf/open/floor/circuit/red, /area/ruin/unpowered/syndicate_lava_base/main) "iL" = ( -/obj/machinery/airalarm{ +/obj/machinery/airalarm/syndicate{ dir = 8; - pixel_x = 24; - req_access = null; - req_access_txt = "150" + pixel_x = 24 }, /turf/open/floor/circuit/red, /area/ruin/unpowered/syndicate_lava_base/main) @@ -3004,11 +2703,8 @@ icon_state = "1-4" }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 }, /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/main) @@ -3016,11 +2712,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -3035,11 +2728,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -3050,11 +2740,8 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 1 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -3065,11 +2752,8 @@ "iT" = ( /obj/machinery/light/small, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 2 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -3081,11 +2765,8 @@ /area/ruin/unpowered/syndicate_lava_base/dormitories) "iU" = ( /obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 1 }, /obj/structure/cable/yellow{ icon_state = "2-8" @@ -3099,18 +2780,13 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, -/obj/machinery/power/apc{ +/obj/machinery/power/apc/syndicate{ dir = 2; name = "Dormitories APC"; - pixel_y = -24; - req_access = null; - req_access_txt = "150" + pixel_y = -24 }, /obj/structure/cable/yellow{ icon_state = "0-8" @@ -3121,11 +2797,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer3, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/neutral/side, /area/ruin/unpowered/syndicate_lava_base/dormitories) @@ -3133,11 +2805,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/neutral/corner{ @@ -3217,22 +2886,14 @@ name = "Cabin 1" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/dormitories) "jg" = ( /obj/machinery/door/airlock/maintenance, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -3244,23 +2905,17 @@ name = "Cabin 3" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/dormitories) "ji" = ( /obj/structure/cable/yellow{ icon_state = "0-2" }, -/obj/machinery/power/apc{ +/obj/machinery/power/apc/syndicate{ dir = 8; name = "Primary Hallway APC"; - pixel_x = -24; - req_access = null; - req_access_txt = "150" + pixel_x = -24 }, /turf/open/floor/plasteel/red/side{ dir = 8 @@ -3292,10 +2947,8 @@ icon_state = "sleeper_s"; dir = 4 }, -/obj/machinery/airalarm{ - pixel_y = 24; - req_access = null; - req_access_txt = "150" +/obj/machinery/airalarm/syndicate{ + pixel_y = 24 }, /turf/open/floor/plasteel/grimy, /area/ruin/unpowered/syndicate_lava_base/dormitories) @@ -3303,20 +2956,12 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /turf/open/floor/plasteel/grimy, /area/ruin/unpowered/syndicate_lava_base/dormitories) "jp" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -3328,10 +2973,8 @@ dir = 8; icon_state = "sleeper_s" }, -/obj/machinery/airalarm{ - pixel_y = 24; - req_access = null; - req_access_txt = "150" +/obj/machinery/airalarm/syndicate{ + pixel_y = 24 }, /turf/open/floor/plasteel/grimy, /area/ruin/unpowered/syndicate_lava_base/dormitories) @@ -3373,11 +3016,7 @@ /area/ruin/unpowered/syndicate_lava_base/engineering) "jw" = ( /obj/effect/turf_decal/bot, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, /obj/effect/decal/cleanable/dirt, /obj/structure/closet/toolcloset{ anchored = 1 @@ -3414,11 +3053,8 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 1 }, /turf/open/floor/plasteel/grimy, /area/ruin/unpowered/syndicate_lava_base/dormitories) @@ -3426,11 +3062,8 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 1 }, /turf/open/floor/plasteel/grimy, /area/ruin/unpowered/syndicate_lava_base/dormitories) @@ -3453,11 +3086,8 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 }, /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/main) @@ -3468,11 +3098,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /turf/open/floor/plasteel/yellow/side{ dir = 4 @@ -3487,11 +3114,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/machinery/door/airlock/engineering{ name = "Engineering"; @@ -3509,11 +3133,8 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/engineering) @@ -3524,11 +3145,9 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/airalarm{ +/obj/machinery/airalarm/syndicate{ dir = 8; - pixel_x = 24; - req_access = null; - req_access_txt = "150" + pixel_x = 24 }, /obj/structure/cable/yellow{ icon_state = "2-8" @@ -3536,29 +3155,20 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 4 }, /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/engineering) "jJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 6; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3{ + dir = 6 }, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/engineering) "jK" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 8; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer3{ + dir = 8 }, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/syndicate_lava_base/engineering) @@ -3608,11 +3218,7 @@ /area/ruin/unpowered/syndicate_lava_base/bar) "jQ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -3631,11 +3237,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/main) "jT" = ( @@ -3678,11 +3280,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/engineering) @@ -3720,11 +3318,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 }, /obj/structure/cable/yellow{ icon_state = "2-4" @@ -3734,11 +3329,8 @@ /area/ruin/unpowered/syndicate_lava_base/main) "kd" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 2 }, /obj/structure/cable/yellow{ icon_state = "1-4" @@ -3753,11 +3345,8 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 1 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -3772,11 +3361,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -3787,11 +3373,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -3804,11 +3387,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -3822,20 +3402,14 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 2 }, /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/main) "kj" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 8 }, /obj/structure/chair{ dir = 8 @@ -3849,11 +3423,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /obj/machinery/door/airlock/engineering{ name = "Engineering"; req_access_txt = "150" @@ -3861,11 +3431,7 @@ /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/engineering) "kl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ruin/unpowered/syndicate_lava_base/engineering) "km" = ( @@ -3884,11 +3450,8 @@ }, /area/ruin/unpowered/syndicate_lava_base/bar) "ko" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 4 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault{ @@ -3896,20 +3459,15 @@ }, /area/ruin/unpowered/syndicate_lava_base/bar) "kp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 }, /turf/open/floor/plasteel/dark, /area/ruin/unpowered/syndicate_lava_base/bar) "kq" = ( -/obj/machinery/airalarm{ +/obj/machinery/airalarm/syndicate{ dir = 8; - pixel_x = 24; - req_access = null; - req_access_txt = "150" + pixel_x = 24 }, /obj/machinery/vending/coffee{ extended_inventory = 1 @@ -3924,11 +3482,7 @@ req_access_txt = "150" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -4005,11 +3559,8 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/visible, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ - dir = 8; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible/layer3{ + dir = 8 }, /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/engineering) @@ -4017,12 +3568,10 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/machinery/power/apc{ +/obj/machinery/power/apc/syndicate{ dir = 1; name = "Engineering APC"; - pixel_y = 24; - req_access = null; - req_access_txt = "150" + pixel_y = 24 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -4030,11 +3579,8 @@ /obj/structure/cable/yellow{ icon_state = "0-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 9; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3{ + dir = 9 }, /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/engineering) @@ -4118,11 +3664,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault{ dir = 5 @@ -4150,11 +3692,7 @@ /area/ruin/unpowered/syndicate_lava_base/bar) "kO" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -4220,11 +3758,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/visible{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3, /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/engineering) "kY" = ( @@ -4323,11 +3857,7 @@ name = "Bar" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /turf/open/floor/wood, /area/ruin/unpowered/syndicate_lava_base/bar) "lk" = ( @@ -4352,11 +3882,7 @@ /area/ruin/unpowered/syndicate_lava_base/bar) "ll" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -4421,11 +3947,7 @@ /turf/open/floor/plating, /area/ruin/unpowered/syndicate_lava_base/engineering) "lr" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3, /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/engineering) "ls" = ( @@ -4495,11 +4017,7 @@ /area/ruin/unpowered/syndicate_lava_base/bar) "lB" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /turf/open/floor/wood, /area/ruin/unpowered/syndicate_lava_base/bar) "lC" = ( @@ -4537,11 +4055,7 @@ /obj/item/vending_refill/coffee, /obj/item/vending_refill/cola, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -4580,11 +4094,9 @@ }, /area/ruin/unpowered/syndicate_lava_base/medbay) "lL" = ( -/obj/machinery/airalarm{ +/obj/machinery/airalarm/syndicate{ dir = 4; - pixel_x = -24; - req_access = null; - req_access_txt = "150" + pixel_x = -24 }, /obj/machinery/light/small{ dir = 8 @@ -4608,20 +4120,14 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 4 }, /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/engineering) "lN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 9; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer3{ + dir = 9 }, /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/engineering) @@ -4669,11 +4175,9 @@ /turf/open/floor/plating, /area/ruin/unpowered/syndicate_lava_base/arrivals) "lU" = ( -/obj/machinery/airalarm{ +/obj/machinery/airalarm/syndicate{ dir = 4; - pixel_x = -24; - req_access = null; - req_access_txt = "150" + pixel_x = -24 }, /obj/structure/chair/stool, /turf/open/floor/plasteel/vault{ @@ -4704,11 +4208,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -4719,11 +4220,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -4734,11 +4232,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/machinery/door/airlock{ name = "Bar Storage"; @@ -4753,11 +4248,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -4778,11 +4270,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 }, /obj/structure/cable/yellow{ icon_state = "1-8" @@ -4801,11 +4290,7 @@ /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/medbay) "me" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3, /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/medbay) "mf" = ( @@ -4813,11 +4298,9 @@ dir = 4; pixel_x = 11 }, -/obj/machinery/airalarm{ +/obj/machinery/airalarm/syndicate{ dir = 8; - pixel_x = 24; - req_access = null; - req_access_txt = "150" + pixel_x = 24 }, /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/medbay) @@ -4910,7 +4393,7 @@ }, /obj/structure/closet/emcloset/anchored, /obj/item/tank/internals/emergency_oxygen/engi, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, /obj/item/clothing/mask/gas, /turf/open/floor/plating, /area/ruin/unpowered/syndicate_lava_base/arrivals) @@ -4932,12 +4415,10 @@ /obj/structure/table/wood, /obj/machinery/light/small, /obj/structure/cable/yellow, -/obj/machinery/power/apc{ +/obj/machinery/power/apc/syndicate{ dir = 2; name = "Bar APC"; - pixel_y = -24; - req_access = null; - req_access_txt = "150" + pixel_y = -24 }, /turf/open/floor/wood, /area/ruin/unpowered/syndicate_lava_base/bar) @@ -4960,11 +4441,7 @@ "mz" = ( /obj/machinery/door/airlock/maintenance, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -4991,11 +4468,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /turf/open/floor/plasteel, /area/ruin/unpowered/syndicate_lava_base/medbay) "mC" = ( @@ -5096,7 +4569,7 @@ "mR" = ( /obj/structure/table, /obj/item/storage/toolbox/syndicate, -/obj/item/device/multitool, +/obj/item/multitool, /obj/machinery/button/door{ id = "lavalandsyndi_telecomms"; name = "Telecomms Blast Door Control"; @@ -5133,7 +4606,7 @@ pixel_x = 2; pixel_y = -3 }, -/obj/item/device/multitool, +/obj/item/multitool, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/red/side{ dir = 8 @@ -5141,11 +4614,7 @@ /area/ruin/unpowered/syndicate_lava_base/arrivals) "mY" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -5163,11 +4632,7 @@ /area/ruin/unpowered/syndicate_lava_base/medbay) "na" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3, /turf/open/floor/plasteel/floorgrime, /area/ruin/unpowered/syndicate_lava_base/medbay) "nb" = ( @@ -5266,22 +4731,16 @@ }, /area/ruin/unpowered/syndicate_lava_base/telecomms) "nk" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 4 }, /turf/open/floor/plasteel/vault{ dir = 5 }, /area/ruin/unpowered/syndicate_lava_base/telecomms) "nl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /turf/open/floor/plasteel/vault{ dir = 5 @@ -5292,11 +4751,8 @@ dir = 4 }, /obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 10 }, /obj/structure/noticeboard{ dir = 8; @@ -5342,11 +4798,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 6 }, /obj/structure/cable/yellow{ icon_state = "2-4" @@ -5360,22 +4813,17 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc{ +/obj/machinery/power/apc/syndicate{ dir = 1; name = "Arrival Hallway APC"; - pixel_y = 24; - req_access = null; - req_access_txt = "150" + pixel_y = 24 }, /obj/structure/cable/yellow{ icon_state = "0-4" @@ -5388,11 +4836,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -5405,11 +4850,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -5420,11 +4862,8 @@ /area/ruin/unpowered/syndicate_lava_base/arrivals) "nw" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 2 }, /obj/structure/cable/yellow{ icon_state = "1-4" @@ -5441,11 +4880,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -5459,11 +4895,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -5476,11 +4909,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -5546,11 +4976,9 @@ /turf/open/floor/plating/airless, /area/ruin/unpowered/syndicate_lava_base/engineering) "nH" = ( -/obj/machinery/airalarm{ +/obj/machinery/airalarm/syndicate{ dir = 4; - pixel_x = -24; - req_access = null; - req_access_txt = "150" + pixel_x = -24 }, /obj/machinery/light/small{ dir = 8 @@ -5575,11 +5003,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 5 }, /obj/structure/cable/yellow{ icon_state = "2-4" @@ -5596,11 +5021,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -5614,11 +5036,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -5630,11 +5049,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -5646,11 +5062,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -5665,11 +5078,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -5684,11 +5094,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -5699,11 +5106,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -5716,11 +5120,8 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/machinery/firealarm{ dir = 2; @@ -5737,11 +5138,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer3{ + dir = 1 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -5754,19 +5152,14 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/machinery/airalarm{ - pixel_y = 24; - req_access = null; - req_access_txt = "150" +/obj/machinery/airalarm/syndicate{ + pixel_y = 24 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 4 }, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -5780,11 +5173,8 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer3{ + dir = 9 }, /obj/structure/cable/yellow{ icon_state = "1-8" @@ -5823,12 +5213,10 @@ pixel_y = -29 }, /obj/structure/cable/yellow, -/obj/machinery/power/apc{ +/obj/machinery/power/apc/syndicate{ dir = 4; name = "Medbay APC"; - pixel_x = 24; - req_access = null; - req_access_txt = "150" + pixel_x = 24 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/white/side{ @@ -5895,7 +5283,7 @@ /area/ruin/unpowered/syndicate_lava_base/telecomms) "oj" = ( /obj/structure/table/reinforced, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 1; name = "Syndicate Radio Intercom" }, @@ -5908,12 +5296,10 @@ dir = 8 }, /obj/structure/cable/yellow, -/obj/machinery/power/apc{ +/obj/machinery/power/apc/syndicate{ dir = 2; name = "Telecommunications APC"; - pixel_y = -24; - req_access = null; - req_access_txt = "150" + pixel_y = -24 }, /turf/open/floor/plasteel/vault{ dir = 5 @@ -5929,7 +5315,7 @@ /obj/item/clothing/suit/space/syndicate, /obj/item/clothing/mask/gas/syndicate, /obj/item/clothing/head/helmet/space/syndicate, -/obj/item/device/mining_scanner, +/obj/item/mining_scanner, /obj/item/pickaxe, /turf/open/floor/mineral/plastitanium, /area/ruin/unpowered/syndicate_lava_base/arrivals) @@ -5951,11 +5337,8 @@ /turf/open/floor/plasteel/red/side, /area/ruin/unpowered/syndicate_lava_base/arrivals) "op" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1; - piping_layer = 3; - pixel_x = 5; - pixel_y = 5 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ + dir = 1 }, /turf/open/floor/plasteel/red/side, /area/ruin/unpowered/syndicate_lava_base/arrivals) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_ufo_crash.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_ufo_crash.dmm index 209ba76efa..5f76cdb32c 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_ufo_crash.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_ufo_crash.dmm @@ -6,39 +6,10 @@ /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "c" = ( -/turf/closed/indestructible/abductor{ - icon_state = "alien20" - }, +/turf/closed/wall/mineral/abductor, /area/lavaland/surface/outdoors) "d" = ( -/turf/closed/indestructible/abductor{ - icon_state = "alien21" - }, -/area/ruin/unpowered) -"e" = ( -/turf/closed/indestructible/abductor{ - icon_state = "alien22" - }, -/area/ruin/unpowered) -"f" = ( -/turf/closed/indestructible/abductor{ - icon_state = "alien23" - }, -/area/ruin/unpowered) -"g" = ( -/turf/closed/indestructible/abductor{ - icon_state = "alien24" - }, -/area/lavaland/surface/outdoors) -"h" = ( -/turf/closed/indestructible/abductor{ - icon_state = "alien16" - }, -/area/lavaland/surface/outdoors) -"i" = ( -/turf/closed/indestructible/abductor{ - icon_state = "alien17" - }, +/turf/closed/wall/mineral/abductor, /area/ruin/unpowered) "j" = ( /obj/machinery/abductor/experiment{ @@ -61,16 +32,6 @@ initial_gas_mix = "o2=16;n2=23;TEMP=300" }, /area/ruin/unpowered) -"m" = ( -/turf/closed/indestructible/abductor{ - icon_state = "alien18" - }, -/area/ruin/unpowered) -"n" = ( -/turf/closed/indestructible/abductor{ - icon_state = "alien19" - }, -/area/lavaland/surface/outdoors) "o" = ( /obj/item/hemostat/alien, /turf/open/floor/plating/abductor{ @@ -89,11 +50,6 @@ initial_gas_mix = "o2=16;n2=23;TEMP=300" }, /area/ruin/unpowered) -"r" = ( -/turf/closed/indestructible/abductor{ - icon_state = "alien14" - }, -/area/ruin/unpowered) "s" = ( /obj/structure/table/optable/abductor, /obj/item/cautery/alien, @@ -108,11 +64,6 @@ initial_gas_mix = "o2=16;n2=23;TEMP=300" }, /area/ruin/unpowered) -"u" = ( -/turf/closed/indestructible/abductor{ - icon_state = "alien12" - }, -/area/ruin/unpowered) "v" = ( /obj/item/scalpel/alien, /obj/item/surgical_drapes, @@ -127,11 +78,6 @@ initial_gas_mix = "o2=16;n2=23;TEMP=300" }, /area/ruin/unpowered) -"x" = ( -/turf/closed/indestructible/abductor{ - icon_state = "alien10" - }, -/area/ruin/unpowered) "y" = ( /obj/machinery/abductor/gland_dispenser, /turf/open/floor/plating/abductor{ @@ -152,36 +98,6 @@ initial_gas_mix = "o2=16;n2=23;TEMP=300" }, /area/ruin/unpowered) -"B" = ( -/turf/closed/indestructible/abductor{ - icon_state = "alien8" - }, -/area/ruin/unpowered) -"C" = ( -/turf/closed/indestructible/abductor{ - icon_state = "alien9" - }, -/area/lavaland/surface/outdoors) -"D" = ( -/turf/closed/indestructible/abductor{ - icon_state = "alien2" - }, -/area/ruin/unpowered) -"E" = ( -/turf/closed/indestructible/abductor{ - icon_state = "alien3" - }, -/area/ruin/unpowered) -"F" = ( -/turf/closed/indestructible/abductor{ - icon_state = "alien4" - }, -/area/ruin/unpowered) -"G" = ( -/turf/closed/indestructible/abductor{ - icon_state = "alien5" - }, -/area/lavaland/surface/outdoors) (1,1,1) = {" a @@ -211,7 +127,7 @@ a a a a -h +c a a a @@ -223,7 +139,7 @@ a a a c -i +d a a a @@ -240,54 +156,54 @@ k k a y -D +d a "} (6,1,1) = {" a a -e +d k o s v z -E +d a "} (7,1,1) = {" a a -f +d l p k w A -F +d a "} (8,1,1) = {" a a -g -m +c +d q t q -B -G +d +c a "} (9,1,1) = {" a a b -n -r -u -x -C +c +d +d +d +c b a "} diff --git a/_maps/RandomRuins/SpaceRuins/DJstation.dmm b/_maps/RandomRuins/SpaceRuins/DJstation.dmm index d66c98156d..e1f451df09 100644 --- a/_maps/RandomRuins/SpaceRuins/DJstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/DJstation.dmm @@ -39,7 +39,7 @@ /turf/open/floor/plating, /area/ruin/space/djstation) "ak" = ( -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plating, /area/ruin/space/djstation) "al" = ( @@ -158,7 +158,7 @@ /area/ruin/space/djstation) "aE" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/grimy, /area/ruin/space/djstation) "aF" = ( @@ -176,7 +176,7 @@ /area/ruin/space/djstation) "aH" = ( /obj/structure/table, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; dir = 8; freerange = 1; @@ -226,7 +226,7 @@ /area/ruin/space/djstation) "aQ" = ( /obj/structure/table, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; dir = 8; freerange = 1; diff --git a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm index 2f16ae49c5..2ccc6969bd 100644 --- a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm +++ b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm @@ -561,7 +561,7 @@ /turf/open/floor/plasteel/airless, /area/ruin/space/derelict/bridge/ai_upload) "bQ" = ( -/obj/item/device/aicard, +/obj/item/aicard, /turf/open/floor/plasteel/airless{ icon_state = "damaged2" }, @@ -1386,7 +1386,7 @@ /area/ruin/space/derelict/bridge/access) "eC" = ( /obj/structure/table, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/plasteel, /area/ruin/space/derelict/bridge) "eD" = ( @@ -1677,7 +1677,7 @@ /area/ruin/space/derelict/bridge/access) "fy" = ( /obj/structure/table, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/airless, /area/ruin/space/derelict/bridge/access) "fz" = ( @@ -3121,7 +3121,7 @@ /turf/open/floor/plasteel/airless, /area/ruin/space/derelict/hallway/primary) "kq" = ( -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, @@ -3494,7 +3494,7 @@ /area/ruin/space/derelict/hallway/primary) "lI" = ( /obj/structure/table, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /turf/open/floor/plasteel/airless, /area/ruin/space/derelict/hallway/primary) "lJ" = ( diff --git a/_maps/RandomRuins/SpaceRuins/abandonedteleporter.dmm b/_maps/RandomRuins/SpaceRuins/abandonedteleporter.dmm index c8e9d3bb87..1681cf1e55 100644 --- a/_maps/RandomRuins/SpaceRuins/abandonedteleporter.dmm +++ b/_maps/RandomRuins/SpaceRuins/abandonedteleporter.dmm @@ -72,12 +72,12 @@ /area/ruin/space/abandoned_tele) "q" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/device/flashlight, +/obj/item/flashlight, /turf/open/floor/plating/airless, /area/ruin/space/abandoned_tele) "r" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plating/airless, /area/ruin/space/abandoned_tele) "s" = ( @@ -110,8 +110,8 @@ /area/ruin/space/abandoned_tele) "z" = ( /obj/structure/closet/crate, -/obj/item/device/aicard, -/obj/item/device/multitool, +/obj/item/aicard, +/obj/item/multitool, /obj/item/weldingtool, /obj/item/wrench, /obj/item/circuitboard/computer/teleporter, diff --git a/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm b/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm index 956664da1e..5348f3f385 100644 --- a/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm +++ b/_maps/RandomRuins/SpaceRuins/abandonedzoo.dmm @@ -394,7 +394,7 @@ "aY" = ( /obj/structure/table/reinforced, /obj/item/gun/energy/temperature{ - pin = /obj/item/device/firing_pin + pin = /obj/item/firing_pin }, /turf/open/floor/plasteel{ icon_state = "dark" diff --git a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm index 17f44e4dee..037b961591 100644 --- a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm +++ b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm @@ -232,7 +232,7 @@ /obj/structure/closet/crate/radiation, /obj/item/clothing/head/radiation, /obj/item/clothing/suit/radiation, -/obj/item/device/geiger_counter, +/obj/item/geiger_counter, /turf/open/floor/mineral/titanium/yellow, /area/ruin/space/has_grav/derelictoutpost/dockedship) "aR" = ( @@ -717,7 +717,7 @@ /turf/open/floor/plasteel, /area/ruin/space/has_grav/derelictoutpost) "bY" = ( -/obj/item/device/gps{ +/obj/item/gps{ gpstag = "Distress Signal" }, /turf/open/floor/plasteel, @@ -2045,14 +2045,14 @@ /obj/structure/closet/crate{ icon_state = "crateopen" }, -/obj/item/device/paicard, +/obj/item/paicard, /obj/machinery/light, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/ruin/space/has_grav/derelictoutpost/cargostorage) "eC" = ( /obj/structure/closet/crate, -/obj/item/device/pda/clear, +/obj/item/pda/clear, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/ruin/space/has_grav/derelictoutpost/cargostorage) @@ -2082,7 +2082,7 @@ /area/ruin/space/has_grav/derelictoutpost/cargostorage) "eH" = ( /obj/structure/closet/crate/engineering, -/obj/item/device/multitool, +/obj/item/multitool, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/ruin/space/has_grav/derelictoutpost/cargostorage) diff --git a/_maps/RandomRuins/SpaceRuins/bus.dmm b/_maps/RandomRuins/SpaceRuins/bus.dmm index 43c6f283f3..be05a8d1d6 100644 --- a/_maps/RandomRuins/SpaceRuins/bus.dmm +++ b/_maps/RandomRuins/SpaceRuins/bus.dmm @@ -128,7 +128,7 @@ /area/ruin/unpowered/no_grav) "av" = ( /obj/structure/table, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/plating/asteroid/airless, /area/ruin/unpowered/no_grav) "aw" = ( diff --git a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm index 750287f3a2..da34a5bf3b 100644 --- a/_maps/RandomRuins/SpaceRuins/caravanambush.dmm +++ b/_maps/RandomRuins/SpaceRuins/caravanambush.dmm @@ -165,7 +165,7 @@ "aw" = ( /obj/structure/rack, /obj/item/storage/toolbox/mechanical, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/darkblue/side{ dir = 4; @@ -1351,7 +1351,7 @@ amount = 10 }, /obj/item/storage/toolbox/mechanical, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 3; pixel_y = 3 }, @@ -1840,7 +1840,7 @@ /obj/item/folder/yellow{ pixel_x = -6 }, -/obj/item/device/gps{ +/obj/item/gps{ gpstag = "Distress Signal" }, /turf/open/floor/plasteel/darkblue/side{ @@ -1872,8 +1872,8 @@ /obj/item/storage/toolbox/electrical, /obj/item/clothing/gloves/color/yellow, /obj/item/clothing/gloves/color/yellow, -/obj/item/device/multitool, -/obj/item/device/multitool, +/obj/item/multitool, +/obj/item/multitool, /turf/open/floor/plasteel/airless/dark, /area/shuttle/caravan/freighter3) "gw" = ( @@ -2279,7 +2279,7 @@ /obj/structure/table, /obj/item/stack/packageWrap, /obj/item/crowbar, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, @@ -2305,7 +2305,7 @@ "hK" = ( /obj/structure/table, /obj/item/storage/toolbox/mechanical, -/obj/item/device/multitool, +/obj/item/multitool, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/airless, @@ -2318,7 +2318,7 @@ "hN" = ( /obj/structure/rack, /obj/item/tank/internals/oxygen, -/obj/item/device/radio, +/obj/item/radio, /obj/item/clothing/mask/gas, /turf/open/floor/plasteel/blue/corner{ dir = 4; @@ -3171,7 +3171,7 @@ /obj/structure/rack, /obj/effect/decal/cleanable/dirt, /obj/item/tank/internals/oxygen, -/obj/item/device/radio, +/obj/item/radio, /obj/item/clothing/mask/gas, /turf/open/floor/plasteel/airless{ icon_state = "damaged5" @@ -3869,7 +3869,7 @@ "lx" = ( /obj/structure/table/reinforced, /obj/item/storage/firstaid/regular, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/darkred/side{ dir = 5 diff --git a/_maps/RandomRuins/SpaceRuins/cloning_facility.dmm b/_maps/RandomRuins/SpaceRuins/cloning_facility.dmm index 87f890e0d5..285f4b3f98 100644 --- a/_maps/RandomRuins/SpaceRuins/cloning_facility.dmm +++ b/_maps/RandomRuins/SpaceRuins/cloning_facility.dmm @@ -24,7 +24,7 @@ /area/ruin/space/has_grav/powered/ancient_shuttle) "g" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/effect/decal/cleanable/cobweb, /turf/open/floor/plasteel/whiteblue, /area/ruin/space/has_grav/powered/ancient_shuttle) @@ -225,7 +225,7 @@ "R" = ( /obj/structure/table/glass, /obj/item/storage/firstaid/regular, -/obj/item/device/healthanalyzer{ +/obj/item/healthanalyzer{ desc = "A prototype hand-held body scanner able to distinguish vital signs of the subject."; name = "prototype health analyzer" }, diff --git a/_maps/RandomRuins/SpaceRuins/crashedship.dmm b/_maps/RandomRuins/SpaceRuins/crashedship.dmm index 788c925772..c6bda02835 100644 --- a/_maps/RandomRuins/SpaceRuins/crashedship.dmm +++ b/_maps/RandomRuins/SpaceRuins/crashedship.dmm @@ -456,7 +456,7 @@ /area/awaymission/BMPship/Aft) "bP" = ( /obj/structure/closet/crate, -/obj/item/device/analyzer, +/obj/item/analyzer, /obj/item/stack/spacecash/c10, /obj/effect/turf_decal/stripes/line{ dir = 2 @@ -905,7 +905,7 @@ /turf/open/floor/plasteel, /area/awaymission/BMPship/Aft) "dq" = ( -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/engine, /area/awaymission/BMPship/Aft) "dr" = ( @@ -1803,7 +1803,7 @@ /turf/closed/mineral/random, /area/awaymission/BMPship) "gc" = ( -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plating/airless{ icon_state = "platingdmg2" }, diff --git a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm index 4ecd040eb3..e3317ad64e 100644 --- a/_maps/RandomRuins/SpaceRuins/deepstorage.dmm +++ b/_maps/RandomRuins/SpaceRuins/deepstorage.dmm @@ -193,7 +193,7 @@ /obj/item/storage/box/zipties, /obj/item/switchblade, /obj/effect/turf_decal/delivery, -/obj/item/device/gps{ +/obj/item/gps{ gpstag = "DEEP" }, /turf/open/floor/plasteel/floorgrime, @@ -282,15 +282,15 @@ /area/ruin/space/has_grav/deepstorage/hydroponics) "aR" = ( /obj/structure/closet/cardboard, -/obj/item/device/flashlight/flare, -/obj/item/device/flashlight/flare, -/obj/item/device/flashlight/flare, -/obj/item/device/flashlight/flare, -/obj/item/device/flashlight/flare, -/obj/item/device/flashlight/flare, -/obj/item/device/flashlight, -/obj/item/device/flashlight, -/obj/item/device/flashlight, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, /obj/item/shovel, /obj/item/pickaxe/drill, /obj/item/pickaxe/drill, @@ -300,12 +300,12 @@ /area/ruin/space/has_grav/deepstorage/storage) "aS" = ( /obj/structure/closet/cardboard, -/obj/item/device/flashlight/lantern, -/obj/item/device/flashlight/lantern, -/obj/item/device/flashlight/lantern, -/obj/item/device/tape/random, -/obj/item/device/tape/random, -/obj/item/device/tape/random, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, +/obj/item/flashlight/lantern, +/obj/item/tape/random, +/obj/item/tape/random, +/obj/item/tape/random, /obj/item/storage/box/rxglasses, /obj/item/extinguisher, /obj/item/extinguisher, @@ -1162,8 +1162,8 @@ /area/ruin/space/has_grav/deepstorage/armory) "db" = ( /obj/structure/table, -/obj/item/device/healthanalyzer, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, +/obj/item/healthanalyzer, /obj/item/stack/medical/gauze, /obj/item/stack/medical/gauze, /turf/open/floor/plasteel/dark, @@ -1475,11 +1475,11 @@ /area/ruin/space/has_grav/deepstorage/armory) "dP" = ( /obj/structure/table, -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = -4 }, -/obj/item/device/radio, -/obj/item/device/radio{ +/obj/item/radio, +/obj/item/radio{ pixel_x = 4 }, /obj/machinery/airalarm{ @@ -1668,7 +1668,7 @@ /area/ruin/space/has_grav/deepstorage/dorm) "ej" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, @@ -1971,18 +1971,18 @@ "eP" = ( /obj/structure/table, /obj/item/storage/toolbox/drone, -/obj/item/device/flashlight, -/obj/item/device/flashlight, -/obj/item/device/flashlight/flare, -/obj/item/device/flashlight/flare, -/obj/item/device/flashlight/flare, -/obj/item/device/flashlight/flare{ +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare{ pixel_y = 6 }, -/obj/item/device/flashlight/flare{ +/obj/item/flashlight/flare{ pixel_y = 6 }, -/obj/item/device/flashlight/flare{ +/obj/item/flashlight/flare{ pixel_y = 6 }, /turf/open/floor/plasteel/dark, diff --git a/_maps/RandomRuins/SpaceRuins/intactemptyship.dmm b/_maps/RandomRuins/SpaceRuins/intactemptyship.dmm index c2996c55e6..9bb394663a 100644 --- a/_maps/RandomRuins/SpaceRuins/intactemptyship.dmm +++ b/_maps/RandomRuins/SpaceRuins/intactemptyship.dmm @@ -42,7 +42,7 @@ /area/ruin/space/has_grav/powered/authorship) "i" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/light{ dir = 1 }, diff --git a/_maps/RandomRuins/SpaceRuins/listeningstation.dmm b/_maps/RandomRuins/SpaceRuins/listeningstation.dmm index 6850cc2515..6229854c09 100644 --- a/_maps/RandomRuins/SpaceRuins/listeningstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/listeningstation.dmm @@ -12,10 +12,8 @@ /obj/machinery/computer/message_monitor{ dir = 2 }, -/obj/machinery/airalarm{ - pixel_y = 24; - req_access = null; - req_access_txt = "150" +/obj/machinery/airalarm/syndicate{ + pixel_y = 24 }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -55,7 +53,7 @@ /obj/machinery/newscaster{ pixel_y = 32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 1; name = "Syndicate Radio Intercom"; pixel_x = -30 @@ -87,7 +85,7 @@ "al" = ( /obj/structure/table, /obj/item/storage/toolbox/syndicate, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_y = -12 }, /obj/effect/decal/cleanable/dirt, @@ -210,11 +208,9 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/obj/machinery/airalarm{ +/obj/machinery/airalarm/syndicate{ dir = 4; - pixel_x = -24; - req_access = null; - req_access_txt = "150" + pixel_x = -24 }, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/listeningstation) @@ -278,8 +274,8 @@ /obj/structure/rack{ dir = 8 }, -/obj/item/device/multitool, -/obj/item/device/radio/headset/syndicate/alt, +/obj/item/multitool, +/obj/item/radio/headset/syndicate/alt, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/listeningstation) @@ -288,7 +284,7 @@ dir = 8; layer = 2.9 }, -/obj/item/device/mining_scanner, +/obj/item/mining_scanner, /obj/item/pickaxe, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/dark, @@ -517,10 +513,8 @@ }, /area/ruin/space/has_grav/listeningstation) "aU" = ( -/obj/machinery/airalarm{ - pixel_y = 24; - req_access = null; - req_access_txt = "150" +/obj/machinery/airalarm/syndicate{ + pixel_y = 24 }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -640,11 +634,9 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/machinery/airalarm{ +/obj/machinery/airalarm/syndicate{ dir = 8; - pixel_x = 24; - req_access = null; - req_access_txt = "150" + pixel_x = 24 }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -811,12 +803,10 @@ icon_state = "0-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/power/apc{ +/obj/machinery/power/apc/syndicate{ dir = 4; name = "Syndicate Listening Post APC"; - pixel_x = 24; - req_access = null; - req_access_txt = "150" + pixel_x = 24 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -948,11 +938,9 @@ }, /obj/machinery/iv_drip, /obj/machinery/light/small, -/obj/machinery/airalarm{ +/obj/machinery/airalarm/syndicate{ dir = 1; - pixel_y = -24; - req_access = null; - req_access_txt = "150" + pixel_y = -24 }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/components/unary/vent_pump/on{ diff --git a/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm b/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm index e59f36a033..4ed628e2b8 100644 --- a/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm +++ b/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm @@ -309,7 +309,7 @@ /area/ruin/space/has_grav/powered/cat_man) "ba" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/carpet, /area/ruin/space/has_grav/powered/cat_man) "bb" = ( @@ -317,7 +317,7 @@ dir = 4 }, /obj/structure/closet/cabinet, -/obj/item/device/gps{ +/obj/item/gps{ gpstag = "kitty" }, /turf/open/floor/carpet, diff --git a/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm b/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm index eff006f061..299d1769b0 100644 --- a/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldAIsat.dmm @@ -411,7 +411,7 @@ /area/template_noop) "bt" = ( /obj/structure/table, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel/airless, /area/tcommsat/chamber) "bu" = ( @@ -556,7 +556,7 @@ /turf/open/floor/plasteel/airless, /area/tcommsat/chamber) "bR" = ( -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel/airless/dark, /area/tcommsat/chamber) "bS" = ( @@ -580,7 +580,7 @@ /area/tcommsat/chamber) "bV" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plating/airless, /area/tcommsat/chamber) "bW" = ( @@ -606,7 +606,7 @@ /area/tcommsat/chamber) "ca" = ( /obj/effect/decal/cleanable/blood, -/obj/item/device/assembly/signaler, +/obj/item/assembly/signaler, /turf/open/floor/plasteel/airless/dark, /area/tcommsat/chamber) "cb" = ( @@ -629,7 +629,7 @@ /area/tcommsat/chamber) "ce" = ( /obj/structure/table, -/obj/item/device/electropack, +/obj/item/electropack, /turf/open/floor/plating/airless, /area/tcommsat/chamber) "cf" = ( diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm index 4052676a3b..4c25dbb740 100644 --- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm @@ -284,7 +284,7 @@ "aW" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, -/obj/item/device/megaphone, +/obj/item/megaphone, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation/comm) "aX" = ( @@ -1648,7 +1648,7 @@ "eV" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/red/side{ dir = 4 }, @@ -3191,7 +3191,7 @@ /obj/effect/decal/cleanable/dirt, /obj/item/clothing/gloves/color/fyellow/old, /obj/item/clothing/gloves/color/fyellow/old, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plasteel/yellow/side{ dir = 10 }, @@ -3648,8 +3648,8 @@ dir = 4 }, /obj/structure/closet/crate, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/item/storage/box/firingpins, /turf/open/floor/plating, /area/ruin/space/has_grav/ancientstation/deltacorridor) @@ -4039,13 +4039,13 @@ "kD" = ( /obj/structure/table, /obj/item/crowbar, -/obj/item/device/flashlight/glowstick, +/obj/item/flashlight/glowstick, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation) "kE" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/deadcockroach, +/obj/effect/decal/cleanable/insectguts, /turf/open/floor/plasteel/floorgrime, /area/ruin/space/has_grav/ancientstation) "kF" = ( @@ -4110,7 +4110,7 @@ "kN" = ( /obj/structure/table, /obj/item/crowbar, -/obj/item/device/flashlight/glowstick, +/obj/item/flashlight/glowstick, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ dir = 8 @@ -4225,7 +4225,7 @@ /area/ruin/space/has_grav/ancientstation) "kZ" = ( /obj/structure/table/reinforced, -/obj/item/device/healthanalyzer{ +/obj/item/healthanalyzer{ desc = "A prototype hand-held body scanner able to distinguish vital signs of the subject."; name = "prototype health analyzer" }, diff --git a/_maps/RandomRuins/SpaceRuins/onehalf.dmm b/_maps/RandomRuins/SpaceRuins/onehalf.dmm index b90f2e6780..f5439940ee 100644 --- a/_maps/RandomRuins/SpaceRuins/onehalf.dmm +++ b/_maps/RandomRuins/SpaceRuins/onehalf.dmm @@ -227,7 +227,7 @@ }, /obj/structure/closet/crate/medical, /obj/item/clothing/neck/stethoscope, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/item/reagent_containers/blood/OMinus, /obj/item/reagent_containers/blood/OMinus, /obj/machinery/power/apc{ @@ -755,7 +755,7 @@ /area/ruin/space/has_grav/onehalf/bridge) "ca" = ( /obj/structure/table/reinforced, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel, /area/ruin/space/has_grav/onehalf/bridge) "cb" = ( @@ -990,7 +990,7 @@ /area/ruin/space/has_grav/onehalf/bridge) "cH" = ( /obj/item/crowbar/red, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plating, /area/ruin/space/has_grav/onehalf/bridge) "cI" = ( @@ -1095,7 +1095,7 @@ /area/ruin/space/has_grav/onehalf/hallway) "cY" = ( /obj/structure/table/reinforced, -/obj/item/device/flashlight, +/obj/item/flashlight, /turf/open/floor/plasteel, /area/ruin/space/has_grav/onehalf/bridge) "cZ" = ( diff --git a/_maps/RandomRuins/SpaceRuins/originalcontent.dmm b/_maps/RandomRuins/SpaceRuins/originalcontent.dmm index eccc2efada..624aa03d7c 100644 --- a/_maps/RandomRuins/SpaceRuins/originalcontent.dmm +++ b/_maps/RandomRuins/SpaceRuins/originalcontent.dmm @@ -537,7 +537,7 @@ /turf/open/indestructible/paper, /area/ruin/powered) "bA" = ( -/obj/item/device/toner, +/obj/item/toner, /turf/open/indestructible/paper, /area/ruin/powered) "bB" = ( @@ -595,7 +595,7 @@ /obj/item/paper/crumpled/ruins/originalcontent, /obj/item/paper/crumpled/ruins/originalcontent, /obj/item/paper/crumpled/ruins/originalcontent, -/obj/item/device/gps{ +/obj/item/gps{ gpstag = "Pulpy Signal" }, /turf/open/indestructible/paper, diff --git a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm index f6f090e807..b56ba3107f 100644 --- a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm @@ -2081,7 +2081,7 @@ dir = 1; layer = 2.9 }, -/obj/item/device/gps{ +/obj/item/gps{ gpstag = "Twin-Nexus Hotel Retreat"; name = "hotel gps" }, @@ -2093,7 +2093,7 @@ "gx" = ( /obj/structure/table, /obj/item/screwdriver, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/wirecutters, /obj/machinery/light{ dir = 1 @@ -2375,7 +2375,7 @@ /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/hotel/workroom) "hr" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/hotel/dock) "hs" = ( @@ -2606,7 +2606,7 @@ /area/ruin/space/has_grav/hotel/bar) "hV" = ( /obj/structure/table/wood, -/obj/item/device/instrument/guitar, +/obj/item/instrument/guitar, /obj/structure/window/reinforced{ dir = 1 }, @@ -2687,7 +2687,7 @@ /area/ruin/space/has_grav/hotel/bar) "ig" = ( /obj/structure/table/wood, -/obj/item/device/instrument/violin, +/obj/item/instrument/violin, /turf/open/floor/plasteel/grimy, /area/ruin/space/has_grav/hotel/bar) "ih" = ( @@ -4097,7 +4097,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/item/device/lightreplacer, +/obj/item/lightreplacer, /turf/open/floor/plasteel/neutral, /area/ruin/space/has_grav/hotel/custodial) "ml" = ( diff --git a/_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm b/_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm index 3e729c6c4b..c9b6eb9e7c 100644 --- a/_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm +++ b/_maps/RandomRuins/SpaceRuins/turretedoutpost.dmm @@ -53,7 +53,7 @@ "am" = ( /obj/structure/table/reinforced, /obj/item/folder, -/obj/item/device/radio, +/obj/item/radio, /turf/open/floor/plasteel, /area/ruin/space/has_grav/turretedoutpost) "an" = ( @@ -105,7 +105,7 @@ /area/ruin/space/has_grav/turretedoutpost) "av" = ( /obj/structure/rack, -/obj/item/device/firing_pin, +/obj/item/firing_pin, /turf/open/floor/plasteel/vault/side{ dir = 1 }, @@ -152,7 +152,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/radio, +/obj/item/radio, /turf/open/floor/plasteel, /area/ruin/space/has_grav/turretedoutpost) "aE" = ( @@ -236,7 +236,7 @@ "aS" = ( /obj/structure/table/reinforced, /obj/machinery/light, -/obj/item/device/camera_bug, +/obj/item/camera_bug, /turf/open/floor/plasteel, /area/ruin/space/has_grav/turretedoutpost) "aT" = ( diff --git a/_maps/RandomRuins/SpaceRuins/vaporwave.dmm b/_maps/RandomRuins/SpaceRuins/vaporwave.dmm index 502c677325..ab51f68741 100644 --- a/_maps/RandomRuins/SpaceRuins/vaporwave.dmm +++ b/_maps/RandomRuins/SpaceRuins/vaporwave.dmm @@ -52,7 +52,7 @@ /area/ruin/space/has_grav/powered/aesthetic) "m" = ( /obj/structure/table/reinforced, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /turf/open/floor/plasteel/vaporwave, /area/ruin/space/has_grav/powered/aesthetic) "n" = ( @@ -88,7 +88,7 @@ /turf/open/floor/plasteel/vaporwave, /area/ruin/space/has_grav/powered/aesthetic) "t" = ( -/obj/item/device/instrument/eguitar, +/obj/item/instrument/eguitar, /turf/open/floor/holofloor/beach, /area/ruin/space/has_grav/powered/aesthetic) "u" = ( @@ -104,7 +104,7 @@ /area/ruin/space/has_grav/powered/aesthetic) "x" = ( /obj/structure/closet/crate/bin, -/obj/item/device/tape/random, +/obj/item/tape/random, /turf/open/floor/plating/asteroid/airless, /area/ruin/unpowered/no_grav) "y" = ( diff --git a/_maps/RandomRuins/SpaceRuins/whiteshipruin_box.dmm b/_maps/RandomRuins/SpaceRuins/whiteshipruin_box.dmm index 8660ae3dea..51f551fe51 100644 --- a/_maps/RandomRuins/SpaceRuins/whiteshipruin_box.dmm +++ b/_maps/RandomRuins/SpaceRuins/whiteshipruin_box.dmm @@ -20,7 +20,7 @@ /area/ruin/space/has_grav/whiteship/box) "af" = ( /obj/structure/table, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/mineral/titanium, /area/ruin/space/has_grav/whiteship/box) "ag" = ( @@ -254,7 +254,7 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/whiteship/box) "aU" = ( -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/mineral/titanium, /area/ruin/space/has_grav/whiteship/box) "aV" = ( diff --git a/_maps/RandomZLevels/Academy.dmm b/_maps/RandomZLevels/Academy.dmm index e29fcb26cf..e83daecd38 100644 --- a/_maps/RandomZLevels/Academy.dmm +++ b/_maps/RandomZLevels/Academy.dmm @@ -194,7 +194,7 @@ /area/awaymission/academy/headmaster) "aI" = ( /obj/structure/table/reinforced, -/obj/item/device/laser_pointer/upgraded, +/obj/item/laser_pointer/upgraded, /turf/open/floor/carpet, /area/awaymission/academy/headmaster) "aJ" = ( @@ -2624,7 +2624,7 @@ /turf/open/floor/plating, /area/awaymission/academy/academyaft) "iK" = ( -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/engine, /area/awaymission/academy/academyaft) "iL" = ( @@ -2729,7 +2729,7 @@ dir = 1 }, /obj/structure/table, -/obj/item/device/soulstone, +/obj/item/soulstone, /turf/open/floor/plasteel/airless{ icon_state = "whitered"; dir = 4 @@ -2930,7 +2930,7 @@ "jA" = ( /obj/structure/table, /obj/structure/window/reinforced, -/obj/item/device/batterer, +/obj/item/batterer, /turf/open/floor/plasteel/airless{ icon_state = "whitered"; dir = 4 diff --git a/_maps/RandomZLevels/Cabin.dmm b/_maps/RandomZLevels/Cabin.dmm index d95b84f299..f4a18fd87c 100644 --- a/_maps/RandomZLevels/Cabin.dmm +++ b/_maps/RandomZLevels/Cabin.dmm @@ -527,7 +527,7 @@ /area/awaymission/snowforest) "bT" = ( /obj/structure/table/wood, -/obj/item/device/instrument/violin, +/obj/item/instrument/violin, /turf/open/floor/wood, /area/awaymission/cabin) "bU" = ( @@ -620,7 +620,7 @@ dir = 8 }, /obj/structure/table/wood, -/obj/item/device/instrument/guitar, +/obj/item/instrument/guitar, /turf/open/floor/wood, /area/awaymission/cabin) "ci" = ( @@ -952,7 +952,7 @@ /area/awaymission/snowforest) "du" = ( /obj/structure/closet/toolcloset, -/obj/item/device/lightreplacer, +/obj/item/lightreplacer, /obj/item/storage/toolbox/mechanical, /turf/open/floor/plating, /area/awaymission/cabin) diff --git a/_maps/RandomZLevels/caves.dmm b/_maps/RandomZLevels/caves.dmm index ddd441486b..a656e5cd0d 100644 --- a/_maps/RandomZLevels/caves.dmm +++ b/_maps/RandomZLevels/caves.dmm @@ -447,7 +447,7 @@ /area/awaymission/caves/BMP_asteroid/level_four) "bo" = ( /obj/structure/flora/rock, -/obj/item/device/soulstone/anybody, +/obj/item/soulstone/anybody, /turf/open/floor/plating/asteroid/basalt{ initial_gas_mix = "n2=23;o2=14" }, @@ -531,7 +531,7 @@ /area/awaymission/caves/BMP_asteroid/level_four) "bA" = ( /obj/structure/destructible/cult/tome, -/obj/item/device/necromantic_stone, +/obj/item/necromantic_stone, /obj/effect/decal/cleanable/blood, /turf/open/floor/engine/cult{ initial_gas_mix = "n2=23;o2=14" @@ -1379,8 +1379,8 @@ /area/awaymission/caves/BMP_asteroid) "eh" = ( /obj/structure/table, -/obj/item/device/radio, -/obj/item/device/radio, +/obj/item/radio, +/obj/item/radio, /turf/open/floor/plasteel, /area/awaymission/caves/BMP_asteroid) "ei" = ( @@ -1464,8 +1464,8 @@ /area/awaymission/caves/BMP_asteroid) "ew" = ( /obj/structure/table, -/obj/item/device/mining_scanner, -/obj/item/device/mining_scanner, +/obj/item/mining_scanner, +/obj/item/mining_scanner, /turf/open/floor/plasteel, /area/awaymission/caves/BMP_asteroid) "ex" = ( @@ -1500,8 +1500,8 @@ /area/awaymission/caves/BMP_asteroid) "eC" = ( /obj/structure/table, -/obj/item/device/gps/mining, -/obj/item/device/gps/mining, +/obj/item/gps/mining, +/obj/item/gps/mining, /obj/item/clothing/glasses/meson, /obj/item/clothing/glasses/meson, /obj/item/clothing/glasses/meson, @@ -1553,7 +1553,7 @@ }, /obj/structure/table, /obj/item/storage/toolbox/electrical, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plasteel, /area/awaymission/caves/listeningpost) "eN" = ( @@ -2076,7 +2076,7 @@ /turf/open/floor/plasteel, /area/awaymission/caves/BMP_asteroid) "gs" = ( -/obj/item/device/assembly/igniter, +/obj/item/assembly/igniter, /turf/open/floor/plating/asteroid/basalt{ initial_gas_mix = "n2=23;o2=14" }, diff --git a/_maps/RandomZLevels/centcomAway.dmm b/_maps/RandomZLevels/centcomAway.dmm index 5f73f18c35..12861c3b9c 100644 --- a/_maps/RandomZLevels/centcomAway.dmm +++ b/_maps/RandomZLevels/centcomAway.dmm @@ -281,7 +281,7 @@ /turf/open/floor/plating, /area/awaymission/centcomAway/cafe) "bb" = ( -/obj/item/device/radio, +/obj/item/radio, /turf/open/floor/plating, /area/awaymission/centcomAway/maint) "bc" = ( @@ -743,7 +743,7 @@ /area/awaymission/centcomAway/maint) "da" = ( /obj/structure/table, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/mineral/titanium/yellow, /area/awaymission/centcomAway/hangar) "db" = ( @@ -832,7 +832,7 @@ /area/awaymission/centcomAway/cafe) "dr" = ( /obj/structure/table/reinforced, -/obj/item/device/t_scanner, +/obj/item/t_scanner, /turf/open/floor/plasteel/yellow/side, /area/awaymission/centcomAway/general) "ds" = ( @@ -1116,7 +1116,7 @@ /area/awaymission/centcomAway/maint) "ez" = ( /obj/structure/table, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/mineral/titanium/blue, /area/awaymission/centcomAway/hangar) "eA" = ( @@ -1839,7 +1839,7 @@ /obj/structure/chair{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = 25 }, /turf/open/floor/mineral/titanium/blue, @@ -2473,8 +2473,8 @@ /area/awaymission/centcomAway/hangar) "js" = ( /obj/structure/table, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/vault, /area/awaymission/centcomAway/hangar) "jt" = ( @@ -2485,7 +2485,7 @@ /area/awaymission/centcomAway/hangar) "ju" = ( /obj/structure/table, -/obj/item/device/mmi, +/obj/item/mmi, /turf/open/floor/plasteel/vault, /area/awaymission/centcomAway/hangar) "jv" = ( @@ -2762,17 +2762,17 @@ /area/awaymission/centcomAway/general) "kn" = ( /obj/structure/table, -/obj/item/device/flashlight/flare, +/obj/item/flashlight/flare, /turf/open/floor/plasteel/dark, /area/awaymission/centcomAway/hangar) "ko" = ( /obj/structure/table, -/obj/item/device/flashlight/flare, +/obj/item/flashlight/flare, /turf/open/floor/plating, /area/awaymission/centcomAway/hangar) "kp" = ( /obj/structure/table, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plating, /area/awaymission/centcomAway/hangar) "kq" = ( @@ -2863,7 +2863,7 @@ "kC" = ( /obj/item/clipboard, /obj/structure/table, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/item/stamp, /turf/open/floor/plasteel/vault{ dir = 1 @@ -2972,14 +2972,14 @@ /area/space/nearstation) "kW" = ( /obj/structure/table, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/plasteel/vault{ dir = 5 }, /area/awaymission/centcomAway/thunderdome) "kX" = ( /obj/structure/table, -/obj/item/device/camera, +/obj/item/camera, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -3088,7 +3088,7 @@ /area/awaymission/centcomAway/thunderdome) "lq" = ( /obj/structure/table/wood, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel/redyellow{ dir = 5 }, @@ -3226,8 +3226,8 @@ /area/awaymission/centcomAway/thunderdome) "lM" = ( /obj/structure/table/reinforced, -/obj/item/device/taperecorder, -/obj/item/device/tape/random, +/obj/item/taperecorder, +/obj/item/tape/random, /turf/open/floor/plasteel{ icon_state = "floor" }, diff --git a/_maps/RandomZLevels/challenge.dmm b/_maps/RandomZLevels/challenge.dmm index 8f454aedc9..0ed12617b2 100644 --- a/_maps/RandomZLevels/challenge.dmm +++ b/_maps/RandomZLevels/challenge.dmm @@ -35,7 +35,7 @@ /turf/open/floor/plasteel/airless, /area/awaymission/challenge/start) "ai" = ( -/obj/item/device/flashlight{ +/obj/item/flashlight{ icon_state = "flashlight-on"; item_state = "flashlight"; on = 1 @@ -266,7 +266,7 @@ /turf/open/floor/plasteel, /area/awaymission/challenge/main) "bb" = ( -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plasteel/airless, /area/awaymission/challenge/main) "bc" = ( @@ -655,7 +655,7 @@ /obj/structure/chair{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 28 @@ -680,7 +680,7 @@ /turf/open/floor/plating, /area/awaymission/challenge/end) "cg" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -27 @@ -747,7 +747,7 @@ /area/awaymission/challenge/end) "cs" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, diff --git a/_maps/RandomZLevels/moonoutpost19.dmm b/_maps/RandomZLevels/moonoutpost19.dmm index 4ec51aef62..49929e67f1 100644 --- a/_maps/RandomZLevels/moonoutpost19.dmm +++ b/_maps/RandomZLevels/moonoutpost19.dmm @@ -454,11 +454,11 @@ dir = 1 }, /obj/structure/table, -/obj/item/device/radio/off{ +/obj/item/radio/off{ pixel_x = -4; pixel_y = 4 }, -/obj/item/device/radio/off{ +/obj/item/radio/off{ pixel_x = 2 }, /obj/effect/turf_decal/stripes/line, @@ -713,7 +713,7 @@ pixel_y = -1 }, /obj/item/clothing/gloves/color/yellow, -/obj/item/device/multitool, +/obj/item/multitool, /obj/effect/turf_decal/stripes/line{ dir = 9 }, @@ -1568,7 +1568,7 @@ /obj/structure/closet/crate, /obj/item/storage/bag/ore, /obj/structure/alien/weeds, -/obj/item/device/mining_scanner, +/obj/item/mining_scanner, /obj/item/shovel, /obj/item/pickaxe, /turf/open/floor/plating{ @@ -1775,14 +1775,14 @@ dir = 8; icon_state = "ltrails_1" }, -/obj/item/device/mining_scanner, +/obj/item/mining_scanner, /turf/open/floor/plating/asteroid{ initial_gas_mix = "co2=48.7;n2=13.2;o2=32.4;TEMP=251"; heat_capacity = 1e+006 }, /area/awaymission/moonoutpost19/main) "dH" = ( -/obj/item/device/flashlight/lantern{ +/obj/item/flashlight/lantern{ icon_state = "lantern-on"; on = 1 }, @@ -2820,7 +2820,7 @@ }, /area/awaymission/moonoutpost19/research) "fU" = ( -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/item/screwdriver{ pixel_y = 10 }, @@ -3020,9 +3020,9 @@ /area/awaymission/moonoutpost19/research) "gq" = ( /obj/structure/table, -/obj/item/device/mmi, -/obj/item/device/mmi, -/obj/item/device/mmi, +/obj/item/mmi, +/obj/item/mmi, +/obj/item/mmi, /obj/structure/alien/weeds, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -3098,7 +3098,7 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/cell_charger, /obj/item/stock_parts/cell/high, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/plating{ heat_capacity = 1e+006 }, @@ -3245,7 +3245,7 @@ pixel_y = 9 }, /obj/item/pen, -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -3661,11 +3661,11 @@ empty = 1; name = "First-Aid (empty)" }, -/obj/item/device/healthanalyzer{ +/obj/item/healthanalyzer{ pixel_x = 6; pixel_y = -5 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -5; pixel_y = -2 }, @@ -3952,7 +3952,7 @@ /area/awaymission/moonoutpost19/research) "ic" = ( /obj/structure/rack, -/obj/item/device/paicard{ +/obj/item/paicard{ pixel_x = 4 }, /obj/effect/turf_decal/stripes/line{ @@ -4283,8 +4283,8 @@ /area/awaymission/moonoutpost19/research) "iJ" = ( /obj/structure/table, -/obj/item/device/radio/off, -/obj/item/device/laser_pointer, +/obj/item/radio/off, +/obj/item/laser_pointer, /turf/open/floor/plasteel/cafeteria{ dir = 5 }, @@ -4312,7 +4312,7 @@ "iM" = ( /obj/structure/table, /obj/item/storage/secure/briefcase, -/obj/item/device/taperecorder{ +/obj/item/taperecorder{ pixel_x = -3 }, /obj/effect/turf_decal/stripes/line{ @@ -5358,7 +5358,7 @@ pixel_x = -2; pixel_y = -1 }, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plasteel/blue/side{ dir = 0; heat_capacity = 1e+006 @@ -5742,7 +5742,7 @@ /area/awaymission/moonoutpost19/arrivals) "lX" = ( /obj/structure/table, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/mineral/titanium/yellow, /area/awaymission/moonoutpost19/arrivals) "lZ" = ( diff --git a/_maps/RandomZLevels/research.dmm b/_maps/RandomZLevels/research.dmm index fe9080c8d5..7be855dde9 100644 --- a/_maps/RandomZLevels/research.dmm +++ b/_maps/RandomZLevels/research.dmm @@ -827,8 +827,8 @@ /area/awaymission/research/interior) "cD" = ( /obj/structure/table, -/obj/item/device/radio, -/obj/item/device/radio, +/obj/item/radio, +/obj/item/radio, /turf/open/floor/plasteel/dark, /area/awaymission/research/interior/gateway) "cE" = ( @@ -999,7 +999,7 @@ name = "encrypted genetic data disk"; read_only = 1 }, -/obj/item/device/firing_pin/dna, +/obj/item/firing_pin/dna, /turf/open/floor/plasteel/dark, /area/awaymission/research/interior/secure) "de" = ( @@ -1223,7 +1223,7 @@ name = "encrypted genetic data disk"; read_only = 1 }, -/obj/item/device/firing_pin/dna, +/obj/item/firing_pin/dna, /obj/item/dnainjector/dwarf, /obj/item/dnainjector/dwarf, /turf/open/floor/plasteel/dark, @@ -2599,7 +2599,7 @@ /obj/item/clothing/head/collectable/petehat{ name = "dusty hat" }, -/obj/item/device/firing_pin/dna, +/obj/item/firing_pin/dna, /turf/open/floor/plasteel/dark, /area/awaymission/research/interior/secure) "hT" = ( @@ -2614,7 +2614,7 @@ name = "encrypted genetic data disk"; read_only = 1 }, -/obj/item/device/firing_pin/dna, +/obj/item/firing_pin/dna, /obj/item/dnainjector/hulkmut, /turf/open/floor/plasteel/dark, /area/awaymission/research/interior/secure) @@ -2732,8 +2732,8 @@ name = "encrypted genetic data disk"; read_only = 1 }, -/obj/item/device/firing_pin/dna/dredd, -/obj/item/device/firing_pin/dna/dredd, +/obj/item/firing_pin/dna/dredd, +/obj/item/firing_pin/dna/dredd, /obj/item/dnainjector/lasereyesmut, /obj/item/dnainjector/lasereyesmut, /turf/open/floor/plasteel/dark, diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm index 932b3f3060..63255686d8 100644 --- a/_maps/RandomZLevels/snowdin.dmm +++ b/_maps/RandomZLevels/snowdin.dmm @@ -102,7 +102,7 @@ /area/awaymission/snowdin/post/research) "ay" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/dark, /area/awaymission/snowdin/post/research) "az" = ( @@ -126,7 +126,7 @@ /area/awaymission/snowdin/post/research) "aD" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/item/pen, /turf/open/floor/plasteel/dark, /area/awaymission/snowdin/post/research) @@ -304,7 +304,7 @@ /area/awaymission/snowdin/post/research) "bd" = ( /obj/structure/window, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/dark, /area/awaymission/snowdin/post/research) "be" = ( @@ -2168,7 +2168,7 @@ /turf/open/floor/plasteel/cmo, /area/awaymission/snowdin/post) "fz" = ( -/obj/item/device/flashlight/pen, +/obj/item/flashlight/pen, /turf/open/floor/plasteel/cmo, /area/awaymission/snowdin/post) "fA" = ( @@ -5944,7 +5944,7 @@ req_access_txt = "201" }, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash, +/obj/item/assembly/flash, /obj/item/storage/box/rubbershot, /obj/structure/fireaxecabinet{ pixel_y = 32 @@ -6341,7 +6341,7 @@ /area/awaymission/snowdin/post/cavern2) "pb" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp{ +/obj/item/flashlight/lamp{ pixel_x = -5; pixel_y = 5 }, @@ -10483,7 +10483,7 @@ /area/awaymission/snowdin/post/minipost) "AF" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/neutral/side{ dir = 4 }, @@ -11269,7 +11269,7 @@ }, /area/awaymission/snowdin/cave) "CY" = ( -/obj/item/device/aicard, +/obj/item/aicard, /turf/open/floor/plasteel/vault{ dir = 5 }, diff --git a/_maps/RandomZLevels/spacebattle.dmm b/_maps/RandomZLevels/spacebattle.dmm index f5a2565677..845238dafd 100644 --- a/_maps/RandomZLevels/spacebattle.dmm +++ b/_maps/RandomZLevels/spacebattle.dmm @@ -1694,7 +1694,7 @@ /area/awaymission/spacebattle/cruiser) "gL" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /turf/open/floor/wood, /area/awaymission/spacebattle/cruiser) "gM" = ( @@ -1925,7 +1925,7 @@ /area/awaymission/spacebattle/cruiser) "hE" = ( /obj/structure/table/wood, -/obj/item/device/instrument/violin, +/obj/item/instrument/violin, /turf/open/floor/wood, /area/awaymission/spacebattle/cruiser) "hF" = ( diff --git a/_maps/RandomZLevels/undergroundoutpost45.dmm b/_maps/RandomZLevels/undergroundoutpost45.dmm index c965a22a1f..2e1d6377ac 100644 --- a/_maps/RandomZLevels/undergroundoutpost45.dmm +++ b/_maps/RandomZLevels/undergroundoutpost45.dmm @@ -388,7 +388,7 @@ req_access_txt = "201" }, /obj/item/storage/bag/plants/portaseeder, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/clothing/mask/bandana, /obj/item/hatchet, /turf/open/floor/plasteel/vault{ @@ -398,7 +398,7 @@ /area/awaymission/undergroundoutpost45/central) "bf" = ( /obj/item/storage/belt/security, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/effect/decal/cleanable/dirt, /obj/structure/closet/secure_closet{ icon_state = "sec"; @@ -467,7 +467,7 @@ /area/awaymission/undergroundoutpost45/central) "bn" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -2166,7 +2166,7 @@ "eX" = ( /obj/structure/table, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/item/screwdriver{ pixel_y = 10 }, @@ -3927,8 +3927,8 @@ /area/awaymission/undergroundoutpost45/gateway) "iO" = ( /obj/structure/table, -/obj/item/device/radio/off, -/obj/item/device/radio/off, +/obj/item/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel{ dir = 8; heat_capacity = 1e+006; @@ -4787,7 +4787,7 @@ pixel_x = -2; pixel_y = -1 }, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plating{ heat_capacity = 1e+006 }, @@ -4799,8 +4799,8 @@ /obj/structure/sign/warning/biohazard{ pixel_y = 32 }, -/obj/item/device/assembly/prox_sensor, -/obj/item/device/assembly/prox_sensor, +/obj/item/assembly/prox_sensor, +/obj/item/assembly/prox_sensor, /obj/effect/turf_decal/stripes/line{ dir = 4 }, @@ -5230,7 +5230,7 @@ pixel_x = -2; pixel_y = -1 }, -/obj/item/device/multitool, +/obj/item/multitool, /obj/structure/sign/warning/nosmoking{ pixel_x = -32 }, @@ -5308,7 +5308,7 @@ "lu" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/item/reagent_containers/spray/pepper, /obj/structure/closet/secure_closet{ icon_state = "sec"; @@ -5989,9 +5989,9 @@ "mB" = ( /obj/structure/table, /obj/item/hand_labeler, -/obj/item/device/flashlight, -/obj/item/device/flashlight, -/obj/item/device/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, /obj/effect/turf_decal/stripes/corner{ dir = 8 }, @@ -6653,8 +6653,8 @@ dir = 8 }, /obj/structure/table, -/obj/item/device/radio/off, -/obj/item/device/laser_pointer, +/obj/item/radio/off, +/obj/item/laser_pointer, /turf/open/floor/plasteel/cafeteria{ dir = 5; heat_capacity = 1e+006 @@ -6715,10 +6715,10 @@ dir = 1 }, /obj/structure/table/reinforced, -/obj/item/device/taperecorder{ +/obj/item/taperecorder{ pixel_x = -3 }, -/obj/item/device/paicard{ +/obj/item/paicard{ pixel_x = 4 }, /turf/open/floor/plasteel/cafeteria{ @@ -6734,7 +6734,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/item/screwdriver{ pixel_y = 10 }, @@ -8324,7 +8324,7 @@ dir = 2; pixel_y = 24 }, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plasteel/yellow/corner{ dir = 1; heat_capacity = 1e+006 @@ -9987,7 +9987,7 @@ /obj/item/screwdriver{ pixel_y = 10 }, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel/red/side{ dir = 4; heat_capacity = 1e+006 @@ -12034,7 +12034,7 @@ "xv" = ( /obj/structure/table, /obj/item/pickaxe, -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel{ heat_capacity = 1e+006 diff --git a/_maps/RandomZLevels/wildwest.dmm b/_maps/RandomZLevels/wildwest.dmm index 5eb0f5f2c8..896f874960 100644 --- a/_maps/RandomZLevels/wildwest.dmm +++ b/_maps/RandomZLevels/wildwest.dmm @@ -700,7 +700,7 @@ "cD" = ( /obj/structure/table/wood, /obj/item/clothing/gloves/color/yellow, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/wood, /area/awaymission/wildwest/gov) "cE" = ( diff --git a/_maps/cit_map_files/BoxStation/BoxStation.dmm b/_maps/cit_map_files/BoxStation/BoxStation.dmm index 1b9ee66537..1e179288f8 100644 --- a/_maps/cit_map_files/BoxStation/BoxStation.dmm +++ b/_maps/cit_map_files/BoxStation/BoxStation.dmm @@ -11,7 +11,7 @@ /obj/machinery/chem_dispenser/drinks/beer{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = 25 }, /turf/open/floor/plasteel/bar, @@ -116,7 +116,7 @@ /area/security/prison) "aaq" = ( /obj/machinery/hydroponics/soil, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/machinery/camera{ c_tag = "Prison Common Room"; network = list("ss13","prison") @@ -375,8 +375,8 @@ pixel_y = 10 }, /obj/structure/table/wood, -/obj/item/device/radio/off, -/obj/item/device/taperecorder, +/obj/item/radio/off, +/obj/item/taperecorder, /turf/open/floor/carpet, /area/crew_quarters/heads/hos) "abl" = ( @@ -598,7 +598,7 @@ name = "Head of Security RC"; pixel_y = 30 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = -31 @@ -854,7 +854,7 @@ c_tag = "Prison Cell 3"; network = list("ss13","prison") }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; @@ -885,7 +885,7 @@ c_tag = "Prison Cell 2"; network = list("ss13","prison") }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; @@ -907,7 +907,7 @@ c_tag = "Prison Cell 1"; network = list("ss13","prison") }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; @@ -1003,7 +1003,7 @@ /area/crew_quarters/heads/hos) "acR" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ on = 0; pixel_x = -3; pixel_y = 8 @@ -1231,10 +1231,10 @@ /area/crew_quarters/heads/hos) "adq" = ( /obj/structure/table/wood, -/obj/item/device/instrument/guitar{ +/obj/item/instrument/guitar{ pixel_x = -7 }, -/obj/item/device/instrument/eguitar{ +/obj/item/instrument/eguitar{ pixel_x = 5 }, /turf/open/floor/wood, @@ -1364,10 +1364,10 @@ /obj/item/folder/red{ pixel_x = 3 }, -/obj/item/device/taperecorder{ +/obj/item/taperecorder{ pixel_x = -3 }, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/item/reagent_containers/spray/pepper, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) @@ -1552,7 +1552,7 @@ /area/security/execution/transfer) "aeb" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) @@ -1871,7 +1871,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, @@ -2090,7 +2090,7 @@ /turf/open/floor/plasteel/showroomfloor, /area/security/main) "afd" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -2255,7 +2255,7 @@ /turf/closed/wall/r_wall, /area/security/execution/transfer) "afB" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -2282,7 +2282,7 @@ /area/security/prison) "afD" = ( /obj/structure/table, -/obj/item/device/electropack, +/obj/item/electropack, /turf/open/floor/plasteel/red/side, /area/security/prison) "afE" = ( @@ -2291,7 +2291,7 @@ /area/hallway/secondary/exit) "afF" = ( /obj/structure/table, -/obj/item/device/assembly/signaler, +/obj/item/assembly/signaler, /obj/item/clothing/suit/straight_jacket, /turf/open/floor/plasteel/red/side, /area/security/prison) @@ -2383,7 +2383,7 @@ "afV" = ( /obj/structure/table, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/timer, +/obj/item/assembly/timer, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/security/main) @@ -2407,7 +2407,7 @@ /area/security/main) "afZ" = ( /obj/structure/table, -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/item/screwdriver{ pixel_y = 10 }, @@ -2456,11 +2456,11 @@ /area/security/execution/transfer) "agh" = ( /obj/structure/table, -/obj/item/device/electropack, +/obj/item/electropack, /obj/item/screwdriver, /obj/item/wrench, /obj/item/clothing/head/helmet, -/obj/item/device/assembly/signaler, +/obj/item/assembly/signaler, /obj/machinery/light/small, /obj/machinery/airalarm{ dir = 1; @@ -2620,7 +2620,7 @@ /area/security/main) "agB" = ( /obj/structure/table, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/security/main) @@ -2949,7 +2949,7 @@ /area/security/prison) "ahq" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/dark, /area/security/prison) "ahr" = ( @@ -2961,7 +2961,7 @@ }, /area/security/brig) "ahs" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -3252,7 +3252,7 @@ "ahV" = ( /obj/structure/table, /obj/item/folder/red, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /turf/open/floor/plasteel/dark, /area/security/prison) "ahW" = ( @@ -3454,7 +3454,7 @@ /turf/open/floor/plasteel/red/side, /area/security/main) "ait" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -3773,7 +3773,7 @@ }, /area/security/courtroom) "ajj" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -4004,7 +4004,7 @@ /area/security/brig) "ajO" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; dir = 8; listening = 1; @@ -4604,7 +4604,7 @@ }, /area/ai_monitored/nuke_storage) "alw" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; @@ -4626,7 +4626,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; @@ -4717,7 +4717,7 @@ }, /area/security/courtroom) "alJ" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/neutral/side, /area/security/courtroom) "alK" = ( @@ -4898,7 +4898,7 @@ req_access_txt = "2" }, /obj/item/restraints/handcuffs, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel/dark, /area/security/brig) "amn" = ( @@ -5467,7 +5467,7 @@ /obj/machinery/light_switch{ pixel_x = -20 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = 25 }, /turf/open/floor/wood, @@ -5519,7 +5519,7 @@ /obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) "aoj" = ( @@ -5645,7 +5645,7 @@ /obj/structure/chair{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -6546,7 +6546,7 @@ /area/lawoffice) "are" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -6794,7 +6794,7 @@ "arR" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plating, /area/security/vacantoffice/b) "arS" = ( @@ -7567,7 +7567,7 @@ /area/lawoffice) "auh" = ( /obj/structure/table/wood, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/item/cartridge/lawyer, /turf/open/floor/wood, /area/lawoffice) @@ -8210,8 +8210,8 @@ pixel_x = 1; pixel_y = -1 }, -/obj/item/device/multitool, -/obj/item/device/radio/intercom{ +/obj/item/multitool, +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -8708,7 +8708,7 @@ dir = 8; pixel_x = 24 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, @@ -8769,7 +8769,7 @@ /obj/item/wallframe/camera, /obj/item/wallframe/camera, /obj/item/wallframe/camera, -/obj/item/device/assault_pod/mining, +/obj/item/assault_pod/mining, /obj/machinery/computer/security/telescreen{ desc = "Used for the Auxillary Mining Base."; dir = 8; @@ -9044,7 +9044,7 @@ /area/crew_quarters/dorms) "axM" = ( /obj/structure/table/wood, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/plasteel, /area/crew_quarters/dorms) "axN" = ( @@ -9294,8 +9294,8 @@ /obj/machinery/airalarm{ pixel_y = 23 }, -/obj/item/device/radio/off, -/obj/item/device/assembly/timer, +/obj/item/radio/off, +/obj/item/assembly/timer, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "ayw" = ( @@ -9417,10 +9417,10 @@ dir = 1 }, /obj/item/hand_labeler, -/obj/item/device/flashlight, -/obj/item/device/flashlight, -/obj/item/device/flashlight, -/obj/item/device/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, /turf/open/floor/plasteel/dark, /area/ai_monitored/storage/eva) "ayO" = ( @@ -9462,7 +9462,7 @@ pixel_x = -2; pixel_y = -1 }, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "ayS" = ( @@ -9480,8 +9480,8 @@ dir = 1 }, /obj/structure/table, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/signaler, +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, /obj/item/stock_parts/cell/high/plus, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) @@ -9601,7 +9601,7 @@ /obj/structure/disposalpipe/segment{ dir = 5 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -9730,7 +9730,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "azC" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -9899,10 +9899,10 @@ /area/crew_quarters/toilet) "azY" = ( /obj/structure/table, -/obj/item/device/radio/off, -/obj/item/device/radio/off, -/obj/item/device/assembly/prox_sensor, -/obj/item/device/assembly/prox_sensor, +/obj/item/radio/off, +/obj/item/radio/off, +/obj/item/assembly/prox_sensor, +/obj/item/assembly/prox_sensor, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "azZ" = ( @@ -9946,7 +9946,7 @@ /turf/open/floor/plasteel/neutral/side, /area/crew_quarters/dorms) "aAg" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -11085,7 +11085,7 @@ "aDb" = ( /obj/structure/table, /obj/item/wirecutters, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, @@ -11100,7 +11100,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20 @@ -11150,11 +11150,11 @@ /area/gateway) "aDk" = ( /obj/structure/table, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = -8; pixel_y = -4 }, -/obj/item/device/assembly/igniter, +/obj/item/assembly/igniter, /obj/item/screwdriver{ pixel_y = 16 }, @@ -11170,7 +11170,7 @@ /area/storage/primary) "aDl" = ( /obj/structure/table, -/obj/item/device/t_scanner, +/obj/item/t_scanner, /obj/machinery/airalarm{ pixel_y = 23 }, @@ -11187,15 +11187,15 @@ /area/storage/primary) "aDn" = ( /obj/structure/table, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/signaler, -/obj/item/device/radio/intercom{ +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, +/obj/item/radio/intercom{ broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20 }, -/obj/item/device/multitool, -/obj/item/device/multitool{ +/obj/item/multitool, +/obj/item/multitool{ pixel_x = 4 }, /turf/open/floor/plasteel, @@ -11829,18 +11829,18 @@ /area/gateway) "aES" = ( /obj/structure/table, -/obj/item/device/radio/off{ +/obj/item/radio/off{ pixel_y = 6 }, -/obj/item/device/radio/off{ +/obj/item/radio/off{ pixel_x = 6; pixel_y = 4 }, -/obj/item/device/radio/off{ +/obj/item/radio/off{ pixel_x = -6; pixel_y = 4 }, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel, /area/gateway) "aET" = ( @@ -12135,9 +12135,9 @@ /turf/open/floor/plasteel/red/side, /area/security/checkpoint/auxiliary) "aFL" = ( -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/item/crowbar, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/structure/table, /turf/open/floor/plasteel/red/side{ dir = 6 @@ -12155,7 +12155,7 @@ /obj/item/cultivator, /obj/item/hatchet, /obj/item/crowbar, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/reagent_containers/glass/bucket, /turf/open/floor/plasteel/green/side{ dir = 4 @@ -12236,7 +12236,7 @@ /turf/open/floor/plasteel, /area/gateway) "aFX" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -12511,7 +12511,7 @@ /obj/structure/mirror{ pixel_x = -28 }, -/obj/item/device/flashlight/lamp/bananalamp{ +/obj/item/flashlight/lamp/bananalamp{ pixel_y = 3 }, /turf/open/floor/plasteel/redblue, @@ -12765,7 +12765,7 @@ /area/storage/primary) "aHf" = ( /obj/structure/closet/wardrobe/chaplain_black, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = 25 }, /turf/open/floor/plasteel/grimy, @@ -13402,7 +13402,7 @@ "aIN" = ( /obj/structure/table, /obj/item/wrench, -/obj/item/device/analyzer, +/obj/item/analyzer, /turf/open/floor/plasteel, /area/storage/primary) "aIO" = ( @@ -13440,7 +13440,7 @@ /obj/item/cultivator, /obj/item/crowbar, /obj/item/reagent_containers/glass/bucket, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/machinery/firealarm{ dir = 8; pixel_x = -24 @@ -13452,8 +13452,8 @@ "aIT" = ( /obj/item/storage/bag/plants/portaseeder, /obj/structure/table/glass, -/obj/item/device/plant_analyzer, -/obj/item/device/radio/intercom{ +/obj/item/plant_analyzer, +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -13490,7 +13490,7 @@ "aIW" = ( /obj/structure/table, /obj/item/crowbar, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, @@ -13827,7 +13827,7 @@ /area/hydroponics) "aJM" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp{ +/obj/item/flashlight/lamp{ pixel_y = 10 }, /obj/structure/disposalpipe/segment, @@ -14021,7 +14021,7 @@ /turf/open/floor/plating, /area/storage/primary) "aKq" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = 25 }, /obj/machinery/camera{ @@ -14473,7 +14473,7 @@ /area/hallway/secondary/entry) "aLA" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -15171,8 +15171,8 @@ /obj/item/stack/sheet/metal/fifty, /obj/item/stack/sheet/glass/fifty, /obj/item/stack/cable_coil, -/obj/item/device/flashlight/lamp, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp, +/obj/item/flashlight/lamp/green, /turf/open/floor/wood, /area/crew_quarters/bar) "aNE" = ( @@ -15321,7 +15321,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/office) "aNX" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1480; name = "Confessional Intercom"; @@ -15373,7 +15373,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/exit) "aOe" = ( -/obj/item/device/beacon, +/obj/item/beacon, /obj/machinery/camera{ c_tag = "Arrivals Bay 1 South" }, @@ -15795,9 +15795,9 @@ /area/library) "aPi" = ( /obj/structure/table/wood, -/obj/item/device/taperecorder, -/obj/item/device/camera, -/obj/item/device/radio/intercom{ +/obj/item/taperecorder, +/obj/item/camera, +/obj/item/radio/intercom{ pixel_y = 25 }, /turf/open/floor/engine/cult, @@ -15839,7 +15839,7 @@ c_tag = "Escape Arm Holding Area"; dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = -28 @@ -15874,7 +15874,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "aPv" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20 @@ -16103,7 +16103,7 @@ "aQb" = ( /obj/structure/window/reinforced, /obj/structure/table/wood, -/obj/item/device/instrument/violin, +/obj/item/instrument/violin, /turf/open/floor/wood, /area/crew_quarters/theatre) "aQc" = ( @@ -16240,7 +16240,7 @@ }, /area/chapel/main) "aQz" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1480; name = "Confessional Intercom"; @@ -16522,9 +16522,9 @@ /obj/structure/table/reinforced, /obj/item/storage/toolbox/emergency, /obj/item/wrench, -/obj/item/device/assembly/timer, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/signaler, +/obj/item/assembly/timer, +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, /turf/open/floor/plasteel, /area/bridge) "aRt" = ( @@ -16577,7 +16577,7 @@ /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) "aRB" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = 25 }, /obj/machinery/camera{ @@ -16803,7 +16803,7 @@ /area/maintenance/port) "aSh" = ( /obj/structure/closet/wardrobe/mixed, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -27 @@ -16876,8 +16876,8 @@ /area/bridge) "aSv" = ( /obj/structure/table/reinforced, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel, /area/bridge) "aSw" = ( @@ -16915,8 +16915,8 @@ /area/bridge) "aSz" = ( /obj/structure/table/reinforced, -/obj/item/device/aicard, -/obj/item/device/multitool, +/obj/item/aicard, +/obj/item/multitool, /turf/open/floor/plasteel/blue/side{ dir = 8 }, @@ -17285,8 +17285,8 @@ "aTF" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /obj/structure/table, -/obj/item/device/camera_film, -/obj/item/device/camera, +/obj/item/camera_film, +/obj/item/camera, /turf/open/floor/plasteel, /area/storage/art) "aTG" = ( @@ -17340,7 +17340,7 @@ /obj/structure/rack, /obj/item/clothing/gloves/color/fyellow, /obj/item/clothing/suit/hazardvest, -/obj/item/device/multitool, +/obj/item/multitool, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel, /area/storage/tools) @@ -17573,7 +17573,7 @@ /area/hydroponics) "aUA" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/wood, /area/security/vacantoffice) "aUB" = ( @@ -17587,7 +17587,7 @@ /area/library) "aUD" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -17706,7 +17706,7 @@ /area/crew_quarters/locker) "aUW" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /turf/open/floor/wood, /area/security/vacantoffice) "aUX" = ( @@ -17886,7 +17886,7 @@ /turf/open/floor/plasteel, /area/bridge) "aVp" = ( -/obj/item/device/beacon, +/obj/item/beacon, /obj/structure/cable{ icon_state = "4-8" }, @@ -18114,8 +18114,8 @@ /area/library) "aVS" = ( /obj/structure/table/wood, -/obj/item/device/camera_film, -/obj/item/device/camera_film, +/obj/item/camera_film, +/obj/item/camera_film, /turf/open/floor/wood, /area/library) "aVT" = ( @@ -18141,7 +18141,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/main) "aVW" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_x = -25 }, /turf/open/floor/plasteel/escape{ @@ -19131,7 +19131,7 @@ /area/security/detectives_office) "aYj" = ( /obj/structure/table/wood, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/structure/disposalpipe/segment{ dir = 10 }, @@ -19188,7 +19188,7 @@ }, /area/bridge) "aYr" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -19690,7 +19690,7 @@ /area/quartermaster/warehouse) "aZJ" = ( /obj/structure/table/wood, -/obj/item/device/camera/detective, +/obj/item/camera/detective, /turf/open/floor/carpet, /area/security/detectives_office) "aZK" = ( @@ -20040,7 +20040,7 @@ /turf/open/floor/carpet, /area/bridge/meeting_room) "baJ" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -20467,7 +20467,7 @@ /area/quartermaster/warehouse) "bbT" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /turf/open/floor/carpet, /area/security/detectives_office) "bbU" = ( @@ -20836,13 +20836,13 @@ /area/bridge/meeting_room) "bcY" = ( /obj/item/hand_labeler, -/obj/item/device/assembly/timer, +/obj/item/assembly/timer, /obj/structure/table, /turf/open/floor/wood, /area/bridge/meeting_room) "bcZ" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; freerange = 1; name = "Station Intercom (Command)" @@ -21295,7 +21295,7 @@ /obj/machinery/computer/upload/borg{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -21570,7 +21570,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "beN" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -21885,7 +21885,7 @@ /area/crew_quarters/heads/captain) "bfC" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /turf/open/floor/wood, /area/crew_quarters/heads/captain) "bfD" = ( @@ -22006,7 +22006,7 @@ }, /area/hallway/primary/starboard) "bfY" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -22365,7 +22365,7 @@ dir = 8; pixel_x = 24 }, -/obj/item/device/camera, +/obj/item/camera, /obj/item/storage/photo_album{ pixel_y = -10 }, @@ -22829,7 +22829,7 @@ /obj/structure/disposalpipe/trunk{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -22890,7 +22890,7 @@ /turf/closed/wall/r_wall, /area/engine/gravity_generator) "bik" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; freerange = 1; name = "Station Intercom (Command)"; @@ -22994,7 +22994,7 @@ /obj/machinery/computer/secure_data{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_x = 25 }, /turf/open/floor/plasteel/red/side{ @@ -23348,7 +23348,7 @@ "bjp" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -23389,7 +23389,7 @@ /area/quartermaster/storage) "bju" = ( /obj/machinery/photocopier, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -23903,7 +23903,7 @@ /obj/item/screwdriver{ pixel_y = 10 }, -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/red/side{ dir = 6 @@ -24076,7 +24076,7 @@ pixel_y = 4 }, /obj/item/clothing/glasses/science, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = -28 @@ -24318,10 +24318,10 @@ empty = 1; name = "First-Aid (empty)" }, -/obj/item/device/healthanalyzer, -/obj/item/device/healthanalyzer, -/obj/item/device/healthanalyzer, -/obj/item/device/radio/intercom{ +/obj/item/healthanalyzer, +/obj/item/healthanalyzer, +/obj/item/healthanalyzer, +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -24742,7 +24742,7 @@ }, /area/medical/chemistry) "bmJ" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; freerange = 0; frequency = 1485; @@ -24932,7 +24932,7 @@ pixel_y = 5 }, /obj/item/clothing/glasses/welding, -/obj/item/device/multitool{ +/obj/item/multitool{ pixel_x = 3 }, /turf/open/floor/plasteel, @@ -24943,12 +24943,12 @@ amount = 10 }, /obj/item/stack/cable_coil, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/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/assembly/flash/handheld, /obj/machinery/firealarm{ dir = 4; pixel_x = 24 @@ -25322,7 +25322,7 @@ /area/crew_quarters/heads/captain) "bnZ" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /turf/open/floor/carpet, /area/crew_quarters/heads/captain) "boa" = ( @@ -25359,7 +25359,7 @@ "bod" = ( /obj/structure/table, /obj/item/folder/white, -/obj/item/device/radio/headset/headset_med, +/obj/item/radio/headset/headset_med, /turf/open/floor/plasteel/white, /area/medical/chemistry) "boe" = ( @@ -25486,19 +25486,19 @@ /area/science/robotics/lab) "bov" = ( /obj/structure/table, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, @@ -25591,9 +25591,9 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/item/device/mmi, -/obj/item/device/mmi, -/obj/item/device/mmi, +/obj/item/mmi, +/obj/item/mmi, +/obj/item/mmi, /turf/open/floor/plasteel/dark, /area/science/robotics/lab) "boH" = ( @@ -26036,7 +26036,7 @@ "bpH" = ( /obj/structure/table/glass, /obj/item/folder/white, -/obj/item/device/radio/headset/headset_medsci, +/obj/item/radio/headset/headset_medsci, /obj/machinery/requests_console{ department = "Genetics"; departmentType = 0; @@ -26303,8 +26303,8 @@ layer = 2.9 }, /obj/structure/table/reinforced, -/obj/item/device/destTagger, -/obj/item/device/destTagger, +/obj/item/destTagger, +/obj/item/destTagger, /turf/open/floor/plasteel/brown{ dir = 1 }, @@ -26401,7 +26401,7 @@ layer = 3 }, /obj/item/pen/blue, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -35 }, @@ -26851,7 +26851,7 @@ /obj/machinery/airalarm{ pixel_y = 23 }, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel/white/side{ dir = 2 }, @@ -26946,7 +26946,7 @@ departmentType = 2; pixel_x = -30 }, -/obj/item/device/multitool, +/obj/item/multitool, /obj/machinery/camera{ c_tag = "Cargo Office"; dir = 4 @@ -27115,7 +27115,7 @@ pixel_y = 1 }, /obj/structure/table, -/obj/item/device/beacon, +/obj/item/beacon, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, @@ -27135,7 +27135,7 @@ /turf/open/floor/plasteel, /area/teleporter) "bsl" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -27185,7 +27185,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 0; frequency = 1485; @@ -27216,7 +27216,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "bst" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 0; frequency = 1485; @@ -27431,7 +27431,7 @@ /area/quartermaster/office) "bsW" = ( /obj/structure/closet/wardrobe/robotics_black, -/obj/item/device/radio/headset/headset_sci{ +/obj/item/radio/headset/headset_sci{ pixel_x = -3 }, /turf/open/floor/plasteel/white, @@ -27906,7 +27906,7 @@ /area/medical/genetics) "bub" = ( /obj/machinery/light, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -35 }, @@ -28851,7 +28851,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "bwi" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = -28 @@ -29798,7 +29798,7 @@ /area/crew_quarters/heads/hor) "bys" = ( /obj/structure/rack, -/obj/item/device/aicard, +/obj/item/aicard, /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -29949,7 +29949,7 @@ /turf/open/floor/plasteel, /area/security/checkpoint/supply) "byM" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -30195,7 +30195,7 @@ /area/medical/genetics) "bzr" = ( /obj/structure/closet/wardrobe/genetics_white, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -30372,10 +30372,10 @@ /area/crew_quarters/heads/hor) "bzM" = ( /obj/structure/rack, -/obj/item/device/taperecorder{ +/obj/item/taperecorder{ pixel_x = -3 }, -/obj/item/device/paicard{ +/obj/item/paicard{ pixel_x = 4 }, /obj/effect/turf_decal/stripes/line{ @@ -30499,7 +30499,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel/red/side{ dir = 4 }, @@ -30799,14 +30799,14 @@ /area/maintenance/port/aft) "bAL" = ( /obj/structure/table, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/stock_parts/cell/high/plus, /turf/open/floor/plating, /area/storage/tech) "bAM" = ( /obj/structure/table, -/obj/item/device/analyzer, -/obj/item/device/healthanalyzer, +/obj/item/analyzer, +/obj/item/healthanalyzer, /obj/machinery/light/small{ dir = 1 }, @@ -30849,7 +30849,7 @@ c_tag = "Quartermaster's Office"; dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -35 }, @@ -31320,7 +31320,7 @@ /turf/open/floor/plasteel/dark, /area/science/server) "bBY" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_x = -25 }, /obj/structure/filingcabinet, @@ -31332,7 +31332,7 @@ /obj/item/screwdriver{ pixel_y = 10 }, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel/red/side, /area/security/checkpoint/science) "bCa" = ( @@ -31416,7 +31416,7 @@ dir = 1; network = list("ss13","rd") }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -31730,7 +31730,7 @@ /turf/open/floor/plasteel/white, /area/medical/sleeper) "bCU" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 0; frequency = 1485; @@ -31931,16 +31931,16 @@ /area/maintenance/aft) "bDv" = ( /obj/structure/table, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/machinery/ai_status_display{ pixel_x = -32 }, @@ -32270,7 +32270,7 @@ /area/crew_quarters/heads/cmo) "bEl" = ( /obj/structure/disposalpipe/segment, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_x = 25 }, /obj/machinery/camera{ @@ -32358,7 +32358,7 @@ /area/science/mixing) "bEw" = ( /obj/machinery/portable_atmospherics/canister, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = 25 }, /obj/effect/turf_decal/stripes/line{ @@ -32599,7 +32599,7 @@ /area/storage/tech) "bEX" = ( /obj/structure/table, -/obj/item/device/aicard, +/obj/item/aicard, /obj/item/aiModule/reset, /turf/open/floor/plating, /area/storage/tech) @@ -33063,19 +33063,19 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "bGl" = ( -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -4; pixel_y = 1 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 8; pixel_y = 9 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 9; pixel_y = -2 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_y = 2 }, /obj/structure/table/reinforced, @@ -33150,7 +33150,7 @@ /obj/machinery/cell_charger{ pixel_y = 5 }, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plating, /area/storage/tech) "bGw" = ( @@ -33591,7 +33591,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = 25 }, /obj/machinery/light/small{ @@ -33626,7 +33626,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -33750,7 +33750,7 @@ pixel_x = 1; pixel_y = -1 }, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/clothing/glasses/meson, /obj/machinery/light/small, /turf/open/floor/plating, @@ -34334,7 +34334,7 @@ /turf/open/floor/plating/airless, /area/science/test_area) "bJa" = ( -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -34741,18 +34741,18 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "bJW" = ( -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve{ pixel_x = -5 }, -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve{ pixel_x = -5 }, -/obj/item/device/transfer_valve, -/obj/item/device/transfer_valve, -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve, +/obj/item/transfer_valve, +/obj/item/transfer_valve{ pixel_x = 5 }, -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve{ pixel_x = 5 }, /obj/machinery/requests_console{ @@ -34766,18 +34766,18 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "bJX" = ( -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_y = 8 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = -8; pixel_y = 5 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = 6; pixel_y = 5 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = -2; pixel_y = -2 }, @@ -34789,19 +34789,19 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "bJZ" = ( -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 5; pixel_y = 4 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = -4; pixel_y = 2 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 6; pixel_y = -4 }, -/obj/item/device/assembly/timer, +/obj/item/assembly/timer, /obj/structure/table/reinforced, /turf/open/floor/plasteel/white, /area/science/mixing) @@ -35399,7 +35399,7 @@ /turf/open/floor/plating/airless, /area/science/test_area) "bLp" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plating/airless, /area/science/test_area) "bLq" = ( @@ -35483,8 +35483,8 @@ pixel_y = -1 }, /obj/item/clothing/gloves/color/yellow, -/obj/item/device/t_scanner, -/obj/item/device/multitool, +/obj/item/t_scanner, +/obj/item/multitool, /turf/open/floor/plating, /area/storage/tech) "bLB" = ( @@ -35712,7 +35712,7 @@ pixel_y = 5 }, /obj/item/stack/cable_coil, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/stock_parts/cell/high/plus, /obj/structure/window/reinforced{ dir = 4 @@ -36310,7 +36310,7 @@ /turf/open/floor/plating/airless, /area/science/test_area) "bNF" = ( -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/effect/turf_decal/stripes/line{ dir = 2 }, @@ -36322,7 +36322,7 @@ /area/science/test_area) "bNH" = ( /obj/structure/table/reinforced, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -26 }, @@ -36373,7 +36373,7 @@ /obj/structure/disposalpipe/segment{ dir = 6 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -36553,7 +36553,7 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "bOo" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; freerange = 1; name = "Station Intercom (Telecomms)"; @@ -37175,7 +37175,7 @@ /area/science/xenobiology) "bPE" = ( /obj/structure/table/reinforced, -/obj/item/device/slime_scanner, +/obj/item/slime_scanner, /obj/effect/turf_decal/stripes/line{ dir = 9 }, @@ -37198,7 +37198,7 @@ /area/science/circuit) "bPG" = ( /obj/machinery/chem_master, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -37392,7 +37392,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/light_switch{ pixel_x = -27; @@ -37482,7 +37482,7 @@ c_tag = "Security Post - Engineering"; dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -37741,7 +37741,7 @@ network = list("rd"); pixel_y = 28 }, -/obj/item/device/integrated_circuit_printer, +/obj/item/integrated_circuit_printer, /turf/open/floor/plasteel/white, /area/science/circuit) "bQZ" = ( @@ -38204,9 +38204,9 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/item/device/electropack, -/obj/item/device/healthanalyzer, -/obj/item/device/assembly/signaler, +/obj/item/electropack, +/obj/item/healthanalyzer, +/obj/item/assembly/signaler, /turf/open/floor/plasteel, /area/science/misc_lab) "bSf" = ( @@ -38398,7 +38398,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plasteel, /area/engine/atmos) "bSG" = ( @@ -38414,9 +38414,9 @@ /obj/structure/table, /obj/item/stack/sheet/glass/fifty, /obj/item/storage/belt/utility, -/obj/item/device/t_scanner, -/obj/item/device/t_scanner, -/obj/item/device/t_scanner, +/obj/item/t_scanner, +/obj/item/t_scanner, +/obj/item/t_scanner, /turf/open/floor/plasteel, /area/engine/atmos) "bSI" = ( @@ -38680,38 +38680,38 @@ /area/science/misc_lab) "bTn" = ( /obj/structure/table, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = -5; pixel_y = 3 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 5; pixel_y = -4 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 2; pixel_y = 6 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 2; pixel_y = -1 }, /obj/machinery/light{ dir = 4 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = -3; pixel_y = 3 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = -3; pixel_y = 3 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = -3; pixel_y = 3 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = -3; pixel_y = 3 }, @@ -39311,7 +39311,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bUN" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel, /area/engine/atmos) "bUO" = ( @@ -39454,7 +39454,7 @@ }, /area/hallway/primary/aft) "bVg" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20 @@ -39803,7 +39803,7 @@ name = "Virology Requests Console"; pixel_x = -32 }, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/item/clothing/glasses/hud/health, /turf/open/floor/plasteel/whitegreen/side{ dir = 8 @@ -39812,7 +39812,7 @@ "bWg" = ( /obj/structure/table, /obj/item/hand_labeler, -/obj/item/device/radio/headset/headset_med, +/obj/item/radio/headset/headset_med, /turf/open/floor/plasteel/whitegreen/side{ dir = 4 }, @@ -39883,7 +39883,7 @@ /turf/open/floor/engine, /area/science/xenobiology) "bWo" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_x = -25 }, /turf/open/floor/plasteel/floorgrime, @@ -40075,7 +40075,7 @@ /turf/closed/wall/r_wall, /area/security/checkpoint/engineering) "bWR" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -40132,7 +40132,7 @@ /area/medical/virology) "bWX" = ( /obj/structure/table/glass, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_x = -25 }, /obj/machinery/light{ @@ -40243,7 +40243,7 @@ /obj/item/folder/white, /obj/item/folder/white, /obj/item/pen, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /turf/open/floor/plasteel/floorgrime, /area/science/misc_lab) "bXj" = ( @@ -41351,7 +41351,7 @@ /turf/open/floor/engine, /area/science/xenobiology) "bZY" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_x = -25 }, /turf/open/floor/engine, @@ -41377,7 +41377,7 @@ /area/maintenance/starboard/aft) "cad" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plating, /area/maintenance/starboard/aft) "cae" = ( @@ -41790,7 +41790,7 @@ /turf/open/floor/engine, /area/science/misc_lab) "caY" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/engine, /area/science/misc_lab) "caZ" = ( @@ -41835,9 +41835,9 @@ /area/science/misc_lab) "cbe" = ( /obj/structure/table/reinforced, -/obj/item/device/integrated_electronics/analyzer, -/obj/item/device/integrated_electronics/debugger, -/obj/item/device/integrated_electronics/wirer, +/obj/item/integrated_electronics/analyzer, +/obj/item/integrated_electronics/debugger, +/obj/item/integrated_electronics/wirer, /turf/open/floor/plasteel/white, /area/science/circuit) "cbf" = ( @@ -42225,7 +42225,7 @@ /area/science/misc_lab) "cbY" = ( /obj/structure/table/reinforced, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/screwdriver, /obj/machinery/requests_console{ department = "Science"; @@ -42245,7 +42245,7 @@ network = list("rd"); pixel_y = -28 }, -/obj/item/device/integrated_circuit_printer, +/obj/item/integrated_circuit_printer, /turf/open/floor/plasteel/white, /area/science/circuit) "cca" = ( @@ -42313,7 +42313,7 @@ /area/tcommsat/server) "cci" = ( /obj/structure/table, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plasteel/yellow/side{ dir = 9 }, @@ -43049,7 +43049,7 @@ /area/tcommsat/server) "cee" = ( /obj/structure/table, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel/yellow/side{ dir = 10 }, @@ -44925,7 +44925,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -45664,7 +45664,7 @@ /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "clg" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -47072,7 +47072,7 @@ icon_state = "1-2" }, /obj/structure/table/glass, -/obj/item/device/flashlight, +/obj/item/flashlight, /turf/open/floor/plasteel, /area/engine/engineering) "cpx" = ( @@ -47179,7 +47179,7 @@ /area/engine/engine_smes) "cpT" = ( /obj/structure/table, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -35 }, @@ -47565,7 +47565,7 @@ /area/solar/starboard/aft) "crl" = ( /obj/structure/table, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /turf/open/floor/plating, /area/maintenance/port/aft) "crm" = ( @@ -47987,7 +47987,7 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) "cth" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -48064,7 +48064,7 @@ pixel_y = 28 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/off{ +/obj/item/radio/off{ pixel_y = 4 }, /obj/item/screwdriver{ @@ -48310,7 +48310,7 @@ /turf/closed/wall, /area/ai_monitored/turret_protected/aisat_interior) "cub" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -48538,7 +48538,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_x = 28 }, @@ -48619,7 +48619,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_x = -28 }, @@ -48663,7 +48663,7 @@ pixel_y = 3 }, /obj/item/storage/toolbox/mechanical, -/obj/item/device/multitool, +/obj/item/multitool, /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -48849,7 +48849,7 @@ /obj/machinery/porta_turret/ai{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -48991,14 +48991,14 @@ /area/ai_monitored/turret_protected/aisat/hallway) "cvx" = ( /obj/effect/landmark/start/ai/secondary, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_y = 28 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 1; listening = 1; @@ -49006,7 +49006,7 @@ pixel_x = -27; pixel_y = 5 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -49030,14 +49030,14 @@ /area/ai_monitored/turret_protected/aisat/hallway) "cvA" = ( /obj/effect/landmark/start/ai/secondary, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_y = 28 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 1; listening = 1; @@ -49045,7 +49045,7 @@ pixel_x = 27; pixel_y = 5 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -49272,7 +49272,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -50252,7 +50252,7 @@ /area/ai_monitored/turret_protected/ai) "cAS" = ( /obj/effect/landmark/start/ai, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 1; listening = 1; @@ -50260,14 +50260,14 @@ pixel_x = -27; pixel_y = -9 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_y = -31 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -50602,7 +50602,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "cBK" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -35 }, @@ -50703,7 +50703,7 @@ /obj/item/stack/cable_coil{ amount = 5 }, -/obj/item/device/flashlight, +/obj/item/flashlight, /turf/open/floor/plating, /area/construction) "cCc" = ( @@ -51296,7 +51296,7 @@ pixel_y = 5 }, /obj/item/clothing/glasses/welding, -/obj/item/device/multitool{ +/obj/item/multitool{ pixel_x = 3 }, /turf/open/floor/plasteel, @@ -51699,7 +51699,7 @@ /area/crew_quarters/heads/chief) "cSM" = ( /obj/machinery/computer/station_alert, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20 @@ -52002,7 +52002,7 @@ "cZO" = ( /obj/effect/spawner/lootdrop/maintenance, /obj/effect/decal/cleanable/blood/old, -/obj/item/device/assembly/signaler, +/obj/item/assembly/signaler, /turf/open/floor/plating, /area/maintenance/bar) "dfh" = ( @@ -52073,7 +52073,7 @@ /area/maintenance/bar) "eaI" = ( /obj/structure/table/reinforced, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_x = -30 }, /turf/open/floor/plasteel/white, @@ -52820,7 +52820,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "jZP" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -53058,7 +53058,7 @@ name = "2maintenance loot spawner" }, /obj/item/crowbar, -/obj/item/device/electropack/shockcollar, +/obj/item/electropack/shockcollar, /turf/open/floor/plating, /area/maintenance/bar) "lyP" = ( @@ -53496,7 +53496,7 @@ pixel_x = 6; pixel_y = -3 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1485; listening = 1; @@ -53986,7 +53986,7 @@ /area/maintenance/disposal/incinerator) "uoB" = ( /obj/structure/table/reinforced, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/screwdriver, /obj/machinery/camera{ c_tag = "Circuitry Lab North"; @@ -54055,7 +54055,7 @@ /area/security/armory) "uCa" = ( /obj/structure/chair/stool, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -35 }, diff --git a/_maps/cit_map_files/Deltastation/DeltaStation2.dmm b/_maps/cit_map_files/Deltastation/DeltaStation2.dmm index 2b49472df3..848b11f0e3 100644 --- a/_maps/cit_map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/cit_map_files/Deltastation/DeltaStation2.dmm @@ -422,7 +422,7 @@ /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) "acv" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -782,7 +782,7 @@ /area/hallway/secondary/entry) "adx" = ( /obj/structure/table/reinforced, -/obj/item/device/analyzer{ +/obj/item/analyzer{ pixel_x = 7; pixel_y = 3 }, @@ -955,7 +955,7 @@ /obj/item/stack/cable_coil/white, /obj/item/stock_parts/cell/high, /obj/effect/decal/cleanable/dirt, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -1054,7 +1054,7 @@ /obj/structure/table/reinforced, /obj/item/clipboard, /obj/item/folder/yellow, -/obj/item/device/assault_pod/mining, +/obj/item/assault_pod/mining, /turf/open/floor/plasteel/yellow/side{ dir = 4 }, @@ -1164,7 +1164,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "afV" = ( -/obj/item/device/beacon, +/obj/item/beacon, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/hallway/secondary/entry) @@ -2038,7 +2038,7 @@ dir = 4 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -2135,7 +2135,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -2784,12 +2784,12 @@ /area/security/vacantoffice) "alq" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/grimy, /area/security/vacantoffice) "alr" = ( /obj/structure/table/wood, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/machinery/light/small{ dir = 1 }, @@ -2873,7 +2873,7 @@ "alB" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/radio, +/obj/item/radio, /obj/structure/reagent_dispensers/peppertank{ pixel_x = 32 }, @@ -3195,7 +3195,7 @@ /area/hallway/secondary/entry) "amo" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/camera{ c_tag = "Arrivals - Center"; dir = 2; @@ -3325,7 +3325,7 @@ /obj/structure/closet/crate{ icon_state = "crateopen" }, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel/neutral/side{ dir = 6 @@ -3443,7 +3443,7 @@ "amS" = ( /obj/structure/table/wood, /obj/item/storage/briefcase, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /turf/open/floor/wood{ icon_state = "wood-broken4" }, @@ -3523,7 +3523,7 @@ /area/security/vacantoffice) "ane" = ( /obj/structure/table/wood, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/plasteel/grimy, /area/security/vacantoffice) "anf" = ( @@ -3870,7 +3870,7 @@ /area/security/vacantoffice) "aoa" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/carpet, /area/security/vacantoffice) "aob" = ( @@ -3949,7 +3949,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -4072,7 +4072,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -4312,11 +4312,11 @@ /area/security/vacantoffice) "apc" = ( /obj/structure/table/wood, -/obj/item/device/camera_film{ +/obj/item/camera_film{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/camera_film, +/obj/item/camera_film, /turf/open/floor/wood, /area/security/vacantoffice) "apd" = ( @@ -4783,7 +4783,7 @@ /area/security/vacantoffice) "aqh" = ( /obj/structure/table/wood, -/obj/item/device/camera, +/obj/item/camera, /obj/machinery/light/small, /obj/structure/sign/nanotrasen{ pixel_y = -32 @@ -4792,7 +4792,7 @@ /area/security/vacantoffice) "aqi" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, @@ -5624,7 +5624,7 @@ /area/hallway/secondary/entry) "arP" = ( /obj/machinery/vending/snack/random, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -6476,7 +6476,7 @@ /obj/structure/rack, /obj/effect/decal/cleanable/dirt, /obj/item/weldingtool, -/obj/item/device/assembly/voice, +/obj/item/assembly/voice, /obj/item/clothing/head/welding, /obj/effect/spawner/lootdrop/maintenance, /obj/structure/disposalpipe/segment{ @@ -6598,7 +6598,7 @@ /area/space/nearstation) "atK" = ( /obj/structure/table/reinforced, -/obj/item/device/analyzer{ +/obj/item/analyzer{ pixel_x = 7; pixel_y = 3 }, @@ -6782,8 +6782,8 @@ /obj/item/tank/internals/emergency_oxygen/engi{ pixel_x = 5 }, -/obj/item/device/geiger_counter, -/obj/item/device/geiger_counter, +/obj/item/geiger_counter, +/obj/item/geiger_counter, /obj/machinery/airalarm{ dir = 8; pixel_x = 24 @@ -7358,7 +7358,7 @@ /area/engine/atmospherics_engine) "ave" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -7508,7 +7508,7 @@ /area/maintenance/port/fore) "avx" = ( /obj/structure/table/wood, -/obj/item/device/camera_film, +/obj/item/camera_film, /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/machinery/airalarm{ pixel_y = 23 @@ -8113,7 +8113,7 @@ /area/crew_quarters/toilet/auxiliary) "awN" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -8261,7 +8261,7 @@ "axh" = ( /obj/structure/table/reinforced, /obj/item/storage/box/lights/mixed, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -8513,7 +8513,7 @@ /area/maintenance/port/fore) "axO" = ( /obj/structure/table/wood, -/obj/item/device/camera, +/obj/item/camera, /turf/open/floor/wood{ icon_state = "wood-broken3" }, @@ -8567,7 +8567,7 @@ pixel_y = 3 }, /obj/item/storage/box/lights/mixed, -/obj/item/device/lightreplacer, +/obj/item/lightreplacer, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -9119,7 +9119,7 @@ /obj/effect/decal/cleanable/dirt, /obj/item/mop, /obj/item/mop, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -11653,7 +11653,7 @@ "aEO" = ( /obj/structure/table/wood, /obj/structure/reagent_dispensers/beerkeg, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -11779,7 +11779,7 @@ pixel_y = 3 }, /obj/item/storage/fancy/cigarettes/cigars/havana, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -11941,7 +11941,7 @@ /turf/open/floor/plasteel, /area/engine/atmospherics_engine) "aFv" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -28; pixel_y = -28 @@ -12092,7 +12092,7 @@ /area/hydroponics/garden/abandoned) "aFN" = ( /obj/structure/table, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/hatchet, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, @@ -12138,7 +12138,7 @@ /area/maintenance/port/fore) "aFT" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/button/door{ id = "AuxCabinA"; name = "Dormitory Door Lock"; @@ -12151,7 +12151,7 @@ /area/hallway/secondary/service) "aFU" = ( /obj/structure/table/wood, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/plasteel/grimy, /area/hallway/secondary/service) "aFV" = ( @@ -12422,7 +12422,7 @@ }, /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/radio, +/obj/item/radio, /obj/machinery/button/door{ desc = "A remote control switch."; id = "cardoor"; @@ -12441,7 +12441,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -12693,7 +12693,7 @@ /turf/open/floor/plating, /area/security/prison) "aGM" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -13761,7 +13761,7 @@ "aIN" = ( /obj/structure/table/wood, /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/wood, /area/hallway/secondary/service) "aIO" = ( @@ -14062,7 +14062,7 @@ /turf/open/floor/plasteel, /area/security/prison) "aJB" = ( -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/neutral/corner, @@ -14414,7 +14414,7 @@ /area/maintenance/port/fore) "aKm" = ( /obj/structure/table/wood, -/obj/item/device/camera, +/obj/item/camera, /obj/machinery/newscaster{ pixel_x = -32 }, @@ -14525,7 +14525,7 @@ /area/crew_quarters/bar/atrium) "aKB" = ( /obj/structure/chair/stool/bar, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -14956,7 +14956,7 @@ /obj/structure/cable/white{ icon_state = "0-8" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -24 }, @@ -15633,11 +15633,11 @@ /obj/machinery/status_display{ pixel_x = -32 }, -/obj/item/device/camera_film{ +/obj/item/camera_film{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/camera_film, +/obj/item/camera_film, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -15711,7 +15711,7 @@ /area/crew_quarters/bar/atrium) "aNk" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -15787,7 +15787,7 @@ dir = 8 }, /obj/structure/disposalpipe/segment, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -16148,7 +16148,7 @@ /turf/open/floor/plasteel/vault, /area/engine/atmos) "aOd" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -16305,7 +16305,7 @@ /area/crew_quarters/theatre) "aOw" = ( /obj/structure/table/wood, -/obj/item/device/instrument/eguitar, +/obj/item/instrument/eguitar, /obj/item/toy/crayon/spraycan/lubecan{ charges = 5 }, @@ -16344,10 +16344,10 @@ }, /obj/item/storage/crayons, /obj/item/storage/crayons, -/obj/item/device/flashlight/lamp/bananalamp{ +/obj/item/flashlight/lamp/bananalamp{ pixel_y = 5 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -16376,7 +16376,7 @@ /area/crew_quarters/bar/atrium) "aOD" = ( /obj/structure/table/wood, -/obj/item/device/instrument/guitar, +/obj/item/instrument/guitar, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -17148,7 +17148,7 @@ dir = 8; pixel_x = -24 }, -/obj/item/device/camera, +/obj/item/camera, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -17300,7 +17300,7 @@ "aQC" = ( /obj/structure/table, /obj/item/folder/yellow, -/obj/item/device/destTagger, +/obj/item/destTagger, /turf/open/floor/plasteel/brown, /area/quartermaster/sorting) "aQD" = ( @@ -17466,7 +17466,7 @@ "aQX" = ( /obj/structure/table/glass, /obj/item/folder/blue, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/machinery/light{ dir = 1 }, @@ -17528,7 +17528,7 @@ /area/security/prison) "aRf" = ( /obj/machinery/holopad, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom"; @@ -18269,7 +18269,7 @@ pixel_x = 26; pixel_y = 32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = 28 @@ -18290,7 +18290,7 @@ /area/quartermaster/qm) "aSA" = ( /obj/structure/table/reinforced, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/brown{ dir = 5 }, @@ -18445,7 +18445,7 @@ pixel_x = 3 }, /obj/item/restraints/handcuffs, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, @@ -18931,7 +18931,7 @@ /area/crew_quarters/bar/atrium) "aTI" = ( /obj/structure/table/wood, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/plasteel/redyellow, /area/crew_quarters/bar/atrium) "aTJ" = ( @@ -18994,7 +18994,7 @@ "aTQ" = ( /obj/structure/table/reinforced, /obj/item/folder/yellow, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/pen/red, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 @@ -19220,7 +19220,7 @@ /area/quartermaster/qm) "aUm" = ( /obj/structure/table/reinforced, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -19405,8 +19405,8 @@ /obj/structure/reagent_dispensers/peppertank{ pixel_x = -32 }, -/obj/item/device/electropack, -/obj/item/device/assembly/signaler, +/obj/item/electropack, +/obj/item/assembly/signaler, /obj/machinery/light{ dir = 8 }, @@ -19750,7 +19750,7 @@ /area/hallway/secondary/service) "aVn" = ( /obj/structure/table/wood, -/obj/item/device/instrument/violin, +/obj/item/instrument/violin, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -20284,8 +20284,8 @@ pixel_x = -7; pixel_y = -26 }, -/obj/item/device/flashlight/lamp, -/obj/item/device/radio/intercom{ +/obj/item/flashlight/lamp, +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -20658,7 +20658,7 @@ }, /area/crew_quarters/bar/atrium) "aXb" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26; pixel_y = -26 @@ -20875,7 +20875,7 @@ /obj/item/cartridge/quartermaster{ pixel_y = 6 }, -/obj/item/device/gps/mining, +/obj/item/gps/mining, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -20921,7 +20921,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -21139,7 +21139,7 @@ "aYf" = ( /obj/structure/table/reinforced, /obj/item/folder/yellow, -/obj/item/device/lightreplacer, +/obj/item/lightreplacer, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -22298,7 +22298,7 @@ /turf/closed/wall, /area/hydroponics) "baw" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -22461,7 +22461,7 @@ /obj/machinery/newscaster{ pixel_y = -32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = 28 @@ -22672,7 +22672,7 @@ /area/security/prison) "bbl" = ( /obj/machinery/light, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -22968,7 +22968,7 @@ /area/hydroponics) "bbX" = ( /obj/structure/closet/wardrobe/botanist, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -23189,7 +23189,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -23372,7 +23372,7 @@ /obj/item/restraints/handcuffs, /obj/item/restraints/handcuffs, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/vault, /area/security/prison) "bcQ" = ( @@ -23853,7 +23853,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -24061,7 +24061,7 @@ /turf/open/floor/plasteel, /area/security/prison) "bes" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -24119,7 +24119,7 @@ /area/engine/atmos) "beA" = ( /obj/structure/table/reinforced, -/obj/item/device/analyzer{ +/obj/item/analyzer{ pixel_x = 7; pixel_y = 3 }, @@ -24338,7 +24338,7 @@ dir = 1; pixel_y = -22 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26; pixel_y = -26 @@ -25401,7 +25401,7 @@ /area/hydroponics) "bhC" = ( /obj/structure/table/glass, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -25464,7 +25464,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -25505,7 +25505,7 @@ /turf/open/floor/plasteel/red, /area/crew_quarters/kitchen) "bhO" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -25760,7 +25760,7 @@ "bir" = ( /obj/structure/table/reinforced, /obj/effect/decal/cleanable/dirt, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/purple/side{ dir = 4 }, @@ -25959,7 +25959,7 @@ /obj/structure/chair/office/dark{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = 26 @@ -26218,7 +26218,7 @@ /obj/structure/closet/crate{ icon_state = "crateopen" }, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -26579,7 +26579,7 @@ icon_state = "4-8" }, /obj/item/folder/yellow, -/obj/item/device/gps/mining, +/obj/item/gps/mining, /turf/open/floor/plasteel/brown{ dir = 6 }, @@ -26622,7 +26622,7 @@ icon_state = "4-8" }, /obj/item/clothing/gloves/color/latex, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/item/reagent_containers/spray/cleaner{ pixel_x = -3; pixel_y = 2 @@ -26768,11 +26768,11 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/item/device/taperecorder{ +/obj/item/taperecorder{ pixel_x = 3 }, /obj/item/storage/box/deputy, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -27421,7 +27421,7 @@ /obj/structure/closet/wardrobe/miner, /obj/effect/decal/cleanable/dirt, /obj/machinery/light, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_y = -26 @@ -27485,7 +27485,7 @@ /area/security/brig) "bmf" = ( /obj/structure/bed/roller, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -27622,7 +27622,7 @@ pixel_x = 32; pixel_y = 32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = 58 @@ -27685,7 +27685,7 @@ /obj/item/storage/secure/safe/HoS{ pixel_x = 32 }, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/grimy, /area/crew_quarters/heads/hos) "bmD" = ( @@ -28272,7 +28272,7 @@ "bnN" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -28367,7 +28367,7 @@ /area/crew_quarters/heads/hos) "bnX" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /obj/structure/cable/white{ icon_state = "1-2" @@ -28523,7 +28523,7 @@ "bop" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/mechanical, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /obj/effect/turf_decal/bot, /obj/machinery/atmospherics/pipe/simple/cyan/visible{ @@ -28578,7 +28578,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 28 }, @@ -28923,7 +28923,7 @@ name = "Labor Camp Monitoring"; network = list("labor") }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -30069,7 +30069,7 @@ "brr" = ( /obj/structure/table/reinforced, /obj/item/folder/red, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -30094,7 +30094,7 @@ "bru" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, @@ -30444,7 +30444,7 @@ "bse" = ( /obj/structure/table/reinforced, /obj/item/storage/belt/utility, -/obj/item/device/t_scanner, +/obj/item/t_scanner, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 2 }, @@ -30791,7 +30791,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -31263,7 +31263,7 @@ /obj/machinery/ai_status_display{ pixel_y = -32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = -26 @@ -32561,7 +32561,7 @@ /turf/open/floor/plasteel/caution, /area/engine/atmos) "bwx" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -32794,7 +32794,7 @@ /area/hydroponics) "bwO" = ( /obj/machinery/hydroponics/constructable, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -33272,7 +33272,7 @@ /obj/structure/table/reinforced, /obj/item/crowbar/red, /obj/item/wrench, -/obj/item/device/analyzer{ +/obj/item/analyzer{ pixel_x = 7; pixel_y = 3 }, @@ -33437,7 +33437,7 @@ pixel_y = 32 }, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/dark, /area/bridge) "byk" = ( @@ -33854,7 +33854,7 @@ /area/ai_monitored/turret_protected/ai) "bzc" = ( /obj/structure/table/reinforced, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -34254,7 +34254,7 @@ dir = 4 }, /obj/structure/disposalpipe/segment, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -34329,8 +34329,8 @@ dir = 4 }, /obj/item/wrench, -/obj/item/device/assembly/timer, -/obj/item/device/assembly/signaler, +/obj/item/assembly/timer, +/obj/item/assembly/signaler, /turf/open/floor/plasteel/darkyellow/corner{ dir = 4 }, @@ -34552,7 +34552,7 @@ /obj/structure/cable/white{ icon_state = "1-8" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -34742,7 +34742,7 @@ /obj/machinery/power/terminal{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -34981,25 +34981,25 @@ /area/hallway/primary/port) "bBj" = ( /obj/structure/table/reinforced, -/obj/item/device/plant_analyzer, -/obj/item/device/plant_analyzer, -/obj/item/device/radio, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/radio, /turf/open/floor/plasteel/vault{ dir = 5 }, /area/storage/tech) "bBk" = ( /obj/structure/table/reinforced, -/obj/item/device/analyzer{ +/obj/item/analyzer{ pixel_x = 7; pixel_y = 3 }, -/obj/item/device/analyzer{ +/obj/item/analyzer{ pixel_x = 7; pixel_y = 3 }, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/signaler, +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/storage/tech) @@ -35019,16 +35019,16 @@ "bBn" = ( /obj/structure/table/reinforced, /obj/item/aiModule/reset, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/storage/tech) "bBo" = ( /obj/structure/table/reinforced, /obj/item/bodypart/chest/robot, -/obj/item/device/mmi, -/obj/item/device/mmi, +/obj/item/mmi, +/obj/item/mmi, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -35186,7 +35186,7 @@ /turf/open/floor/plasteel/dark, /area/bridge) "bBG" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26; pixel_y = 26 @@ -35208,7 +35208,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -35229,7 +35229,7 @@ }, /area/bridge) "bBL" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = 26 @@ -35369,7 +35369,7 @@ /turf/open/floor/plasteel/neutral, /area/security/execution/transfer) "bCc" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -35407,7 +35407,7 @@ /turf/open/floor/plasteel, /area/security/brig) "bCg" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -35446,8 +35446,8 @@ /area/security/main) "bCk" = ( /obj/structure/table/reinforced, -/obj/item/device/flashlight/lamp, -/obj/item/device/radio/intercom{ +/obj/item/flashlight/lamp, +/obj/item/radio/intercom{ anyai = 1; broadcasting = 1; freerange = 1; @@ -35866,7 +35866,7 @@ /area/engine/break_room) "bCY" = ( /obj/structure/table/reinforced, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/caution{ dir = 10 }, @@ -35896,7 +35896,7 @@ /obj/structure/table/reinforced, /obj/item/folder/yellow, /obj/item/pen, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -35932,13 +35932,13 @@ /area/hallway/primary/port) "bDe" = ( /obj/structure/table/reinforced, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/item/stack/cable_coil/white{ pixel_x = 3; pixel_y = 3 }, /obj/item/stack/cable_coil/white, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/machinery/light{ dir = 8 }, @@ -35972,7 +35972,7 @@ /area/storage/tech) "bDk" = ( /obj/structure/table/reinforced, -/obj/item/device/aicard, +/obj/item/aicard, /obj/machinery/light{ dir = 4 }, @@ -35986,16 +35986,16 @@ /area/storage/primary) "bDm" = ( /obj/structure/table/reinforced, -/obj/item/device/analyzer{ +/obj/item/analyzer{ pixel_x = 7; pixel_y = 3 }, -/obj/item/device/analyzer{ +/obj/item/analyzer{ pixel_x = 7; pixel_y = 3 }, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/signaler, +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, /obj/machinery/light{ dir = 8 }, @@ -36129,9 +36129,9 @@ /area/storage/primary) "bDt" = ( /obj/structure/table/reinforced, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, /obj/effect/spawner/lootdrop/maintenance, /obj/machinery/light{ dir = 1 @@ -36641,7 +36641,7 @@ /turf/closed/wall, /area/security/brig) "bEf" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; freerange = 1; listening = 0; @@ -36649,14 +36649,14 @@ pixel_x = -10; pixel_y = 22 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 1; listening = 1; name = "Common Channel"; pixel_x = -27 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -36755,7 +36755,7 @@ /turf/open/floor/circuit/green, /area/ai_monitored/turret_protected/ai) "bEm" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; freerange = 1; listening = 0; @@ -36763,14 +36763,14 @@ pixel_x = 10; pixel_y = 22 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 1; listening = 1; name = "Common Channel"; pixel_x = 27 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -37279,7 +37279,7 @@ /obj/structure/table/reinforced, /obj/item/crowbar, /obj/item/wrench, -/obj/item/device/gps, +/obj/item/gps, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/storage/primary) @@ -37446,7 +37446,7 @@ }, /obj/structure/table/wood, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -37482,7 +37482,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -37668,7 +37668,7 @@ /turf/open/floor/plating, /area/security/warden) "bFQ" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -37692,7 +37692,7 @@ }, /area/ai_monitored/turret_protected/ai) "bFT" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 1; listening = 1; @@ -37700,14 +37700,14 @@ pixel_x = -27; pixel_y = -7 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_y = -27 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -38108,7 +38108,7 @@ }, /obj/item/stock_parts/matter_bin, /obj/item/stock_parts/micro_laser, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -38119,7 +38119,7 @@ "bGG" = ( /obj/structure/rack, /obj/item/airlock_painter, -/obj/item/device/toner, +/obj/item/toner, /obj/machinery/status_display{ pixel_x = -32 }, @@ -38269,7 +38269,7 @@ "bHb" = ( /obj/structure/rack, /obj/machinery/light/small, -/obj/item/device/aicard, +/obj/item/aicard, /obj/item/storage/secure/briefcase, /turf/open/floor/plasteel/vault{ dir = 8 @@ -38280,7 +38280,7 @@ dir = 8 }, /obj/structure/table/wood, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, @@ -38618,7 +38618,7 @@ /obj/structure/table/reinforced, /obj/item/crowbar, /obj/item/wrench, -/obj/item/device/mmi, +/obj/item/mmi, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -38781,7 +38781,7 @@ "bIc" = ( /obj/structure/table/reinforced, /obj/item/folder/yellow, -/obj/item/device/lightreplacer, +/obj/item/lightreplacer, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -39033,7 +39033,7 @@ "bIA" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/mechanical, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/storage/primary) @@ -39194,7 +39194,7 @@ pixel_x = -7; pixel_y = -26 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = -26 @@ -39353,7 +39353,7 @@ icon_state = "1-8" }, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/camera/detective, +/obj/item/camera/detective, /turf/open/floor/plasteel/vault, /area/security/detectives_office) "bJj" = ( @@ -39367,7 +39367,7 @@ areastring = "/area/security/detectives_office"; pixel_y = 24 }, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/item/restraints/handcuffs, /turf/open/floor/plasteel/vault, /area/security/detectives_office) @@ -39642,7 +39642,7 @@ "bJN" = ( /obj/structure/table/reinforced, /obj/item/folder/blue, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -39700,7 +39700,7 @@ "bJT" = ( /obj/structure/table/reinforced, /obj/item/clipboard, -/obj/item/device/gps/engineering{ +/obj/item/gps/engineering{ gpstag = "CE0" }, /obj/machinery/newscaster{ @@ -39959,7 +39959,7 @@ /area/storage/tech) "bKs" = ( /obj/machinery/vending/tool, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -40005,7 +40005,7 @@ pixel_y = 32 }, /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/wood, /area/bridge/meeting_room/council) "bKz" = ( @@ -40066,7 +40066,7 @@ /area/bridge/meeting_room/council) "bKG" = ( /obj/structure/table/wood, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/wood, /area/bridge/meeting_room/council) "bKH" = ( @@ -40165,7 +40165,7 @@ "bKV" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/disposalpipe/segment, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -41002,7 +41002,7 @@ /area/tcommsat/computer) "bMy" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -41066,11 +41066,11 @@ /area/tcommsat/computer) "bME" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, -/obj/item/device/radio{ +/obj/item/radio{ pixel_y = 5 }, /turf/open/floor/plasteel/grimy, @@ -41080,7 +41080,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -41398,14 +41398,14 @@ pixel_x = 3; pixel_y = -3 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, /obj/item/clothing/mask/gas/sechailer, /obj/item/clothing/mask/gas/sechailer, -/obj/item/device/flashlight/seclite, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, +/obj/item/flashlight/seclite, /turf/open/floor/plasteel/red/side{ dir = 5 }, @@ -41431,7 +41431,7 @@ pixel_y = -2 }, /obj/structure/table/reinforced, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -41717,7 +41717,7 @@ /area/crew_quarters/heads/chief) "bNR" = ( /obj/structure/table/reinforced, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/neutral, /area/crew_quarters/heads/chief) "bNS" = ( @@ -41755,7 +41755,7 @@ /turf/open/floor/plasteel, /area/engine/break_room) "bNW" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -41867,7 +41867,7 @@ /obj/structure/table/reinforced, /obj/item/clothing/gloves/color/yellow, /obj/item/storage/toolbox/electrical, -/obj/item/device/multitool, +/obj/item/multitool, /obj/machinery/light{ dir = 8 }, @@ -42193,7 +42193,7 @@ /obj/structure/rack, /obj/item/clothing/gloves/color/fyellow, /obj/item/clothing/suit/hazardvest, -/obj/item/device/multitool, +/obj/item/multitool, /obj/structure/extinguisher_cabinet{ pixel_x = -26 }, @@ -42224,7 +42224,7 @@ /turf/open/floor/plasteel/neutral, /area/storage/tools) "bPb" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -42492,7 +42492,7 @@ id = "AI"; pixel_x = -26 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -42765,10 +42765,10 @@ /area/storage/tech) "bQl" = ( /obj/structure/table/reinforced, -/obj/item/device/assembly/timer, -/obj/item/device/assembly/timer, -/obj/item/device/assembly/voice, -/obj/item/device/assembly/voice, +/obj/item/assembly/timer, +/obj/item/assembly/timer, +/obj/item/assembly/voice, +/obj/item/assembly/voice, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/storage/tech) @@ -42794,7 +42794,7 @@ /obj/structure/table/reinforced, /obj/item/wrench, /obj/item/crowbar, -/obj/item/device/paicard, +/obj/item/paicard, /obj/machinery/newscaster{ pixel_y = -32 }, @@ -42804,18 +42804,18 @@ "bQp" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/mechanical, -/obj/item/device/flashlight, -/obj/item/device/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, /turf/open/floor/plasteel/vault{ dir = 5 }, /area/storage/tech) "bQq" = ( /obj/structure/table/reinforced, -/obj/item/device/assembly/timer, -/obj/item/device/assembly/timer, -/obj/item/device/multitool, -/obj/item/device/multitool, +/obj/item/assembly/timer, +/obj/item/assembly/timer, +/obj/item/multitool, +/obj/item/multitool, /obj/machinery/light, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -42840,15 +42840,15 @@ /area/storage/primary) "bQu" = ( /obj/structure/table/reinforced, -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = 5; pixel_y = 5 }, -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = -5; pixel_y = 5 }, -/obj/item/device/radio, +/obj/item/radio, /obj/machinery/firealarm{ dir = 1; pixel_y = -24 @@ -43006,7 +43006,7 @@ pixel_x = -32; pixel_y = -32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = -26 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -43203,7 +43203,7 @@ pixel_y = -26 }, /obj/structure/disposalpipe/segment, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/item/reagent_containers/food/drinks/flask/det, /turf/open/floor/carpet, /area/security/detectives_office) @@ -43630,7 +43630,7 @@ /area/crew_quarters/heads/chief) "bSe" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/ai_status_display{ pixel_y = 32 }, @@ -43850,7 +43850,7 @@ pixel_x = -26; pixel_y = -26 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -43951,7 +43951,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/camera{ c_tag = "Bridge - Captain's Office"; @@ -44012,7 +44012,7 @@ "bSQ" = ( /obj/structure/table/wood, /obj/item/storage/photo_album, -/obj/item/device/camera, +/obj/item/camera, /turf/open/floor/wood, /area/crew_quarters/heads/captain) "bSR" = ( @@ -44754,7 +44754,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/item/device/beacon, +/obj/item/beacon, /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 }, @@ -44845,7 +44845,7 @@ pixel_x = 32; pixel_y = 32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -45462,7 +45462,7 @@ /obj/item/screwdriver{ pixel_y = 5 }, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plasteel/red/side{ dir = 4 }, @@ -45630,7 +45630,7 @@ name = "MiniSat Antechamber"; req_access_txt = "16" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -45803,7 +45803,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -46126,7 +46126,7 @@ pixel_x = 24 }, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/radio, +/obj/item/radio, /turf/open/floor/plasteel/red/side{ dir = 4 }, @@ -46265,7 +46265,7 @@ pixel_x = -38; pixel_y = 7 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -46391,7 +46391,7 @@ /turf/open/floor/carpet, /area/crew_quarters/heads/captain) "bXf" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = -26 }, /turf/open/floor/plasteel/grimy, @@ -46587,7 +46587,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/starboard) "bXz" = ( -/obj/item/device/beacon, +/obj/item/beacon, /obj/structure/cable/white{ icon_state = "4-8" }, @@ -48036,7 +48036,7 @@ dir = 1 }, /obj/machinery/light, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -48142,7 +48142,7 @@ /obj/item/clipboard, /obj/item/toy/figure/borg, /obj/machinery/light, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -48163,7 +48163,7 @@ /obj/machinery/ai_status_display{ pixel_y = -32 }, -/obj/item/device/aicard, +/obj/item/aicard, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -48828,9 +48828,9 @@ pixel_x = 3; pixel_y = -3 }, -/obj/item/device/flashlight/seclite, -/obj/item/device/flashlight/seclite, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, +/obj/item/flashlight/seclite, +/obj/item/flashlight/seclite, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -49138,7 +49138,7 @@ /area/library) "cco" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -49167,11 +49167,11 @@ /area/library) "cct" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/computer/security/telescreen/entertainment{ pixel_x = -32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -49200,7 +49200,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -49343,7 +49343,7 @@ /obj/structure/table/wood, /obj/item/pinpointer/nuke, /obj/item/disk/nuclear, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -49374,7 +49374,7 @@ /area/crew_quarters/heads/captain/private) "ccQ" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /obj/structure/window/reinforced{ dir = 8 }, @@ -49502,7 +49502,7 @@ /obj/structure/table/wood, /obj/item/book/manual/wiki/security_space_law, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/taperecorder{ +/obj/item/taperecorder{ pixel_x = 3 }, /obj/item/clothing/glasses/sunglasses, @@ -49592,7 +49592,7 @@ /turf/open/floor/plasteel/neutral, /area/security/brig) "cdp" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = -7 @@ -50669,7 +50669,7 @@ }, /area/security/brig) "cfn" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -50952,7 +50952,7 @@ /obj/structure/sign/warning/electricshock{ pixel_x = 32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = -26 @@ -51156,7 +51156,7 @@ /area/tcommsat/server) "cgr" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; freerange = 1; name = "Captain's Intercom"; @@ -51288,7 +51288,7 @@ /area/security/courtroom) "cgE" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom" }, /turf/open/floor/plasteel/neutral/side{ @@ -51511,7 +51511,7 @@ "cgZ" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -51980,7 +51980,7 @@ /area/library) "chW" = ( /obj/structure/chair/comfy/brown, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -52354,15 +52354,15 @@ dir = 4; pixel_x = -23 }, -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = 5; pixel_y = 5 }, -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = -5; pixel_y = 5 }, -/obj/item/device/radio, +/obj/item/radio, /turf/open/floor/plasteel/red/side{ dir = 10 }, @@ -52633,7 +52633,7 @@ /area/maintenance/port) "cjr" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/newscaster{ pixel_x = -32 }, @@ -52700,7 +52700,7 @@ /obj/machinery/keycard_auth{ pixel_x = -26 }, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -52887,7 +52887,7 @@ /turf/open/floor/plasteel, /area/security/courtroom) "cjY" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/neutral/side{ dir = 8 }, @@ -52906,7 +52906,7 @@ /area/security/courtroom) "ckb" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -32 }, @@ -52941,8 +52941,8 @@ /area/security/courtroom) "cke" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, -/obj/item/device/radio/intercom{ +/obj/item/flashlight/lamp, +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -53040,7 +53040,7 @@ "ckn" = ( /obj/structure/table/reinforced, /obj/item/aiModule/reset, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -53089,7 +53089,7 @@ "ckt" = ( /obj/structure/table/reinforced, /obj/item/aiModule/supplied/quarantine, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -53514,7 +53514,7 @@ icon_state = "crateopen" }, /obj/effect/decal/cleanable/dirt, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/starboard) @@ -54186,7 +54186,7 @@ /area/security/courtroom) "cmU" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom" }, /turf/open/floor/plasteel/neutral/side, @@ -54625,12 +54625,12 @@ "cnG" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/mechanical, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/decal/cleanable/dirt, /obj/machinery/light{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -54701,7 +54701,7 @@ /area/library) "cnR" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/structure/window/reinforced{ dir = 8 }, @@ -54725,11 +54725,11 @@ /area/library) "cnV" = ( /obj/structure/table/wood, -/obj/item/device/camera_film{ +/obj/item/camera_film{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/camera_film, +/obj/item/camera_film, /obj/machinery/firealarm{ dir = 4; pixel_x = 24 @@ -54799,7 +54799,7 @@ /area/crew_quarters/heads/hop) "cod" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -54963,7 +54963,7 @@ /area/hallway/primary/central) "cot" = ( /obj/item/twohanded/required/kirbyplants/random, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -55335,7 +55335,7 @@ /obj/item/stack/sheet/mineral/plasma{ amount = 20 }, -/obj/item/device/gps/engineering{ +/obj/item/gps/engineering{ gpstag = "ENG0" }, /obj/effect/turf_decal/bot, @@ -55376,7 +55376,7 @@ "cpo" = ( /obj/structure/tank_dispenser, /obj/effect/decal/cleanable/dirt, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -55472,11 +55472,11 @@ /area/library) "cpA" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /turf/open/floor/plasteel/grimy, /area/crew_quarters/heads/hop) "cpB" = ( @@ -55584,7 +55584,7 @@ "cpN" = ( /obj/structure/rack, /obj/item/tank/internals/oxygen, -/obj/item/device/radio, +/obj/item/radio, /obj/machinery/firealarm{ dir = 1; pixel_y = -26 @@ -56232,7 +56232,7 @@ /area/security/courtroom) "crm" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom" }, /turf/open/floor/plasteel/vault, @@ -56684,7 +56684,7 @@ "csl" = ( /obj/structure/table/wood, /obj/item/storage/bag/books, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/structure/noticeboard{ dir = 8; pixel_x = 32 @@ -56840,7 +56840,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -57439,7 +57439,7 @@ dir = 8; pixel_x = 24 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -57680,7 +57680,7 @@ /obj/structure/cable/white{ icon_state = "1-8" }, -/obj/item/device/beacon, +/obj/item/beacon, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -57955,7 +57955,7 @@ icon_state = "crateopen" }, /obj/item/clothing/shoes/jackboots, -/obj/item/device/radio, +/obj/item/radio, /obj/item/storage/secure/briefcase, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -58563,11 +58563,11 @@ /area/crew_quarters/locker) "cvV" = ( /obj/structure/table, -/obj/item/device/camera_film{ +/obj/item/camera_film{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/camera_film, +/obj/item/camera_film, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -58575,7 +58575,7 @@ /area/crew_quarters/locker) "cvW" = ( /obj/structure/table, -/obj/item/device/camera, +/obj/item/camera, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, @@ -58810,7 +58810,7 @@ /area/hallway/primary/central) "cwB" = ( /obj/item/stack/cable_coil, -/obj/item/device/multitool, +/obj/item/multitool, /obj/structure/table/reinforced, /turf/open/floor/plasteel/vault{ dir = 8 @@ -59022,7 +59022,7 @@ amount = 25 }, /obj/item/storage/toolbox/emergency, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/structure/extinguisher_cabinet{ pixel_x = 26 }, @@ -59336,7 +59336,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -60197,7 +60197,7 @@ /area/library) "czE" = ( /obj/structure/table/wood, -/obj/item/device/paicard, +/obj/item/paicard, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/disposalpipe/segment{ dir = 4 @@ -60268,10 +60268,10 @@ /obj/machinery/light, /obj/structure/table/wood, /obj/item/folder, -/obj/item/device/laser_pointer{ +/obj/item/laser_pointer{ pixel_x = 3 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -60279,8 +60279,8 @@ /area/library) "czN" = ( /obj/structure/table/wood, -/obj/item/device/taperecorder, -/obj/item/device/camera, +/obj/item/taperecorder, +/obj/item/camera, /obj/machinery/ai_status_display{ pixel_y = -32 }, @@ -60347,7 +60347,7 @@ /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "czU" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/neutral, /area/ai_monitored/storage/eva) "czV" = ( @@ -60821,7 +60821,7 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/table/reinforced, /obj/item/storage/toolbox/mechanical, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/maintenance/port) @@ -61087,7 +61087,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -61142,7 +61142,7 @@ /area/gateway) "cBG" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -61330,7 +61330,7 @@ /area/crew_quarters/locker) "cBW" = ( /obj/structure/table, -/obj/item/device/paicard, +/obj/item/paicard, /obj/structure/cable/white{ icon_state = "4-8" }, @@ -61409,7 +61409,7 @@ /area/crew_quarters/dorms) "cCe" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/structure/sign/nanotrasen{ pixel_x = -32 }, @@ -61431,7 +61431,7 @@ /obj/structure/closet/secure_closet/personal/cabinet, /obj/item/clothing/suit/jacket/letterman_nanotrasen, /obj/item/clothing/suit/toggle/lawyer, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = 26 @@ -61466,7 +61466,7 @@ name = "trenchcoat" }, /obj/item/clothing/suit/toggle/lawyer/purple, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = 26 @@ -62177,7 +62177,7 @@ /turf/open/floor/wood, /area/crew_quarters/dorms) "cDD" = ( -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, /turf/open/floor/wood{ icon_state = "wood-broken3" }, @@ -62491,7 +62491,7 @@ /area/maintenance/port) "cEp" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/dark, /area/library) "cEq" = ( @@ -62507,7 +62507,7 @@ /area/library) "cEr" = ( /obj/item/twohanded/required/kirbyplants/random, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -62753,9 +62753,9 @@ "cES" = ( /obj/structure/table, /obj/item/storage/belt, -/obj/item/device/radio, -/obj/item/device/radio, -/obj/item/device/radio, +/obj/item/radio, +/obj/item/radio, +/obj/item/radio, /obj/machinery/firealarm{ dir = 8; pixel_x = -24 @@ -63122,7 +63122,7 @@ /area/crew_quarters/dorms) "cFA" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /obj/machinery/newscaster{ pixel_x = -32 }, @@ -63414,8 +63414,8 @@ /obj/item/folder/yellow, /obj/machinery/light, /obj/structure/table/reinforced, -/obj/item/device/gps, -/obj/item/device/gps, +/obj/item/gps, +/obj/item/gps, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -63435,7 +63435,7 @@ /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "cGh" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -63475,7 +63475,7 @@ /area/ai_monitored/storage/eva) "cGn" = ( /obj/item/storage/belt, -/obj/item/device/radio, +/obj/item/radio, /obj/machinery/light, /obj/structure/table/reinforced, /turf/open/floor/plasteel/vault{ @@ -63558,7 +63558,7 @@ /area/bridge/showroom/corporate) "cGv" = ( /obj/structure/table/wood, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/plasteel/grimy, /area/bridge/showroom/corporate) "cGw" = ( @@ -63573,7 +63573,7 @@ desc = "A replica beret resembling that of a special operations officer under Nanotrasen."; name = "replica officer's beret" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -64559,7 +64559,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -65234,7 +65234,7 @@ /obj/structure/closet/crate{ icon_state = "crateopen" }, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -67006,7 +67006,7 @@ /obj/structure/closet/crate{ icon_state = "crateopen" }, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port) @@ -67225,7 +67225,7 @@ /area/medical/storage) "cNN" = ( /obj/structure/closet/secure_closet/medical3, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -67589,7 +67589,7 @@ pixel_y = 3 }, /obj/item/stack/cable_coil/white, -/obj/item/device/multitool, +/obj/item/multitool, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/maintenance/department/electrical) @@ -67800,7 +67800,7 @@ "cPa" = ( /obj/structure/table, /obj/item/folder/white, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/plasteel/whitepurple/corner{ dir = 1 }, @@ -67817,8 +67817,8 @@ "cPc" = ( /obj/structure/table, /obj/item/stack/cable_coil/white, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/timer{ +/obj/item/assembly/igniter, +/obj/item/assembly/timer{ pixel_x = 3; pixel_y = 3 }, @@ -67962,7 +67962,7 @@ "cPx" = ( /obj/structure/table, /obj/item/storage/firstaid/regular, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = 28 @@ -68202,7 +68202,7 @@ /area/crew_quarters/dorms) "cPR" = ( /obj/structure/dresser, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = 26 @@ -68228,7 +68228,7 @@ /area/crew_quarters/dorms) "cPT" = ( /obj/item/twohanded/required/kirbyplants/random, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = 26 @@ -68260,8 +68260,8 @@ /area/crew_quarters/dorms) "cPW" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, -/obj/item/device/radio/intercom{ +/obj/item/flashlight/lamp, +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = 26 @@ -68564,7 +68564,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -68575,7 +68575,7 @@ "cQG" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/radio, +/obj/item/radio, /obj/machinery/ai_status_display{ pixel_y = 32 }, @@ -68589,7 +68589,7 @@ "cQH" = ( /obj/structure/table, /obj/item/folder/white, -/obj/item/device/assembly/infra, +/obj/item/assembly/infra, /turf/open/floor/plasteel/whitepurple/corner{ dir = 1 }, @@ -69065,7 +69065,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -69471,7 +69471,7 @@ }, /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/radio, +/obj/item/radio, /obj/machinery/button/door{ desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; @@ -69498,7 +69498,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -69547,7 +69547,7 @@ pixel_y = 3 }, /obj/item/storage/box/beakers, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -69780,7 +69780,7 @@ /area/maintenance/department/electrical) "cTq" = ( /obj/structure/table/reinforced, -/obj/item/device/analyzer{ +/obj/item/analyzer{ pixel_x = 7; pixel_y = 3 }, @@ -70038,7 +70038,7 @@ pixel_y = 3 }, /obj/item/storage/box/syringes, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 32 }, @@ -70587,7 +70587,7 @@ /obj/machinery/status_display{ pixel_y = -32 }, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/wood, /area/crew_quarters/dorms) "cUW" = ( @@ -70897,7 +70897,7 @@ pixel_y = -3; req_access_txt = "55" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 5 }, @@ -71791,7 +71791,7 @@ /obj/item/clipboard, /obj/item/electronics/airlock, /obj/item/stack/sheet/glass, -/obj/item/device/assembly/signaler, +/obj/item/assembly/signaler, /obj/machinery/airalarm{ dir = 1; pixel_y = -22 @@ -71839,8 +71839,8 @@ /area/science/research) "cXw" = ( /obj/structure/table, -/obj/item/device/gps, -/obj/item/device/assembly/flash/handheld, +/obj/item/gps, +/obj/item/assembly/flash/handheld, /obj/machinery/status_display{ pixel_y = -32 }, @@ -73783,11 +73783,11 @@ /area/crew_quarters/fitness/recreation) "dbI" = ( /obj/structure/table, -/obj/item/device/camera_film{ +/obj/item/camera_film{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/camera_film, +/obj/item/camera_film, /turf/open/floor/plasteel/neutral, /area/crew_quarters/fitness/recreation) "dbJ" = ( @@ -74356,18 +74356,18 @@ /area/medical/chemistry) "dcN" = ( /obj/structure/table/glass, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/timer{ +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/timer{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 3; pixel_y = 3 }, @@ -74420,7 +74420,7 @@ /obj/machinery/computer/crew{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -74687,7 +74687,7 @@ /area/crew_quarters/fitness/recreation) "ddA" = ( /obj/structure/table/wood, -/obj/item/device/camera, +/obj/item/camera, /obj/structure/sign/nanotrasen{ pixel_x = 32; pixel_y = -32 @@ -74860,7 +74860,7 @@ "ddV" = ( /obj/structure/table/reinforced, /obj/item/clothing/gloves/color/latex, -/obj/item/device/slime_scanner, +/obj/item/slime_scanner, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/science/xenobiology) @@ -74885,7 +74885,7 @@ /turf/open/floor/plating, /area/security/checkpoint/science/research) "ddY" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -32 }, @@ -74950,7 +74950,7 @@ /obj/item/stock_parts/capacitor, /obj/item/stock_parts/manipulator, /obj/item/stock_parts/manipulator, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -76053,7 +76053,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -76728,7 +76728,7 @@ /turf/open/floor/plasteel/neutral, /area/science/research) "dhZ" = ( -/obj/item/device/beacon, +/obj/item/beacon, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -76964,7 +76964,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/item/device/beacon, +/obj/item/beacon, /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/whiteblue, /area/medical/medbay/central) @@ -77273,7 +77273,7 @@ /area/crew_quarters/abandoned_gambling_den) "djn" = ( /obj/structure/table/reinforced, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/screwdriver, /obj/machinery/computer/security/telescreen{ desc = "Used for watching the RD's goons from the safety of his office."; @@ -77389,7 +77389,7 @@ "djB" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/mechanical, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/turf_decal/bot, /obj/structure/sign/poster/official/science{ pixel_x = -32 @@ -77731,7 +77731,7 @@ /obj/structure/cable/white{ icon_state = "1-4" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -78070,7 +78070,7 @@ "dkT" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table/wood, -/obj/item/device/modular_computer/tablet/preset/cheap, +/obj/item/modular_computer/tablet/preset/cheap, /turf/open/floor/plating, /area/maintenance/starboard/aft) "dkU" = ( @@ -78289,7 +78289,7 @@ pixel_y = 3 }, /obj/item/stack/cable_coil/white, -/obj/item/device/geiger_counter, +/obj/item/geiger_counter, /obj/effect/turf_decal/bot, /obj/structure/sign/poster/official/cleanliness{ pixel_x = 32 @@ -78913,7 +78913,7 @@ "dmS" = ( /obj/structure/table/reinforced, /obj/item/folder/white, -/obj/item/device/paicard, +/obj/item/paicard, /obj/machinery/airalarm{ dir = 4; pixel_x = -23 @@ -78983,7 +78983,7 @@ dir = 4; pixel_x = -23 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -79329,7 +79329,7 @@ "dnN" = ( /obj/structure/table, /obj/item/storage/toolbox/mechanical, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/hallway/secondary/construction) @@ -79474,7 +79474,7 @@ /area/crew_quarters/abandoned_gambling_den) "dog" = ( /obj/structure/table/reinforced, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -79666,7 +79666,7 @@ /obj/item/stack/sheet/mineral/plasma{ amount = 5 }, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -79864,7 +79864,7 @@ /area/crew_quarters/heads/hor) "doM" = ( /obj/structure/table/reinforced, -/obj/item/device/aicard, +/obj/item/aicard, /obj/item/circuitboard/aicore, /obj/structure/disposalpipe/sorting/mail{ dir = 4; @@ -80573,7 +80573,7 @@ "dqn" = ( /obj/structure/table/reinforced, /obj/item/book/manual/experimentor, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -80961,7 +80961,7 @@ /area/maintenance/department/medical) "dqY" = ( /obj/structure/rack, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/item/clothing/glasses/eyepatch, /turf/open/floor/plating{ icon_state = "panelscorched" @@ -81172,7 +81172,7 @@ /area/crew_quarters/abandoned_gambling_den) "drz" = ( /obj/structure/table/reinforced, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/screwdriver, /obj/machinery/computer/security/telescreen{ desc = "Used for watching the RD's goons from the safety of his office."; @@ -81553,7 +81553,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -82021,7 +82021,7 @@ "dtz" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/disposalpipe/segment, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -82350,9 +82350,9 @@ /area/crew_quarters/abandoned_gambling_den) "duk" = ( /obj/structure/table/wood, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/timer{ +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/timer{ pixel_x = 3; pixel_y = 3 }, @@ -82380,8 +82380,8 @@ /area/science/research/abandoned) "duo" = ( /obj/structure/table/reinforced, -/obj/item/device/mmi, -/obj/item/device/assembly/prox_sensor, +/obj/item/mmi, +/obj/item/assembly/prox_sensor, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/science/research/abandoned) @@ -82420,7 +82420,7 @@ /obj/structure/table/reinforced, /obj/item/stack/sheet/metal/fifty, /obj/item/stack/sheet/glass/fifty, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/science/research/abandoned) @@ -82514,7 +82514,7 @@ /turf/open/floor/plasteel/neutral, /area/science/mixing) "duH" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = 26 @@ -82771,7 +82771,7 @@ /area/medical/genetics) "dvj" = ( /obj/structure/table/reinforced, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -82897,7 +82897,7 @@ "dvu" = ( /obj/structure/table/glass, /obj/item/folder/white, -/obj/item/device/flashlight/pen, +/obj/item/flashlight/pen, /obj/item/clothing/neck/stethoscope, /turf/open/floor/plasteel/cmo, /area/crew_quarters/heads/cmo) @@ -82910,7 +82910,7 @@ /obj/structure/table/glass, /obj/item/folder/blue, /obj/item/clothing/glasses/hud/health, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -83129,7 +83129,7 @@ /area/hallway/secondary/construction) "dvO" = ( /obj/structure/table, -/obj/item/device/analyzer{ +/obj/item/analyzer{ pixel_x = 7; pixel_y = 3 }, @@ -83149,7 +83149,7 @@ /obj/structure/rack, /obj/effect/decal/cleanable/dirt, /obj/item/weldingtool, -/obj/item/device/assembly/voice, +/obj/item/assembly/voice, /obj/item/clothing/head/welding, /obj/effect/spawner/lootdrop/maintenance, /obj/effect/turf_decal/stripes/line{ @@ -83362,11 +83362,11 @@ icon_state = "4-8" }, /obj/item/storage/secure/briefcase, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/machinery/newscaster{ pixel_y = -32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26; pixel_y = -26 @@ -83927,7 +83927,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -84561,7 +84561,7 @@ /obj/machinery/computer/med_data{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -84686,7 +84686,7 @@ /area/hallway/secondary/construction) "dyR" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -84731,7 +84731,7 @@ /area/crew_quarters/abandoned_gambling_den) "dyY" = ( /obj/structure/table/wood/poker, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) "dyZ" = ( @@ -85041,15 +85041,15 @@ /area/science/robotics/lab) "dzG" = ( /obj/item/paper_bin, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 5; pixel_y = 7 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 5; pixel_y = 7 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 5; pixel_y = 7 }, @@ -85182,7 +85182,7 @@ /obj/structure/table/reinforced, /obj/item/storage/box/monkeycubes, /obj/item/storage/box/monkeycubes, -/obj/item/device/radio/headset/headset_medsci, +/obj/item/radio/headset/headset_medsci, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -85236,7 +85236,7 @@ name = "medbay camera" }, /obj/item/clipboard, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/structure/table, /turf/open/floor/plasteel/whiteblue/corner, /area/medical/medbay/central) @@ -85299,7 +85299,7 @@ }, /area/crew_quarters/heads/cmo) "dAg" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -85356,7 +85356,7 @@ /obj/structure/cable/white{ icon_state = "2-4" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -85684,7 +85684,7 @@ }, /area/medical/genetics) "dAT" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -85930,7 +85930,7 @@ /area/medical/medbay/central) "dBr" = ( /obj/item/folder/white, -/obj/item/device/flashlight/pen, +/obj/item/flashlight/pen, /obj/item/clothing/neck/stethoscope, /obj/structure/table, /turf/open/floor/plasteel/vault, @@ -86281,16 +86281,16 @@ /area/maintenance/port) "dCa" = ( /obj/structure/table/reinforced, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -32 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 6; pixel_y = 6 }, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter, +/obj/item/assembly/igniter{ pixel_x = -6; pixel_y = -6 }, @@ -86389,11 +86389,11 @@ /area/crew_quarters/heads/hor) "dCm" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/newscaster{ pixel_y = -32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -86421,8 +86421,8 @@ /obj/item/bodypart/l_arm/robot{ pixel_x = -3 }, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/structure/table/reinforced, /obj/machinery/light_switch{ pixel_x = -38; @@ -86431,10 +86431,10 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/science/robotics/lab) @@ -86674,7 +86674,7 @@ /obj/structure/closet/crate{ icon_state = "crateopen" }, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -86806,7 +86806,7 @@ amount = 23 }, /obj/item/stack/cable_coil/white, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/science/research/abandoned) @@ -86858,19 +86858,19 @@ /turf/open/floor/plasteel/neutral, /area/maintenance/port) "dDn" = ( -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -4; pixel_y = 1 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 8; pixel_y = 9 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 9; pixel_y = -2 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_y = 2 }, /obj/structure/table/reinforced, @@ -86883,19 +86883,19 @@ /turf/open/floor/plasteel, /area/science/mixing) "dDo" = ( -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 5; pixel_y = 4 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = -4; pixel_y = 2 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 6; pixel_y = -4 }, -/obj/item/device/assembly/timer, +/obj/item/assembly/timer, /obj/structure/table/reinforced, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/stripes/line{ @@ -86971,7 +86971,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -87294,7 +87294,7 @@ /area/medical/medbay/central) "dEe" = ( /obj/item/twohanded/required/kirbyplants/random, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -87375,18 +87375,18 @@ }, /area/maintenance/port) "dEq" = ( -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve{ pixel_x = -5 }, -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve{ pixel_x = -5 }, -/obj/item/device/transfer_valve, -/obj/item/device/transfer_valve, -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve, +/obj/item/transfer_valve, +/obj/item/transfer_valve{ pixel_x = 5 }, -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve{ pixel_x = 5 }, /obj/structure/table/reinforced, @@ -87467,7 +87467,7 @@ /turf/open/floor/plasteel, /area/science/storage) "dEy" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -87550,9 +87550,9 @@ /obj/item/storage/firstaid, /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/bot, -/obj/item/device/healthanalyzer, -/obj/item/device/healthanalyzer, -/obj/item/device/paicard, +/obj/item/healthanalyzer, +/obj/item/healthanalyzer, +/obj/item/paicard, /turf/open/floor/plasteel, /area/science/robotics/lab) "dEI" = ( @@ -87686,7 +87686,7 @@ /obj/structure/table, /obj/effect/decal/cleanable/dirt, /obj/item/storage/backpack/duffelbag/med, -/obj/item/device/flashlight/pen, +/obj/item/flashlight/pen, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) "dFe" = ( @@ -87805,7 +87805,7 @@ /area/crew_quarters/theatre/abandoned) "dFs" = ( /obj/structure/table/wood, -/obj/item/device/instrument/guitar, +/obj/item/instrument/guitar, /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plasteel/vault{ dir = 5 @@ -87853,7 +87853,7 @@ pixel_y = 3 }, /obj/item/book/manual/detective, -/obj/item/device/camera/detective, +/obj/item/camera/detective, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -87872,7 +87872,7 @@ /obj/structure/chair/office/dark{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26; pixel_y = 32 @@ -87963,18 +87963,18 @@ /turf/closed/wall, /area/science/mixing) "dFI" = ( -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_y = 8 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = -8; pixel_y = 5 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = 6; pixel_y = 5 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = -2; pixel_y = -2 }, @@ -88839,7 +88839,7 @@ /obj/item/screwdriver{ pixel_y = 5 }, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/clothing/head/welding, /obj/machinery/light{ dir = 8 @@ -89269,7 +89269,7 @@ icon_state = "1-2" }, /obj/effect/landmark/blobstart, -/obj/item/device/beacon, +/obj/item/beacon, /obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -89524,7 +89524,7 @@ /obj/item/stock_parts/cell/high, /obj/item/stock_parts/cell/high, /obj/machinery/cell_charger, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -89559,9 +89559,9 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/item/device/mmi, -/obj/item/device/mmi, -/obj/item/device/mmi, +/obj/item/mmi, +/obj/item/mmi, +/obj/item/mmi, /obj/structure/sign/departments/medbay/alt{ pixel_y = -32 }, @@ -89742,7 +89742,7 @@ /turf/open/floor/plasteel/cmo, /area/crew_quarters/heads/cmo) "dJj" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -89761,7 +89761,7 @@ /area/crew_quarters/heads/cmo) "dJl" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/structure/sign/nanotrasen{ pixel_x = 32 }, @@ -90102,7 +90102,7 @@ "dJW" = ( /obj/machinery/disposal/bin, /obj/effect/decal/cleanable/dirt, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -32 }, @@ -90326,7 +90326,7 @@ /area/crew_quarters/theatre/abandoned) "dKs" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/airalarm{ dir = 4; pixel_x = -23 @@ -90355,7 +90355,7 @@ /obj/structure/table/wood, /obj/item/clothing/gloves/color/black, /obj/item/storage/box/evidence, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/machinery/airalarm{ dir = 8; pixel_x = 24 @@ -90959,7 +90959,7 @@ /turf/open/floor/plating/airless, /area/science/test_area) "dLF" = ( -/obj/item/device/beacon, +/obj/item/beacon, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/airless, /area/science/test_area) @@ -91146,7 +91146,7 @@ /area/science/research) "dMe" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -91708,7 +91708,7 @@ /turf/open/floor/plating, /area/crew_quarters/theatre/abandoned) "dNh" = ( -/obj/item/device/instrument/violin, +/obj/item/instrument/violin, /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -92322,7 +92322,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -93087,7 +93087,7 @@ pixel_x = -32 }, /obj/item/paper_bin, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -93170,7 +93170,7 @@ "dQw" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/carpet, /area/library/abandoned) "dQx" = ( @@ -93329,7 +93329,7 @@ /turf/open/floor/plasteel/neutral, /area/hallway/primary/aft) "dQR" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/neutral, /area/hallway/primary/aft) "dQU" = ( @@ -93580,7 +93580,7 @@ pixel_y = 32 }, /obj/structure/table/glass, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -93603,7 +93603,7 @@ dir = 8; pixel_y = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -93885,7 +93885,7 @@ dir = 8 }, /obj/item/crowbar, -/obj/item/device/radio, +/obj/item/radio, /obj/structure/sign/poster/official/do_not_question{ pixel_y = -32 }, @@ -94550,7 +94550,7 @@ /obj/structure/table/wood, /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/effect/decal/cleanable/dirt, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plating, /area/library/abandoned) "dTv" = ( @@ -94884,7 +94884,7 @@ /area/chapel/main) "dUq" = ( /obj/item/twohanded/required/kirbyplants/random, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -95092,7 +95092,7 @@ /obj/structure/closet/crate{ icon_state = "crateopen" }, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, @@ -95205,7 +95205,7 @@ icon_state = "1-2" }, /obj/item/clothing/gloves/color/latex, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/item/clothing/glasses/hud/health, /obj/effect/turf_decal/stripes/corner, /turf/open/floor/plasteel, @@ -95262,7 +95262,7 @@ /area/medical/virology) "dVz" = ( /obj/structure/closet/crate/freezer/blood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -95280,7 +95280,7 @@ }, /area/medical/virology) "dVC" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -95369,7 +95369,7 @@ /obj/structure/table, /obj/item/wrench, /obj/item/crowbar, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -96351,7 +96351,7 @@ }, /obj/item/stack/packageWrap, /obj/item/hand_labeler, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -96365,7 +96365,7 @@ "dYj" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plating, /area/library/abandoned) "dYk" = ( @@ -96434,7 +96434,7 @@ /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /turf/open/floor/plasteel/dark, /area/library/abandoned) "dYu" = ( @@ -97325,7 +97325,7 @@ }, /area/chapel/office) "eav" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -97460,7 +97460,7 @@ }, /area/medical/virology) "eaR" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -97975,7 +97975,7 @@ /area/chapel/main) "ebW" = ( /obj/structure/table/wood/fancy, -/obj/item/device/flashlight/lantern, +/obj/item/flashlight/lantern, /turf/open/floor/plasteel/grimy, /area/chapel/main) "ebX" = ( @@ -98105,7 +98105,7 @@ }, /obj/item/stack/cable_coil/white, /obj/item/stack/cable_coil/white, -/obj/item/device/multitool, +/obj/item/multitool, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault{ dir = 5 @@ -98313,7 +98313,7 @@ }, /obj/effect/decal/cleanable/dirt, /obj/item/tank/internals/oxygen, -/obj/item/device/radio, +/obj/item/radio, /obj/item/clothing/mask/breath, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -98530,7 +98530,7 @@ }, /obj/effect/decal/cleanable/dirt, /obj/item/tank/internals/oxygen, -/obj/item/device/radio, +/obj/item/radio, /obj/item/clothing/mask/breath, /turf/open/floor/plating, /area/maintenance/port/aft) @@ -98883,11 +98883,11 @@ pixel_x = 26 }, /obj/item/storage/toolbox/mechanical, -/obj/item/device/flashlight, +/obj/item/flashlight, /turf/open/floor/plating, /area/maintenance/port/aft) "edS" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -99128,8 +99128,8 @@ /area/maintenance/port/aft) "eev" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, -/obj/item/device/radio/intercom{ +/obj/item/flashlight/lamp, +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -99169,11 +99169,11 @@ /area/chapel/office) "eez" = ( /obj/structure/table/wood, -/obj/item/device/camera_film{ +/obj/item/camera_film{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/camera_film, +/obj/item/camera_film, /obj/machinery/firealarm{ dir = 4; pixel_x = 24 @@ -99213,7 +99213,7 @@ /area/chapel/office) "eeD" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -99542,7 +99542,7 @@ }, /obj/item/crowbar, /obj/item/wrench, -/obj/item/device/radio, +/obj/item/radio, /turf/open/floor/plasteel/red/side{ dir = 8 }, @@ -99921,7 +99921,7 @@ }, /obj/item/restraints/handcuffs, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/red/side, /area/security/checkpoint/escape) "egq" = ( @@ -100074,7 +100074,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "ehG" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -100242,9 +100242,9 @@ /area/quartermaster/storage) "hic" = ( /obj/structure/table/reinforced, -/obj/item/device/integrated_electronics/analyzer, -/obj/item/device/integrated_electronics/debugger, -/obj/item/device/integrated_electronics/wirer, +/obj/item/integrated_electronics/analyzer, +/obj/item/integrated_electronics/debugger, +/obj/item/integrated_electronics/wirer, /turf/open/floor/plasteel/white/side{ dir = 10 }, @@ -100353,7 +100353,7 @@ pixel_y = 32; receive_ore_updates = 1 }, -/obj/item/device/integrated_circuit_printer, +/obj/item/integrated_circuit_printer, /turf/open/floor/plasteel/white/side, /area/science/circuit) "jqM" = ( @@ -100539,7 +100539,7 @@ /obj/machinery/newscaster{ pixel_y = -32 }, -/obj/item/device/integrated_circuit_printer, +/obj/item/integrated_circuit_printer, /turf/open/floor/plasteel/white/side{ dir = 1 }, @@ -100569,9 +100569,9 @@ /area/science/research/abandoned) "qhc" = ( /obj/structure/table/reinforced, -/obj/item/device/integrated_electronics/analyzer, -/obj/item/device/integrated_electronics/debugger, -/obj/item/device/integrated_electronics/wirer, +/obj/item/integrated_electronics/analyzer, +/obj/item/integrated_electronics/debugger, +/obj/item/integrated_electronics/wirer, /turf/open/floor/plasteel/white/side{ dir = 9 }, diff --git a/_maps/cit_map_files/MetaStation/MetaStation.dmm b/_maps/cit_map_files/MetaStation/MetaStation.dmm index 1a439712be..75a2b92364 100644 --- a/_maps/cit_map_files/MetaStation/MetaStation.dmm +++ b/_maps/cit_map_files/MetaStation/MetaStation.dmm @@ -287,7 +287,7 @@ /area/security/prison) "aaT" = ( /obj/machinery/hydroponics/constructable, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/machinery/airalarm{ dir = 8; pixel_x = 24 @@ -688,7 +688,7 @@ /obj/item/clothing/glasses/sunglasses/blindfold, /obj/item/clothing/mask/muzzle, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/electropack, +/obj/item/electropack, /turf/open/floor/plasteel/dark, /area/security/execution/education) "abX" = ( @@ -1012,7 +1012,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; @@ -1181,7 +1181,7 @@ pixel_y = 26; req_access_txt = "2" }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = -3; pixel_y = 2 }, @@ -1213,11 +1213,11 @@ /obj/item/folder/red{ pixel_x = 3 }, -/obj/item/device/taperecorder{ +/obj/item/taperecorder{ pixel_x = -3 }, /obj/item/storage/fancy/cigarettes, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/item/reagent_containers/spray/pepper, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -1358,7 +1358,7 @@ /area/crew_quarters/fitness/recreation) "adm" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/structure/reagent_dispensers/peppertank{ pixel_x = -29 }, @@ -1536,7 +1536,7 @@ /turf/open/space, /area/space/nearstation) "adJ" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -1865,7 +1865,7 @@ "aer" = ( /obj/structure/rack, /obj/item/gun/energy/ionrifle{ - pin = /obj/item/device/firing_pin + pin = /obj/item/firing_pin }, /obj/machinery/light{ dir = 1 @@ -2383,7 +2383,7 @@ dir = 4; pixel_x = -22 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -2661,7 +2661,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -2749,7 +2749,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "afZ" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -2855,7 +2855,7 @@ /area/crew_quarters/heads/hos) "agh" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/carpet, /area/crew_quarters/heads/hos) @@ -3073,7 +3073,7 @@ "agF" = ( /obj/structure/rack, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -3281,10 +3281,10 @@ /area/crew_quarters/heads/hos) "ahb" = ( /obj/structure/table/wood, -/obj/item/device/taperecorder{ +/obj/item/taperecorder{ pixel_x = -4 }, -/obj/item/device/radio/off{ +/obj/item/radio/off{ pixel_y = 3 }, /turf/open/floor/plasteel/dark, @@ -3386,7 +3386,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -4748,7 +4748,7 @@ pixel_y = -2 }, /obj/item/dice/d8, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/fore) @@ -4763,7 +4763,7 @@ /area/security/brig) "aku" = ( /obj/structure/table, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -4779,7 +4779,7 @@ pixel_x = -4; pixel_y = 2 }, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /turf/open/floor/plasteel/whitered/side{ dir = 1 }, @@ -4950,7 +4950,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -5239,7 +5239,7 @@ c_tag = "Holodeck"; dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -6064,7 +6064,7 @@ name = "windoor" }, /obj/item/book/manual/wiki/engineering_hacking, -/obj/item/device/tape/random, +/obj/item/tape/random, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/fore) @@ -6655,7 +6655,7 @@ }, /obj/structure/rack, /obj/item/storage/firstaid/regular, -/obj/item/device/healthanalyzer{ +/obj/item/healthanalyzer{ pixel_y = -2 }, /obj/machinery/camera{ @@ -6784,7 +6784,7 @@ "aoC" = ( /obj/structure/table, /obj/item/restraints/handcuffs, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel, /area/security/main) "aoD" = ( @@ -7294,7 +7294,7 @@ /area/maintenance/port/fore) "apD" = ( /obj/item/storage/box/lights/mixed, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, @@ -7456,7 +7456,7 @@ "apW" = ( /obj/structure/table, /obj/item/folder/red, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel, /area/security/main) "apY" = ( @@ -7549,7 +7549,7 @@ /area/crew_quarters/fitness/recreation) "aqk" = ( /obj/machinery/vending/coffee, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -7597,7 +7597,7 @@ }, /area/maintenance/starboard) "aqs" = ( -/obj/item/device/mmi{ +/obj/item/mmi{ name = "man-machine interface" }, /obj/structure/rack, @@ -7700,7 +7700,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -7861,7 +7861,7 @@ /obj/structure/closet/crate, /obj/item/restraints/handcuffs, /obj/item/bodybag, -/obj/item/device/radio, +/obj/item/radio, /obj/effect/spawner/lootdrop/maintenance{ lootcount = 3; name = "3maintenance loot spawner" @@ -8623,7 +8623,7 @@ /obj/structure/cable/yellow{ icon_state = "2-8" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 29; @@ -8819,7 +8819,7 @@ pixel_y = 7 }, /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -9594,7 +9594,7 @@ /area/maintenance/starboard/fore) "auy" = ( /obj/item/stack/sheet/cardboard, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, @@ -9841,7 +9841,7 @@ }, /area/security/brig) "avd" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -10554,7 +10554,7 @@ /area/security/brig) "awx" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/dark, /area/security/brig) "awy" = ( @@ -11026,8 +11026,8 @@ "axz" = ( /obj/structure/table, /obj/item/folder/red, -/obj/item/device/taperecorder, -/obj/item/device/radio/intercom{ +/obj/item/taperecorder, +/obj/item/radio/intercom{ anyai = 1; broadcasting = 1; freerange = 1; @@ -11730,7 +11730,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -11752,11 +11752,11 @@ /area/quartermaster/miningoffice) "azm" = ( /obj/structure/closet/crate, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, @@ -12093,7 +12093,7 @@ network = list("prison"); pixel_y = 30 }, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -12197,7 +12197,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -12348,7 +12348,7 @@ }, /area/engine/engineering) "aAr" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -12395,7 +12395,7 @@ /area/engine/engineering) "aAz" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -13093,7 +13093,7 @@ /turf/open/floor/plasteel, /area/quartermaster/miningoffice) "aBX" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -13339,11 +13339,11 @@ /obj/structure/cable/yellow{ icon_state = "0-4" }, -/obj/item/device/taperecorder{ +/obj/item/taperecorder{ pixel_x = 3 }, /obj/item/storage/box/evidence, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, /turf/open/floor/plasteel/grimy, /area/security/detectives_office) "aCt" = ( @@ -13508,7 +13508,7 @@ /area/maintenance/starboard/fore) "aCN" = ( /obj/structure/reagent_dispensers/fueltank, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_x = -30 }, @@ -13878,7 +13878,7 @@ c_tag = "Brig - Desk"; dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -13897,7 +13897,7 @@ dir = 8 }, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/camera/detective, +/obj/item/camera/detective, /turf/open/floor/plasteel/grimy, /area/security/detectives_office) "aDJ" = ( @@ -13917,7 +13917,7 @@ /area/security/detectives_office) "aDL" = ( /obj/machinery/light/small, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -14502,7 +14502,7 @@ /obj/structure/cable/yellow{ icon_state = "2-4" }, -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/machinery/door/poddoor/shutters/preopen{ id = "briglockdown"; name = "brig shutters" @@ -15123,7 +15123,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -15187,7 +15187,7 @@ }, /area/hallway/primary/fore) "aGo" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/red/corner{ dir = 2 }, @@ -16009,7 +16009,7 @@ /turf/open/floor/plating, /area/quartermaster/storage) "aIh" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = -28; @@ -16245,7 +16245,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 2 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -16424,7 +16424,7 @@ /turf/open/floor/plasteel, /area/security/courtroom) "aIN" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -16480,7 +16480,7 @@ /area/security/courtroom) "aIU" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -16867,7 +16867,7 @@ /area/security/courtroom) "aJZ" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; dir = 8; listening = 0; @@ -16921,7 +16921,7 @@ /obj/structure/chair/office/dark{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = -28 @@ -17042,7 +17042,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/reagent_containers/glass/bucket, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, @@ -17307,7 +17307,7 @@ "aLf" = ( /obj/structure/table, /obj/item/clothing/gloves/color/fyellow, -/obj/item/device/gps{ +/obj/item/gps{ gpstag = "AUX0" }, /turf/open/floor/plasteel/brown{ @@ -17378,10 +17378,10 @@ /area/storage/primary) "aLm" = ( /obj/structure/table, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/signaler, -/obj/item/device/multitool, -/obj/item/device/multitool{ +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, +/obj/item/multitool, +/obj/item/multitool{ pixel_x = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -17586,7 +17586,7 @@ "aLP" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible, /obj/machinery/portable_atmospherics/scrubber, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -17915,7 +17915,7 @@ /area/ai_monitored/turret_protected/ai_upload) "aMJ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -18191,7 +18191,7 @@ /obj/item/stack/sheet/mineral/plasma{ amount = 30 }, -/obj/item/device/gps, +/obj/item/gps, /turf/open/floor/plating, /area/engine/engineering) "aNq" = ( @@ -18486,11 +18486,11 @@ /area/storage/primary) "aNY" = ( /obj/structure/table, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = -4; pixel_y = -4 }, -/obj/item/device/assembly/igniter, +/obj/item/assembly/igniter, /obj/item/screwdriver{ pixel_y = 16 }, @@ -18589,7 +18589,7 @@ /turf/open/floor/plasteel/neutral/side, /area/security/courtroom) "aOj" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/neutral/side, /area/security/courtroom) "aOk" = ( @@ -18620,7 +18620,7 @@ /turf/open/floor/plasteel, /area/security/courtroom) "aOn" = ( -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/item/cartridge/lawyer, /obj/structure/table/wood, /obj/machinery/button/door{ @@ -19128,7 +19128,7 @@ "aPr" = ( /obj/structure/table, /obj/item/wirecutters, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, @@ -19365,7 +19365,7 @@ /turf/open/floor/grass, /area/hydroponics/garden) "aPR" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -19584,7 +19584,7 @@ pixel_x = -4; pixel_y = 7 }, -/obj/item/device/gps{ +/obj/item/gps{ gpstag = "QM0" }, /turf/open/floor/plasteel, @@ -19625,13 +19625,13 @@ /area/storage/primary) "aQy" = ( /obj/structure/table, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 }, /obj/item/clothing/gloves/color/yellow, -/obj/item/device/t_scanner, +/obj/item/t_scanner, /turf/open/floor/plasteel/brown{ dir = 4 }, @@ -19678,7 +19678,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/ai_upload) "aQC" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; name = "Private AI Channel"; @@ -19906,7 +19906,7 @@ /area/crew_quarters/locker) "aQY" = ( /obj/structure/table, -/obj/item/device/paicard, +/obj/item/paicard, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -20157,7 +20157,7 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -20187,7 +20187,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -20393,7 +20393,7 @@ /obj/item/cultivator, /obj/item/crowbar, /obj/item/reagent_containers/glass/bucket, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -20429,7 +20429,7 @@ /obj/item/storage/bag/plants/portaseeder, /obj/structure/table, /obj/machinery/light, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -20566,7 +20566,7 @@ /obj/item/book/manual/wiki/engineering_construction, /obj/item/clothing/gloves/color/yellow, /obj/structure/table/glass, -/obj/item/device/flashlight, +/obj/item/flashlight, /turf/open/floor/plasteel, /area/engine/engineering) "aSB" = ( @@ -20874,7 +20874,7 @@ /turf/open/floor/plasteel/dark, /area/security/courtroom) "aTm" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -20971,7 +20971,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -21308,7 +21308,7 @@ /obj/item/screwdriver{ pixel_y = 10 }, -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/machinery/light{ dir = 1 }, @@ -21367,7 +21367,7 @@ "aUs" = ( /obj/structure/table, /obj/item/crowbar, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, @@ -21416,7 +21416,7 @@ name = "AI Upload turret control"; pixel_y = 28 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; name = "Private AI Channel"; @@ -21854,7 +21854,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "aVv" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -22051,7 +22051,7 @@ /turf/open/floor/plasteel, /area/security/checkpoint/supply) "aVQ" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -22221,7 +22221,7 @@ /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-16" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -22852,7 +22852,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -23152,8 +23152,8 @@ pixel_y = -1 }, /obj/item/clothing/gloves/color/yellow, -/obj/item/device/t_scanner, -/obj/item/device/multitool, +/obj/item/t_scanner, +/obj/item/multitool, /turf/open/floor/plasteel/dark, /area/storage/tech) "aYj" = ( @@ -23201,20 +23201,20 @@ /area/storage/tech) "aYm" = ( /obj/structure/table, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, /obj/machinery/light/small{ dir = 1 }, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/radio/intercom{ +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -23224,12 +23224,12 @@ /area/storage/tech) "aYn" = ( /obj/structure/table, -/obj/item/device/aicard, +/obj/item/aicard, /obj/item/aiModule/reset, /turf/open/floor/plasteel/dark, /area/storage/tech) "aYo" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -23291,7 +23291,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aYt" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -23830,7 +23830,7 @@ /area/crew_quarters/heads/chief) "aZD" = ( /obj/structure/table/reinforced, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/neutral/corner{ dir = 2 }, @@ -23923,7 +23923,7 @@ /area/security/checkpoint/engineering) "aZM" = ( /obj/structure/table, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_y = 29 @@ -23958,7 +23958,7 @@ /area/library) "aZQ" = ( /obj/effect/landmark/start/ai/secondary, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; freerange = 1; listening = 0; @@ -23966,14 +23966,14 @@ pixel_x = -10; pixel_y = 22 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 1; listening = 1; name = "Common Channel"; pixel_x = -27 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -24060,7 +24060,7 @@ /area/ai_monitored/turret_protected/ai) "aZY" = ( /obj/effect/landmark/start/ai/secondary, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; freerange = 1; listening = 0; @@ -24068,14 +24068,14 @@ pixel_x = 10; pixel_y = 22 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 1; listening = 1; name = "Common Channel"; pixel_x = 27 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -24194,7 +24194,7 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "bal" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -24257,7 +24257,7 @@ }, /obj/item/stack/wrapping_paper, /obj/item/stack/wrapping_paper, -/obj/item/device/destTagger{ +/obj/item/destTagger{ pixel_x = 4; pixel_y = 3 }, @@ -24654,7 +24654,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -24718,7 +24718,7 @@ /area/storage/tools) "bbf" = ( /obj/structure/closet/toolcloset, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -24778,7 +24778,7 @@ c_tag = "Secure Tech Storage"; dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -24973,7 +24973,7 @@ /obj/item/screwdriver{ pixel_y = 10 }, -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/machinery/computer/security/telescreen{ dir = 4; name = "MiniSat Monitor"; @@ -25197,7 +25197,7 @@ /area/hallway/primary/port) "bcb" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -25277,7 +25277,7 @@ }, /obj/item/clothing/gloves/color/fyellow, /obj/item/clothing/suit/hazardvest, -/obj/item/device/multitool, +/obj/item/multitool, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel/yellow/side{ dir = 8 @@ -25404,7 +25404,7 @@ pixel_y = 16 }, /obj/item/wirecutters, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -25599,7 +25599,7 @@ }, /area/security/checkpoint/customs) "bcZ" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20 @@ -25892,11 +25892,11 @@ /area/maintenance/central) "bdH" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -27 @@ -26058,7 +26058,7 @@ /area/storage/tech) "bea" = ( /obj/structure/table, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/machinery/firealarm{ dir = 1; pixel_y = -24 @@ -26067,8 +26067,8 @@ /area/storage/tech) "beb" = ( /obj/structure/table, -/obj/item/device/analyzer, -/obj/item/device/healthanalyzer, +/obj/item/analyzer, +/obj/item/healthanalyzer, /obj/machinery/camera/autoname{ dir = 1 }, @@ -26080,7 +26080,7 @@ pixel_x = 1; pixel_y = -1 }, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/clothing/glasses/meson, /obj/machinery/light_switch{ pixel_y = -28 @@ -26115,7 +26115,7 @@ /obj/structure/disposalpipe/trunk{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -26632,7 +26632,7 @@ /turf/open/floor/plating, /area/maintenance/central) "bfp" = ( -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, @@ -27054,7 +27054,7 @@ pixel_x = 5; pixel_y = -1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -27100,8 +27100,8 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/closet, /obj/item/crowbar, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/radio, +/obj/item/assembly/flash/handheld, +/obj/item/radio, /turf/open/floor/plasteel/red/side{ dir = 10 }, @@ -27622,10 +27622,10 @@ /obj/item/storage/photo_album{ pixel_y = -4 }, -/obj/item/device/camera{ +/obj/item/camera{ pixel_y = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; freerange = 1; name = "Station Intercom (Captain)"; @@ -27962,7 +27962,7 @@ }, /area/engine/break_room) "bia" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -28227,7 +28227,7 @@ /area/quartermaster/sorting) "biJ" = ( /obj/structure/table, -/obj/item/device/destTagger{ +/obj/item/destTagger{ pixel_x = 4; pixel_y = 3 }, @@ -28243,7 +28243,7 @@ /obj/item/clipboard, /obj/item/folder/yellow, /obj/item/folder/yellow, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/pen/red, /turf/open/floor/plasteel/brown{ dir = 8 @@ -28325,7 +28325,7 @@ dir = 1 }, /obj/machinery/light/small, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = -28 @@ -28433,7 +28433,7 @@ /area/crew_quarters/heads/captain/private) "bjh" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -28860,7 +28860,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -28959,7 +28959,7 @@ /area/quartermaster/sorting) "bkk" = ( /obj/structure/filingcabinet/filingcabinet, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -29079,7 +29079,7 @@ /obj/machinery/newscaster{ pixel_x = 28 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -29152,8 +29152,8 @@ /area/hallway/primary/port) "bkw" = ( /obj/structure/table, -/obj/item/device/toner, -/obj/item/device/radio/intercom{ +/obj/item/toner, +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -29203,7 +29203,7 @@ }, /area/bridge) "bkD" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 29 @@ -29227,7 +29227,7 @@ }, /area/bridge) "bkF" = ( -/obj/item/device/beacon, +/obj/item/beacon, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -29420,7 +29420,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -29719,7 +29719,7 @@ pixel_x = -26; pixel_y = 3 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -29982,7 +29982,7 @@ }, /area/hallway/primary/central) "bmo" = ( -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -30029,7 +30029,7 @@ /turf/open/floor/plating, /area/maintenance/central) "bmt" = ( -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/effect/turf_decal/stripes/line{ dir = 4 }, @@ -30388,7 +30388,7 @@ /area/engine/break_room) "bnd" = ( /obj/structure/table/glass, -/obj/item/device/lightreplacer{ +/obj/item/lightreplacer{ pixel_y = 7 }, /obj/item/storage/belt/utility, @@ -30427,7 +30427,7 @@ pixel_x = -3; pixel_y = 5 }, -/obj/item/device/taperecorder{ +/obj/item/taperecorder{ pixel_x = -4 }, /turf/open/floor/plasteel, @@ -30758,7 +30758,7 @@ /area/hallway/secondary/entry) "bnN" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -30905,7 +30905,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -31000,7 +31000,7 @@ icon_state = "4-8" }, /obj/structure/table/wood, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/wood, /area/crew_quarters/heads/hop) "bon" = ( @@ -31160,7 +31160,7 @@ /obj/machinery/computer/communications{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; freerange = 1; name = "Station Intercom (Captain)"; @@ -31183,7 +31183,7 @@ /area/crew_quarters/heads/captain/private) "boJ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = -28 @@ -31659,7 +31659,7 @@ icon_state = "4-8" }, /obj/machinery/holopad, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat/foyer) "bpL" = ( @@ -32134,7 +32134,7 @@ /obj/machinery/vending/cart{ req_access_txt = "57" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -32187,8 +32187,8 @@ /area/bridge) "bqK" = ( /obj/structure/rack, -/obj/item/device/aicard, -/obj/item/device/radio/off, +/obj/item/aicard, +/obj/item/radio/off, /obj/machinery/computer/security/telescreen{ dir = 1; name = "MiniSat Monitor"; @@ -32234,16 +32234,16 @@ /turf/open/floor/plasteel/dark, /area/bridge) "bqP" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_y = -29 }, /obj/structure/rack, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/timer, +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, +/obj/item/assembly/timer, /turf/open/floor/plasteel/darkblue/side{ dir = 1 }, @@ -32257,7 +32257,7 @@ pixel_y = -3 }, /obj/item/wrench, -/obj/item/device/multitool, +/obj/item/multitool, /obj/machinery/newscaster{ pixel_y = -30 }, @@ -32454,7 +32454,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -32549,7 +32549,7 @@ }, /area/maintenance/starboard) "brs" = ( -/obj/item/device/assembly/prox_sensor, +/obj/item/assembly/prox_sensor, /obj/structure/cable/yellow{ icon_state = "4-8" }, @@ -32899,7 +32899,7 @@ /area/aisat) "brW" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -28 }, @@ -33032,7 +33032,7 @@ /area/ai_monitored/storage/satellite) "bsh" = ( /obj/structure/table, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -28 }, @@ -33060,7 +33060,7 @@ pixel_y = 3 }, /obj/item/storage/toolbox/mechanical, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plasteel/dark, /area/ai_monitored/storage/satellite) "bsj" = ( @@ -33085,7 +33085,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "bsm" = ( -/obj/item/device/beacon, +/obj/item/beacon, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/hallway/secondary/entry) @@ -33166,7 +33166,7 @@ }, /area/hallway/primary/port) "bsw" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -33527,7 +33527,7 @@ /obj/structure/table/wood, /obj/item/hand_tele, /obj/structure/window/reinforced, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = 27 @@ -33607,12 +33607,12 @@ /area/storage/art) "btm" = ( /obj/structure/table, -/obj/item/device/camera, +/obj/item/camera, /turf/open/floor/plasteel, /area/storage/art) "btn" = ( /obj/structure/table, -/obj/item/device/camera_film, +/obj/item/camera_film, /obj/machinery/firealarm{ dir = 4; pixel_x = 28 @@ -33756,7 +33756,7 @@ /turf/open/floor/plasteel, /area/engine/break_room) "btE" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -34192,7 +34192,7 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -26 @@ -34411,7 +34411,7 @@ }, /area/maintenance/starboard) "bvf" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 1; listening = 1; @@ -34419,14 +34419,14 @@ pixel_x = -27; pixel_y = -7 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_y = -27 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -34521,7 +34521,7 @@ /obj/structure/table/glass, /obj/item/wrench, /obj/item/crowbar, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, @@ -34580,7 +34580,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/item/device/radio/off{ +/obj/item/radio/off{ pixel_y = 4 }, /obj/item/screwdriver{ @@ -34628,14 +34628,14 @@ /obj/machinery/ai_status_display{ pixel_y = 31 }, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/grimy, /area/tcommsat/computer) "bvA" = ( /obj/machinery/light/small{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; freerange = 1; name = "Station Intercom (Telecomms)"; @@ -34859,7 +34859,7 @@ pixel_x = -32 }, /obj/effect/decal/cleanable/cobweb, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -34885,7 +34885,7 @@ /area/library) "bwf" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -35024,7 +35024,7 @@ /area/bridge) "bws" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -35035,7 +35035,7 @@ /obj/item/book/manual/wiki/security_space_law{ pixel_y = 3 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 28 @@ -35323,7 +35323,7 @@ /turf/open/floor/wood, /area/crew_quarters/bar) "bwU" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -35632,7 +35632,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -35875,7 +35875,7 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -26 @@ -36180,7 +36180,7 @@ /area/ai_monitored/storage/satellite) "byP" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/caution{ dir = 8 }, @@ -36191,7 +36191,7 @@ }, /area/hallway/primary/starboard) "byR" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -36654,7 +36654,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/command) "bzM" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -36674,7 +36674,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/command) "bzO" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -36829,7 +36829,7 @@ /turf/open/floor/carpet, /area/crew_quarters/heads/captain/private) "bAf" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = -26 @@ -37265,7 +37265,7 @@ /area/security/vacantoffice) "bBi" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/wood, /area/security/vacantoffice) "bBj" = ( @@ -37276,10 +37276,10 @@ /area/maintenance/starboard) "bBk" = ( /obj/structure/table/wood, -/obj/item/device/camera_film{ +/obj/item/camera_film{ pixel_y = 9 }, -/obj/item/device/camera_film{ +/obj/item/camera_film{ pixel_x = -3; pixel_y = 5 }, @@ -37329,7 +37329,7 @@ /area/crew_quarters/toilet/auxiliary) "bBq" = ( /obj/structure/rack, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port) @@ -37795,9 +37795,9 @@ "bCn" = ( /obj/structure/table, /obj/item/storage/belt/utility, -/obj/item/device/t_scanner, -/obj/item/device/t_scanner, -/obj/item/device/t_scanner, +/obj/item/t_scanner, +/obj/item/t_scanner, +/obj/item/t_scanner, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -38136,7 +38136,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -38258,7 +38258,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -39720,7 +39720,7 @@ /turf/open/floor/wood, /area/library) "bGv" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)" }, @@ -40348,7 +40348,7 @@ /area/library) "bHT" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -40430,7 +40430,7 @@ "bIe" = ( /obj/structure/table, /obj/item/hand_tele, -/obj/item/device/beacon, +/obj/item/beacon, /obj/machinery/airalarm{ dir = 4; pixel_x = -23 @@ -40579,7 +40579,7 @@ /obj/item/stack/sheet/metal/fifty, /obj/item/stack/rods/fifty, /obj/item/storage/toolbox/emergency, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/machinery/power/apc/highcap/five_k{ dir = 4; name = "Gateway APC"; @@ -40633,7 +40633,7 @@ /turf/open/floor/plasteel/bar, /area/crew_quarters/bar) "bIu" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -41016,7 +41016,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -41113,11 +41113,11 @@ /obj/structure/table, /obj/item/storage/belt/utility, /obj/item/storage/belt/utility, -/obj/item/device/radio/off, -/obj/item/device/radio/off, -/obj/item/device/radio/off, -/obj/item/device/radio/off, -/obj/item/device/multitool, +/obj/item/radio/off, +/obj/item/radio/off, +/obj/item/radio/off, +/obj/item/radio/off, +/obj/item/multitool, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "bJG" = ( @@ -41185,7 +41185,7 @@ }, /obj/item/stack/sheet/metal/fifty, /obj/item/storage/toolbox/emergency, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/structure/window/reinforced, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -41235,7 +41235,7 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/neutral/side{ dir = 2 }, @@ -41547,7 +41547,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bKy" = ( -/obj/item/device/beacon, +/obj/item/beacon, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 }, @@ -42262,7 +42262,7 @@ /area/engine/atmos) "bMe" = ( /obj/structure/reagent_dispensers/fueltank, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -42421,7 +42421,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -42586,8 +42586,8 @@ dir = 1 }, /obj/structure/table/wood, -/obj/item/device/taperecorder, -/obj/item/device/tape, +/obj/item/taperecorder, +/obj/item/tape, /turf/open/floor/wood, /area/library) "bMN" = ( @@ -42760,7 +42760,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -42870,7 +42870,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = 29 @@ -42918,7 +42918,7 @@ /area/maintenance/central) "bNt" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = -28 @@ -43980,7 +43980,7 @@ /area/library) "bPT" = ( /obj/structure/table/wood, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/wood, /area/library) "bPU" = ( @@ -44536,9 +44536,9 @@ /turf/open/floor/engine/cult, /area/library) "bRm" = ( -/obj/item/device/taperecorder, -/obj/item/device/camera, -/obj/item/device/radio/intercom{ +/obj/item/taperecorder, +/obj/item/camera, +/obj/item/radio/intercom{ pixel_y = -25 }, /obj/structure/table/wood, @@ -44552,7 +44552,7 @@ /area/library) "bRo" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -44811,9 +44811,9 @@ /area/gateway) "bRK" = ( /obj/item/storage/belt/utility, -/obj/item/device/radio/off, -/obj/item/device/radio/off, -/obj/item/device/radio/off, +/obj/item/radio/off, +/obj/item/radio/off, +/obj/item/radio/off, /obj/structure/rack, /obj/machinery/button/door{ id = "gateshutter"; @@ -44985,7 +44985,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -45272,7 +45272,7 @@ "bSC" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -45809,7 +45809,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -45936,7 +45936,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -46245,7 +46245,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bUC" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -46850,7 +46850,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -47643,7 +47643,7 @@ /area/maintenance/port) "bXy" = ( /obj/structure/closet, -/obj/item/device/flashlight, +/obj/item/flashlight, /turf/open/floor/plating, /area/maintenance/port/aft) "bXz" = ( @@ -47658,7 +47658,7 @@ /area/maintenance/port/aft) "bXA" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plating, /area/maintenance/port/aft) "bXB" = ( @@ -47701,7 +47701,7 @@ "bXH" = ( /obj/structure/closet/crate, /obj/item/coin/silver, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port) @@ -47979,9 +47979,9 @@ /obj/structure/rack, /obj/item/tank/internals/oxygen, /obj/item/tank/internals/oxygen, -/obj/item/device/radio/off, -/obj/item/device/radio/off, -/obj/item/device/radio/intercom{ +/obj/item/radio/off, +/obj/item/radio/off, +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = 27 @@ -48243,7 +48243,7 @@ }, /area/medical/storage) "bYV" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; freerange = 0; frequency = 1485; @@ -48332,7 +48332,7 @@ /obj/item/screwdriver{ pixel_y = 10 }, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel/red/side{ dir = 5 }, @@ -48487,7 +48487,7 @@ "bZs" = ( /obj/item/cultivator, /obj/item/crowbar, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/reagent_containers/glass/bucket, /obj/structure/table/glass, /turf/open/floor/plasteel/hydrofloor, @@ -48581,7 +48581,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 5 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -48969,14 +48969,14 @@ "caz" = ( /obj/structure/table, /obj/item/stack/cable_coil, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = -4; pixel_y = -4 }, /obj/item/screwdriver{ pixel_y = 16 }, -/obj/item/device/gps{ +/obj/item/gps{ gpstag = "RD0" }, /turf/open/floor/plasteel/whitepurple/side{ @@ -48987,7 +48987,7 @@ /obj/structure/table, /obj/item/stack/sheet/glass, /obj/item/electronics/airlock, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = -4; pixel_y = 2 }, @@ -49557,7 +49557,7 @@ "cbz" = ( /obj/structure/rack, /obj/item/stack/sheet/cardboard, -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/structure/light_construct{ dir = 1 }, @@ -49741,7 +49741,7 @@ network = list("medbay"); pixel_y = -29 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -27; @@ -49895,7 +49895,7 @@ /obj/item/screwdriver{ pixel_y = 10 }, -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 }, @@ -49935,7 +49935,7 @@ pixel_y = 12 }, /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -49956,7 +49956,7 @@ c_tag = "Hydroponics - Foyer"; dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = -25 }, /turf/open/floor/plasteel/vault, @@ -49989,7 +49989,7 @@ /area/hydroponics) "ccu" = ( /obj/machinery/hydroponics/constructable, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -50722,7 +50722,7 @@ }, /area/maintenance/starboard) "cdW" = ( -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/machinery/light/small{ dir = 4 }, @@ -50898,7 +50898,7 @@ pixel_y = -3 }, /obj/item/wrench, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/aft) @@ -51054,7 +51054,7 @@ /area/medical/medbay/central) "ceF" = ( /obj/structure/bed/roller, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 0; frequency = 1485; @@ -51162,7 +51162,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -51219,7 +51219,7 @@ /turf/open/floor/plasteel, /area/security/checkpoint/science/research) "ceX" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -52320,7 +52320,7 @@ /obj/item/crowbar, /obj/item/wrench, /obj/item/clothing/mask/gas, -/obj/item/device/multitool{ +/obj/item/multitool{ pixel_x = 3 }, /obj/effect/turf_decal/stripes/line{ @@ -52413,7 +52413,7 @@ pixel_y = 32 }, /obj/structure/table/glass, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel/cafeteria{ dir = 5 }, @@ -52462,7 +52462,7 @@ /turf/open/floor/plasteel/dark, /area/aisat) "chA" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = 25 }, /turf/open/floor/engine, @@ -52505,7 +52505,7 @@ /area/maintenance/starboard) "chF" = ( /obj/structure/closet, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -52515,7 +52515,7 @@ "chG" = ( /obj/structure/reagent_dispensers/fueltank, /obj/item/storage/toolbox/emergency, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -53097,7 +53097,7 @@ /turf/open/floor/engine, /area/science/explab) "ciT" = ( -/obj/item/device/beacon, +/obj/item/beacon, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, @@ -53358,7 +53358,7 @@ /area/medical/surgery) "cjE" = ( /obj/structure/bed/roller, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; freerange = 0; frequency = 1485; @@ -53539,35 +53539,35 @@ }, /area/medical/chemistry) "cjW" = ( -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = -3; pixel_y = 3 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = -3; pixel_y = 3 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 3; pixel_y = -7 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 3; pixel_y = -7 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 3; pixel_y = -7 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 3; pixel_y = -7 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = -3; pixel_y = 3 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = -3; pixel_y = 3 }, @@ -53702,7 +53702,7 @@ }, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/landmark/blobstart, /turf/open/floor/plating, /area/maintenance/starboard/aft) @@ -53748,7 +53748,7 @@ /area/science/research) "ckq" = ( /obj/machinery/vending/coffee, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -53787,7 +53787,7 @@ "ckv" = ( /obj/structure/closet/crate, /obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/item/device/assembly/infra, +/obj/item/assembly/infra, /obj/effect/spawner/lootdrop/maintenance, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, @@ -54119,7 +54119,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "clm" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; freerange = 0; frequency = 1485; @@ -54225,7 +54225,7 @@ pixel_x = -2; pixel_y = 6 }, -/obj/item/device/radio/headset/headset_med, +/obj/item/radio/headset/headset_med, /obj/structure/extinguisher_cabinet{ pixel_x = 24 }, @@ -54339,7 +54339,7 @@ /obj/machinery/shower{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_y = -28 @@ -54750,7 +54750,7 @@ }, /area/hallway/primary/aft) "cmF" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = -28 @@ -54894,7 +54894,7 @@ /obj/item/stack/packageWrap, /obj/item/stack/packageWrap, /obj/item/stack/packageWrap, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/stripes/line{ dir = 2 @@ -54941,7 +54941,7 @@ pixel_y = 6 }, /obj/item/stack/medical/ointment, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/effect/turf_decal/stripes/line{ dir = 2 }, @@ -55033,7 +55033,7 @@ /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "cnh" = ( -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/structure/table/wood, /turf/open/floor/wood, /area/maintenance/port/aft) @@ -55121,7 +55121,7 @@ /area/medical/surgery) "cnt" = ( /obj/structure/table/reinforced, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; freerange = 0; frequency = 1485; @@ -55311,7 +55311,7 @@ pixel_y = 4 }, /obj/item/clothing/glasses/science, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = -28 @@ -55554,7 +55554,7 @@ }, /area/science/research) "cog" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -55640,7 +55640,7 @@ /obj/item/clothing/mask/gas, /obj/item/clothing/mask/gas, /obj/item/clothing/glasses/science, -/obj/item/device/multitool{ +/obj/item/multitool{ pixel_x = 3 }, /turf/open/floor/plasteel/white, @@ -57016,7 +57016,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -57227,7 +57227,7 @@ /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; freerange = 0; frequency = 1485; @@ -57363,7 +57363,7 @@ /area/maintenance/aft) "crF" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -57660,7 +57660,7 @@ }, /area/medical/surgery) "csn" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; freerange = 0; frequency = 1485; @@ -57859,7 +57859,7 @@ network = list("medbay"); pixel_x = 29 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 1; name = "Station Intercom (General)"; pixel_y = -29 @@ -58640,7 +58640,7 @@ /obj/structure/closet, /obj/item/extinguisher, /obj/effect/decal/cleanable/cobweb, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/aft) @@ -58658,7 +58658,7 @@ /obj/structure/closet/crate, /obj/item/stack/cable_coil, /obj/item/grenade/chem_grenade, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance{ lootcount = 2; name = "2maintenance loot spawner" @@ -58781,7 +58781,7 @@ pixel_y = 3 }, /obj/item/storage/box/bodybags, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -58811,12 +58811,12 @@ dir = 1 }, /obj/item/storage/box/monkeycubes, -/obj/item/device/radio/headset/headset_medsci, -/obj/item/device/flashlight/pen{ +/obj/item/radio/headset/headset_medsci, +/obj/item/flashlight/pen{ pixel_x = 4; pixel_y = 3 }, -/obj/item/device/flashlight/pen{ +/obj/item/flashlight/pen{ pixel_x = 4; pixel_y = 3 }, @@ -59020,7 +59020,7 @@ /area/crew_quarters/heads/hor) "cuP" = ( /obj/structure/table, -/obj/item/device/aicard, +/obj/item/aicard, /obj/item/circuitboard/aicore{ pixel_x = -2; pixel_y = 4 @@ -59036,10 +59036,10 @@ /area/crew_quarters/heads/hor) "cuR" = ( /obj/structure/table, -/obj/item/device/taperecorder{ +/obj/item/taperecorder{ pixel_x = -3 }, -/obj/item/device/paicard{ +/obj/item/paicard{ pixel_x = 4 }, /obj/item/storage/secure/briefcase, @@ -59174,7 +59174,7 @@ /obj/structure/closet/crate, /obj/item/crowbar/red, /obj/item/pen, -/obj/item/device/flashlight/pen{ +/obj/item/flashlight/pen{ pixel_x = 4; pixel_y = 3 }, @@ -59276,7 +59276,7 @@ /obj/machinery/clonepod{ pixel_y = 2 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -59558,7 +59558,7 @@ /area/science/storage) "cvY" = ( /obj/machinery/portable_atmospherics/canister/toxins, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -59649,7 +59649,7 @@ "cwn" = ( /obj/structure/rack, /obj/item/clothing/glasses/sunglasses, -/obj/item/device/flashlight/pen, +/obj/item/flashlight/pen, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/aft) @@ -59822,7 +59822,7 @@ pixel_x = 2; pixel_y = 2 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -59888,7 +59888,7 @@ /area/science/robotics/mechbay) "cwJ" = ( /obj/machinery/computer/mech_bay_power_console, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -60027,7 +60027,7 @@ dir = 8; pixel_x = 24 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -60377,7 +60377,7 @@ /turf/open/floor/plating, /area/science/misc_lab/range) "cxJ" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -60756,7 +60756,7 @@ /turf/open/floor/plasteel, /area/science/mixing) "cyC" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = 25 }, /obj/machinery/atmospherics/components/unary/portables_connector/visible, @@ -61028,7 +61028,7 @@ /area/medical/genetics) "czf" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -61924,7 +61924,7 @@ /area/science/test_area) "cAS" = ( /obj/structure/chair/stool, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; freerange = 0; frequency = 1485; @@ -61996,7 +61996,7 @@ "cBa" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/disposalpipe/segment, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; freerange = 0; frequency = 1485; @@ -62059,7 +62059,7 @@ /area/science/robotics/mechbay) "cBj" = ( /obj/structure/table, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -62167,19 +62167,19 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "cBt" = ( -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -4; pixel_y = 1 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 8; pixel_y = 9 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 9; pixel_y = -2 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_y = 2 }, /obj/structure/table/reinforced, @@ -62362,7 +62362,7 @@ /turf/open/floor/plating/airless, /area/science/test_area) "cBO" = ( -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -62533,7 +62533,7 @@ /area/hallway/primary/aft) "cCm" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -62587,18 +62587,18 @@ /turf/open/floor/plasteel, /area/science/mixing) "cCu" = ( -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_y = 8 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = -8; pixel_y = 5 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = 6; pixel_y = 5 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = -2; pixel_y = -2 }, @@ -62609,18 +62609,18 @@ /turf/open/floor/plasteel, /area/science/mixing) "cCv" = ( -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve{ pixel_x = -5 }, -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve{ pixel_x = -5 }, -/obj/item/device/transfer_valve, -/obj/item/device/transfer_valve, -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve, +/obj/item/transfer_valve, +/obj/item/transfer_valve{ pixel_x = 5 }, -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve{ pixel_x = 5 }, /obj/machinery/requests_console{ @@ -62635,19 +62635,19 @@ /turf/open/floor/plasteel, /area/science/mixing) "cCw" = ( -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 5; pixel_y = 4 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = -4; pixel_y = 2 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 6; pixel_y = -4 }, -/obj/item/device/assembly/timer, +/obj/item/assembly/timer, /obj/structure/table/reinforced, /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -62656,7 +62656,7 @@ /area/science/mixing) "cCx" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -62710,19 +62710,19 @@ /area/science/mixing) "cCC" = ( /obj/structure/table, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = -5; pixel_y = 3 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 5; pixel_y = -4 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 2; pixel_y = 6 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 2; pixel_y = -1 }, @@ -62921,7 +62921,7 @@ /obj/structure/table, /obj/item/storage/box/bodybags, /obj/item/pen, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -62968,7 +62968,7 @@ /obj/machinery/mecha_part_fabricator{ dir = 2 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -63021,11 +63021,11 @@ pixel_x = -2; pixel_y = 4 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, @@ -63093,7 +63093,7 @@ /obj/structure/table, /obj/item/clothing/glasses/science, /obj/item/clothing/glasses/science, -/obj/item/device/multitool{ +/obj/item/multitool{ pixel_x = 3 }, /obj/effect/turf_decal/stripes/corner{ @@ -63148,7 +63148,7 @@ /turf/open/floor/plating/airless, /area/science/test_area) "cDx" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plating/airless, /area/science/test_area) "cDy" = ( @@ -63269,7 +63269,7 @@ /area/medical/virology) "cDJ" = ( /obj/item/clothing/gloves/color/latex, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/item/clothing/glasses/hud/health, /obj/structure/reagent_dispensers/virusfood{ pixel_y = 30 @@ -63629,13 +63629,13 @@ /obj/item/stack/sheet/plasteel{ amount = 10 }, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/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/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/machinery/ai_status_display{ pixel_x = 32 }, @@ -63927,7 +63927,7 @@ }, /area/medical/medbay/aft) "cES" = ( -/obj/item/device/healthanalyzer{ +/obj/item/healthanalyzer{ pixel_x = 1; pixel_y = 4 }, @@ -64063,7 +64063,7 @@ /obj/item/screwdriver{ pixel_y = 10 }, -/obj/item/device/multitool{ +/obj/item/multitool{ pixel_x = 3 }, /obj/item/stack/cable_coil, @@ -64155,11 +64155,11 @@ /area/science/mixing) "cFu" = ( /obj/structure/closet, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 2; pixel_y = -2 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = -2; pixel_y = 5 }, @@ -64175,7 +64175,7 @@ /turf/open/floor/plating/airless, /area/science/test_area) "cFw" = ( -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/effect/turf_decal/stripes/line{ dir = 2 }, @@ -64191,12 +64191,12 @@ /turf/open/floor/plating/airless, /area/science/test_area) "cFy" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_x = -28 }, /obj/structure/table/glass, /obj/item/hand_labeler, -/obj/item/device/radio/headset/headset_med, +/obj/item/radio/headset/headset_med, /obj/machinery/airalarm{ pixel_y = 23 }, @@ -64308,7 +64308,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_x = 28 }, /turf/open/floor/plasteel/whitegreen/side{ @@ -64389,7 +64389,7 @@ }, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -64969,7 +64969,7 @@ dir = 1 }, /obj/item/storage/backpack/duffelbag/med, -/obj/item/device/flashlight/pen{ +/obj/item/flashlight/pen{ pixel_x = 4; pixel_y = 3 }, @@ -64979,7 +64979,7 @@ /obj/structure/table, /obj/item/retractor, /obj/item/hemostat, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/item/clothing/glasses/eyepatch, /obj/item/reagent_containers/food/drinks/bottle/vodka{ pixel_x = 3; @@ -65056,19 +65056,19 @@ empty = 1; name = "First-Aid (empty)" }, -/obj/item/device/healthanalyzer{ +/obj/item/healthanalyzer{ pixel_x = 4; pixel_y = -4 }, -/obj/item/device/healthanalyzer{ +/obj/item/healthanalyzer{ pixel_x = 4; pixel_y = -4 }, -/obj/item/device/healthanalyzer{ +/obj/item/healthanalyzer{ pixel_x = 4; pixel_y = -4 }, -/obj/item/device/radio/headset/headset_sci{ +/obj/item/radio/headset/headset_sci{ pixel_x = -3 }, /obj/effect/turf_decal/delivery, @@ -65285,7 +65285,7 @@ /area/medical/virology) "cHw" = ( /obj/structure/closet/emcloset, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_x = -28 }, /obj/effect/turf_decal/stripes/line{ @@ -65670,7 +65670,7 @@ "cIh" = ( /obj/structure/closet, /obj/item/storage/box/lights/mixed, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/decal/cleanable/cobweb, /turf/open/floor/plating, /area/maintenance/starboard/aft) @@ -66000,7 +66000,7 @@ pixel_y = 5 }, /obj/item/clothing/glasses/welding, -/obj/item/device/multitool{ +/obj/item/multitool{ pixel_x = 3 }, /obj/effect/turf_decal/delivery, @@ -66029,7 +66029,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -66382,7 +66382,7 @@ /obj/structure/table, /obj/item/retractor, /obj/item/hemostat, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -66403,9 +66403,9 @@ /area/science/robotics/lab) "cJK" = ( /obj/structure/table, -/obj/item/device/mmi, -/obj/item/device/mmi, -/obj/item/device/mmi, +/obj/item/mmi, +/obj/item/mmi, +/obj/item/mmi, /obj/structure/window/reinforced{ dir = 4 }, @@ -66448,11 +66448,11 @@ maxcharge = 15000 }, /obj/item/crowbar, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, @@ -66495,7 +66495,7 @@ /turf/open/floor/plasteel/dark, /area/science/server) "cJS" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -66676,7 +66676,7 @@ }, /area/medical/virology) "cKm" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -66823,7 +66823,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = 25 }, /obj/effect/turf_decal/stripes/line{ @@ -67504,7 +67504,7 @@ /turf/open/floor/engine, /area/science/explab) "cLV" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = 25 }, /obj/machinery/firealarm{ @@ -67572,7 +67572,7 @@ pixel_x = 4 }, /obj/item/organ/heart, -/obj/item/device/soulstone/anybody/chaplain, +/obj/item/soulstone/anybody/chaplain, /turf/open/floor/plasteel/cult{ dir = 2 }, @@ -67817,7 +67817,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/office) "cME" = ( -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/newscaster{ pixel_x = -30 }, @@ -68111,7 +68111,7 @@ /area/maintenance/port/aft) "cNg" = ( /obj/structure/rack, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance, /obj/machinery/light/small, /turf/open/floor/plating, @@ -68155,7 +68155,7 @@ "cNk" = ( /obj/item/storage/bag/plants/portaseeder, /obj/item/storage/bag/plants/portaseeder, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/cultivator, /obj/item/reagent_containers/glass/bucket, /obj/structure/rack, @@ -68195,7 +68195,7 @@ /obj/machinery/hydroponics/soil{ pixel_y = 8 }, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/maintenance/starboard/aft) @@ -68254,7 +68254,7 @@ c_tag = "Chapel Office - Backroom"; dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -68296,7 +68296,7 @@ /turf/open/floor/plasteel/grimy, /area/chapel/office) "cNz" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1480; name = "Confessional Intercom"; @@ -68463,7 +68463,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/machinery/requests_console{ department = "Security"; departmentType = 5; @@ -68760,10 +68760,10 @@ pixel_x = -4; pixel_y = 4 }, -/obj/item/device/taperecorder{ +/obj/item/taperecorder{ pixel_x = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -68855,7 +68855,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/office) "cOL" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1480; name = "Confessional Intercom"; @@ -69148,7 +69148,7 @@ /area/maintenance/starboard/aft) "cPz" = ( /obj/structure/closet, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance{ lootcount = 3; name = "3maintenance loot spawner" @@ -69340,7 +69340,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/beacon, +/obj/item/beacon, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -69369,7 +69369,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -69444,7 +69444,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/main) "cQc" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -69634,7 +69634,7 @@ /obj/machinery/doppler_array/research/science{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -69771,7 +69771,7 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "cQS" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -69790,7 +69790,7 @@ /turf/open/floor/plating, /area/chapel/main) "cQV" = ( -/obj/item/device/flashlight/lantern{ +/obj/item/flashlight/lantern{ pixel_y = 7 }, /obj/structure/table/wood, @@ -69925,7 +69925,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/item/device/gps, +/obj/item/gps, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, @@ -71082,14 +71082,14 @@ /area/science/xenobiology) "cVb" = ( /obj/structure/table/wood, -/obj/item/device/camera_film{ +/obj/item/camera_film{ pixel_x = -3; pixel_y = 5 }, -/obj/item/device/camera_film{ +/obj/item/camera_film{ pixel_y = 9 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -71100,7 +71100,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 1; frequency = 1459; name = "Station Intercom (General)"; @@ -71340,7 +71340,7 @@ /turf/open/floor/plasteel/white, /area/science/xenobiology) "cZc" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -71449,7 +71449,7 @@ /obj/item/stack/sheet/metal{ amount = 10 }, -/obj/item/device/electropack, +/obj/item/electropack, /turf/open/floor/engine, /area/science/xenobiology) "daF" = ( @@ -71466,7 +71466,7 @@ /turf/open/floor/engine, /area/science/xenobiology) "daH" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/engine, /area/science/xenobiology) "daI" = ( @@ -71475,7 +71475,7 @@ pixel_y = 5 }, /obj/item/stack/cable_coil, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/stock_parts/cell/high{ charge = 100; maxcharge = 15000 @@ -71500,26 +71500,26 @@ /area/science/xenobiology) "daM" = ( /obj/structure/table, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = -5; pixel_y = 3 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 5; pixel_y = -4 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 2; pixel_y = 6 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 2; pixel_y = -1 }, /turf/open/floor/engine, /area/science/xenobiology) "daN" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = -25 }, /turf/open/floor/engine, @@ -72030,7 +72030,7 @@ /obj/machinery/shower{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -72350,7 +72350,7 @@ /area/science/xenobiology) "dcM" = ( /obj/machinery/chem_master, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -72618,7 +72618,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/general/visible, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -73398,7 +73398,7 @@ /area/maintenance/port/fore) "dhL" = ( /obj/structure/table, -/obj/item/device/analyzer, +/obj/item/analyzer, /obj/machinery/power/apc{ dir = 2; name = "Tool Storage APC"; @@ -73415,7 +73415,7 @@ }, /area/storage/primary) "dhM" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -73557,7 +73557,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/item/device/instrument/guitar, +/obj/item/instrument/guitar, /obj/structure/sign/poster/random{ pixel_x = 32 }, @@ -73622,9 +73622,9 @@ /turf/open/floor/carpet, /area/crew_quarters/theatre) "dij" = ( -/obj/item/device/instrument/violin, +/obj/item/instrument/violin, /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -73692,7 +73692,7 @@ /obj/item/poster/random_official, /obj/item/poster/random_official, /obj/item/poster/random_official, -/obj/item/device/paicard{ +/obj/item/paicard{ desc = "A real Nanotrasen success, these personal AIs provide all of the companionship of an AI without any law related red-tape."; name = "Nanotrasen-brand personal AI device exhibit" }, @@ -73924,7 +73924,7 @@ }, /obj/item/reagent_containers/food/drinks/ale, /obj/structure/table/wood, -/obj/item/device/instrument/eguitar, +/obj/item/instrument/eguitar, /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -75459,7 +75459,7 @@ /obj/item/wallframe/camera, /obj/item/wallframe/camera, /obj/item/wallframe/camera, -/obj/item/device/assault_pod/mining, +/obj/item/assault_pod/mining, /turf/open/floor/plasteel/yellow/side{ dir = 1 }, @@ -75647,7 +75647,7 @@ /turf/open/floor/plating/airless, /area/engine/engineering) "gnZ" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = -30 }, /turf/open/floor/plasteel/white, @@ -75695,8 +75695,8 @@ /area/maintenance/aft) "gRS" = ( /obj/structure/table/reinforced, -/obj/item/device/integrated_electronics/analyzer, -/obj/item/device/integrated_circuit_printer, +/obj/item/integrated_electronics/analyzer, +/obj/item/integrated_circuit_printer, /turf/open/floor/plasteel/white, /area/science/circuit) "gXY" = ( @@ -75943,7 +75943,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "kOt" = ( -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/screwdriver, /obj/structure/table/reinforced, /obj/structure/cable/yellow{ @@ -76000,7 +76000,7 @@ /area/engine/engineering) "llb" = ( /obj/structure/table/reinforced, -/obj/item/device/integrated_circuit_printer, +/obj/item/integrated_circuit_printer, /turf/open/floor/plasteel/white, /area/science/circuit) "lsv" = ( @@ -76014,7 +76014,7 @@ icon_state = "0-8" }, /obj/structure/table/reinforced, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plasteel/white, /area/science/circuit) "lwo" = ( @@ -76208,9 +76208,9 @@ /turf/open/floor/plasteel/white, /area/science/circuit) "ohj" = ( -/obj/item/device/integrated_electronics/analyzer, -/obj/item/device/integrated_electronics/debugger, -/obj/item/device/integrated_electronics/wirer, +/obj/item/integrated_electronics/analyzer, +/obj/item/integrated_electronics/debugger, +/obj/item/integrated_electronics/wirer, /obj/structure/table/reinforced, /turf/open/floor/plasteel/white, /area/science/circuit) @@ -76246,7 +76246,7 @@ pixel_y = 30; receive_ore_updates = 1 }, -/obj/item/device/integrated_electronics/debugger, +/obj/item/integrated_electronics/debugger, /turf/open/floor/plasteel/white, /area/science/circuit) "oRL" = ( @@ -76394,7 +76394,7 @@ /area/engine/engineering) "qBh" = ( /obj/structure/table, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/plasteel/whitepurple/side{ dir = 2 }, @@ -76753,7 +76753,7 @@ /turf/open/floor/plating, /area/engine/engineering) "xkG" = ( -/obj/item/device/integrated_electronics/wirer, +/obj/item/integrated_electronics/wirer, /obj/structure/table/reinforced, /turf/open/floor/plasteel/white, /area/science/circuit) diff --git a/_maps/cit_map_files/Mining/Lavaland.dmm b/_maps/cit_map_files/Mining/Lavaland.dmm index 18aa7d0f98..62f8080c28 100644 --- a/_maps/cit_map_files/Mining/Lavaland.dmm +++ b/_maps/cit_map_files/Mining/Lavaland.dmm @@ -106,18 +106,18 @@ /obj/structure/rack, /obj/item/storage/bag/ore, /obj/item/pickaxe, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/item/clothing/glasses/meson, -/obj/item/device/mining_scanner, +/obj/item/mining_scanner, /turf/open/floor/plasteel, /area/mine/laborcamp) "av" = ( /obj/structure/rack, /obj/item/storage/bag/ore, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/item/pickaxe, /obj/item/clothing/glasses/meson, -/obj/item/device/mining_scanner, +/obj/item/mining_scanner, /turf/open/floor/plasteel, /area/mine/laborcamp) "aw" = ( @@ -164,7 +164,7 @@ /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors/explored) "aE" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; @@ -384,10 +384,10 @@ "bn" = ( /obj/structure/table, /obj/item/pickaxe, -/obj/item/device/gps/mining, -/obj/item/device/gps/mining, -/obj/item/device/gps/mining, -/obj/item/device/gps/mining, +/obj/item/gps/mining, +/obj/item/gps/mining, +/obj/item/gps/mining, +/obj/item/gps/mining, /turf/open/floor/plasteel/purple/side{ dir = 9 }, @@ -583,7 +583,7 @@ /turf/open/floor/plating, /area/mine/production) "bO" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/purple/corner{ dir = 8 }, @@ -926,7 +926,7 @@ /turf/closed/wall, /area/mine/living_quarters) "cO" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = -28 @@ -1325,7 +1325,7 @@ dir = 8; network = list("mine") }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = 28 @@ -1937,7 +1937,7 @@ /turf/open/floor/plasteel, /area/mine/living_quarters) "fq" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = 28 @@ -2062,7 +2062,7 @@ /turf/open/floor/plasteel, /area/mine/living_quarters) "fI" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = -28 diff --git a/_maps/cit_map_files/OmegaStation/OmegaStation.dmm b/_maps/cit_map_files/OmegaStation/OmegaStation.dmm index 853f932cab..278ab1d815 100644 --- a/_maps/cit_map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/cit_map_files/OmegaStation/OmegaStation.dmm @@ -138,7 +138,7 @@ "aas" = ( /obj/item/storage/toolbox/mechanical, /obj/item/wrench, -/obj/item/device/multitool, +/obj/item/multitool, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -262,7 +262,7 @@ "aaE" = ( /obj/item/folder/red, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -347,8 +347,8 @@ /obj/structure/table/reinforced, /obj/machinery/recharger, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/radio/intercom{ +/obj/item/assembly/flash/handheld, +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -28 }, @@ -439,9 +439,9 @@ /area/bridge) "aaU" = ( /obj/structure/table/reinforced, -/obj/item/device/aicard, +/obj/item/aicard, /obj/item/storage/secure/briefcase, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 28 }, @@ -526,7 +526,7 @@ /obj/machinery/chem_dispenser/drinks{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 28; pixel_y = 24 @@ -1117,7 +1117,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/carpet, /area/bridge) "ack" = ( @@ -1161,7 +1161,7 @@ /area/bridge) "aco" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/newscaster{ pixel_x = -32 }, @@ -1868,7 +1868,7 @@ /area/crew_quarters/heads/captain/private) "adN" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 28 }, @@ -1960,7 +1960,7 @@ /turf/closed/wall, /area/crew_quarters/heads/hop) "adZ" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -28 }, @@ -2367,7 +2367,7 @@ pixel_x = 24; pixel_y = 38 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 28; pixel_y = 24 @@ -2435,7 +2435,7 @@ /area/asteroid/nearstation) "afd" = ( /obj/structure/table/wood, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/item/restraints/handcuffs, /turf/open/floor/plasteel/vault/side{ dir = 4 @@ -2535,7 +2535,7 @@ /turf/open/floor/wood, /area/crew_quarters/heads/captain/private) "afo" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; freerange = 1; name = "Captain's Intercom"; @@ -2844,8 +2844,8 @@ "afP" = ( /obj/structure/table/wood, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/camera/detective, -/obj/item/device/radio/intercom{ +/obj/item/camera/detective, +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -2956,7 +2956,7 @@ /area/crew_quarters/heads/captain/private) "aga" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /obj/item/toy/figure/captain, /turf/open/floor/carpet, /area/crew_quarters/heads/captain/private) @@ -3451,7 +3451,7 @@ "agX" = ( /obj/structure/table/reinforced, /obj/item/aiModule/reset, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -3523,7 +3523,7 @@ "ahd" = ( /obj/structure/table/reinforced, /obj/item/aiModule/supplied/quarantine, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -3838,7 +3838,7 @@ /area/security/detectives_office) "ahF" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/item/storage/secure/safe{ pixel_x = 32 }, @@ -3975,7 +3975,7 @@ pixel_x = 9; pixel_y = -24 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -4418,7 +4418,7 @@ "aiN" = ( /obj/structure/table/reinforced, /obj/item/folder/yellow, -/obj/item/device/multitool{ +/obj/item/multitool{ pixel_x = 6 }, /obj/item/pen/red, @@ -4506,7 +4506,7 @@ /area/security/brig) "aiY" = ( /obj/structure/closet/crate/bin, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = 24 @@ -4663,7 +4663,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 24 }, @@ -4799,7 +4799,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 24 }, @@ -4976,7 +4976,7 @@ pixel_x = 3; pixel_y = -3 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -5048,8 +5048,8 @@ /obj/structure/table/reinforced, /obj/item/folder/red, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/item/key/security, /turf/open/floor/plasteel/red/side{ dir = 8 @@ -6446,7 +6446,7 @@ }, /obj/item/storage/toolbox/mechanical, /obj/item/stack/cable_coil/white, -/obj/item/device/multitool, +/obj/item/multitool, /obj/machinery/button/door{ id = "evashutters"; name = "E.V.A. Shutters"; @@ -6462,7 +6462,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -6527,7 +6527,7 @@ pixel_x = 24; pixel_y = -24 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 28 }, @@ -6557,7 +6557,7 @@ name = "protective hat"; pixel_y = 9 }, -/obj/item/device/flashlight, +/obj/item/flashlight, /turf/open/floor/plating, /area/asteroid/nearstation) "amH" = ( @@ -6724,9 +6724,9 @@ "amV" = ( /obj/structure/table/reinforced, /obj/item/storage/belt/utility, -/obj/item/device/radio, -/obj/item/device/radio, -/obj/item/device/gps, +/obj/item/radio, +/obj/item/radio, +/obj/item/gps, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/teleporter) @@ -6814,10 +6814,10 @@ "anh" = ( /obj/structure/table/reinforced, /obj/item/storage/belt/utility, -/obj/item/device/radio, -/obj/item/device/radio, -/obj/item/device/flashlight/flare, -/obj/item/device/flashlight/flare, +/obj/item/radio, +/obj/item/radio, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) @@ -6906,7 +6906,7 @@ /area/quartermaster/miningdock) "anq" = ( /obj/structure/closet/secure_closet/miner, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -7140,7 +7140,7 @@ "anN" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel, /area/teleporter) "anP" = ( @@ -7243,7 +7243,7 @@ "anW" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "anX" = ( @@ -8196,7 +8196,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -8259,7 +8259,7 @@ /area/teleporter) "apO" = ( /obj/machinery/shieldwallgen, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 28 }, @@ -8405,10 +8405,10 @@ /obj/item/storage/toolbox/emergency, /obj/item/tank/internals/oxygen, /obj/item/tank/internals/oxygen, -/obj/item/device/flashlight, -/obj/item/device/flashlight, -/obj/item/device/flashlight/flare, -/obj/item/device/flashlight/flare, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, /turf/open/floor/plasteel, /area/maintenance/starboard/central) "aqc" = ( @@ -8419,7 +8419,7 @@ }, /obj/item/tank/jetpack/carbondioxide, /obj/item/wrench, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -28 }, @@ -8612,10 +8612,10 @@ "aqv" = ( /obj/effect/decal/cleanable/oil, /obj/structure/closet/crate, -/obj/item/device/flashlight, -/obj/item/device/flashlight, -/obj/item/device/flashlight/flare, -/obj/item/device/flashlight/flare, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, /obj/item/stock_parts/cell/high, /obj/item/crowbar/red, /obj/effect/turf_decal/bot, @@ -8657,7 +8657,7 @@ /area/maintenance/port/fore) "aqI" = ( /obj/structure/closet/secure_closet/security/sec, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -8793,23 +8793,23 @@ /area/storage/primary) "aqU" = ( /obj/structure/table/reinforced, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, /obj/effect/spawner/lootdrop/maintenance, /obj/machinery/status_display{ pixel_y = 32 }, /obj/effect/turf_decal/bot, -/obj/item/device/multitool, -/obj/item/device/multitool, +/obj/item/multitool, +/obj/item/multitool, /turf/open/floor/plasteel, /area/storage/primary) "aqV" = ( /obj/structure/table/reinforced, /obj/item/crowbar, /obj/item/wrench, -/obj/item/device/gps, +/obj/item/gps, /obj/machinery/light{ dir = 1 }, @@ -9045,7 +9045,7 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 24 }, @@ -9317,7 +9317,7 @@ /area/storage/primary) "arU" = ( /obj/machinery/holopad, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -9676,7 +9676,7 @@ "asO" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/machinery/firealarm{ dir = 1; pixel_y = -26 @@ -9691,15 +9691,15 @@ /area/security/brig) "asP" = ( /obj/structure/table/reinforced, -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = 5; pixel_y = 5 }, -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = -5; pixel_y = 5 }, -/obj/item/device/radio, +/obj/item/radio, /obj/machinery/newscaster/security_unit{ pixel_y = -32 }, @@ -9713,11 +9713,11 @@ "asQ" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/machinery/status_display{ pixel_y = -32 }, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -9828,7 +9828,7 @@ "asX" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/mechanical, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /obj/structure/cable/white{ icon_state = "4-8" @@ -10107,7 +10107,7 @@ "atQ" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/mechanical, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -10242,11 +10242,11 @@ /area/maintenance/port/central) "atX" = ( /obj/structure/table/wood, -/obj/item/device/camera_film{ +/obj/item/camera_film{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/camera_film, +/obj/item/camera_film, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -10365,7 +10365,7 @@ }, /obj/item/stack/cable_coil/random, /obj/item/stack/cable_coil/random, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -10692,7 +10692,7 @@ /area/crew_quarters/theatre) "ava" = ( /obj/structure/table/wood, -/obj/item/device/instrument/guitar, +/obj/item/instrument/guitar, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -10745,7 +10745,7 @@ /area/crew_quarters/bar/atrium) "avg" = ( /obj/structure/table/wood, -/obj/item/device/paicard, +/obj/item/paicard, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -11027,7 +11027,7 @@ icon_state = "crateopen" }, /obj/item/clothing/shoes/jackboots, -/obj/item/device/radio, +/obj/item/radio, /obj/item/storage/secure/briefcase, /obj/effect/spawner/lootdrop/maintenance{ lootcount = 2; @@ -11192,7 +11192,7 @@ /area/maintenance/port/central) "awf" = ( /obj/structure/table/wood, -/obj/item/device/camera, +/obj/item/camera, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -11384,7 +11384,7 @@ /area/maintenance/starboard/central) "awy" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -11771,7 +11771,7 @@ /obj/machinery/newscaster{ pixel_y = 32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -11802,7 +11802,7 @@ }, /area/hallway/primary/port) "axD" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -12082,7 +12082,7 @@ "ayr" = ( /obj/structure/table/reinforced, /obj/item/storage/belt/utility, -/obj/item/device/t_scanner, +/obj/item/t_scanner, /obj/structure/cable/white{ icon_state = "2-4" }, @@ -12167,7 +12167,7 @@ /area/crew_quarters/dorms) "ayE" = ( /obj/structure/table/wood, -/obj/item/device/instrument/violin, +/obj/item/instrument/violin, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -12330,7 +12330,7 @@ }, /obj/item/crowbar, /obj/item/wrench, -/obj/item/device/radio, +/obj/item/radio, /obj/machinery/airalarm{ pixel_y = 23 }, @@ -12344,7 +12344,7 @@ "ayX" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/machinery/status_display{ pixel_y = 32 }, @@ -12360,7 +12360,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 24 }, @@ -12527,12 +12527,12 @@ /area/engine/atmos) "azA" = ( /obj/structure/table, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/plasteel/neutral, /area/crew_quarters/dorms) "azB" = ( /obj/structure/table, -/obj/item/device/camera, +/obj/item/camera, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/neutral, /area/crew_quarters/dorms) @@ -13329,7 +13329,7 @@ /area/engine/atmos) "aBJ" = ( /obj/structure/table/reinforced, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/requests_console{ department = "Atmospherics Office"; departmentType = 0; @@ -13609,7 +13609,7 @@ icon_state = "4-8" }, /obj/item/folder/red, -/obj/item/device/radio, +/obj/item/radio, /obj/effect/turf_decal/stripes/line{ dir = 2 }, @@ -13862,7 +13862,7 @@ /area/crew_quarters/dorms) "aCP" = ( /obj/structure/table/wood, -/obj/item/device/instrument/eguitar, +/obj/item/instrument/eguitar, /obj/item/toy/crayon/spraycan/lubecan{ charges = 5 }, @@ -14355,7 +14355,7 @@ /turf/open/floor/plasteel/white, /area/crew_quarters/kitchen) "aDX" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 28 }, @@ -14427,7 +14427,7 @@ /obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -14511,7 +14511,7 @@ /obj/machinery/power/smes{ charge = 5e+006 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -14746,10 +14746,10 @@ "aET" = ( /obj/structure/table/wood, /obj/item/storage/crayons, -/obj/item/device/flashlight/lamp/bananalamp{ +/obj/item/flashlight/lamp/bananalamp{ pixel_y = 5 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -14981,7 +14981,7 @@ /obj/item/stack/sheet/mineral/plasma{ amount = 20 }, -/obj/item/device/gps/engineering{ +/obj/item/gps/engineering{ gpstag = "ENG0" }, /obj/machinery/light/small, @@ -15301,7 +15301,7 @@ /area/crew_quarters/kitchen) "aFX" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -15322,7 +15322,7 @@ /area/hallway/primary/starboard) "aGa" = ( /obj/effect/landmark/event_spawn, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/neutral, /area/hallway/secondary/exit) "aGb" = ( @@ -15726,7 +15726,7 @@ /area/crew_quarters/bar/atrium) "aGQ" = ( /obj/machinery/holopad, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 28 }, @@ -16597,7 +16597,7 @@ /area/engine/engineering) "aIy" = ( /obj/structure/table/reinforced, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/requests_console{ department = "Engineering"; departmentType = 0; @@ -16710,7 +16710,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -16961,7 +16961,7 @@ /obj/machinery/power/terminal{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -17234,7 +17234,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/bot, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -17691,7 +17691,7 @@ /area/engine/engineering) "aKM" = ( /obj/structure/table/reinforced, -/obj/item/device/lightreplacer, +/obj/item/lightreplacer, /obj/structure/cable/white{ icon_state = "1-8" }, @@ -18221,7 +18221,7 @@ pixel_y = 3 }, /obj/item/storage/box/lights/mixed, -/obj/item/device/lightreplacer, +/obj/item/lightreplacer, /obj/machinery/airalarm{ dir = 4; pixel_x = -23 @@ -18539,7 +18539,7 @@ /area/engine/engineering) "aNa" = ( /obj/machinery/suit_storage_unit/engine, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -18624,7 +18624,7 @@ /area/engine/engineering) "aNh" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -18672,7 +18672,7 @@ /obj/machinery/light_switch{ pixel_y = -24 }, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -18882,7 +18882,7 @@ /area/hallway/secondary/exit) "aNI" = ( /obj/structure/closet/crate, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -24 }, @@ -18943,7 +18943,7 @@ /obj/machinery/computer/telecomms/monitor{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 24 }, @@ -19438,7 +19438,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 24 }, @@ -19718,7 +19718,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 24 }, @@ -20291,7 +20291,7 @@ pixel_y = 3 }, /obj/item/book/manual/detective, -/obj/item/device/camera/detective, +/obj/item/camera/detective, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -20677,7 +20677,7 @@ /obj/structure/cable/white{ icon_state = "1-4" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -28 }, @@ -20808,7 +20808,7 @@ /area/maintenance/port) "aRT" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/computer/security/telescreen/entertainment{ pixel_x = -32 }, @@ -20837,7 +20837,7 @@ /obj/structure/chair/office/dark{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 24 }, @@ -20847,7 +20847,7 @@ /area/library) "aRX" = ( /obj/structure/table/wood, -/obj/item/device/paicard, +/obj/item/paicard, /obj/machinery/newscaster{ pixel_y = 32 }, @@ -20893,7 +20893,7 @@ /area/library) "aSd" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/newscaster{ pixel_x = 32 }, @@ -20935,7 +20935,7 @@ dir = 4; pixel_x = -22 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26; pixel_y = 24 @@ -21229,7 +21229,7 @@ "aST" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/mechanical, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/turf_decal/bot, /obj/effect/turf_decal/stripes/line, /turf/open/floor/engine, @@ -21284,8 +21284,8 @@ /obj/item/tank/internals/emergency_oxygen/engi{ pixel_x = 5 }, -/obj/item/device/geiger_counter, -/obj/item/device/geiger_counter, +/obj/item/geiger_counter, +/obj/item/geiger_counter, /obj/effect/turf_decal/bot, /obj/effect/turf_decal/stripes/line, /turf/open/floor/engine, @@ -21415,7 +21415,7 @@ dir = 1 }, /obj/machinery/door/window/southright, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -21481,7 +21481,7 @@ /area/hallway/primary/aft) "aTy" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/grimy, /area/crew_quarters/lounge) "aTz" = ( @@ -21810,7 +21810,7 @@ /area/library) "aUk" = ( /obj/structure/bodycontainer/morgue, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -21964,14 +21964,14 @@ /obj/item/stock_parts/capacitor, /obj/item/stock_parts/manipulator, /obj/item/stock_parts/manipulator, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 28 }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plasteel/vault/side, /area/science/lab) "aUF" = ( @@ -22165,7 +22165,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -22360,10 +22360,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/item/device/integrated_circuit_printer, -/obj/item/device/integrated_electronics/analyzer, -/obj/item/device/integrated_electronics/debugger, -/obj/item/device/integrated_electronics/wirer, +/obj/item/integrated_circuit_printer, +/obj/item/integrated_electronics/analyzer, +/obj/item/integrated_electronics/debugger, +/obj/item/integrated_electronics/wirer, /turf/open/floor/plasteel/vault/side, /area/science/lab) "aVy" = ( @@ -22491,7 +22491,7 @@ "aVN" = ( /obj/structure/table/wood, /obj/item/storage/bag/books, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/machinery/status_display{ pixel_x = -32 }, @@ -22505,7 +22505,7 @@ /area/library) "aVP" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/dark, /area/library) @@ -22653,18 +22653,18 @@ /area/medical/chemistry) "aWg" = ( /obj/structure/table/glass, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/timer{ +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/timer{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 3; pixel_y = 3 }, @@ -22837,7 +22837,7 @@ "aWy" = ( /obj/structure/table/wood, /obj/item/storage/briefcase, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /turf/open/floor/plating, /area/maintenance/starboard/aft) "aWz" = ( @@ -22864,11 +22864,11 @@ /area/library) "aWC" = ( /obj/structure/table/wood, -/obj/item/device/camera_film{ +/obj/item/camera_film{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/camera_film, +/obj/item/camera_film, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/vault{ dir = 5 @@ -23525,7 +23525,7 @@ /area/medical/medbay/zone3) "aXQ" = ( /obj/structure/closet/secure_closet/medical3, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -23725,7 +23725,7 @@ /area/science/research) "aYm" = ( /obj/machinery/light, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -24 }, @@ -23788,7 +23788,7 @@ dir = 4 }, /obj/structure/cable/white, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -24 }, @@ -24213,7 +24213,7 @@ "aZq" = ( /obj/structure/table/wood, /obj/item/clothing/gloves/color/black, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/machinery/light/small{ dir = 1 }, @@ -24256,10 +24256,10 @@ "aZv" = ( /obj/structure/table/wood, /obj/item/folder, -/obj/item/device/laser_pointer{ +/obj/item/laser_pointer{ pixel_x = 3 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -24269,8 +24269,8 @@ /area/library) "aZw" = ( /obj/structure/table/wood, -/obj/item/device/taperecorder, -/obj/item/device/camera, +/obj/item/taperecorder, +/obj/item/camera, /obj/machinery/ai_status_display{ pixel_y = -32 }, @@ -24599,7 +24599,7 @@ /obj/item/screwdriver{ pixel_y = 5 }, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/clothing/head/welding, /obj/machinery/firealarm{ pixel_y = 24 @@ -24639,12 +24639,12 @@ /obj/structure/table/reinforced, /obj/item/stack/cable_coil/white, /obj/item/stack/cable_coil/white, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/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/assembly/flash/handheld, /obj/machinery/newscaster{ pixel_y = 32 }, @@ -24653,15 +24653,15 @@ /area/science/robotics/lab) "bag" = ( /obj/item/paper_bin, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 5; pixel_y = 7 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 5; pixel_y = 7 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 5; pixel_y = 7 }, @@ -24947,7 +24947,7 @@ "baK" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/radio, +/obj/item/radio, /obj/structure/reagent_dispensers/peppertank{ pixel_x = 32 }, @@ -25137,7 +25137,7 @@ /area/science/robotics/lab) "bbc" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plating, /area/maintenance/port) "bbd" = ( @@ -25610,7 +25610,7 @@ "bce" = ( /obj/structure/table/optable, /obj/effect/decal/cleanable/blood/old, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -25824,7 +25824,7 @@ "bcD" = ( /obj/structure/rack, /obj/item/weldingtool, -/obj/item/device/assembly/voice, +/obj/item/assembly/voice, /obj/item/clothing/head/welding, /obj/effect/spawner/lootdrop/maintenance, /obj/effect/turf_decal/stripes/line{ @@ -25898,7 +25898,7 @@ /area/maintenance/port) "bcR" = ( /obj/structure/table/wood, -/obj/item/device/instrument/guitar, +/obj/item/instrument/guitar, /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plating, /area/maintenance/port) @@ -26538,7 +26538,7 @@ /obj/structure/chair/office/light{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -26605,7 +26605,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/aft) "beg" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -24 }, @@ -26665,7 +26665,7 @@ /obj/item/stock_parts/cell/high, /obj/item/stock_parts/cell/high, /obj/machinery/cell_charger, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -26690,9 +26690,9 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/item/device/mmi, -/obj/item/device/mmi, -/obj/item/device/mmi, +/obj/item/mmi, +/obj/item/mmi, +/obj/item/mmi, /obj/structure/sign/departments/medbay/alt{ pixel_y = -32 }, @@ -26880,7 +26880,7 @@ /obj/machinery/newscaster{ pixel_x = -32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -24 }, @@ -27544,7 +27544,7 @@ }, /area/chapel/main) "bfX" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 24 }, @@ -27625,7 +27625,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -27791,7 +27791,7 @@ pixel_x = -26; req_access_txt = "27" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -24 }, @@ -27830,7 +27830,7 @@ /area/chapel/main) "bgH" = ( /obj/structure/table/wood/fancy, -/obj/item/device/flashlight/lantern, +/obj/item/flashlight/lantern, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, @@ -28535,7 +28535,7 @@ /area/chapel/main) "bii" = ( /obj/structure/table/wood/fancy, -/obj/item/device/flashlight/lantern, +/obj/item/flashlight/lantern, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -29293,7 +29293,7 @@ /obj/structure/extinguisher_cabinet{ pixel_y = -32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -29328,7 +29328,7 @@ /area/chapel/main) "bjM" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -29429,7 +29429,7 @@ pixel_x = 24; pixel_y = -24 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -24 }, @@ -29566,7 +29566,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "bkC" = ( -/obj/item/device/beacon, +/obj/item/beacon, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/hallway/secondary/entry) @@ -32121,7 +32121,7 @@ /area/hydroponics) "lAs" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 24 }, @@ -33266,9 +33266,9 @@ /obj/structure/table, /obj/item/clipboard, /obj/item/crowbar/red, -/obj/item/device/aicard, -/obj/item/device/analyzer, -/obj/item/device/assembly/flash/handheld, +/obj/item/aicard, +/obj/item/analyzer, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/vault/side{ dir = 8 }, @@ -34241,7 +34241,7 @@ /turf/open/floor/circuit/green, /area/ai_monitored/turret_protected/ai) "sLV" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 1; listening = 1; @@ -34249,14 +34249,14 @@ pixel_x = -27; pixel_y = -7 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_y = -27 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -34428,7 +34428,7 @@ "sMv" = ( /obj/item/crowbar, /obj/item/wrench, -/obj/item/device/mmi, +/obj/item/mmi, /obj/structure/table, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/vault{ @@ -34441,7 +34441,7 @@ /area/ai_monitored/turret_protected/ai) "sMx" = ( /obj/item/folder/blue, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/structure/table, /turf/open/floor/plasteel/vault{ dir = 8 @@ -34496,7 +34496,7 @@ id = "AI"; pixel_x = -26 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -34602,7 +34602,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -34654,7 +34654,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/vault/side{ dir = 5 }, @@ -34892,7 +34892,7 @@ /turf/open/floor/plasteel/vault, /area/ai_monitored/turret_protected/aisat_interior) "sNz" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/carpet, /area/crew_quarters/lounge) "sNA" = ( @@ -35043,10 +35043,10 @@ /obj/item/stack/sheet/glass{ amount = 20 }, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/mmi, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/mmi, +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, diff --git a/_maps/cit_map_files/PubbyStation/PubbyStation.dmm b/_maps/cit_map_files/PubbyStation/PubbyStation.dmm index af527e89c3..3659a50ff3 100644 --- a/_maps/cit_map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/cit_map_files/PubbyStation/PubbyStation.dmm @@ -97,7 +97,7 @@ icon_state = "2-4" }, /obj/effect/landmark/start/ai/secondary, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -145,7 +145,7 @@ pixel_y = 24 }, /obj/effect/landmark/start/ai/secondary, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -269,7 +269,7 @@ /area/ai_monitored/turret_protected/ai) "acy" = ( /obj/effect/landmark/start/ai, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 1; listening = 1; @@ -277,14 +277,14 @@ pixel_x = -27; pixel_y = -9 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_y = -31 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -346,7 +346,7 @@ /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) "acE" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -518,10 +518,10 @@ pixel_x = 3; pixel_y = -4 }, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/mmi, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/mmi, +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, @@ -673,7 +673,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -1077,7 +1077,7 @@ /turf/open/floor/plasteel/dark, /area/security/prison) "aeD" = ( -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /turf/open/floor/plasteel/dark, /area/security/prison) "aeE" = ( @@ -1395,7 +1395,7 @@ /area/security/prison) "afq" = ( /obj/structure/table, -/obj/item/device/instrument/harmonica, +/obj/item/instrument/harmonica, /turf/open/floor/plasteel/dark, /area/security/prison) "afr" = ( @@ -1444,7 +1444,7 @@ /area/ai_monitored/turret_protected/aisat_interior) "afy" = ( /obj/effect/landmark/start/cyborg, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat_interior) "afz" = ( @@ -1582,7 +1582,7 @@ pixel_y = 3 }, /obj/item/storage/toolbox/mechanical, -/obj/item/device/multitool{ +/obj/item/multitool{ layer = 5 }, /obj/item/extinguisher{ @@ -1656,7 +1656,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat_interior) "agg" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -28 }, @@ -1872,7 +1872,7 @@ c_tag = "Permabrig Cell 2"; network = list("ss13","prison") }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; @@ -1913,7 +1913,7 @@ c_tag = "Permabrig Cell 1"; network = list("ss13","prison") }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; @@ -2076,7 +2076,7 @@ /turf/open/space, /area/space/nearstation) "ahj" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -2087,7 +2087,7 @@ pixel_y = 5 }, /obj/item/clothing/mask/balaclava, -/obj/item/device/mmi, +/obj/item/mmi, /obj/machinery/atmospherics/pipe/simple/cyan/hidden, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) @@ -2096,7 +2096,7 @@ /obj/item/folder/red{ pixel_x = 3 }, -/obj/item/device/taperecorder{ +/obj/item/taperecorder{ pixel_x = -3 }, /turf/open/floor/plasteel/dark, @@ -2203,7 +2203,7 @@ /area/security/execution/transfer) "ahx" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/atmospherics/pipe/simple/cyan/hidden, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) @@ -2568,7 +2568,7 @@ /obj/item/razor{ pixel_x = -6 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = 4 }, /obj/structure/extinguisher_cabinet{ @@ -2757,7 +2757,7 @@ /area/security/prison) "aiK" = ( /obj/structure/table, -/obj/item/device/electropack, +/obj/item/electropack, /turf/open/floor/plasteel/red/side, /area/security/prison) "aiL" = ( @@ -2853,7 +2853,7 @@ /area/maintenance/department/security/brig) "aiY" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plating, /area/maintenance/department/security/brig) "aiZ" = ( @@ -3526,7 +3526,7 @@ /area/maintenance/department/crew_quarters/dorms) "akr" = ( /obj/machinery/washing_machine, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = -31 @@ -3571,7 +3571,7 @@ /area/maintenance/department/security/brig) "akx" = ( /obj/structure/bodycontainer/crematorium, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -27 @@ -3629,7 +3629,7 @@ }, /area/security/brig) "akD" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -4034,7 +4034,7 @@ /area/security/main) "alC" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = -4; pixel_y = 12 }, @@ -4321,7 +4321,7 @@ /obj/machinery/atmospherics/pipe/manifold/cyan/hidden{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = -31 @@ -4646,7 +4646,7 @@ c_tag = "Brig Control Room"; dir = 2 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_y = 24 @@ -5038,7 +5038,7 @@ c_tag = "Head of Security's Office"; dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_y = -27 @@ -5087,7 +5087,7 @@ /area/maintenance/department/crew_quarters/dorms) "aob" = ( /obj/structure/closet/emcloset, -/obj/item/device/camera, +/obj/item/camera, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "aod" = ( @@ -5436,7 +5436,7 @@ /obj/structure/rack, /obj/item/crowbar, /obj/item/wrench, -/obj/item/device/laser_pointer/red, +/obj/item/laser_pointer/red, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) "aoY" = ( @@ -5663,7 +5663,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, -/obj/item/device/camera_film, +/obj/item/camera_film, /turf/open/floor/plating{ icon_state = "platingdmg1" }, @@ -5986,7 +5986,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = 29 }, @@ -6355,7 +6355,7 @@ /turf/open/floor/plasteel/dark, /area/security/brig) "arx" = ( -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/structure/table/glass, /turf/open/floor/plasteel/dark, /area/security/brig) @@ -6603,11 +6603,11 @@ desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; name = "emergency lifejacket" }, -/obj/item/device/flashlight, -/obj/item/device/flashlight, -/obj/item/device/flashlight, -/obj/item/device/flashlight, -/obj/item/device/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, /turf/open/floor/plasteel, /area/gateway) "arZ" = ( @@ -6619,22 +6619,22 @@ /area/gateway) "asa" = ( /obj/structure/table, -/obj/item/device/radio/off{ +/obj/item/radio/off{ pixel_y = 6 }, -/obj/item/device/radio/off{ +/obj/item/radio/off{ pixel_x = 6; pixel_y = 4 }, -/obj/item/device/radio/off{ +/obj/item/radio/off{ pixel_x = -6; pixel_y = 4 }, -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/structure/sign/warning/biohazard{ pixel_x = 32 }, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel, /area/gateway) "asb" = ( @@ -6887,7 +6887,7 @@ /area/security/brig) "asJ" = ( /obj/item/folder/red, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/machinery/atmospherics/pipe/simple/cyan/hidden{ dir = 4 }, @@ -7397,7 +7397,7 @@ }, /area/bridge) "atU" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/darkblue/side{ dir = 1 }, @@ -7488,7 +7488,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -7614,7 +7614,7 @@ /turf/open/floor/plasteel, /area/maintenance/department/security/brig) "aux" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; @@ -8181,7 +8181,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = -28 @@ -8254,14 +8254,14 @@ /area/bridge) "avY" = ( /obj/structure/table/glass, -/obj/item/device/aicard, +/obj/item/aicard, /turf/open/floor/plasteel/dark, /area/bridge) "avZ" = ( /obj/structure/table/glass, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/laser_pointer/blue, +/obj/item/assembly/flash/handheld, +/obj/item/laser_pointer/blue, /turf/open/floor/plasteel/dark, /area/bridge) "awa" = ( @@ -8654,7 +8654,7 @@ id = "Secure Gate"; name = "brig shutters" }, -/obj/item/device/radio, +/obj/item/radio, /obj/machinery/door/firedoor, /turf/open/floor/plasteel/dark, /area/security/brig) @@ -9051,7 +9051,7 @@ /area/crew_quarters/heads/captain) "axU" = ( /obj/machinery/computer/card, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -9409,7 +9409,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/fore) "ayQ" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel, /area/hallway/primary/fore) "ayR" = ( @@ -9526,7 +9526,7 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = -28 @@ -9623,7 +9623,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = -28 @@ -9718,7 +9718,7 @@ /area/crew_quarters/dorms) "azx" = ( /obj/structure/table/wood, -/obj/item/device/paicard, +/obj/item/paicard, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -10053,7 +10053,7 @@ /area/hallway/primary/fore) "aAp" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /obj/machinery/light_switch{ dir = 9; pixel_x = -22 @@ -10095,7 +10095,7 @@ /area/crew_quarters/heads/captain) "aAv" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /turf/open/floor/carpet, /area/crew_quarters/heads/captain) "aAw" = ( @@ -10279,7 +10279,7 @@ "aAW" = ( /obj/structure/rack, /obj/item/clothing/mask/gas, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plating, /area/maintenance/solars/port) "aAX" = ( @@ -10489,7 +10489,7 @@ /area/bridge) "aBz" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /obj/item/storage/secure/safe{ pixel_x = -22; pixel_y = 4 @@ -10702,7 +10702,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = 28 @@ -10872,7 +10872,7 @@ "aCt" = ( /obj/structure/table, /obj/item/wrench, -/obj/item/device/analyzer, +/obj/item/analyzer, /obj/machinery/requests_console{ department = "Tool Storage"; departmentType = 0; @@ -10886,7 +10886,7 @@ /obj/structure/table, /obj/machinery/cell_charger, /obj/item/stock_parts/cell/high/plus, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -10900,15 +10900,15 @@ /area/storage/primary) "aCv" = ( /obj/structure/table, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = -8; pixel_y = -4 }, -/obj/item/device/assembly/igniter, +/obj/item/assembly/igniter, /obj/machinery/camera{ c_tag = "Primary Tool Storage" }, -/obj/item/device/assembly/voice, +/obj/item/assembly/voice, /obj/structure/noticeboard{ pixel_y = 32 }, @@ -10918,14 +10918,14 @@ /area/storage/primary) "aCw" = ( /obj/structure/table, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/signaler, -/obj/item/device/multitool, -/obj/item/device/multitool, +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, +/obj/item/multitool, +/obj/item/multitool, /obj/machinery/airalarm{ pixel_y = 22 }, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/item/electronics/airlock, /turf/open/floor/plasteel/neutral/side{ dir = 1 @@ -11274,7 +11274,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = -26 @@ -11530,7 +11530,7 @@ c_tag = "AI Upload Center"; dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -11761,11 +11761,11 @@ /area/maintenance/department/cargo) "aEm" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp{ +/obj/item/flashlight/lamp{ pixel_x = 3; pixel_y = 6 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -27 @@ -12088,7 +12088,7 @@ pixel_x = -4; pixel_y = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = 27 @@ -12104,7 +12104,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -27 @@ -12235,7 +12235,7 @@ /obj/structure/table/wood, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /turf/open/floor/carpet, /area/security/detectives_office) "aFq" = ( @@ -12261,7 +12261,7 @@ pixel_y = -7 }, /obj/item/electronics/apc, -/obj/item/device/t_scanner, +/obj/item/t_scanner, /turf/open/floor/plasteel/neutral/side{ dir = 8; heat_capacity = 1e+006 @@ -12290,7 +12290,7 @@ /area/storage/primary) "aFw" = ( /obj/structure/table/wood, -/obj/item/device/camera, +/obj/item/camera, /turf/open/floor/carpet, /area/crew_quarters/heads/captain) "aFx" = ( @@ -12348,7 +12348,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /turf/open/floor/plasteel, /area/hallway/primary/central) "aFE" = ( @@ -12550,8 +12550,8 @@ "aGe" = ( /obj/structure/rack, /obj/item/wirecutters, -/obj/item/device/flashlight, -/obj/item/device/gps, +/obj/item/flashlight, +/obj/item/gps, /turf/open/floor/plasteel/neutral/side{ dir = 10 }, @@ -12563,14 +12563,14 @@ "aGg" = ( /obj/structure/table, /obj/item/crowbar, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, /obj/item/clothing/gloves/color/fyellow, /obj/item/clothing/gloves/color/fyellow, -/obj/item/device/assembly/timer, -/obj/item/device/radio, +/obj/item/assembly/timer, +/obj/item/radio, /turf/open/floor/plasteel/neutral/side, /area/storage/primary) "aGh" = ( @@ -14802,7 +14802,7 @@ /area/security/checkpoint/supply) "aMf" = ( /obj/machinery/computer/secure_data, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -15244,7 +15244,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -28 }, @@ -15341,7 +15341,7 @@ pixel_y = 3 }, /obj/item/clothing/shoes/magboots, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -27 @@ -15391,7 +15391,7 @@ "aNu" = ( /obj/structure/closet/crate, /obj/item/melee/flyswatter, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -27 @@ -15515,7 +15515,7 @@ /area/quartermaster/sorting) "aNK" = ( /obj/structure/table, -/obj/item/device/destTagger, +/obj/item/destTagger, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -15749,7 +15749,7 @@ /area/hallway/secondary/exit/departure_lounge) "aOt" = ( /obj/structure/table, -/obj/item/device/instrument/glockenspiel{ +/obj/item/instrument/glockenspiel{ pixel_y = 3 }, /turf/open/floor/plasteel/redblue, @@ -16347,7 +16347,7 @@ /area/storage/eva) "aPM" = ( /obj/structure/table, -/obj/item/device/beacon, +/obj/item/beacon, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel/darkblue/side{ dir = 10 @@ -16467,7 +16467,7 @@ /turf/open/floor/plasteel/floorgrime, /area/quartermaster/warehouse) "aQd" = ( -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/floorgrime, /area/quartermaster/warehouse) @@ -17610,7 +17610,7 @@ }, /area/maintenance/department/crew_quarters/bar) "aSN" = ( -/obj/item/device/assembly/mousetrap, +/obj/item/assembly/mousetrap, /turf/open/floor/wood{ icon_state = "wood-broken6" }, @@ -18129,7 +18129,7 @@ /area/hydroponics) "aTX" = ( /obj/structure/kitchenspike, -/obj/item/device/assembly/mousetrap, +/obj/item/assembly/mousetrap, /obj/item/reagent_containers/food/snacks/deadmouse, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) @@ -18674,7 +18674,7 @@ pixel_x = 28; req_access_txt = "28" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -19096,7 +19096,7 @@ /obj/structure/cable{ icon_state = "2-8" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -19164,7 +19164,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -19327,7 +19327,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -19770,7 +19770,7 @@ /area/hydroponics) "aXX" = ( /obj/machinery/hydroponics/constructable, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -19850,7 +19850,7 @@ "aYh" = ( /obj/structure/table/reinforced, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/instrument/guitar, +/obj/item/instrument/guitar, /turf/open/floor/plasteel/darkred/side{ dir = 1 }, @@ -20045,8 +20045,8 @@ /area/maintenance/department/cargo) "aYE" = ( /obj/structure/table, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/department/cargo) @@ -20097,7 +20097,7 @@ /area/security/checkpoint/customs) "aYK" = ( /obj/structure/closet/secure_closet/security, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -20166,7 +20166,7 @@ /area/crew_quarters/kitchen) "aYU" = ( /obj/machinery/processor, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -20467,7 +20467,7 @@ /obj/machinery/atmospherics/pipe/simple/cyan/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -20726,7 +20726,7 @@ /area/crew_quarters/bar) "bao" = ( /obj/machinery/computer/slot_machine, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -20765,7 +20765,7 @@ "bas" = ( /obj/structure/table, /obj/item/pen, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = -26 @@ -20875,7 +20875,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = -26 @@ -21340,7 +21340,7 @@ "bbN" = ( /obj/structure/rack, /obj/item/clothing/mask/gas, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plating, /area/maintenance/solars/starboard) "bbO" = ( @@ -21531,7 +21531,7 @@ /area/crew_quarters/bar) "bcq" = ( /obj/item/clothing/glasses/monocle, -/obj/item/device/instrument/recorder, +/obj/item/instrument/recorder, /obj/structure/table/wood/fancy, /turf/open/floor/carpet{ icon_state = "carpetsymbol" @@ -22367,7 +22367,7 @@ /area/crew_quarters/bar) "bez" = ( /obj/structure/table/wood, -/obj/item/device/instrument/trombone, +/obj/item/instrument/trombone, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -22797,7 +22797,7 @@ /obj/machinery/computer/security/mining{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -35 }, @@ -22974,7 +22974,7 @@ /obj/structure/chair{ name = "Throne of Custodia" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -23250,7 +23250,7 @@ /area/space) "bgU" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -23276,7 +23276,7 @@ /area/crew_quarters/lounge) "bgY" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -23999,7 +23999,7 @@ /area/crew_quarters/lounge) "biK" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -24026,7 +24026,7 @@ /area/crew_quarters/lounge) "biN" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -24041,7 +24041,7 @@ /area/crew_quarters/lounge) "biO" = ( /obj/structure/table/glass, -/obj/item/device/healthanalyzer{ +/obj/item/healthanalyzer{ layer = 3.1 }, /obj/item/pen{ @@ -24420,7 +24420,7 @@ pixel_y = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -24541,10 +24541,10 @@ /area/science/research/lobby) "bkq" = ( /obj/structure/table, -/obj/item/device/gps{ +/obj/item/gps{ gpstag = "RD0" }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = -4; pixel_y = -4 }, @@ -24923,7 +24923,7 @@ "blr" = ( /obj/structure/table, /obj/item/folder/white, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /turf/open/floor/plasteel/whiteblue/side{ dir = 1 }, @@ -24944,7 +24944,7 @@ /area/hallway/primary/aft) "blv" = ( /obj/structure/table, -/obj/item/device/paicard, +/obj/item/paicard, /obj/item/clothing/glasses/science, /turf/open/floor/plasteel/green/side{ dir = 9 @@ -25128,7 +25128,7 @@ /area/science/server) "blP" = ( /obj/effect/landmark/event_spawn, -/obj/item/device/beacon, +/obj/item/beacon, /obj/machinery/light{ dir = 8 }, @@ -25697,7 +25697,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "bnq" = ( -/obj/item/device/beacon, +/obj/item/beacon, /obj/machinery/atmospherics/pipe/simple/cyan/hidden{ dir = 4 }, @@ -25914,13 +25914,13 @@ /obj/item/stack/sheet/plasteel{ amount = 10 }, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/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/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/machinery/airalarm{ dir = 8; pixel_x = 23 @@ -26005,7 +26005,7 @@ "boe" = ( /obj/structure/table, /obj/machinery/reagentgrinder, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -28 @@ -26215,7 +26215,7 @@ name = "Medbay RC"; pixel_x = -32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 0; frequency = 1485; @@ -26558,7 +26558,7 @@ /area/medical/genetics) "bpy" = ( /obj/machinery/clonepod, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 0; frequency = 1485; @@ -26873,7 +26873,7 @@ }, /obj/item/storage/belt/utility, /obj/item/reagent_containers/glass/beaker/large, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -27 @@ -26983,8 +26983,8 @@ pixel_y = 3 }, /obj/item/stack/sheet/metal/fifty, -/obj/item/device/assembly/timer, -/obj/item/device/assembly/timer, +/obj/item/assembly/timer, +/obj/item/assembly/timer, /turf/open/floor/plasteel/white, /area/science/explab) "bqv" = ( @@ -27522,7 +27522,7 @@ /area/science/research/lobby) "brw" = ( /obj/structure/closet/wardrobe/robotics_black, -/obj/item/device/radio/headset/headset_sci{ +/obj/item/radio/headset/headset_sci{ pixel_x = -3 }, /turf/open/floor/plasteel/vault{ @@ -27538,19 +27538,19 @@ /turf/open/floor/plasteel, /area/science/robotics/lab) "bry" = ( -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, @@ -28039,7 +28039,7 @@ "bsE" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 0; frequency = 1485; @@ -28121,7 +28121,7 @@ /obj/machinery/chem_dispenser{ layer = 2.7 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = 29 @@ -28224,9 +28224,9 @@ empty = 1; name = "First-Aid (empty)" }, -/obj/item/device/healthanalyzer, -/obj/item/device/healthanalyzer, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, +/obj/item/healthanalyzer, +/obj/item/healthanalyzer, /obj/item/stack/cable_coil, /obj/item/stack/cable_coil, /obj/structure/table, @@ -28264,9 +28264,9 @@ /turf/open/floor/plasteel/white, /area/science/robotics/lab) "btd" = ( -/obj/item/device/mmi, -/obj/item/device/mmi, -/obj/item/device/mmi, +/obj/item/mmi, +/obj/item/mmi, +/obj/item/mmi, /obj/structure/table, /turf/open/floor/plasteel/white, /area/science/robotics/lab) @@ -28316,11 +28316,11 @@ /area/science/explab) "btl" = ( /obj/structure/table, -/obj/item/device/electropack, -/obj/item/device/healthanalyzer, -/obj/item/device/assembly/signaler, +/obj/item/electropack, +/obj/item/healthanalyzer, +/obj/item/assembly/signaler, /obj/machinery/light, -/obj/item/device/assembly/voice, +/obj/item/assembly/voice, /obj/machinery/camera{ c_tag = "Experimentation Lab"; dir = 1; @@ -28334,7 +28334,7 @@ pixel_y = 5 }, /obj/item/stack/cable_coil, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/screwdriver, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/white, @@ -28881,7 +28881,7 @@ /turf/open/floor/plasteel, /area/science/explab) "buB" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = -28 @@ -29279,7 +29279,7 @@ }, /area/hallway/primary/aft) "bvv" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -28; @@ -29981,7 +29981,7 @@ /obj/structure/rack, /obj/item/stack/packageWrap, /obj/item/hand_labeler, -/obj/item/device/radio/headset/headset_med, +/obj/item/radio/headset/headset_med, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/white, /area/medical/chemistry) @@ -30679,8 +30679,8 @@ "byf" = ( /obj/structure/table, /obj/item/storage/box/disks, -/obj/item/device/flashlight/pen, -/obj/item/device/flashlight/pen, +/obj/item/flashlight/pen, +/obj/item/flashlight/pen, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -30948,7 +30948,7 @@ /obj/item/stock_parts/manipulator, /obj/item/stock_parts/scanning_module, /obj/item/stock_parts/scanning_module, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plasteel/whitepurple/side, /area/science/lab) "byI" = ( @@ -32304,7 +32304,7 @@ dir = 8; pixel_x = 23 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; freerange = 1; name = "Station Intercom (Telecomms)"; @@ -32420,7 +32420,7 @@ /turf/open/floor/plasteel/dark, /area/science/mixing) "bBN" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -32518,7 +32518,7 @@ "bBZ" = ( /obj/structure/table, /obj/item/pen, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -27 @@ -32641,7 +32641,7 @@ "bCm" = ( /obj/structure/table/glass, /obj/item/clothing/neck/stethoscope, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /turf/open/floor/plasteel/blue, /area/medical/sleeper) "bCn" = ( @@ -33830,7 +33830,7 @@ /obj/machinery/computer/mecha{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = -26 @@ -33844,7 +33844,7 @@ }, /area/crew_quarters/heads/hor) "bES" = ( -/obj/item/device/aicard, +/obj/item/aicard, /obj/item/circuitboard/aicore, /obj/machinery/requests_console{ announcementConsole = 1; @@ -33996,19 +33996,19 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "bFi" = ( -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -4; pixel_y = 1 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 8; pixel_y = 9 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 9; pixel_y = -2 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_y = 2 }, /obj/structure/table/reinforced, @@ -34028,7 +34028,7 @@ /obj/item/screwdriver{ pixel_y = 10 }, -/obj/item/device/analyzer, +/obj/item/analyzer, /turf/open/floor/plasteel/white, /area/science/mixing) "bFl" = ( @@ -34416,7 +34416,7 @@ /area/medical/surgery) "bFV" = ( /obj/structure/table/glass, -/obj/item/device/flashlight/pen, +/obj/item/flashlight/pen, /obj/item/clothing/neck/stethoscope, /obj/item/lipstick/black, /obj/machinery/power/apc{ @@ -34568,18 +34568,18 @@ /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) "bGo" = ( -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_y = 8 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = -8; pixel_y = 5 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = 6; pixel_y = 5 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = -2; pixel_y = -2 }, @@ -34587,37 +34587,37 @@ /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) "bGp" = ( -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve{ pixel_x = -5 }, -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve{ pixel_x = -5 }, -/obj/item/device/transfer_valve, -/obj/item/device/transfer_valve, -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve, +/obj/item/transfer_valve, +/obj/item/transfer_valve{ pixel_x = 5 }, -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve{ pixel_x = 5 }, /obj/structure/table/reinforced, /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) "bGq" = ( -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 5; pixel_y = 4 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = -4; pixel_y = 2 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 6; pixel_y = -4 }, -/obj/item/device/assembly/timer, +/obj/item/assembly/timer, /obj/structure/table/reinforced, /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) @@ -34834,7 +34834,7 @@ icon_state = "shower"; dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 0; frequency = 1485; @@ -34971,10 +34971,10 @@ }, /area/science/research/lobby) "bHk" = ( -/obj/item/device/gps{ +/obj/item/gps{ gpstag = "RD0" }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, @@ -35228,7 +35228,7 @@ /area/maintenance/department/engine) "bHS" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/effect/decal/cleanable/cobweb{ icon_state = "cobweb2" }, @@ -35268,7 +35268,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 0; frequency = 1485; @@ -35297,7 +35297,7 @@ /area/medical/virology) "bIb" = ( /obj/machinery/atmospherics/pipe/simple/cyan/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 0; frequency = 1485; @@ -35397,7 +35397,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 0; frequency = 1485; @@ -35800,7 +35800,7 @@ /obj/structure/table/glass, /obj/item/book/manual/wiki/infections, /obj/item/hand_labeler, -/obj/item/device/radio/headset/headset_med, +/obj/item/radio/headset/headset_med, /obj/machinery/light{ dir = 8 }, @@ -36377,7 +36377,7 @@ dir = 4 }, /obj/effect/landmark/event_spawn, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/white, /area/medical/medbay/central) "bKA" = ( @@ -36545,7 +36545,7 @@ /obj/machinery/atmospherics/pipe/simple/yellow/visible{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -37322,7 +37322,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; freerange = 1; name = "Station Intercom (Telecomms)"; @@ -37525,7 +37525,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = 27 @@ -38086,7 +38086,7 @@ pixel_x = -5; pixel_y = 3 }, -/obj/item/device/multitool{ +/obj/item/multitool{ layer = 4 }, /turf/open/floor/plasteel/yellow/side, @@ -38095,9 +38095,9 @@ /obj/structure/table, /obj/item/stack/sheet/glass/fifty, /obj/item/storage/belt/utility, -/obj/item/device/t_scanner, -/obj/item/device/t_scanner, -/obj/item/device/t_scanner, +/obj/item/t_scanner, +/obj/item/t_scanner, +/obj/item/t_scanner, /turf/open/floor/plasteel/yellow/side, /area/engine/atmos) "bOX" = ( @@ -38469,7 +38469,7 @@ /turf/open/floor/plating/asteroid, /area/chapel/asteroid/monastery) "bQe" = ( -/obj/item/device/flashlight/lantern{ +/obj/item/flashlight/lantern{ on = 1 }, /turf/open/floor/plating/asteroid, @@ -38560,16 +38560,16 @@ /area/storage/tech) "bQs" = ( /obj/structure/table, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/effect/decal/cleanable/cobweb, /obj/structure/extinguisher_cabinet{ pixel_x = -26 @@ -38578,7 +38578,7 @@ /area/storage/tech) "bQt" = ( /obj/structure/table, -/obj/item/device/aicard, +/obj/item/aicard, /obj/item/aiModule/reset, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/airalarm{ @@ -38923,7 +38923,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -39566,7 +39566,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/dark, /area/storage/tech) "bSG" = ( @@ -39681,7 +39681,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bSS" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel, /area/engine/atmos) "bST" = ( @@ -39935,7 +39935,7 @@ pixel_y = 4 }, /obj/item/clothing/gloves/color/yellow, -/obj/item/device/t_scanner, +/obj/item/t_scanner, /turf/open/floor/plasteel/darkgreen, /area/storage/tech) "bTA" = ( @@ -39944,7 +39944,7 @@ pixel_x = 2; pixel_y = 4 }, -/obj/item/device/multitool, +/obj/item/multitool, /obj/machinery/requests_console{ department = "Tech storage"; pixel_y = -32 @@ -40067,7 +40067,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = 30; @@ -40262,7 +40262,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 24 @@ -40773,7 +40773,7 @@ /obj/item/wallframe/camera, /obj/item/wallframe/camera, /obj/item/wallframe/camera, -/obj/item/device/assault_pod/mining, +/obj/item/assault_pod/mining, /turf/open/floor/plating{ icon_state = "platingdmg3" }, @@ -41500,7 +41500,7 @@ /turf/open/floor/plating, /area/maintenance/department/engine) "bXc" = ( -/obj/item/device/flashlight, +/obj/item/flashlight, /turf/open/floor/plating, /area/maintenance/department/engine) "bXd" = ( @@ -42282,7 +42282,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -43034,11 +43034,11 @@ /area/chapel/main/monastery) "caV" = ( /obj/machinery/holopad, -/obj/item/device/flashlight/lantern, +/obj/item/flashlight/lantern, /turf/open/floor/plasteel/chapel, /area/chapel/main/monastery) "caW" = ( -/obj/item/device/flashlight/lantern, +/obj/item/flashlight/lantern, /turf/open/floor/plasteel/chapel{ dir = 8 }, @@ -43070,7 +43070,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -27 @@ -43108,7 +43108,7 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/table/glass, -/obj/item/device/flashlight, +/obj/item/flashlight, /turf/open/floor/plasteel, /area/engine/engineering) "cbg" = ( @@ -43580,7 +43580,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) "ccL" = ( -/obj/item/device/flashlight/lantern{ +/obj/item/flashlight/lantern{ on = 1 }, /turf/open/floor/plasteel/asteroid{ @@ -43618,7 +43618,7 @@ /obj/item/stack/sheet/mineral/plasma{ amount = 30 }, -/obj/item/device/gps{ +/obj/item/gps{ gpstag = "ENG0" }, /turf/open/floor/plating, @@ -44771,7 +44771,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/item/device/flashlight/lantern, +/obj/item/flashlight/lantern, /turf/open/floor/plasteel/grimy, /area/chapel/main/monastery) "cgO" = ( @@ -45015,7 +45015,7 @@ dir = 1 }, /obj/effect/decal/cleanable/cobweb, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -45053,7 +45053,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/item/device/instrument/violin, +/obj/item/instrument/violin, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -45556,7 +45556,7 @@ /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-22" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -45843,7 +45843,7 @@ /turf/closed/mineral/random/low_chance, /area/asteroid/nearstation/bomb_site) "ckL" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plating/airless, /area/asteroid/nearstation/bomb_site) "ckM" = ( @@ -45960,7 +45960,7 @@ /turf/open/floor/plasteel/dark, /area/library) "clj" = ( -/obj/item/device/flashlight/lantern{ +/obj/item/flashlight/lantern{ on = 1 }, /turf/open/floor/plating/asteroid/airless, @@ -46119,7 +46119,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel, /area/tcommsat/computer) "clS" = ( @@ -46215,7 +46215,7 @@ "cmf" = ( /obj/structure/rack, /obj/item/storage/toolbox/mechanical, -/obj/item/device/radio, +/obj/item/radio, /obj/machinery/airalarm{ dir = 4; pixel_x = -22 @@ -46253,7 +46253,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = 26 }, @@ -46749,7 +46749,7 @@ c_tag = "Brig Equipment Room"; dir = 2 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = 29 }, @@ -46981,7 +46981,7 @@ /turf/open/floor/plasteel/neutral/corner, /area/hallway/secondary/exit/departure_lounge) "coT" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) "coV" = ( @@ -47135,7 +47135,7 @@ /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) "cpt" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -47801,7 +47801,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) "csn" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -48977,7 +48977,7 @@ /turf/open/space, /area/space/nearstation) "cwO" = ( -/obj/item/device/flashlight/lantern, +/obj/item/flashlight/lantern, /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) "cwR" = ( @@ -49281,7 +49281,7 @@ /area/library) "czo" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -49337,7 +49337,7 @@ /area/library) "czC" = ( /obj/structure/table/wood/fancy, -/obj/item/device/flashlight/lantern{ +/obj/item/flashlight/lantern{ on = 1; pixel_y = 8 }, @@ -49381,7 +49381,7 @@ /area/library) "czO" = ( /obj/structure/table/wood, -/obj/item/device/instrument/saxophone, +/obj/item/instrument/saxophone, /turf/open/floor/plasteel/dark, /area/library) "czP" = ( @@ -49476,7 +49476,7 @@ /area/library) "cAt" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lantern{ +/obj/item/flashlight/lantern{ pixel_y = 8 }, /turf/open/floor/plasteel/vault{ @@ -49493,7 +49493,7 @@ /area/library) "cAv" = ( /obj/structure/table/wood, -/obj/item/device/camera, +/obj/item/camera, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/vault{ dir = 5 @@ -49954,8 +49954,8 @@ /area/quartermaster/office) "ejp" = ( /obj/structure/table/reinforced, -/obj/item/device/integrated_circuit_printer, -/obj/item/device/integrated_electronics/wirer, +/obj/item/integrated_circuit_printer, +/obj/item/integrated_electronics/wirer, /turf/open/floor/plasteel/whitepurple/side{ dir = 1 }, @@ -50145,7 +50145,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/integrated_electronics/debugger, +/obj/item/integrated_electronics/debugger, /turf/open/floor/plasteel/whitepurple/side{ dir = 1 }, @@ -50440,8 +50440,8 @@ pixel_x = 10 }, /obj/structure/rack, -/obj/item/device/multitool, -/obj/item/device/multitool, +/obj/item/multitool, +/obj/item/multitool, /obj/item/screwdriver, /obj/item/screwdriver, /turf/open/floor/plasteel/white, @@ -50518,7 +50518,7 @@ /area/engine/break_room) "ptq" = ( /obj/structure/table/reinforced, -/obj/item/device/integrated_electronics/analyzer, +/obj/item/integrated_electronics/analyzer, /turf/open/floor/plasteel/white, /area/science/circuit) "pWF" = ( @@ -50559,7 +50559,7 @@ pixel_x = 20; pixel_y = -6 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27; @@ -50717,7 +50717,7 @@ dir = 4 }, /obj/structure/table/reinforced, -/obj/item/device/integrated_electronics/analyzer, +/obj/item/integrated_electronics/analyzer, /turf/open/floor/plasteel/white, /area/science/circuit) "ukn" = ( @@ -50775,8 +50775,8 @@ network = list("rd"); pixel_y = 32 }, -/obj/item/device/integrated_circuit_printer, -/obj/item/device/integrated_electronics/debugger, +/obj/item/integrated_circuit_printer, +/obj/item/integrated_electronics/debugger, /turf/open/floor/plasteel/whitepurple/side{ dir = 1 }, @@ -50793,7 +50793,7 @@ /area/crew_quarters/fitness/recreation) "vJd" = ( /obj/structure/table/reinforced, -/obj/item/device/integrated_electronics/wirer, +/obj/item/integrated_electronics/wirer, /turf/open/floor/plasteel/white, /area/science/circuit) "vMX" = ( diff --git a/_maps/cit_map_files/generic/CentCom.dmm b/_maps/cit_map_files/generic/CentCom.dmm index 4804bc4534..bb43763955 100644 --- a/_maps/cit_map_files/generic/CentCom.dmm +++ b/_maps/cit_map_files/generic/CentCom.dmm @@ -82,7 +82,7 @@ /area/holodeck/rec_center/lounge) "ao" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ layer = 3.3 }, /turf/open/floor/holofloor{ @@ -312,7 +312,7 @@ /area/holodeck/rec_center/court) "aY" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_y = 4 }, /turf/open/floor/holofloor/carpet, @@ -341,7 +341,7 @@ /area/holodeck/rec_center/bunker) "bd" = ( /obj/structure/table/wood, -/obj/item/device/instrument/violin, +/obj/item/instrument/violin, /turf/open/floor/holofloor/carpet, /area/holodeck/rec_center/lounge) "be" = ( @@ -754,7 +754,7 @@ /area/holodeck/rec_center/medical) "ct" = ( /obj/structure/table/glass, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /turf/open/floor/holofloor{ icon_state = "white" }, @@ -2526,6 +2526,10 @@ /obj/machinery/capture_the_flag/red, /turf/open/floor/circuit/green/anim, /area/ctf) +"hH" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/wood, +/area/centcom/holding) "hI" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -2751,15 +2755,15 @@ /area/centcom/control) "iv" = ( /obj/structure/table/reinforced, -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = 5; pixel_y = 5 }, -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = -5; pixel_y = 5 }, -/obj/item/device/radio, +/obj/item/radio, /obj/machinery/airalarm{ pixel_y = 23 }, @@ -2795,7 +2799,7 @@ "iy" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs/cable/zipties, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/centcom/control) @@ -3324,6 +3328,10 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/centcom/supply) +"jO" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/wood, +/area/centcom/holding) "jP" = ( /obj/machinery/conveyor_switch/oneway{ dir = 8; @@ -3429,7 +3437,7 @@ /area/centcom/control) "kc" = ( /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/structure/table/wood, /turf/open/floor/plasteel/vault{ dir = 8 @@ -3438,7 +3446,7 @@ "kd" = ( /obj/item/wrench, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/structure/table/wood, /turf/open/floor/plasteel/vault{ dir = 8 @@ -3821,7 +3829,7 @@ "lb" = ( /obj/structure/table/wood, /obj/machinery/door/window, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk smack through this."; syndie = 1 }, @@ -3839,7 +3847,7 @@ /area/centcom/control) "ld" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk smack through this."; syndie = 1 }, @@ -3857,7 +3865,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/item/device/megaphone, +/obj/item/megaphone, /obj/structure/window/reinforced, /turf/open/floor/plasteel/grimy, /area/centcom/control) @@ -3944,7 +3952,7 @@ /obj/structure/table/reinforced, /obj/item/wrench, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/effect/turf_decal/stripes/line{ dir = 4 }, @@ -3953,7 +3961,7 @@ "lv" = ( /obj/structure/table/reinforced, /obj/item/gun/ballistic/automatic/wt550, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -4137,7 +4145,7 @@ /obj/structure/chair{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk smack through this."; pixel_x = -32; syndie = 1 @@ -4178,7 +4186,6 @@ /area/syndicate_mothership) "mb" = ( /obj/structure/table/reinforced, -/obj/machinery/computer/stockexchange, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -4277,7 +4284,7 @@ /area/centcom/control) "mn" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk smack through this."; syndie = 1 }, @@ -4526,7 +4533,7 @@ "mX" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs/cable/zipties, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -4672,7 +4679,7 @@ "nt" = ( /obj/structure/table/wood, /obj/item/storage/photo_album, -/obj/item/device/camera, +/obj/item/camera, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -4972,9 +4979,9 @@ /area/centcom/ferry) "of" = ( /obj/structure/table/wood, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/item/storage/box/handcuffs, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, /obj/structure/noticeboard{ pixel_y = 28 }, @@ -4985,7 +4992,7 @@ "og" = ( /obj/structure/table/wood, /obj/item/storage/photo_album, -/obj/item/device/camera, +/obj/item/camera, /obj/structure/reagent_dispensers/peppertank{ pixel_y = 32 }, @@ -5026,7 +5033,7 @@ /area/centcom/ferry) "ol" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/requests_console{ announcementConsole = 1; department = "Captain's Desk"; @@ -5254,7 +5261,6 @@ /area/centcom/ferry) "oM" = ( /obj/structure/table/reinforced, -/obj/machinery/computer/stockexchange, /obj/effect/turf_decal/stripes/line{ dir = 5 }, @@ -5320,6 +5326,19 @@ dir = 8 }, /area/tdome/tdomeobserve) +"oU" = ( +/obj/structure/closet/secure_closet/bar{ + req_access_txt = "25" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"oV" = ( +/obj/structure/reagent_dispensers/beerkeg, +/turf/open/floor/wood, +/area/centcom/holding) "oW" = ( /obj/structure/flora/bush, /obj/effect/light_emitter{ @@ -5564,6 +5583,70 @@ dir = 8 }, /area/centcom/control) +"px" = ( +/obj/machinery/chem_dispenser/drinks/beer, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/centcom/holding) +"py" = ( +/obj/machinery/chem_dispenser/drinks, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/centcom/holding) +"pz" = ( +/obj/item/storage/box/donkpockets{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/centcom/holding) +"pA" = ( +/obj/machinery/vending/cola/random, +/turf/open/floor/wood, +/area/centcom/holding) +"pB" = ( +/obj/structure/rack, +/obj/item/toy/sword, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/coin/gold{ + pixel_x = 8; + pixel_y = -3 + }, +/obj/item/camera, +/turf/open/floor/wood, +/area/centcom/holding) +"pC" = ( +/obj/structure/rack, +/obj/item/toy/gun, +/obj/item/coin/gold{ + pixel_w = -9; + pixel_y = 6 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"pD" = ( +/obj/machinery/computer/arcade/battle, +/turf/open/floor/wood, +/area/centcom/holding) +"pE" = ( +/obj/machinery/computer/arcade/orion_trail, +/turf/open/floor/wood, +/area/centcom/holding) "pF" = ( /obj/machinery/door/airlock/centcom{ name = "Auxillary Dock"; @@ -5663,7 +5746,7 @@ /obj/item/cartridge/quartermaster{ pixel_y = 6 }, -/obj/item/device/gps/mining, +/obj/item/gps/mining, /obj/effect/turf_decal/stripes/line{ dir = 6 }, @@ -5688,6 +5771,25 @@ dir = 5 }, /area/centcom/ferry) +"pS" = ( +/obj/machinery/computer/slot_machine, +/turf/open/floor/wood, +/area/centcom/holding) +"pT" = ( +/obj/machinery/vending/snack/random, +/turf/open/floor/wood, +/area/centcom/holding) +"pU" = ( +/turf/open/floor/wood, +/area/centcom/holding) +"pV" = ( +/obj/item/clothing/head/that, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/centcom/holding) +"pW" = ( +/turf/open/floor/carpet/black, +/area/centcom/holding) "pX" = ( /obj/item/storage/crayons, /obj/structure/table, @@ -5720,7 +5822,7 @@ /obj/item/folder/red, /obj/item/book/manual/wiki/security_space_law, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/machinery/airalarm{ dir = 1; pixel_y = -22 @@ -5789,7 +5891,7 @@ /area/centcom/ferry) "qj" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/vault, /area/centcom/ferry) "qk" = ( @@ -5953,6 +6055,30 @@ "qE" = ( /turf/closed/indestructible/riveted/uranium, /area/wizard_station) +"qF" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/turf/open/floor/carpet/black, +/area/centcom/holding) +"qG" = ( +/obj/structure/table/wood, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/box/drinkingglasses{ + pixel_x = 2; + pixel_y = 4 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"qH" = ( +/obj/item/reagent_containers/food/drinks/shaker, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/centcom/holding) +"qI" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/centcom/holding) "qJ" = ( /obj/machinery/computer/shuttle/syndicate/recall, /turf/open/floor/plasteel/bar{ @@ -6078,6 +6204,16 @@ /obj/machinery/computer/shuttle, /turf/open/floor/engine/cult, /area/wizard_station) +"rb" = ( +/obj/item/lighter, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/centcom/holding) +"rc" = ( +/obj/item/reagent_containers/food/drinks/soda_cans/cola, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/centcom/holding) "rd" = ( /obj/structure/flora/grass/brown, /obj/effect/light_emitter{ @@ -6137,7 +6273,7 @@ "rk" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -6148,7 +6284,7 @@ }, /obj/structure/table/reinforced, /obj/item/clipboard, -/obj/item/device/radio/headset/headset_cent, +/obj/item/radio/headset/headset_cent, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -6246,7 +6382,7 @@ /turf/open/floor/wood, /area/centcom/ferry) "rw" = ( -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/structure/table/reinforced, /turf/open/floor/plasteel/vault{ dir = 8 @@ -6440,7 +6576,7 @@ /obj/structure/table/reinforced, /obj/item/wrench, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -6504,6 +6640,48 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) +"rY" = ( +/obj/item/dice/d20, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/centcom/holding) +"rZ" = ( +/obj/structure/rack, +/obj/item/clothing/head/that, +/obj/item/clothing/under/suit_jacket, +/obj/item/clothing/accessory/waistcoat, +/turf/open/floor/wood, +/area/centcom/holding) +"sa" = ( +/obj/structure/rack, +/obj/item/storage/crayons, +/obj/item/gun/ballistic/automatic/toy/pistol, +/obj/item/ammo_box/foambox, +/turf/open/floor/wood, +/area/centcom/holding) +"sb" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"sc" = ( +/obj/structure/rack, +/obj/item/storage/crayons, +/obj/item/gun/ballistic/shotgun/toy/crossbow, +/turf/open/floor/wood, +/area/centcom/holding) +"sd" = ( +/obj/structure/rack, +/obj/item/clothing/shoes/laceup, +/obj/item/clothing/under/suit_jacket/female{ + desc = "A black trouser suit for women. Very formal."; + name = "black suit"; + pixel_x = 3; + pixel_y = 1 + }, +/turf/open/floor/wood, +/area/centcom/holding) "se" = ( /obj/machinery/light{ dir = 8 @@ -6514,7 +6692,7 @@ /area/syndicate_mothership/control) "sf" = ( /obj/structure/table/wood, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/plasteel/bar{ dir = 2 }, @@ -6671,7 +6849,7 @@ "sA" = ( /obj/item/clipboard, /obj/structure/table/reinforced, -/obj/item/device/detective_scanner, +/obj/item/detective_scanner, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -6905,6 +7083,34 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) +"sY" = ( +/mob/living/simple_animal/bot/medbot, +/turf/open/floor/wood, +/area/centcom/holding) +"sZ" = ( +/obj/machinery/sleeper{ + dir = 8 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"ta" = ( +/obj/machinery/light, +/turf/open/floor/wood, +/area/centcom/holding) +"tb" = ( +/obj/machinery/vending/clothing, +/turf/open/floor/wood, +/area/centcom/holding) +"tc" = ( +/obj/structure/closet/wardrobe/mixed, +/turf/open/floor/wood, +/area/centcom/holding) +"td" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/costume, +/obj/effect/spawner/lootdrop/costume, +/turf/open/floor/wood, +/area/centcom/holding) "te" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/snacks/pizzaslice/mushroom, @@ -6945,6 +7151,40 @@ }, /turf/open/floor/plating/airless, /area/syndicate_mothership/control) +"tj" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/costume, +/obj/effect/spawner/lootdrop/costume, +/obj/machinery/light, +/obj/machinery/button/door{ + id = "Ninjaholdingsuicide"; + name = "SUICIDE CHAMBER LOCK"; + normaldoorcontrol = 1; + pixel_x = 4; + pixel_y = -24; + specialfunctions = 4 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"tk" = ( +/obj/machinery/door/airlock/wood/glass{ + name = "Private Rooms" + }, +/turf/open/floor/wood, +/area/centcom/holding) +"tl" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + id_tag = "Ninjaholdingsuicide"; + locked = 1; + name = "SUICIDE CHAMBER" + }, +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/centcom/holding) +"tm" = ( +/turf/open/floor/carpet, +/area/centcom/holding) "tn" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -7034,7 +7274,7 @@ /obj/structure/table/reinforced, /obj/item/folder/red, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -7133,7 +7373,7 @@ /area/centcom/ferry) "tH" = ( /obj/item/gun/energy/pulse/carbine/loyalpin, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, /obj/structure/table/reinforced, /obj/machinery/airalarm{ dir = 1; @@ -7245,6 +7485,10 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/centcom/evac) +"tW" = ( +/obj/structure/table/wood/fancy/black, +/turf/open/floor/carpet, +/area/centcom/holding) "tX" = ( /obj/machinery/door/airlock{ icon = 'icons/obj/doors/airlocks/station/uranium.dmi'; @@ -7252,6 +7496,40 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) +"tY" = ( +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/centcom/holding) +"tZ" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"ua" = ( +/obj/structure/plasticflaps, +/turf/open/floor/wood{ + icon_state = "wood-broken4" + }, +/area/centcom/holding) +"ub" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "Proom1"; + name = "Room 1" + }, +/turf/open/floor/wood, +/area/centcom/holding) +"uc" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/chair/comfy/black{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/centcom/holding) "ud" = ( /obj/machinery/door/poddoor/shutters{ id = "nukeop_ready"; @@ -7265,6 +7543,25 @@ }, /turf/open/floor/plating/airless, /area/syndicate_mothership/control) +"uf" = ( +/turf/open/lava, +/area/centcom/holding) +"ug" = ( +/obj/machinery/button/door{ + id = "Proom1"; + name = "Door Lock"; + normaldoorcontrol = 1; + pixel_x = -24; + pixel_y = 4; + specialfunctions = 4 + }, +/obj/structure/bed, +/obj/item/bedsheet/random, +/turf/open/floor/carpet, +/area/centcom/holding) +"uh" = ( +/turf/open/chasm/lavaland, +/area/centcom/holding) "ui" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -7453,7 +7750,7 @@ /area/wizard_station) "uD" = ( /obj/structure/table/wood/fancy, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk smack through this."; syndie = 1 }, @@ -7466,12 +7763,37 @@ /obj/structure/chair/wood/wings, /turf/open/floor/carpet, /area/wizard_station) +"uG" = ( +/obj/structure/chair/sofa/left, +/turf/open/floor/carpet, +/area/centcom/holding) +"uH" = ( +/obj/structure/chair/sofa/corner{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/centcom/holding) +"uI" = ( +/obj/structure/chair/sofa, +/turf/open/floor/carpet, +/area/centcom/holding) "uJ" = ( /obj/machinery/door/airlock/external{ req_access_txt = "150" }, /turf/open/floor/plating, /area/syndicate_mothership/control) +"uK" = ( +/obj/machinery/button/door{ + id = "Proom2"; + name = "Door Lock"; + normaldoorcontrol = 1; + pixel_x = 24; + pixel_y = 4; + specialfunctions = 4 + }, +/turf/open/floor/carpet, +/area/centcom/holding) "uL" = ( /obj/machinery/button/door{ id = "nukeop_ready"; @@ -7490,6 +7812,10 @@ }, /turf/open/floor/mineral/plastitanium, /area/syndicate_mothership/control) +"uN" = ( +/obj/structure/table/wood/poker, +/turf/open/floor/carpet, +/area/centcom/holding) "uO" = ( /obj/machinery/door/airlock/centcom{ name = "Shuttle Control Office"; @@ -7695,6 +8021,45 @@ }, /turf/open/floor/carpet, /area/wizard_station) +"vo" = ( +/obj/structure/chair/sofa{ + icon_state = "sofamiddle"; + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/centcom/holding) +"vp" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"vq" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "Proom2"; + name = "Room 2" + }, +/turf/open/floor/wood, +/area/centcom/holding) +"vr" = ( +/obj/structure/chair/sofa/corner{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/centcom/holding) +"vs" = ( +/obj/structure/chair/sofa/left{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/centcom/holding) +"vt" = ( +/obj/machinery/vending/games, +/turf/open/floor/carpet, +/area/centcom/holding) "vu" = ( /obj/item/storage/box/drinkingglasses, /obj/item/reagent_containers/food/drinks/bottle/rum, @@ -7707,7 +8072,7 @@ /area/syndicate_mothership/control) "vw" = ( /obj/structure/table/wood, -/obj/item/device/syndicatedetonator{ +/obj/item/syndicatedetonator{ desc = "This gaudy button can be used to instantly detonate syndicate bombs that have been activated on the station. It is also fun to press." }, /turf/open/floor/wood, @@ -7717,6 +8082,19 @@ /obj/item/toy/nuke, /turf/open/floor/wood, /area/syndicate_mothership/control) +"vy" = ( +/obj/structure/chair/sofa{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/centcom/holding) +"vz" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "Proom3"; + name = "Room 3" + }, +/turf/open/floor/wood, +/area/centcom/holding) "vA" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/directions/engineering{ @@ -7844,7 +8222,7 @@ }, /area/centcom/control) "vL" = ( -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/structure/table/reinforced, /turf/open/floor/plasteel/vault{ dir = 8 @@ -7984,6 +8362,68 @@ }, /turf/open/floor/carpet, /area/wizard_station) +"we" = ( +/obj/machinery/button/door{ + id = "Proom3"; + name = "Door Lock"; + normaldoorcontrol = 1; + pixel_x = -24; + pixel_y = 4; + specialfunctions = 4 + }, +/obj/structure/bed, +/obj/item/bedsheet/random, +/turf/open/floor/carpet, +/area/centcom/holding) +"wf" = ( +/obj/machinery/button/door{ + id = "Proom4"; + name = "Door Lock"; + normaldoorcontrol = 1; + pixel_x = 24; + pixel_y = 4; + specialfunctions = 4 + }, +/turf/open/floor/carpet, +/area/centcom/holding) +"wg" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "Proom4"; + name = "Room 4" + }, +/turf/open/floor/wood, +/area/centcom/holding) +"wh" = ( +/obj/structure/table/wood, +/obj/item/soap/nanotrasen, +/obj/item/reagent_containers/spray/cleaner, +/turf/open/floor/wood, +/area/centcom/holding) +"wi" = ( +/obj/structure/table/wood, +/obj/structure/bedsheetbin, +/turf/open/floor/wood, +/area/centcom/holding) +"wj" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "Proom5"; + name = "Room 5" + }, +/turf/open/floor/wood, +/area/centcom/holding) +"wk" = ( +/obj/machinery/button/door{ + id = "Proom5"; + name = "Door Lock"; + normaldoorcontrol = 1; + pixel_x = -24; + pixel_y = 4; + specialfunctions = 4 + }, +/obj/structure/bed, +/obj/item/bedsheet/random, +/turf/open/floor/carpet, +/area/centcom/holding) "wl" = ( /obj/machinery/light, /turf/open/floor/wood, @@ -8197,7 +8637,7 @@ /area/wizard_station) "wP" = ( /obj/structure/table/wood/fancy, -/obj/item/device/camera/spooky, +/obj/item/camera/spooky, /turf/open/floor/carpet, /area/wizard_station) "wQ" = ( @@ -8868,7 +9308,7 @@ "zg" = ( /obj/structure/table/reinforced, /obj/item/gun/ballistic/automatic/wt550, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, /obj/structure/noticeboard{ pixel_y = 28 }, @@ -8966,7 +9406,7 @@ "zy" = ( /obj/structure/table, /obj/item/gun/energy/ionrifle{ - pin = /obj/item/device/firing_pin + pin = /obj/item/firing_pin }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -9155,7 +9595,7 @@ "Aj" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs, -/obj/item/device/radio, +/obj/item/radio, /obj/effect/turf_decal/stripes/line{ dir = 9 }, @@ -9281,7 +9721,7 @@ /area/centcom/ferry) "AL" = ( /obj/structure/table/reinforced, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -9450,7 +9890,7 @@ "Bw" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /turf/open/floor/plasteel/grimy, /area/centcom/ferry) "Bx" = ( @@ -9481,7 +9921,7 @@ "BA" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs/cable/zipties, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -9684,7 +10124,7 @@ "BZ" = ( /obj/structure/table/wood, /obj/item/clipboard, -/obj/item/device/radio/headset/headset_cent, +/obj/item/radio/headset/headset_cent, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -9722,7 +10162,7 @@ "Ce" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs/cable/zipties, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -9773,7 +10213,7 @@ /obj/item/folder/red, /obj/item/book/manual/wiki/security_space_law, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -9861,15 +10301,15 @@ }, /area/centcom/ferry) "CA" = ( -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = 5; pixel_y = 5 }, -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = -5; pixel_y = 5 }, -/obj/item/device/radio, +/obj/item/radio, /obj/structure/table/wood, /turf/open/floor/plasteel/vault{ dir = 8 @@ -9943,7 +10383,7 @@ "CH" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/machinery/firealarm{ dir = 4; pixel_x = 24 @@ -10220,7 +10660,7 @@ "DA" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -10765,77 +11205,6 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) -"EZ" = ( -/obj/structure/table, -/turf/open/floor/plasteel/freezer{ - dir = 2 - }, -/area/centcom/holding) -"Fa" = ( -/turf/open/floor/plasteel/freezer{ - dir = 2 - }, -/area/centcom/holding) -"Fb" = ( -/obj/structure/closet/secure_closet/bar{ - req_access_txt = "25" - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/freezer{ - dir = 2 - }, -/area/centcom/holding) -"Fc" = ( -/obj/structure/reagent_dispensers/beerkeg, -/turf/open/floor/plasteel/freezer{ - dir = 2 - }, -/area/centcom/holding) -"Fd" = ( -/obj/structure/table, -/obj/item/storage/box/donkpockets{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/donkpockets{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/donkpockets{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/donkpockets{ - pixel_x = 3; - pixel_y = 3 - }, -/turf/open/floor/plasteel/freezer{ - dir = 2 - }, -/area/centcom/holding) -"Fe" = ( -/obj/structure/rack, -/obj/item/device/camera, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) -"Ff" = ( -/obj/structure/rack, -/obj/item/toy/sword, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) -"Fg" = ( -/obj/structure/rack, -/obj/item/toy/gun, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) -"Fh" = ( -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) "Fi" = ( /turf/open/floor/plating/beach/sand, /area/centcom/holding) @@ -10952,21 +11321,8 @@ dir = 5 }, /area/tdome/tdomeobserve) -"FA" = ( -/obj/structure/table, -/obj/item/clothing/head/that, -/turf/open/floor/plasteel/freezer{ - dir = 2 - }, -/area/centcom/holding) -"FB" = ( -/obj/structure/chair/stool{ - pixel_y = 8 - }, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) "FC" = ( -/obj/item/device/camera, +/obj/item/camera, /turf/open/floor/plating/beach/sand, /area/centcom/holding) "FD" = ( @@ -11071,41 +11427,6 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) -"FU" = ( -/obj/structure/table, -/obj/item/ammo_box/foambox, -/turf/open/floor/plasteel/freezer{ - dir = 2 - }, -/area/centcom/holding) -"FV" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/shaker, -/turf/open/floor/plasteel/freezer{ - dir = 2 - }, -/area/centcom/holding) -"FW" = ( -/obj/structure/table, -/obj/item/lighter, -/turf/open/floor/plasteel/freezer{ - dir = 2 - }, -/area/centcom/holding) -"FX" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/soda_cans/cola, -/turf/open/floor/plasteel/freezer{ - dir = 2 - }, -/area/centcom/holding) -"FY" = ( -/obj/structure/table, -/obj/item/dice/d20, -/turf/open/floor/plasteel/freezer{ - dir = 2 - }, -/area/centcom/holding) "FZ" = ( /obj/structure/chair/stool{ pixel_y = 8 @@ -11226,13 +11547,6 @@ }, /turf/open/lava, /area/wizard_station) -"Gs" = ( -/obj/structure/rack, -/obj/item/clothing/head/that, -/obj/item/clothing/under/suit_jacket, -/obj/item/clothing/accessory/waistcoat, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) "Gt" = ( /obj/item/toy/beach_ball, /turf/open/floor/plating/beach/sand, @@ -11280,18 +11594,6 @@ }, /turf/open/lava/airless, /area/wizard_station) -"GA" = ( -/obj/structure/rack, -/obj/item/storage/crayons, -/obj/item/gun/ballistic/automatic/toy/pistol, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) -"GB" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) "GC" = ( /obj/structure/table, /obj/structure/bedsheetbin, @@ -11524,12 +11826,6 @@ /obj/structure/shuttle/engine/propulsion, /turf/open/space, /area/wizard_station) -"GY" = ( -/obj/structure/rack, -/obj/item/storage/crayons, -/obj/item/gun/ballistic/shotgun/toy/crossbow, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) "GZ" = ( /turf/open/floor/plating/beach/coastline_b, /area/centcom/holding) @@ -11582,33 +11878,6 @@ dir = 4 }, /area/tdome/tdomeobserve) -"Hi" = ( -/obj/structure/rack, -/obj/item/clothing/shoes/laceup, -/obj/item/clothing/under/suit_jacket/female{ - desc = "A black trouser suit for women. Very formal."; - name = "black suit"; - pixel_x = 3; - pixel_y = 1 - }, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) -"Hj" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) -"Hk" = ( -/obj/structure/table, -/obj/item/gun/ballistic/automatic/toy/pistol, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) -"Hl" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/light, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) "Hm" = ( /turf/open/floor/plating/beach/water, /area/centcom/holding) @@ -12542,15 +12811,15 @@ }, /area/tdome/tdomeadmin) "JP" = ( -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = 5; pixel_y = 5 }, -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = -5; pixel_y = 5 }, -/obj/item/device/radio, +/obj/item/radio, /obj/structure/table/wood, /turf/open/floor/plasteel/vault{ dir = 8 @@ -12724,7 +12993,7 @@ /obj/item/folder/red, /obj/item/book/manual/wiki/security_space_law, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -12732,7 +13001,7 @@ "Kq" = ( /obj/structure/table/wood, /obj/item/clipboard, -/obj/item/device/radio/headset/headset_cent, +/obj/item/radio/headset/headset_cent, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -13072,7 +13341,7 @@ /area/centcom/evac) "Ln" = ( /obj/structure/table, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/mineral/plastitanium, /area/centcom/evac) "Lo" = ( @@ -13174,7 +13443,7 @@ /area/centcom/evac) "LE" = ( /obj/structure/table, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/mineral/titanium/blue, /area/centcom/evac) "LF" = ( @@ -13202,7 +13471,7 @@ /area/centcom/evac) "LJ" = ( /obj/structure/table, -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/machinery/light{ dir = 4 }, @@ -39485,25 +39754,25 @@ aa aa aa ED -EZ -EZ -FU -Gs -GA -GY -Hi +hH +pU +qG +rZ +sa +sc +sd +ED +ED +ED +ED +ED +ED +ED +ED ED ED ED ED -aa -aa -aa -aa -aa -aa -aa -aa aa aa aa @@ -39742,25 +40011,25 @@ aa aa aa ED -Fa -Fa -Fa -Fh -Fh -Fh -Fh +jO +pU +pU +pW +pW +pW +pU Hy HH HH ED -aa -aa -aa -aa -aa -aa -aa -aa +uH +vo +vr +ED +uH +vo +vr +ED aa aa aa @@ -39999,25 +40268,25 @@ aa aa aa ED -Fb -Fa -FV -FB -Fh -Fh -Fh +oU +pU +qH +qF +pW +pW +pU Hz HH HH ED -aa -aa -aa -aa -aa -aa -aa -aa +uI +uN +vy +ED +uI +uN +vy +ED aa aa aa @@ -40256,25 +40525,25 @@ aa aa aa ED -Fc -Fa -EZ -FB -Fh -Fh -Fh +oV +pU +qI +qF +pW +pW +sY Hz HH HH ED -aa -aa -aa -aa -aa -aa -aa -aa +uG +uN +vs +ED +uG +uN +vs +ED aa aa aa @@ -40513,25 +40782,25 @@ aa aa aa ED -Fc -Fa -FW -FB -Fh -Fh -Fh +px +pU +rb +qF +pW +pW +sZ Hy HH HH ED -aa -aa -aa -aa -aa -aa -aa -aa +tm +tm +tm +ED +tm +tm +tm +ED aa aa aa @@ -40770,25 +41039,25 @@ aa aa aa ED -Fa -Fa -FX -FB -Fh -Fh -Hj +py +pU +rc +qF +pW +pW +ta ED ED ED ED -aa -aa -aa -aa -aa -aa -aa -aa +uK +tm +vt +ED +wf +tm +vt +ED aa aa aa @@ -41027,26 +41296,26 @@ aa aa aa ED -Fd -FA -FY -FB -Fh -Fh -Fh +pz +pV +rY +qF +pW +pW +pU +ED +ED +ED +ED +ED +vq +ED +ED +ED +wg +ED +ED ED -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa aa aa aa @@ -41284,13 +41553,25 @@ aa aa aa ED -Fe -Fh -Fh -Fh -Fh -Fh -Fh +pA +pW +pW +pW +pW +pW +pU +tk +pU +tZ +pU +pU +pU +pU +pU +pU +pU +tZ +wh ED aa aa @@ -41301,18 +41582,6 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa KH KU Lb @@ -41541,13 +41810,25 @@ aa aa aa ED -Ff -Fh -Fh -Fh -Fh -Fh -FB +pB +pW +pW +pW +pW +pW +pU +tk +pU +pU +pU +pU +vp +pU +pU +pU +pU +pU +wi ED aa aa @@ -41557,18 +41838,6 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa KH KH KS @@ -41798,26 +42067,26 @@ aa aa aa ED -Fg -Fh -Fh -Fh -Fh -FB -Hk +pC +pW +pW +pW +pW +pW +tb +ED +ED +ub +ED +ED +ED +vz +ED +ED +ED +wj +ED ED -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa aa aa aa @@ -42055,26 +42324,26 @@ aa aa aa ED -Fh -FB -Fh -Fh -Fh -Fh -FB +pD +qF +pW +pW +pW +pW +tc +ED +tY +tm +ug +ED +tY +tm +we +ED +tY +tm +wk ED -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa aa aa aa @@ -42312,26 +42581,26 @@ aa aa aa ED -Fi -Fi -Fi -Fi -GB -GB -Hl +pE +qF +pW +pW +pW +pW +td +ED +tW +uc +tm +ED +tW +uc +tm +ED +tW +uc +tm ED -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa aa aa aa @@ -42569,26 +42838,26 @@ aa aa aa ED -Fj -Fi -Fi -Fi -Fi -GZ -Hm +pS +qF +pW +pW +pW +pW +td +ED +ED +ED +ED +ED +ED +ED +ED +ED +ED +ED +ED ED -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa aa aa aa @@ -42826,6 +43095,777 @@ aa aa aa ED +pS +qF +pW +pW +pW +pW +tj +ED +ED +ED +ED +ED +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(115,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ED +pT +pU +pU +pU +sb +sb +sb +tl +ua +uf +uh +ED +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(116,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ED +Fj +Fi +Fi +Fi +Fi +GZ +Hm +ED +ED +ED +ED +ED +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(117,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ED Fi Fi FZ @@ -42892,7 +43932,7 @@ aa aa aa "} -(115,1,1) = {" +(118,1,1) = {" aa aa aa @@ -43149,7 +44189,7 @@ aa aa aa "} -(116,1,1) = {" +(119,1,1) = {" aa aa aa @@ -43406,7 +44446,7 @@ aa aa aa "} -(117,1,1) = {" +(120,1,1) = {" aa aa aa @@ -43663,777 +44703,6 @@ aa aa aa "} -(118,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ED -ED -ED -ED -ED -ED -ED -ED -ED -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(119,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(120,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} (121,1,1) = {" aa aa @@ -44624,15 +44893,15 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +ED +ED +ED +ED +ED +ED +ED +ED +ED aa aa aa diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 1b9ee66537..d945d49116 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -11,7 +11,7 @@ /obj/machinery/chem_dispenser/drinks/beer{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = 25 }, /turf/open/floor/plasteel/bar, @@ -116,7 +116,7 @@ /area/security/prison) "aaq" = ( /obj/machinery/hydroponics/soil, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/machinery/camera{ c_tag = "Prison Common Room"; network = list("ss13","prison") @@ -375,8 +375,8 @@ pixel_y = 10 }, /obj/structure/table/wood, -/obj/item/device/radio/off, -/obj/item/device/taperecorder, +/obj/item/radio/off, +/obj/item/taperecorder, /turf/open/floor/carpet, /area/crew_quarters/heads/hos) "abl" = ( @@ -598,7 +598,7 @@ name = "Head of Security RC"; pixel_y = 30 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = -31 @@ -854,7 +854,7 @@ c_tag = "Prison Cell 3"; network = list("ss13","prison") }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; @@ -885,7 +885,7 @@ c_tag = "Prison Cell 2"; network = list("ss13","prison") }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; @@ -907,7 +907,7 @@ c_tag = "Prison Cell 1"; network = list("ss13","prison") }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; @@ -1003,7 +1003,7 @@ /area/crew_quarters/heads/hos) "acR" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ on = 0; pixel_x = -3; pixel_y = 8 @@ -1231,10 +1231,10 @@ /area/crew_quarters/heads/hos) "adq" = ( /obj/structure/table/wood, -/obj/item/device/instrument/guitar{ +/obj/item/instrument/guitar{ pixel_x = -7 }, -/obj/item/device/instrument/eguitar{ +/obj/item/instrument/eguitar{ pixel_x = 5 }, /turf/open/floor/wood, @@ -1364,10 +1364,10 @@ /obj/item/folder/red{ pixel_x = 3 }, -/obj/item/device/taperecorder{ +/obj/item/taperecorder{ pixel_x = -3 }, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/item/reagent_containers/spray/pepper, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) @@ -1552,7 +1552,7 @@ /area/security/execution/transfer) "aeb" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) @@ -1871,7 +1871,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, @@ -2090,7 +2090,7 @@ /turf/open/floor/plasteel/showroomfloor, /area/security/main) "afd" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -2255,7 +2255,7 @@ /turf/closed/wall/r_wall, /area/security/execution/transfer) "afB" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -2282,7 +2282,7 @@ /area/security/prison) "afD" = ( /obj/structure/table, -/obj/item/device/electropack, +/obj/item/electropack, /turf/open/floor/plasteel/red/side, /area/security/prison) "afE" = ( @@ -2291,7 +2291,7 @@ /area/hallway/secondary/exit) "afF" = ( /obj/structure/table, -/obj/item/device/assembly/signaler, +/obj/item/assembly/signaler, /obj/item/clothing/suit/straight_jacket, /turf/open/floor/plasteel/red/side, /area/security/prison) @@ -2383,7 +2383,7 @@ "afV" = ( /obj/structure/table, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/timer, +/obj/item/assembly/timer, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/security/main) @@ -2407,7 +2407,7 @@ /area/security/main) "afZ" = ( /obj/structure/table, -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/item/screwdriver{ pixel_y = 10 }, @@ -2456,11 +2456,11 @@ /area/security/execution/transfer) "agh" = ( /obj/structure/table, -/obj/item/device/electropack, +/obj/item/electropack, /obj/item/screwdriver, /obj/item/wrench, /obj/item/clothing/head/helmet, -/obj/item/device/assembly/signaler, +/obj/item/assembly/signaler, /obj/machinery/light/small, /obj/machinery/airalarm{ dir = 1; @@ -2620,7 +2620,7 @@ /area/security/main) "agB" = ( /obj/structure/table, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/security/main) @@ -2949,7 +2949,7 @@ /area/security/prison) "ahq" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/dark, /area/security/prison) "ahr" = ( @@ -2961,7 +2961,7 @@ }, /area/security/brig) "ahs" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -3252,7 +3252,7 @@ "ahV" = ( /obj/structure/table, /obj/item/folder/red, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /turf/open/floor/plasteel/dark, /area/security/prison) "ahW" = ( @@ -3454,7 +3454,7 @@ /turf/open/floor/plasteel/red/side, /area/security/main) "ait" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -3773,7 +3773,7 @@ }, /area/security/courtroom) "ajj" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -4004,7 +4004,7 @@ /area/security/brig) "ajO" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; dir = 8; listening = 1; @@ -4604,7 +4604,7 @@ }, /area/ai_monitored/nuke_storage) "alw" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; @@ -4626,7 +4626,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; @@ -4717,7 +4717,7 @@ }, /area/security/courtroom) "alJ" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/neutral/side, /area/security/courtroom) "alK" = ( @@ -4898,7 +4898,7 @@ req_access_txt = "2" }, /obj/item/restraints/handcuffs, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel/dark, /area/security/brig) "amn" = ( @@ -5467,7 +5467,7 @@ /obj/machinery/light_switch{ pixel_x = -20 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = 25 }, /turf/open/floor/wood, @@ -5519,7 +5519,7 @@ /obj/structure/sign/warning/vacuum/external{ pixel_y = 32 }, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) "aoj" = ( @@ -5645,7 +5645,7 @@ /obj/structure/chair{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -6546,7 +6546,7 @@ /area/lawoffice) "are" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -6794,7 +6794,7 @@ "arR" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plating, /area/security/vacantoffice/b) "arS" = ( @@ -7567,7 +7567,7 @@ /area/lawoffice) "auh" = ( /obj/structure/table/wood, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/item/cartridge/lawyer, /turf/open/floor/wood, /area/lawoffice) @@ -8210,8 +8210,8 @@ pixel_x = 1; pixel_y = -1 }, -/obj/item/device/multitool, -/obj/item/device/radio/intercom{ +/obj/item/multitool, +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -8708,7 +8708,7 @@ dir = 8; pixel_x = 24 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, @@ -8769,7 +8769,7 @@ /obj/item/wallframe/camera, /obj/item/wallframe/camera, /obj/item/wallframe/camera, -/obj/item/device/assault_pod/mining, +/obj/item/assault_pod/mining, /obj/machinery/computer/security/telescreen{ desc = "Used for the Auxillary Mining Base."; dir = 8; @@ -9044,7 +9044,7 @@ /area/crew_quarters/dorms) "axM" = ( /obj/structure/table/wood, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/plasteel, /area/crew_quarters/dorms) "axN" = ( @@ -9294,8 +9294,8 @@ /obj/machinery/airalarm{ pixel_y = 23 }, -/obj/item/device/radio/off, -/obj/item/device/assembly/timer, +/obj/item/radio/off, +/obj/item/assembly/timer, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "ayw" = ( @@ -9417,10 +9417,10 @@ dir = 1 }, /obj/item/hand_labeler, -/obj/item/device/flashlight, -/obj/item/device/flashlight, -/obj/item/device/flashlight, -/obj/item/device/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, /turf/open/floor/plasteel/dark, /area/ai_monitored/storage/eva) "ayO" = ( @@ -9462,7 +9462,7 @@ pixel_x = -2; pixel_y = -1 }, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "ayS" = ( @@ -9480,8 +9480,8 @@ dir = 1 }, /obj/structure/table, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/signaler, +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, /obj/item/stock_parts/cell/high/plus, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) @@ -9601,7 +9601,7 @@ /obj/structure/disposalpipe/segment{ dir = 5 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -9730,7 +9730,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "azC" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -9899,10 +9899,10 @@ /area/crew_quarters/toilet) "azY" = ( /obj/structure/table, -/obj/item/device/radio/off, -/obj/item/device/radio/off, -/obj/item/device/assembly/prox_sensor, -/obj/item/device/assembly/prox_sensor, +/obj/item/radio/off, +/obj/item/radio/off, +/obj/item/assembly/prox_sensor, +/obj/item/assembly/prox_sensor, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "azZ" = ( @@ -9946,7 +9946,7 @@ /turf/open/floor/plasteel/neutral/side, /area/crew_quarters/dorms) "aAg" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -11085,7 +11085,7 @@ "aDb" = ( /obj/structure/table, /obj/item/wirecutters, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, @@ -11100,7 +11100,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20 @@ -11150,11 +11150,11 @@ /area/gateway) "aDk" = ( /obj/structure/table, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = -8; pixel_y = -4 }, -/obj/item/device/assembly/igniter, +/obj/item/assembly/igniter, /obj/item/screwdriver{ pixel_y = 16 }, @@ -11170,7 +11170,7 @@ /area/storage/primary) "aDl" = ( /obj/structure/table, -/obj/item/device/t_scanner, +/obj/item/t_scanner, /obj/machinery/airalarm{ pixel_y = 23 }, @@ -11187,15 +11187,15 @@ /area/storage/primary) "aDn" = ( /obj/structure/table, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/signaler, -/obj/item/device/radio/intercom{ +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, +/obj/item/radio/intercom{ broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20 }, -/obj/item/device/multitool, -/obj/item/device/multitool{ +/obj/item/multitool, +/obj/item/multitool{ pixel_x = 4 }, /turf/open/floor/plasteel, @@ -11754,22 +11754,8 @@ /turf/open/floor/circuit, /area/ai_monitored/nuke_storage) "aEN" = ( -/obj/structure/closet/crate{ - name = "Gold Crate" - }, -/obj/item/stack/sheet/mineral/gold{ - pixel_x = -1; - pixel_y = 5 - }, -/obj/item/stack/sheet/mineral/gold{ - pixel_y = 2 - }, -/obj/item/stack/sheet/mineral/gold{ - pixel_x = 1; - pixel_y = -2 - }, -/obj/item/storage/belt/champion, /obj/effect/turf_decal/bot_white/right, +/obj/structure/closet/crate/goldcrate, /turf/open/floor/plasteel/vault{ dir = 1 }, @@ -11781,30 +11767,8 @@ /turf/open/floor/circuit, /area/ai_monitored/nuke_storage) "aEP" = ( -/obj/item/coin/silver{ - pixel_x = 7; - pixel_y = 12 - }, -/obj/item/coin/silver{ - pixel_x = 12; - pixel_y = 7 - }, -/obj/item/coin/silver{ - pixel_x = 4; - pixel_y = 8 - }, -/obj/item/coin/silver{ - pixel_x = -6; - pixel_y = 5 - }, -/obj/item/coin/silver{ - pixel_x = 5; - pixel_y = -8 - }, -/obj/structure/closet/crate{ - name = "Silver Crate" - }, /obj/effect/turf_decal/bot_white/left, +/obj/structure/closet/crate/silvercrate, /turf/open/floor/plasteel/vault{ dir = 4 }, @@ -11829,18 +11793,18 @@ /area/gateway) "aES" = ( /obj/structure/table, -/obj/item/device/radio/off{ +/obj/item/radio/off{ pixel_y = 6 }, -/obj/item/device/radio/off{ +/obj/item/radio/off{ pixel_x = 6; pixel_y = 4 }, -/obj/item/device/radio/off{ +/obj/item/radio/off{ pixel_x = -6; pixel_y = 4 }, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel, /area/gateway) "aET" = ( @@ -12135,9 +12099,9 @@ /turf/open/floor/plasteel/red/side, /area/security/checkpoint/auxiliary) "aFL" = ( -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/item/crowbar, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/structure/table, /turf/open/floor/plasteel/red/side{ dir = 6 @@ -12155,7 +12119,7 @@ /obj/item/cultivator, /obj/item/hatchet, /obj/item/crowbar, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/reagent_containers/glass/bucket, /turf/open/floor/plasteel/green/side{ dir = 4 @@ -12236,7 +12200,7 @@ /turf/open/floor/plasteel, /area/gateway) "aFX" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -12511,7 +12475,7 @@ /obj/structure/mirror{ pixel_x = -28 }, -/obj/item/device/flashlight/lamp/bananalamp{ +/obj/item/flashlight/lamp/bananalamp{ pixel_y = 3 }, /turf/open/floor/plasteel/redblue, @@ -12765,7 +12729,7 @@ /area/storage/primary) "aHf" = ( /obj/structure/closet/wardrobe/chaplain_black, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = 25 }, /turf/open/floor/plasteel/grimy, @@ -13402,7 +13366,7 @@ "aIN" = ( /obj/structure/table, /obj/item/wrench, -/obj/item/device/analyzer, +/obj/item/analyzer, /turf/open/floor/plasteel, /area/storage/primary) "aIO" = ( @@ -13440,7 +13404,7 @@ /obj/item/cultivator, /obj/item/crowbar, /obj/item/reagent_containers/glass/bucket, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/machinery/firealarm{ dir = 8; pixel_x = -24 @@ -13452,8 +13416,8 @@ "aIT" = ( /obj/item/storage/bag/plants/portaseeder, /obj/structure/table/glass, -/obj/item/device/plant_analyzer, -/obj/item/device/radio/intercom{ +/obj/item/plant_analyzer, +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -13490,7 +13454,7 @@ "aIW" = ( /obj/structure/table, /obj/item/crowbar, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, @@ -13827,7 +13791,7 @@ /area/hydroponics) "aJM" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp{ +/obj/item/flashlight/lamp{ pixel_y = 10 }, /obj/structure/disposalpipe/segment, @@ -14021,7 +13985,7 @@ /turf/open/floor/plating, /area/storage/primary) "aKq" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = 25 }, /obj/machinery/camera{ @@ -14473,7 +14437,7 @@ /area/hallway/secondary/entry) "aLA" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -15171,8 +15135,8 @@ /obj/item/stack/sheet/metal/fifty, /obj/item/stack/sheet/glass/fifty, /obj/item/stack/cable_coil, -/obj/item/device/flashlight/lamp, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp, +/obj/item/flashlight/lamp/green, /turf/open/floor/wood, /area/crew_quarters/bar) "aNE" = ( @@ -15321,7 +15285,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/office) "aNX" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1480; name = "Confessional Intercom"; @@ -15373,7 +15337,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/exit) "aOe" = ( -/obj/item/device/beacon, +/obj/item/beacon, /obj/machinery/camera{ c_tag = "Arrivals Bay 1 South" }, @@ -15795,9 +15759,9 @@ /area/library) "aPi" = ( /obj/structure/table/wood, -/obj/item/device/taperecorder, -/obj/item/device/camera, -/obj/item/device/radio/intercom{ +/obj/item/taperecorder, +/obj/item/camera, +/obj/item/radio/intercom{ pixel_y = 25 }, /turf/open/floor/engine/cult, @@ -15839,7 +15803,7 @@ c_tag = "Escape Arm Holding Area"; dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = -28 @@ -15874,7 +15838,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "aPv" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20 @@ -16103,7 +16067,7 @@ "aQb" = ( /obj/structure/window/reinforced, /obj/structure/table/wood, -/obj/item/device/instrument/violin, +/obj/item/instrument/violin, /turf/open/floor/wood, /area/crew_quarters/theatre) "aQc" = ( @@ -16240,7 +16204,7 @@ }, /area/chapel/main) "aQz" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1480; name = "Confessional Intercom"; @@ -16522,9 +16486,9 @@ /obj/structure/table/reinforced, /obj/item/storage/toolbox/emergency, /obj/item/wrench, -/obj/item/device/assembly/timer, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/signaler, +/obj/item/assembly/timer, +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, /turf/open/floor/plasteel, /area/bridge) "aRt" = ( @@ -16577,7 +16541,7 @@ /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) "aRB" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = 25 }, /obj/machinery/camera{ @@ -16803,7 +16767,7 @@ /area/maintenance/port) "aSh" = ( /obj/structure/closet/wardrobe/mixed, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -27 @@ -16876,8 +16840,8 @@ /area/bridge) "aSv" = ( /obj/structure/table/reinforced, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel, /area/bridge) "aSw" = ( @@ -16915,8 +16879,8 @@ /area/bridge) "aSz" = ( /obj/structure/table/reinforced, -/obj/item/device/aicard, -/obj/item/device/multitool, +/obj/item/aicard, +/obj/item/multitool, /turf/open/floor/plasteel/blue/side{ dir = 8 }, @@ -17285,8 +17249,8 @@ "aTF" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /obj/structure/table, -/obj/item/device/camera_film, -/obj/item/device/camera, +/obj/item/camera_film, +/obj/item/camera, /turf/open/floor/plasteel, /area/storage/art) "aTG" = ( @@ -17340,7 +17304,7 @@ /obj/structure/rack, /obj/item/clothing/gloves/color/fyellow, /obj/item/clothing/suit/hazardvest, -/obj/item/device/multitool, +/obj/item/multitool, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel, /area/storage/tools) @@ -17573,7 +17537,7 @@ /area/hydroponics) "aUA" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/wood, /area/security/vacantoffice) "aUB" = ( @@ -17587,7 +17551,7 @@ /area/library) "aUD" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -17706,7 +17670,7 @@ /area/crew_quarters/locker) "aUW" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /turf/open/floor/wood, /area/security/vacantoffice) "aUX" = ( @@ -17886,7 +17850,7 @@ /turf/open/floor/plasteel, /area/bridge) "aVp" = ( -/obj/item/device/beacon, +/obj/item/beacon, /obj/structure/cable{ icon_state = "4-8" }, @@ -18114,8 +18078,8 @@ /area/library) "aVS" = ( /obj/structure/table/wood, -/obj/item/device/camera_film, -/obj/item/device/camera_film, +/obj/item/camera_film, +/obj/item/camera_film, /turf/open/floor/wood, /area/library) "aVT" = ( @@ -18141,7 +18105,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/main) "aVW" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_x = -25 }, /turf/open/floor/plasteel/escape{ @@ -19131,7 +19095,7 @@ /area/security/detectives_office) "aYj" = ( /obj/structure/table/wood, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/structure/disposalpipe/segment{ dir = 10 }, @@ -19188,7 +19152,7 @@ }, /area/bridge) "aYr" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -19690,7 +19654,7 @@ /area/quartermaster/warehouse) "aZJ" = ( /obj/structure/table/wood, -/obj/item/device/camera/detective, +/obj/item/camera/detective, /turf/open/floor/carpet, /area/security/detectives_office) "aZK" = ( @@ -20040,7 +20004,7 @@ /turf/open/floor/carpet, /area/bridge/meeting_room) "baJ" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -20467,7 +20431,7 @@ /area/quartermaster/warehouse) "bbT" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /turf/open/floor/carpet, /area/security/detectives_office) "bbU" = ( @@ -20836,13 +20800,13 @@ /area/bridge/meeting_room) "bcY" = ( /obj/item/hand_labeler, -/obj/item/device/assembly/timer, +/obj/item/assembly/timer, /obj/structure/table, /turf/open/floor/wood, /area/bridge/meeting_room) "bcZ" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; freerange = 1; name = "Station Intercom (Command)" @@ -21295,7 +21259,7 @@ /obj/machinery/computer/upload/borg{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -21570,7 +21534,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "beN" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -21885,7 +21849,7 @@ /area/crew_quarters/heads/captain) "bfC" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /turf/open/floor/wood, /area/crew_quarters/heads/captain) "bfD" = ( @@ -22006,7 +21970,7 @@ }, /area/hallway/primary/starboard) "bfY" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -22365,7 +22329,7 @@ dir = 8; pixel_x = 24 }, -/obj/item/device/camera, +/obj/item/camera, /obj/item/storage/photo_album{ pixel_y = -10 }, @@ -22829,7 +22793,7 @@ /obj/structure/disposalpipe/trunk{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -22890,7 +22854,7 @@ /turf/closed/wall/r_wall, /area/engine/gravity_generator) "bik" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; freerange = 1; name = "Station Intercom (Command)"; @@ -22994,7 +22958,7 @@ /obj/machinery/computer/secure_data{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_x = 25 }, /turf/open/floor/plasteel/red/side{ @@ -23348,7 +23312,7 @@ "bjp" = ( /obj/structure/table, /obj/machinery/cell_charger, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -23389,7 +23353,7 @@ /area/quartermaster/storage) "bju" = ( /obj/machinery/photocopier, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -23903,7 +23867,7 @@ /obj/item/screwdriver{ pixel_y = 10 }, -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/red/side{ dir = 6 @@ -24076,7 +24040,7 @@ pixel_y = 4 }, /obj/item/clothing/glasses/science, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = -28 @@ -24318,10 +24282,10 @@ empty = 1; name = "First-Aid (empty)" }, -/obj/item/device/healthanalyzer, -/obj/item/device/healthanalyzer, -/obj/item/device/healthanalyzer, -/obj/item/device/radio/intercom{ +/obj/item/healthanalyzer, +/obj/item/healthanalyzer, +/obj/item/healthanalyzer, +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -24742,7 +24706,7 @@ }, /area/medical/chemistry) "bmJ" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; freerange = 0; frequency = 1485; @@ -24932,7 +24896,7 @@ pixel_y = 5 }, /obj/item/clothing/glasses/welding, -/obj/item/device/multitool{ +/obj/item/multitool{ pixel_x = 3 }, /turf/open/floor/plasteel, @@ -24943,12 +24907,12 @@ amount = 10 }, /obj/item/stack/cable_coil, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/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/assembly/flash/handheld, /obj/machinery/firealarm{ dir = 4; pixel_x = 24 @@ -25155,7 +25119,6 @@ /obj/item/clipboard, /obj/item/pen/red, /obj/structure/table, -/obj/machinery/computer/stockexchange, /turf/open/floor/plasteel, /area/quartermaster/office) "bnH" = ( @@ -25322,7 +25285,7 @@ /area/crew_quarters/heads/captain) "bnZ" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /turf/open/floor/carpet, /area/crew_quarters/heads/captain) "boa" = ( @@ -25359,7 +25322,7 @@ "bod" = ( /obj/structure/table, /obj/item/folder/white, -/obj/item/device/radio/headset/headset_med, +/obj/item/radio/headset/headset_med, /turf/open/floor/plasteel/white, /area/medical/chemistry) "boe" = ( @@ -25486,19 +25449,19 @@ /area/science/robotics/lab) "bov" = ( /obj/structure/table, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, @@ -25591,9 +25554,9 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/item/device/mmi, -/obj/item/device/mmi, -/obj/item/device/mmi, +/obj/item/mmi, +/obj/item/mmi, +/obj/item/mmi, /turf/open/floor/plasteel/dark, /area/science/robotics/lab) "boH" = ( @@ -26036,7 +25999,7 @@ "bpH" = ( /obj/structure/table/glass, /obj/item/folder/white, -/obj/item/device/radio/headset/headset_medsci, +/obj/item/radio/headset/headset_medsci, /obj/machinery/requests_console{ department = "Genetics"; departmentType = 0; @@ -26303,8 +26266,8 @@ layer = 2.9 }, /obj/structure/table/reinforced, -/obj/item/device/destTagger, -/obj/item/device/destTagger, +/obj/item/destTagger, +/obj/item/destTagger, /turf/open/floor/plasteel/brown{ dir = 1 }, @@ -26401,7 +26364,7 @@ layer = 3 }, /obj/item/pen/blue, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -35 }, @@ -26851,7 +26814,7 @@ /obj/machinery/airalarm{ pixel_y = 23 }, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel/white/side{ dir = 2 }, @@ -26946,7 +26909,7 @@ departmentType = 2; pixel_x = -30 }, -/obj/item/device/multitool, +/obj/item/multitool, /obj/machinery/camera{ c_tag = "Cargo Office"; dir = 4 @@ -27115,7 +27078,7 @@ pixel_y = 1 }, /obj/structure/table, -/obj/item/device/beacon, +/obj/item/beacon, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, @@ -27135,7 +27098,7 @@ /turf/open/floor/plasteel, /area/teleporter) "bsl" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -27185,7 +27148,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 0; frequency = 1485; @@ -27216,7 +27179,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "bst" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 0; frequency = 1485; @@ -27431,7 +27394,7 @@ /area/quartermaster/office) "bsW" = ( /obj/structure/closet/wardrobe/robotics_black, -/obj/item/device/radio/headset/headset_sci{ +/obj/item/radio/headset/headset_sci{ pixel_x = -3 }, /turf/open/floor/plasteel/white, @@ -27906,7 +27869,7 @@ /area/medical/genetics) "bub" = ( /obj/machinery/light, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -35 }, @@ -28161,7 +28124,6 @@ dir = 4; pixel_x = -22 }, -/obj/machinery/computer/stockexchange, /turf/open/floor/plasteel, /area/quartermaster/office) "buF" = ( @@ -28851,7 +28813,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "bwi" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = -28 @@ -29664,7 +29626,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/computer/stockexchange, /turf/open/floor/plasteel/brown{ dir = 2 }, @@ -29798,7 +29759,7 @@ /area/crew_quarters/heads/hor) "bys" = ( /obj/structure/rack, -/obj/item/device/aicard, +/obj/item/aicard, /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -29949,7 +29910,7 @@ /turf/open/floor/plasteel, /area/security/checkpoint/supply) "byM" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -30195,7 +30156,7 @@ /area/medical/genetics) "bzr" = ( /obj/structure/closet/wardrobe/genetics_white, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -30372,10 +30333,10 @@ /area/crew_quarters/heads/hor) "bzM" = ( /obj/structure/rack, -/obj/item/device/taperecorder{ +/obj/item/taperecorder{ pixel_x = -3 }, -/obj/item/device/paicard{ +/obj/item/paicard{ pixel_x = 4 }, /obj/effect/turf_decal/stripes/line{ @@ -30499,7 +30460,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel/red/side{ dir = 4 }, @@ -30799,14 +30760,14 @@ /area/maintenance/port/aft) "bAL" = ( /obj/structure/table, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/stock_parts/cell/high/plus, /turf/open/floor/plating, /area/storage/tech) "bAM" = ( /obj/structure/table, -/obj/item/device/analyzer, -/obj/item/device/healthanalyzer, +/obj/item/analyzer, +/obj/item/healthanalyzer, /obj/machinery/light/small{ dir = 1 }, @@ -30849,7 +30810,7 @@ c_tag = "Quartermaster's Office"; dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -35 }, @@ -31320,7 +31281,7 @@ /turf/open/floor/plasteel/dark, /area/science/server) "bBY" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_x = -25 }, /obj/structure/filingcabinet, @@ -31332,7 +31293,7 @@ /obj/item/screwdriver{ pixel_y = 10 }, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel/red/side, /area/security/checkpoint/science) "bCa" = ( @@ -31416,7 +31377,7 @@ dir = 1; network = list("ss13","rd") }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -31730,7 +31691,7 @@ /turf/open/floor/plasteel/white, /area/medical/sleeper) "bCU" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 0; frequency = 1485; @@ -31931,16 +31892,16 @@ /area/maintenance/aft) "bDv" = ( /obj/structure/table, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/machinery/ai_status_display{ pixel_x = -32 }, @@ -32270,7 +32231,7 @@ /area/crew_quarters/heads/cmo) "bEl" = ( /obj/structure/disposalpipe/segment, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_x = 25 }, /obj/machinery/camera{ @@ -32358,7 +32319,7 @@ /area/science/mixing) "bEw" = ( /obj/machinery/portable_atmospherics/canister, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = 25 }, /obj/effect/turf_decal/stripes/line{ @@ -32599,7 +32560,7 @@ /area/storage/tech) "bEX" = ( /obj/structure/table, -/obj/item/device/aicard, +/obj/item/aicard, /obj/item/aiModule/reset, /turf/open/floor/plating, /area/storage/tech) @@ -33063,19 +33024,19 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "bGl" = ( -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -4; pixel_y = 1 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 8; pixel_y = 9 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 9; pixel_y = -2 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_y = 2 }, /obj/structure/table/reinforced, @@ -33131,14 +33092,7 @@ /area/storage/tech) "bGt" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/borgupload{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/circuitboard/computer/aiupload{ - pixel_x = 2; - pixel_y = -2 - }, +/obj/effect/spawner/lootdrop/techstorage/AI, /turf/open/floor/plasteel, /area/storage/tech) "bGu" = ( @@ -33150,50 +33104,25 @@ /obj/machinery/cell_charger{ pixel_y = 5 }, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plating, /area/storage/tech) "bGw" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/pandemic{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/computer/rdconsole, -/obj/item/circuitboard/machine/rdserver{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/machine/destructive_analyzer, /obj/structure/cable{ icon_state = "1-2" }, -/obj/item/circuitboard/computer/aifixer, -/obj/item/circuitboard/computer/teleporter, -/obj/item/circuitboard/machine/circuit_imprinter, -/obj/item/circuitboard/machine/mechfab, +/obj/effect/spawner/lootdrop/techstorage/rnd, /turf/open/floor/plating, /area/storage/tech) "bGx" = ( /obj/structure/rack, -/obj/item/circuitboard/machine/telecomms/processor, -/obj/item/circuitboard/machine/telecomms/receiver, -/obj/item/circuitboard/machine/telecomms/server, -/obj/item/circuitboard/machine/telecomms/bus, -/obj/item/circuitboard/machine/telecomms/broadcaster, -/obj/item/circuitboard/computer/message_monitor{ - pixel_y = -5 - }, +/obj/effect/spawner/lootdrop/techstorage/tcomms, /turf/open/floor/plating, /area/storage/tech) "bGy" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/mining, -/obj/item/circuitboard/machine/autolathe{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/computer/arcade/battle, +/obj/effect/spawner/lootdrop/techstorage/service, /turf/open/floor/plating, /area/storage/tech) "bGz" = ( @@ -33591,7 +33520,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = 25 }, /obj/machinery/light/small{ @@ -33626,7 +33555,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -33671,21 +33600,10 @@ /area/crew_quarters/theatre) "bHG" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/crew{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/circuitboard/computer/card{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/circuitboard/computer/communications{ - pixel_x = 5; - pixel_y = -5 - }, /obj/machinery/light/small{ dir = 8 }, +/obj/effect/spawner/lootdrop/techstorage/command, /turf/open/floor/plasteel, /area/storage/tech) "bHH" = ( @@ -33750,7 +33668,7 @@ pixel_x = 1; pixel_y = -1 }, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/clothing/glasses/meson, /obj/machinery/light/small, /turf/open/floor/plating, @@ -34334,7 +34252,7 @@ /turf/open/floor/plating/airless, /area/science/test_area) "bJa" = ( -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -34390,14 +34308,7 @@ /area/storage/tech) "bJh" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/robotics{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/circuitboard/computer/mecha_control{ - pixel_x = 1; - pixel_y = -1 - }, +/obj/effect/spawner/lootdrop/techstorage/RnD_secure, /turf/open/floor/plasteel, /area/storage/tech) "bJi" = ( @@ -34413,43 +34324,17 @@ /area/storage/tech) "bJk" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/cloning, -/obj/item/circuitboard/computer/med_data{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/machine/clonescanner, -/obj/item/circuitboard/machine/clonepod, -/obj/item/circuitboard/computer/scan_consolenew, -/obj/item/circuitboard/machine/smoke_machine, +/obj/effect/spawner/lootdrop/techstorage/medical, /turf/open/floor/plating, /area/storage/tech) "bJl" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/powermonitor{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/circuitboard/computer/stationalert{ - pixel_x = 1; - pixel_y = -1 - }, -/obj/item/circuitboard/computer/atmos_alert{ - pixel_x = 3; - pixel_y = -3 - }, +/obj/effect/spawner/lootdrop/techstorage/engineering, /turf/open/floor/plating, /area/storage/tech) "bJm" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/secure_data{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/circuitboard/computer/security{ - pixel_x = 1; - pixel_y = -1 - }, +/obj/effect/spawner/lootdrop/techstorage/security, /turf/open/floor/plating, /area/storage/tech) "bJn" = ( @@ -34741,18 +34626,18 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "bJW" = ( -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve{ pixel_x = -5 }, -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve{ pixel_x = -5 }, -/obj/item/device/transfer_valve, -/obj/item/device/transfer_valve, -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve, +/obj/item/transfer_valve, +/obj/item/transfer_valve{ pixel_x = 5 }, -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve{ pixel_x = 5 }, /obj/machinery/requests_console{ @@ -34766,18 +34651,18 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "bJX" = ( -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_y = 8 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = -8; pixel_y = 5 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = 6; pixel_y = 5 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = -2; pixel_y = -2 }, @@ -34789,19 +34674,19 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "bJZ" = ( -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 5; pixel_y = 4 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = -4; pixel_y = 2 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 6; pixel_y = -4 }, -/obj/item/device/assembly/timer, +/obj/item/assembly/timer, /obj/structure/table/reinforced, /turf/open/floor/plasteel/white, /area/science/mixing) @@ -35399,7 +35284,7 @@ /turf/open/floor/plating/airless, /area/science/test_area) "bLp" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plating/airless, /area/science/test_area) "bLq" = ( @@ -35483,8 +35368,8 @@ pixel_y = -1 }, /obj/item/clothing/gloves/color/yellow, -/obj/item/device/t_scanner, -/obj/item/device/multitool, +/obj/item/t_scanner, +/obj/item/multitool, /turf/open/floor/plating, /area/storage/tech) "bLB" = ( @@ -35712,7 +35597,7 @@ pixel_y = 5 }, /obj/item/stack/cable_coil, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/stock_parts/cell/high/plus, /obj/structure/window/reinforced{ dir = 4 @@ -36310,7 +36195,7 @@ /turf/open/floor/plating/airless, /area/science/test_area) "bNF" = ( -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/effect/turf_decal/stripes/line{ dir = 2 }, @@ -36322,7 +36207,7 @@ /area/science/test_area) "bNH" = ( /obj/structure/table/reinforced, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -26 }, @@ -36373,7 +36258,7 @@ /obj/structure/disposalpipe/segment{ dir = 6 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -36553,7 +36438,7 @@ /turf/open/floor/plasteel/white, /area/medical/virology) "bOo" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; freerange = 1; name = "Station Intercom (Telecomms)"; @@ -37174,11 +37059,10 @@ /turf/open/floor/plasteel/white, /area/science/xenobiology) "bPE" = ( -/obj/structure/table/reinforced, -/obj/item/device/slime_scanner, /obj/effect/turf_decal/stripes/line{ dir = 9 }, +/obj/machinery/portable_atmospherics/canister/bz, /turf/open/floor/plasteel, /area/science/xenobiology) "bPF" = ( @@ -37198,7 +37082,7 @@ /area/science/circuit) "bPG" = ( /obj/machinery/chem_master, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -37220,6 +37104,7 @@ dir = 1 }, /obj/structure/table/reinforced, +/obj/item/slime_scanner, /obj/item/clothing/gloves/color/latex, /obj/item/clothing/glasses/science, /turf/open/floor/plasteel, @@ -37392,7 +37277,7 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/light_switch{ pixel_x = -27; @@ -37482,7 +37367,7 @@ c_tag = "Security Post - Engineering"; dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -37741,7 +37626,7 @@ network = list("rd"); pixel_y = 28 }, -/obj/item/device/integrated_circuit_printer, +/obj/item/integrated_circuit_printer, /turf/open/floor/plasteel/white, /area/science/circuit) "bQZ" = ( @@ -38204,9 +38089,9 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/item/device/electropack, -/obj/item/device/healthanalyzer, -/obj/item/device/assembly/signaler, +/obj/item/electropack, +/obj/item/healthanalyzer, +/obj/item/assembly/signaler, /turf/open/floor/plasteel, /area/science/misc_lab) "bSf" = ( @@ -38398,7 +38283,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plasteel, /area/engine/atmos) "bSG" = ( @@ -38414,9 +38299,9 @@ /obj/structure/table, /obj/item/stack/sheet/glass/fifty, /obj/item/storage/belt/utility, -/obj/item/device/t_scanner, -/obj/item/device/t_scanner, -/obj/item/device/t_scanner, +/obj/item/t_scanner, +/obj/item/t_scanner, +/obj/item/t_scanner, /turf/open/floor/plasteel, /area/engine/atmos) "bSI" = ( @@ -38680,38 +38565,38 @@ /area/science/misc_lab) "bTn" = ( /obj/structure/table, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = -5; pixel_y = 3 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 5; pixel_y = -4 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 2; pixel_y = 6 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 2; pixel_y = -1 }, /obj/machinery/light{ dir = 4 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = -3; pixel_y = 3 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = -3; pixel_y = 3 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = -3; pixel_y = 3 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = -3; pixel_y = 3 }, @@ -39311,7 +39196,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bUN" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel, /area/engine/atmos) "bUO" = ( @@ -39454,7 +39339,7 @@ }, /area/hallway/primary/aft) "bVg" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20 @@ -39803,7 +39688,7 @@ name = "Virology Requests Console"; pixel_x = -32 }, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/item/clothing/glasses/hud/health, /turf/open/floor/plasteel/whitegreen/side{ dir = 8 @@ -39812,7 +39697,7 @@ "bWg" = ( /obj/structure/table, /obj/item/hand_labeler, -/obj/item/device/radio/headset/headset_med, +/obj/item/radio/headset/headset_med, /turf/open/floor/plasteel/whitegreen/side{ dir = 4 }, @@ -39883,7 +39768,7 @@ /turf/open/floor/engine, /area/science/xenobiology) "bWo" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_x = -25 }, /turf/open/floor/plasteel/floorgrime, @@ -40075,7 +39960,7 @@ /turf/closed/wall/r_wall, /area/security/checkpoint/engineering) "bWR" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -40132,7 +40017,7 @@ /area/medical/virology) "bWX" = ( /obj/structure/table/glass, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_x = -25 }, /obj/machinery/light{ @@ -40243,7 +40128,7 @@ /obj/item/folder/white, /obj/item/folder/white, /obj/item/pen, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /turf/open/floor/plasteel/floorgrime, /area/science/misc_lab) "bXj" = ( @@ -41351,7 +41236,7 @@ /turf/open/floor/engine, /area/science/xenobiology) "bZY" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_x = -25 }, /turf/open/floor/engine, @@ -41377,7 +41262,7 @@ /area/maintenance/starboard/aft) "cad" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plating, /area/maintenance/starboard/aft) "cae" = ( @@ -41790,7 +41675,7 @@ /turf/open/floor/engine, /area/science/misc_lab) "caY" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/engine, /area/science/misc_lab) "caZ" = ( @@ -41835,9 +41720,9 @@ /area/science/misc_lab) "cbe" = ( /obj/structure/table/reinforced, -/obj/item/device/integrated_electronics/analyzer, -/obj/item/device/integrated_electronics/debugger, -/obj/item/device/integrated_electronics/wirer, +/obj/item/integrated_electronics/analyzer, +/obj/item/integrated_electronics/debugger, +/obj/item/integrated_electronics/wirer, /turf/open/floor/plasteel/white, /area/science/circuit) "cbf" = ( @@ -42225,7 +42110,7 @@ /area/science/misc_lab) "cbY" = ( /obj/structure/table/reinforced, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/screwdriver, /obj/machinery/requests_console{ department = "Science"; @@ -42245,7 +42130,7 @@ network = list("rd"); pixel_y = -28 }, -/obj/item/device/integrated_circuit_printer, +/obj/item/integrated_circuit_printer, /turf/open/floor/plasteel/white, /area/science/circuit) "cca" = ( @@ -42313,7 +42198,7 @@ /area/tcommsat/server) "cci" = ( /obj/structure/table, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plasteel/yellow/side{ dir = 9 }, @@ -43049,7 +42934,7 @@ /area/tcommsat/server) "cee" = ( /obj/structure/table, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel/yellow/side{ dir = 10 }, @@ -44925,7 +44810,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -45461,28 +45346,10 @@ /turf/open/floor/plasteel, /area/engine/engineering) "ckG" = ( -/obj/structure/closet/crate{ - name = "solar pack crate" - }, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/circuitboard/computer/solar_control, -/obj/item/electronics/tracker, -/obj/item/paper/guides/jobs/engi/solars, /obj/effect/turf_decal/bot{ dir = 1 }, +/obj/structure/closet/crate/solarpanel_small, /turf/open/floor/plasteel, /area/engine/engineering) "ckH" = ( @@ -45664,7 +45531,7 @@ /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "clg" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -47072,7 +46939,7 @@ icon_state = "1-2" }, /obj/structure/table/glass, -/obj/item/device/flashlight, +/obj/item/flashlight, /turf/open/floor/plasteel, /area/engine/engineering) "cpx" = ( @@ -47179,7 +47046,7 @@ /area/engine/engine_smes) "cpT" = ( /obj/structure/table, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -35 }, @@ -47565,7 +47432,7 @@ /area/solar/starboard/aft) "crl" = ( /obj/structure/table, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /turf/open/floor/plating, /area/maintenance/port/aft) "crm" = ( @@ -47987,7 +47854,7 @@ /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) "cth" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -48064,7 +47931,7 @@ pixel_y = 28 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/off{ +/obj/item/radio/off{ pixel_y = 4 }, /obj/item/screwdriver{ @@ -48310,7 +48177,7 @@ /turf/closed/wall, /area/ai_monitored/turret_protected/aisat_interior) "cub" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -48538,7 +48405,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_x = 28 }, @@ -48619,7 +48486,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_x = -28 }, @@ -48663,7 +48530,7 @@ pixel_y = 3 }, /obj/item/storage/toolbox/mechanical, -/obj/item/device/multitool, +/obj/item/multitool, /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -48849,7 +48716,7 @@ /obj/machinery/porta_turret/ai{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -48991,14 +48858,14 @@ /area/ai_monitored/turret_protected/aisat/hallway) "cvx" = ( /obj/effect/landmark/start/ai/secondary, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_y = 28 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 1; listening = 1; @@ -49006,7 +48873,7 @@ pixel_x = -27; pixel_y = 5 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -49030,14 +48897,14 @@ /area/ai_monitored/turret_protected/aisat/hallway) "cvA" = ( /obj/effect/landmark/start/ai/secondary, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_y = 28 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 1; listening = 1; @@ -49045,7 +48912,7 @@ pixel_x = 27; pixel_y = 5 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -49272,7 +49139,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -50252,7 +50119,7 @@ /area/ai_monitored/turret_protected/ai) "cAS" = ( /obj/effect/landmark/start/ai, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 1; listening = 1; @@ -50260,14 +50127,14 @@ pixel_x = -27; pixel_y = -9 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_y = -31 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -50602,7 +50469,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "cBK" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -35 }, @@ -50703,7 +50570,7 @@ /obj/item/stack/cable_coil{ amount = 5 }, -/obj/item/device/flashlight, +/obj/item/flashlight, /turf/open/floor/plating, /area/construction) "cCc" = ( @@ -51296,7 +51163,7 @@ pixel_y = 5 }, /obj/item/clothing/glasses/welding, -/obj/item/device/multitool{ +/obj/item/multitool{ pixel_x = 3 }, /turf/open/floor/plasteel, @@ -51699,7 +51566,7 @@ /area/crew_quarters/heads/chief) "cSM" = ( /obj/machinery/computer/station_alert, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20 @@ -52002,7 +51869,7 @@ "cZO" = ( /obj/effect/spawner/lootdrop/maintenance, /obj/effect/decal/cleanable/blood/old, -/obj/item/device/assembly/signaler, +/obj/item/assembly/signaler, /turf/open/floor/plating, /area/maintenance/bar) "dfh" = ( @@ -52073,7 +51940,7 @@ /area/maintenance/bar) "eaI" = ( /obj/structure/table/reinforced, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_x = -30 }, /turf/open/floor/plasteel/white, @@ -52820,7 +52687,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "jZP" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -53058,7 +52925,7 @@ name = "2maintenance loot spawner" }, /obj/item/crowbar, -/obj/item/device/electropack/shockcollar, +/obj/item/electropack/shockcollar, /turf/open/floor/plating, /area/maintenance/bar) "lyP" = ( @@ -53496,7 +53363,7 @@ pixel_x = 6; pixel_y = -3 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1485; listening = 1; @@ -53986,7 +53853,7 @@ /area/maintenance/disposal/incinerator) "uoB" = ( /obj/structure/table/reinforced, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/screwdriver, /obj/machinery/camera{ c_tag = "Circuitry Lab North"; @@ -54055,7 +53922,7 @@ /area/security/armory) "uCa" = ( /obj/structure/chair/stool, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -35 }, diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index f802d8d636..02529a8c6b 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -422,7 +422,7 @@ /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) "acv" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -782,7 +782,7 @@ /area/hallway/secondary/entry) "adx" = ( /obj/structure/table/reinforced, -/obj/item/device/analyzer{ +/obj/item/analyzer{ pixel_x = 7; pixel_y = 3 }, @@ -955,7 +955,7 @@ /obj/item/stack/cable_coil/white, /obj/item/stock_parts/cell/high, /obj/effect/decal/cleanable/dirt, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -1054,7 +1054,7 @@ /obj/structure/table/reinforced, /obj/item/clipboard, /obj/item/folder/yellow, -/obj/item/device/assault_pod/mining, +/obj/item/assault_pod/mining, /turf/open/floor/plasteel/yellow/side{ dir = 4 }, @@ -1164,7 +1164,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "afV" = ( -/obj/item/device/beacon, +/obj/item/beacon, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/hallway/secondary/entry) @@ -2038,7 +2038,7 @@ dir = 4 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -2135,7 +2135,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -2784,12 +2784,12 @@ /area/security/vacantoffice) "alq" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/grimy, /area/security/vacantoffice) "alr" = ( /obj/structure/table/wood, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/machinery/light/small{ dir = 1 }, @@ -2873,7 +2873,7 @@ "alB" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/radio, +/obj/item/radio, /obj/structure/reagent_dispensers/peppertank{ pixel_x = 32 }, @@ -2953,8 +2953,8 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "alK" = ( -/obj/structure/closet/secure_closet/freezer/kitchen, /obj/effect/turf_decal/bot, +/obj/structure/closet/secure_closet/freezer/kitchen/maintenance, /turf/open/floor/plasteel, /area/maintenance/starboard/fore) "alL" = ( @@ -3195,7 +3195,7 @@ /area/hallway/secondary/entry) "amo" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/camera{ c_tag = "Arrivals - Center"; dir = 2; @@ -3325,7 +3325,7 @@ /obj/structure/closet/crate{ icon_state = "crateopen" }, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel/neutral/side{ dir = 6 @@ -3443,7 +3443,7 @@ "amS" = ( /obj/structure/table/wood, /obj/item/storage/briefcase, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /turf/open/floor/wood{ icon_state = "wood-broken4" }, @@ -3523,7 +3523,7 @@ /area/security/vacantoffice) "ane" = ( /obj/structure/table/wood, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/plasteel/grimy, /area/security/vacantoffice) "anf" = ( @@ -3870,7 +3870,7 @@ /area/security/vacantoffice) "aoa" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/carpet, /area/security/vacantoffice) "aob" = ( @@ -3949,7 +3949,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -4072,7 +4072,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -4312,11 +4312,11 @@ /area/security/vacantoffice) "apc" = ( /obj/structure/table/wood, -/obj/item/device/camera_film{ +/obj/item/camera_film{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/camera_film, +/obj/item/camera_film, /turf/open/floor/wood, /area/security/vacantoffice) "apd" = ( @@ -4783,7 +4783,7 @@ /area/security/vacantoffice) "aqh" = ( /obj/structure/table/wood, -/obj/item/device/camera, +/obj/item/camera, /obj/machinery/light/small, /obj/structure/sign/nanotrasen{ pixel_y = -32 @@ -4792,7 +4792,7 @@ /area/security/vacantoffice) "aqi" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/structure/sign/warning/nosmoking{ pixel_x = 32 }, @@ -5624,7 +5624,7 @@ /area/hallway/secondary/entry) "arP" = ( /obj/machinery/vending/snack/random, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -5799,12 +5799,6 @@ dir = 4 }, /area/maintenance/disposal) -"asj" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/turf/open/floor/plasteel/airless/solarpanel, -/area/solar/port/fore) "ask" = ( /obj/structure/lattice/catwalk, /turf/open/space, @@ -6476,7 +6470,7 @@ /obj/structure/rack, /obj/effect/decal/cleanable/dirt, /obj/item/weldingtool, -/obj/item/device/assembly/voice, +/obj/item/assembly/voice, /obj/item/clothing/head/welding, /obj/effect/spawner/lootdrop/maintenance, /obj/structure/disposalpipe/segment{ @@ -6598,7 +6592,7 @@ /area/space/nearstation) "atK" = ( /obj/structure/table/reinforced, -/obj/item/device/analyzer{ +/obj/item/analyzer{ pixel_x = 7; pixel_y = 3 }, @@ -6782,8 +6776,8 @@ /obj/item/tank/internals/emergency_oxygen/engi{ pixel_x = 5 }, -/obj/item/device/geiger_counter, -/obj/item/device/geiger_counter, +/obj/item/geiger_counter, +/obj/item/geiger_counter, /obj/machinery/airalarm{ dir = 8; pixel_x = 24 @@ -7358,7 +7352,7 @@ /area/engine/atmospherics_engine) "ave" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -7508,7 +7502,7 @@ /area/maintenance/port/fore) "avx" = ( /obj/structure/table/wood, -/obj/item/device/camera_film, +/obj/item/camera_film, /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/machinery/airalarm{ pixel_y = 23 @@ -8113,7 +8107,7 @@ /area/crew_quarters/toilet/auxiliary) "awN" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -8261,7 +8255,7 @@ "axh" = ( /obj/structure/table/reinforced, /obj/item/storage/box/lights/mixed, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -8271,7 +8265,6 @@ /area/quartermaster/storage) "axi" = ( /obj/structure/table/reinforced, -/obj/machinery/computer/stockexchange, /turf/open/floor/plasteel/brown{ dir = 1 }, @@ -8513,7 +8506,7 @@ /area/maintenance/port/fore) "axO" = ( /obj/structure/table/wood, -/obj/item/device/camera, +/obj/item/camera, /turf/open/floor/wood{ icon_state = "wood-broken3" }, @@ -8567,7 +8560,7 @@ pixel_y = 3 }, /obj/item/storage/box/lights/mixed, -/obj/item/device/lightreplacer, +/obj/item/lightreplacer, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -9119,7 +9112,7 @@ /obj/effect/decal/cleanable/dirt, /obj/item/mop, /obj/item/mop, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -10314,7 +10307,7 @@ /area/quartermaster/warehouse) "aBM" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/deadcockroach, +/obj/effect/decal/cleanable/insectguts, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -11653,7 +11646,7 @@ "aEO" = ( /obj/structure/table/wood, /obj/structure/reagent_dispensers/beerkeg, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -11779,7 +11772,7 @@ pixel_y = 3 }, /obj/item/storage/fancy/cigarettes/cigars/havana, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -11941,7 +11934,7 @@ /turf/open/floor/plasteel, /area/engine/atmospherics_engine) "aFv" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -28; pixel_y = -28 @@ -12092,7 +12085,7 @@ /area/hydroponics/garden/abandoned) "aFN" = ( /obj/structure/table, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/hatchet, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, @@ -12138,7 +12131,7 @@ /area/maintenance/port/fore) "aFT" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/button/door{ id = "AuxCabinA"; name = "Dormitory Door Lock"; @@ -12151,7 +12144,7 @@ /area/hallway/secondary/service) "aFU" = ( /obj/structure/table/wood, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/plasteel/grimy, /area/hallway/secondary/service) "aFV" = ( @@ -12422,7 +12415,7 @@ }, /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/radio, +/obj/item/radio, /obj/machinery/button/door{ desc = "A remote control switch."; id = "cardoor"; @@ -12441,7 +12434,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -12693,7 +12686,7 @@ /turf/open/floor/plating, /area/security/prison) "aGM" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -13761,7 +13754,7 @@ "aIN" = ( /obj/structure/table/wood, /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/wood, /area/hallway/secondary/service) "aIO" = ( @@ -14062,7 +14055,7 @@ /turf/open/floor/plasteel, /area/security/prison) "aJB" = ( -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/neutral/corner, @@ -14157,16 +14150,25 @@ /obj/machinery/meter, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, +/obj/structure/cable/white{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/neutral, /area/maintenance/disposal/incinerator) "aJM" = ( /obj/machinery/atmospherics/pipe/manifold/general/visible, +/obj/structure/cable/white{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/neutral, /area/maintenance/disposal/incinerator) "aJN" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 9 }, +/obj/structure/cable/white{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/neutral, /area/maintenance/disposal/incinerator) "aJO" = ( @@ -14177,6 +14179,9 @@ icon_state = "1-4" }, /obj/effect/decal/cleanable/dirt, +/obj/structure/cable/white{ + icon_state = "4-8" + }, /turf/open/floor/plasteel/neutral, /area/maintenance/disposal/incinerator) "aJP" = ( @@ -14414,7 +14419,7 @@ /area/maintenance/port/fore) "aKm" = ( /obj/structure/table/wood, -/obj/item/device/camera, +/obj/item/camera, /obj/machinery/newscaster{ pixel_x = -32 }, @@ -14525,7 +14530,7 @@ /area/crew_quarters/bar/atrium) "aKB" = ( /obj/structure/chair/stool/bar, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -14956,7 +14961,7 @@ /obj/structure/cable/white{ icon_state = "0-8" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -24 }, @@ -15633,11 +15638,11 @@ /obj/machinery/status_display{ pixel_x = -32 }, -/obj/item/device/camera_film{ +/obj/item/camera_film{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/camera_film, +/obj/item/camera_film, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -15711,7 +15716,7 @@ /area/crew_quarters/bar/atrium) "aNk" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -15787,7 +15792,7 @@ dir = 8 }, /obj/structure/disposalpipe/segment, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -16148,7 +16153,7 @@ /turf/open/floor/plasteel/vault, /area/engine/atmos) "aOd" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -16305,7 +16310,7 @@ /area/crew_quarters/theatre) "aOw" = ( /obj/structure/table/wood, -/obj/item/device/instrument/eguitar, +/obj/item/instrument/eguitar, /obj/item/toy/crayon/spraycan/lubecan{ charges = 5 }, @@ -16344,10 +16349,10 @@ }, /obj/item/storage/crayons, /obj/item/storage/crayons, -/obj/item/device/flashlight/lamp/bananalamp{ +/obj/item/flashlight/lamp/bananalamp{ pixel_y = 5 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -16376,7 +16381,7 @@ /area/crew_quarters/bar/atrium) "aOD" = ( /obj/structure/table/wood, -/obj/item/device/instrument/guitar, +/obj/item/instrument/guitar, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -17148,7 +17153,7 @@ dir = 8; pixel_x = -24 }, -/obj/item/device/camera, +/obj/item/camera, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -17300,7 +17305,7 @@ "aQC" = ( /obj/structure/table, /obj/item/folder/yellow, -/obj/item/device/destTagger, +/obj/item/destTagger, /turf/open/floor/plasteel/brown, /area/quartermaster/sorting) "aQD" = ( @@ -17466,7 +17471,7 @@ "aQX" = ( /obj/structure/table/glass, /obj/item/folder/blue, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/machinery/light{ dir = 1 }, @@ -17528,7 +17533,7 @@ /area/security/prison) "aRf" = ( /obj/machinery/holopad, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom"; @@ -18175,7 +18180,6 @@ /area/quartermaster/storage) "aSm" = ( /obj/structure/table/reinforced, -/obj/machinery/computer/stockexchange, /turf/open/floor/plasteel/neutral, /area/quartermaster/storage) "aSn" = ( @@ -18269,7 +18273,7 @@ pixel_x = 26; pixel_y = 32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = 28 @@ -18290,7 +18294,7 @@ /area/quartermaster/qm) "aSA" = ( /obj/structure/table/reinforced, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/brown{ dir = 5 }, @@ -18445,7 +18449,7 @@ pixel_x = 3 }, /obj/item/restraints/handcuffs, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, @@ -18931,7 +18935,7 @@ /area/crew_quarters/bar/atrium) "aTI" = ( /obj/structure/table/wood, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/plasteel/redyellow, /area/crew_quarters/bar/atrium) "aTJ" = ( @@ -18980,7 +18984,6 @@ /area/quartermaster/office) "aTP" = ( /obj/structure/table/reinforced, -/obj/machinery/computer/stockexchange, /obj/machinery/light{ dir = 8 }, @@ -18994,7 +18997,7 @@ "aTQ" = ( /obj/structure/table/reinforced, /obj/item/folder/yellow, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/pen/red, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 @@ -19220,7 +19223,7 @@ /area/quartermaster/qm) "aUm" = ( /obj/structure/table/reinforced, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -19405,8 +19408,8 @@ /obj/structure/reagent_dispensers/peppertank{ pixel_x = -32 }, -/obj/item/device/electropack, -/obj/item/device/assembly/signaler, +/obj/item/electropack, +/obj/item/assembly/signaler, /obj/machinery/light{ dir = 8 }, @@ -19750,7 +19753,7 @@ /area/hallway/secondary/service) "aVn" = ( /obj/structure/table/wood, -/obj/item/device/instrument/violin, +/obj/item/instrument/violin, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -20284,8 +20287,8 @@ pixel_x = -7; pixel_y = -26 }, -/obj/item/device/flashlight/lamp, -/obj/item/device/radio/intercom{ +/obj/item/flashlight/lamp, +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -20658,7 +20661,7 @@ }, /area/crew_quarters/bar/atrium) "aXb" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26; pixel_y = -26 @@ -20875,7 +20878,7 @@ /obj/item/cartridge/quartermaster{ pixel_y = 6 }, -/obj/item/device/gps/mining, +/obj/item/gps/mining, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -20921,7 +20924,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -21139,7 +21142,7 @@ "aYf" = ( /obj/structure/table/reinforced, /obj/item/folder/yellow, -/obj/item/device/lightreplacer, +/obj/item/lightreplacer, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -21676,7 +21679,6 @@ /area/quartermaster/qm) "aZh" = ( /obj/structure/table/reinforced, -/obj/machinery/computer/stockexchange, /obj/machinery/light{ dir = 4 }, @@ -22298,7 +22300,7 @@ /turf/closed/wall, /area/hydroponics) "baw" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -22454,14 +22456,13 @@ /area/quartermaster/office) "baP" = ( /obj/structure/table/reinforced, -/obj/machinery/computer/stockexchange, /obj/machinery/light{ dir = 4 }, /obj/machinery/newscaster{ pixel_y = -32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = 28 @@ -22672,7 +22673,7 @@ /area/security/prison) "bbl" = ( /obj/machinery/light, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -22968,7 +22969,7 @@ /area/hydroponics) "bbX" = ( /obj/structure/closet/wardrobe/botanist, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -23189,7 +23190,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -23219,7 +23220,6 @@ /area/quartermaster/miningoffice) "bcx" = ( /obj/structure/table/reinforced, -/obj/machinery/computer/stockexchange, /turf/open/floor/plasteel/brown{ dir = 5 }, @@ -23372,7 +23372,7 @@ /obj/item/restraints/handcuffs, /obj/item/restraints/handcuffs, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/vault, /area/security/prison) "bcQ" = ( @@ -23853,7 +23853,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -24061,7 +24061,7 @@ /turf/open/floor/plasteel, /area/security/prison) "bes" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -24119,7 +24119,7 @@ /area/engine/atmos) "beA" = ( /obj/structure/table/reinforced, -/obj/item/device/analyzer{ +/obj/item/analyzer{ pixel_x = 7; pixel_y = 3 }, @@ -24338,7 +24338,7 @@ dir = 1; pixel_y = -22 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26; pixel_y = -26 @@ -25401,7 +25401,7 @@ /area/hydroponics) "bhC" = ( /obj/structure/table/glass, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -25464,7 +25464,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -25505,7 +25505,7 @@ /turf/open/floor/plasteel/red, /area/crew_quarters/kitchen) "bhO" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -25760,7 +25760,7 @@ "bir" = ( /obj/structure/table/reinforced, /obj/effect/decal/cleanable/dirt, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/purple/side{ dir = 4 }, @@ -25959,7 +25959,7 @@ /obj/structure/chair/office/dark{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = 26 @@ -26218,7 +26218,7 @@ /obj/structure/closet/crate{ icon_state = "crateopen" }, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -26579,7 +26579,7 @@ icon_state = "4-8" }, /obj/item/folder/yellow, -/obj/item/device/gps/mining, +/obj/item/gps/mining, /turf/open/floor/plasteel/brown{ dir = 6 }, @@ -26622,7 +26622,7 @@ icon_state = "4-8" }, /obj/item/clothing/gloves/color/latex, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/item/reagent_containers/spray/cleaner{ pixel_x = -3; pixel_y = 2 @@ -26768,11 +26768,11 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/item/device/taperecorder{ +/obj/item/taperecorder{ pixel_x = 3 }, /obj/item/storage/box/deputy, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -27330,7 +27330,6 @@ /area/hallway/primary/fore) "blO" = ( /obj/structure/table/reinforced, -/obj/machinery/computer/stockexchange, /obj/machinery/airalarm{ dir = 4; pixel_x = -23 @@ -27421,7 +27420,7 @@ /obj/structure/closet/wardrobe/miner, /obj/effect/decal/cleanable/dirt, /obj/machinery/light, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_y = -26 @@ -27485,7 +27484,7 @@ /area/security/brig) "bmf" = ( /obj/structure/bed/roller, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -27622,7 +27621,7 @@ pixel_x = 32; pixel_y = 32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = 58 @@ -27685,7 +27684,7 @@ /obj/item/storage/secure/safe/HoS{ pixel_x = 32 }, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/grimy, /area/crew_quarters/heads/hos) "bmD" = ( @@ -28272,7 +28271,7 @@ "bnN" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -28367,7 +28366,7 @@ /area/crew_quarters/heads/hos) "bnX" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /obj/structure/cable/white{ icon_state = "1-2" @@ -28523,7 +28522,7 @@ "bop" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/mechanical, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /obj/effect/turf_decal/bot, /obj/machinery/atmospherics/pipe/simple/cyan/visible{ @@ -28578,7 +28577,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 28 }, @@ -28923,7 +28922,7 @@ name = "Labor Camp Monitoring"; network = list("labor") }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -30069,7 +30068,7 @@ "brr" = ( /obj/structure/table/reinforced, /obj/item/folder/red, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -30094,7 +30093,7 @@ "bru" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, @@ -30444,7 +30443,7 @@ "bse" = ( /obj/structure/table/reinforced, /obj/item/storage/belt/utility, -/obj/item/device/t_scanner, +/obj/item/t_scanner, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 2 }, @@ -30791,7 +30790,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -31263,7 +31262,7 @@ /obj/machinery/ai_status_display{ pixel_y = -32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = -26 @@ -32283,23 +32282,10 @@ }, /area/security/nuke_storage) "bvQ" = ( -/obj/structure/closet/crate{ - name = "Silver Crate" - }, /obj/machinery/light/small{ dir = 1 }, -/obj/item/coin/silver{ - pixel_x = -6 - }, -/obj/item/coin/silver{ - pixel_x = 6 - }, -/obj/item/coin/silver{ - pixel_x = 6 - }, -/obj/item/coin/silver, -/obj/item/coin/silver, +/obj/structure/closet/crate/silvercrate, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -32561,7 +32547,7 @@ /turf/open/floor/plasteel/caution, /area/engine/atmos) "bwx" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -32713,30 +32699,17 @@ /area/hallway/primary/port) "bwJ" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/robotics{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/computer/mecha_control, /obj/structure/cable/white{ icon_state = "4-8" }, /obj/effect/turf_decal/stripes/line{ dir = 10 }, +/obj/effect/spawner/lootdrop/techstorage/command, /turf/open/floor/plasteel, /area/storage/tech) "bwK" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/communications{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/computer/card, -/obj/item/circuitboard/computer/crew{ - pixel_x = 3; - pixel_y = -3 - }, /obj/structure/cable/white{ icon_state = "2-8" }, @@ -32747,25 +32720,18 @@ icon_state = "1-2" }, /obj/effect/turf_decal/stripes/line, +/obj/effect/spawner/lootdrop/techstorage/AI, /turf/open/floor/plasteel, /area/storage/tech) "bwL" = ( /obj/structure/rack, -/obj/item/circuitboard/aicore{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/computer/aiupload, -/obj/item/circuitboard/computer/borgupload{ - pixel_x = 3; - pixel_y = -3 - }, /obj/structure/cable/white{ icon_state = "4-8" }, /obj/effect/turf_decal/stripes/line{ dir = 6 }, +/obj/effect/spawner/lootdrop/techstorage/RnD_secure, /turf/open/floor/plasteel, /area/storage/tech) "bwM" = ( @@ -32794,7 +32760,7 @@ /area/hydroponics) "bwO" = ( /obj/machinery/hydroponics/constructable, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -33272,7 +33238,7 @@ /obj/structure/table/reinforced, /obj/item/crowbar/red, /obj/item/wrench, -/obj/item/device/analyzer{ +/obj/item/analyzer{ pixel_x = 7; pixel_y = 3 }, @@ -33437,7 +33403,7 @@ pixel_y = 32 }, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/dark, /area/bridge) "byk" = ( @@ -33854,7 +33820,7 @@ /area/ai_monitored/turret_protected/ai) "bzc" = ( /obj/structure/table/reinforced, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -34254,7 +34220,7 @@ dir = 4 }, /obj/structure/disposalpipe/segment, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -34329,8 +34295,8 @@ dir = 4 }, /obj/item/wrench, -/obj/item/device/assembly/timer, -/obj/item/device/assembly/signaler, +/obj/item/assembly/timer, +/obj/item/assembly/signaler, /turf/open/floor/plasteel/darkyellow/corner{ dir = 4 }, @@ -34552,7 +34518,7 @@ /obj/structure/cable/white{ icon_state = "1-8" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -34742,7 +34708,7 @@ /obj/machinery/power/terminal{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -34981,25 +34947,25 @@ /area/hallway/primary/port) "bBj" = ( /obj/structure/table/reinforced, -/obj/item/device/plant_analyzer, -/obj/item/device/plant_analyzer, -/obj/item/device/radio, +/obj/item/plant_analyzer, +/obj/item/plant_analyzer, +/obj/item/radio, /turf/open/floor/plasteel/vault{ dir = 5 }, /area/storage/tech) "bBk" = ( /obj/structure/table/reinforced, -/obj/item/device/analyzer{ +/obj/item/analyzer{ pixel_x = 7; pixel_y = 3 }, -/obj/item/device/analyzer{ +/obj/item/analyzer{ pixel_x = 7; pixel_y = 3 }, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/signaler, +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/storage/tech) @@ -35019,16 +34985,16 @@ "bBn" = ( /obj/structure/table/reinforced, /obj/item/aiModule/reset, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/storage/tech) "bBo" = ( /obj/structure/table/reinforced, /obj/item/bodypart/chest/robot, -/obj/item/device/mmi, -/obj/item/device/mmi, +/obj/item/mmi, +/obj/item/mmi, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -35186,7 +35152,7 @@ /turf/open/floor/plasteel/dark, /area/bridge) "bBG" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26; pixel_y = 26 @@ -35208,7 +35174,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -35229,7 +35195,7 @@ }, /area/bridge) "bBL" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = 26 @@ -35292,17 +35258,12 @@ }, /area/security/nuke_storage) "bBU" = ( -/obj/structure/closet/crate{ - name = "Gold Crate" - }, -/obj/item/storage/belt/champion, /obj/machinery/airalarm{ dir = 1; pixel_y = -22 }, /obj/machinery/light/small, -/obj/item/stack/sheet/mineral/gold, -/obj/item/stack/sheet/mineral/gold, +/obj/structure/closet/crate/goldcrate, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -35369,7 +35330,7 @@ /turf/open/floor/plasteel/neutral, /area/security/execution/transfer) "bCc" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -35407,7 +35368,7 @@ /turf/open/floor/plasteel, /area/security/brig) "bCg" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -35446,8 +35407,8 @@ /area/security/main) "bCk" = ( /obj/structure/table/reinforced, -/obj/item/device/flashlight/lamp, -/obj/item/device/radio/intercom{ +/obj/item/flashlight/lamp, +/obj/item/radio/intercom{ anyai = 1; broadcasting = 1; freerange = 1; @@ -35866,7 +35827,7 @@ /area/engine/break_room) "bCY" = ( /obj/structure/table/reinforced, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/caution{ dir = 10 }, @@ -35896,7 +35857,7 @@ /obj/structure/table/reinforced, /obj/item/folder/yellow, /obj/item/pen, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -35932,13 +35893,13 @@ /area/hallway/primary/port) "bDe" = ( /obj/structure/table/reinforced, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/item/stack/cable_coil/white{ pixel_x = 3; pixel_y = 3 }, /obj/item/stack/cable_coil/white, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/machinery/light{ dir = 8 }, @@ -35972,7 +35933,7 @@ /area/storage/tech) "bDk" = ( /obj/structure/table/reinforced, -/obj/item/device/aicard, +/obj/item/aicard, /obj/machinery/light{ dir = 4 }, @@ -35986,16 +35947,16 @@ /area/storage/primary) "bDm" = ( /obj/structure/table/reinforced, -/obj/item/device/analyzer{ +/obj/item/analyzer{ pixel_x = 7; pixel_y = 3 }, -/obj/item/device/analyzer{ +/obj/item/analyzer{ pixel_x = 7; pixel_y = 3 }, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/signaler, +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, /obj/machinery/light{ dir = 8 }, @@ -36129,9 +36090,9 @@ /area/storage/primary) "bDt" = ( /obj/structure/table/reinforced, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, /obj/effect/spawner/lootdrop/maintenance, /obj/machinery/light{ dir = 1 @@ -36641,7 +36602,7 @@ /turf/closed/wall, /area/security/brig) "bEf" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; freerange = 1; listening = 0; @@ -36649,14 +36610,14 @@ pixel_x = -10; pixel_y = 22 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 1; listening = 1; name = "Common Channel"; pixel_x = -27 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -36755,7 +36716,7 @@ /turf/open/floor/circuit/green, /area/ai_monitored/turret_protected/ai) "bEm" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; freerange = 1; listening = 0; @@ -36763,14 +36724,14 @@ pixel_x = 10; pixel_y = 22 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 1; listening = 1; name = "Common Channel"; pixel_x = 27 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -37164,32 +37125,14 @@ /area/storage/tech) "bET" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/scan_consolenew{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/computer/med_data, -/obj/item/circuitboard/computer/pandemic{ - pixel_x = 3; - pixel_y = -3 - }, /obj/effect/turf_decal/bot, -/obj/item/circuitboard/machine/smoke_machine, +/obj/effect/spawner/lootdrop/techstorage/service, /turf/open/floor/plasteel, /area/storage/tech) "bEU" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/aifixer{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/computer/rdconsole, -/obj/item/circuitboard/machine/rdserver{ - pixel_x = 3; - pixel_y = -3 - }, /obj/effect/turf_decal/bot, -/obj/item/circuitboard/machine/autolathe, +/obj/effect/spawner/lootdrop/techstorage/medical, /turf/open/floor/plasteel, /area/storage/tech) "bEV" = ( @@ -37279,7 +37222,7 @@ /obj/structure/table/reinforced, /obj/item/crowbar, /obj/item/wrench, -/obj/item/device/gps, +/obj/item/gps, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/storage/primary) @@ -37446,7 +37389,7 @@ }, /obj/structure/table/wood, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -37482,7 +37425,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -37668,7 +37611,7 @@ /turf/open/floor/plating, /area/security/warden) "bFQ" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -37692,7 +37635,7 @@ }, /area/ai_monitored/turret_protected/ai) "bFT" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 1; listening = 1; @@ -37700,14 +37643,14 @@ pixel_x = -27; pixel_y = -7 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_y = -27 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -38074,30 +38017,14 @@ /area/storage/tech) "bGD" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/cloning{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/machine/clonescanner, -/obj/item/circuitboard/machine/clonepod{ - pixel_x = 3; - pixel_y = -3 - }, /obj/effect/turf_decal/bot, +/obj/effect/spawner/lootdrop/techstorage/security, /turf/open/floor/plasteel, /area/storage/tech) "bGE" = ( /obj/structure/rack, -/obj/item/circuitboard/machine/destructive_analyzer{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/machine/mechfab, -/obj/item/circuitboard/machine/circuit_imprinter{ - pixel_x = 3; - pixel_y = -3 - }, /obj/effect/turf_decal/bot, +/obj/effect/spawner/lootdrop/techstorage/rnd, /turf/open/floor/plasteel, /area/storage/tech) "bGF" = ( @@ -38108,7 +38035,7 @@ }, /obj/item/stock_parts/matter_bin, /obj/item/stock_parts/micro_laser, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -38119,7 +38046,7 @@ "bGG" = ( /obj/structure/rack, /obj/item/airlock_painter, -/obj/item/device/toner, +/obj/item/toner, /obj/machinery/status_display{ pixel_x = -32 }, @@ -38269,7 +38196,7 @@ "bHb" = ( /obj/structure/rack, /obj/machinery/light/small, -/obj/item/device/aicard, +/obj/item/aicard, /obj/item/storage/secure/briefcase, /turf/open/floor/plasteel/vault{ dir = 8 @@ -38280,7 +38207,7 @@ dir = 8 }, /obj/structure/table/wood, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, @@ -38618,7 +38545,7 @@ /obj/structure/table/reinforced, /obj/item/crowbar, /obj/item/wrench, -/obj/item/device/mmi, +/obj/item/mmi, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -38781,7 +38708,7 @@ "bIc" = ( /obj/structure/table/reinforced, /obj/item/folder/yellow, -/obj/item/device/lightreplacer, +/obj/item/lightreplacer, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -38966,7 +38893,6 @@ dir = 4 }, /obj/effect/turf_decal/bot, -/obj/item/circuitboard/machine/autolathe, /turf/open/floor/plasteel, /area/storage/tech) "bIu" = ( @@ -39033,7 +38959,7 @@ "bIA" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/mechanical, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/storage/primary) @@ -39194,7 +39120,7 @@ pixel_x = -7; pixel_y = -26 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = -26 @@ -39353,7 +39279,7 @@ icon_state = "1-8" }, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/camera/detective, +/obj/item/camera/detective, /turf/open/floor/plasteel/vault, /area/security/detectives_office) "bJj" = ( @@ -39367,7 +39293,7 @@ areastring = "/area/security/detectives_office"; pixel_y = 24 }, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/item/restraints/handcuffs, /turf/open/floor/plasteel/vault, /area/security/detectives_office) @@ -39642,7 +39568,7 @@ "bJN" = ( /obj/structure/table/reinforced, /obj/item/folder/blue, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -39700,7 +39626,7 @@ "bJT" = ( /obj/structure/table/reinforced, /obj/item/clipboard, -/obj/item/device/gps/engineering{ +/obj/item/gps/engineering{ gpstag = "CE0" }, /obj/machinery/newscaster{ @@ -39919,31 +39845,16 @@ /area/storage/tech) "bKp" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/security{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/computer/prisoner, -/obj/item/circuitboard/computer/secure_data{ - pixel_x = 3; - pixel_y = -3 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/bot, +/obj/item/electronics/apc, +/obj/item/electronics/airalarm, /turf/open/floor/plasteel, /area/storage/tech) "bKq" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/atmos_alert{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/computer/powermonitor, -/obj/item/circuitboard/computer/stationalert{ - pixel_x = 3; - pixel_y = -3 - }, /obj/effect/turf_decal/bot, +/obj/effect/spawner/lootdrop/techstorage/engineering, /turf/open/floor/plasteel, /area/storage/tech) "bKr" = ( @@ -39959,7 +39870,7 @@ /area/storage/tech) "bKs" = ( /obj/machinery/vending/tool, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -40005,7 +39916,7 @@ pixel_y = 32 }, /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/wood, /area/bridge/meeting_room/council) "bKz" = ( @@ -40066,7 +39977,7 @@ /area/bridge/meeting_room/council) "bKG" = ( /obj/structure/table/wood, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/wood, /area/bridge/meeting_room/council) "bKH" = ( @@ -40165,7 +40076,7 @@ "bKV" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/disposalpipe/segment, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -40840,30 +40751,14 @@ pixel_y = 3 }, /obj/item/circuitboard/machine/teleporter_station, -/obj/item/circuitboard/computer/teleporter{ - pixel_x = 3; - pixel_y = -3 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/storage/tech) "bMi" = ( /obj/structure/rack, -/obj/item/circuitboard/machine/telecomms/server{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/machine/telecomms/relay, -/obj/item/circuitboard/machine/telecomms/receiver, -/obj/item/circuitboard/machine/telecomms/processor, -/obj/item/circuitboard/machine/telecomms/hub, -/obj/item/circuitboard/machine/telecomms/bus, -/obj/item/circuitboard/machine/telecomms/broadcaster{ - pixel_x = 3; - pixel_y = -3 - }, /obj/effect/turf_decal/bot, +/obj/effect/spawner/lootdrop/techstorage/tcomms, /turf/open/floor/plasteel, /area/storage/tech) "bMj" = ( @@ -41002,7 +40897,7 @@ /area/tcommsat/computer) "bMy" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -41066,11 +40961,11 @@ /area/tcommsat/computer) "bME" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, -/obj/item/device/radio{ +/obj/item/radio{ pixel_y = 5 }, /turf/open/floor/plasteel/grimy, @@ -41080,7 +40975,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -41398,14 +41293,14 @@ pixel_x = 3; pixel_y = -3 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, /obj/item/clothing/mask/gas/sechailer, /obj/item/clothing/mask/gas/sechailer, -/obj/item/device/flashlight/seclite, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, +/obj/item/flashlight/seclite, /turf/open/floor/plasteel/red/side{ dir = 5 }, @@ -41431,7 +41326,7 @@ pixel_y = -2 }, /obj/structure/table/reinforced, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -41717,7 +41612,7 @@ /area/crew_quarters/heads/chief) "bNR" = ( /obj/structure/table/reinforced, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/neutral, /area/crew_quarters/heads/chief) "bNS" = ( @@ -41755,7 +41650,7 @@ /turf/open/floor/plasteel, /area/engine/break_room) "bNW" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -41867,7 +41762,7 @@ /obj/structure/table/reinforced, /obj/item/clothing/gloves/color/yellow, /obj/item/storage/toolbox/electrical, -/obj/item/device/multitool, +/obj/item/multitool, /obj/machinery/light{ dir = 8 }, @@ -42193,7 +42088,7 @@ /obj/structure/rack, /obj/item/clothing/gloves/color/fyellow, /obj/item/clothing/suit/hazardvest, -/obj/item/device/multitool, +/obj/item/multitool, /obj/structure/extinguisher_cabinet{ pixel_x = -26 }, @@ -42224,7 +42119,7 @@ /turf/open/floor/plasteel/neutral, /area/storage/tools) "bPb" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -42492,7 +42387,7 @@ id = "AI"; pixel_x = -26 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -42765,10 +42660,10 @@ /area/storage/tech) "bQl" = ( /obj/structure/table/reinforced, -/obj/item/device/assembly/timer, -/obj/item/device/assembly/timer, -/obj/item/device/assembly/voice, -/obj/item/device/assembly/voice, +/obj/item/assembly/timer, +/obj/item/assembly/timer, +/obj/item/assembly/voice, +/obj/item/assembly/voice, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/storage/tech) @@ -42794,7 +42689,7 @@ /obj/structure/table/reinforced, /obj/item/wrench, /obj/item/crowbar, -/obj/item/device/paicard, +/obj/item/paicard, /obj/machinery/newscaster{ pixel_y = -32 }, @@ -42804,18 +42699,18 @@ "bQp" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/mechanical, -/obj/item/device/flashlight, -/obj/item/device/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, /turf/open/floor/plasteel/vault{ dir = 5 }, /area/storage/tech) "bQq" = ( /obj/structure/table/reinforced, -/obj/item/device/assembly/timer, -/obj/item/device/assembly/timer, -/obj/item/device/multitool, -/obj/item/device/multitool, +/obj/item/assembly/timer, +/obj/item/assembly/timer, +/obj/item/multitool, +/obj/item/multitool, /obj/machinery/light, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -42840,15 +42735,15 @@ /area/storage/primary) "bQu" = ( /obj/structure/table/reinforced, -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = 5; pixel_y = 5 }, -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = -5; pixel_y = 5 }, -/obj/item/device/radio, +/obj/item/radio, /obj/machinery/firealarm{ dir = 1; pixel_y = -24 @@ -43006,7 +42901,7 @@ pixel_x = -32; pixel_y = -32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = -26 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -43203,7 +43098,7 @@ pixel_y = -26 }, /obj/structure/disposalpipe/segment, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/item/reagent_containers/food/drinks/flask/det, /turf/open/floor/carpet, /area/security/detectives_office) @@ -43630,7 +43525,7 @@ /area/crew_quarters/heads/chief) "bSe" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/ai_status_display{ pixel_y = 32 }, @@ -43850,7 +43745,7 @@ pixel_x = -26; pixel_y = -26 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -43951,7 +43846,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/camera{ c_tag = "Bridge - Captain's Office"; @@ -44012,7 +43907,7 @@ "bSQ" = ( /obj/structure/table/wood, /obj/item/storage/photo_album, -/obj/item/device/camera, +/obj/item/camera, /turf/open/floor/wood, /area/crew_quarters/heads/captain) "bSR" = ( @@ -44754,7 +44649,7 @@ /obj/structure/cable/white{ icon_state = "1-2" }, -/obj/item/device/beacon, +/obj/item/beacon, /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 }, @@ -44845,7 +44740,7 @@ pixel_x = 32; pixel_y = 32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -45012,6 +44907,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel, /area/hallway/primary/port) "bUw" = ( @@ -45462,7 +45360,7 @@ /obj/item/screwdriver{ pixel_y = 5 }, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plasteel/red/side{ dir = 4 }, @@ -45630,7 +45528,7 @@ name = "MiniSat Antechamber"; req_access_txt = "16" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -45803,7 +45701,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -46126,7 +46024,7 @@ pixel_x = 24 }, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/radio, +/obj/item/radio, /turf/open/floor/plasteel/red/side{ dir = 4 }, @@ -46183,13 +46081,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/neutral, /area/hallway/primary/port) -"bWH" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "bWI" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel/neutral, @@ -46265,7 +46156,7 @@ pixel_x = -38; pixel_y = 7 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -46391,7 +46282,7 @@ /turf/open/floor/carpet, /area/crew_quarters/heads/captain) "bXf" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = -26 }, /turf/open/floor/plasteel/grimy, @@ -46587,7 +46478,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/starboard) "bXz" = ( -/obj/item/device/beacon, +/obj/item/beacon, /obj/structure/cable/white{ icon_state = "4-8" }, @@ -47410,6 +47301,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel, /area/hallway/primary/port) "bYS" = ( @@ -48036,7 +47930,7 @@ dir = 1 }, /obj/machinery/light, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -48142,7 +48036,7 @@ /obj/item/clipboard, /obj/item/toy/figure/borg, /obj/machinery/light, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -48163,7 +48057,7 @@ /obj/machinery/ai_status_display{ pixel_y = -32 }, -/obj/item/device/aicard, +/obj/item/aicard, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -48828,9 +48722,9 @@ pixel_x = 3; pixel_y = -3 }, -/obj/item/device/flashlight/seclite, -/obj/item/device/flashlight/seclite, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, +/obj/item/flashlight/seclite, +/obj/item/flashlight/seclite, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -49138,7 +49032,7 @@ /area/library) "cco" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -49167,11 +49061,11 @@ /area/library) "cct" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/computer/security/telescreen/entertainment{ pixel_x = -32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -49200,7 +49094,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -49343,7 +49237,7 @@ /obj/structure/table/wood, /obj/item/pinpointer/nuke, /obj/item/disk/nuclear, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -49374,7 +49268,7 @@ /area/crew_quarters/heads/captain/private) "ccQ" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /obj/structure/window/reinforced{ dir = 8 }, @@ -49502,7 +49396,7 @@ /obj/structure/table/wood, /obj/item/book/manual/wiki/security_space_law, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/taperecorder{ +/obj/item/taperecorder{ pixel_x = 3 }, /obj/item/clothing/glasses/sunglasses, @@ -49592,7 +49486,7 @@ /turf/open/floor/plasteel/neutral, /area/security/brig) "cdp" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = -7 @@ -50669,7 +50563,7 @@ }, /area/security/brig) "cfn" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -50952,7 +50846,7 @@ /obj/structure/sign/warning/electricshock{ pixel_x = 32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = -26 @@ -51156,7 +51050,7 @@ /area/tcommsat/server) "cgr" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; freerange = 1; name = "Captain's Intercom"; @@ -51288,7 +51182,7 @@ /area/security/courtroom) "cgE" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom" }, /turf/open/floor/plasteel/neutral/side{ @@ -51511,7 +51405,7 @@ "cgZ" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -51980,7 +51874,7 @@ /area/library) "chW" = ( /obj/structure/chair/comfy/brown, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -52354,15 +52248,15 @@ dir = 4; pixel_x = -23 }, -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = 5; pixel_y = 5 }, -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = -5; pixel_y = 5 }, -/obj/item/device/radio, +/obj/item/radio, /turf/open/floor/plasteel/red/side{ dir = 10 }, @@ -52633,7 +52527,7 @@ /area/maintenance/port) "cjr" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/newscaster{ pixel_x = -32 }, @@ -52700,7 +52594,7 @@ /obj/machinery/keycard_auth{ pixel_x = -26 }, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -52887,7 +52781,7 @@ /turf/open/floor/plasteel, /area/security/courtroom) "cjY" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/neutral/side{ dir = 8 }, @@ -52906,7 +52800,7 @@ /area/security/courtroom) "ckb" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -32 }, @@ -52941,8 +52835,8 @@ /area/security/courtroom) "cke" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, -/obj/item/device/radio/intercom{ +/obj/item/flashlight/lamp, +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -53040,7 +52934,7 @@ "ckn" = ( /obj/structure/table/reinforced, /obj/item/aiModule/reset, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -53089,7 +52983,7 @@ "ckt" = ( /obj/structure/table/reinforced, /obj/item/aiModule/supplied/quarantine, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -53514,7 +53408,7 @@ icon_state = "crateopen" }, /obj/effect/decal/cleanable/dirt, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/starboard) @@ -54186,7 +54080,7 @@ /area/security/courtroom) "cmU" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom" }, /turf/open/floor/plasteel/neutral/side, @@ -54625,12 +54519,12 @@ "cnG" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/mechanical, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/decal/cleanable/dirt, /obj/machinery/light{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -54701,7 +54595,7 @@ /area/library) "cnR" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/structure/window/reinforced{ dir = 8 }, @@ -54725,11 +54619,11 @@ /area/library) "cnV" = ( /obj/structure/table/wood, -/obj/item/device/camera_film{ +/obj/item/camera_film{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/camera_film, +/obj/item/camera_film, /obj/machinery/firealarm{ dir = 4; pixel_x = 24 @@ -54799,7 +54693,7 @@ /area/crew_quarters/heads/hop) "cod" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -54963,7 +54857,7 @@ /area/hallway/primary/central) "cot" = ( /obj/item/twohanded/required/kirbyplants/random, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -55335,7 +55229,7 @@ /obj/item/stack/sheet/mineral/plasma{ amount = 20 }, -/obj/item/device/gps/engineering{ +/obj/item/gps/engineering{ gpstag = "ENG0" }, /obj/effect/turf_decal/bot, @@ -55376,7 +55270,7 @@ "cpo" = ( /obj/structure/tank_dispenser, /obj/effect/decal/cleanable/dirt, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -55472,11 +55366,11 @@ /area/library) "cpA" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /turf/open/floor/plasteel/grimy, /area/crew_quarters/heads/hop) "cpB" = ( @@ -55584,7 +55478,7 @@ "cpN" = ( /obj/structure/rack, /obj/item/tank/internals/oxygen, -/obj/item/device/radio, +/obj/item/radio, /obj/machinery/firealarm{ dir = 1; pixel_y = -26 @@ -56232,7 +56126,7 @@ /area/security/courtroom) "crm" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom" }, /turf/open/floor/plasteel/vault, @@ -56548,6 +56442,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 2 }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/engine/engineering) "crY" = ( @@ -56555,6 +56452,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 2 }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/engine/engineering) "crZ" = ( @@ -56684,7 +56584,7 @@ "csl" = ( /obj/structure/table/wood, /obj/item/storage/bag/books, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/structure/noticeboard{ dir = 8; pixel_x = 32 @@ -56840,7 +56740,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -57439,7 +57339,7 @@ dir = 8; pixel_x = 24 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -57680,7 +57580,7 @@ /obj/structure/cable/white{ icon_state = "1-8" }, -/obj/item/device/beacon, +/obj/item/beacon, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -57955,7 +57855,7 @@ icon_state = "crateopen" }, /obj/item/clothing/shoes/jackboots, -/obj/item/device/radio, +/obj/item/radio, /obj/item/storage/secure/briefcase, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -58563,11 +58463,11 @@ /area/crew_quarters/locker) "cvV" = ( /obj/structure/table, -/obj/item/device/camera_film{ +/obj/item/camera_film{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/camera_film, +/obj/item/camera_film, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -58575,7 +58475,7 @@ /area/crew_quarters/locker) "cvW" = ( /obj/structure/table, -/obj/item/device/camera, +/obj/item/camera, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, @@ -58810,7 +58710,7 @@ /area/hallway/primary/central) "cwB" = ( /obj/item/stack/cable_coil, -/obj/item/device/multitool, +/obj/item/multitool, /obj/structure/table/reinforced, /turf/open/floor/plasteel/vault{ dir = 8 @@ -59022,7 +58922,7 @@ amount = 25 }, /obj/item/storage/toolbox/emergency, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/structure/extinguisher_cabinet{ pixel_x = 26 }, @@ -59336,7 +59236,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -60197,7 +60097,7 @@ /area/library) "czE" = ( /obj/structure/table/wood, -/obj/item/device/paicard, +/obj/item/paicard, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/disposalpipe/segment{ dir = 4 @@ -60268,10 +60168,10 @@ /obj/machinery/light, /obj/structure/table/wood, /obj/item/folder, -/obj/item/device/laser_pointer{ +/obj/item/laser_pointer{ pixel_x = 3 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -60279,8 +60179,8 @@ /area/library) "czN" = ( /obj/structure/table/wood, -/obj/item/device/taperecorder, -/obj/item/device/camera, +/obj/item/taperecorder, +/obj/item/camera, /obj/machinery/ai_status_display{ pixel_y = -32 }, @@ -60347,7 +60247,7 @@ /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "czU" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/neutral, /area/ai_monitored/storage/eva) "czV" = ( @@ -60821,7 +60721,7 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/table/reinforced, /obj/item/storage/toolbox/mechanical, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/maintenance/port) @@ -61087,7 +60987,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -61142,7 +61042,7 @@ /area/gateway) "cBG" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -61330,7 +61230,7 @@ /area/crew_quarters/locker) "cBW" = ( /obj/structure/table, -/obj/item/device/paicard, +/obj/item/paicard, /obj/structure/cable/white{ icon_state = "4-8" }, @@ -61409,7 +61309,7 @@ /area/crew_quarters/dorms) "cCe" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/structure/sign/nanotrasen{ pixel_x = -32 }, @@ -61431,7 +61331,7 @@ /obj/structure/closet/secure_closet/personal/cabinet, /obj/item/clothing/suit/jacket/letterman_nanotrasen, /obj/item/clothing/suit/toggle/lawyer, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = 26 @@ -61466,7 +61366,7 @@ name = "trenchcoat" }, /obj/item/clothing/suit/toggle/lawyer/purple, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = 26 @@ -62177,7 +62077,7 @@ /turf/open/floor/wood, /area/crew_quarters/dorms) "cDD" = ( -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, /turf/open/floor/wood{ icon_state = "wood-broken3" }, @@ -62491,7 +62391,7 @@ /area/maintenance/port) "cEp" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/dark, /area/library) "cEq" = ( @@ -62507,7 +62407,7 @@ /area/library) "cEr" = ( /obj/item/twohanded/required/kirbyplants/random, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -62753,9 +62653,9 @@ "cES" = ( /obj/structure/table, /obj/item/storage/belt, -/obj/item/device/radio, -/obj/item/device/radio, -/obj/item/device/radio, +/obj/item/radio, +/obj/item/radio, +/obj/item/radio, /obj/machinery/firealarm{ dir = 8; pixel_x = -24 @@ -63122,7 +63022,7 @@ /area/crew_quarters/dorms) "cFA" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /obj/machinery/newscaster{ pixel_x = -32 }, @@ -63414,8 +63314,8 @@ /obj/item/folder/yellow, /obj/machinery/light, /obj/structure/table/reinforced, -/obj/item/device/gps, -/obj/item/device/gps, +/obj/item/gps, +/obj/item/gps, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -63435,7 +63335,7 @@ /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "cGh" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -63475,7 +63375,7 @@ /area/ai_monitored/storage/eva) "cGn" = ( /obj/item/storage/belt, -/obj/item/device/radio, +/obj/item/radio, /obj/machinery/light, /obj/structure/table/reinforced, /turf/open/floor/plasteel/vault{ @@ -63558,7 +63458,7 @@ /area/bridge/showroom/corporate) "cGv" = ( /obj/structure/table/wood, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/plasteel/grimy, /area/bridge/showroom/corporate) "cGw" = ( @@ -63573,7 +63473,7 @@ desc = "A replica beret resembling that of a special operations officer under Nanotrasen."; name = "replica officer's beret" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -64559,7 +64459,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -65234,7 +65134,7 @@ /obj/structure/closet/crate{ icon_state = "crateopen" }, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -67006,7 +66906,7 @@ /obj/structure/closet/crate{ icon_state = "crateopen" }, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port) @@ -67225,7 +67125,7 @@ /area/medical/storage) "cNN" = ( /obj/structure/closet/secure_closet/medical3, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -67589,7 +67489,7 @@ pixel_y = 3 }, /obj/item/stack/cable_coil/white, -/obj/item/device/multitool, +/obj/item/multitool, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/maintenance/department/electrical) @@ -67800,7 +67700,7 @@ "cPa" = ( /obj/structure/table, /obj/item/folder/white, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/plasteel/whitepurple/corner{ dir = 1 }, @@ -67817,8 +67717,8 @@ "cPc" = ( /obj/structure/table, /obj/item/stack/cable_coil/white, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/timer{ +/obj/item/assembly/igniter, +/obj/item/assembly/timer{ pixel_x = 3; pixel_y = 3 }, @@ -67962,7 +67862,7 @@ "cPx" = ( /obj/structure/table, /obj/item/storage/firstaid/regular, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = 28 @@ -68202,7 +68102,7 @@ /area/crew_quarters/dorms) "cPR" = ( /obj/structure/dresser, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = 26 @@ -68228,7 +68128,7 @@ /area/crew_quarters/dorms) "cPT" = ( /obj/item/twohanded/required/kirbyplants/random, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = 26 @@ -68260,8 +68160,8 @@ /area/crew_quarters/dorms) "cPW" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, -/obj/item/device/radio/intercom{ +/obj/item/flashlight/lamp, +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = 26 @@ -68564,7 +68464,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -68575,7 +68475,7 @@ "cQG" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/radio, +/obj/item/radio, /obj/machinery/ai_status_display{ pixel_y = 32 }, @@ -68589,7 +68489,7 @@ "cQH" = ( /obj/structure/table, /obj/item/folder/white, -/obj/item/device/assembly/infra, +/obj/item/assembly/infra, /turf/open/floor/plasteel/whitepurple/corner{ dir = 1 }, @@ -69065,7 +68965,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -69471,7 +69371,7 @@ }, /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/radio, +/obj/item/radio, /obj/machinery/button/door{ desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; @@ -69498,7 +69398,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -69547,7 +69447,7 @@ pixel_y = 3 }, /obj/item/storage/box/beakers, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -69780,7 +69680,7 @@ /area/maintenance/department/electrical) "cTq" = ( /obj/structure/table/reinforced, -/obj/item/device/analyzer{ +/obj/item/analyzer{ pixel_x = 7; pixel_y = 3 }, @@ -70038,7 +69938,7 @@ pixel_y = 3 }, /obj/item/storage/box/syringes, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 32 }, @@ -70587,7 +70487,7 @@ /obj/machinery/status_display{ pixel_y = -32 }, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/wood, /area/crew_quarters/dorms) "cUW" = ( @@ -70897,7 +70797,7 @@ pixel_y = -3; req_access_txt = "55" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 5 }, @@ -71791,7 +71691,7 @@ /obj/item/clipboard, /obj/item/electronics/airlock, /obj/item/stack/sheet/glass, -/obj/item/device/assembly/signaler, +/obj/item/assembly/signaler, /obj/machinery/airalarm{ dir = 1; pixel_y = -22 @@ -71839,8 +71739,8 @@ /area/science/research) "cXw" = ( /obj/structure/table, -/obj/item/device/gps, -/obj/item/device/assembly/flash/handheld, +/obj/item/gps, +/obj/item/assembly/flash/handheld, /obj/machinery/status_display{ pixel_y = -32 }, @@ -73783,11 +73683,11 @@ /area/crew_quarters/fitness/recreation) "dbI" = ( /obj/structure/table, -/obj/item/device/camera_film{ +/obj/item/camera_film{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/camera_film, +/obj/item/camera_film, /turf/open/floor/plasteel/neutral, /area/crew_quarters/fitness/recreation) "dbJ" = ( @@ -74002,6 +73902,7 @@ pixel_y = -32 }, /obj/effect/turf_decal/bot, +/obj/machinery/portable_atmospherics/canister/bz, /turf/open/floor/plasteel, /area/science/xenobiology) "dcf" = ( @@ -74356,18 +74257,18 @@ /area/medical/chemistry) "dcN" = ( /obj/structure/table/glass, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/timer{ +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/timer{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 3; pixel_y = 3 }, @@ -74420,7 +74321,7 @@ /obj/machinery/computer/crew{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -74687,7 +74588,7 @@ /area/crew_quarters/fitness/recreation) "ddA" = ( /obj/structure/table/wood, -/obj/item/device/camera, +/obj/item/camera, /obj/structure/sign/nanotrasen{ pixel_x = 32; pixel_y = -32 @@ -74860,7 +74761,7 @@ "ddV" = ( /obj/structure/table/reinforced, /obj/item/clothing/gloves/color/latex, -/obj/item/device/slime_scanner, +/obj/item/slime_scanner, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/science/xenobiology) @@ -74885,7 +74786,7 @@ /turf/open/floor/plating, /area/security/checkpoint/science/research) "ddY" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -32 }, @@ -74950,7 +74851,7 @@ /obj/item/stock_parts/capacitor, /obj/item/stock_parts/manipulator, /obj/item/stock_parts/manipulator, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -76053,7 +75954,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -76728,7 +76629,7 @@ /turf/open/floor/plasteel/neutral, /area/science/research) "dhZ" = ( -/obj/item/device/beacon, +/obj/item/beacon, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -76964,7 +76865,7 @@ /obj/structure/cable/white{ icon_state = "4-8" }, -/obj/item/device/beacon, +/obj/item/beacon, /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/whiteblue, /area/medical/medbay/central) @@ -77273,7 +77174,7 @@ /area/crew_quarters/abandoned_gambling_den) "djn" = ( /obj/structure/table/reinforced, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/screwdriver, /obj/machinery/computer/security/telescreen{ desc = "Used for watching the RD's goons from the safety of his office."; @@ -77367,6 +77268,12 @@ /obj/machinery/light{ dir = 1 }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, /turf/open/floor/plasteel/whitepurple/side{ dir = 1 }, @@ -77389,7 +77296,7 @@ "djB" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/mechanical, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/turf_decal/bot, /obj/structure/sign/poster/official/science{ pixel_x = -32 @@ -77731,7 +77638,7 @@ /obj/structure/cable/white{ icon_state = "1-4" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -78070,7 +77977,7 @@ "dkT" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/table/wood, -/obj/item/device/modular_computer/tablet/preset/cheap, +/obj/item/modular_computer/tablet/preset/cheap, /turf/open/floor/plating, /area/maintenance/starboard/aft) "dkU" = ( @@ -78214,6 +78121,9 @@ dir = 10 }, /obj/structure/chair/comfy, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, /turf/open/floor/plasteel/whitepurple/side{ dir = 8 }, @@ -78224,6 +78134,9 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/vending/snack/random, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, /turf/open/floor/plasteel/whitepurple/side{ dir = 4 }, @@ -78289,7 +78202,7 @@ pixel_y = 3 }, /obj/item/stack/cable_coil/white, -/obj/item/device/geiger_counter, +/obj/item/geiger_counter, /obj/effect/turf_decal/bot, /obj/structure/sign/poster/official/cleanliness{ pixel_x = 32 @@ -78913,7 +78826,7 @@ "dmS" = ( /obj/structure/table/reinforced, /obj/item/folder/white, -/obj/item/device/paicard, +/obj/item/paicard, /obj/machinery/airalarm{ dir = 4; pixel_x = -23 @@ -78983,7 +78896,7 @@ dir = 4; pixel_x = -23 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -79329,7 +79242,7 @@ "dnN" = ( /obj/structure/table, /obj/item/storage/toolbox/mechanical, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/hallway/secondary/construction) @@ -79474,7 +79387,7 @@ /area/crew_quarters/abandoned_gambling_den) "dog" = ( /obj/structure/table/reinforced, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -79666,7 +79579,7 @@ /obj/item/stack/sheet/mineral/plasma{ amount = 5 }, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -79864,7 +79777,7 @@ /area/crew_quarters/heads/hor) "doM" = ( /obj/structure/table/reinforced, -/obj/item/device/aicard, +/obj/item/aicard, /obj/item/circuitboard/aicore, /obj/structure/disposalpipe/sorting/mail{ dir = 4; @@ -80493,6 +80406,9 @@ dir = 9 }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, /turf/open/floor/plasteel/whitepurple/side{ dir = 8 }, @@ -80518,6 +80434,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 }, +/obj/effect/turf_decal/stripes/corner, /turf/open/floor/plasteel/whitepurple/side{ dir = 4 }, @@ -80573,7 +80490,7 @@ "dqn" = ( /obj/structure/table/reinforced, /obj/item/book/manual/experimentor, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -80961,7 +80878,7 @@ /area/maintenance/department/medical) "dqY" = ( /obj/structure/rack, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/item/clothing/glasses/eyepatch, /turf/open/floor/plating{ icon_state = "panelscorched" @@ -81172,7 +81089,7 @@ /area/crew_quarters/abandoned_gambling_den) "drz" = ( /obj/structure/table/reinforced, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/screwdriver, /obj/machinery/computer/security/telescreen{ desc = "Used for watching the RD's goons from the safety of his office."; @@ -81553,7 +81470,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -82021,7 +81938,7 @@ "dtz" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/disposalpipe/segment, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -82350,9 +82267,9 @@ /area/crew_quarters/abandoned_gambling_den) "duk" = ( /obj/structure/table/wood, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/timer{ +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/timer{ pixel_x = 3; pixel_y = 3 }, @@ -82380,8 +82297,8 @@ /area/science/research/abandoned) "duo" = ( /obj/structure/table/reinforced, -/obj/item/device/mmi, -/obj/item/device/assembly/prox_sensor, +/obj/item/mmi, +/obj/item/assembly/prox_sensor, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/science/research/abandoned) @@ -82420,7 +82337,7 @@ /obj/structure/table/reinforced, /obj/item/stack/sheet/metal/fifty, /obj/item/stack/sheet/glass/fifty, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/science/research/abandoned) @@ -82514,7 +82431,7 @@ /turf/open/floor/plasteel/neutral, /area/science/mixing) "duH" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = 26 @@ -82771,7 +82688,7 @@ /area/medical/genetics) "dvj" = ( /obj/structure/table/reinforced, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -82897,7 +82814,7 @@ "dvu" = ( /obj/structure/table/glass, /obj/item/folder/white, -/obj/item/device/flashlight/pen, +/obj/item/flashlight/pen, /obj/item/clothing/neck/stethoscope, /turf/open/floor/plasteel/cmo, /area/crew_quarters/heads/cmo) @@ -82910,7 +82827,7 @@ /obj/structure/table/glass, /obj/item/folder/blue, /obj/item/clothing/glasses/hud/health, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -83129,7 +83046,7 @@ /area/hallway/secondary/construction) "dvO" = ( /obj/structure/table, -/obj/item/device/analyzer{ +/obj/item/analyzer{ pixel_x = 7; pixel_y = 3 }, @@ -83149,7 +83066,7 @@ /obj/structure/rack, /obj/effect/decal/cleanable/dirt, /obj/item/weldingtool, -/obj/item/device/assembly/voice, +/obj/item/assembly/voice, /obj/item/clothing/head/welding, /obj/effect/spawner/lootdrop/maintenance, /obj/effect/turf_decal/stripes/line{ @@ -83362,11 +83279,11 @@ icon_state = "4-8" }, /obj/item/storage/secure/briefcase, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/machinery/newscaster{ pixel_y = -32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26; pixel_y = -26 @@ -83927,7 +83844,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -84561,7 +84478,7 @@ /obj/machinery/computer/med_data{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -84686,7 +84603,7 @@ /area/hallway/secondary/construction) "dyR" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -84731,7 +84648,7 @@ /area/crew_quarters/abandoned_gambling_den) "dyY" = ( /obj/structure/table/wood/poker, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plating, /area/crew_quarters/abandoned_gambling_den) "dyZ" = ( @@ -85041,15 +84958,15 @@ /area/science/robotics/lab) "dzG" = ( /obj/item/paper_bin, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 5; pixel_y = 7 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 5; pixel_y = 7 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 5; pixel_y = 7 }, @@ -85182,7 +85099,7 @@ /obj/structure/table/reinforced, /obj/item/storage/box/monkeycubes, /obj/item/storage/box/monkeycubes, -/obj/item/device/radio/headset/headset_medsci, +/obj/item/radio/headset/headset_medsci, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -85236,7 +85153,7 @@ name = "medbay camera" }, /obj/item/clipboard, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/structure/table, /turf/open/floor/plasteel/whiteblue/corner, /area/medical/medbay/central) @@ -85299,7 +85216,7 @@ }, /area/crew_quarters/heads/cmo) "dAg" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -85356,7 +85273,7 @@ /obj/structure/cable/white{ icon_state = "2-4" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -85684,7 +85601,7 @@ }, /area/medical/genetics) "dAT" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -85930,7 +85847,7 @@ /area/medical/medbay/central) "dBr" = ( /obj/item/folder/white, -/obj/item/device/flashlight/pen, +/obj/item/flashlight/pen, /obj/item/clothing/neck/stethoscope, /obj/structure/table, /turf/open/floor/plasteel/vault, @@ -86281,16 +86198,16 @@ /area/maintenance/port) "dCa" = ( /obj/structure/table/reinforced, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -32 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 6; pixel_y = 6 }, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter, +/obj/item/assembly/igniter{ pixel_x = -6; pixel_y = -6 }, @@ -86389,11 +86306,11 @@ /area/crew_quarters/heads/hor) "dCm" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/newscaster{ pixel_y = -32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -86421,8 +86338,8 @@ /obj/item/bodypart/l_arm/robot{ pixel_x = -3 }, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/structure/table/reinforced, /obj/machinery/light_switch{ pixel_x = -38; @@ -86431,10 +86348,10 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/science/robotics/lab) @@ -86674,7 +86591,7 @@ /obj/structure/closet/crate{ icon_state = "crateopen" }, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -86806,7 +86723,7 @@ amount = 23 }, /obj/item/stack/cable_coil/white, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/science/research/abandoned) @@ -86858,19 +86775,19 @@ /turf/open/floor/plasteel/neutral, /area/maintenance/port) "dDn" = ( -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -4; pixel_y = 1 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 8; pixel_y = 9 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 9; pixel_y = -2 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_y = 2 }, /obj/structure/table/reinforced, @@ -86883,19 +86800,19 @@ /turf/open/floor/plasteel, /area/science/mixing) "dDo" = ( -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 5; pixel_y = 4 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = -4; pixel_y = 2 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 6; pixel_y = -4 }, -/obj/item/device/assembly/timer, +/obj/item/assembly/timer, /obj/structure/table/reinforced, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/stripes/line{ @@ -86971,7 +86888,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -87294,7 +87211,7 @@ /area/medical/medbay/central) "dEe" = ( /obj/item/twohanded/required/kirbyplants/random, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -87375,18 +87292,18 @@ }, /area/maintenance/port) "dEq" = ( -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve{ pixel_x = -5 }, -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve{ pixel_x = -5 }, -/obj/item/device/transfer_valve, -/obj/item/device/transfer_valve, -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve, +/obj/item/transfer_valve, +/obj/item/transfer_valve{ pixel_x = 5 }, -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve{ pixel_x = 5 }, /obj/structure/table/reinforced, @@ -87467,7 +87384,7 @@ /turf/open/floor/plasteel, /area/science/storage) "dEy" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -87550,9 +87467,9 @@ /obj/item/storage/firstaid, /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/bot, -/obj/item/device/healthanalyzer, -/obj/item/device/healthanalyzer, -/obj/item/device/paicard, +/obj/item/healthanalyzer, +/obj/item/healthanalyzer, +/obj/item/paicard, /turf/open/floor/plasteel, /area/science/robotics/lab) "dEI" = ( @@ -87686,7 +87603,7 @@ /obj/structure/table, /obj/effect/decal/cleanable/dirt, /obj/item/storage/backpack/duffelbag/med, -/obj/item/device/flashlight/pen, +/obj/item/flashlight/pen, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) "dFe" = ( @@ -87805,7 +87722,7 @@ /area/crew_quarters/theatre/abandoned) "dFs" = ( /obj/structure/table/wood, -/obj/item/device/instrument/guitar, +/obj/item/instrument/guitar, /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plasteel/vault{ dir = 5 @@ -87853,7 +87770,7 @@ pixel_y = 3 }, /obj/item/book/manual/detective, -/obj/item/device/camera/detective, +/obj/item/camera/detective, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -87872,7 +87789,7 @@ /obj/structure/chair/office/dark{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26; pixel_y = 32 @@ -87963,18 +87880,18 @@ /turf/closed/wall, /area/science/mixing) "dFI" = ( -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_y = 8 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = -8; pixel_y = 5 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = 6; pixel_y = 5 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = -2; pixel_y = -2 }, @@ -88702,6 +88619,12 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, /turf/open/floor/plasteel/neutral/side, /area/science/mixing) "dHg" = ( @@ -88839,7 +88762,7 @@ /obj/item/screwdriver{ pixel_y = 5 }, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/clothing/head/welding, /obj/machinery/light{ dir = 8 @@ -89257,6 +89180,12 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, /turf/open/floor/plasteel/neutral/side{ dir = 4 }, @@ -89269,7 +89198,7 @@ icon_state = "1-2" }, /obj/effect/landmark/blobstart, -/obj/item/device/beacon, +/obj/item/beacon, /obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -89282,6 +89211,10 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, /turf/open/floor/plasteel/neutral/side{ dir = 8; heat_capacity = 1e+006 @@ -89524,7 +89457,7 @@ /obj/item/stock_parts/cell/high, /obj/item/stock_parts/cell/high, /obj/machinery/cell_charger, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -89559,9 +89492,9 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/item/device/mmi, -/obj/item/device/mmi, -/obj/item/device/mmi, +/obj/item/mmi, +/obj/item/mmi, +/obj/item/mmi, /obj/structure/sign/departments/medbay/alt{ pixel_y = -32 }, @@ -89742,7 +89675,7 @@ /turf/open/floor/plasteel/cmo, /area/crew_quarters/heads/cmo) "dJj" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -89761,7 +89694,7 @@ /area/crew_quarters/heads/cmo) "dJl" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/structure/sign/nanotrasen{ pixel_x = 32 }, @@ -90055,6 +89988,10 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, /turf/open/floor/plasteel/neutral/side{ dir = 1 }, @@ -90102,7 +90039,7 @@ "dJW" = ( /obj/machinery/disposal/bin, /obj/effect/decal/cleanable/dirt, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -32 }, @@ -90326,7 +90263,7 @@ /area/crew_quarters/theatre/abandoned) "dKs" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/airalarm{ dir = 4; pixel_x = -23 @@ -90355,7 +90292,7 @@ /obj/structure/table/wood, /obj/item/clothing/gloves/color/black, /obj/item/storage/box/evidence, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/machinery/airalarm{ dir = 8; pixel_x = 24 @@ -90959,7 +90896,7 @@ /turf/open/floor/plating/airless, /area/science/test_area) "dLF" = ( -/obj/item/device/beacon, +/obj/item/beacon, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/airless, /area/science/test_area) @@ -91146,7 +91083,7 @@ /area/science/research) "dMe" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -91708,7 +91645,7 @@ /turf/open/floor/plating, /area/crew_quarters/theatre/abandoned) "dNh" = ( -/obj/item/device/instrument/violin, +/obj/item/instrument/violin, /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -92322,7 +92259,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -93087,7 +93024,7 @@ pixel_x = -32 }, /obj/item/paper_bin, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -93170,7 +93107,7 @@ "dQw" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/carpet, /area/library/abandoned) "dQx" = ( @@ -93329,7 +93266,7 @@ /turf/open/floor/plasteel/neutral, /area/hallway/primary/aft) "dQR" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/neutral, /area/hallway/primary/aft) "dQU" = ( @@ -93580,7 +93517,7 @@ pixel_y = 32 }, /obj/structure/table/glass, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -93603,7 +93540,7 @@ dir = 8; pixel_y = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -93885,7 +93822,7 @@ dir = 8 }, /obj/item/crowbar, -/obj/item/device/radio, +/obj/item/radio, /obj/structure/sign/poster/official/do_not_question{ pixel_y = -32 }, @@ -94550,7 +94487,7 @@ /obj/structure/table/wood, /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/effect/decal/cleanable/dirt, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plating, /area/library/abandoned) "dTv" = ( @@ -94884,7 +94821,7 @@ /area/chapel/main) "dUq" = ( /obj/item/twohanded/required/kirbyplants/random, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -95092,7 +95029,7 @@ /obj/structure/closet/crate{ icon_state = "crateopen" }, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, @@ -95205,7 +95142,7 @@ icon_state = "1-2" }, /obj/item/clothing/gloves/color/latex, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/item/clothing/glasses/hud/health, /obj/effect/turf_decal/stripes/corner, /turf/open/floor/plasteel, @@ -95262,7 +95199,7 @@ /area/medical/virology) "dVz" = ( /obj/structure/closet/crate/freezer/blood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -95280,7 +95217,7 @@ }, /area/medical/virology) "dVC" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -95369,7 +95306,7 @@ /obj/structure/table, /obj/item/wrench, /obj/item/crowbar, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -96351,7 +96288,7 @@ }, /obj/item/stack/packageWrap, /obj/item/hand_labeler, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -96365,7 +96302,7 @@ "dYj" = ( /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plating, /area/library/abandoned) "dYk" = ( @@ -96434,7 +96371,7 @@ /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /turf/open/floor/plasteel/dark, /area/library/abandoned) "dYu" = ( @@ -97325,7 +97262,7 @@ }, /area/chapel/office) "eav" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -97460,7 +97397,7 @@ }, /area/medical/virology) "eaR" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -97975,7 +97912,7 @@ /area/chapel/main) "ebW" = ( /obj/structure/table/wood/fancy, -/obj/item/device/flashlight/lantern, +/obj/item/flashlight/lantern, /turf/open/floor/plasteel/grimy, /area/chapel/main) "ebX" = ( @@ -98105,7 +98042,7 @@ }, /obj/item/stack/cable_coil/white, /obj/item/stack/cable_coil/white, -/obj/item/device/multitool, +/obj/item/multitool, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault{ dir = 5 @@ -98313,7 +98250,7 @@ }, /obj/effect/decal/cleanable/dirt, /obj/item/tank/internals/oxygen, -/obj/item/device/radio, +/obj/item/radio, /obj/item/clothing/mask/breath, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -98530,7 +98467,7 @@ }, /obj/effect/decal/cleanable/dirt, /obj/item/tank/internals/oxygen, -/obj/item/device/radio, +/obj/item/radio, /obj/item/clothing/mask/breath, /turf/open/floor/plating, /area/maintenance/port/aft) @@ -98883,11 +98820,11 @@ pixel_x = 26 }, /obj/item/storage/toolbox/mechanical, -/obj/item/device/flashlight, +/obj/item/flashlight, /turf/open/floor/plating, /area/maintenance/port/aft) "edS" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -99128,8 +99065,8 @@ /area/maintenance/port/aft) "eev" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, -/obj/item/device/radio/intercom{ +/obj/item/flashlight/lamp, +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -99169,11 +99106,11 @@ /area/chapel/office) "eez" = ( /obj/structure/table/wood, -/obj/item/device/camera_film{ +/obj/item/camera_film{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/camera_film, +/obj/item/camera_film, /obj/machinery/firealarm{ dir = 4; pixel_x = 24 @@ -99213,7 +99150,7 @@ /area/chapel/office) "eeD" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -99542,7 +99479,7 @@ }, /obj/item/crowbar, /obj/item/wrench, -/obj/item/device/radio, +/obj/item/radio, /turf/open/floor/plasteel/red/side{ dir = 8 }, @@ -99921,7 +99858,7 @@ }, /obj/item/restraints/handcuffs, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/red/side, /area/security/checkpoint/escape) "egq" = ( @@ -100074,7 +100011,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "ehG" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -100242,9 +100179,9 @@ /area/quartermaster/storage) "hic" = ( /obj/structure/table/reinforced, -/obj/item/device/integrated_electronics/analyzer, -/obj/item/device/integrated_electronics/debugger, -/obj/item/device/integrated_electronics/wirer, +/obj/item/integrated_electronics/analyzer, +/obj/item/integrated_electronics/debugger, +/obj/item/integrated_electronics/wirer, /turf/open/floor/plasteel/white/side{ dir = 10 }, @@ -100352,7 +100289,7 @@ pixel_y = 32; receive_ore_updates = 1 }, -/obj/item/device/integrated_circuit_printer, +/obj/item/integrated_circuit_printer, /turf/open/floor/plasteel/white/side, /area/science/circuit) "jqM" = ( @@ -100522,7 +100459,7 @@ /obj/machinery/newscaster{ pixel_y = -32 }, -/obj/item/device/integrated_circuit_printer, +/obj/item/integrated_circuit_printer, /turf/open/floor/plasteel/white/side{ dir = 1 }, @@ -100556,9 +100493,9 @@ /area/science/research/abandoned) "qhc" = ( /obj/structure/table/reinforced, -/obj/item/device/integrated_electronics/analyzer, -/obj/item/device/integrated_electronics/debugger, -/obj/item/device/integrated_electronics/wirer, +/obj/item/integrated_electronics/analyzer, +/obj/item/integrated_electronics/debugger, +/obj/item/integrated_electronics/wirer, /turf/open/floor/plasteel/white/side{ dir = 9 }, @@ -100652,6 +100589,10 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/light, /obj/structure/reagent_dispensers/water_cooler, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, /turf/open/floor/plasteel/whitepurple/side, /area/science/misc_lab) "uYS" = ( @@ -119098,7 +119039,7 @@ aoG apI aqJ aaa -asj +aoG apI aqJ aaa @@ -132514,7 +132455,7 @@ bOp bQq bDu bUv -bWH +bWC bYR caG caG diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index fd874256f7..e6ef58c9af 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -287,7 +287,7 @@ /area/security/prison) "aaT" = ( /obj/machinery/hydroponics/constructable, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/machinery/airalarm{ dir = 8; pixel_x = 24 @@ -688,7 +688,7 @@ /obj/item/clothing/glasses/sunglasses/blindfold, /obj/item/clothing/mask/muzzle, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/electropack, +/obj/item/electropack, /turf/open/floor/plasteel/dark, /area/security/execution/education) "abX" = ( @@ -1012,7 +1012,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; @@ -1181,7 +1181,7 @@ pixel_y = 26; req_access_txt = "2" }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = -3; pixel_y = 2 }, @@ -1213,11 +1213,11 @@ /obj/item/folder/red{ pixel_x = 3 }, -/obj/item/device/taperecorder{ +/obj/item/taperecorder{ pixel_x = -3 }, /obj/item/storage/fancy/cigarettes, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/item/reagent_containers/spray/pepper, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -1358,7 +1358,7 @@ /area/crew_quarters/fitness/recreation) "adm" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/structure/reagent_dispensers/peppertank{ pixel_x = -29 }, @@ -1536,7 +1536,7 @@ /turf/open/space, /area/space/nearstation) "adJ" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -1865,7 +1865,7 @@ "aer" = ( /obj/structure/rack, /obj/item/gun/energy/ionrifle{ - pin = /obj/item/device/firing_pin + pin = /obj/item/firing_pin }, /obj/machinery/light{ dir = 1 @@ -2383,7 +2383,7 @@ dir = 4; pixel_x = -22 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -2661,7 +2661,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -2749,7 +2749,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) "afZ" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -2855,7 +2855,7 @@ /area/crew_quarters/heads/hos) "agh" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/carpet, /area/crew_quarters/heads/hos) @@ -3073,7 +3073,7 @@ "agF" = ( /obj/structure/rack, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -3281,10 +3281,10 @@ /area/crew_quarters/heads/hos) "ahb" = ( /obj/structure/table/wood, -/obj/item/device/taperecorder{ +/obj/item/taperecorder{ pixel_x = -4 }, -/obj/item/device/radio/off{ +/obj/item/radio/off{ pixel_y = 3 }, /turf/open/floor/plasteel/dark, @@ -3386,7 +3386,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -4748,7 +4748,7 @@ pixel_y = -2 }, /obj/item/dice/d8, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/fore) @@ -4763,7 +4763,7 @@ /area/security/brig) "aku" = ( /obj/structure/table, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -4779,7 +4779,7 @@ pixel_x = -4; pixel_y = 2 }, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /turf/open/floor/plasteel/whitered/side{ dir = 1 }, @@ -4950,7 +4950,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -5239,7 +5239,7 @@ c_tag = "Holodeck"; dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -6064,7 +6064,7 @@ name = "windoor" }, /obj/item/book/manual/wiki/engineering_hacking, -/obj/item/device/tape/random, +/obj/item/tape/random, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/fore) @@ -6655,7 +6655,7 @@ }, /obj/structure/rack, /obj/item/storage/firstaid/regular, -/obj/item/device/healthanalyzer{ +/obj/item/healthanalyzer{ pixel_y = -2 }, /obj/machinery/camera{ @@ -6784,7 +6784,7 @@ "aoC" = ( /obj/structure/table, /obj/item/restraints/handcuffs, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel, /area/security/main) "aoD" = ( @@ -7234,14 +7234,7 @@ /area/maintenance/port/fore) "apx" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/secure_data{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/circuitboard/computer/security{ - pixel_x = 1; - pixel_y = -1 - }, +/obj/effect/spawner/lootdrop/techstorage/service, /turf/open/floor/plasteel/dark, /area/storage/tech) "apy" = ( @@ -7294,7 +7287,7 @@ /area/maintenance/port/fore) "apD" = ( /obj/item/storage/box/lights/mixed, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, @@ -7456,7 +7449,7 @@ "apW" = ( /obj/structure/table, /obj/item/folder/red, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel, /area/security/main) "apY" = ( @@ -7549,7 +7542,7 @@ /area/crew_quarters/fitness/recreation) "aqk" = ( /obj/machinery/vending/coffee, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -7597,7 +7590,7 @@ }, /area/maintenance/starboard) "aqs" = ( -/obj/item/device/mmi{ +/obj/item/mmi{ name = "man-machine interface" }, /obj/structure/rack, @@ -7700,7 +7693,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -7861,7 +7854,7 @@ /obj/structure/closet/crate, /obj/item/restraints/handcuffs, /obj/item/bodybag, -/obj/item/device/radio, +/obj/item/radio, /obj/effect/spawner/lootdrop/maintenance{ lootcount = 3; name = "3maintenance loot spawner" @@ -8623,7 +8616,7 @@ /obj/structure/cable/yellow{ icon_state = "2-8" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 29; @@ -8819,7 +8812,7 @@ pixel_y = 7 }, /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -9594,7 +9587,7 @@ /area/maintenance/starboard/fore) "auy" = ( /obj/item/stack/sheet/cardboard, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, @@ -9841,7 +9834,7 @@ }, /area/security/brig) "avd" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -10554,7 +10547,7 @@ /area/security/brig) "awx" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/dark, /area/security/brig) "awy" = ( @@ -11026,8 +11019,8 @@ "axz" = ( /obj/structure/table, /obj/item/folder/red, -/obj/item/device/taperecorder, -/obj/item/device/radio/intercom{ +/obj/item/taperecorder, +/obj/item/radio/intercom{ anyai = 1; broadcasting = 1; freerange = 1; @@ -11730,7 +11723,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -11752,11 +11745,11 @@ /area/quartermaster/miningoffice) "azm" = ( /obj/structure/closet/crate, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, @@ -12093,7 +12086,7 @@ network = list("prison"); pixel_y = 30 }, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -12197,7 +12190,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -12348,7 +12341,7 @@ }, /area/engine/engineering) "aAr" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -12395,7 +12388,7 @@ /area/engine/engineering) "aAz" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -12528,25 +12521,11 @@ /turf/open/floor/plasteel/floorgrime, /area/quartermaster/warehouse) "aAP" = ( -/obj/structure/closet/crate{ - name = "Gold Crate" - }, -/obj/item/stack/sheet/mineral/gold{ - pixel_x = -1; - pixel_y = 5 - }, -/obj/item/stack/sheet/mineral/gold{ - pixel_y = 2 - }, -/obj/item/stack/sheet/mineral/gold{ - pixel_x = 1; - pixel_y = -2 - }, -/obj/item/storage/belt/champion, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, /obj/effect/turf_decal/bot_white/right, +/obj/structure/closet/crate/goldcrate, /turf/open/floor/plasteel/vault{ dir = 1 }, @@ -12580,30 +12559,8 @@ }, /area/security/nuke_storage) "aAT" = ( -/obj/item/coin/silver{ - pixel_x = 7; - pixel_y = 12 - }, -/obj/item/coin/silver{ - pixel_x = 12; - pixel_y = 7 - }, -/obj/item/coin/silver{ - pixel_x = 4; - pixel_y = 8 - }, -/obj/item/coin/silver{ - pixel_x = -6; - pixel_y = 5 - }, -/obj/item/coin/silver{ - pixel_x = 5; - pixel_y = -8 - }, -/obj/structure/closet/crate{ - name = "Silver Crate" - }, /obj/effect/turf_decal/bot_white/left, +/obj/structure/closet/crate/silvercrate, /turf/open/floor/plasteel/vault{ dir = 1 }, @@ -13093,7 +13050,7 @@ /turf/open/floor/plasteel, /area/quartermaster/miningoffice) "aBX" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -13339,11 +13296,11 @@ /obj/structure/cable/yellow{ icon_state = "0-4" }, -/obj/item/device/taperecorder{ +/obj/item/taperecorder{ pixel_x = 3 }, /obj/item/storage/box/evidence, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, /turf/open/floor/plasteel/grimy, /area/security/detectives_office) "aCt" = ( @@ -13508,7 +13465,7 @@ /area/maintenance/starboard/fore) "aCN" = ( /obj/structure/reagent_dispensers/fueltank, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_x = -30 }, @@ -13878,7 +13835,7 @@ c_tag = "Brig - Desk"; dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -13897,7 +13854,7 @@ dir = 8 }, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/camera/detective, +/obj/item/camera/detective, /turf/open/floor/plasteel/grimy, /area/security/detectives_office) "aDJ" = ( @@ -13917,7 +13874,7 @@ /area/security/detectives_office) "aDL" = ( /obj/machinery/light/small, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -14502,7 +14459,7 @@ /obj/structure/cable/yellow{ icon_state = "2-4" }, -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/machinery/door/poddoor/shutters/preopen{ id = "briglockdown"; name = "brig shutters" @@ -15123,7 +15080,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -15187,7 +15144,7 @@ }, /area/hallway/primary/fore) "aGo" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/red/corner{ dir = 2 }, @@ -15507,28 +15464,10 @@ }, /area/engine/engineering) "aGT" = ( -/obj/structure/closet/crate{ - name = "solar pack crate" - }, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/circuitboard/computer/solar_control, -/obj/item/electronics/tracker, -/obj/item/paper/guides/jobs/engi/solars, /obj/effect/turf_decal/bot{ dir = 1 }, +/obj/structure/closet/crate/solarpanel_small, /turf/open/floor/plasteel{ dir = 1 }, @@ -16009,7 +15948,7 @@ /turf/open/floor/plating, /area/quartermaster/storage) "aIh" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = -28; @@ -16245,7 +16184,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 2 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -16424,7 +16363,7 @@ /turf/open/floor/plasteel, /area/security/courtroom) "aIN" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -16480,7 +16419,7 @@ /area/security/courtroom) "aIU" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -16867,7 +16806,7 @@ /area/security/courtroom) "aJZ" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; dir = 8; listening = 0; @@ -16921,7 +16860,7 @@ /obj/structure/chair/office/dark{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = -28 @@ -17042,7 +16981,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/reagent_containers/glass/bucket, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, @@ -17307,7 +17246,7 @@ "aLf" = ( /obj/structure/table, /obj/item/clothing/gloves/color/fyellow, -/obj/item/device/gps{ +/obj/item/gps{ gpstag = "AUX0" }, /turf/open/floor/plasteel/brown{ @@ -17378,10 +17317,10 @@ /area/storage/primary) "aLm" = ( /obj/structure/table, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/signaler, -/obj/item/device/multitool, -/obj/item/device/multitool{ +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, +/obj/item/multitool, +/obj/item/multitool{ pixel_x = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -17586,7 +17525,7 @@ "aLP" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible, /obj/machinery/portable_atmospherics/scrubber, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -17915,7 +17854,7 @@ /area/ai_monitored/turret_protected/ai_upload) "aMJ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -18191,7 +18130,7 @@ /obj/item/stack/sheet/mineral/plasma{ amount = 30 }, -/obj/item/device/gps, +/obj/item/gps, /turf/open/floor/plating, /area/engine/engineering) "aNq" = ( @@ -18434,7 +18373,6 @@ /area/quartermaster/qm) "aNR" = ( /obj/structure/table, -/obj/machinery/computer/stockexchange, /turf/open/floor/plasteel/brown{ dir = 1 }, @@ -18486,11 +18424,11 @@ /area/storage/primary) "aNY" = ( /obj/structure/table, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = -4; pixel_y = -4 }, -/obj/item/device/assembly/igniter, +/obj/item/assembly/igniter, /obj/item/screwdriver{ pixel_y = 16 }, @@ -18589,7 +18527,7 @@ /turf/open/floor/plasteel/neutral/side, /area/security/courtroom) "aOj" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/neutral/side, /area/security/courtroom) "aOk" = ( @@ -18620,7 +18558,7 @@ /turf/open/floor/plasteel, /area/security/courtroom) "aOn" = ( -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/item/cartridge/lawyer, /obj/structure/table/wood, /obj/machinery/button/door{ @@ -19128,7 +19066,7 @@ "aPr" = ( /obj/structure/table, /obj/item/wirecutters, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, @@ -19365,7 +19303,7 @@ /turf/open/floor/grass, /area/hydroponics/garden) "aPR" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -19584,7 +19522,7 @@ pixel_x = -4; pixel_y = 7 }, -/obj/item/device/gps{ +/obj/item/gps{ gpstag = "QM0" }, /turf/open/floor/plasteel, @@ -19625,13 +19563,13 @@ /area/storage/primary) "aQy" = ( /obj/structure/table, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 }, /obj/item/clothing/gloves/color/yellow, -/obj/item/device/t_scanner, +/obj/item/t_scanner, /turf/open/floor/plasteel/brown{ dir = 4 }, @@ -19678,7 +19616,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/ai_upload) "aQC" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; name = "Private AI Channel"; @@ -19906,7 +19844,7 @@ /area/crew_quarters/locker) "aQY" = ( /obj/structure/table, -/obj/item/device/paicard, +/obj/item/paicard, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -20157,7 +20095,7 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -20187,7 +20125,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -20393,7 +20331,7 @@ /obj/item/cultivator, /obj/item/crowbar, /obj/item/reagent_containers/glass/bucket, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -20429,7 +20367,7 @@ /obj/item/storage/bag/plants/portaseeder, /obj/structure/table, /obj/machinery/light, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -20566,7 +20504,7 @@ /obj/item/book/manual/wiki/engineering_construction, /obj/item/clothing/gloves/color/yellow, /obj/structure/table/glass, -/obj/item/device/flashlight, +/obj/item/flashlight, /turf/open/floor/plasteel, /area/engine/engineering) "aSB" = ( @@ -20874,7 +20812,7 @@ /turf/open/floor/plasteel/dark, /area/security/courtroom) "aTm" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -20971,7 +20909,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -21308,7 +21246,7 @@ /obj/item/screwdriver{ pixel_y = 10 }, -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/machinery/light{ dir = 1 }, @@ -21367,7 +21305,7 @@ "aUs" = ( /obj/structure/table, /obj/item/crowbar, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, @@ -21416,7 +21354,7 @@ name = "AI Upload turret control"; pixel_y = 28 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; name = "Private AI Channel"; @@ -21854,7 +21792,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "aVv" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -22051,7 +21989,7 @@ /turf/open/floor/plasteel, /area/security/checkpoint/supply) "aVQ" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -22221,7 +22159,7 @@ /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-16" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -22852,7 +22790,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -23152,69 +23090,44 @@ pixel_y = -1 }, /obj/item/clothing/gloves/color/yellow, -/obj/item/device/t_scanner, -/obj/item/device/multitool, +/obj/item/t_scanner, +/obj/item/multitool, /turf/open/floor/plasteel/dark, /area/storage/tech) "aYj" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/pandemic{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/computer/rdconsole, -/obj/item/circuitboard/machine/rdserver{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/machine/destructive_analyzer, -/obj/item/circuitboard/computer/aifixer, -/obj/item/circuitboard/computer/teleporter, -/obj/item/circuitboard/machine/circuit_imprinter, -/obj/item/circuitboard/machine/mechfab, +/obj/effect/spawner/lootdrop/techstorage/engineering, /turf/open/floor/plasteel/dark, /area/storage/tech) "aYk" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/mining, -/obj/item/circuitboard/machine/autolathe{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/computer/arcade/battle, /obj/machinery/ai_status_display{ pixel_y = 31 }, +/obj/effect/spawner/lootdrop/techstorage/medical, /turf/open/floor/plasteel/dark, /area/storage/tech) "aYl" = ( /obj/structure/rack, -/obj/item/circuitboard/machine/telecomms/processor, -/obj/item/circuitboard/machine/telecomms/receiver, -/obj/item/circuitboard/machine/telecomms/server, -/obj/item/circuitboard/machine/telecomms/bus, -/obj/item/circuitboard/machine/telecomms/broadcaster, -/obj/item/circuitboard/computer/message_monitor{ - pixel_y = -5 - }, +/obj/effect/spawner/lootdrop/techstorage/rnd, /turf/open/floor/plasteel/dark, /area/storage/tech) "aYm" = ( /obj/structure/table, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, /obj/machinery/light/small{ dir = 1 }, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/radio/intercom{ +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -23224,12 +23137,12 @@ /area/storage/tech) "aYn" = ( /obj/structure/table, -/obj/item/device/aicard, +/obj/item/aicard, /obj/item/aiModule/reset, /turf/open/floor/plasteel/dark, /area/storage/tech) "aYo" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -23291,7 +23204,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "aYt" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -23830,7 +23743,7 @@ /area/crew_quarters/heads/chief) "aZD" = ( /obj/structure/table/reinforced, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/neutral/corner{ dir = 2 }, @@ -23923,7 +23836,7 @@ /area/security/checkpoint/engineering) "aZM" = ( /obj/structure/table, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_y = 29 @@ -23958,7 +23871,7 @@ /area/library) "aZQ" = ( /obj/effect/landmark/start/ai/secondary, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; freerange = 1; listening = 0; @@ -23966,14 +23879,14 @@ pixel_x = -10; pixel_y = 22 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 1; listening = 1; name = "Common Channel"; pixel_x = -27 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -24060,7 +23973,7 @@ /area/ai_monitored/turret_protected/ai) "aZY" = ( /obj/effect/landmark/start/ai/secondary, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; freerange = 1; listening = 0; @@ -24068,14 +23981,14 @@ pixel_x = 10; pixel_y = 22 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 1; listening = 1; name = "Common Channel"; pixel_x = 27 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -24194,7 +24107,7 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "bal" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -24257,7 +24170,7 @@ }, /obj/item/stack/wrapping_paper, /obj/item/stack/wrapping_paper, -/obj/item/device/destTagger{ +/obj/item/destTagger{ pixel_x = 4; pixel_y = 3 }, @@ -24357,7 +24270,6 @@ /area/quartermaster/office) "bax" = ( /obj/structure/table/reinforced, -/obj/machinery/computer/stockexchange, /turf/open/floor/plasteel/brown{ dir = 5 }, @@ -24654,7 +24566,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -24718,7 +24630,7 @@ /area/storage/tools) "bbf" = ( /obj/structure/closet/toolcloset, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -24763,14 +24675,7 @@ /area/maintenance/starboard/fore) "bbk" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/borgupload{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/circuitboard/computer/aiupload{ - pixel_x = 2; - pixel_y = -2 - }, +/obj/effect/spawner/lootdrop/techstorage/AI, /turf/open/floor/plasteel/dark, /area/storage/tech) "bbl" = ( @@ -24778,7 +24683,7 @@ c_tag = "Secure Tech Storage"; dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -24801,15 +24706,7 @@ /area/storage/tech) "bbn" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/cloning, -/obj/item/circuitboard/computer/med_data{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/machine/clonescanner, -/obj/item/circuitboard/machine/clonepod, -/obj/item/circuitboard/computer/scan_consolenew, -/obj/item/circuitboard/machine/smoke_machine, +/obj/effect/spawner/lootdrop/techstorage/security, /turf/open/floor/plasteel/dark, /area/storage/tech) "bbo" = ( @@ -24817,19 +24714,8 @@ /area/maintenance/solars/port/fore) "bbp" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/powermonitor{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/circuitboard/computer/stationalert{ - pixel_x = 1; - pixel_y = -1 - }, -/obj/item/circuitboard/computer/atmos_alert{ - pixel_x = 3; - pixel_y = -3 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/lootdrop/techstorage/tcomms, /turf/open/floor/plasteel/dark, /area/storage/tech) "bbq" = ( @@ -24973,7 +24859,7 @@ /obj/item/screwdriver{ pixel_y = 10 }, -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/machinery/computer/security/telescreen{ dir = 4; name = "MiniSat Monitor"; @@ -25197,7 +25083,7 @@ /area/hallway/primary/port) "bcb" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -25277,7 +25163,7 @@ }, /obj/item/clothing/gloves/color/fyellow, /obj/item/clothing/suit/hazardvest, -/obj/item/device/multitool, +/obj/item/multitool, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel/yellow/side{ dir = 8 @@ -25327,18 +25213,7 @@ /area/storage/tech) "bcv" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/crew{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/circuitboard/computer/card{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/circuitboard/computer/communications{ - pixel_x = 5; - pixel_y = -5 - }, +/obj/effect/spawner/lootdrop/techstorage/RnD_secure, /turf/open/floor/plasteel/dark, /area/storage/tech) "bcw" = ( @@ -25404,7 +25279,7 @@ pixel_y = 16 }, /obj/item/wirecutters, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -25599,7 +25474,7 @@ }, /area/security/checkpoint/customs) "bcZ" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20 @@ -25892,11 +25767,11 @@ /area/maintenance/central) "bdH" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -27 @@ -26034,14 +25909,7 @@ /area/maintenance/starboard/fore) "bdX" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/robotics{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/circuitboard/computer/mecha_control{ - pixel_x = 1; - pixel_y = -1 - }, +/obj/effect/spawner/lootdrop/techstorage/command, /turf/open/floor/plasteel/dark, /area/storage/tech) "bdY" = ( @@ -26058,7 +25926,7 @@ /area/storage/tech) "bea" = ( /obj/structure/table, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/machinery/firealarm{ dir = 1; pixel_y = -24 @@ -26067,8 +25935,8 @@ /area/storage/tech) "beb" = ( /obj/structure/table, -/obj/item/device/analyzer, -/obj/item/device/healthanalyzer, +/obj/item/analyzer, +/obj/item/healthanalyzer, /obj/machinery/camera/autoname{ dir = 1 }, @@ -26080,7 +25948,7 @@ pixel_x = 1; pixel_y = -1 }, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/clothing/glasses/meson, /obj/machinery/light_switch{ pixel_y = -28 @@ -26115,7 +25983,7 @@ /obj/structure/disposalpipe/trunk{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -26632,7 +26500,7 @@ /turf/open/floor/plating, /area/maintenance/central) "bfp" = ( -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, @@ -27054,7 +26922,7 @@ pixel_x = 5; pixel_y = -1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -27100,8 +26968,8 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/closet, /obj/item/crowbar, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/radio, +/obj/item/assembly/flash/handheld, +/obj/item/radio, /turf/open/floor/plasteel/red/side{ dir = 10 }, @@ -27622,10 +27490,10 @@ /obj/item/storage/photo_album{ pixel_y = -4 }, -/obj/item/device/camera{ +/obj/item/camera{ pixel_y = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; freerange = 1; name = "Station Intercom (Captain)"; @@ -27962,7 +27830,7 @@ }, /area/engine/break_room) "bia" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -28227,7 +28095,7 @@ /area/quartermaster/sorting) "biJ" = ( /obj/structure/table, -/obj/item/device/destTagger{ +/obj/item/destTagger{ pixel_x = 4; pixel_y = 3 }, @@ -28243,7 +28111,7 @@ /obj/item/clipboard, /obj/item/folder/yellow, /obj/item/folder/yellow, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/pen/red, /turf/open/floor/plasteel/brown{ dir = 8 @@ -28325,7 +28193,7 @@ dir = 1 }, /obj/machinery/light/small, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = -28 @@ -28433,7 +28301,7 @@ /area/crew_quarters/heads/captain/private) "bjh" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -28860,7 +28728,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -28938,7 +28806,6 @@ pixel_x = 4; pixel_y = 4 }, -/obj/machinery/computer/stockexchange, /turf/open/floor/plasteel/arrival{ dir = 2 }, @@ -28959,7 +28826,7 @@ /area/quartermaster/sorting) "bkk" = ( /obj/structure/filingcabinet/filingcabinet, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -29047,7 +28914,6 @@ /area/quartermaster/sorting) "bkn" = ( /obj/structure/table, -/obj/machinery/computer/stockexchange, /obj/machinery/firealarm{ dir = 8; pixel_x = -26 @@ -29079,7 +28945,7 @@ /obj/machinery/newscaster{ pixel_x = 28 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -29152,8 +29018,8 @@ /area/hallway/primary/port) "bkw" = ( /obj/structure/table, -/obj/item/device/toner, -/obj/item/device/radio/intercom{ +/obj/item/toner, +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -29203,7 +29069,7 @@ }, /area/bridge) "bkD" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 29 @@ -29227,7 +29093,7 @@ }, /area/bridge) "bkF" = ( -/obj/item/device/beacon, +/obj/item/beacon, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -29420,7 +29286,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -29719,7 +29585,7 @@ pixel_x = -26; pixel_y = 3 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -29982,7 +29848,7 @@ }, /area/hallway/primary/central) "bmo" = ( -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -30029,7 +29895,7 @@ /turf/open/floor/plating, /area/maintenance/central) "bmt" = ( -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/effect/turf_decal/stripes/line{ dir = 4 }, @@ -30388,7 +30254,7 @@ /area/engine/break_room) "bnd" = ( /obj/structure/table/glass, -/obj/item/device/lightreplacer{ +/obj/item/lightreplacer{ pixel_y = 7 }, /obj/item/storage/belt/utility, @@ -30427,7 +30293,7 @@ pixel_x = -3; pixel_y = 5 }, -/obj/item/device/taperecorder{ +/obj/item/taperecorder{ pixel_x = -4 }, /turf/open/floor/plasteel, @@ -30758,7 +30624,7 @@ /area/hallway/secondary/entry) "bnN" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -30905,7 +30771,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -31000,7 +30866,7 @@ icon_state = "4-8" }, /obj/structure/table/wood, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/wood, /area/crew_quarters/heads/hop) "bon" = ( @@ -31160,7 +31026,7 @@ /obj/machinery/computer/communications{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; freerange = 1; name = "Station Intercom (Captain)"; @@ -31183,7 +31049,7 @@ /area/crew_quarters/heads/captain/private) "boJ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = -28 @@ -31659,7 +31525,7 @@ icon_state = "4-8" }, /obj/machinery/holopad, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat/foyer) "bpL" = ( @@ -32134,7 +32000,7 @@ /obj/machinery/vending/cart{ req_access_txt = "57" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -32187,8 +32053,8 @@ /area/bridge) "bqK" = ( /obj/structure/rack, -/obj/item/device/aicard, -/obj/item/device/radio/off, +/obj/item/aicard, +/obj/item/radio/off, /obj/machinery/computer/security/telescreen{ dir = 1; name = "MiniSat Monitor"; @@ -32234,16 +32100,16 @@ /turf/open/floor/plasteel/dark, /area/bridge) "bqP" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_y = -29 }, /obj/structure/rack, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/timer, +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, +/obj/item/assembly/timer, /turf/open/floor/plasteel/darkblue/side{ dir = 1 }, @@ -32257,7 +32123,7 @@ pixel_y = -3 }, /obj/item/wrench, -/obj/item/device/multitool, +/obj/item/multitool, /obj/machinery/newscaster{ pixel_y = -30 }, @@ -32454,7 +32320,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -32549,7 +32415,7 @@ }, /area/maintenance/starboard) "brs" = ( -/obj/item/device/assembly/prox_sensor, +/obj/item/assembly/prox_sensor, /obj/structure/cable/yellow{ icon_state = "4-8" }, @@ -32899,7 +32765,7 @@ /area/aisat) "brW" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -28 }, @@ -33032,7 +32898,7 @@ /area/ai_monitored/storage/satellite) "bsh" = ( /obj/structure/table, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -28 }, @@ -33060,7 +32926,7 @@ pixel_y = 3 }, /obj/item/storage/toolbox/mechanical, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plasteel/dark, /area/ai_monitored/storage/satellite) "bsj" = ( @@ -33085,7 +32951,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "bsm" = ( -/obj/item/device/beacon, +/obj/item/beacon, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/hallway/secondary/entry) @@ -33166,7 +33032,7 @@ }, /area/hallway/primary/port) "bsw" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -33527,7 +33393,7 @@ /obj/structure/table/wood, /obj/item/hand_tele, /obj/structure/window/reinforced, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = 27 @@ -33607,12 +33473,12 @@ /area/storage/art) "btm" = ( /obj/structure/table, -/obj/item/device/camera, +/obj/item/camera, /turf/open/floor/plasteel, /area/storage/art) "btn" = ( /obj/structure/table, -/obj/item/device/camera_film, +/obj/item/camera_film, /obj/machinery/firealarm{ dir = 4; pixel_x = 28 @@ -33756,7 +33622,7 @@ /turf/open/floor/plasteel, /area/engine/break_room) "btE" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -34192,7 +34058,7 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -26 @@ -34411,7 +34277,7 @@ }, /area/maintenance/starboard) "bvf" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 1; listening = 1; @@ -34419,14 +34285,14 @@ pixel_x = -27; pixel_y = -7 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_y = -27 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -34521,7 +34387,7 @@ /obj/structure/table/glass, /obj/item/wrench, /obj/item/crowbar, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, @@ -34580,7 +34446,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/item/device/radio/off{ +/obj/item/radio/off{ pixel_y = 4 }, /obj/item/screwdriver{ @@ -34628,14 +34494,14 @@ /obj/machinery/ai_status_display{ pixel_y = 31 }, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/grimy, /area/tcommsat/computer) "bvA" = ( /obj/machinery/light/small{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; freerange = 1; name = "Station Intercom (Telecomms)"; @@ -34859,7 +34725,7 @@ pixel_x = -32 }, /obj/effect/decal/cleanable/cobweb, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -34885,7 +34751,7 @@ /area/library) "bwf" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -35024,7 +34890,7 @@ /area/bridge) "bws" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -35035,7 +34901,7 @@ /obj/item/book/manual/wiki/security_space_law{ pixel_y = 3 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 28 @@ -35323,7 +35189,7 @@ /turf/open/floor/wood, /area/crew_quarters/bar) "bwU" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -35632,7 +35498,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -35875,7 +35741,7 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -26 @@ -36180,7 +36046,7 @@ /area/ai_monitored/storage/satellite) "byP" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/caution{ dir = 8 }, @@ -36191,7 +36057,7 @@ }, /area/hallway/primary/starboard) "byR" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -36654,7 +36520,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/command) "bzM" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -36674,7 +36540,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/command) "bzO" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -36829,7 +36695,7 @@ /turf/open/floor/carpet, /area/crew_quarters/heads/captain/private) "bAf" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = -26 @@ -37265,7 +37131,7 @@ /area/security/vacantoffice) "bBi" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/wood, /area/security/vacantoffice) "bBj" = ( @@ -37276,10 +37142,10 @@ /area/maintenance/starboard) "bBk" = ( /obj/structure/table/wood, -/obj/item/device/camera_film{ +/obj/item/camera_film{ pixel_y = 9 }, -/obj/item/device/camera_film{ +/obj/item/camera_film{ pixel_x = -3; pixel_y = 5 }, @@ -37329,7 +37195,7 @@ /area/crew_quarters/toilet/auxiliary) "bBq" = ( /obj/structure/rack, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port) @@ -37795,9 +37661,9 @@ "bCn" = ( /obj/structure/table, /obj/item/storage/belt/utility, -/obj/item/device/t_scanner, -/obj/item/device/t_scanner, -/obj/item/device/t_scanner, +/obj/item/t_scanner, +/obj/item/t_scanner, +/obj/item/t_scanner, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -38136,7 +38002,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -38258,7 +38124,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -39720,7 +39586,7 @@ /turf/open/floor/wood, /area/library) "bGv" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)" }, @@ -40348,7 +40214,7 @@ /area/library) "bHT" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -40430,7 +40296,7 @@ "bIe" = ( /obj/structure/table, /obj/item/hand_tele, -/obj/item/device/beacon, +/obj/item/beacon, /obj/machinery/airalarm{ dir = 4; pixel_x = -23 @@ -40579,7 +40445,7 @@ /obj/item/stack/sheet/metal/fifty, /obj/item/stack/rods/fifty, /obj/item/storage/toolbox/emergency, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/machinery/power/apc/highcap/five_k{ dir = 4; name = "Gateway APC"; @@ -40633,7 +40499,7 @@ /turf/open/floor/plasteel/bar, /area/crew_quarters/bar) "bIu" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -41016,7 +40882,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -41113,11 +40979,11 @@ /obj/structure/table, /obj/item/storage/belt/utility, /obj/item/storage/belt/utility, -/obj/item/device/radio/off, -/obj/item/device/radio/off, -/obj/item/device/radio/off, -/obj/item/device/radio/off, -/obj/item/device/multitool, +/obj/item/radio/off, +/obj/item/radio/off, +/obj/item/radio/off, +/obj/item/radio/off, +/obj/item/multitool, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "bJG" = ( @@ -41185,7 +41051,7 @@ }, /obj/item/stack/sheet/metal/fifty, /obj/item/storage/toolbox/emergency, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/structure/window/reinforced, /obj/structure/cable/yellow{ icon_state = "4-8" @@ -41235,7 +41101,7 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/neutral/side{ dir = 2 }, @@ -41547,7 +41413,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bKy" = ( -/obj/item/device/beacon, +/obj/item/beacon, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 }, @@ -42262,7 +42128,7 @@ /area/engine/atmos) "bMe" = ( /obj/structure/reagent_dispensers/fueltank, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -42421,7 +42287,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -42586,8 +42452,8 @@ dir = 1 }, /obj/structure/table/wood, -/obj/item/device/taperecorder, -/obj/item/device/tape, +/obj/item/taperecorder, +/obj/item/tape, /turf/open/floor/wood, /area/library) "bMN" = ( @@ -42760,7 +42626,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -42870,7 +42736,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = 29 @@ -42918,7 +42784,7 @@ /area/maintenance/central) "bNt" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = -28 @@ -43980,7 +43846,7 @@ /area/library) "bPT" = ( /obj/structure/table/wood, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/wood, /area/library) "bPU" = ( @@ -44536,9 +44402,9 @@ /turf/open/floor/engine/cult, /area/library) "bRm" = ( -/obj/item/device/taperecorder, -/obj/item/device/camera, -/obj/item/device/radio/intercom{ +/obj/item/taperecorder, +/obj/item/camera, +/obj/item/radio/intercom{ pixel_y = -25 }, /obj/structure/table/wood, @@ -44552,7 +44418,7 @@ /area/library) "bRo" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -44811,9 +44677,9 @@ /area/gateway) "bRK" = ( /obj/item/storage/belt/utility, -/obj/item/device/radio/off, -/obj/item/device/radio/off, -/obj/item/device/radio/off, +/obj/item/radio/off, +/obj/item/radio/off, +/obj/item/radio/off, /obj/structure/rack, /obj/machinery/button/door{ id = "gateshutter"; @@ -44985,7 +44851,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -45272,7 +45138,7 @@ "bSC" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -45809,7 +45675,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -45936,7 +45802,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -46245,7 +46111,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bUC" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -46850,7 +46716,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -47643,7 +47509,7 @@ /area/maintenance/port) "bXy" = ( /obj/structure/closet, -/obj/item/device/flashlight, +/obj/item/flashlight, /turf/open/floor/plating, /area/maintenance/port/aft) "bXz" = ( @@ -47658,7 +47524,7 @@ /area/maintenance/port/aft) "bXA" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plating, /area/maintenance/port/aft) "bXB" = ( @@ -47701,7 +47567,7 @@ "bXH" = ( /obj/structure/closet/crate, /obj/item/coin/silver, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port) @@ -47979,9 +47845,9 @@ /obj/structure/rack, /obj/item/tank/internals/oxygen, /obj/item/tank/internals/oxygen, -/obj/item/device/radio/off, -/obj/item/device/radio/off, -/obj/item/device/radio/intercom{ +/obj/item/radio/off, +/obj/item/radio/off, +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = 27 @@ -48243,7 +48109,7 @@ }, /area/medical/storage) "bYV" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; freerange = 0; frequency = 1485; @@ -48332,7 +48198,7 @@ /obj/item/screwdriver{ pixel_y = 10 }, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel/red/side{ dir = 5 }, @@ -48487,7 +48353,7 @@ "bZs" = ( /obj/item/cultivator, /obj/item/crowbar, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/reagent_containers/glass/bucket, /obj/structure/table/glass, /turf/open/floor/plasteel/hydrofloor, @@ -48581,7 +48447,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 5 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -48969,14 +48835,14 @@ "caz" = ( /obj/structure/table, /obj/item/stack/cable_coil, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = -4; pixel_y = -4 }, /obj/item/screwdriver{ pixel_y = 16 }, -/obj/item/device/gps{ +/obj/item/gps{ gpstag = "RD0" }, /turf/open/floor/plasteel/whitepurple/side{ @@ -48987,7 +48853,7 @@ /obj/structure/table, /obj/item/stack/sheet/glass, /obj/item/electronics/airlock, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = -4; pixel_y = 2 }, @@ -49557,7 +49423,7 @@ "cbz" = ( /obj/structure/rack, /obj/item/stack/sheet/cardboard, -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/structure/light_construct{ dir = 1 }, @@ -49741,7 +49607,7 @@ network = list("medbay"); pixel_y = -29 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -27; @@ -49895,7 +49761,7 @@ /obj/item/screwdriver{ pixel_y = 10 }, -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 }, @@ -49935,7 +49801,7 @@ pixel_y = 12 }, /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -49956,7 +49822,7 @@ c_tag = "Hydroponics - Foyer"; dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = -25 }, /turf/open/floor/plasteel/vault, @@ -49989,7 +49855,7 @@ /area/hydroponics) "ccu" = ( /obj/machinery/hydroponics/constructable, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -50722,7 +50588,7 @@ }, /area/maintenance/starboard) "cdW" = ( -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/machinery/light/small{ dir = 4 }, @@ -50898,7 +50764,7 @@ pixel_y = -3 }, /obj/item/wrench, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/aft) @@ -51054,7 +50920,7 @@ /area/medical/medbay/central) "ceF" = ( /obj/structure/bed/roller, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 0; frequency = 1485; @@ -51162,7 +51028,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -51219,7 +51085,7 @@ /turf/open/floor/plasteel, /area/security/checkpoint/science/research) "ceX" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -52320,7 +52186,7 @@ /obj/item/crowbar, /obj/item/wrench, /obj/item/clothing/mask/gas, -/obj/item/device/multitool{ +/obj/item/multitool{ pixel_x = 3 }, /obj/effect/turf_decal/stripes/line{ @@ -52413,7 +52279,7 @@ pixel_y = 32 }, /obj/structure/table/glass, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel/cafeteria{ dir = 5 }, @@ -52462,7 +52328,7 @@ /turf/open/floor/plasteel/dark, /area/aisat) "chA" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = 25 }, /turf/open/floor/engine, @@ -52505,7 +52371,7 @@ /area/maintenance/starboard) "chF" = ( /obj/structure/closet, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -52515,7 +52381,7 @@ "chG" = ( /obj/structure/reagent_dispensers/fueltank, /obj/item/storage/toolbox/emergency, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -53097,7 +52963,7 @@ /turf/open/floor/engine, /area/science/explab) "ciT" = ( -/obj/item/device/beacon, +/obj/item/beacon, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, @@ -53358,7 +53224,7 @@ /area/medical/surgery) "cjE" = ( /obj/structure/bed/roller, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; freerange = 0; frequency = 1485; @@ -53539,35 +53405,35 @@ }, /area/medical/chemistry) "cjW" = ( -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = -3; pixel_y = 3 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = -3; pixel_y = 3 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 3; pixel_y = -7 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 3; pixel_y = -7 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 3; pixel_y = -7 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 3; pixel_y = -7 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = -3; pixel_y = 3 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = -3; pixel_y = 3 }, @@ -53702,7 +53568,7 @@ }, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/landmark/blobstart, /turf/open/floor/plating, /area/maintenance/starboard/aft) @@ -53748,7 +53614,7 @@ /area/science/research) "ckq" = ( /obj/machinery/vending/coffee, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -53787,7 +53653,7 @@ "ckv" = ( /obj/structure/closet/crate, /obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/item/device/assembly/infra, +/obj/item/assembly/infra, /obj/effect/spawner/lootdrop/maintenance, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, @@ -54119,7 +53985,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "clm" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; freerange = 0; frequency = 1485; @@ -54225,7 +54091,7 @@ pixel_x = -2; pixel_y = 6 }, -/obj/item/device/radio/headset/headset_med, +/obj/item/radio/headset/headset_med, /obj/structure/extinguisher_cabinet{ pixel_x = 24 }, @@ -54339,7 +54205,7 @@ /obj/machinery/shower{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_y = -28 @@ -54750,7 +54616,7 @@ }, /area/hallway/primary/aft) "cmF" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = -28 @@ -54894,7 +54760,7 @@ /obj/item/stack/packageWrap, /obj/item/stack/packageWrap, /obj/item/stack/packageWrap, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/stripes/line{ dir = 2 @@ -54941,7 +54807,7 @@ pixel_y = 6 }, /obj/item/stack/medical/ointment, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/effect/turf_decal/stripes/line{ dir = 2 }, @@ -55033,7 +54899,7 @@ /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "cnh" = ( -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/structure/table/wood, /turf/open/floor/wood, /area/maintenance/port/aft) @@ -55121,7 +54987,7 @@ /area/medical/surgery) "cnt" = ( /obj/structure/table/reinforced, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; freerange = 0; frequency = 1485; @@ -55311,7 +55177,7 @@ pixel_y = 4 }, /obj/item/clothing/glasses/science, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = -28 @@ -55554,7 +55420,7 @@ }, /area/science/research) "cog" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -55640,7 +55506,7 @@ /obj/item/clothing/mask/gas, /obj/item/clothing/mask/gas, /obj/item/clothing/glasses/science, -/obj/item/device/multitool{ +/obj/item/multitool{ pixel_x = 3 }, /turf/open/floor/plasteel/white, @@ -57016,7 +56882,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -57227,7 +57093,7 @@ /obj/machinery/atmospherics/components/unary/thermomachine/freezer{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; freerange = 0; frequency = 1485; @@ -57363,7 +57229,7 @@ /area/maintenance/aft) "crF" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -57660,7 +57526,7 @@ }, /area/medical/surgery) "csn" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; freerange = 0; frequency = 1485; @@ -57859,7 +57725,7 @@ network = list("medbay"); pixel_x = 29 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 1; name = "Station Intercom (General)"; pixel_y = -29 @@ -58230,15 +58096,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/science/storage) -"ctk" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) "ctl" = ( /obj/machinery/camera{ active_power_usage = 0; @@ -58640,7 +58497,7 @@ /obj/structure/closet, /obj/item/extinguisher, /obj/effect/decal/cleanable/cobweb, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/aft) @@ -58658,7 +58515,7 @@ /obj/structure/closet/crate, /obj/item/stack/cable_coil, /obj/item/grenade/chem_grenade, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance{ lootcount = 2; name = "2maintenance loot spawner" @@ -58781,7 +58638,7 @@ pixel_y = 3 }, /obj/item/storage/box/bodybags, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -58811,12 +58668,12 @@ dir = 1 }, /obj/item/storage/box/monkeycubes, -/obj/item/device/radio/headset/headset_medsci, -/obj/item/device/flashlight/pen{ +/obj/item/radio/headset/headset_medsci, +/obj/item/flashlight/pen{ pixel_x = 4; pixel_y = 3 }, -/obj/item/device/flashlight/pen{ +/obj/item/flashlight/pen{ pixel_x = 4; pixel_y = 3 }, @@ -59020,7 +58877,7 @@ /area/crew_quarters/heads/hor) "cuP" = ( /obj/structure/table, -/obj/item/device/aicard, +/obj/item/aicard, /obj/item/circuitboard/aicore{ pixel_x = -2; pixel_y = 4 @@ -59036,10 +58893,10 @@ /area/crew_quarters/heads/hor) "cuR" = ( /obj/structure/table, -/obj/item/device/taperecorder{ +/obj/item/taperecorder{ pixel_x = -3 }, -/obj/item/device/paicard{ +/obj/item/paicard{ pixel_x = 4 }, /obj/item/storage/secure/briefcase, @@ -59174,7 +59031,7 @@ /obj/structure/closet/crate, /obj/item/crowbar/red, /obj/item/pen, -/obj/item/device/flashlight/pen{ +/obj/item/flashlight/pen{ pixel_x = 4; pixel_y = 3 }, @@ -59276,7 +59133,7 @@ /obj/machinery/clonepod{ pixel_y = 2 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -59558,7 +59415,7 @@ /area/science/storage) "cvY" = ( /obj/machinery/portable_atmospherics/canister/toxins, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -59649,7 +59506,7 @@ "cwn" = ( /obj/structure/rack, /obj/item/clothing/glasses/sunglasses, -/obj/item/device/flashlight/pen, +/obj/item/flashlight/pen, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/aft) @@ -59822,7 +59679,7 @@ pixel_x = 2; pixel_y = 2 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -59888,7 +59745,7 @@ /area/science/robotics/mechbay) "cwJ" = ( /obj/machinery/computer/mech_bay_power_console, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -60027,7 +59884,7 @@ dir = 8; pixel_x = 24 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -60377,7 +60234,7 @@ /turf/open/floor/plating, /area/science/misc_lab/range) "cxJ" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -60756,7 +60613,7 @@ /turf/open/floor/plasteel, /area/science/mixing) "cyC" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = 25 }, /obj/machinery/atmospherics/components/unary/portables_connector/visible, @@ -61028,7 +60885,7 @@ /area/medical/genetics) "czf" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -61924,7 +61781,7 @@ /area/science/test_area) "cAS" = ( /obj/structure/chair/stool, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; freerange = 0; frequency = 1485; @@ -61996,7 +61853,7 @@ "cBa" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/disposalpipe/segment, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; freerange = 0; frequency = 1485; @@ -62059,7 +61916,7 @@ /area/science/robotics/mechbay) "cBj" = ( /obj/structure/table, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -62167,19 +62024,19 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "cBt" = ( -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -4; pixel_y = 1 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 8; pixel_y = 9 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 9; pixel_y = -2 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_y = 2 }, /obj/structure/table/reinforced, @@ -62362,7 +62219,7 @@ /turf/open/floor/plating/airless, /area/science/test_area) "cBO" = ( -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -62533,7 +62390,7 @@ /area/hallway/primary/aft) "cCm" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -62587,18 +62444,18 @@ /turf/open/floor/plasteel, /area/science/mixing) "cCu" = ( -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_y = 8 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = -8; pixel_y = 5 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = 6; pixel_y = 5 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = -2; pixel_y = -2 }, @@ -62609,18 +62466,18 @@ /turf/open/floor/plasteel, /area/science/mixing) "cCv" = ( -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve{ pixel_x = -5 }, -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve{ pixel_x = -5 }, -/obj/item/device/transfer_valve, -/obj/item/device/transfer_valve, -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve, +/obj/item/transfer_valve, +/obj/item/transfer_valve{ pixel_x = 5 }, -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve{ pixel_x = 5 }, /obj/machinery/requests_console{ @@ -62635,19 +62492,19 @@ /turf/open/floor/plasteel, /area/science/mixing) "cCw" = ( -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 5; pixel_y = 4 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = -4; pixel_y = 2 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 6; pixel_y = -4 }, -/obj/item/device/assembly/timer, +/obj/item/assembly/timer, /obj/structure/table/reinforced, /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -62656,7 +62513,7 @@ /area/science/mixing) "cCx" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -62710,19 +62567,19 @@ /area/science/mixing) "cCC" = ( /obj/structure/table, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = -5; pixel_y = 3 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 5; pixel_y = -4 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 2; pixel_y = 6 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 2; pixel_y = -1 }, @@ -62921,7 +62778,7 @@ /obj/structure/table, /obj/item/storage/box/bodybags, /obj/item/pen, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -62968,7 +62825,7 @@ /obj/machinery/mecha_part_fabricator{ dir = 2 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -63021,11 +62878,11 @@ pixel_x = -2; pixel_y = 4 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, @@ -63093,7 +62950,7 @@ /obj/structure/table, /obj/item/clothing/glasses/science, /obj/item/clothing/glasses/science, -/obj/item/device/multitool{ +/obj/item/multitool{ pixel_x = 3 }, /obj/effect/turf_decal/stripes/corner{ @@ -63148,7 +63005,7 @@ /turf/open/floor/plating/airless, /area/science/test_area) "cDx" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plating/airless, /area/science/test_area) "cDy" = ( @@ -63269,7 +63126,7 @@ /area/medical/virology) "cDJ" = ( /obj/item/clothing/gloves/color/latex, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/item/clothing/glasses/hud/health, /obj/structure/reagent_dispensers/virusfood{ pixel_y = 30 @@ -63629,13 +63486,13 @@ /obj/item/stack/sheet/plasteel{ amount = 10 }, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/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/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/machinery/ai_status_display{ pixel_x = 32 }, @@ -63927,7 +63784,7 @@ }, /area/medical/medbay/aft) "cES" = ( -/obj/item/device/healthanalyzer{ +/obj/item/healthanalyzer{ pixel_x = 1; pixel_y = 4 }, @@ -64063,7 +63920,7 @@ /obj/item/screwdriver{ pixel_y = 10 }, -/obj/item/device/multitool{ +/obj/item/multitool{ pixel_x = 3 }, /obj/item/stack/cable_coil, @@ -64155,11 +64012,11 @@ /area/science/mixing) "cFu" = ( /obj/structure/closet, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 2; pixel_y = -2 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = -2; pixel_y = 5 }, @@ -64175,7 +64032,7 @@ /turf/open/floor/plating/airless, /area/science/test_area) "cFw" = ( -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/effect/turf_decal/stripes/line{ dir = 2 }, @@ -64191,12 +64048,12 @@ /turf/open/floor/plating/airless, /area/science/test_area) "cFy" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_x = -28 }, /obj/structure/table/glass, /obj/item/hand_labeler, -/obj/item/device/radio/headset/headset_med, +/obj/item/radio/headset/headset_med, /obj/machinery/airalarm{ pixel_y = 23 }, @@ -64308,7 +64165,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_x = 28 }, /turf/open/floor/plasteel/whitegreen/side{ @@ -64389,7 +64246,7 @@ }, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -64969,7 +64826,7 @@ dir = 1 }, /obj/item/storage/backpack/duffelbag/med, -/obj/item/device/flashlight/pen{ +/obj/item/flashlight/pen{ pixel_x = 4; pixel_y = 3 }, @@ -64979,7 +64836,7 @@ /obj/structure/table, /obj/item/retractor, /obj/item/hemostat, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/item/clothing/glasses/eyepatch, /obj/item/reagent_containers/food/drinks/bottle/vodka{ pixel_x = 3; @@ -65056,19 +64913,19 @@ empty = 1; name = "First-Aid (empty)" }, -/obj/item/device/healthanalyzer{ +/obj/item/healthanalyzer{ pixel_x = 4; pixel_y = -4 }, -/obj/item/device/healthanalyzer{ +/obj/item/healthanalyzer{ pixel_x = 4; pixel_y = -4 }, -/obj/item/device/healthanalyzer{ +/obj/item/healthanalyzer{ pixel_x = 4; pixel_y = -4 }, -/obj/item/device/radio/headset/headset_sci{ +/obj/item/radio/headset/headset_sci{ pixel_x = -3 }, /obj/effect/turf_decal/delivery, @@ -65285,7 +65142,7 @@ /area/medical/virology) "cHw" = ( /obj/structure/closet/emcloset, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_x = -28 }, /obj/effect/turf_decal/stripes/line{ @@ -65670,7 +65527,7 @@ "cIh" = ( /obj/structure/closet, /obj/item/storage/box/lights/mixed, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/decal/cleanable/cobweb, /turf/open/floor/plating, /area/maintenance/starboard/aft) @@ -66000,7 +65857,7 @@ pixel_y = 5 }, /obj/item/clothing/glasses/welding, -/obj/item/device/multitool{ +/obj/item/multitool{ pixel_x = 3 }, /obj/effect/turf_decal/delivery, @@ -66029,7 +65886,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -66382,7 +66239,7 @@ /obj/structure/table, /obj/item/retractor, /obj/item/hemostat, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -66403,9 +66260,9 @@ /area/science/robotics/lab) "cJK" = ( /obj/structure/table, -/obj/item/device/mmi, -/obj/item/device/mmi, -/obj/item/device/mmi, +/obj/item/mmi, +/obj/item/mmi, +/obj/item/mmi, /obj/structure/window/reinforced{ dir = 4 }, @@ -66448,11 +66305,11 @@ maxcharge = 15000 }, /obj/item/crowbar, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, @@ -66495,7 +66352,7 @@ /turf/open/floor/plasteel/dark, /area/science/server) "cJS" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -66676,7 +66533,7 @@ }, /area/medical/virology) "cKm" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -66823,7 +66680,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = 25 }, /obj/effect/turf_decal/stripes/line{ @@ -67504,7 +67361,7 @@ /turf/open/floor/engine, /area/science/explab) "cLV" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = 25 }, /obj/machinery/firealarm{ @@ -67572,7 +67429,7 @@ pixel_x = 4 }, /obj/item/organ/heart, -/obj/item/device/soulstone/anybody/chaplain, +/obj/item/soulstone/anybody/chaplain, /turf/open/floor/plasteel/cult{ dir = 2 }, @@ -67817,7 +67674,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/office) "cME" = ( -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/newscaster{ pixel_x = -30 }, @@ -68111,7 +67968,7 @@ /area/maintenance/port/aft) "cNg" = ( /obj/structure/rack, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance, /obj/machinery/light/small, /turf/open/floor/plating, @@ -68155,7 +68012,7 @@ "cNk" = ( /obj/item/storage/bag/plants/portaseeder, /obj/item/storage/bag/plants/portaseeder, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/cultivator, /obj/item/reagent_containers/glass/bucket, /obj/structure/rack, @@ -68195,7 +68052,7 @@ /obj/machinery/hydroponics/soil{ pixel_y = 8 }, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/maintenance/starboard/aft) @@ -68254,7 +68111,7 @@ c_tag = "Chapel Office - Backroom"; dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -68296,7 +68153,7 @@ /turf/open/floor/plasteel/grimy, /area/chapel/office) "cNz" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1480; name = "Confessional Intercom"; @@ -68463,7 +68320,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/machinery/requests_console{ department = "Security"; departmentType = 5; @@ -68760,10 +68617,10 @@ pixel_x = -4; pixel_y = 4 }, -/obj/item/device/taperecorder{ +/obj/item/taperecorder{ pixel_x = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -68855,7 +68712,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/office) "cOL" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1480; name = "Confessional Intercom"; @@ -69148,7 +69005,7 @@ /area/maintenance/starboard/aft) "cPz" = ( /obj/structure/closet, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/spawner/lootdrop/maintenance{ lootcount = 3; name = "3maintenance loot spawner" @@ -69340,7 +69197,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/beacon, +/obj/item/beacon, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -69369,7 +69226,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -69444,7 +69301,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/main) "cQc" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -69634,7 +69491,7 @@ /obj/machinery/doppler_array/research/science{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; listening = 1; name = "Station Intercom (General)"; @@ -69771,7 +69628,7 @@ /turf/open/floor/plasteel, /area/science/xenobiology) "cQS" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -69790,7 +69647,7 @@ /turf/open/floor/plating, /area/chapel/main) "cQV" = ( -/obj/item/device/flashlight/lantern{ +/obj/item/flashlight/lantern{ pixel_y = 7 }, /obj/structure/table/wood, @@ -69925,7 +69782,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/item/device/gps, +/obj/item/gps, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, @@ -71082,14 +70939,14 @@ /area/science/xenobiology) "cVb" = ( /obj/structure/table/wood, -/obj/item/device/camera_film{ +/obj/item/camera_film{ pixel_x = -3; pixel_y = 5 }, -/obj/item/device/camera_film{ +/obj/item/camera_film{ pixel_y = 9 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 @@ -71100,7 +70957,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 1; frequency = 1459; name = "Station Intercom (General)"; @@ -71340,7 +71197,7 @@ /turf/open/floor/plasteel/white, /area/science/xenobiology) "cZc" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -71449,7 +71306,7 @@ /obj/item/stack/sheet/metal{ amount = 10 }, -/obj/item/device/electropack, +/obj/item/electropack, /turf/open/floor/engine, /area/science/xenobiology) "daF" = ( @@ -71466,7 +71323,7 @@ /turf/open/floor/engine, /area/science/xenobiology) "daH" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/engine, /area/science/xenobiology) "daI" = ( @@ -71475,7 +71332,7 @@ pixel_y = 5 }, /obj/item/stack/cable_coil, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/stock_parts/cell/high{ charge = 100; maxcharge = 15000 @@ -71500,26 +71357,26 @@ /area/science/xenobiology) "daM" = ( /obj/structure/table, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = -5; pixel_y = 3 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 5; pixel_y = -4 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 2; pixel_y = 6 }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = 2; pixel_y = -1 }, /turf/open/floor/engine, /area/science/xenobiology) "daN" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = -25 }, /turf/open/floor/engine, @@ -72030,7 +71887,7 @@ /obj/machinery/shower{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -72350,7 +72207,7 @@ /area/science/xenobiology) "dcM" = ( /obj/machinery/chem_master, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -72558,7 +72415,6 @@ /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) "ddf" = ( -/obj/machinery/portable_atmospherics/canister, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 4 }, @@ -72570,6 +72426,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/portable_atmospherics/canister/bz, /turf/open/floor/plasteel, /area/science/xenobiology) "ddg" = ( @@ -72618,7 +72475,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/general/visible, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -73398,7 +73255,7 @@ /area/maintenance/port/fore) "dhL" = ( /obj/structure/table, -/obj/item/device/analyzer, +/obj/item/analyzer, /obj/machinery/power/apc{ dir = 2; name = "Tool Storage APC"; @@ -73415,7 +73272,7 @@ }, /area/storage/primary) "dhM" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -73557,7 +73414,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/item/device/instrument/guitar, +/obj/item/instrument/guitar, /obj/structure/sign/poster/random{ pixel_x = 32 }, @@ -73622,9 +73479,9 @@ /turf/open/floor/carpet, /area/crew_quarters/theatre) "dij" = ( -/obj/item/device/instrument/violin, +/obj/item/instrument/violin, /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -73692,7 +73549,7 @@ /obj/item/poster/random_official, /obj/item/poster/random_official, /obj/item/poster/random_official, -/obj/item/device/paicard{ +/obj/item/paicard{ desc = "A real Nanotrasen success, these personal AIs provide all of the companionship of an AI without any law related red-tape."; name = "Nanotrasen-brand personal AI device exhibit" }, @@ -73924,7 +73781,7 @@ }, /obj/item/reagent_containers/food/drinks/ale, /obj/structure/table/wood, -/obj/item/device/instrument/eguitar, +/obj/item/instrument/eguitar, /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -75459,7 +75316,7 @@ /obj/item/wallframe/camera, /obj/item/wallframe/camera, /obj/item/wallframe/camera, -/obj/item/device/assault_pod/mining, +/obj/item/assault_pod/mining, /turf/open/floor/plasteel/yellow/side{ dir = 1 }, @@ -75647,7 +75504,7 @@ /turf/open/floor/plating/airless, /area/engine/engineering) "gnZ" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = -30 }, /turf/open/floor/plasteel/white, @@ -75695,8 +75552,8 @@ /area/maintenance/aft) "gRS" = ( /obj/structure/table/reinforced, -/obj/item/device/integrated_electronics/analyzer, -/obj/item/device/integrated_circuit_printer, +/obj/item/integrated_electronics/analyzer, +/obj/item/integrated_circuit_printer, /turf/open/floor/plasteel/white, /area/science/circuit) "gXY" = ( @@ -75943,7 +75800,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "kOt" = ( -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/screwdriver, /obj/structure/table/reinforced, /obj/structure/cable/yellow{ @@ -76000,7 +75857,7 @@ /area/engine/engineering) "llb" = ( /obj/structure/table/reinforced, -/obj/item/device/integrated_circuit_printer, +/obj/item/integrated_circuit_printer, /turf/open/floor/plasteel/white, /area/science/circuit) "lsv" = ( @@ -76014,7 +75871,7 @@ icon_state = "0-8" }, /obj/structure/table/reinforced, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plasteel/white, /area/science/circuit) "lwo" = ( @@ -76208,9 +76065,9 @@ /turf/open/floor/plasteel/white, /area/science/circuit) "ohj" = ( -/obj/item/device/integrated_electronics/analyzer, -/obj/item/device/integrated_electronics/debugger, -/obj/item/device/integrated_electronics/wirer, +/obj/item/integrated_electronics/analyzer, +/obj/item/integrated_electronics/debugger, +/obj/item/integrated_electronics/wirer, /obj/structure/table/reinforced, /turf/open/floor/plasteel/white, /area/science/circuit) @@ -76246,7 +76103,7 @@ pixel_y = 30; receive_ore_updates = 1 }, -/obj/item/device/integrated_electronics/debugger, +/obj/item/integrated_electronics/debugger, /turf/open/floor/plasteel/white, /area/science/circuit) "oRL" = ( @@ -76386,7 +76243,7 @@ /area/engine/engineering) "qBh" = ( /obj/structure/table, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/plasteel/whitepurple/side{ dir = 2 }, @@ -76753,7 +76610,7 @@ /turf/open/floor/plating, /area/engine/engineering) "xkG" = ( -/obj/item/device/integrated_electronics/wirer, +/obj/item/integrated_electronics/wirer, /obj/structure/table/reinforced, /turf/open/floor/plasteel/white, /area/science/circuit) @@ -112957,7 +112814,7 @@ cJa cpG kVo dDu -ctk +kVo cuc cuZ dyp diff --git a/_maps/map_files/Mining/Lavaland.dmm b/_maps/map_files/Mining/Lavaland.dmm index 18aa7d0f98..62f8080c28 100644 --- a/_maps/map_files/Mining/Lavaland.dmm +++ b/_maps/map_files/Mining/Lavaland.dmm @@ -106,18 +106,18 @@ /obj/structure/rack, /obj/item/storage/bag/ore, /obj/item/pickaxe, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/item/clothing/glasses/meson, -/obj/item/device/mining_scanner, +/obj/item/mining_scanner, /turf/open/floor/plasteel, /area/mine/laborcamp) "av" = ( /obj/structure/rack, /obj/item/storage/bag/ore, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/item/pickaxe, /obj/item/clothing/glasses/meson, -/obj/item/device/mining_scanner, +/obj/item/mining_scanner, /turf/open/floor/plasteel, /area/mine/laborcamp) "aw" = ( @@ -164,7 +164,7 @@ /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors/explored) "aE" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; @@ -384,10 +384,10 @@ "bn" = ( /obj/structure/table, /obj/item/pickaxe, -/obj/item/device/gps/mining, -/obj/item/device/gps/mining, -/obj/item/device/gps/mining, -/obj/item/device/gps/mining, +/obj/item/gps/mining, +/obj/item/gps/mining, +/obj/item/gps/mining, +/obj/item/gps/mining, /turf/open/floor/plasteel/purple/side{ dir = 9 }, @@ -583,7 +583,7 @@ /turf/open/floor/plating, /area/mine/production) "bO" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/purple/corner{ dir = 8 }, @@ -926,7 +926,7 @@ /turf/closed/wall, /area/mine/living_quarters) "cO" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = -28 @@ -1325,7 +1325,7 @@ dir = 8; network = list("mine") }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = 28 @@ -1937,7 +1937,7 @@ /turf/open/floor/plasteel, /area/mine/living_quarters) "fq" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = 28 @@ -2062,7 +2062,7 @@ /turf/open/floor/plasteel, /area/mine/living_quarters) "fI" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = -28 diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 0a6961f445..1390460fd2 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -138,7 +138,7 @@ "aas" = ( /obj/item/storage/toolbox/mechanical, /obj/item/wrench, -/obj/item/device/multitool, +/obj/item/multitool, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -262,7 +262,7 @@ "aaE" = ( /obj/item/folder/red, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/structure/cable/white{ icon_state = "1-2" }, @@ -347,8 +347,8 @@ /obj/structure/table/reinforced, /obj/machinery/recharger, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/radio/intercom{ +/obj/item/assembly/flash/handheld, +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -28 }, @@ -439,9 +439,9 @@ /area/bridge) "aaU" = ( /obj/structure/table/reinforced, -/obj/item/device/aicard, +/obj/item/aicard, /obj/item/storage/secure/briefcase, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 28 }, @@ -526,7 +526,7 @@ /obj/machinery/chem_dispenser/drinks{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 28; pixel_y = 24 @@ -1117,7 +1117,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/carpet, /area/bridge) "ack" = ( @@ -1161,7 +1161,7 @@ /area/bridge) "aco" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/newscaster{ pixel_x = -32 }, @@ -1868,7 +1868,7 @@ /area/crew_quarters/heads/captain/private) "adN" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 28 }, @@ -1960,7 +1960,7 @@ /turf/closed/wall, /area/crew_quarters/heads/hop) "adZ" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -28 }, @@ -2367,7 +2367,7 @@ pixel_x = 24; pixel_y = 38 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 28; pixel_y = 24 @@ -2435,7 +2435,7 @@ /area/asteroid/nearstation) "afd" = ( /obj/structure/table/wood, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/item/restraints/handcuffs, /turf/open/floor/plasteel/vault/side{ dir = 4 @@ -2535,7 +2535,7 @@ /turf/open/floor/wood, /area/crew_quarters/heads/captain/private) "afo" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; freerange = 1; name = "Captain's Intercom"; @@ -2844,8 +2844,8 @@ "afP" = ( /obj/structure/table/wood, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/camera/detective, -/obj/item/device/radio/intercom{ +/obj/item/camera/detective, +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -2956,7 +2956,7 @@ /area/crew_quarters/heads/captain/private) "aga" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /obj/item/toy/figure/captain, /turf/open/floor/carpet, /area/crew_quarters/heads/captain/private) @@ -3451,7 +3451,7 @@ "agX" = ( /obj/structure/table/reinforced, /obj/item/aiModule/reset, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -3523,7 +3523,7 @@ "ahd" = ( /obj/structure/table/reinforced, /obj/item/aiModule/supplied/quarantine, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -3838,7 +3838,7 @@ /area/security/detectives_office) "ahF" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/item/storage/secure/safe{ pixel_x = 32 }, @@ -3975,7 +3975,7 @@ pixel_x = 9; pixel_y = -24 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -4418,7 +4418,7 @@ "aiN" = ( /obj/structure/table/reinforced, /obj/item/folder/yellow, -/obj/item/device/multitool{ +/obj/item/multitool{ pixel_x = 6 }, /obj/item/pen/red, @@ -4506,7 +4506,7 @@ /area/security/brig) "aiY" = ( /obj/structure/closet/crate/bin, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = 24 @@ -4663,7 +4663,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 24 }, @@ -4799,7 +4799,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 24 }, @@ -4949,7 +4949,6 @@ /turf/open/floor/plasteel/neutral, /area/quartermaster/storage) "ajM" = ( -/obj/machinery/computer/stockexchange, /obj/structure/table/reinforced, /obj/machinery/requests_console{ department = "Cargo Office"; @@ -4976,7 +4975,7 @@ pixel_x = 3; pixel_y = -3 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -5048,8 +5047,8 @@ /obj/structure/table/reinforced, /obj/item/folder/red, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/item/key/security, /turf/open/floor/plasteel/red/side{ dir = 8 @@ -6446,7 +6445,7 @@ }, /obj/item/storage/toolbox/mechanical, /obj/item/stack/cable_coil/white, -/obj/item/device/multitool, +/obj/item/multitool, /obj/machinery/button/door{ id = "evashutters"; name = "E.V.A. Shutters"; @@ -6462,7 +6461,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -6482,7 +6481,6 @@ }, /area/hallway/primary/starboard/fore) "amv" = ( -/obj/machinery/computer/stockexchange, /obj/structure/table/reinforced, /turf/open/floor/plasteel/brown{ dir = 10 @@ -6527,7 +6525,7 @@ pixel_x = 24; pixel_y = -24 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 28 }, @@ -6557,7 +6555,7 @@ name = "protective hat"; pixel_y = 9 }, -/obj/item/device/flashlight, +/obj/item/flashlight, /turf/open/floor/plating, /area/asteroid/nearstation) "amH" = ( @@ -6724,9 +6722,9 @@ "amV" = ( /obj/structure/table/reinforced, /obj/item/storage/belt/utility, -/obj/item/device/radio, -/obj/item/device/radio, -/obj/item/device/gps, +/obj/item/radio, +/obj/item/radio, +/obj/item/gps, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/teleporter) @@ -6814,10 +6812,10 @@ "anh" = ( /obj/structure/table/reinforced, /obj/item/storage/belt/utility, -/obj/item/device/radio, -/obj/item/device/radio, -/obj/item/device/flashlight/flare, -/obj/item/device/flashlight/flare, +/obj/item/radio, +/obj/item/radio, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) @@ -6906,7 +6904,7 @@ /area/quartermaster/miningdock) "anq" = ( /obj/structure/closet/secure_closet/miner, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -7140,7 +7138,7 @@ "anN" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel, /area/teleporter) "anP" = ( @@ -7243,7 +7241,7 @@ "anW" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "anX" = ( @@ -8196,7 +8194,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -8259,7 +8257,7 @@ /area/teleporter) "apO" = ( /obj/machinery/shieldwallgen, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 28 }, @@ -8405,10 +8403,10 @@ /obj/item/storage/toolbox/emergency, /obj/item/tank/internals/oxygen, /obj/item/tank/internals/oxygen, -/obj/item/device/flashlight, -/obj/item/device/flashlight, -/obj/item/device/flashlight/flare, -/obj/item/device/flashlight/flare, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, /turf/open/floor/plasteel, /area/maintenance/starboard/central) "aqc" = ( @@ -8419,7 +8417,7 @@ }, /obj/item/tank/jetpack/carbondioxide, /obj/item/wrench, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -28 }, @@ -8612,10 +8610,10 @@ "aqv" = ( /obj/effect/decal/cleanable/oil, /obj/structure/closet/crate, -/obj/item/device/flashlight, -/obj/item/device/flashlight, -/obj/item/device/flashlight/flare, -/obj/item/device/flashlight/flare, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare, /obj/item/stock_parts/cell/high, /obj/item/crowbar/red, /obj/effect/turf_decal/bot, @@ -8657,7 +8655,7 @@ /area/maintenance/port/fore) "aqI" = ( /obj/structure/closet/secure_closet/security/sec, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -8793,23 +8791,23 @@ /area/storage/primary) "aqU" = ( /obj/structure/table/reinforced, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, /obj/effect/spawner/lootdrop/maintenance, /obj/machinery/status_display{ pixel_y = 32 }, /obj/effect/turf_decal/bot, -/obj/item/device/multitool, -/obj/item/device/multitool, +/obj/item/multitool, +/obj/item/multitool, /turf/open/floor/plasteel, /area/storage/primary) "aqV" = ( /obj/structure/table/reinforced, /obj/item/crowbar, /obj/item/wrench, -/obj/item/device/gps, +/obj/item/gps, /obj/machinery/light{ dir = 1 }, @@ -9045,7 +9043,7 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 24 }, @@ -9317,7 +9315,7 @@ /area/storage/primary) "arU" = ( /obj/machinery/holopad, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -9676,7 +9674,7 @@ "asO" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/machinery/firealarm{ dir = 1; pixel_y = -26 @@ -9691,15 +9689,15 @@ /area/security/brig) "asP" = ( /obj/structure/table/reinforced, -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = 5; pixel_y = 5 }, -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = -5; pixel_y = 5 }, -/obj/item/device/radio, +/obj/item/radio, /obj/machinery/newscaster/security_unit{ pixel_y = -32 }, @@ -9713,11 +9711,11 @@ "asQ" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/machinery/status_display{ pixel_y = -32 }, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -9828,7 +9826,7 @@ "asX" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/mechanical, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /obj/structure/cable/white{ icon_state = "4-8" @@ -10107,7 +10105,7 @@ "atQ" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/mechanical, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -10242,11 +10240,11 @@ /area/maintenance/port/central) "atX" = ( /obj/structure/table/wood, -/obj/item/device/camera_film{ +/obj/item/camera_film{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/camera_film, +/obj/item/camera_film, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -10365,7 +10363,7 @@ }, /obj/item/stack/cable_coil/random, /obj/item/stack/cable_coil/random, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -10692,7 +10690,7 @@ /area/crew_quarters/theatre) "ava" = ( /obj/structure/table/wood, -/obj/item/device/instrument/guitar, +/obj/item/instrument/guitar, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -10745,7 +10743,7 @@ /area/crew_quarters/bar/atrium) "avg" = ( /obj/structure/table/wood, -/obj/item/device/paicard, +/obj/item/paicard, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -11027,7 +11025,7 @@ icon_state = "crateopen" }, /obj/item/clothing/shoes/jackboots, -/obj/item/device/radio, +/obj/item/radio, /obj/item/storage/secure/briefcase, /obj/effect/spawner/lootdrop/maintenance{ lootcount = 2; @@ -11192,7 +11190,7 @@ /area/maintenance/port/central) "awf" = ( /obj/structure/table/wood, -/obj/item/device/camera, +/obj/item/camera, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -11384,7 +11382,7 @@ /area/maintenance/starboard/central) "awy" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -11771,7 +11769,7 @@ /obj/machinery/newscaster{ pixel_y = 32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -11802,7 +11800,7 @@ }, /area/hallway/primary/port) "axD" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -12082,7 +12080,7 @@ "ayr" = ( /obj/structure/table/reinforced, /obj/item/storage/belt/utility, -/obj/item/device/t_scanner, +/obj/item/t_scanner, /obj/structure/cable/white{ icon_state = "2-4" }, @@ -12167,7 +12165,7 @@ /area/crew_quarters/dorms) "ayE" = ( /obj/structure/table/wood, -/obj/item/device/instrument/violin, +/obj/item/instrument/violin, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -12330,7 +12328,7 @@ }, /obj/item/crowbar, /obj/item/wrench, -/obj/item/device/radio, +/obj/item/radio, /obj/machinery/airalarm{ pixel_y = 23 }, @@ -12344,7 +12342,7 @@ "ayX" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/machinery/status_display{ pixel_y = 32 }, @@ -12360,7 +12358,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 24 }, @@ -12527,12 +12525,12 @@ /area/engine/atmos) "azA" = ( /obj/structure/table, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/plasteel/neutral, /area/crew_quarters/dorms) "azB" = ( /obj/structure/table, -/obj/item/device/camera, +/obj/item/camera, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/neutral, /area/crew_quarters/dorms) @@ -13329,7 +13327,7 @@ /area/engine/atmos) "aBJ" = ( /obj/structure/table/reinforced, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/requests_console{ department = "Atmospherics Office"; departmentType = 0; @@ -13609,7 +13607,7 @@ icon_state = "4-8" }, /obj/item/folder/red, -/obj/item/device/radio, +/obj/item/radio, /obj/effect/turf_decal/stripes/line{ dir = 2 }, @@ -13862,7 +13860,7 @@ /area/crew_quarters/dorms) "aCP" = ( /obj/structure/table/wood, -/obj/item/device/instrument/eguitar, +/obj/item/instrument/eguitar, /obj/item/toy/crayon/spraycan/lubecan{ charges = 5 }, @@ -14355,7 +14353,7 @@ /turf/open/floor/plasteel/white, /area/crew_quarters/kitchen) "aDX" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 28 }, @@ -14427,7 +14425,7 @@ /obj/structure/sign/warning/nosmoking{ pixel_y = 32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -14511,7 +14509,7 @@ /obj/machinery/power/smes{ charge = 5e+006 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -14746,10 +14744,10 @@ "aET" = ( /obj/structure/table/wood, /obj/item/storage/crayons, -/obj/item/device/flashlight/lamp/bananalamp{ +/obj/item/flashlight/lamp/bananalamp{ pixel_y = 5 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -14981,7 +14979,7 @@ /obj/item/stack/sheet/mineral/plasma{ amount = 20 }, -/obj/item/device/gps/engineering{ +/obj/item/gps/engineering{ gpstag = "ENG0" }, /obj/machinery/light/small, @@ -15301,7 +15299,7 @@ /area/crew_quarters/kitchen) "aFX" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -15322,7 +15320,7 @@ /area/hallway/primary/starboard) "aGa" = ( /obj/effect/landmark/event_spawn, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/neutral, /area/hallway/secondary/exit) "aGb" = ( @@ -15726,7 +15724,7 @@ /area/crew_quarters/bar/atrium) "aGQ" = ( /obj/machinery/holopad, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 28 }, @@ -16597,7 +16595,7 @@ /area/engine/engineering) "aIy" = ( /obj/structure/table/reinforced, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/requests_console{ department = "Engineering"; departmentType = 0; @@ -16710,7 +16708,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -16961,7 +16959,7 @@ /obj/machinery/power/terminal{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -17234,7 +17232,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/bot, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -17691,7 +17689,7 @@ /area/engine/engineering) "aKM" = ( /obj/structure/table/reinforced, -/obj/item/device/lightreplacer, +/obj/item/lightreplacer, /obj/structure/cable/white{ icon_state = "1-8" }, @@ -18221,7 +18219,7 @@ pixel_y = 3 }, /obj/item/storage/box/lights/mixed, -/obj/item/device/lightreplacer, +/obj/item/lightreplacer, /obj/machinery/airalarm{ dir = 4; pixel_x = -23 @@ -18539,7 +18537,7 @@ /area/engine/engineering) "aNa" = ( /obj/machinery/suit_storage_unit/engine, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -18624,7 +18622,7 @@ /area/engine/engineering) "aNh" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -18672,7 +18670,7 @@ /obj/machinery/light_switch{ pixel_y = -24 }, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -18882,7 +18880,7 @@ /area/hallway/secondary/exit) "aNI" = ( /obj/structure/closet/crate, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -24 }, @@ -18943,7 +18941,7 @@ /obj/machinery/computer/telecomms/monitor{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 24 }, @@ -19438,7 +19436,7 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 24 }, @@ -19718,7 +19716,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 24 }, @@ -20287,7 +20285,7 @@ pixel_y = 3 }, /obj/item/book/manual/detective, -/obj/item/device/camera/detective, +/obj/item/camera/detective, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -20673,7 +20671,7 @@ /obj/structure/cable/white{ icon_state = "1-4" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -28 }, @@ -20804,7 +20802,7 @@ /area/maintenance/port) "aRT" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/computer/security/telescreen/entertainment{ pixel_x = -32 }, @@ -20833,7 +20831,7 @@ /obj/structure/chair/office/dark{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 24 }, @@ -20843,7 +20841,7 @@ /area/library) "aRX" = ( /obj/structure/table/wood, -/obj/item/device/paicard, +/obj/item/paicard, /obj/machinery/newscaster{ pixel_y = 32 }, @@ -20889,7 +20887,7 @@ /area/library) "aSd" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/newscaster{ pixel_x = 32 }, @@ -20931,7 +20929,7 @@ dir = 4; pixel_x = -22 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26; pixel_y = 24 @@ -21225,7 +21223,7 @@ "aST" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/mechanical, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/effect/turf_decal/bot, /obj/effect/turf_decal/stripes/line, /turf/open/floor/engine, @@ -21280,8 +21278,8 @@ /obj/item/tank/internals/emergency_oxygen/engi{ pixel_x = 5 }, -/obj/item/device/geiger_counter, -/obj/item/device/geiger_counter, +/obj/item/geiger_counter, +/obj/item/geiger_counter, /obj/effect/turf_decal/bot, /obj/effect/turf_decal/stripes/line, /turf/open/floor/engine, @@ -21411,7 +21409,7 @@ dir = 1 }, /obj/machinery/door/window/southright, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -21477,7 +21475,7 @@ /area/hallway/primary/aft) "aTy" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/grimy, /area/crew_quarters/lounge) "aTz" = ( @@ -21806,7 +21804,7 @@ /area/library) "aUk" = ( /obj/structure/bodycontainer/morgue, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -21960,14 +21958,14 @@ /obj/item/stock_parts/capacitor, /obj/item/stock_parts/manipulator, /obj/item/stock_parts/manipulator, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 28 }, /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plasteel/vault/side, /area/science/lab) "aUF" = ( @@ -22161,7 +22159,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -22356,10 +22354,10 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/obj/item/device/integrated_circuit_printer, -/obj/item/device/integrated_electronics/analyzer, -/obj/item/device/integrated_electronics/debugger, -/obj/item/device/integrated_electronics/wirer, +/obj/item/integrated_circuit_printer, +/obj/item/integrated_electronics/analyzer, +/obj/item/integrated_electronics/debugger, +/obj/item/integrated_electronics/wirer, /turf/open/floor/plasteel/vault/side, /area/science/lab) "aVy" = ( @@ -22487,7 +22485,7 @@ "aVN" = ( /obj/structure/table/wood, /obj/item/storage/bag/books, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/machinery/status_display{ pixel_x = -32 }, @@ -22501,7 +22499,7 @@ /area/library) "aVP" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/dark, /area/library) @@ -22649,18 +22647,18 @@ /area/medical/chemistry) "aWg" = ( /obj/structure/table/glass, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/timer{ +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/timer{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 3; pixel_y = 3 }, @@ -22833,7 +22831,7 @@ "aWy" = ( /obj/structure/table/wood, /obj/item/storage/briefcase, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /turf/open/floor/plating, /area/maintenance/starboard/aft) "aWz" = ( @@ -22860,11 +22858,11 @@ /area/library) "aWC" = ( /obj/structure/table/wood, -/obj/item/device/camera_film{ +/obj/item/camera_film{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/camera_film, +/obj/item/camera_film, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/vault{ dir = 5 @@ -23521,7 +23519,7 @@ /area/medical/medbay/zone3) "aXQ" = ( /obj/structure/closet/secure_closet/medical3, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -23721,7 +23719,7 @@ /area/science/research) "aYm" = ( /obj/machinery/light, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -24 }, @@ -23784,7 +23782,7 @@ dir = 4 }, /obj/structure/cable/white, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -24 }, @@ -24209,7 +24207,7 @@ "aZq" = ( /obj/structure/table/wood, /obj/item/clothing/gloves/color/black, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/machinery/light/small{ dir = 1 }, @@ -24252,10 +24250,10 @@ "aZv" = ( /obj/structure/table/wood, /obj/item/folder, -/obj/item/device/laser_pointer{ +/obj/item/laser_pointer{ pixel_x = 3 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -24265,8 +24263,8 @@ /area/library) "aZw" = ( /obj/structure/table/wood, -/obj/item/device/taperecorder, -/obj/item/device/camera, +/obj/item/taperecorder, +/obj/item/camera, /obj/machinery/ai_status_display{ pixel_y = -32 }, @@ -24595,7 +24593,7 @@ /obj/item/screwdriver{ pixel_y = 5 }, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/clothing/head/welding, /obj/machinery/firealarm{ pixel_y = 24 @@ -24635,12 +24633,12 @@ /obj/structure/table/reinforced, /obj/item/stack/cable_coil/white, /obj/item/stack/cable_coil/white, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/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/assembly/flash/handheld, /obj/machinery/newscaster{ pixel_y = 32 }, @@ -24649,15 +24647,15 @@ /area/science/robotics/lab) "bag" = ( /obj/item/paper_bin, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 5; pixel_y = 7 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 5; pixel_y = 7 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 5; pixel_y = 7 }, @@ -24943,7 +24941,7 @@ "baK" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/radio, +/obj/item/radio, /obj/structure/reagent_dispensers/peppertank{ pixel_x = 32 }, @@ -25133,7 +25131,7 @@ /area/science/robotics/lab) "bbc" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plating, /area/maintenance/port) "bbd" = ( @@ -25606,7 +25604,7 @@ "bce" = ( /obj/structure/table/optable, /obj/effect/decal/cleanable/blood/old, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 26 }, @@ -25820,7 +25818,7 @@ "bcD" = ( /obj/structure/rack, /obj/item/weldingtool, -/obj/item/device/assembly/voice, +/obj/item/assembly/voice, /obj/item/clothing/head/welding, /obj/effect/spawner/lootdrop/maintenance, /obj/effect/turf_decal/stripes/line{ @@ -25894,7 +25892,7 @@ /area/maintenance/port) "bcR" = ( /obj/structure/table/wood, -/obj/item/device/instrument/guitar, +/obj/item/instrument/guitar, /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/plating, /area/maintenance/port) @@ -26534,7 +26532,7 @@ /obj/structure/chair/office/light{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -26601,7 +26599,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/aft) "beg" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -24 }, @@ -26661,7 +26659,7 @@ /obj/item/stock_parts/cell/high, /obj/item/stock_parts/cell/high, /obj/machinery/cell_charger, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -26686,9 +26684,9 @@ /obj/structure/window/reinforced{ dir = 8 }, -/obj/item/device/mmi, -/obj/item/device/mmi, -/obj/item/device/mmi, +/obj/item/mmi, +/obj/item/mmi, +/obj/item/mmi, /obj/structure/sign/departments/medbay/alt{ pixel_y = -32 }, @@ -26876,7 +26874,7 @@ /obj/machinery/newscaster{ pixel_x = -32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -24 }, @@ -27540,7 +27538,7 @@ }, /area/chapel/main) "bfX" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 24 }, @@ -27621,7 +27619,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -27787,7 +27785,7 @@ pixel_x = -26; req_access_txt = "27" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -24 }, @@ -27826,7 +27824,7 @@ /area/chapel/main) "bgH" = ( /obj/structure/table/wood/fancy, -/obj/item/device/flashlight/lantern, +/obj/item/flashlight/lantern, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, @@ -28531,7 +28529,7 @@ /area/chapel/main) "bii" = ( /obj/structure/table/wood/fancy, -/obj/item/device/flashlight/lantern, +/obj/item/flashlight/lantern, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -29289,7 +29287,7 @@ /obj/structure/extinguisher_cabinet{ pixel_y = -32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -29324,7 +29322,7 @@ /area/chapel/main) "bjM" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -29425,7 +29423,7 @@ pixel_x = 24; pixel_y = -24 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -24 }, @@ -29562,7 +29560,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "bkC" = ( -/obj/item/device/beacon, +/obj/item/beacon, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/hallway/secondary/entry) @@ -31227,9 +31225,6 @@ }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) -"dWc" = ( -/turf/closed/mineral/random/labormineral, -/area/space) "dYC" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 @@ -32130,7 +32125,7 @@ /area/hydroponics) "lAs" = ( /obj/effect/decal/cleanable/dirt, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 24 }, @@ -33241,28 +33236,10 @@ }, /area/maintenance/starboard) "sFp" = ( -/obj/structure/closet/crate{ - name = "solar pack crate" - }, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/circuitboard/computer/solar_control, -/obj/item/electronics/tracker, -/obj/item/paper/guides/jobs/engi/solars, /obj/effect/turf_decal/bot{ dir = 1 }, +/obj/structure/closet/crate/solarpanel_small, /turf/open/floor/plasteel/vault/side{ dir = 5 }, @@ -33275,9 +33252,9 @@ /obj/structure/table, /obj/item/clipboard, /obj/item/crowbar/red, -/obj/item/device/aicard, -/obj/item/device/analyzer, -/obj/item/device/assembly/flash/handheld, +/obj/item/aicard, +/obj/item/analyzer, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/vault/side{ dir = 8 }, @@ -34250,7 +34227,7 @@ /turf/open/floor/circuit/green, /area/ai_monitored/turret_protected/ai) "sLV" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 1; listening = 1; @@ -34258,14 +34235,14 @@ pixel_x = -27; pixel_y = -7 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_y = -27 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -34437,7 +34414,7 @@ "sMv" = ( /obj/item/crowbar, /obj/item/wrench, -/obj/item/device/mmi, +/obj/item/mmi, /obj/structure/table, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/vault{ @@ -34450,7 +34427,7 @@ /area/ai_monitored/turret_protected/ai) "sMx" = ( /obj/item/folder/blue, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/structure/table, /turf/open/floor/plasteel/vault{ dir = 8 @@ -34505,7 +34482,7 @@ id = "AI"; pixel_x = -26 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -34611,7 +34588,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -34663,7 +34640,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/vault/side{ dir = 5 }, @@ -34901,7 +34878,7 @@ /turf/open/floor/plasteel/vault, /area/ai_monitored/turret_protected/aisat_interior) "sNz" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/carpet, /area/crew_quarters/lounge) "sNA" = ( @@ -35052,10 +35029,10 @@ /obj/item/stack/sheet/glass{ amount = 20 }, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/mmi, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/mmi, +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, @@ -79416,7 +79393,7 @@ bfP bjc bfP bfP -dWc +aad aaa aaa aaa diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 27dc4f85e5..ac4d2a12dc 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -97,7 +97,7 @@ icon_state = "2-4" }, /obj/effect/landmark/start/ai/secondary, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -145,7 +145,7 @@ pixel_y = 24 }, /obj/effect/landmark/start/ai/secondary, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -269,7 +269,7 @@ /area/ai_monitored/turret_protected/ai) "acy" = ( /obj/effect/landmark/start/ai, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 1; listening = 1; @@ -277,14 +277,14 @@ pixel_x = -27; pixel_y = -9 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_y = -31 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ anyai = 1; broadcasting = 0; freerange = 1; @@ -346,7 +346,7 @@ /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) "acE" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -518,10 +518,10 @@ pixel_x = 3; pixel_y = -4 }, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/mmi, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/mmi, +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, @@ -673,7 +673,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -1077,7 +1077,7 @@ /turf/open/floor/plasteel/dark, /area/security/prison) "aeD" = ( -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /turf/open/floor/plasteel/dark, /area/security/prison) "aeE" = ( @@ -1395,7 +1395,7 @@ /area/security/prison) "afq" = ( /obj/structure/table, -/obj/item/device/instrument/harmonica, +/obj/item/instrument/harmonica, /turf/open/floor/plasteel/dark, /area/security/prison) "afr" = ( @@ -1444,7 +1444,7 @@ /area/ai_monitored/turret_protected/aisat_interior) "afy" = ( /obj/effect/landmark/start/cyborg, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat_interior) "afz" = ( @@ -1582,7 +1582,7 @@ pixel_y = 3 }, /obj/item/storage/toolbox/mechanical, -/obj/item/device/multitool{ +/obj/item/multitool{ layer = 5 }, /obj/item/extinguisher{ @@ -1656,7 +1656,7 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat_interior) "agg" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -28 }, @@ -1872,7 +1872,7 @@ c_tag = "Permabrig Cell 2"; network = list("ss13","prison") }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; @@ -1913,7 +1913,7 @@ c_tag = "Permabrig Cell 1"; network = list("ss13","prison") }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; @@ -2076,7 +2076,7 @@ /turf/open/space, /area/space/nearstation) "ahj" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -2087,7 +2087,7 @@ pixel_y = 5 }, /obj/item/clothing/mask/balaclava, -/obj/item/device/mmi, +/obj/item/mmi, /obj/machinery/atmospherics/pipe/simple/cyan/hidden, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) @@ -2096,7 +2096,7 @@ /obj/item/folder/red{ pixel_x = 3 }, -/obj/item/device/taperecorder{ +/obj/item/taperecorder{ pixel_x = -3 }, /turf/open/floor/plasteel/dark, @@ -2203,7 +2203,7 @@ /area/security/execution/transfer) "ahx" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/atmospherics/pipe/simple/cyan/hidden, /turf/open/floor/plasteel/dark, /area/security/execution/transfer) @@ -2568,7 +2568,7 @@ /obj/item/razor{ pixel_x = -6 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = 4 }, /obj/structure/extinguisher_cabinet{ @@ -2757,7 +2757,7 @@ /area/security/prison) "aiK" = ( /obj/structure/table, -/obj/item/device/electropack, +/obj/item/electropack, /turf/open/floor/plasteel/red/side, /area/security/prison) "aiL" = ( @@ -2853,7 +2853,7 @@ /area/maintenance/department/security/brig) "aiY" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plating, /area/maintenance/department/security/brig) "aiZ" = ( @@ -3526,7 +3526,7 @@ /area/maintenance/department/crew_quarters/dorms) "akr" = ( /obj/machinery/washing_machine, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = -31 @@ -3571,7 +3571,7 @@ /area/maintenance/department/security/brig) "akx" = ( /obj/structure/bodycontainer/crematorium, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -27 @@ -3629,7 +3629,7 @@ }, /area/security/brig) "akD" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -4034,7 +4034,7 @@ /area/security/main) "alC" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = -4; pixel_y = 12 }, @@ -4321,7 +4321,7 @@ /obj/machinery/atmospherics/pipe/manifold/cyan/hidden{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = -31 @@ -4646,7 +4646,7 @@ c_tag = "Brig Control Room"; dir = 2 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_y = 24 @@ -5038,7 +5038,7 @@ c_tag = "Head of Security's Office"; dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_y = -27 @@ -5087,7 +5087,7 @@ /area/maintenance/department/crew_quarters/dorms) "aob" = ( /obj/structure/closet/emcloset, -/obj/item/device/camera, +/obj/item/camera, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) "aod" = ( @@ -5436,7 +5436,7 @@ /obj/structure/rack, /obj/item/crowbar, /obj/item/wrench, -/obj/item/device/laser_pointer/red, +/obj/item/laser_pointer/red, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) "aoY" = ( @@ -5663,7 +5663,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, -/obj/item/device/camera_film, +/obj/item/camera_film, /turf/open/floor/plating{ icon_state = "platingdmg1" }, @@ -5986,7 +5986,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = 29 }, @@ -6355,7 +6355,7 @@ /turf/open/floor/plasteel/dark, /area/security/brig) "arx" = ( -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/structure/table/glass, /turf/open/floor/plasteel/dark, /area/security/brig) @@ -6603,11 +6603,11 @@ desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; name = "emergency lifejacket" }, -/obj/item/device/flashlight, -/obj/item/device/flashlight, -/obj/item/device/flashlight, -/obj/item/device/flashlight, -/obj/item/device/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, /turf/open/floor/plasteel, /area/gateway) "arZ" = ( @@ -6619,22 +6619,22 @@ /area/gateway) "asa" = ( /obj/structure/table, -/obj/item/device/radio/off{ +/obj/item/radio/off{ pixel_y = 6 }, -/obj/item/device/radio/off{ +/obj/item/radio/off{ pixel_x = 6; pixel_y = 4 }, -/obj/item/device/radio/off{ +/obj/item/radio/off{ pixel_x = -6; pixel_y = 4 }, -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/structure/sign/warning/biohazard{ pixel_x = 32 }, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel, /area/gateway) "asb" = ( @@ -6887,7 +6887,7 @@ /area/security/brig) "asJ" = ( /obj/item/folder/red, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/machinery/atmospherics/pipe/simple/cyan/hidden{ dir = 4 }, @@ -6985,21 +6985,7 @@ /turf/closed/wall/r_wall, /area/bridge) "asV" = ( -/obj/structure/closet/crate{ - name = "Gold Crate" - }, -/obj/item/stack/sheet/mineral/gold{ - pixel_x = -1; - pixel_y = 5 - }, -/obj/item/stack/sheet/mineral/gold{ - pixel_y = 2 - }, -/obj/item/stack/sheet/mineral/gold{ - pixel_x = 1; - pixel_y = -2 - }, -/obj/item/storage/belt/champion, +/obj/structure/closet/crate/goldcrate, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, @@ -7036,29 +7022,7 @@ }, /area/ai_monitored/nuke_storage) "asZ" = ( -/obj/item/coin/silver{ - pixel_x = 7; - pixel_y = 12 - }, -/obj/item/coin/silver{ - pixel_x = 12; - pixel_y = 7 - }, -/obj/item/coin/silver{ - pixel_x = 4; - pixel_y = 8 - }, -/obj/item/coin/silver{ - pixel_x = -6; - pixel_y = 5 - }, -/obj/item/coin/silver{ - pixel_x = 5; - pixel_y = -8 - }, -/obj/structure/closet/crate{ - name = "Silver Crate" - }, +/obj/structure/closet/crate/silvercrate, /turf/open/floor/plasteel/vault{ dir = 4 }, @@ -7397,7 +7361,7 @@ }, /area/bridge) "atU" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/darkblue/side{ dir = 1 }, @@ -7488,7 +7452,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ freerange = 0; frequency = 1459; name = "Station Intercom (General)"; @@ -7614,7 +7578,7 @@ /turf/open/floor/plasteel, /area/maintenance/department/security/brig) "aux" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; @@ -8181,7 +8145,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = -28 @@ -8254,14 +8218,14 @@ /area/bridge) "avY" = ( /obj/structure/table/glass, -/obj/item/device/aicard, +/obj/item/aicard, /turf/open/floor/plasteel/dark, /area/bridge) "avZ" = ( /obj/structure/table/glass, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/laser_pointer/blue, +/obj/item/assembly/flash/handheld, +/obj/item/laser_pointer/blue, /turf/open/floor/plasteel/dark, /area/bridge) "awa" = ( @@ -8654,7 +8618,7 @@ id = "Secure Gate"; name = "brig shutters" }, -/obj/item/device/radio, +/obj/item/radio, /obj/machinery/door/firedoor, /turf/open/floor/plasteel/dark, /area/security/brig) @@ -9051,7 +9015,7 @@ /area/crew_quarters/heads/captain) "axU" = ( /obj/machinery/computer/card, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -9409,7 +9373,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/fore) "ayQ" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel, /area/hallway/primary/fore) "ayR" = ( @@ -9526,7 +9490,7 @@ icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = -28 @@ -9623,7 +9587,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = -28 @@ -9718,7 +9682,7 @@ /area/crew_quarters/dorms) "azx" = ( /obj/structure/table/wood, -/obj/item/device/paicard, +/obj/item/paicard, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -10053,7 +10017,7 @@ /area/hallway/primary/fore) "aAp" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /obj/machinery/light_switch{ dir = 9; pixel_x = -22 @@ -10095,7 +10059,7 @@ /area/crew_quarters/heads/captain) "aAv" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /turf/open/floor/carpet, /area/crew_quarters/heads/captain) "aAw" = ( @@ -10279,7 +10243,7 @@ "aAW" = ( /obj/structure/rack, /obj/item/clothing/mask/gas, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plating, /area/maintenance/solars/port) "aAX" = ( @@ -10489,7 +10453,7 @@ /area/bridge) "aBz" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /obj/item/storage/secure/safe{ pixel_x = -22; pixel_y = 4 @@ -10702,7 +10666,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = 28 @@ -10872,7 +10836,7 @@ "aCt" = ( /obj/structure/table, /obj/item/wrench, -/obj/item/device/analyzer, +/obj/item/analyzer, /obj/machinery/requests_console{ department = "Tool Storage"; departmentType = 0; @@ -10886,7 +10850,7 @@ /obj/structure/table, /obj/machinery/cell_charger, /obj/item/stock_parts/cell/high/plus, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -10900,15 +10864,15 @@ /area/storage/primary) "aCv" = ( /obj/structure/table, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = -8; pixel_y = -4 }, -/obj/item/device/assembly/igniter, +/obj/item/assembly/igniter, /obj/machinery/camera{ c_tag = "Primary Tool Storage" }, -/obj/item/device/assembly/voice, +/obj/item/assembly/voice, /obj/structure/noticeboard{ pixel_y = 32 }, @@ -10918,14 +10882,14 @@ /area/storage/primary) "aCw" = ( /obj/structure/table, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/signaler, -/obj/item/device/multitool, -/obj/item/device/multitool, +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, +/obj/item/multitool, +/obj/item/multitool, /obj/machinery/airalarm{ pixel_y = 22 }, -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/item/electronics/airlock, /turf/open/floor/plasteel/neutral/side{ dir = 1 @@ -11274,7 +11238,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = -26 @@ -11530,7 +11494,7 @@ c_tag = "AI Upload Center"; dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 1; frequency = 1447; listening = 0; @@ -11737,7 +11701,7 @@ dir = 8; pixel_x = 23 }, -/obj/effect/decal/cleanable/deadcockroach, +/obj/effect/decal/cleanable/insectguts, /turf/open/floor/plasteel/freezer, /area/crew_quarters/toilet/restrooms) "aEi" = ( @@ -11761,11 +11725,11 @@ /area/maintenance/department/cargo) "aEm" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp{ +/obj/item/flashlight/lamp{ pixel_x = 3; pixel_y = 6 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -27 @@ -12088,7 +12052,7 @@ pixel_x = -4; pixel_y = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = 27 @@ -12104,7 +12068,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -27 @@ -12235,7 +12199,7 @@ /obj/structure/table/wood, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /turf/open/floor/carpet, /area/security/detectives_office) "aFq" = ( @@ -12261,7 +12225,7 @@ pixel_y = -7 }, /obj/item/electronics/apc, -/obj/item/device/t_scanner, +/obj/item/t_scanner, /turf/open/floor/plasteel/neutral/side{ dir = 8; heat_capacity = 1e+006 @@ -12290,7 +12254,7 @@ /area/storage/primary) "aFw" = ( /obj/structure/table/wood, -/obj/item/device/camera, +/obj/item/camera, /turf/open/floor/carpet, /area/crew_quarters/heads/captain) "aFx" = ( @@ -12348,7 +12312,7 @@ /obj/machinery/light{ dir = 4 }, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /turf/open/floor/plasteel, /area/hallway/primary/central) "aFE" = ( @@ -12550,8 +12514,8 @@ "aGe" = ( /obj/structure/rack, /obj/item/wirecutters, -/obj/item/device/flashlight, -/obj/item/device/gps, +/obj/item/flashlight, +/obj/item/gps, /turf/open/floor/plasteel/neutral/side{ dir = 10 }, @@ -12563,14 +12527,14 @@ "aGg" = ( /obj/structure/table, /obj/item/crowbar, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, /obj/item/clothing/gloves/color/fyellow, /obj/item/clothing/gloves/color/fyellow, -/obj/item/device/assembly/timer, -/obj/item/device/radio, +/obj/item/assembly/timer, +/obj/item/radio, /turf/open/floor/plasteel/neutral/side, /area/storage/primary) "aGh" = ( @@ -13428,7 +13392,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/effect/decal/cleanable/deadcockroach, +/obj/effect/decal/cleanable/insectguts, /turf/open/floor/plasteel/freezer, /area/crew_quarters/toilet/restrooms) "aIo" = ( @@ -14802,7 +14766,7 @@ /area/security/checkpoint/supply) "aMf" = ( /obj/machinery/computer/secure_data, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -15244,7 +15208,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -28 }, @@ -15341,7 +15305,7 @@ pixel_y = 3 }, /obj/item/clothing/shoes/magboots, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -27 @@ -15391,7 +15355,7 @@ "aNu" = ( /obj/structure/closet/crate, /obj/item/melee/flyswatter, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -27 @@ -15515,7 +15479,7 @@ /area/quartermaster/sorting) "aNK" = ( /obj/structure/table, -/obj/item/device/destTagger, +/obj/item/destTagger, /obj/effect/turf_decal/stripes/line{ dir = 1 }, @@ -15749,7 +15713,7 @@ /area/hallway/secondary/exit/departure_lounge) "aOt" = ( /obj/structure/table, -/obj/item/device/instrument/glockenspiel{ +/obj/item/instrument/glockenspiel{ pixel_y = 3 }, /turf/open/floor/plasteel/redblue, @@ -16347,7 +16311,7 @@ /area/storage/eva) "aPM" = ( /obj/structure/table, -/obj/item/device/beacon, +/obj/item/beacon, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel/darkblue/side{ dir = 10 @@ -16467,7 +16431,7 @@ /turf/open/floor/plasteel/floorgrime, /area/quartermaster/warehouse) "aQd" = ( -/obj/item/device/flashlight, +/obj/item/flashlight, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/floorgrime, /area/quartermaster/warehouse) @@ -17610,7 +17574,7 @@ }, /area/maintenance/department/crew_quarters/bar) "aSN" = ( -/obj/item/device/assembly/mousetrap, +/obj/item/assembly/mousetrap, /turf/open/floor/wood{ icon_state = "wood-broken6" }, @@ -18129,7 +18093,7 @@ /area/hydroponics) "aTX" = ( /obj/structure/kitchenspike, -/obj/item/device/assembly/mousetrap, +/obj/item/assembly/mousetrap, /obj/item/reagent_containers/food/snacks/deadmouse, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) @@ -18674,7 +18638,7 @@ pixel_x = 28; req_access_txt = "28" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -19096,7 +19060,7 @@ /obj/structure/cable{ icon_state = "2-8" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -19164,7 +19128,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -19327,7 +19291,7 @@ /obj/machinery/light/small{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -19770,7 +19734,7 @@ /area/hydroponics) "aXX" = ( /obj/machinery/hydroponics/constructable, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -19850,7 +19814,7 @@ "aYh" = ( /obj/structure/table/reinforced, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/instrument/guitar, +/obj/item/instrument/guitar, /turf/open/floor/plasteel/darkred/side{ dir = 1 }, @@ -20045,8 +20009,8 @@ /area/maintenance/department/cargo) "aYE" = ( /obj/structure/table, -/obj/item/device/assembly/igniter, -/obj/item/device/assembly/igniter, +/obj/item/assembly/igniter, +/obj/item/assembly/igniter, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/department/cargo) @@ -20061,7 +20025,7 @@ /obj/item/shard{ icon_state = "small" }, -/obj/effect/decal/cleanable/deadcockroach, +/obj/effect/decal/cleanable/insectguts, /obj/item/light/bulb, /turf/open/floor/plating, /area/maintenance/department/cargo) @@ -20097,7 +20061,7 @@ /area/security/checkpoint/customs) "aYK" = ( /obj/structure/closet/secure_closet/security, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -20166,7 +20130,7 @@ /area/crew_quarters/kitchen) "aYU" = ( /obj/machinery/processor, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -20314,7 +20278,6 @@ /area/hallway/primary/central) "aZj" = ( /obj/structure/table, -/obj/machinery/computer/stockexchange, /obj/machinery/status_display{ dir = 4; layer = 4; @@ -20467,7 +20430,7 @@ /obj/machinery/atmospherics/pipe/simple/cyan/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -20726,7 +20689,7 @@ /area/crew_quarters/bar) "bao" = ( /obj/machinery/computer/slot_machine, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -20765,7 +20728,7 @@ "bas" = ( /obj/structure/table, /obj/item/pen, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = -26 @@ -20875,7 +20838,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = -26 @@ -21340,7 +21303,7 @@ "bbN" = ( /obj/structure/rack, /obj/item/clothing/mask/gas, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plating, /area/maintenance/solars/starboard) "bbO" = ( @@ -21531,7 +21494,7 @@ /area/crew_quarters/bar) "bcq" = ( /obj/item/clothing/glasses/monocle, -/obj/item/device/instrument/recorder, +/obj/item/instrument/recorder, /obj/structure/table/wood/fancy, /turf/open/floor/carpet{ icon_state = "carpetsymbol" @@ -22367,7 +22330,7 @@ /area/crew_quarters/bar) "bez" = ( /obj/structure/table/wood, -/obj/item/device/instrument/trombone, +/obj/item/instrument/trombone, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -22770,7 +22733,6 @@ /area/science/robotics/mechbay) "bfB" = ( /obj/structure/table, -/obj/machinery/computer/stockexchange, /obj/machinery/requests_console{ department = "Cargo Bay"; departmentType = 2; @@ -22797,7 +22759,7 @@ /obj/machinery/computer/security/mining{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -35 }, @@ -22974,7 +22936,7 @@ /obj/structure/chair{ name = "Throne of Custodia" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -23250,7 +23212,7 @@ /area/space) "bgU" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -23276,7 +23238,7 @@ /area/crew_quarters/lounge) "bgY" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -23999,7 +23961,7 @@ /area/crew_quarters/lounge) "biK" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -24026,7 +23988,7 @@ /area/crew_quarters/lounge) "biN" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -24041,7 +24003,7 @@ /area/crew_quarters/lounge) "biO" = ( /obj/structure/table/glass, -/obj/item/device/healthanalyzer{ +/obj/item/healthanalyzer{ layer = 3.1 }, /obj/item/pen{ @@ -24420,7 +24382,7 @@ pixel_y = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -24541,10 +24503,10 @@ /area/science/research/lobby) "bkq" = ( /obj/structure/table, -/obj/item/device/gps{ +/obj/item/gps{ gpstag = "RD0" }, -/obj/item/device/assembly/igniter{ +/obj/item/assembly/igniter{ pixel_x = -4; pixel_y = -4 }, @@ -24923,7 +24885,7 @@ "blr" = ( /obj/structure/table, /obj/item/folder/white, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /turf/open/floor/plasteel/whiteblue/side{ dir = 1 }, @@ -24944,7 +24906,7 @@ /area/hallway/primary/aft) "blv" = ( /obj/structure/table, -/obj/item/device/paicard, +/obj/item/paicard, /obj/item/clothing/glasses/science, /turf/open/floor/plasteel/green/side{ dir = 9 @@ -25128,7 +25090,7 @@ /area/science/server) "blP" = ( /obj/effect/landmark/event_spawn, -/obj/item/device/beacon, +/obj/item/beacon, /obj/machinery/light{ dir = 8 }, @@ -25697,7 +25659,7 @@ /turf/open/floor/plasteel, /area/hallway/secondary/entry) "bnq" = ( -/obj/item/device/beacon, +/obj/item/beacon, /obj/machinery/atmospherics/pipe/simple/cyan/hidden{ dir = 4 }, @@ -25914,13 +25876,13 @@ /obj/item/stack/sheet/plasteel{ amount = 10 }, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/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/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/machinery/airalarm{ dir = 8; pixel_x = 23 @@ -26005,7 +25967,7 @@ "boe" = ( /obj/structure/table, /obj/machinery/reagentgrinder, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -28 @@ -26215,7 +26177,7 @@ name = "Medbay RC"; pixel_x = -32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 0; frequency = 1485; @@ -26558,7 +26520,7 @@ /area/medical/genetics) "bpy" = ( /obj/machinery/clonepod, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 0; frequency = 1485; @@ -26873,7 +26835,7 @@ }, /obj/item/storage/belt/utility, /obj/item/reagent_containers/glass/beaker/large, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -27 @@ -26983,8 +26945,8 @@ pixel_y = 3 }, /obj/item/stack/sheet/metal/fifty, -/obj/item/device/assembly/timer, -/obj/item/device/assembly/timer, +/obj/item/assembly/timer, +/obj/item/assembly/timer, /turf/open/floor/plasteel/white, /area/science/explab) "bqv" = ( @@ -27522,7 +27484,7 @@ /area/science/research/lobby) "brw" = ( /obj/structure/closet/wardrobe/robotics_black, -/obj/item/device/radio/headset/headset_sci{ +/obj/item/radio/headset/headset_sci{ pixel_x = -3 }, /turf/open/floor/plasteel/vault{ @@ -27538,19 +27500,19 @@ /turf/open/floor/plasteel, /area/science/robotics/lab) "bry" = ( -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, @@ -27783,6 +27745,7 @@ dir = 4 }, /obj/effect/turf_decal/stripes/line, +/obj/machinery/portable_atmospherics/canister/bz, /turf/open/floor/plasteel, /area/science/xenobiology) "brY" = ( @@ -28039,7 +28002,7 @@ "bsE" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 0; frequency = 1485; @@ -28121,7 +28084,7 @@ /obj/machinery/chem_dispenser{ layer = 2.7 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = 29 @@ -28224,9 +28187,9 @@ empty = 1; name = "First-Aid (empty)" }, -/obj/item/device/healthanalyzer, -/obj/item/device/healthanalyzer, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, +/obj/item/healthanalyzer, +/obj/item/healthanalyzer, /obj/item/stack/cable_coil, /obj/item/stack/cable_coil, /obj/structure/table, @@ -28264,9 +28227,9 @@ /turf/open/floor/plasteel/white, /area/science/robotics/lab) "btd" = ( -/obj/item/device/mmi, -/obj/item/device/mmi, -/obj/item/device/mmi, +/obj/item/mmi, +/obj/item/mmi, +/obj/item/mmi, /obj/structure/table, /turf/open/floor/plasteel/white, /area/science/robotics/lab) @@ -28316,11 +28279,11 @@ /area/science/explab) "btl" = ( /obj/structure/table, -/obj/item/device/electropack, -/obj/item/device/healthanalyzer, -/obj/item/device/assembly/signaler, +/obj/item/electropack, +/obj/item/healthanalyzer, +/obj/item/assembly/signaler, /obj/machinery/light, -/obj/item/device/assembly/voice, +/obj/item/assembly/voice, /obj/machinery/camera{ c_tag = "Experimentation Lab"; dir = 1; @@ -28334,7 +28297,7 @@ pixel_y = 5 }, /obj/item/stack/cable_coil, -/obj/item/device/multitool, +/obj/item/multitool, /obj/item/screwdriver, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/white, @@ -28881,7 +28844,7 @@ /turf/open/floor/plasteel, /area/science/explab) "buB" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = -28 @@ -29279,7 +29242,7 @@ }, /area/hallway/primary/aft) "bvv" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -28; @@ -29981,7 +29944,7 @@ /obj/structure/rack, /obj/item/stack/packageWrap, /obj/item/hand_labeler, -/obj/item/device/radio/headset/headset_med, +/obj/item/radio/headset/headset_med, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/white, /area/medical/chemistry) @@ -30679,8 +30642,8 @@ "byf" = ( /obj/structure/table, /obj/item/storage/box/disks, -/obj/item/device/flashlight/pen, -/obj/item/device/flashlight/pen, +/obj/item/flashlight/pen, +/obj/item/flashlight/pen, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -30948,7 +30911,7 @@ /obj/item/stock_parts/manipulator, /obj/item/stock_parts/scanning_module, /obj/item/stock_parts/scanning_module, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plasteel/whitepurple/side, /area/science/lab) "byI" = ( @@ -32304,7 +32267,7 @@ dir = 8; pixel_x = 23 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; freerange = 1; name = "Station Intercom (Telecomms)"; @@ -32420,7 +32383,7 @@ /turf/open/floor/plasteel/dark, /area/science/mixing) "bBN" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -32518,7 +32481,7 @@ "bBZ" = ( /obj/structure/table, /obj/item/pen, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -27 @@ -32641,7 +32604,7 @@ "bCm" = ( /obj/structure/table/glass, /obj/item/clothing/neck/stethoscope, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /turf/open/floor/plasteel/blue, /area/medical/sleeper) "bCn" = ( @@ -33066,7 +33029,7 @@ /area/maintenance/department/engine) "bDj" = ( /obj/item/trash/candy, -/obj/effect/decal/cleanable/deadcockroach, +/obj/effect/decal/cleanable/insectguts, /obj/machinery/atmospherics/pipe/simple/cyan/hidden, /obj/structure/cable{ icon_state = "1-2" @@ -33830,7 +33793,7 @@ /obj/machinery/computer/mecha{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = -26 @@ -33844,7 +33807,7 @@ }, /area/crew_quarters/heads/hor) "bES" = ( -/obj/item/device/aicard, +/obj/item/aicard, /obj/item/circuitboard/aicore, /obj/machinery/requests_console{ announcementConsole = 1; @@ -33996,19 +33959,19 @@ /turf/open/floor/plasteel/white, /area/science/mixing) "bFi" = ( -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -4; pixel_y = 1 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 8; pixel_y = 9 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = 9; pixel_y = -2 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_y = 2 }, /obj/structure/table/reinforced, @@ -34028,7 +33991,7 @@ /obj/item/screwdriver{ pixel_y = 10 }, -/obj/item/device/analyzer, +/obj/item/analyzer, /turf/open/floor/plasteel/white, /area/science/mixing) "bFl" = ( @@ -34330,7 +34293,7 @@ /turf/open/floor/plasteel/freezer, /area/medical/virology) "bFL" = ( -/obj/effect/decal/cleanable/deadcockroach, +/obj/effect/decal/cleanable/insectguts, /turf/open/floor/plasteel/freezer, /area/medical/virology) "bFM" = ( @@ -34416,7 +34379,7 @@ /area/medical/surgery) "bFV" = ( /obj/structure/table/glass, -/obj/item/device/flashlight/pen, +/obj/item/flashlight/pen, /obj/item/clothing/neck/stethoscope, /obj/item/lipstick/black, /obj/machinery/power/apc{ @@ -34568,18 +34531,18 @@ /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) "bGo" = ( -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_y = 8 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = -8; pixel_y = 5 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = 6; pixel_y = 5 }, -/obj/item/device/assembly/signaler{ +/obj/item/assembly/signaler{ pixel_x = -2; pixel_y = -2 }, @@ -34587,37 +34550,37 @@ /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) "bGp" = ( -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve{ pixel_x = -5 }, -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve{ pixel_x = -5 }, -/obj/item/device/transfer_valve, -/obj/item/device/transfer_valve, -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve, +/obj/item/transfer_valve, +/obj/item/transfer_valve{ pixel_x = 5 }, -/obj/item/device/transfer_valve{ +/obj/item/transfer_valve{ pixel_x = 5 }, /obj/structure/table/reinforced, /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) "bGq" = ( -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 5; pixel_y = 4 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = -4; pixel_y = 2 }, -/obj/item/device/assembly/timer{ +/obj/item/assembly/timer{ pixel_x = 6; pixel_y = -4 }, -/obj/item/device/assembly/timer, +/obj/item/assembly/timer, /obj/structure/table/reinforced, /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) @@ -34834,7 +34797,7 @@ icon_state = "shower"; dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 0; frequency = 1485; @@ -34971,10 +34934,10 @@ }, /area/science/research/lobby) "bHk" = ( -/obj/item/device/gps{ +/obj/item/gps{ gpstag = "RD0" }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, @@ -35228,7 +35191,7 @@ /area/maintenance/department/engine) "bHS" = ( /obj/structure/table, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/effect/decal/cleanable/cobweb{ icon_state = "cobweb2" }, @@ -35268,7 +35231,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 0; frequency = 1485; @@ -35297,7 +35260,7 @@ /area/medical/virology) "bIb" = ( /obj/machinery/atmospherics/pipe/simple/cyan/hidden, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 0; frequency = 1485; @@ -35397,7 +35360,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; freerange = 0; frequency = 1485; @@ -35800,7 +35763,7 @@ /obj/structure/table/glass, /obj/item/book/manual/wiki/infections, /obj/item/hand_labeler, -/obj/item/device/radio/headset/headset_med, +/obj/item/radio/headset/headset_med, /obj/machinery/light{ dir = 8 }, @@ -36377,7 +36340,7 @@ dir = 4 }, /obj/effect/landmark/event_spawn, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/white, /area/medical/medbay/central) "bKA" = ( @@ -36545,7 +36508,7 @@ /obj/machinery/atmospherics/pipe/simple/yellow/visible{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -37322,7 +37285,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; freerange = 1; name = "Station Intercom (Telecomms)"; @@ -37525,7 +37488,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = 27 @@ -38086,7 +38049,7 @@ pixel_x = -5; pixel_y = 3 }, -/obj/item/device/multitool{ +/obj/item/multitool{ layer = 4 }, /turf/open/floor/plasteel/yellow/side, @@ -38095,9 +38058,9 @@ /obj/structure/table, /obj/item/stack/sheet/glass/fifty, /obj/item/storage/belt/utility, -/obj/item/device/t_scanner, -/obj/item/device/t_scanner, -/obj/item/device/t_scanner, +/obj/item/t_scanner, +/obj/item/t_scanner, +/obj/item/t_scanner, /turf/open/floor/plasteel/yellow/side, /area/engine/atmos) "bOX" = ( @@ -38228,7 +38191,7 @@ /area/maintenance/department/engine) "bPq" = ( /obj/item/trash/chips, -/obj/effect/decal/cleanable/deadcockroach, +/obj/effect/decal/cleanable/insectguts, /turf/open/floor/plasteel/dark, /area/maintenance/department/engine) "bPr" = ( @@ -38469,7 +38432,7 @@ /turf/open/floor/plating/asteroid, /area/chapel/asteroid/monastery) "bQe" = ( -/obj/item/device/flashlight/lantern{ +/obj/item/flashlight/lantern{ on = 1 }, /turf/open/floor/plating/asteroid, @@ -38560,16 +38523,16 @@ /area/storage/tech) "bQs" = ( /obj/structure/table, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_x = 1; pixel_y = 5 }, -/obj/item/device/assembly/flash/handheld, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/effect/decal/cleanable/cobweb, /obj/structure/extinguisher_cabinet{ pixel_x = -26 @@ -38578,7 +38541,7 @@ /area/storage/tech) "bQt" = ( /obj/structure/table, -/obj/item/device/aicard, +/obj/item/aicard, /obj/item/aiModule/reset, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/airalarm{ @@ -38601,34 +38564,14 @@ /area/storage/tech) "bQv" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/pandemic{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/circuitboard/computer/rdconsole, -/obj/item/circuitboard/machine/rdserver{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/machine/destructive_analyzer, -/obj/item/circuitboard/computer/aifixer, -/obj/item/circuitboard/computer/teleporter, -/obj/item/circuitboard/machine/circuit_imprinter, -/obj/item/circuitboard/machine/mechfab, /obj/structure/sign/poster/official/random{ pixel_y = 32 }, -/obj/item/circuitboard/machine/smoke_machine, +/obj/effect/spawner/lootdrop/techstorage/engineering, /turf/open/floor/plasteel/darkgreen, /area/storage/tech) "bQw" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/mining, -/obj/item/circuitboard/machine/autolathe{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/computer/arcade/battle, /obj/machinery/light{ dir = 1; light_color = "#cee5d2" @@ -38638,18 +38581,12 @@ dir = 2 }, /obj/item/circuitboard/computer/monastery_shuttle, +/obj/effect/spawner/lootdrop/techstorage/service, /turf/open/floor/plasteel/darkgreen, /area/storage/tech) "bQx" = ( /obj/structure/rack, -/obj/item/circuitboard/machine/telecomms/processor, -/obj/item/circuitboard/machine/telecomms/receiver, -/obj/item/circuitboard/machine/telecomms/server, -/obj/item/circuitboard/machine/telecomms/bus, -/obj/item/circuitboard/machine/telecomms/broadcaster, -/obj/item/circuitboard/computer/message_monitor{ - pixel_y = -5 - }, +/obj/effect/spawner/lootdrop/techstorage/rnd, /turf/open/floor/plasteel/darkgreen, /area/storage/tech) "bQy" = ( @@ -38923,7 +38860,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -39227,42 +39164,17 @@ /area/storage/tech) "bRO" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/cloning, -/obj/item/circuitboard/computer/med_data{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/circuitboard/machine/clonescanner, -/obj/item/circuitboard/machine/clonepod, -/obj/item/circuitboard/computer/scan_consolenew, +/obj/effect/spawner/lootdrop/techstorage/medical, /turf/open/floor/plasteel/darkgreen, /area/storage/tech) "bRP" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/secure_data{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/circuitboard/computer/security{ - pixel_x = 1; - pixel_y = -1 - }, +/obj/effect/spawner/lootdrop/techstorage/tcomms, /turf/open/floor/plasteel/darkgreen, /area/storage/tech) "bRQ" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/powermonitor{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/circuitboard/computer/stationalert{ - pixel_x = 1; - pixel_y = -1 - }, -/obj/item/circuitboard/computer/atmos_alert{ - pixel_x = 3; - pixel_y = -3 - }, +/obj/effect/spawner/lootdrop/techstorage/security, /turf/open/floor/plasteel/darkgreen, /area/storage/tech) "bRR" = ( @@ -39566,7 +39478,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/dark, /area/storage/tech) "bSG" = ( @@ -39681,7 +39593,7 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bSS" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel, /area/engine/atmos) "bST" = ( @@ -39935,7 +39847,7 @@ pixel_y = 4 }, /obj/item/clothing/gloves/color/yellow, -/obj/item/device/t_scanner, +/obj/item/t_scanner, /turf/open/floor/plasteel/darkgreen, /area/storage/tech) "bTA" = ( @@ -39944,7 +39856,7 @@ pixel_x = 2; pixel_y = 4 }, -/obj/item/device/multitool, +/obj/item/multitool, /obj/machinery/requests_console{ department = "Tech storage"; pixel_y = -32 @@ -39953,25 +39865,6 @@ /turf/open/floor/plasteel/darkgreen, /area/storage/tech) "bTB" = ( -/obj/structure/closet/crate{ - name = "solar pack crate" - }, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/solar_assembly, -/obj/item/circuitboard/computer/solar_control, -/obj/item/electronics/tracker, -/obj/item/paper/guides/jobs/engi/solars, /obj/machinery/power/apc{ dir = 2; name = "Tech Storage APC"; @@ -39979,6 +39872,7 @@ pixel_y = -24 }, /obj/structure/cable, +/obj/structure/closet/crate/solarpanel_small, /turf/open/floor/plasteel/darkgreen, /area/storage/tech) "bTC" = ( @@ -40067,7 +39961,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = 30; @@ -40262,7 +40156,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 24 @@ -40773,7 +40667,7 @@ /obj/item/wallframe/camera, /obj/item/wallframe/camera, /obj/item/wallframe/camera, -/obj/item/device/assault_pod/mining, +/obj/item/assault_pod/mining, /turf/open/floor/plating{ icon_state = "platingdmg3" }, @@ -41190,46 +41084,21 @@ /area/crew_quarters/heads/chief) "bWs" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/robotics{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/circuitboard/computer/mecha_control{ - pixel_x = 1; - pixel_y = -1 - }, +/obj/effect/spawner/lootdrop/techstorage/AI, /turf/open/floor/plasteel/darkred, /area/storage/tech) "bWt" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/crew{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/circuitboard/computer/card{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/circuitboard/computer/communications{ - pixel_x = 5; - pixel_y = -5 - }, /obj/machinery/camera{ c_tag = "Secure Tech Storage"; dir = 1 }, +/obj/effect/spawner/lootdrop/techstorage/RnD_secure, /turf/open/floor/plasteel/darkred, /area/storage/tech) "bWu" = ( /obj/structure/rack, -/obj/item/circuitboard/computer/borgupload{ - pixel_x = -1; - pixel_y = 1 - }, -/obj/item/circuitboard/computer/aiupload{ - pixel_x = 2; - pixel_y = -2 - }, +/obj/effect/spawner/lootdrop/techstorage/command, /turf/open/floor/plasteel/darkred, /area/storage/tech) "bWv" = ( @@ -41500,7 +41369,7 @@ /turf/open/floor/plating, /area/maintenance/department/engine) "bXc" = ( -/obj/item/device/flashlight, +/obj/item/flashlight, /turf/open/floor/plating, /area/maintenance/department/engine) "bXd" = ( @@ -42282,7 +42151,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -43034,11 +42903,11 @@ /area/chapel/main/monastery) "caV" = ( /obj/machinery/holopad, -/obj/item/device/flashlight/lantern, +/obj/item/flashlight/lantern, /turf/open/floor/plasteel/chapel, /area/chapel/main/monastery) "caW" = ( -/obj/item/device/flashlight/lantern, +/obj/item/flashlight/lantern, /turf/open/floor/plasteel/chapel{ dir = 8 }, @@ -43056,7 +42925,7 @@ "cba" = ( /obj/structure/table, /obj/item/storage/fancy/cigarettes/cigpack_robustgold, -/obj/effect/decal/cleanable/deadcockroach, +/obj/effect/decal/cleanable/insectguts, /turf/open/floor/plating, /area/maintenance/department/engine) "cbb" = ( @@ -43070,7 +42939,7 @@ /obj/machinery/light{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_x = -27 @@ -43108,7 +42977,7 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/table/glass, -/obj/item/device/flashlight, +/obj/item/flashlight, /turf/open/floor/plasteel, /area/engine/engineering) "cbg" = ( @@ -43580,7 +43449,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) "ccL" = ( -/obj/item/device/flashlight/lantern{ +/obj/item/flashlight/lantern{ on = 1 }, /turf/open/floor/plasteel/asteroid{ @@ -43618,7 +43487,7 @@ /obj/item/stack/sheet/mineral/plasma{ amount = 30 }, -/obj/item/device/gps{ +/obj/item/gps{ gpstag = "ENG0" }, /turf/open/floor/plating, @@ -44771,7 +44640,7 @@ /obj/machinery/light/small{ dir = 4 }, -/obj/item/device/flashlight/lantern, +/obj/item/flashlight/lantern, /turf/open/floor/plasteel/grimy, /area/chapel/main/monastery) "cgO" = ( @@ -45015,7 +44884,7 @@ dir = 1 }, /obj/effect/decal/cleanable/cobweb, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -45053,7 +44922,7 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/item/device/instrument/violin, +/obj/item/instrument/violin, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -45556,7 +45425,7 @@ /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-22" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -45843,7 +45712,7 @@ /turf/closed/mineral/random/low_chance, /area/asteroid/nearstation/bomb_site) "ckL" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plating/airless, /area/asteroid/nearstation/bomb_site) "ckM" = ( @@ -45960,7 +45829,7 @@ /turf/open/floor/plasteel/dark, /area/library) "clj" = ( -/obj/item/device/flashlight/lantern{ +/obj/item/flashlight/lantern{ on = 1 }, /turf/open/floor/plating/asteroid/airless, @@ -46119,7 +45988,7 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 }, -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel, /area/tcommsat/computer) "clS" = ( @@ -46215,7 +46084,7 @@ "cmf" = ( /obj/structure/rack, /obj/item/storage/toolbox/mechanical, -/obj/item/device/radio, +/obj/item/radio, /obj/machinery/airalarm{ dir = 4; pixel_x = -22 @@ -46253,7 +46122,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = 26 }, @@ -46749,7 +46618,7 @@ c_tag = "Brig Equipment Room"; dir = 2 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = 29 }, @@ -46981,7 +46850,7 @@ /turf/open/floor/plasteel/neutral/corner, /area/hallway/secondary/exit/departure_lounge) "coT" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) "coV" = ( @@ -47135,7 +47004,7 @@ /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) "cpt" = ( -/obj/item/device/beacon, +/obj/item/beacon, /turf/open/floor/plasteel/vault{ dir = 5 }, @@ -47801,7 +47670,7 @@ /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) "csn" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 0; name = "Station Intercom (General)"; pixel_y = 26 @@ -48977,7 +48846,7 @@ /turf/open/space, /area/space/nearstation) "cwO" = ( -/obj/item/device/flashlight/lantern, +/obj/item/flashlight/lantern, /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) "cwR" = ( @@ -49281,7 +49150,7 @@ /area/library) "czo" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_x = 1; pixel_y = 5 }, @@ -49337,7 +49206,7 @@ /area/library) "czC" = ( /obj/structure/table/wood/fancy, -/obj/item/device/flashlight/lantern{ +/obj/item/flashlight/lantern{ on = 1; pixel_y = 8 }, @@ -49381,7 +49250,7 @@ /area/library) "czO" = ( /obj/structure/table/wood, -/obj/item/device/instrument/saxophone, +/obj/item/instrument/saxophone, /turf/open/floor/plasteel/dark, /area/library) "czP" = ( @@ -49476,7 +49345,7 @@ /area/library) "cAt" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lantern{ +/obj/item/flashlight/lantern{ pixel_y = 8 }, /turf/open/floor/plasteel/vault{ @@ -49493,7 +49362,7 @@ /area/library) "cAv" = ( /obj/structure/table/wood, -/obj/item/device/camera, +/obj/item/camera, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/vault{ dir = 5 @@ -49942,8 +49811,8 @@ /area/quartermaster/office) "ejp" = ( /obj/structure/table/reinforced, -/obj/item/device/integrated_circuit_printer, -/obj/item/device/integrated_electronics/wirer, +/obj/item/integrated_circuit_printer, +/obj/item/integrated_electronics/wirer, /turf/open/floor/plasteel/whitepurple/side{ dir = 1 }, @@ -50118,7 +49987,7 @@ /obj/machinery/light{ dir = 1 }, -/obj/item/device/integrated_electronics/debugger, +/obj/item/integrated_electronics/debugger, /turf/open/floor/plasteel/whitepurple/side{ dir = 1 }, @@ -50425,8 +50294,8 @@ pixel_x = 10 }, /obj/structure/rack, -/obj/item/device/multitool, -/obj/item/device/multitool, +/obj/item/multitool, +/obj/item/multitool, /obj/item/screwdriver, /obj/item/screwdriver, /turf/open/floor/plasteel/white, @@ -50511,7 +50380,7 @@ /area/engine/break_room) "ptq" = ( /obj/structure/table/reinforced, -/obj/item/device/integrated_electronics/analyzer, +/obj/item/integrated_electronics/analyzer, /turf/open/floor/plasteel/white, /area/science/circuit) "pRP" = ( @@ -50564,7 +50433,7 @@ pixel_x = 20; pixel_y = -6 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27; @@ -50737,7 +50606,7 @@ dir = 4 }, /obj/structure/table/reinforced, -/obj/item/device/integrated_electronics/analyzer, +/obj/item/integrated_electronics/analyzer, /turf/open/floor/plasteel/white, /area/science/circuit) "ukn" = ( @@ -50804,8 +50673,8 @@ network = list("rd"); pixel_y = 32 }, -/obj/item/device/integrated_circuit_printer, -/obj/item/device/integrated_electronics/debugger, +/obj/item/integrated_circuit_printer, +/obj/item/integrated_electronics/debugger, /turf/open/floor/plasteel/whitepurple/side{ dir = 1 }, @@ -50822,7 +50691,7 @@ /area/crew_quarters/fitness/recreation) "vJd" = ( /obj/structure/table/reinforced, -/obj/item/device/integrated_electronics/wirer, +/obj/item/integrated_electronics/wirer, /turf/open/floor/plasteel/white, /area/science/circuit) "vMX" = ( diff --git a/_maps/map_files/debug/runtimestation.dmm b/_maps/map_files/debug/runtimestation.dmm index 88b702e401..3629dd5f05 100644 --- a/_maps/map_files/debug/runtimestation.dmm +++ b/_maps/map_files/debug/runtimestation.dmm @@ -25,6 +25,9 @@ /area/engine/atmos) "ai" = ( /obj/machinery/power/rtg/advanced, +/obj/structure/cable{ + icon_state = "0-2" + }, /turf/open/floor/plating/airless, /area/space/nearstation) "aj" = ( @@ -73,7 +76,7 @@ /obj/structure/cable{ icon_state = "0-4" }, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/engineering) "aq" = ( /obj/machinery/computer/monitor, @@ -84,11 +87,11 @@ /obj/machinery/light{ dir = 1 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/engineering) "ar" = ( /obj/structure/closet/secure_closet/engineering_welding, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/engineering) "as" = ( /obj/machinery/power/smes{ @@ -182,12 +185,6 @@ /obj/machinery/door/airlock/external/glass, /turf/open/floor/plating, /area/engine/engineering) -"aD" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/engine/engineering) "aE" = ( /obj/structure/cable{ icon_state = "1-2" @@ -195,10 +192,16 @@ /obj/structure/cable{ icon_state = "2-8" }, -/turf/open/floor/plating, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel, /area/engine/engineering) "aF" = ( -/turf/open/floor/plating, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, /area/engine/engineering) "aG" = ( /obj/machinery/power/terminal{ @@ -287,12 +290,12 @@ /area/space/nearstation) "aS" = ( /obj/structure/table, -/obj/item/device/flashlight{ +/obj/item/flashlight{ pixel_y = 5 }, /obj/item/storage/toolbox/syndicate, /obj/item/stock_parts/cell/infinite, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/engineering) "aT" = ( /obj/structure/cable{ @@ -301,7 +304,8 @@ /obj/structure/cable{ icon_state = "2-4" }, -/turf/open/floor/plating, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, /area/engine/engineering) "aU" = ( /obj/machinery/door/airlock/engineering/glass{ @@ -382,17 +386,18 @@ /obj/structure/table, /obj/item/weldingtool/experimental, /obj/item/inducer, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/engineering) "be" = ( /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plating, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, /area/engine/engineering) "bf" = ( /obj/machinery/suit_storage_unit/captain, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/engineering) "bg" = ( /obj/effect/turf_decal/stripes/line{ @@ -422,7 +427,7 @@ }, /obj/machinery/light, /obj/structure/table, -/obj/item/device/analyzer, +/obj/item/analyzer, /obj/item/wrench, /turf/open/floor/plating, /area/engine/atmos) @@ -453,16 +458,15 @@ /turf/open/floor/plating, /area/engine/atmos) "bo" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/structure/table, /obj/item/screwdriver/power, /obj/item/wirecutters/power, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/engineering) "bp" = ( /obj/machinery/light, /obj/structure/tank_dispenser, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/engineering) "bq" = ( /obj/effect/turf_decal/stripes/line{ @@ -496,15 +500,12 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/bridge) -"bw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall/r_wall, -/area/engine/engineering) "bx" = ( /obj/machinery/door/airlock, /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/engine/engineering) "by" = ( @@ -534,20 +535,14 @@ /obj/machinery/autolathe/hacked, /turf/open/floor/plasteel, /area/science) -"bC" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/science) "bD" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, -/obj/machinery/robotic_fabricator, /obj/machinery/light{ dir = 1 }, +/obj/machinery/mecha_part_fabricator, /turf/open/floor/plasteel, /area/science) "bE" = ( @@ -634,11 +629,7 @@ /turf/open/floor/plasteel/dark, /area/medical/chemistry) "bS" = ( -/obj/machinery/chem_dispenser, -/turf/open/floor/plasteel/dark, -/area/medical/chemistry) -"bT" = ( -/obj/machinery/chem_dispenser, +/obj/machinery/chem_dispenser/fullupgrade, /turf/open/floor/plasteel/dark, /area/medical/chemistry) "bU" = ( @@ -751,16 +742,6 @@ /obj/machinery/door/airlock, /turf/open/floor/plating, /area/bridge) -"ci" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel, -/area/medical/chemistry) "cj" = ( /obj/structure/cable{ icon_state = "4-8" @@ -801,8 +782,10 @@ /area/science) "cp" = ( /obj/machinery/light, -/obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/structure/closet/secure_closet/engineering_chief, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, /turf/open/floor/plasteel/blue/side{ dir = 10 }, @@ -824,7 +807,6 @@ /turf/closed/wall/r_wall, /area/bridge) "ct" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/light{ dir = 8 }, @@ -898,8 +880,10 @@ /turf/closed/wall/r_wall, /area/medical/chemistry) "cF" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, /obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plasteel, /area/medical/chemistry) "cG" = ( @@ -1013,12 +997,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/storage/primary) -"db" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/turf/open/floor/plating, -/area/storage/primary) "dc" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -1320,11 +1298,22 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/science) +"gM" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/storage/primary) "gY" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, /turf/open/floor/plasteel, /area/science) "hD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/power/apc{ dir = 1; pixel_y = 25 @@ -1405,6 +1394,11 @@ }, /turf/open/floor/plasteel, /area/medical/chemistry) +"sE" = ( +/obj/machinery/power/rtg/advanced, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/space/nearstation) "vv" = ( /obj/machinery/door/airlock, /turf/open/floor/plating, @@ -1440,6 +1434,22 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/medical/chemistry) +"yp" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/medical/chemistry) +"AP" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/science) "BB" = ( /obj/item/storage/backpack/duffelbag/syndie/surgery, /obj/structure/table, @@ -1460,19 +1470,32 @@ /turf/open/floor/plasteel, /area/medical/chemistry) "Ct" = ( -/obj/item/disk/tech_disk/debug, +/obj/machinery/rnd/production/circuit_imprinter/department, /turf/open/floor/plasteel, /area/science) +"CK" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/plasteel, +/area/medical/chemistry) "CV" = ( /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/medical/chemistry) +"EI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel/blue/side, +/area/bridge) "If" = ( /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/rnd/destructive_analyzer, /turf/open/floor/plasteel, /area/science) "In" = ( @@ -1489,8 +1512,12 @@ /obj/machinery/door/airlock, /turf/open/floor/plating, /area/hallway/primary/central) +"Ly" = ( +/obj/machinery/chem_dispenser/chem_synthesizer, +/turf/open/floor/plasteel/dark, +/area/medical/chemistry) "NZ" = ( -/obj/machinery/rnd/production/protolathe, +/obj/machinery/rnd/production/protolathe/department, /turf/open/floor/plasteel, /area/science) "Qt" = ( @@ -1500,6 +1527,20 @@ /obj/machinery/door/airlock/external/glass, /turf/open/floor/plating, /area/medical/medbay) +"RC" = ( +/obj/machinery/power/rtg/advanced, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) +"RY" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/item/disk/tech_disk/debug, +/turf/open/floor/plasteel, +/area/science) "Ut" = ( /obj/structure/closet/secure_closet/medical3, /turf/open/floor/plasteel, @@ -1508,6 +1549,12 @@ /obj/machinery/light, /turf/open/floor/plasteel, /area/hallway/primary/central) +"Vy" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/engine/engineering) "WT" = ( /obj/structure/cable{ icon_state = "4-8" @@ -2301,9 +2348,9 @@ aw ba bk bt -bC -cb fT +cb +AP pA kQ bN @@ -2409,7 +2456,7 @@ aO bc bm ah -NZ +bF cc Ct gd @@ -2463,8 +2510,8 @@ aP aP bn ah -bF -cc +NZ +RY co bA wS @@ -2620,14 +2667,14 @@ ae ab ai an -ai +RC aQ -ai +sE ab bv bI cf -cq +EI bv dU bE @@ -2676,7 +2723,7 @@ ai ao aA aR -ai +sE ab bv BG @@ -2890,7 +2937,7 @@ ae ac ac aj -aD +Vy aj ac ac @@ -2998,20 +3045,20 @@ ad af aj ap -aD +Vy aS bd bo -bw +aj hD -ci +cj ct -wT +Ce cF -bN -bN -cU -db +bE +bE +cS +dl dl dl dl @@ -3058,14 +3105,14 @@ be be bx CV -cj -Ce -Ce -oV -bE -bE -cS -dc +yp +wT +wT +CK +bN +bN +cU +gM dc dA dl @@ -3107,7 +3154,7 @@ af aj ar aF -aD +Vy bf bp aj @@ -3327,7 +3374,7 @@ aX aI aI ak -bT +Ly pQ Xg Ce diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 4804bc4534..499a89a0cd 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -82,7 +82,7 @@ /area/holodeck/rec_center/lounge) "ao" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ layer = 3.3 }, /turf/open/floor/holofloor{ @@ -312,7 +312,7 @@ /area/holodeck/rec_center/court) "aY" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ +/obj/item/flashlight/lamp/green{ pixel_y = 4 }, /turf/open/floor/holofloor/carpet, @@ -341,7 +341,7 @@ /area/holodeck/rec_center/bunker) "bd" = ( /obj/structure/table/wood, -/obj/item/device/instrument/violin, +/obj/item/instrument/violin, /turf/open/floor/holofloor/carpet, /area/holodeck/rec_center/lounge) "be" = ( @@ -754,7 +754,7 @@ /area/holodeck/rec_center/medical) "ct" = ( /obj/structure/table/glass, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /turf/open/floor/holofloor{ icon_state = "white" }, @@ -2526,6 +2526,10 @@ /obj/machinery/capture_the_flag/red, /turf/open/floor/circuit/green/anim, /area/ctf) +"hH" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/wood, +/area/centcom/holding) "hI" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -2751,15 +2755,15 @@ /area/centcom/control) "iv" = ( /obj/structure/table/reinforced, -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = 5; pixel_y = 5 }, -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = -5; pixel_y = 5 }, -/obj/item/device/radio, +/obj/item/radio, /obj/machinery/airalarm{ pixel_y = 23 }, @@ -2795,7 +2799,7 @@ "iy" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs/cable/zipties, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/centcom/control) @@ -3324,6 +3328,10 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/centcom/supply) +"jO" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/wood, +/area/centcom/holding) "jP" = ( /obj/machinery/conveyor_switch/oneway{ dir = 8; @@ -3429,7 +3437,7 @@ /area/centcom/control) "kc" = ( /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/structure/table/wood, /turf/open/floor/plasteel/vault{ dir = 8 @@ -3438,7 +3446,7 @@ "kd" = ( /obj/item/wrench, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/structure/table/wood, /turf/open/floor/plasteel/vault{ dir = 8 @@ -3821,7 +3829,7 @@ "lb" = ( /obj/structure/table/wood, /obj/machinery/door/window, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk smack through this."; syndie = 1 }, @@ -3839,7 +3847,7 @@ /area/centcom/control) "ld" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk smack through this."; syndie = 1 }, @@ -3857,7 +3865,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/item/device/megaphone, +/obj/item/megaphone, /obj/structure/window/reinforced, /turf/open/floor/plasteel/grimy, /area/centcom/control) @@ -3944,7 +3952,7 @@ /obj/structure/table/reinforced, /obj/item/wrench, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/effect/turf_decal/stripes/line{ dir = 4 }, @@ -3953,7 +3961,7 @@ "lv" = ( /obj/structure/table/reinforced, /obj/item/gun/ballistic/automatic/wt550, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -4137,7 +4145,7 @@ /obj/structure/chair{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk smack through this."; pixel_x = -32; syndie = 1 @@ -4178,7 +4186,6 @@ /area/syndicate_mothership) "mb" = ( /obj/structure/table/reinforced, -/obj/machinery/computer/stockexchange, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -4277,7 +4284,7 @@ /area/centcom/control) "mn" = ( /obj/structure/table/wood, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk smack through this."; syndie = 1 }, @@ -4526,7 +4533,7 @@ "mX" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs/cable/zipties, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -4672,7 +4679,7 @@ "nt" = ( /obj/structure/table/wood, /obj/item/storage/photo_album, -/obj/item/device/camera, +/obj/item/camera, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -4972,9 +4979,9 @@ /area/centcom/ferry) "of" = ( /obj/structure/table/wood, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/item/storage/box/handcuffs, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, /obj/structure/noticeboard{ pixel_y = 28 }, @@ -4985,7 +4992,7 @@ "og" = ( /obj/structure/table/wood, /obj/item/storage/photo_album, -/obj/item/device/camera, +/obj/item/camera, /obj/structure/reagent_dispensers/peppertank{ pixel_y = 32 }, @@ -5026,7 +5033,7 @@ /area/centcom/ferry) "ol" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/machinery/requests_console{ announcementConsole = 1; department = "Captain's Desk"; @@ -5254,7 +5261,6 @@ /area/centcom/ferry) "oM" = ( /obj/structure/table/reinforced, -/obj/machinery/computer/stockexchange, /obj/effect/turf_decal/stripes/line{ dir = 5 }, @@ -5320,6 +5326,20 @@ dir = 8 }, /area/tdome/tdomeobserve) +"oU" = ( +/obj/structure/closet/secure_closet/bar{ + locked = 0; + req_access_txt = "25" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"oV" = ( +/obj/structure/reagent_dispensers/beerkeg, +/turf/open/floor/wood, +/area/centcom/holding) "oW" = ( /obj/structure/flora/bush, /obj/effect/light_emitter{ @@ -5564,6 +5584,70 @@ dir = 8 }, /area/centcom/control) +"px" = ( +/obj/machinery/chem_dispenser/drinks/beer, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/centcom/holding) +"py" = ( +/obj/machinery/chem_dispenser/drinks, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/centcom/holding) +"pz" = ( +/obj/item/storage/box/donkpockets{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/centcom/holding) +"pA" = ( +/obj/machinery/vending/cola/random, +/turf/open/floor/wood, +/area/centcom/holding) +"pB" = ( +/obj/structure/rack, +/obj/item/toy/sword, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/coin/gold{ + pixel_x = 8; + pixel_y = -3 + }, +/obj/item/camera, +/turf/open/floor/wood, +/area/centcom/holding) +"pC" = ( +/obj/structure/rack, +/obj/item/toy/gun, +/obj/item/coin/gold{ + pixel_w = -9; + pixel_y = 6 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"pD" = ( +/obj/machinery/computer/arcade/battle, +/turf/open/floor/wood, +/area/centcom/holding) +"pE" = ( +/obj/machinery/computer/arcade/orion_trail, +/turf/open/floor/wood, +/area/centcom/holding) "pF" = ( /obj/machinery/door/airlock/centcom{ name = "Auxillary Dock"; @@ -5663,7 +5747,7 @@ /obj/item/cartridge/quartermaster{ pixel_y = 6 }, -/obj/item/device/gps/mining, +/obj/item/gps/mining, /obj/effect/turf_decal/stripes/line{ dir = 6 }, @@ -5688,6 +5772,25 @@ dir = 5 }, /area/centcom/ferry) +"pS" = ( +/obj/machinery/computer/slot_machine, +/turf/open/floor/wood, +/area/centcom/holding) +"pT" = ( +/obj/machinery/vending/snack/random, +/turf/open/floor/wood, +/area/centcom/holding) +"pU" = ( +/turf/open/floor/wood, +/area/centcom/holding) +"pV" = ( +/obj/item/clothing/head/that, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/centcom/holding) +"pW" = ( +/turf/open/floor/carpet/black, +/area/centcom/holding) "pX" = ( /obj/item/storage/crayons, /obj/structure/table, @@ -5720,7 +5823,7 @@ /obj/item/folder/red, /obj/item/book/manual/wiki/security_space_law, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /obj/machinery/airalarm{ dir = 1; pixel_y = -22 @@ -5789,7 +5892,7 @@ /area/centcom/ferry) "qj" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/plasteel/vault, /area/centcom/ferry) "qk" = ( @@ -5953,6 +6056,30 @@ "qE" = ( /turf/closed/indestructible/riveted/uranium, /area/wizard_station) +"qF" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/turf/open/floor/carpet/black, +/area/centcom/holding) +"qG" = ( +/obj/structure/table/wood, +/obj/item/storage/box/drinkingglasses, +/obj/item/storage/box/drinkingglasses{ + pixel_x = 2; + pixel_y = 4 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"qH" = ( +/obj/item/reagent_containers/food/drinks/shaker, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/centcom/holding) +"qI" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/centcom/holding) "qJ" = ( /obj/machinery/computer/shuttle/syndicate/recall, /turf/open/floor/plasteel/bar{ @@ -6078,6 +6205,16 @@ /obj/machinery/computer/shuttle, /turf/open/floor/engine/cult, /area/wizard_station) +"rb" = ( +/obj/item/lighter, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/centcom/holding) +"rc" = ( +/obj/item/reagent_containers/food/drinks/soda_cans/cola, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/centcom/holding) "rd" = ( /obj/structure/flora/grass/brown, /obj/effect/light_emitter{ @@ -6137,7 +6274,7 @@ "rk" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -6148,7 +6285,7 @@ }, /obj/structure/table/reinforced, /obj/item/clipboard, -/obj/item/device/radio/headset/headset_cent, +/obj/item/radio/headset/headset_cent, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -6246,7 +6383,7 @@ /turf/open/floor/wood, /area/centcom/ferry) "rw" = ( -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/structure/table/reinforced, /turf/open/floor/plasteel/vault{ dir = 8 @@ -6440,7 +6577,7 @@ /obj/structure/table/reinforced, /obj/item/wrench, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -6504,6 +6641,48 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) +"rY" = ( +/obj/item/dice/d20, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/centcom/holding) +"rZ" = ( +/obj/structure/rack, +/obj/item/clothing/head/that, +/obj/item/clothing/under/suit_jacket, +/obj/item/clothing/accessory/waistcoat, +/turf/open/floor/wood, +/area/centcom/holding) +"sa" = ( +/obj/structure/rack, +/obj/item/storage/crayons, +/obj/item/gun/ballistic/automatic/toy/pistol, +/obj/item/ammo_box/foambox, +/turf/open/floor/wood, +/area/centcom/holding) +"sb" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"sc" = ( +/obj/structure/rack, +/obj/item/storage/crayons, +/obj/item/gun/ballistic/shotgun/toy/crossbow, +/turf/open/floor/wood, +/area/centcom/holding) +"sd" = ( +/obj/structure/rack, +/obj/item/clothing/shoes/laceup, +/obj/item/clothing/under/suit_jacket/female{ + desc = "A black trouser suit for women. Very formal."; + name = "black suit"; + pixel_x = 3; + pixel_y = 1 + }, +/turf/open/floor/wood, +/area/centcom/holding) "se" = ( /obj/machinery/light{ dir = 8 @@ -6514,7 +6693,7 @@ /area/syndicate_mothership/control) "sf" = ( /obj/structure/table/wood, -/obj/item/device/paicard, +/obj/item/paicard, /turf/open/floor/plasteel/bar{ dir = 2 }, @@ -6671,7 +6850,7 @@ "sA" = ( /obj/item/clipboard, /obj/structure/table/reinforced, -/obj/item/device/detective_scanner, +/obj/item/detective_scanner, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -6905,6 +7084,34 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) +"sY" = ( +/mob/living/simple_animal/bot/medbot, +/turf/open/floor/wood, +/area/centcom/holding) +"sZ" = ( +/obj/machinery/sleeper{ + dir = 8 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"ta" = ( +/obj/machinery/light, +/turf/open/floor/wood, +/area/centcom/holding) +"tb" = ( +/obj/machinery/vending/clothing, +/turf/open/floor/wood, +/area/centcom/holding) +"tc" = ( +/obj/structure/closet/wardrobe/mixed, +/turf/open/floor/wood, +/area/centcom/holding) +"td" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/costume, +/obj/effect/spawner/lootdrop/costume, +/turf/open/floor/wood, +/area/centcom/holding) "te" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/snacks/pizzaslice/mushroom, @@ -6945,6 +7152,40 @@ }, /turf/open/floor/plating/airless, /area/syndicate_mothership/control) +"tj" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/costume, +/obj/effect/spawner/lootdrop/costume, +/obj/machinery/light, +/obj/machinery/button/door{ + id = "Ninjaholdingsuicide"; + name = "SUICIDE CHAMBER LOCK"; + normaldoorcontrol = 1; + pixel_x = 4; + pixel_y = -24; + specialfunctions = 4 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"tk" = ( +/obj/machinery/door/airlock/wood/glass{ + name = "Private Rooms" + }, +/turf/open/floor/wood, +/area/centcom/holding) +"tl" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + id_tag = "Ninjaholdingsuicide"; + locked = 1; + name = "SUICIDE CHAMBER" + }, +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/centcom/holding) +"tm" = ( +/turf/open/floor/carpet, +/area/centcom/holding) "tn" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -7034,7 +7275,7 @@ /obj/structure/table/reinforced, /obj/item/folder/red, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -7133,7 +7374,7 @@ /area/centcom/ferry) "tH" = ( /obj/item/gun/energy/pulse/carbine/loyalpin, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, /obj/structure/table/reinforced, /obj/machinery/airalarm{ dir = 1; @@ -7245,6 +7486,10 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/centcom/evac) +"tW" = ( +/obj/structure/table/wood/fancy/black, +/turf/open/floor/carpet, +/area/centcom/holding) "tX" = ( /obj/machinery/door/airlock{ icon = 'icons/obj/doors/airlocks/station/uranium.dmi'; @@ -7252,6 +7497,40 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) +"tY" = ( +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/centcom/holding) +"tZ" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"ua" = ( +/obj/structure/plasticflaps, +/turf/open/floor/wood{ + icon_state = "wood-broken4" + }, +/area/centcom/holding) +"ub" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "Proom1"; + name = "Room 1" + }, +/turf/open/floor/wood, +/area/centcom/holding) +"uc" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/chair/comfy/black{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/centcom/holding) "ud" = ( /obj/machinery/door/poddoor/shutters{ id = "nukeop_ready"; @@ -7265,6 +7544,25 @@ }, /turf/open/floor/plating/airless, /area/syndicate_mothership/control) +"uf" = ( +/turf/open/lava, +/area/centcom/holding) +"ug" = ( +/obj/machinery/button/door{ + id = "Proom1"; + name = "Door Lock"; + normaldoorcontrol = 1; + pixel_x = -24; + pixel_y = 4; + specialfunctions = 4 + }, +/obj/structure/bed, +/obj/item/bedsheet/random, +/turf/open/floor/carpet, +/area/centcom/holding) +"uh" = ( +/turf/open/chasm/lavaland, +/area/centcom/holding) "ui" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -7453,7 +7751,7 @@ /area/wizard_station) "uD" = ( /obj/structure/table/wood/fancy, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ desc = "Talk smack through this."; syndie = 1 }, @@ -7466,12 +7764,37 @@ /obj/structure/chair/wood/wings, /turf/open/floor/carpet, /area/wizard_station) +"uG" = ( +/obj/structure/chair/sofa/left, +/turf/open/floor/carpet, +/area/centcom/holding) +"uH" = ( +/obj/structure/chair/sofa/corner{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/centcom/holding) +"uI" = ( +/obj/structure/chair/sofa, +/turf/open/floor/carpet, +/area/centcom/holding) "uJ" = ( /obj/machinery/door/airlock/external{ req_access_txt = "150" }, /turf/open/floor/plating, /area/syndicate_mothership/control) +"uK" = ( +/obj/machinery/button/door{ + id = "Proom2"; + name = "Door Lock"; + normaldoorcontrol = 1; + pixel_x = 24; + pixel_y = 4; + specialfunctions = 4 + }, +/turf/open/floor/carpet, +/area/centcom/holding) "uL" = ( /obj/machinery/button/door{ id = "nukeop_ready"; @@ -7490,6 +7813,10 @@ }, /turf/open/floor/mineral/plastitanium, /area/syndicate_mothership/control) +"uN" = ( +/obj/structure/table/wood/poker, +/turf/open/floor/carpet, +/area/centcom/holding) "uO" = ( /obj/machinery/door/airlock/centcom{ name = "Shuttle Control Office"; @@ -7695,6 +8022,45 @@ }, /turf/open/floor/carpet, /area/wizard_station) +"vo" = ( +/obj/structure/chair/sofa{ + icon_state = "sofamiddle"; + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/centcom/holding) +"vp" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood, +/area/centcom/holding) +"vq" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "Proom2"; + name = "Room 2" + }, +/turf/open/floor/wood, +/area/centcom/holding) +"vr" = ( +/obj/structure/chair/sofa/corner{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/centcom/holding) +"vs" = ( +/obj/structure/chair/sofa/left{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/centcom/holding) +"vt" = ( +/obj/machinery/vending/games, +/turf/open/floor/carpet, +/area/centcom/holding) "vu" = ( /obj/item/storage/box/drinkingglasses, /obj/item/reagent_containers/food/drinks/bottle/rum, @@ -7707,7 +8073,7 @@ /area/syndicate_mothership/control) "vw" = ( /obj/structure/table/wood, -/obj/item/device/syndicatedetonator{ +/obj/item/syndicatedetonator{ desc = "This gaudy button can be used to instantly detonate syndicate bombs that have been activated on the station. It is also fun to press." }, /turf/open/floor/wood, @@ -7717,6 +8083,19 @@ /obj/item/toy/nuke, /turf/open/floor/wood, /area/syndicate_mothership/control) +"vy" = ( +/obj/structure/chair/sofa{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/centcom/holding) +"vz" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "Proom3"; + name = "Room 3" + }, +/turf/open/floor/wood, +/area/centcom/holding) "vA" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/directions/engineering{ @@ -7844,7 +8223,7 @@ }, /area/centcom/control) "vL" = ( -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /obj/structure/table/reinforced, /turf/open/floor/plasteel/vault{ dir = 8 @@ -7984,6 +8363,68 @@ }, /turf/open/floor/carpet, /area/wizard_station) +"we" = ( +/obj/machinery/button/door{ + id = "Proom3"; + name = "Door Lock"; + normaldoorcontrol = 1; + pixel_x = -24; + pixel_y = 4; + specialfunctions = 4 + }, +/obj/structure/bed, +/obj/item/bedsheet/random, +/turf/open/floor/carpet, +/area/centcom/holding) +"wf" = ( +/obj/machinery/button/door{ + id = "Proom4"; + name = "Door Lock"; + normaldoorcontrol = 1; + pixel_x = 24; + pixel_y = 4; + specialfunctions = 4 + }, +/turf/open/floor/carpet, +/area/centcom/holding) +"wg" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "Proom4"; + name = "Room 4" + }, +/turf/open/floor/wood, +/area/centcom/holding) +"wh" = ( +/obj/structure/table/wood, +/obj/item/soap/nanotrasen, +/obj/item/reagent_containers/spray/cleaner, +/turf/open/floor/wood, +/area/centcom/holding) +"wi" = ( +/obj/structure/table/wood, +/obj/structure/bedsheetbin, +/turf/open/floor/wood, +/area/centcom/holding) +"wj" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "Proom5"; + name = "Room 5" + }, +/turf/open/floor/wood, +/area/centcom/holding) +"wk" = ( +/obj/machinery/button/door{ + id = "Proom5"; + name = "Door Lock"; + normaldoorcontrol = 1; + pixel_x = -24; + pixel_y = 4; + specialfunctions = 4 + }, +/obj/structure/bed, +/obj/item/bedsheet/random, +/turf/open/floor/carpet, +/area/centcom/holding) "wl" = ( /obj/machinery/light, /turf/open/floor/wood, @@ -8197,7 +8638,7 @@ /area/wizard_station) "wP" = ( /obj/structure/table/wood/fancy, -/obj/item/device/camera/spooky, +/obj/item/camera/spooky, /turf/open/floor/carpet, /area/wizard_station) "wQ" = ( @@ -8868,7 +9309,7 @@ "zg" = ( /obj/structure/table/reinforced, /obj/item/gun/ballistic/automatic/wt550, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, /obj/structure/noticeboard{ pixel_y = 28 }, @@ -8966,7 +9407,7 @@ "zy" = ( /obj/structure/table, /obj/item/gun/energy/ionrifle{ - pin = /obj/item/device/firing_pin + pin = /obj/item/firing_pin }, /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -9155,7 +9596,7 @@ "Aj" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs, -/obj/item/device/radio, +/obj/item/radio, /obj/effect/turf_decal/stripes/line{ dir = 9 }, @@ -9281,7 +9722,7 @@ /area/centcom/ferry) "AL" = ( /obj/structure/table/reinforced, -/obj/item/device/flashlight/seclite, +/obj/item/flashlight/seclite, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -9450,7 +9891,7 @@ "Bw" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /turf/open/floor/plasteel/grimy, /area/centcom/ferry) "Bx" = ( @@ -9481,7 +9922,7 @@ "BA" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs/cable/zipties, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -9684,7 +10125,7 @@ "BZ" = ( /obj/structure/table/wood, /obj/item/clipboard, -/obj/item/device/radio/headset/headset_cent, +/obj/item/radio/headset/headset_cent, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -9722,7 +10163,7 @@ "Ce" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs/cable/zipties, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -9773,7 +10214,7 @@ /obj/item/folder/red, /obj/item/book/manual/wiki/security_space_law, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -9861,15 +10302,15 @@ }, /area/centcom/ferry) "CA" = ( -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = 5; pixel_y = 5 }, -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = -5; pixel_y = 5 }, -/obj/item/device/radio, +/obj/item/radio, /obj/structure/table/wood, /turf/open/floor/plasteel/vault{ dir = 8 @@ -9943,7 +10384,7 @@ "CH" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /obj/machinery/firealarm{ dir = 4; pixel_x = 24 @@ -10220,7 +10661,7 @@ "DA" = ( /obj/structure/table/reinforced, /obj/item/book/manual/wiki/security_space_law, -/obj/item/device/taperecorder, +/obj/item/taperecorder, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -10765,77 +11206,6 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) -"EZ" = ( -/obj/structure/table, -/turf/open/floor/plasteel/freezer{ - dir = 2 - }, -/area/centcom/holding) -"Fa" = ( -/turf/open/floor/plasteel/freezer{ - dir = 2 - }, -/area/centcom/holding) -"Fb" = ( -/obj/structure/closet/secure_closet/bar{ - req_access_txt = "25" - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/freezer{ - dir = 2 - }, -/area/centcom/holding) -"Fc" = ( -/obj/structure/reagent_dispensers/beerkeg, -/turf/open/floor/plasteel/freezer{ - dir = 2 - }, -/area/centcom/holding) -"Fd" = ( -/obj/structure/table, -/obj/item/storage/box/donkpockets{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/donkpockets{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/donkpockets{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/donkpockets{ - pixel_x = 3; - pixel_y = 3 - }, -/turf/open/floor/plasteel/freezer{ - dir = 2 - }, -/area/centcom/holding) -"Fe" = ( -/obj/structure/rack, -/obj/item/device/camera, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) -"Ff" = ( -/obj/structure/rack, -/obj/item/toy/sword, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) -"Fg" = ( -/obj/structure/rack, -/obj/item/toy/gun, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) -"Fh" = ( -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) "Fi" = ( /turf/open/floor/plating/beach/sand, /area/centcom/holding) @@ -10952,21 +11322,8 @@ dir = 5 }, /area/tdome/tdomeobserve) -"FA" = ( -/obj/structure/table, -/obj/item/clothing/head/that, -/turf/open/floor/plasteel/freezer{ - dir = 2 - }, -/area/centcom/holding) -"FB" = ( -/obj/structure/chair/stool{ - pixel_y = 8 - }, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) "FC" = ( -/obj/item/device/camera, +/obj/item/camera, /turf/open/floor/plating/beach/sand, /area/centcom/holding) "FD" = ( @@ -11071,41 +11428,6 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) -"FU" = ( -/obj/structure/table, -/obj/item/ammo_box/foambox, -/turf/open/floor/plasteel/freezer{ - dir = 2 - }, -/area/centcom/holding) -"FV" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/shaker, -/turf/open/floor/plasteel/freezer{ - dir = 2 - }, -/area/centcom/holding) -"FW" = ( -/obj/structure/table, -/obj/item/lighter, -/turf/open/floor/plasteel/freezer{ - dir = 2 - }, -/area/centcom/holding) -"FX" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/soda_cans/cola, -/turf/open/floor/plasteel/freezer{ - dir = 2 - }, -/area/centcom/holding) -"FY" = ( -/obj/structure/table, -/obj/item/dice/d20, -/turf/open/floor/plasteel/freezer{ - dir = 2 - }, -/area/centcom/holding) "FZ" = ( /obj/structure/chair/stool{ pixel_y = 8 @@ -11226,13 +11548,6 @@ }, /turf/open/lava, /area/wizard_station) -"Gs" = ( -/obj/structure/rack, -/obj/item/clothing/head/that, -/obj/item/clothing/under/suit_jacket, -/obj/item/clothing/accessory/waistcoat, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) "Gt" = ( /obj/item/toy/beach_ball, /turf/open/floor/plating/beach/sand, @@ -11280,18 +11595,6 @@ }, /turf/open/lava/airless, /area/wizard_station) -"GA" = ( -/obj/structure/rack, -/obj/item/storage/crayons, -/obj/item/gun/ballistic/automatic/toy/pistol, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) -"GB" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) "GC" = ( /obj/structure/table, /obj/structure/bedsheetbin, @@ -11524,12 +11827,6 @@ /obj/structure/shuttle/engine/propulsion, /turf/open/space, /area/wizard_station) -"GY" = ( -/obj/structure/rack, -/obj/item/storage/crayons, -/obj/item/gun/ballistic/shotgun/toy/crossbow, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) "GZ" = ( /turf/open/floor/plating/beach/coastline_b, /area/centcom/holding) @@ -11582,33 +11879,6 @@ dir = 4 }, /area/tdome/tdomeobserve) -"Hi" = ( -/obj/structure/rack, -/obj/item/clothing/shoes/laceup, -/obj/item/clothing/under/suit_jacket/female{ - desc = "A black trouser suit for women. Very formal."; - name = "black suit"; - pixel_x = 3; - pixel_y = 1 - }, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) -"Hj" = ( -/obj/machinery/light, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) -"Hk" = ( -/obj/structure/table, -/obj/item/gun/ballistic/automatic/toy/pistol, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) -"Hl" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/light, -/turf/open/floor/plasteel/cafeteria, -/area/centcom/holding) "Hm" = ( /turf/open/floor/plating/beach/water, /area/centcom/holding) @@ -12542,15 +12812,15 @@ }, /area/tdome/tdomeadmin) "JP" = ( -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = 5; pixel_y = 5 }, -/obj/item/device/radio{ +/obj/item/radio{ pixel_x = -5; pixel_y = 5 }, -/obj/item/device/radio, +/obj/item/radio, /obj/structure/table/wood, /turf/open/floor/plasteel/vault{ dir = 8 @@ -12724,7 +12994,7 @@ /obj/item/folder/red, /obj/item/book/manual/wiki/security_space_law, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -12732,7 +13002,7 @@ "Kq" = ( /obj/structure/table/wood, /obj/item/clipboard, -/obj/item/device/radio/headset/headset_cent, +/obj/item/radio/headset/headset_cent, /turf/open/floor/plasteel/vault{ dir = 8 }, @@ -13072,7 +13342,7 @@ /area/centcom/evac) "Ln" = ( /obj/structure/table, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/mineral/plastitanium, /area/centcom/evac) "Lo" = ( @@ -13174,7 +13444,7 @@ /area/centcom/evac) "LE" = ( /obj/structure/table, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/mineral/titanium/blue, /area/centcom/evac) "LF" = ( @@ -13202,7 +13472,7 @@ /area/centcom/evac) "LJ" = ( /obj/structure/table, -/obj/item/device/radio/off, +/obj/item/radio/off, /obj/machinery/light{ dir = 4 }, @@ -39485,25 +39755,25 @@ aa aa aa ED -EZ -EZ -FU -Gs -GA -GY -Hi +hH +pU +qG +rZ +sa +sc +sd +ED +ED +ED +ED +ED +ED +ED +ED ED ED ED ED -aa -aa -aa -aa -aa -aa -aa -aa aa aa aa @@ -39742,25 +40012,25 @@ aa aa aa ED -Fa -Fa -Fa -Fh -Fh -Fh -Fh +jO +pU +pU +pW +pW +pW +pU Hy HH HH ED -aa -aa -aa -aa -aa -aa -aa -aa +uH +vo +vr +ED +uH +vo +vr +ED aa aa aa @@ -39999,25 +40269,25 @@ aa aa aa ED -Fb -Fa -FV -FB -Fh -Fh -Fh +oU +pU +qH +qF +pW +pW +pU Hz HH HH ED -aa -aa -aa -aa -aa -aa -aa -aa +uI +uN +vy +ED +uI +uN +vy +ED aa aa aa @@ -40256,25 +40526,25 @@ aa aa aa ED -Fc -Fa -EZ -FB -Fh -Fh -Fh +oV +pU +qI +qF +pW +pW +sY Hz HH HH ED -aa -aa -aa -aa -aa -aa -aa -aa +uG +uN +vs +ED +uG +uN +vs +ED aa aa aa @@ -40513,25 +40783,25 @@ aa aa aa ED -Fc -Fa -FW -FB -Fh -Fh -Fh +px +pU +rb +qF +pW +pW +sZ Hy HH HH ED -aa -aa -aa -aa -aa -aa -aa -aa +tm +tm +tm +ED +tm +tm +tm +ED aa aa aa @@ -40770,25 +41040,25 @@ aa aa aa ED -Fa -Fa -FX -FB -Fh -Fh -Hj +py +pU +rc +qF +pW +pW +ta ED ED ED ED -aa -aa -aa -aa -aa -aa -aa -aa +uK +tm +vt +ED +wf +tm +vt +ED aa aa aa @@ -41027,26 +41297,26 @@ aa aa aa ED -Fd -FA -FY -FB -Fh -Fh -Fh +pz +pV +rY +qF +pW +pW +pU +ED +ED +ED +ED +ED +vq +ED +ED +ED +wg +ED +ED ED -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa aa aa aa @@ -41284,13 +41554,25 @@ aa aa aa ED -Fe -Fh -Fh -Fh -Fh -Fh -Fh +pA +pW +pW +pW +pW +pW +pU +tk +pU +tZ +pU +pU +pU +pU +pU +pU +pU +tZ +wh ED aa aa @@ -41301,18 +41583,6 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa KH KU Lb @@ -41541,13 +41811,25 @@ aa aa aa ED -Ff -Fh -Fh -Fh -Fh -Fh -FB +pB +pW +pW +pW +pW +pW +pU +tk +pU +pU +pU +pU +vp +pU +pU +pU +pU +pU +wi ED aa aa @@ -41557,18 +41839,6 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa KH KH KS @@ -41798,26 +42068,26 @@ aa aa aa ED -Fg -Fh -Fh -Fh -Fh -FB -Hk +pC +pW +pW +pW +pW +pW +tb +ED +ED +ub +ED +ED +ED +vz +ED +ED +ED +wj +ED ED -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa aa aa aa @@ -42055,26 +42325,26 @@ aa aa aa ED -Fh -FB -Fh -Fh -Fh -Fh -FB +pD +qF +pW +pW +pW +pW +tc +ED +tY +tm +ug +ED +tY +tm +we +ED +tY +tm +wk ED -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa aa aa aa @@ -42312,26 +42582,26 @@ aa aa aa ED -Fi -Fi -Fi -Fi -GB -GB -Hl +pE +qF +pW +pW +pW +pW +td +ED +tW +uc +tm +ED +tW +uc +tm +ED +tW +uc +tm ED -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa aa aa aa @@ -42569,26 +42839,26 @@ aa aa aa ED -Fj -Fi -Fi -Fi -Fi -GZ -Hm +pS +qF +pW +pW +pW +pW +td +ED +ED +ED +ED +ED +ED +ED +ED +ED +ED +ED +ED ED -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa aa aa aa @@ -42826,6 +43096,777 @@ aa aa aa ED +pS +qF +pW +pW +pW +pW +tj +ED +ED +ED +ED +ED +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(115,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ED +pT +pU +pU +pU +sb +sb +sb +tl +ua +uf +uh +ED +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(116,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ED +Fj +Fi +Fi +Fi +Fi +GZ +Hm +ED +ED +ED +ED +ED +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(117,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ED Fi Fi FZ @@ -42892,7 +43933,7 @@ aa aa aa "} -(115,1,1) = {" +(118,1,1) = {" aa aa aa @@ -43149,7 +44190,7 @@ aa aa aa "} -(116,1,1) = {" +(119,1,1) = {" aa aa aa @@ -43406,7 +44447,7 @@ aa aa aa "} -(117,1,1) = {" +(120,1,1) = {" aa aa aa @@ -43663,777 +44704,6 @@ aa aa aa "} -(118,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ED -ED -ED -ED -ED -ED -ED -ED -ED -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(119,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(120,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} (121,1,1) = {" aa aa @@ -44624,15 +44894,15 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +ED +ED +ED +ED +ED +ED +ED +ED +ED aa aa aa diff --git a/_maps/map_files/generic/City_of_Cogs.dmm b/_maps/map_files/generic/City_of_Cogs.dmm index 421d03cf9d..e67a829221 100644 --- a/_maps/map_files/generic/City_of_Cogs.dmm +++ b/_maps/map_files/generic/City_of_Cogs.dmm @@ -95,7 +95,7 @@ /area/reebe/city_of_cogs) "au" = ( /obj/structure/table/reinforced/brass, -/obj/item/device/radio/intercom/ratvar, +/obj/item/radio/intercom/ratvar, /turf/open/floor/clockwork/reebe, /area/reebe/city_of_cogs) "av" = ( diff --git a/_maps/shuttles/arrival_box.dmm b/_maps/shuttles/arrival_box.dmm index 1bd1c69d39..c3586bd12a 100644 --- a/_maps/shuttles/arrival_box.dmm +++ b/_maps/shuttles/arrival_box.dmm @@ -137,7 +137,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/arrival) "z" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, diff --git a/_maps/shuttles/arrival_delta.dmm b/_maps/shuttles/arrival_delta.dmm index ab6ce0f08a..523b243801 100644 --- a/_maps/shuttles/arrival_delta.dmm +++ b/_maps/shuttles/arrival_delta.dmm @@ -300,7 +300,7 @@ /obj/item/paper_bin, /obj/item/pen, /obj/effect/turf_decal/bot, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_x = -30 }, /turf/open/floor/plasteel, diff --git a/_maps/shuttles/arrival_omega.dmm b/_maps/shuttles/arrival_omega.dmm index 36808ab760..06dc4b7a1e 100644 --- a/_maps/shuttles/arrival_omega.dmm +++ b/_maps/shuttles/arrival_omega.dmm @@ -139,7 +139,7 @@ /area/shuttle/arrival) "s" = ( /obj/structure/table/reinforced, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_x = -30 }, /obj/item/paper_bin, diff --git a/_maps/shuttles/arrival_pubby.dmm b/_maps/shuttles/arrival_pubby.dmm index 7912a7a5ef..12718ff8ff 100644 --- a/_maps/shuttles/arrival_pubby.dmm +++ b/_maps/shuttles/arrival_pubby.dmm @@ -126,7 +126,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/arrival) "u" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, diff --git a/_maps/shuttles/emergency_asteroid.dmm b/_maps/shuttles/emergency_asteroid.dmm index ef408d147f..a94fd27655 100644 --- a/_maps/shuttles/emergency_asteroid.dmm +++ b/_maps/shuttles/emergency_asteroid.dmm @@ -97,7 +97,7 @@ /obj/structure/chair{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = -28 @@ -145,7 +145,7 @@ /area/shuttle/escape) "aM" = ( /obj/structure/closet/emcloset, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 23 @@ -198,7 +198,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "aW" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 23 @@ -348,7 +348,7 @@ /obj/structure/chair{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -377,7 +377,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "bC" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 8; name = "Station Intercom (General)"; pixel_x = -28 diff --git a/_maps/shuttles/emergency_bar.dmm b/_maps/shuttles/emergency_bar.dmm index ef347ed61d..eaa525739f 100644 --- a/_maps/shuttles/emergency_bar.dmm +++ b/_maps/shuttles/emergency_bar.dmm @@ -21,7 +21,7 @@ /area/shuttle/escape) "af" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /turf/open/floor/carpet, /area/shuttle/escape) "ag" = ( @@ -102,7 +102,7 @@ /turf/open/floor/carpet, /area/shuttle/escape) "as" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -434,7 +434,7 @@ /area/shuttle/escape) "bI" = ( /obj/structure/table/wood/bar, -/obj/item/device/instrument/guitar, +/obj/item/instrument/guitar, /turf/open/floor/plasteel/bar, /area/shuttle/escape) "bJ" = ( diff --git a/_maps/shuttles/emergency_box.dmm b/_maps/shuttles/emergency_box.dmm index 1b675f0538..d385cf1d18 100644 --- a/_maps/shuttles/emergency_box.dmm +++ b/_maps/shuttles/emergency_box.dmm @@ -80,7 +80,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "as" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, diff --git a/_maps/shuttles/emergency_cere.dmm b/_maps/shuttles/emergency_cere.dmm index 3d6550bdca..ea9dcd46ea 100644 --- a/_maps/shuttles/emergency_cere.dmm +++ b/_maps/shuttles/emergency_cere.dmm @@ -208,7 +208,7 @@ /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-22" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -230,7 +230,7 @@ /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-22" }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -562,7 +562,7 @@ "bG" = ( /obj/structure/table, /obj/item/storage/box/cups, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_y = 27 @@ -639,7 +639,7 @@ /turf/open/floor/plasteel/neutral/side, /area/shuttle/escape) "bU" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_y = 27 @@ -960,7 +960,7 @@ /turf/open/floor/plasteel/whiteblue/side, /area/shuttle/escape) "cM" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -1134,7 +1134,7 @@ /turf/open/floor/plasteel/yellow/side, /area/shuttle/escape) "dm" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, diff --git a/_maps/shuttles/emergency_clown.dmm b/_maps/shuttles/emergency_clown.dmm index 83aacc5cb2..6f31726964 100644 --- a/_maps/shuttles/emergency_clown.dmm +++ b/_maps/shuttles/emergency_clown.dmm @@ -80,7 +80,7 @@ /turf/open/floor/bluespace, /area/shuttle/escape) "ap" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -165,7 +165,7 @@ /area/shuttle/escape) "aE" = ( /obj/structure/table, -/obj/item/device/multitool/ai_detect, +/obj/item/multitool/ai_detect, /turf/open/floor/noslip, /area/shuttle/escape) "aF" = ( diff --git a/_maps/shuttles/emergency_cramped.dmm b/_maps/shuttles/emergency_cramped.dmm index 6b5893ebd2..6bf3ba0f9e 100644 --- a/_maps/shuttles/emergency_cramped.dmm +++ b/_maps/shuttles/emergency_cramped.dmm @@ -45,7 +45,7 @@ "i" = ( /obj/structure/table/reinforced, /obj/structure/window/reinforced, -/obj/item/device/gps{ +/obj/item/gps{ gpstag = "STV5" }, /turf/open/floor/plasteel/dark, diff --git a/_maps/shuttles/emergency_delta.dmm b/_maps/shuttles/emergency_delta.dmm index ab1e589fa9..926d079549 100644 --- a/_maps/shuttles/emergency_delta.dmm +++ b/_maps/shuttles/emergency_delta.dmm @@ -225,7 +225,7 @@ /turf/open/floor/plasteel/cmo, /area/shuttle/escape) "at" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = 58 @@ -329,7 +329,7 @@ /obj/structure/chair{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -479,7 +479,7 @@ /area/shuttle/escape) "ba" = ( /obj/structure/reagent_dispensers/fueltank, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = -26 }, @@ -511,7 +511,7 @@ pixel_x = -4; pixel_y = 3 }, -/obj/item/device/healthanalyzer{ +/obj/item/healthanalyzer{ pixel_x = 3; pixel_y = 3 }, @@ -555,17 +555,17 @@ }, /obj/item/storage/toolbox/emergency, /obj/item/storage/toolbox/emergency, -/obj/item/device/flashlight/flare{ +/obj/item/flashlight/flare{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/flashlight/flare{ +/obj/item/flashlight/flare{ pixel_x = -6; pixel_y = -2 }, /obj/item/crowbar, /obj/item/wrench, -/obj/item/device/radio, +/obj/item/radio, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/shuttle/escape) @@ -750,7 +750,7 @@ /turf/open/floor/plasteel/neutral/corner, /area/shuttle/escape) "bJ" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 58 }, @@ -831,7 +831,7 @@ "bV" = ( /obj/structure/table/reinforced, /obj/item/storage/box/zipties, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, @@ -912,7 +912,7 @@ }, /area/shuttle/escape) "cg" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26; pixel_y = 58 @@ -992,7 +992,7 @@ /obj/structure/table/reinforced, /obj/item/folder/red, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, /turf/open/floor/plasteel/vault, /area/shuttle/escape) "cs" = ( diff --git a/_maps/shuttles/emergency_discoinferno.dmm b/_maps/shuttles/emergency_discoinferno.dmm index d1dfd5752e..025a7cf743 100644 --- a/_maps/shuttles/emergency_discoinferno.dmm +++ b/_maps/shuttles/emergency_discoinferno.dmm @@ -11,7 +11,7 @@ /area/shuttle/escape) "d" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /turf/open/floor/mineral/gold, /area/shuttle/escape) "e" = ( diff --git a/_maps/shuttles/emergency_goon.dmm b/_maps/shuttles/emergency_goon.dmm index a9f9a5b307..24f2a4179c 100644 --- a/_maps/shuttles/emergency_goon.dmm +++ b/_maps/shuttles/emergency_goon.dmm @@ -108,7 +108,7 @@ /area/shuttle/escape) "z" = ( /obj/structure/table/reinforced, -/obj/item/device/radio, +/obj/item/radio, /obj/structure/window/reinforced{ dir = 1; layer = 2.9 diff --git a/_maps/shuttles/emergency_imfedupwiththisworld.dmm b/_maps/shuttles/emergency_imfedupwiththisworld.dmm index 8a33387a9d..fe7addf784 100644 --- a/_maps/shuttles/emergency_imfedupwiththisworld.dmm +++ b/_maps/shuttles/emergency_imfedupwiththisworld.dmm @@ -33,7 +33,7 @@ /area/shuttle/escape) "g" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp, +/obj/item/flashlight/lamp, /turf/open/floor/carpet, /area/shuttle/escape) "h" = ( diff --git a/_maps/shuttles/emergency_meta.dmm b/_maps/shuttles/emergency_meta.dmm index ede77a1499..3776887e2a 100644 --- a/_maps/shuttles/emergency_meta.dmm +++ b/_maps/shuttles/emergency_meta.dmm @@ -69,7 +69,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/escape) "as" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_y = 27 @@ -292,7 +292,7 @@ pixel_x = -2; pixel_y = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 2; name = "Station Intercom (General)"; pixel_y = -31 @@ -309,7 +309,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "aS" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 2; name = "Station Intercom (General)"; pixel_y = -31 @@ -532,7 +532,7 @@ pixel_x = -4; pixel_y = 2 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 2; name = "Station Intercom (General)"; pixel_y = -31 @@ -581,7 +581,7 @@ }, /obj/item/clothing/gloves/color/latex, /obj/item/clothing/mask/surgical, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 2; name = "Station Intercom (General)"; pixel_x = -27 @@ -640,17 +640,17 @@ }, /obj/item/storage/toolbox/emergency, /obj/item/storage/toolbox/emergency, -/obj/item/device/flashlight/flare{ +/obj/item/flashlight/flare{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/flashlight/flare{ +/obj/item/flashlight/flare{ pixel_x = -6; pixel_y = -2 }, /obj/item/crowbar, /obj/item/wrench, -/obj/item/device/radio, +/obj/item/radio, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/shuttle/escape) @@ -667,7 +667,7 @@ pixel_x = -4; pixel_y = 3 }, -/obj/item/device/healthanalyzer{ +/obj/item/healthanalyzer{ pixel_x = 3; pixel_y = 3 }, @@ -681,7 +681,7 @@ /turf/open/floor/plasteel, /area/shuttle/escape) "bQ" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ dir = 2; name = "Station Intercom (General)"; pixel_y = -31 diff --git a/_maps/shuttles/emergency_mini.dmm b/_maps/shuttles/emergency_mini.dmm index 706b2b9a23..f8f27ce57e 100644 --- a/_maps/shuttles/emergency_mini.dmm +++ b/_maps/shuttles/emergency_mini.dmm @@ -224,7 +224,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "L" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = 24 }, diff --git a/_maps/shuttles/emergency_narnar.dmm b/_maps/shuttles/emergency_narnar.dmm index 0f24d118ed..509a5bfa6b 100644 --- a/_maps/shuttles/emergency_narnar.dmm +++ b/_maps/shuttles/emergency_narnar.dmm @@ -76,7 +76,7 @@ /turf/open/floor/plasteel/cult, /area/shuttle/escape) "o" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, diff --git a/_maps/shuttles/emergency_omega.dmm b/_maps/shuttles/emergency_omega.dmm index a1f061e307..36e68e1119 100644 --- a/_maps/shuttles/emergency_omega.dmm +++ b/_maps/shuttles/emergency_omega.dmm @@ -31,7 +31,7 @@ /obj/structure/chair{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = 24 }, @@ -232,7 +232,7 @@ pixel_x = -3; pixel_y = 3 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -485,7 +485,7 @@ pixel_x = -4; pixel_y = 3 }, -/obj/item/device/healthanalyzer{ +/obj/item/healthanalyzer{ pixel_x = 3; pixel_y = 3 }, @@ -520,7 +520,7 @@ /obj/machinery/sleeper{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_x = 26 }, @@ -557,17 +557,17 @@ }, /obj/item/storage/toolbox/emergency, /obj/item/storage/toolbox/emergency, -/obj/item/device/flashlight/flare{ +/obj/item/flashlight/flare{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/flashlight/flare{ +/obj/item/flashlight/flare{ pixel_x = -6; pixel_y = -2 }, /obj/item/crowbar, /obj/item/wrench, -/obj/item/device/radio, +/obj/item/radio, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -606,7 +606,7 @@ /obj/structure/sign/warning/nosmoking/circle{ pixel_x = -32 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom"; pixel_y = -26 }, diff --git a/_maps/shuttles/emergency_raven.dmm b/_maps/shuttles/emergency_raven.dmm index ea8bb30f86..60f81677db 100644 --- a/_maps/shuttles/emergency_raven.dmm +++ b/_maps/shuttles/emergency_raven.dmm @@ -50,7 +50,7 @@ "ak" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs, -/obj/item/device/assembly/flash, +/obj/item/assembly/flash, /turf/open/floor/plasteel/vault, /area/shuttle/escape) "al" = ( diff --git a/_maps/shuttles/emergency_russiafightpit.dmm b/_maps/shuttles/emergency_russiafightpit.dmm index 85e0e00dbe..795e8ff141 100644 --- a/_maps/shuttles/emergency_russiafightpit.dmm +++ b/_maps/shuttles/emergency_russiafightpit.dmm @@ -82,7 +82,7 @@ /turf/open/floor/mineral/titanium/blue, /area/shuttle/escape) "ap" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, diff --git a/_maps/shuttles/emergency_scrapheap.dmm b/_maps/shuttles/emergency_scrapheap.dmm index 251b1f6720..09603df29a 100644 --- a/_maps/shuttles/emergency_scrapheap.dmm +++ b/_maps/shuttles/emergency_scrapheap.dmm @@ -65,7 +65,7 @@ /turf/open/floor/carpet, /area/shuttle/escape) "an" = ( -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = -29 }, @@ -200,7 +200,7 @@ /obj/structure/window/reinforced{ dir = 4 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = 23 }, diff --git a/_maps/shuttles/escape_pod_default.dmm b/_maps/shuttles/escape_pod_default.dmm index ec761e75cb..14b87a3fa2 100644 --- a/_maps/shuttles/escape_pod_default.dmm +++ b/_maps/shuttles/escape_pod_default.dmm @@ -35,7 +35,7 @@ /obj/structure/chair{ dir = 1 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_x = 25 }, /obj/item/storage/pod{ diff --git a/_maps/shuttles/escape_pod_large.dmm b/_maps/shuttles/escape_pod_large.dmm index 260f7ed0c6..4900045801 100644 --- a/_maps/shuttles/escape_pod_large.dmm +++ b/_maps/shuttles/escape_pod_large.dmm @@ -20,7 +20,7 @@ /obj/structure/chair{ dir = 8 }, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_x = 30 }, /turf/open/floor/mineral/titanium/blue, diff --git a/_maps/shuttles/ferry_lighthouse.dmm b/_maps/shuttles/ferry_lighthouse.dmm index 1f9520077d..793b793531 100644 --- a/_maps/shuttles/ferry_lighthouse.dmm +++ b/_maps/shuttles/ferry_lighthouse.dmm @@ -142,7 +142,7 @@ /area/shuttle/transport) "aK" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green, +/obj/item/flashlight/lamp/green, /turf/open/floor/mineral/titanium/blue, /area/shuttle/transport) "aL" = ( diff --git a/_maps/shuttles/infiltrator_basic.dmm b/_maps/shuttles/infiltrator_basic.dmm index 0367ef9352..5d21fad7f8 100644 --- a/_maps/shuttles/infiltrator_basic.dmm +++ b/_maps/shuttles/infiltrator_basic.dmm @@ -527,7 +527,7 @@ /obj/item/screwdriver{ pixel_y = 9 }, -/obj/item/device/assembly/voice{ +/obj/item/assembly/voice{ pixel_y = 3 }, /obj/structure/table/reinforced, @@ -535,7 +535,7 @@ /area/shuttle/syndicate/armory) "bz" = ( /obj/item/wrench, -/obj/item/device/assembly/infra, +/obj/item/assembly/infra, /obj/structure/table/reinforced, /obj/machinery/light{ dir = 1 @@ -543,13 +543,13 @@ /turf/open/floor/plasteel/dark, /area/shuttle/syndicate/armory) "bA" = ( -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/signaler, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/signaler, +/obj/item/assembly/signaler, +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, -/obj/item/device/assembly/prox_sensor{ +/obj/item/assembly/prox_sensor{ pixel_x = -8; pixel_y = 4 }, @@ -560,7 +560,7 @@ /obj/item/weldingtool/largetank{ pixel_y = 3 }, -/obj/item/device/multitool, +/obj/item/multitool, /obj/structure/table/reinforced, /turf/open/floor/plasteel/dark, /area/shuttle/syndicate/armory) @@ -746,10 +746,10 @@ /turf/open/floor/plasteel/vault, /area/shuttle/syndicate/hallway) "ce" = ( -/obj/item/device/sbeacondrop/bomb{ +/obj/item/sbeacondrop/bomb{ pixel_y = 5 }, -/obj/item/device/sbeacondrop/bomb, +/obj/item/sbeacondrop/bomb, /obj/structure/table/reinforced, /turf/open/floor/plasteel/vault/side, /area/shuttle/syndicate/armory) @@ -791,7 +791,7 @@ dir = 1 }, /obj/structure/table/reinforced, -/obj/item/device/aicard, +/obj/item/aicard, /turf/open/floor/plasteel/vault/side, /area/shuttle/syndicate/armory) "cj" = ( diff --git a/_maps/shuttles/pirate_default.dmm b/_maps/shuttles/pirate_default.dmm index a635cac326..3c9ee504eb 100644 --- a/_maps/shuttles/pirate_default.dmm +++ b/_maps/shuttles/pirate_default.dmm @@ -29,7 +29,7 @@ pixel_y = -5 }, /obj/effect/decal/cleanable/dirt, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = 5 }, /turf/open/floor/plasteel/dark, @@ -564,8 +564,8 @@ layer = 2.9 }, /obj/item/storage/belt/utility, -/obj/item/device/radio/off, -/obj/item/device/radio/off, +/obj/item/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel, /area/shuttle/pirate) "bx" = ( @@ -615,8 +615,8 @@ layer = 2.9 }, /obj/item/storage/belt/utility, -/obj/item/device/radio/off, -/obj/item/device/radio/off, +/obj/item/radio/off, +/obj/item/radio/off, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/floorgrime, /area/shuttle/pirate) @@ -717,7 +717,7 @@ layer = 2.9 }, /obj/item/storage/toolbox/mechanical, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plasteel/floorgrime, /area/shuttle/pirate) "bL" = ( @@ -1077,7 +1077,7 @@ /obj/item/storage/belt/utility{ pixel_x = 4 }, -/obj/item/device/analyzer{ +/obj/item/analyzer{ pixel_x = 3; pixel_y = 2 }, @@ -1614,7 +1614,7 @@ pixel_x = 4; pixel_y = 4 }, -/obj/item/device/multitool, +/obj/item/multitool, /obj/machinery/light/small, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/yellow/corner, diff --git a/_maps/shuttles/ruin_syndicate_dropship.dmm b/_maps/shuttles/ruin_syndicate_dropship.dmm new file mode 100644 index 0000000000..d635953737 --- /dev/null +++ b/_maps/shuttles/ruin_syndicate_dropship.dmm @@ -0,0 +1,656 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"al" = ( +/obj/machinery/airalarm/syndicate{ + dir = 4; + pixel_x = -24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/syndicate3) +"bo" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/syndicate3) +"bB" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/button/door{ + id = "caravansyndicate3_bolt_starboard"; + name = "External Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -24; + pixel_y = -6; + req_access_txt = "150"; + specialfunctions = 4 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/syndicate3) +"bN" = ( +/obj/machinery/power/smes{ + charge = 5e+006 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/shuttle/caravan/syndicate3) +"cB" = ( +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/syndicate3) +"dZ" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/syndicate3) +"gl" = ( +/obj/machinery/door/airlock/hatch{ + id_tag = "caravansyndicate3_bolt_port"; + name = "External Airlock"; + normalspeed = 0; + req_access_txt = "150" + }, +/obj/docking_port/mobile{ + dir = 2; + dwidth = 6; + height = 7; + id = "caravansyndicate3"; + name = "Syndicate Drop Ship"; + port_direction = 8; + preferred_direction = 4; + timid = 1; + width = 15 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/shuttle/caravan/syndicate3) +"ha" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/cable, +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/item/wrench, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/shuttle/caravan/syndicate3) +"hF" = ( +/obj/structure/chair, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/machinery/power/apc/syndicate{ + dir = 8; + name = "Syndicate Drop Ship APC"; + pixel_x = -24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/shuttle/caravan/syndicate3) +"ka" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/shuttle/caravan/syndicate3) +"mJ" = ( +/obj/structure/shuttle/engine/propulsion/burst/left{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/syndicate3) +"ns" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "caravansyndicate3_bridge"; + name = "Bridge Blast Door Control"; + pixel_x = -16; + pixel_y = 5; + req_access_txt = "150" + }, +/obj/machinery/button/door{ + id = "caravansyndicate3_bolt_bridge"; + name = "Bridge Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -16; + pixel_y = -5; + req_access_txt = "150"; + specialfunctions = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/darkred/side{ + dir = 6 + }, +/area/shuttle/caravan/syndicate3) +"qE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/syndicate{ + anchored = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate3) +"rz" = ( +/obj/machinery/computer/shuttle/caravan/syndicate3{ + dir = 8 + }, +/turf/open/floor/plasteel/darkred/side{ + dir = 8 + }, +/area/shuttle/caravan/syndicate3) +"rU" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/obj/machinery/door/poddoor{ + id = "caravansyndicate3_bridge" + }, +/turf/open/floor/plating, +/area/shuttle/caravan/syndicate3) +"rV" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/shuttle/caravan/syndicate3) +"sb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/camera_advanced/shuttle_docker/caravan/syndicate3{ + dir = 8 + }, +/turf/open/floor/plasteel/darkred/side{ + dir = 10 + }, +/area/shuttle/caravan/syndicate3) +"sn" = ( +/obj/structure/chair, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/shuttle/caravan/syndicate3) +"ss" = ( +/turf/open/floor/plasteel/darkred/side{ + dir = 1 + }, +/area/shuttle/caravan/syndicate3) +"uy" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel/darkred/side{ + dir = 10 + }, +/area/shuttle/caravan/syndicate3) +"vw" = ( +/obj/structure/table/reinforced, +/obj/item/storage/firstaid/regular, +/obj/item/assembly/flash/handheld, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/darkred/side{ + dir = 5 + }, +/area/shuttle/caravan/syndicate3) +"vQ" = ( +/obj/structure/shuttle/engine/propulsion/burst/right{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/syndicate3) +"wH" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/caravan/syndicate3) +"xC" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/button/door{ + id = "caravansyndicate3_bolt_port"; + name = "External Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -24; + pixel_y = 6; + req_access_txt = "150"; + specialfunctions = 4 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/syndicate3) +"BQ" = ( +/turf/open/floor/plasteel/darkred/side, +/area/shuttle/caravan/syndicate3) +"Cm" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/shuttle/caravan/syndicate3) +"Dt" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/syndicate/personal{ + anchored = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate3) +"Dx" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/syndicate3) +"EO" = ( +/obj/structure/chair, +/obj/machinery/airalarm/syndicate{ + pixel_y = 24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/shuttle/caravan/syndicate3) +"Fa" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/syndicate{ + anchored = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate3) +"Gx" = ( +/obj/machinery/airalarm/syndicate{ + dir = 4; + pixel_x = -24 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/syndicate3) +"HJ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/sign/warning/vacuum{ + pixel_y = -32 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/syndicate{ + anchored = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate3) +"HM" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/mob/living/simple_animal/hostile/syndicate{ + environment_smash = 0; + name = "Syndicate Salvage Pilot" + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/syndicate3) +"Ij" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/obj/machinery/turretid{ + ailock = 1; + control_area = null; + desc = "A specially designed set of turret controls. Looks to be covered in protective casing to prevent AI interfacing."; + icon_state = "control_kill"; + lethal = 1; + name = "Shuttle turret control"; + pixel_y = 34; + req_access = null; + req_access_txt = "150" + }, +/turf/open/floor/plasteel/darkred/corner{ + dir = 4 + }, +/area/shuttle/caravan/syndicate3) +"IR" = ( +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/hatch{ + id_tag = "caravansyndicate3_bolt_bridge"; + name = "Bridge"; + req_access_txt = "150" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/syndicate3) +"Jv" = ( +/turf/template_noop, +/area/template_noop) +"KS" = ( +/obj/machinery/door/airlock/hatch{ + id_tag = "caravansyndicate3_bolt_starboard"; + name = "External Airlock"; + normalspeed = 0; + req_access_txt = "150" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/syndicate3) +"Lq" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/closet/syndicate{ + anchored = 1 + }, +/obj/structure/sign/warning/vacuum{ + pixel_y = 32 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate3) +"NH" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/closet/syndicate/personal{ + anchored = 1 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate3) +"Pt" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/closet/crate, +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/item/stack/sheet/metal/twenty, +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/obj/item/stack/sheet/mineral/plastitanium{ + amount = 20 + }, +/obj/item/storage/box/lights/bulbs, +/obj/item/storage/toolbox/mechanical, +/obj/item/stack/sheet/mineral/plasma{ + amount = 20 + }, +/turf/open/floor/plating, +/area/shuttle/caravan/syndicate3) +"PL" = ( +/obj/machinery/porta_turret/syndicate/energy{ + dir = 2; + icon_state = "standard_lethal"; + mode = 1 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/caravan/syndicate3) +"Rj" = ( +/obj/machinery/porta_turret/syndicate/energy{ + dir = 1; + icon_state = "standard_lethal"; + mode = 1 + }, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/caravan/syndicate3) +"Sl" = ( +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/emergency, +/obj/item/wrench, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/darkred/side{ + dir = 9 + }, +/area/shuttle/caravan/syndicate3) +"Tn" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/caravan/syndicate3) +"UD" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/darkred/side, +/area/shuttle/caravan/syndicate3) +"US" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/darkred/side{ + dir = 1 + }, +/area/shuttle/caravan/syndicate3) +"Vf" = ( +/obj/machinery/door/airlock/hatch{ + name = "Ready Room"; + req_access_txt = "150" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/shuttle/caravan/syndicate3) +"Wr" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/open/floor/plasteel/darkred/corner, +/area/shuttle/caravan/syndicate3) +"YU" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/structure/closet/syndicate{ + anchored = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/caravan/syndicate3) +"ZB" = ( +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/caravan/syndicate3) +"ZJ" = ( +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/syndicate3) +"ZK" = ( +/obj/machinery/computer/crew{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/darkred/side{ + dir = 9 + }, +/area/shuttle/caravan/syndicate3) +"ZZ" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/shuttle/caravan/syndicate3) + +(1,1,1) = {" +Jv +mJ +dZ +dZ +dZ +vQ +Jv +"} +(2,1,1) = {" +ZB +wH +wH +wH +wH +wH +ZB +"} +(3,1,1) = {" +Tn +Tn +bN +Pt +ha +Tn +Tn +"} +(4,1,1) = {" +Tn +hF +US +ZJ +BQ +ka +Tn +"} +(5,1,1) = {" +Tn +EO +ss +cB +BQ +Cm +Tn +"} +(6,1,1) = {" +Tn +sn +ss +cB +UD +rV +Tn +"} +(7,1,1) = {" +Tn +NH +Fa +cB +qE +Dt +Tn +"} +(8,1,1) = {" +Rj +Tn +Tn +Vf +Tn +Tn +PL +"} +(9,1,1) = {" +gl +xC +al +cB +bo +bB +KS +"} +(10,1,1) = {" +Tn +Lq +YU +Dx +qE +HJ +Tn +"} +(11,1,1) = {" +Tn +Tn +Tn +IR +Tn +Tn +Tn +"} +(12,1,1) = {" +Tn +uy +Gx +cB +ZZ +Sl +Tn +"} +(13,1,1) = {" +rU +ns +Ij +HM +Wr +vw +rU +"} +(14,1,1) = {" +rU +rU +sb +rz +ZK +rU +rU +"} +(15,1,1) = {" +Jv +rU +rU +rU +rU +rU +Jv +"} diff --git a/_maps/shuttles/whiteship_box.dmm b/_maps/shuttles/whiteship_box.dmm index 2daa647497..400b8f219a 100644 --- a/_maps/shuttles/whiteship_box.dmm +++ b/_maps/shuttles/whiteship_box.dmm @@ -38,7 +38,7 @@ /area/shuttle/abandoned) "ak" = ( /obj/structure/table, -/obj/item/device/radio/off, +/obj/item/radio/off, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) "al" = ( @@ -228,7 +228,7 @@ /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) "bc" = ( -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) "bd" = ( diff --git a/_maps/shuttles/whiteship_cere.dmm b/_maps/shuttles/whiteship_cere.dmm index f189ba7478..f640e014a9 100644 --- a/_maps/shuttles/whiteship_cere.dmm +++ b/_maps/shuttles/whiteship_cere.dmm @@ -478,7 +478,7 @@ /area/shuttle/abandoned) "aP" = ( /obj/structure/table, -/obj/item/device/gps{ +/obj/item/gps{ gpstag = "NTCONST1"; pixel_x = -1; pixel_y = 2 diff --git a/_maps/shuttles/whiteship_delta.dmm b/_maps/shuttles/whiteship_delta.dmm index ccf2a544d4..bb17806a6b 100644 --- a/_maps/shuttles/whiteship_delta.dmm +++ b/_maps/shuttles/whiteship_delta.dmm @@ -167,11 +167,11 @@ }, /obj/item/storage/toolbox/emergency, /obj/item/storage/toolbox/emergency, -/obj/item/device/flashlight/flare{ +/obj/item/flashlight/flare{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/flashlight/flare{ +/obj/item/flashlight/flare{ pixel_x = -6; pixel_y = -2 }, @@ -272,7 +272,7 @@ }, /obj/item/grenade/chem_grenade/metalfoam, /obj/item/relic, -/obj/item/device/t_scanner, +/obj/item/t_scanner, /obj/effect/spawner/lootdrop/maintenance{ lootcount = 3; name = "3maintenance loot spawner" @@ -452,7 +452,7 @@ /obj/item/clothing/suit/apron, /obj/item/shovel/spade, /obj/item/cultivator, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/effect/decal/cleanable/dirt{ desc = "A thin layer of dust coating the floor."; name = "dust" @@ -651,7 +651,7 @@ desc = "A thin layer of dust coating the floor."; name = "dust" }, -/obj/item/device/gps{ +/obj/item/gps{ gpstag = "ITVSAC"; pixel_x = -1; pixel_y = 2 @@ -1654,7 +1654,7 @@ desc = "A thin layer of dust coating the floor."; name = "dust" }, -/obj/item/device/megaphone, +/obj/item/megaphone, /turf/open/floor/plasteel/blue/corner{ dir = 4 }, @@ -1688,7 +1688,7 @@ name = "dust" }, /obj/structure/table, -/obj/item/device/camera, +/obj/item/camera, /turf/open/floor/plasteel/blue/side{ dir = 5 }, @@ -1815,7 +1815,7 @@ name = "dust" }, /obj/structure/table, -/obj/item/device/pda/clear, +/obj/item/pda/clear, /turf/open/floor/plasteel/blue/side, /area/shuttle/abandoned) "dv" = ( @@ -1834,7 +1834,7 @@ name = "dust" }, /obj/structure/table, -/obj/item/device/radio, +/obj/item/radio, /turf/open/floor/plasteel/blue/side, /area/shuttle/abandoned) "dx" = ( diff --git a/_maps/shuttles/whiteship_meta.dmm b/_maps/shuttles/whiteship_meta.dmm index 02586562dd..3118d4e0ce 100644 --- a/_maps/shuttles/whiteship_meta.dmm +++ b/_maps/shuttles/whiteship_meta.dmm @@ -182,7 +182,7 @@ /obj/item/roller{ pixel_y = 4 }, -/obj/item/device/healthanalyzer, +/obj/item/healthanalyzer, /obj/effect/decal/cleanable/dirt{ desc = "A thin layer of dust coating the floor."; name = "dust" @@ -199,7 +199,7 @@ }, /obj/item/grenade/chem_grenade/metalfoam, /obj/item/relic, -/obj/item/device/t_scanner, +/obj/item/t_scanner, /obj/effect/spawner/lootdrop/maintenance{ lootcount = 3; name = "3maintenance loot spawner" @@ -239,11 +239,11 @@ }, /obj/item/storage/toolbox/emergency, /obj/item/storage/toolbox/emergency, -/obj/item/device/flashlight/flare{ +/obj/item/flashlight/flare{ pixel_x = 3; pixel_y = 3 }, -/obj/item/device/flashlight/flare{ +/obj/item/flashlight/flare{ pixel_x = -6; pixel_y = -2 }, @@ -316,10 +316,10 @@ /obj/structure/table, /obj/item/storage/belt/utility, /obj/item/storage/belt/utility, -/obj/item/device/radio/off, -/obj/item/device/radio/off, -/obj/item/device/radio/off, -/obj/item/device/radio/off, +/obj/item/radio/off, +/obj/item/radio/off, +/obj/item/radio/off, +/obj/item/radio/off, /obj/effect/decal/cleanable/dirt{ desc = "A thin layer of dust coating the floor."; name = "dust" @@ -690,7 +690,7 @@ name = "dust" }, /obj/structure/table, -/obj/item/device/camera, +/obj/item/camera, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) "bi" = ( @@ -806,7 +806,7 @@ desc = "A thin layer of dust coating the floor."; name = "dust" }, -/obj/item/device/gps{ +/obj/item/gps{ gpstag = "NTREC1"; pixel_x = -1; pixel_y = 2 @@ -1110,7 +1110,7 @@ name = "dust" }, /obj/structure/table, -/obj/item/device/megaphone, +/obj/item/megaphone, /turf/open/floor/mineral/titanium, /area/shuttle/abandoned) "bU" = ( @@ -1140,7 +1140,7 @@ /area/shuttle/abandoned) "bW" = ( /obj/structure/table, -/obj/item/device/radio/off{ +/obj/item/radio/off{ pixel_y = 6 }, /obj/effect/decal/cleanable/dirt{ @@ -1332,7 +1332,7 @@ name = "dust" }, /obj/item/wirecutters, -/obj/item/device/plant_analyzer, +/obj/item/plant_analyzer, /obj/item/reagent_containers/glass/bucket, /obj/machinery/light/small/built{ dir = 8 diff --git a/_maps/templates/pirate_ship.dmm b/_maps/templates/pirate_ship.dmm index a635cac326..3c9ee504eb 100644 --- a/_maps/templates/pirate_ship.dmm +++ b/_maps/templates/pirate_ship.dmm @@ -29,7 +29,7 @@ pixel_y = -5 }, /obj/effect/decal/cleanable/dirt, -/obj/item/device/radio/intercom{ +/obj/item/radio/intercom{ pixel_y = 5 }, /turf/open/floor/plasteel/dark, @@ -564,8 +564,8 @@ layer = 2.9 }, /obj/item/storage/belt/utility, -/obj/item/device/radio/off, -/obj/item/device/radio/off, +/obj/item/radio/off, +/obj/item/radio/off, /turf/open/floor/plasteel, /area/shuttle/pirate) "bx" = ( @@ -615,8 +615,8 @@ layer = 2.9 }, /obj/item/storage/belt/utility, -/obj/item/device/radio/off, -/obj/item/device/radio/off, +/obj/item/radio/off, +/obj/item/radio/off, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/floorgrime, /area/shuttle/pirate) @@ -717,7 +717,7 @@ layer = 2.9 }, /obj/item/storage/toolbox/mechanical, -/obj/item/device/multitool, +/obj/item/multitool, /turf/open/floor/plasteel/floorgrime, /area/shuttle/pirate) "bL" = ( @@ -1077,7 +1077,7 @@ /obj/item/storage/belt/utility{ pixel_x = 4 }, -/obj/item/device/analyzer{ +/obj/item/analyzer{ pixel_x = 3; pixel_y = 2 }, @@ -1614,7 +1614,7 @@ pixel_x = 4; pixel_y = 4 }, -/obj/item/device/multitool, +/obj/item/multitool, /obj/machinery/light/small, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/yellow/corner, diff --git a/_maps/templates/shelter_1.dmm b/_maps/templates/shelter_1.dmm index fff5f4c2cd..f5b2e141f4 100644 --- a/_maps/templates/shelter_1.dmm +++ b/_maps/templates/shelter_1.dmm @@ -17,7 +17,7 @@ /turf/open/floor/pod, /area/survivalpod) "e" = ( -/obj/item/device/gps/computer, +/obj/item/gps/computer, /turf/open/floor/pod, /area/survivalpod) "f" = ( diff --git a/_maps/templates/shelter_2.dmm b/_maps/templates/shelter_2.dmm index 85de29e8c7..8951db3d37 100644 --- a/_maps/templates/shelter_2.dmm +++ b/_maps/templates/shelter_2.dmm @@ -23,7 +23,7 @@ /turf/open/floor/pod, /area/survivalpod) "g" = ( -/obj/item/device/gps/computer, +/obj/item/gps/computer, /turf/open/floor/pod, /area/survivalpod) "h" = ( diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index a1a1a25724..a05aaf3265 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -56,6 +56,8 @@ #define FIRE_SPREAD_RADIOSITY_SCALE 0.85 #define FIRE_GROWTH_RATE 40000 //For small fires #define PLASMA_MINIMUM_BURN_TEMPERATURE (100+T0C) +#define PLASMA_UPPER_TEMPERATURE (1370+T0C) +#define PLASMA_OXYGEN_FULLBURN 10 //GASES #define MIN_TOXIC_GAS_DAMAGE 1 diff --git a/code/__DEFINES/cinematics.dm b/code/__DEFINES/cinematics.dm index 22e0943802..aa19ffb4cf 100644 --- a/code/__DEFINES/cinematics.dm +++ b/code/__DEFINES/cinematics.dm @@ -9,4 +9,5 @@ #define CINEMATIC_NUKE_FAKE 9 #define CINEMATIC_NUKE_NO_CORE 10 #define CINEMATIC_NUKE_FAR 11 -#define CINEMATIC_NUKE_CLOWNOP 12 \ No newline at end of file +#define CINEMATIC_NUKE_CLOWNOP 12 +#define CINEMATIC_CULT_NUKE 13 \ No newline at end of file diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index d955ed23d4..caf7c13ac2 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -72,6 +72,9 @@ #define COMSIG_AREA_ENTERED "area_entered" //from base of area/Entered(): (atom/movable/M) #define COMSIG_AREA_EXITED "area_exited" //from base of area/Exited(): (atom/movable/M) +// /turf signals +#define COMSIG_TURF_CHANGE "turf_change" //from base of turf/ChangeTurf(): (path, list/new_baseturfs, flags, list/transferring_comps) + // /atom/movable signals #define COMSIG_MOVABLE_MOVED "movable_moved" //from base of atom/movable/Moved(): (/atom, dir) #define COMSIG_MOVABLE_CROSSED "movable_crossed" //from base of atom/movable/Crossed(): (/atom/movable) @@ -136,11 +139,14 @@ #define COMSIG_TRY_STORAGE_FILL_TYPE "storage_fill_type" //(type, amount = INFINITY, force = FALSE) //don't fuck this up. Force will ignore max_items, and amount is normally clamped to max_items. #define COMSIG_TRY_STORAGE_TAKE "storage_take_obj" //(obj, new_loc, force = FALSE) - returns bool #define COMSIG_TRY_STORAGE_QUICK_EMPTY "storage_quick_empty" //(loc) - returns bool - if loc is null it will dump at parent location. -#define COMSIG_TRY_STORAGE_RETURN_INVENTORY "storage_return_inventory" //(list/list_to_inject_results_into) +#define COMSIG_TRY_STORAGE_RETURN_INVENTORY "storage_return_inventory" //(list/list_to_inject_results_into, recursively_search_inside_storages = TRUE) #define COMSIG_TRY_STORAGE_CAN_INSERT "storage_can_equip" //(obj/item/insertion_candidate, mob/user, silent) - returns bool /*******Non-Signal Component Related Defines*******/ +//Redirection component init flags +#define REDIRECT_TRANSFER_WITH_TURF 1 + //Arch #define ARCH_PROB "probability" //Probability for each item #define ARCH_MAXDROP "max_drop_amount" //each item's max drop amount diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 58cbdb3eef..a263e9aa7d 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -10,13 +10,9 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define DF_USE_TAG (1<<0) #define DF_VAR_EDITED (1<<1) -//FLAGS BITMASK -#define STOPSPRESSUREDMAGE_1 (1<<0) //This flag is used on the flags_1 variable for SUIT and HEAD items which stop pressure damage. Note that the flag 1 was previous used as ONBACK, so it is possible for some code to use (flags & 1) when checking if something can be put on your back. Replace this code with (inv_flags & SLOT_BACK) if you see it anywhere -//To successfully stop you taking all pressure damage you must have both a suit and head item with this flag. - #define NODROP_1 (1<<1) // This flag makes it so that an item literally cannot be removed at all, or at least that's how it should be. Only deleted. #define NOBLUDGEON_1 (1<<2) // when an item has this it produces no "X has been hit by Y with Z" message in the default attackby() -#define MASKINTERNALS_1 (1<<3) // mask allows internals + #define HEAR_1 (1<<4) // This flag is what recursive_hear_check() uses to determine wether to add an item to the hearer list or not. #define CHECK_RICOCHET_1 (1<<5) // Projectiels will check ricochet on things impacted that have this. #define CONDUCT_1 (1<<6) // conducts electricity (metal etc.) @@ -25,11 +21,6 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define OVERLAY_QUEUED_1 (1<<8) // atom queued to SSoverlay #define ON_BORDER_1 (1<<9) // item has priority to check when entering or leaving -#define NOSLIP_1 (1<<10) //prevents from slipping on wet floors, in space etc - -// BLOCK_GAS_SMOKE_EFFECT_1 only used in masks at the moment. -#define BLOCK_GAS_SMOKE_EFFECT_1 (1<<12) // blocks the effect that chemical clouds would have on a mob --glasses, mask and helmets ONLY! -#define THICKMATERIAL_1 (1<<13) //prevents syringes, parapens and hypos if the external suit or helmet (if targeting head) has this flag. Example: space suits, biosuit, bombsuits, thick suits that cover your body. #define DROPDEL_1 (1<<14) // When dropped, it calls qdel on itself #define PREVENT_CLICK_UNDER_1 (1<<15) //Prevent clicking things below it on the same turf eg. doors/ fulltile windows @@ -53,9 +44,6 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 // Stops you from putting things like an RCD or other items into an ORM or protolathe for materials. #define NO_MAT_REDEMPTION_2 (1<<10) -// LAVA_PROTECT used on the flags_2 variable for both SUIT and HEAD items, and stops lava damage. Must be present in both to stop lava damage. -#define LAVA_PROTECT_2 (1<<11) - //turf-only flags #define NOJAUNT_1 (1<<0) #define UNUSED_TRANSIT_TURF_1 (1<<1) diff --git a/code/__DEFINES/food.dm b/code/__DEFINES/food.dm index 44df6695a2..a68d29c14c 100644 --- a/code/__DEFINES/food.dm +++ b/code/__DEFINES/food.dm @@ -10,3 +10,4 @@ #define SUGAR (1<<9) #define GROSS (1<<10) #define TOXIC (1<<11) +#define PINEAPPLE (1<<12) diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm index 4e2b591ea9..7ad5041344 100644 --- a/code/__DEFINES/inventory.dm +++ b/code/__DEFINES/inventory.dm @@ -14,76 +14,76 @@ #define STORAGE_VIEW_DEPTH 2 //ITEM INVENTORY SLOT BITMASKS -#define SLOT_OCLOTHING (1<<0) -#define SLOT_ICLOTHING (1<<1) -#define SLOT_GLOVES (1<<2) -#define SLOT_EYES (1<<3) -#define SLOT_EARS (1<<4) -#define SLOT_MASK (1<<5) -#define SLOT_HEAD (1<<6) -#define SLOT_FEET (1<<7) -#define SLOT_ID (1<<8) -#define SLOT_BELT (1<<9) -#define SLOT_BACK (1<<10) -#define SLOT_POCKET (1<<11) // this is to allow items with a w_class of WEIGHT_CLASS_NORMAL or WEIGHT_CLASS_BULKY to fit in pockets. -#define SLOT_DENYPOCKET (1<<12) // this is to deny items with a w_class of WEIGHT_CLASS_SMALL or WEIGHT_CLASS_TINY to fit in pockets. -#define SLOT_NECK (1<<13) +#define ITEM_SLOT_OCLOTHING (1<<0) +#define ITEM_SLOT_ICLOTHING (1<<1) +#define ITEM_SLOT_GLOVES (1<<2) +#define ITEM_SLOT_EYES (1<<3) +#define ITEM_SLOT_EARS (1<<4) +#define ITEM_SLOT_MASK (1<<5) +#define ITEM_SLOT_HEAD (1<<6) +#define ITEM_SLOT_FEET (1<<7) +#define ITEM_SLOT_ID (1<<8) +#define ITEM_SLOT_BELT (1<<9) +#define ITEM_SLOT_BACK (1<<10) +#define ITEM_SLOT_POCKET (1<<11) // this is to allow items with a w_class of WEIGHT_CLASS_NORMAL or WEIGHT_CLASS_BULKY to fit in pockets. +#define ITEM_SLOT_DENYPOCKET (1<<12) // this is to deny items with a w_class of WEIGHT_CLASS_SMALL or WEIGHT_CLASS_TINY to fit in pockets. +#define ITEM_SLOT_NECK (1<<13) //SLOTS -#define slot_back 1 -#define slot_wear_mask 2 -#define slot_handcuffed 3 -#define slot_hands 4 //wherever you provide a slot for hands you provide slot_hands - //slot_hands as a slot will pick ANY available hand -#define slot_belt 5 -#define slot_wear_id 6 -#define slot_ears 7 -#define slot_glasses 8 -#define slot_gloves 9 -#define slot_neck 10 -#define slot_head 11 -#define slot_shoes 12 -#define slot_wear_suit 13 -#define slot_w_uniform 14 -#define slot_l_store 15 -#define slot_r_store 16 -#define slot_s_store 17 -#define slot_in_backpack 18 -#define slot_legcuffed 19 -#define slot_generic_dextrous_storage 20 +#define SLOT_BACK 1 +#define SLOT_WEAR_MASK 2 +#define SLOT_HANDCUFFED 3 +#define SLOT_HANDS 4 //wherever you provide a slot for hands you provide SLOT_HANDS + //SLOT_HANDS as a slot will pick ANY available hand +#define SLOT_BELT 5 +#define SLOT_WEAR_ID 6 +#define SLOT_EARS 7 +#define SLOT_GLASSES 8 +#define SLOT_GLOVES 9 +#define SLOT_NECK 10 +#define SLOT_HEAD 11 +#define SLOT_SHOES 12 +#define SLOT_WEAR_SUIT 13 +#define SLOT_W_UNIFORM 14 +#define SLOT_L_STORE 15 +#define SLOT_R_STORE 16 +#define SLOT_S_STORE 17 +#define SLOT_IN_BACKPACK 18 +#define SLOT_LEGCUFFED 19 +#define SLOT_GENERC_DEXTROUS_STORAGE 20 -#define slots_amt 20 // Keep this up to date! +#define SLOTS_AMT 20 // Keep this up to date! //I hate that this has to exist /proc/slotdefine2slotbit(slotdefine) //Keep this up to date with the value of SLOT BITMASKS and SLOTS (the two define sections above) . = 0 switch(slotdefine) - if(slot_back) - . = SLOT_BACK - if(slot_wear_mask) - . = SLOT_MASK - if(slot_neck) - . = SLOT_NECK - if(slot_belt) - . = SLOT_BELT - if(slot_wear_id) - . = SLOT_ID - if(slot_ears) - . = SLOT_EARS - if(slot_glasses) - . = SLOT_EYES - if(slot_gloves) - . = SLOT_GLOVES - if(slot_head) - . = SLOT_HEAD - if(slot_shoes) - . = SLOT_FEET - if(slot_wear_suit) - . = SLOT_OCLOTHING - if(slot_w_uniform) - . = SLOT_ICLOTHING - if(slot_l_store, slot_r_store) - . = SLOT_POCKET + if(SLOT_BACK) + . = ITEM_SLOT_BACK + if(SLOT_WEAR_MASK) + . = ITEM_SLOT_MASK + if(SLOT_NECK) + . = ITEM_SLOT_NECK + if(SLOT_BELT) + . = ITEM_SLOT_BELT + if(SLOT_WEAR_ID) + . = ITEM_SLOT_ID + if(SLOT_EARS) + . = ITEM_SLOT_EARS + if(SLOT_GLASSES) + . = ITEM_SLOT_EYES + if(SLOT_GLOVES) + . = ITEM_SLOT_GLOVES + if(SLOT_HEAD) + . = ITEM_SLOT_HEAD + if(SLOT_SHOES) + . = ITEM_SLOT_FEET + if(SLOT_WEAR_SUIT) + . = ITEM_SLOT_OCLOTHING + if(SLOT_W_UNIFORM) + . = ITEM_SLOT_ICLOTHING + if(SLOT_L_STORE, SLOT_R_STORE) + . = ITEM_SLOT_POCKET //Bit flags for the flags_inv variable, which determine when a piece of clothing hides another. IE a helmet hiding glasses. @@ -151,7 +151,7 @@ GLOBAL_LIST_INIT(advanced_hardsuit_allowed, typecacheof(list( /obj/item/ammo_box, /obj/item/ammo_casing, - /obj/item/device/flashlight, + /obj/item/flashlight, /obj/item/gun, /obj/item/melee/baton, /obj/item/reagent_containers/spray/pepper, @@ -161,7 +161,7 @@ GLOBAL_LIST_INIT(advanced_hardsuit_allowed, typecacheof(list( GLOBAL_LIST_INIT(security_hardsuit_allowed, typecacheof(list( /obj/item/ammo_box, /obj/item/ammo_casing, - /obj/item/device/flashlight, + /obj/item/flashlight, /obj/item/gun/ballistic, /obj/item/gun/energy, /obj/item/melee/baton, @@ -172,9 +172,9 @@ GLOBAL_LIST_INIT(security_hardsuit_allowed, typecacheof(list( GLOBAL_LIST_INIT(detective_vest_allowed, typecacheof(list( /obj/item/ammo_box, /obj/item/ammo_casing, - /obj/item/device/detective_scanner, - /obj/item/device/flashlight, - /obj/item/device/taperecorder, + /obj/item/detective_scanner, + /obj/item/flashlight, + /obj/item/taperecorder, /obj/item/gun/ballistic, /obj/item/gun/energy, /obj/item/lighter, @@ -189,7 +189,7 @@ GLOBAL_LIST_INIT(detective_vest_allowed, typecacheof(list( GLOBAL_LIST_INIT(security_vest_allowed, typecacheof(list( /obj/item/ammo_box, /obj/item/ammo_casing, - /obj/item/device/flashlight, + /obj/item/flashlight, /obj/item/gun/ballistic, /obj/item/gun/energy, /obj/item/kitchen/knife/combat, @@ -203,7 +203,7 @@ GLOBAL_LIST_INIT(security_vest_allowed, typecacheof(list( GLOBAL_LIST_INIT(security_wintercoat_allowed, typecacheof(list( /obj/item/ammo_box, /obj/item/ammo_casing, - /obj/item/device/flashlight, + /obj/item/flashlight, /obj/item/storage/fancy/cigarettes, /obj/item/gun/ballistic, /obj/item/gun/energy, diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 6d514d6d9b..772987185b 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -163,13 +163,13 @@ GLOBAL_LIST_INIT(pointed_types, typecacheof(list( #define isbodypart(A) (istype(A, /obj/item/bodypart)) //Assemblies -#define isassembly(O) (istype(O, /obj/item/device/assembly)) +#define isassembly(O) (istype(O, /obj/item/assembly)) -#define isigniter(O) (istype(O, /obj/item/device/assembly/igniter)) +#define isigniter(O) (istype(O, /obj/item/assembly/igniter)) -#define isprox(O) (istype(O, /obj/item/device/assembly/prox_sensor)) +#define isprox(O) (istype(O, /obj/item/assembly/prox_sensor)) -#define issignaler(O) (istype(O, /obj/item/device/assembly/signaler)) +#define issignaler(O) (istype(O, /obj/item/assembly/signaler)) GLOBAL_LIST_INIT(glass_sheet_types, typecacheof(list( /obj/item/stack/sheet/glass, diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm index 9350116635..9f0fdc27b2 100644 --- a/code/__DEFINES/layers.dm +++ b/code/__DEFINES/layers.dm @@ -6,6 +6,7 @@ #define PLANE_SPACE -95 #define PLANE_SPACE_PARALLAX -90 +#define FLOOR_PLANE -2 #define GAME_PLANE -1 #define BLACKNESS_PLANE 0 //To keep from conflicts with SEE_BLACKNESS internals #define SPACE_LAYER 1.8 diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 3267a43d5a..391d55fe59 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -378,7 +378,7 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE #define BEAT_SLOW 2 #define BEAT_NONE 0 -//http://www.byond.com/docs/ref/info.html#/atom/var/mouse_opacity +//https://secure.byond.com/docs/ref/info.html#/atom/var/mouse_opacity #define MOUSE_OPACITY_TRANSPARENT 0 #define MOUSE_OPACITY_ICON 1 #define MOUSE_OPACITY_OPAQUE 2 @@ -445,3 +445,8 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE #define NO_INIT_PARAMETER "no-init" #define EGG_LAYING_MESSAGES list("lays an egg.","squats down and croons.","begins making a huge racket.","begins clucking raucously.") + +// Used by PDA and cartridge code to reduce repetitiveness of spritesheets +#define PDAIMG(what) {""} +//Filters +#define AMBIENT_OCCLUSION filter(type="drop_shadow", x=0, y=-2, size=4, border=4, color="#04080FAA") diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 15033fcf48..64a4089543 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -258,7 +258,7 @@ // Roundstart trait system -#define MAX_TRAITS 6 //The maximum amount of traits one character can have at roundstart +#define MAX_QUIRKS 6 //The maximum amount of quirks one character can have at roundstart // AI Toggles #define AI_CAMERA_LUMINOSITY 5 diff --git a/code/__DEFINES/networks.dm b/code/__DEFINES/networks.dm index 0aec59db9b..09b9e4cadf 100644 --- a/code/__DEFINES/networks.dm +++ b/code/__DEFINES/networks.dm @@ -1 +1,3 @@ -#define HID_RESTRICTED_END 101 //the first nonrestricted ID, automatically assigned on connection creation. +#define HID_RESTRICTED_END 101 //the first nonrestricted ID, automatically assigned on connection creation. + +#define NETWORK_BROADCAST_ID "ALL" diff --git a/code/__DEFINES/obj_flags.dm b/code/__DEFINES/obj_flags.dm index bfbf6f866a..1f4739491a 100644 --- a/code/__DEFINES/obj_flags.dm +++ b/code/__DEFINES/obj_flags.dm @@ -18,3 +18,12 @@ #define IN_INVENTORY (1<<1) //is this item equipped into an inventory slot or hand of a mob? used for tooltips #define FORCE_STRING_OVERRIDE (1<<2) // used for tooltips #define NEEDS_PERMIT (1<<3) //Used by security bots to determine if this item is safe for public use. + +// Flags for the clothing_flags var on /obj/item/clothing + +#define LAVAPROTECT (1<<0) +#define STOPSPRESSUREDAMAGE (1<<1) //SUIT and HEAD items which stop pressure damage. To stop you taking all pressure damage you must have both a suit and head item with this flag. +#define BLOCK_GAS_SMOKE_EFFECT (1<<2) // blocks the effect that chemical clouds would have on a mob --glasses, mask and helmets ONLY! +#define MASKINTERNALS (1<<3) // mask allows internals +#define NOSLIP (1<<4) //prevents from slipping on wet floors, in space etc +#define THICKMATERIAL (1<<5) //prevents syringes, parapens and hypos if the external suit or helmet (if targeting head) has this flag. Example: space suits, biosuit, bombsuits, thick suits that cover your body. diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index 7ba693be0a..0dc8a38899 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -64,6 +64,7 @@ #define EXP_TYPE_ANTAG "Antag" #define EXP_TYPE_SPECIAL "Special" #define EXP_TYPE_GHOST "Ghost" +#define EXP_TYPE_ADMIN "Admin" //Flags in the players table in the db #define DB_FLAG_EXEMPT 1 diff --git a/code/__DEFINES/server_tools.dm b/code/__DEFINES/server_tools.dm deleted file mode 100644 index a1764880c3..0000000000 --- a/code/__DEFINES/server_tools.dm +++ /dev/null @@ -1,128 +0,0 @@ -// /tg/station 13 server tools API -#define SERVICE_API_VERSION_STRING "3.2.0.2" - -//CONFIGURATION -//use this define if you want to do configuration outside of this file -#ifndef SERVER_TOOLS_EXTERNAL_CONFIGURATION -//Comment this out once you've filled in the below -#error /tg/station server tools interface unconfigured - -//Required interfaces (fill in with your codebase equivalent): - -//create a global variable named `Name` and set it to `Value` -//These globals must not be modifiable from anywhere outside of the server tools -#define SERVER_TOOLS_DEFINE_AND_SET_GLOBAL(Name, Value) -//Read the value in the global variable `Name` -#define SERVER_TOOLS_READ_GLOBAL(Name) -//Set the value in the global variable `Name` to `Value` -#define SERVER_TOOLS_WRITE_GLOBAL(Name, Value) -//display an announcement `message` from the server to all players -#define SERVER_TOOLS_WORLD_ANNOUNCE(message) -//Write a string `message` to a server log -#define SERVER_TOOLS_LOG(message) -//Notify current in-game administrators of a string `event` -#define SERVER_TOOLS_NOTIFY_ADMINS(event) -//The current amount of connected clients -#define SERVER_TOOLS_CLIENT_COUNT -#endif - -//Required hooks: - -//Put this somewhere in /world/New() that is always run -#define SERVER_TOOLS_ON_NEW ServiceInit() -//Put this somewhere in /world/Topic(T, Addr, Master, Keys) that is always run before T is modified -#define SERVER_TOOLS_ON_TOPIC var/service_topic_return = ServiceCommand(params2list(T)); if(service_topic_return) return service_topic_return -//Put at the beginning of world/Reboot(reason) -#define SERVER_TOOLS_ON_REBOOT ServiceReboot() - -//Optional callable functions: - -//Returns the string version of the API -#define SERVER_TOOLS_API_VERSION ServiceAPIVersion() -//Returns TRUE if the world was launched under the server tools and the API matches, FALSE otherwise -//No function below this succeed if this is FALSE -#define SERVER_TOOLS_PRESENT RunningService() -//Gets the current version of the service running the server -#define SERVER_TOOLS_VERSION ServiceVersion() -//Forces a hard reboot of BYOND by ending the process -//unlike del(world) clients will try to reconnect -//If the service has not requested a shutdown, the world will reboot shortly after -#define SERVER_TOOLS_REBOOT_BYOND world.ServiceEndProcess() -/* - Gets the list of any testmerged github pull requests - - "[PR Number]" => list( - "title" -> PR title - "commit" -> Full hash of commit merged - "author" -> Github username of the author of the PR - ) -*/ -#define SERVER_TOOLS_PR_LIST GetTestMerges() -//Sends a message to connected game chats -#define SERVER_TOOLS_CHAT_BROADCAST(message) world.ChatBroadcast(message) -//Sends a message to connected admin chats -#define SERVER_TOOLS_RELAY_BROADCAST(message) world.AdminBroadcast(message) - -//IMPLEMENTATION - -#define REBOOT_MODE_NORMAL 0 -#define REBOOT_MODE_HARD 1 -#define REBOOT_MODE_SHUTDOWN 2 - -#define SERVICE_WORLD_PARAM "server_service" -#define SERVICE_VERSION_PARAM "server_service_version" -#define SERVICE_INSTANCE_PARAM "server_instance" -#define SERVICE_PR_TEST_JSON "prtestjob.json" -#define SERVICE_INTERFACE_DLL "TGDreamDaemonBridge.dll" -#define SERVICE_INTERFACE_FUNCTION "DDEntryPoint" - -#define SERVICE_CMD_HARD_REBOOT "hard_reboot" -#define SERVICE_CMD_GRACEFUL_SHUTDOWN "graceful_shutdown" -#define SERVICE_CMD_WORLD_ANNOUNCE "world_announce" -#define SERVICE_CMD_LIST_CUSTOM "list_custom_commands" -#define SERVICE_CMD_API_COMPATIBLE "api_compat" -#define SERVICE_CMD_PLAYER_COUNT "client_count" - -#define SERVICE_CMD_PARAM_KEY "serviceCommsKey" -#define SERVICE_CMD_PARAM_COMMAND "command" -#define SERVICE_CMD_PARAM_SENDER "sender" -#define SERVICE_CMD_PARAM_CUSTOM "custom" - -#define SERVICE_JSON_PARAM_HELPTEXT "help_text" -#define SERVICE_JSON_PARAM_ADMINONLY "admin_only" -#define SERVICE_JSON_PARAM_REQUIREDPARAMETERS "required_parameters" - -#define SERVICE_REQUEST_KILL_PROCESS "killme" -#define SERVICE_REQUEST_IRC_BROADCAST "irc" -#define SERVICE_REQUEST_IRC_ADMIN_CHANNEL_MESSAGE "send2irc" -#define SERVICE_REQUEST_WORLD_REBOOT "worldreboot" -#define SERVICE_REQUEST_API_VERSION "api_ver" - -#define SERVICE_RETURN_SUCCESS "SUCCESS" - -/* -The MIT License - -Copyright (c) 2017 Jordan Brown - -Permission is hereby granted, free of charge, -to any person obtaining a copy of this software and -associated documentation files (the "Software"), to -deal in the Software without restriction, including -without limitation the rights to use, copy, modify, -merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom -the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 36b25bf6c6..9b49ec2e9d 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -1,7 +1,7 @@ //Update this whenever the db schema changes //make sure you add an update to the schema_version stable in the db changelog #define DB_MAJOR_VERSION 4 -#define DB_MINOR_VERSION 1 +#define DB_MINOR_VERSION 2 //Timing subsystem //Don't run if there is an identical unique timer active @@ -56,7 +56,7 @@ #define INIT_ORDER_RESEARCH 14 #define INIT_ORDER_EVENTS 13 #define INIT_ORDER_JOBS 12 -#define INIT_ORDER_TRAITS 11 +#define INIT_ORDER_QUIRKS 11 #define INIT_ORDER_TICKER 10 #define INIT_ORDER_MAPPING 9 #define INIT_ORDER_NETWORKS 8 @@ -82,6 +82,7 @@ // Subsystem fire priority, from lowest to highest priority // If the subsystem isn't listed here it's either DEFAULT or PROCESS (if it's a processing subsystem child) +#define FIRE_PRIORITY_PING 10 #define FIRE_PRIORITY_IDLE_NPC 10 #define FIRE_PRIORITY_SERVER_MAINT 10 #define FIRE_PRIORITY_RESEARCH 10 diff --git a/code/__DEFINES/tgs.config.dm b/code/__DEFINES/tgs.config.dm new file mode 100644 index 0000000000..00cbae7629 --- /dev/null +++ b/code/__DEFINES/tgs.config.dm @@ -0,0 +1,19 @@ +#define TGS_EXTERNAL_CONFIGURATION +#define TGS_DEFINE_AND_SET_GLOBAL(Name, Value) GLOBAL_VAR_INIT(##Name, ##Value); GLOBAL_PROTECT(##Name) +#define TGS_READ_GLOBAL(Name) GLOB.##Name +#define TGS_WRITE_GLOBAL(Name, Value) GLOB.##Name = ##Value +#define TGS_WORLD_ANNOUNCE(message) to_chat(world, "[html_encode(##message)]") +#define TGS_INFO_LOG(message) log_world("TGS: Info: [##message]") +#define TGS_ERROR_LOG(message) log_world("TGS: Error: [##message]") +#define TGS_NOTIFY_ADMINS(event) message_admins(##event) +#define TGS_CLIENT_COUNT GLOB.clients.len +#define TGS_PROTECT_DATUM(Path)\ +##Path/can_vv_get(var_name){\ + return FALSE;\ +}\ +##Path/vv_edit_var(var_name, var_value){\ + return FALSE;\ +}\ +##Path/CanProcCall(procname){\ + return FALSE;\ +} diff --git a/code/__DEFINES/tgs.dm b/code/__DEFINES/tgs.dm new file mode 100644 index 0000000000..651be685c5 --- /dev/null +++ b/code/__DEFINES/tgs.dm @@ -0,0 +1,202 @@ +//tgstation-server DMAPI + +//All functions and datums outside this document are subject to change with any version and should not be relied on + +//CONFIGURATION + +//create this define if you want to do configuration outside of this file +#ifndef TGS_EXTERNAL_CONFIGURATION + +//Comment this out once you've filled in the below +#error TGS API unconfigured + +//Required interfaces (fill in with your codebase equivalent): + +//create a global variable named `Name` and set it to `Value` +//These globals must not be modifiable from anywhere outside of the server tools +#define TGS_DEFINE_AND_SET_GLOBAL(Name, Value) + +//Read the value in the global variable `Name` +#define TGS_READ_GLOBAL(Name) + +//Set the value in the global variable `Name` to `Value` +#define TGS_WRITE_GLOBAL(Name, Value) + +//Disallow ANYONE from reflecting a given `path`, security measure to prevent in-game priveledge escalation +#define TGS_PROTECT_DATUM(Path) + +//display an announcement `message` from the server to all players +#define TGS_WORLD_ANNOUNCE(message) + +//Notify current in-game administrators of a string `event` +#define TGS_NOTIFY_ADMINS(event) + +//Write an info `message` to a server log +#define TGS_INFO_LOG(message) + +//Write an error `message` to a server log +#define TGS_ERROR_LOG(message) + +//Get the number of connected /clients +#define TGS_CLIENT_COUNT + +#endif + +//EVENT CODES + +//TODO + +//REQUIRED HOOKS + +//Call this somewhere in /world/New() that is always run +//event_handler: optional user defined event handler. The default behaviour is to broadcast the event in english to all connected admin channels +/world/proc/TgsNew(datum/tgs_event_handler/event_handler) + return + +//Call this when your initializations are complete and your game is ready to play before any player interactions happen +//This may use world.sleep_offline to make this happen so ensure no changes are made to it while this call is running +/world/proc/TgsInitializationComplete() + return + +//Put this somewhere in /world/Topic(T, Addr, Master, Keys) that is always run before T is modified +#define TGS_TOPIC var/tgs_topic_return = TgsTopic(T); if(tgs_topic_return) return tgs_topic_return + +//Call this at the beginning of world/Reboot(reason) +/world/proc/TgsReboot() + return + +//DATUM DEFINITIONS +//unless otherwise specified all datums defined here should be considered read-only, warranty void if written + +//represents git revision information about the current world build +/datum/tgs_revision_information + var/commit //full sha of compiled commit + var/origin_commit //full sha of last known remote commit. This may be null if the TGS repository is not currently tracking a remote branch + +//represents a merge of a GitHub pull request +/datum/tgs_revision_information/test_merge + var/number //pull request number + var/title //pull request title + var/body //pull request body + var/author //pull request github author + var/url //link to pull request html + var/pull_request_commit //commit of the pull request when it was merged + var/time_merged //timestamp of when the merge commit for the pull request was created + var/comment //optional comment left by the one who initiated the test merge + +//represents a connected chat channel +/datum/tgs_chat_channel + var/id //internal channel representation + var/friendly_name //user friendly channel name + var/server_name //server name the channel resides on + var/provider_name //chat provider for the channel + var/is_admin_channel //if the server operator has marked this channel for game admins only + var/is_private_channel //if this is a private chat channel + +//represents a chat user +/datum/tgs_chat_user + var/id //Internal user representation + var/friendly_name //The user's public name + var/mention //The text to use to ping this user in a message + var/datum/tgs_chat_channel/channel //The /datum/tgs_chat_channel this user was from + +//user definable callback for handling events +/datum/tgs_event_handler/proc/HandleEvent(event_code) + return + +//user definable chat command +/datum/tgs_chat_command + var/name = "" //the string to trigger this command on a chat bot. e.g. TGS3_BOT: do_this_command + var/help_text = "" //help text for this command + var/admin_only = FALSE //set to TRUE if this command should only be usable by registered chat admins + +//override to implement command +//sender: The tgs_chat_user who send to command +//params: The trimmed string following the command name +//The return value will be stringified and sent to the appropriate chat +/datum/tgs_chat_command/proc/Run(datum/tgs_chat_user/sender, params) + CRASH("[type] has no implementation for Run()") + +//FUNCTIONS + +//Returns the respective string version of the API +/world/proc/TgsMaximumAPIVersion() + return + +/world/proc/TgsMinimumAPIVersion() + return + +//Gets the current version of the server tools running the server +/world/proc/TgsVersion() + return + +//Returns TRUE if the world was launched under the server tools and the API matches, FALSE otherwise +//No function below this succeeds if it returns FALSE +/world/proc/TgsAvailable() + return + +/world/proc/TgsInstanceName() + return + +//Get the current `/datum/tgs_revision_information` +/world/proc/TgsRevision() + return + +//Gets a list of active `/datum/tgs_revision_information/test_merge`s +/world/proc/TgsTestMerges() + return + +//Forces a hard reboot of BYOND by ending the process +//unlike del(world) clients will try to reconnect +//If the service has not requested a shutdown, the next server will take over +/world/proc/TgsEndProcess() + return + +//Gets a list of connected tgs_chat_channel +/world/proc/TgsChatChannelInfo() + return + +//Sends a message to connected game chats +//message: The message to send +//channels: optional channels to limit the broadcast to +/world/proc/TgsChatBroadcast(message, list/channels) + return + +//Send a message to non-admin connected chats +//message: The message to send +//admin_only: If TRUE, message will instead be sent to only admin connected chats +/world/proc/TgsTargetedChatBroadcast(message, admin_only) + return + +//Send a private message to a specific user +//message: The message to send +//user: The /datum/tgs_chat_user to send to +/world/proc/TgsChatPrivateMessage(message, datum/tgs_chat_user/user) + return + +/* +The MIT License + +Copyright (c) 2017 Jordan Brown + +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and +associated documentation files (the "Software"), to +deal in the Software without restriction, including +without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom +the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 94606273be..384e65bdcb 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -68,6 +68,7 @@ #define MAGIC_TRAIT "magic" #define TRAUMA_TRAIT "trauma" #define SPECIES_TRAIT "species" +#define ORGAN_TRAIT "organ" #define ROUNDSTART_TRAIT "roundstart" //cannot be removed without admin intervention // unique trait sources, still defines diff --git a/code/__HELPERS/_logging.dm b/code/__HELPERS/_logging.dm index 6585aebd36..48e2baac6e 100644 --- a/code/__HELPERS/_logging.dm +++ b/code/__HELPERS/_logging.dm @@ -128,6 +128,9 @@ /proc/log_qdel(text) WRITE_LOG(GLOB.world_qdel_log, "QDEL: [text]") +/proc/log_query_debug(text) + WRITE_LOG(GLOB.query_debug_log, "SQL: [text]") + /* Log to both DD and the logfile. */ /proc/log_world(text) WRITE_LOG(GLOB.world_runtime_log, text) diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index c18784690c..e75e1ed88a 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -188,7 +188,7 @@ if(sight_check && !isInSight(A_tmp, O)) passed=0 - else if(include_radio && istype(A, /obj/item/device/radio)) + else if(include_radio && istype(A, /obj/item/radio)) passed=1 if(sight_check && !isInSight(A, O)) @@ -234,10 +234,10 @@ processing_list.Cut(1, 2) processing_list += A.contents -/proc/get_mobs_in_radio_ranges(list/obj/item/device/radio/radios) +/proc/get_mobs_in_radio_ranges(list/obj/item/radio/radios) . = list() // Returns a list of mobs who can hear any of the radios given in @radios - for(var/obj/item/device/radio/R in radios) + for(var/obj/item/radio/R in radios) if(R) . |= get_hearers_in_view(R.canhear_range, R) diff --git a/code/__HELPERS/pronouns.dm b/code/__HELPERS/pronouns.dm index 3446a750ee..26af8b4489 100644 --- a/code/__HELPERS/pronouns.dm +++ b/code/__HELPERS/pronouns.dm @@ -188,55 +188,55 @@ /mob/living/carbon/human/p_they(capitalized, temp_gender) var/list/obscured = check_obscured_slots() var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) - if((slot_w_uniform in obscured) && skipface) + if((SLOT_W_UNIFORM in obscured) && skipface) temp_gender = PLURAL return ..() /mob/living/carbon/human/p_their(capitalized, temp_gender) var/list/obscured = check_obscured_slots() var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) - if((slot_w_uniform in obscured) && skipface) + if((SLOT_W_UNIFORM in obscured) && skipface) temp_gender = PLURAL return ..() /mob/living/carbon/human/p_them(capitalized, temp_gender) var/list/obscured = check_obscured_slots() var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) - if((slot_w_uniform in obscured) && skipface) + if((SLOT_W_UNIFORM in obscured) && skipface) temp_gender = PLURAL return ..() /mob/living/carbon/human/p_have(temp_gender) var/list/obscured = check_obscured_slots() var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) - if((slot_w_uniform in obscured) && skipface) + if((SLOT_W_UNIFORM in obscured) && skipface) temp_gender = PLURAL return ..() /mob/living/carbon/human/p_are(temp_gender) var/list/obscured = check_obscured_slots() var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) - if((slot_w_uniform in obscured) && skipface) + if((SLOT_W_UNIFORM in obscured) && skipface) temp_gender = PLURAL return ..() /mob/living/carbon/human/p_were(temp_gender) var/list/obscured = check_obscured_slots() var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) - if((slot_w_uniform in obscured) && skipface) + if((SLOT_W_UNIFORM in obscured) && skipface) temp_gender = PLURAL return ..() /mob/living/carbon/human/p_do(temp_gender) var/list/obscured = check_obscured_slots() var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) - if((slot_w_uniform in obscured) && skipface) + if((SLOT_W_UNIFORM in obscured) && skipface) temp_gender = PLURAL return ..() /mob/living/carbon/human/p_s(temp_gender) var/list/obscured = check_obscured_slots() var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) - if((slot_w_uniform in obscured) && skipface) + if((SLOT_W_UNIFORM in obscured) && skipface) temp_gender = PLURAL return ..() diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm index f16745979c..4a0be437c3 100644 --- a/code/__HELPERS/roundend.dm +++ b/code/__HELPERS/roundend.dm @@ -290,19 +290,26 @@ parts += "[GLOB.TAB]Nobody died this shift!" return parts.Join("
") -/datum/controller/subsystem/ticker/proc/show_roundend_report(client/C,common_report, popcount) - var/list/report_parts = list() - - report_parts += personal_report(C, popcount) - report_parts += common_report +/client/proc/roundend_report_file() + return "data/roundend_reports/[ckey].html" +/datum/controller/subsystem/ticker/proc/show_roundend_report(client/C, previous = FALSE) var/datum/browser/roundend_report = new(C, "roundend") roundend_report.width = 800 roundend_report.height = 600 - roundend_report.set_content(report_parts.Join()) + var/content + var/filename = C.roundend_report_file() + if(!previous) + var/list/report_parts = list(personal_report(C), GLOB.common_report) + content = report_parts.Join() + C.verbs -= /client/proc/show_previous_roundend_report + fdel(filename) + text2file(content, filename) + else + content = file2text(filename) + roundend_report.set_content(content) roundend_report.stylesheets = list() - roundend_report.add_stylesheet("roundend",'html/browser/roundend.css') - + roundend_report.add_stylesheet("roundend", 'html/browser/roundend.css') roundend_report.open(0) /datum/controller/subsystem/ticker/proc/personal_report(client/C, popcount) @@ -327,8 +334,6 @@ else parts += "
" parts += "
" - if(!GLOB.survivor_report) - GLOB.survivor_report = survivor_report(popcount) parts += GLOB.survivor_report parts += "
" @@ -336,8 +341,9 @@ /datum/controller/subsystem/ticker/proc/display_report(popcount) GLOB.common_report = build_roundend_report() + GLOB.survivor_report = survivor_report(popcount) for(var/client/C in GLOB.clients) - show_roundend_report(C,GLOB.common_report, popcount) + show_roundend_report(C, FALSE) give_show_report_button(C) CHECK_TICK @@ -359,7 +365,7 @@ for(var/mob/living/silicon/robot/robo in aiPlayer.connected_robots) borg_num-- if(robo.mind) - robolist += "[robo.name] (Played by: [robo.mind.key])[robo.stat ? " (Deactivated)" : ""][borg_num ?", ":""]
" + robolist += "[robo.name] (Played by: [robo.mind.key])[robo.stat == DEAD ? " (Deactivated)" : ""][borg_num ?", ":""]
" parts += "[robolist]" if(!borg_spacer) borg_spacer = TRUE @@ -458,7 +464,7 @@ /datum/action/report/Trigger() if(owner && GLOB.common_report && SSticker.current_state == GAME_STATE_FINISHED) - SSticker.show_roundend_report(owner.client,GLOB.common_report) + SSticker.show_roundend_report(owner.client, FALSE) /datum/action/report/IsAvailable() return 1 diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index a840d6144a..2db7b8bc78 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -698,7 +698,7 @@ GLOBAL_LIST_INIT(binary, list("0","1")) var/macro = lowertext(copytext(string, next_backslash + 1, next_space)) var/rest = next_backslash > leng ? "" : copytext(string, next_space + 1) - //See http://www.byond.com/docs/ref/info.html#/DM/text/macros + //See https://secure.byond.com/docs/ref/info.html#/DM/text/macros switch(macro) //prefixes/agnostic if("the") @@ -766,4 +766,3 @@ GLOBAL_LIST_INIT(binary, list("0","1")) return "twelfth" else return "[number]\th" - \ No newline at end of file diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index 79f6a2c007..1f788cf445 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -400,25 +400,25 @@ /proc/slot2body_zone(slot) switch(slot) - if(slot_back, slot_wear_suit, slot_w_uniform, slot_belt, slot_wear_id) + if(SLOT_BACK, SLOT_WEAR_SUIT, SLOT_W_UNIFORM, SLOT_BELT, SLOT_WEAR_ID) return BODY_ZONE_CHEST - if(slot_gloves, slot_hands, slot_handcuffed) + if(SLOT_GLOVES, SLOT_HANDS, SLOT_HANDCUFFED) return pick(BODY_ZONE_PRECISE_L_HAND, BODY_ZONE_PRECISE_R_HAND) - if(slot_head, slot_neck, slot_neck, slot_ears) + if(SLOT_HEAD, SLOT_NECK, SLOT_NECK, SLOT_EARS) return BODY_ZONE_HEAD - if(slot_wear_mask) + if(SLOT_WEAR_MASK) return BODY_ZONE_PRECISE_MOUTH - if(slot_glasses) + if(SLOT_GLASSES) return BODY_ZONE_PRECISE_EYES - if(slot_shoes) + if(SLOT_SHOES) return pick(BODY_ZONE_PRECISE_R_FOOT, BODY_ZONE_PRECISE_L_FOOT) - if(slot_legcuffed) + if(SLOT_LEGCUFFED) return pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) //adapted from http://www.tannerhelland.com/4435/convert-temperature-rgb-algorithm-code/ diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 6417ad8ed0..4230138cf6 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -831,7 +831,7 @@ GLOBAL_LIST_INIT(can_embed_types, typecacheof(list( Checks if that loc and dir has an item on the wall */ GLOBAL_LIST_INIT(WALLITEMS, typecacheof(list( - /obj/machinery/power/apc, /obj/machinery/airalarm, /obj/item/device/radio/intercom, + /obj/machinery/power/apc, /obj/machinery/airalarm, /obj/item/radio/intercom, /obj/structure/extinguisher_cabinet, /obj/structure/reagent_dispensers/peppertank, /obj/machinery/status_display, /obj/machinery/requests_console, /obj/machinery/light_switch, /obj/structure/sign, /obj/machinery/newscaster, /obj/machinery/firealarm, /obj/structure/noticeboard, /obj/machinery/button, diff --git a/code/_compile_options.dm b/code/_compile_options.dm index 8e2c03238d..67bbe24e38 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -30,7 +30,7 @@ #define MIN_COMPILER_VERSION 512 #if DM_VERSION < MIN_COMPILER_VERSION //Don't forget to update this part -#error Your version of BYOND is too out-of-date to compile this project. Go to byond.com/download and update. +#error Your version of BYOND is too out-of-date to compile this project. Go to https://secure.byond.com/download and update. #error You need version 512 or higher #endif diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 28af96e3c3..3743a28fbd 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -106,17 +106,15 @@ GLOBAL_LIST_INIT(bitfields, list( "REAGENT_NOREACT" = REAGENT_NOREACT ), "flags_1" = list( - "STOPSPRESSUREDMAGE_1 / NOJAUNT_1 (turfs)" = STOPSPRESSUREDMAGE_1, + "NOJAUNT_1" = NOJAUNT_1, "NODROP_1 / UNUSED_TRANSIT_TURF_1 (turfs)" = NODROP_1, "NOBLUDGEON_1 / CAN_BE_DIRTY_1 (turfs)" = NOBLUDGEON_1, - "MASKINTERNALS_1" = MASKINTERNALS_1, "HEAR_1 / NO_DEATHRATTLE_1 (turfs)" = HEAR_1, "CHECK_RICOCHET_1 / NO_RUINS_1 (turfs)" = CHECK_RICOCHET_1, "CONDUCT_1 / NO_LAVA_GEN_1" = CONDUCT_1, "ABSTRACT_1" = ABSTRACT_1, "NODECONSTRUCT_1" = NODECONSTRUCT_1, "OVERLAY_QUEUED_1" = OVERLAY_QUEUED_1, - "NOSLIP_1" = NOSLIP_1 ), "flags_2" = list( "SLOWS_WHILE_IN_HAND_2" = SLOWS_WHILE_IN_HAND_2, @@ -126,7 +124,14 @@ GLOBAL_LIST_INIT(bitfields, list( "BANG_PROTECT_2" = BANG_PROTECT_2, "OMNITONGUE_2" = OMNITONGUE_2, "TESLA_IGNORE_2" = TESLA_IGNORE_2, - "NO_MAT_REDEMPTION_2" = NO_MAT_REDEMPTION_2, - "LAVA_PROTECT_2" = LAVA_PROTECT_2 - ) + "NO_MAT_REDEMPTION_2" = NO_MAT_REDEMPTION_2 + ), + "clothing_flags" = list( + "LAVAPROTECT" = LAVAPROTECT, + "STOPSPRESSUREDAMAGE" = STOPSPRESSUREDAMAGE, + "BLOCK_GAS_SMOKE_EFFECT" = BLOCK_GAS_SMOKE_EFFECT, + "MASKINTERNALS" = MASKINTERNALS, + "NOSLIP" = NOSLIP, + "THICKMATERIAL" = THICKMATERIAL, + ) )) diff --git a/code/_globalvars/configuration.dm b/code/_globalvars/configuration.dm index f580eab3d5..7c5715e1bb 100644 --- a/code/_globalvars/configuration.dm +++ b/code/_globalvars/configuration.dm @@ -1,6 +1,6 @@ GLOBAL_REAL(config, /datum/controller/configuration) -GLOBAL_DATUM_INIT(revdata, /datum/getrev, new) +GLOBAL_DATUM(revdata, /datum/getrev) GLOBAL_VAR(host) GLOBAL_VAR(station_name) diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index 100407d777..92cd02f6aa 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -37,14 +37,14 @@ GLOBAL_LIST_INIT(maintenance_loot, list( /obj/item/clothing/mask/gas = 15, /obj/item/clothing/suit/hazardvest = 1, /obj/item/clothing/under/rank/vice = 1, - /obj/item/device/assembly/prox_sensor = 4, - /obj/item/device/assembly/timer = 3, - /obj/item/device/flashlight = 4, - /obj/item/device/flashlight/pen = 1, - /obj/item/device/flashlight/glowstick/random = 4, - /obj/item/device/multitool = 2, - /obj/item/device/radio/off = 2, - /obj/item/device/t_scanner = 5, + /obj/item/assembly/prox_sensor = 4, + /obj/item/assembly/timer = 3, + /obj/item/flashlight = 4, + /obj/item/flashlight/pen = 1, + /obj/item/flashlight/glowstick/random = 4, + /obj/item/multitool = 2, + /obj/item/radio/off = 2, + /obj/item/t_scanner = 5, /obj/item/airlock_painter = 1, /obj/item/stack/cable_coil/random = 4, /obj/item/stack/cable_coil/random/five = 6, @@ -91,13 +91,13 @@ GLOBAL_LIST_INIT(maintenance_loot, list( /obj/item/weaponcrafting/receiver = 2, /obj/item/clothing/head/cone = 2, /obj/item/grenade/smokebomb = 2, - /obj/item/device/geiger_counter = 3, + /obj/item/geiger_counter = 3, /obj/item/reagent_containers/food/snacks/grown/citrus/orange = 1, - /obj/item/device/radio/headset = 1, - /obj/item/device/assembly/infra = 1, - /obj/item/device/assembly/igniter = 2, - /obj/item/device/assembly/signaler = 2, - /obj/item/device/assembly/mousetrap = 2, + /obj/item/radio/headset = 1, + /obj/item/assembly/infra = 1, + /obj/item/assembly/igniter = 2, + /obj/item/assembly/signaler = 2, + /obj/item/assembly/mousetrap = 2, /obj/item/reagent_containers/syringe = 2, /obj/item/clothing/gloves/color/random = 8, /obj/item/clothing/shoes/laceup = 1, diff --git a/code/_globalvars/lists/typecache.dm b/code/_globalvars/lists/typecache.dm index f1e2b03790..f4e73f2994 100644 --- a/code/_globalvars/lists/typecache.dm +++ b/code/_globalvars/lists/typecache.dm @@ -10,3 +10,5 @@ GLOBAL_LIST_INIT(typecache_living, typecacheof(/mob/living)) GLOBAL_LIST_INIT(typecache_machine_or_structure, typecacheof(list(/obj/machinery, /obj/structure))) GLOBAL_LIST_INIT(typecache_shuttle_area, typecacheof(/area/shuttle)) + +GLOBAL_LIST_INIT(typecache_clothing, typecacheof(/obj/item/clothing)) diff --git a/code/_globalvars/logging.dm b/code/_globalvars/logging.dm index ff397785d8..545ffbcbef 100644 --- a/code/_globalvars/logging.dm +++ b/code/_globalvars/logging.dm @@ -20,6 +20,8 @@ GLOBAL_VAR(world_pda_log) GLOBAL_PROTECT(world_pda_log) GLOBAL_VAR(world_manifest_log) GLOBAL_PROTECT(world_manifest_log) +GLOBAL_VAR(query_debug_log) +GLOBAL_PROTECT(query_debug_log) GLOBAL_LIST_EMPTY(bombers) GLOBAL_PROTECT(bombers) diff --git a/code/_onclick/hud/drones.dm b/code/_onclick/hud/drones.dm index b6708b266d..8e39d96bf6 100644 --- a/code/_onclick/hud/drones.dm +++ b/code/_onclick/hud/drones.dm @@ -8,7 +8,7 @@ inv_box.icon_state = "suit_storage" // inv_box.icon_full = "template" inv_box.screen_loc = ui_drone_storage - inv_box.slot_id = slot_generic_dextrous_storage + inv_box.slot_id = SLOT_GENERC_DEXTROUS_STORAGE static_inventory += inv_box inv_box = new /obj/screen/inventory() @@ -17,7 +17,7 @@ inv_box.icon_state = "mask" // inv_box.icon_full = "template" inv_box.screen_loc = ui_drone_head - inv_box.slot_id = slot_head + inv_box.slot_id = SLOT_HEAD static_inventory += inv_box for(var/obj/screen/inventory/inv in (static_inventory + toggleable_inventory)) diff --git a/code/_onclick/hud/guardian.dm b/code/_onclick/hud/guardian.dm index dc57c2b25c..628efbffe5 100644 --- a/code/_onclick/hud/guardian.dm +++ b/code/_onclick/hud/guardian.dm @@ -45,7 +45,7 @@ inv_box.icon = ui_style inv_box.icon_state = "suit_storage" inv_box.screen_loc = ui_id - inv_box.slot_id = slot_generic_dextrous_storage + inv_box.slot_id = SLOT_GENERC_DEXTROUS_STORAGE static_inventory += inv_box using = new /obj/screen/guardian/Communicate() diff --git a/code/_onclick/hud/hud.dm b/code/_onclick/hud/hud.dm index e5de695789..e4318059d6 100644 --- a/code/_onclick/hud/hud.dm +++ b/code/_onclick/hud/hud.dm @@ -33,7 +33,7 @@ var/list/obj/screen/hotkeybuttons = list() //the buttons that can be used via hotkeys var/list/infodisplay = list() //the screen objects that display mob info (health, alien plasma, etc...) var/list/screenoverlays = list() //the screen objects used as whole screen overlays (flash, damageoverlay, etc...) - var/list/inv_slots[slots_amt] // /obj/screen/inventory objects, ordered by their slot ID. + var/list/inv_slots[SLOTS_AMT] // /obj/screen/inventory objects, ordered by their slot ID. var/list/hand_slots // /obj/screen/inventory/hand objects, assoc list of "[held_index]" = object var/list/obj/screen/plane_master/plane_masters = list() // see "appearance_flags" in the ref, assoc list of "[plane]" = object @@ -196,7 +196,9 @@ screenmob.client.screen -= infodisplay for(var/thing in plane_masters) - screenmob.client.screen += plane_masters[thing] + var/obj/screen/plane_master/PM = plane_masters[thing] + PM.backdrop(screenmob) + screenmob.client.screen += PM hud_version = display_hud_version persistent_inventory_update(screenmob) diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index 501c5fb601..2ac0f14f95 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -139,7 +139,7 @@ inv_box = new /obj/screen/inventory() inv_box.name = "i_clothing" inv_box.icon = ui_style - inv_box.slot_id = slot_w_uniform + inv_box.slot_id = SLOT_W_UNIFORM inv_box.icon_state = "uniform" inv_box.screen_loc = ui_iclothing toggleable_inventory += inv_box @@ -147,7 +147,7 @@ inv_box = new /obj/screen/inventory() inv_box.name = "o_clothing" inv_box.icon = ui_style - inv_box.slot_id = slot_wear_suit + inv_box.slot_id = SLOT_WEAR_SUIT inv_box.icon_state = "suit" inv_box.screen_loc = ui_oclothing toggleable_inventory += inv_box @@ -171,7 +171,7 @@ inv_box.icon = ui_style inv_box.icon_state = "id" inv_box.screen_loc = ui_id - inv_box.slot_id = slot_wear_id + inv_box.slot_id = SLOT_WEAR_ID static_inventory += inv_box inv_box = new /obj/screen/inventory() @@ -179,7 +179,7 @@ inv_box.icon = ui_style inv_box.icon_state = "mask" inv_box.screen_loc = ui_mask - inv_box.slot_id = slot_wear_mask + inv_box.slot_id = SLOT_WEAR_MASK toggleable_inventory += inv_box inv_box = new /obj/screen/inventory() @@ -187,7 +187,7 @@ inv_box.icon = ui_style inv_box.icon_state = "neck" inv_box.screen_loc = ui_neck - inv_box.slot_id = slot_neck + inv_box.slot_id = SLOT_NECK toggleable_inventory += inv_box inv_box = new /obj/screen/inventory() @@ -195,7 +195,7 @@ inv_box.icon = ui_style inv_box.icon_state = "back" inv_box.screen_loc = ui_back - inv_box.slot_id = slot_back + inv_box.slot_id = SLOT_BACK static_inventory += inv_box inv_box = new /obj/screen/inventory() @@ -203,7 +203,7 @@ inv_box.icon = ui_style inv_box.icon_state = "pocket" inv_box.screen_loc = ui_storage1 - inv_box.slot_id = slot_l_store + inv_box.slot_id = SLOT_L_STORE static_inventory += inv_box inv_box = new /obj/screen/inventory() @@ -211,7 +211,7 @@ inv_box.icon = ui_style inv_box.icon_state = "pocket" inv_box.screen_loc = ui_storage2 - inv_box.slot_id = slot_r_store + inv_box.slot_id = SLOT_R_STORE static_inventory += inv_box inv_box = new /obj/screen/inventory() @@ -219,7 +219,7 @@ inv_box.icon = ui_style inv_box.icon_state = "suit_storage" inv_box.screen_loc = ui_sstore1 - inv_box.slot_id = slot_s_store + inv_box.slot_id = SLOT_S_STORE static_inventory += inv_box using = new /obj/screen/resist() @@ -254,7 +254,7 @@ inv_box.icon = ui_style inv_box.icon_state = "gloves" inv_box.screen_loc = ui_gloves - inv_box.slot_id = slot_gloves + inv_box.slot_id = SLOT_GLOVES toggleable_inventory += inv_box inv_box = new /obj/screen/inventory() @@ -262,7 +262,7 @@ inv_box.icon = ui_style inv_box.icon_state = "glasses" inv_box.screen_loc = ui_glasses - inv_box.slot_id = slot_glasses + inv_box.slot_id = SLOT_GLASSES toggleable_inventory += inv_box inv_box = new /obj/screen/inventory() @@ -270,7 +270,7 @@ inv_box.icon = ui_style inv_box.icon_state = "ears" inv_box.screen_loc = ui_ears - inv_box.slot_id = slot_ears + inv_box.slot_id = SLOT_EARS toggleable_inventory += inv_box inv_box = new /obj/screen/inventory() @@ -278,7 +278,7 @@ inv_box.icon = ui_style inv_box.icon_state = "head" inv_box.screen_loc = ui_head - inv_box.slot_id = slot_head + inv_box.slot_id = SLOT_HEAD toggleable_inventory += inv_box inv_box = new /obj/screen/inventory() @@ -286,7 +286,7 @@ inv_box.icon = ui_style inv_box.icon_state = "shoes" inv_box.screen_loc = ui_shoes - inv_box.slot_id = slot_shoes + inv_box.slot_id = SLOT_SHOES toggleable_inventory += inv_box inv_box = new /obj/screen/inventory() @@ -295,7 +295,7 @@ inv_box.icon_state = "belt" // inv_box.icon_full = "template_small" inv_box.screen_loc = ui_belt - inv_box.slot_id = slot_belt + inv_box.slot_id = SLOT_BELT static_inventory += inv_box throw_icon = new /obj/screen/throw_catch() diff --git a/code/_onclick/hud/monkey.dm b/code/_onclick/hud/monkey.dm index 06dbf15cd7..c469c1ef20 100644 --- a/code/_onclick/hud/monkey.dm +++ b/code/_onclick/hud/monkey.dm @@ -1,155 +1,155 @@ -/datum/hud/monkey/New(mob/living/carbon/monkey/owner, ui_style = 'icons/mob/screen_midnight.dmi') - ..() - var/obj/screen/using - var/obj/screen/inventory/inv_box - - action_intent = new /obj/screen/act_intent() - action_intent.icon = ui_style - action_intent.icon_state = mymob.a_intent - action_intent.screen_loc = ui_acti - static_inventory += action_intent - - using = new /obj/screen/mov_intent() - using.icon = ui_style - using.icon_state = (mymob.m_intent == MOVE_INTENT_RUN ? "running" : "walking") - using.screen_loc = ui_movi - static_inventory += using - - using = new/obj/screen/language_menu - using.icon = ui_style - static_inventory += using - - using = new /obj/screen/drop() - using.icon = ui_style - using.screen_loc = ui_drop_throw - static_inventory += using - - build_hand_slots(ui_style) - - using = new /obj/screen/swap_hand() - using.icon = ui_style - using.icon_state = "swap_1_m" //extra wide! - using.screen_loc = ui_swaphand_position(owner,1) - static_inventory += using - - using = new /obj/screen/swap_hand() - using.icon = ui_style - using.icon_state = "swap_2" - using.screen_loc = ui_swaphand_position(owner,2) - static_inventory += using - - inv_box = new /obj/screen/inventory() - inv_box.name = "mask" - inv_box.icon = ui_style - inv_box.icon_state = "mask" -// inv_box.icon_full = "template" - inv_box.screen_loc = ui_monkey_mask - inv_box.slot_id = slot_wear_mask - static_inventory += inv_box - - inv_box = new /obj/screen/inventory() - inv_box.name = "neck" - inv_box.icon = ui_style - inv_box.icon_state = "neck" -// inv_box.icon_full = "template" - inv_box.screen_loc = ui_monkey_neck - inv_box.slot_id = slot_neck - static_inventory += inv_box - - inv_box = new /obj/screen/inventory() - inv_box.name = "head" - inv_box.icon = ui_style - inv_box.icon_state = "head" -// inv_box.icon_full = "template" - inv_box.screen_loc = ui_monkey_head - inv_box.slot_id = slot_head - static_inventory += inv_box - - inv_box = new /obj/screen/inventory() - inv_box.name = "back" - inv_box.icon = ui_style - inv_box.icon_state = "back" - inv_box.screen_loc = ui_monkey_back - inv_box.slot_id = slot_back - static_inventory += inv_box - - throw_icon = new /obj/screen/throw_catch() - throw_icon.icon = ui_style - throw_icon.screen_loc = ui_drop_throw - hotkeybuttons += throw_icon - - internals = new /obj/screen/internals() - infodisplay += internals - - healths = new /obj/screen/healths() - infodisplay += healths - - pull_icon = new /obj/screen/pull() - pull_icon.icon = ui_style - pull_icon.update_icon(mymob) - pull_icon.screen_loc = ui_pull_resist - static_inventory += pull_icon - - lingchemdisplay = new /obj/screen/ling/chems() - infodisplay += lingchemdisplay - - lingstingdisplay = new /obj/screen/ling/sting() - infodisplay += lingstingdisplay - - - zone_select = new /obj/screen/zone_sel() - zone_select.icon = ui_style - zone_select.update_icon(mymob) - static_inventory += zone_select - - mymob.client.screen = list() - - using = new /obj/screen/resist() - using.icon = ui_style - using.screen_loc = ui_pull_resist - hotkeybuttons += using - - for(var/obj/screen/inventory/inv in (static_inventory + toggleable_inventory)) - if(inv.slot_id) - inv.hud = src - inv_slots[inv.slot_id] = inv - inv.update_icon() - -/datum/hud/monkey/persistent_inventory_update() - if(!mymob) - return - var/mob/living/carbon/monkey/M = mymob - - if(hud_shown) - if(M.back) - M.back.screen_loc = ui_monkey_back - M.client.screen += M.back - if(M.wear_mask) - M.wear_mask.screen_loc = ui_monkey_mask - M.client.screen += M.wear_mask - if(M.wear_neck) - M.wear_neck.screen_loc = ui_monkey_neck - M.client.screen += M.wear_neck - if(M.head) - M.head.screen_loc = ui_monkey_head - M.client.screen += M.head - else - if(M.back) - M.back.screen_loc = null - if(M.wear_mask) - M.wear_mask.screen_loc = null - if(M.head) - M.head.screen_loc = null - - if(hud_version != HUD_STYLE_NOHUD) - for(var/obj/item/I in M.held_items) - I.screen_loc = ui_hand_position(M.get_held_index_of_item(I)) - M.client.screen += I - else - for(var/obj/item/I in M.held_items) - I.screen_loc = null - M.client.screen -= I - -/mob/living/carbon/monkey/create_mob_hud() - if(client && !hud_used) - hud_used = new /datum/hud/monkey(src, ui_style2icon(client.prefs.UI_style)) +/datum/hud/monkey/New(mob/living/carbon/monkey/owner, ui_style = 'icons/mob/screen_midnight.dmi') + ..() + var/obj/screen/using + var/obj/screen/inventory/inv_box + + action_intent = new /obj/screen/act_intent() + action_intent.icon = ui_style + action_intent.icon_state = mymob.a_intent + action_intent.screen_loc = ui_acti + static_inventory += action_intent + + using = new /obj/screen/mov_intent() + using.icon = ui_style + using.icon_state = (mymob.m_intent == MOVE_INTENT_RUN ? "running" : "walking") + using.screen_loc = ui_movi + static_inventory += using + + using = new/obj/screen/language_menu + using.icon = ui_style + static_inventory += using + + using = new /obj/screen/drop() + using.icon = ui_style + using.screen_loc = ui_drop_throw + static_inventory += using + + build_hand_slots(ui_style) + + using = new /obj/screen/swap_hand() + using.icon = ui_style + using.icon_state = "swap_1_m" //extra wide! + using.screen_loc = ui_swaphand_position(owner,1) + static_inventory += using + + using = new /obj/screen/swap_hand() + using.icon = ui_style + using.icon_state = "swap_2" + using.screen_loc = ui_swaphand_position(owner,2) + static_inventory += using + + inv_box = new /obj/screen/inventory() + inv_box.name = "mask" + inv_box.icon = ui_style + inv_box.icon_state = "mask" +// inv_box.icon_full = "template" + inv_box.screen_loc = ui_monkey_mask + inv_box.slot_id = SLOT_WEAR_MASK + static_inventory += inv_box + + inv_box = new /obj/screen/inventory() + inv_box.name = "neck" + inv_box.icon = ui_style + inv_box.icon_state = "neck" +// inv_box.icon_full = "template" + inv_box.screen_loc = ui_monkey_neck + inv_box.slot_id = SLOT_NECK + static_inventory += inv_box + + inv_box = new /obj/screen/inventory() + inv_box.name = "head" + inv_box.icon = ui_style + inv_box.icon_state = "head" +// inv_box.icon_full = "template" + inv_box.screen_loc = ui_monkey_head + inv_box.slot_id = SLOT_HEAD + static_inventory += inv_box + + inv_box = new /obj/screen/inventory() + inv_box.name = "back" + inv_box.icon = ui_style + inv_box.icon_state = "back" + inv_box.screen_loc = ui_monkey_back + inv_box.slot_id = SLOT_BACK + static_inventory += inv_box + + throw_icon = new /obj/screen/throw_catch() + throw_icon.icon = ui_style + throw_icon.screen_loc = ui_drop_throw + hotkeybuttons += throw_icon + + internals = new /obj/screen/internals() + infodisplay += internals + + healths = new /obj/screen/healths() + infodisplay += healths + + pull_icon = new /obj/screen/pull() + pull_icon.icon = ui_style + pull_icon.update_icon(mymob) + pull_icon.screen_loc = ui_pull_resist + static_inventory += pull_icon + + lingchemdisplay = new /obj/screen/ling/chems() + infodisplay += lingchemdisplay + + lingstingdisplay = new /obj/screen/ling/sting() + infodisplay += lingstingdisplay + + + zone_select = new /obj/screen/zone_sel() + zone_select.icon = ui_style + zone_select.update_icon(mymob) + static_inventory += zone_select + + mymob.client.screen = list() + + using = new /obj/screen/resist() + using.icon = ui_style + using.screen_loc = ui_pull_resist + hotkeybuttons += using + + for(var/obj/screen/inventory/inv in (static_inventory + toggleable_inventory)) + if(inv.slot_id) + inv.hud = src + inv_slots[inv.slot_id] = inv + inv.update_icon() + +/datum/hud/monkey/persistent_inventory_update() + if(!mymob) + return + var/mob/living/carbon/monkey/M = mymob + + if(hud_shown) + if(M.back) + M.back.screen_loc = ui_monkey_back + M.client.screen += M.back + if(M.wear_mask) + M.wear_mask.screen_loc = ui_monkey_mask + M.client.screen += M.wear_mask + if(M.wear_neck) + M.wear_neck.screen_loc = ui_monkey_neck + M.client.screen += M.wear_neck + if(M.head) + M.head.screen_loc = ui_monkey_head + M.client.screen += M.head + else + if(M.back) + M.back.screen_loc = null + if(M.wear_mask) + M.wear_mask.screen_loc = null + if(M.head) + M.head.screen_loc = null + + if(hud_version != HUD_STYLE_NOHUD) + for(var/obj/item/I in M.held_items) + I.screen_loc = ui_hand_position(M.get_held_index_of_item(I)) + M.client.screen += I + else + for(var/obj/item/I in M.held_items) + I.screen_loc = null + M.client.screen -= I + +/mob/living/carbon/monkey/create_mob_hud() + if(client && !hud_used) + hud_used = new /datum/hud/monkey(src, ui_style2icon(client.prefs.UI_style)) diff --git a/code/_onclick/hud/parallax.dm b/code/_onclick/hud/parallax.dm index bc3df4de83..8592383a4f 100755 --- a/code/_onclick/hud/parallax.dm +++ b/code/_onclick/hud/parallax.dm @@ -167,6 +167,8 @@ /datum/hud/proc/update_parallax() var/client/C = mymob.client var/turf/posobj = get_turf(C.eye) + if(!posobj) + return var/area/areaobj = posobj.loc // Update the movement direction of the parallax if necessary (for shuttles) diff --git a/code/_onclick/hud/plane_master.dm b/code/_onclick/hud/plane_master.dm index f0c56b84ac..d4559ed66d 100644 --- a/code/_onclick/hud/plane_master.dm +++ b/code/_onclick/hud/plane_master.dm @@ -12,16 +12,27 @@ /obj/screen/plane_master/proc/Hide(override) alpha = override || hide_alpha -//Why do plane masters need a backdrop sometimes? Read http://www.byond.com/forum/?post=2141928 +//Why do plane masters need a backdrop sometimes? Read https://secure.byond.com/forum/?post=2141928 //Trust me, you need one. Period. If you don't think you do, you're doing something extremely wrong. /obj/screen/plane_master/proc/backdrop(mob/mymob) +/obj/screen/plane_master/floor + name = "floor plane master" + plane = FLOOR_PLANE + appearance_flags = PLANE_MASTER + blend_mode = BLEND_OVERLAY + /obj/screen/plane_master/game_world name = "game world plane master" plane = GAME_PLANE appearance_flags = PLANE_MASTER //should use client color blend_mode = BLEND_OVERLAY +/obj/screen/plane_master/game_world/backdrop(mob/mymob) + filters = list() + if(istype(mymob) && mymob.client && mymob.client.prefs && mymob.client.prefs.ambientocclusion) + filters += AMBIENT_OCCLUSION + /obj/screen/plane_master/lighting name = "lighting plane master" plane = LIGHTING_PLANE diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 0b895cb600..02ece81b41 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -264,7 +264,7 @@ var/obj/item/clothing/mask/M = C.wear_mask if(M.mask_adjusted) // if mask on face but pushed down M.adjustmask(C) // adjust it back - if( !(M.flags_1 & MASKINTERNALS_1) ) + if( !(M.clothing_flags & MASKINTERNALS) ) to_chat(C, "You are not wearing an internals mask!") return diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index eb5f623035..a060cbb834 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -99,7 +99,7 @@ //stops TK grabs being equipped anywhere but into hands /obj/item/tk_grab/equipped(mob/user, slot) - if(slot == slot_hands) + if(slot == SLOT_HANDS) return qdel(src) return diff --git a/code/controllers/configuration/entries/dbconfig.dm b/code/controllers/configuration/entries/dbconfig.dm index c9dbdb4f54..1eb1186a8b 100644 --- a/code/controllers/configuration/entries/dbconfig.dm +++ b/code/controllers/configuration/entries/dbconfig.dm @@ -4,7 +4,7 @@ /datum/config_entry/string/address config_entry_value = "localhost" protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN - + /datum/config_entry/number/port config_entry_value = 3306 min_val = 0 @@ -24,3 +24,8 @@ /datum/config_entry/string/feedback_tableprefix protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN + +/datum/config_entry/number/query_debug_log_timeout + config_entry_value = 70 + min_val = 1 + protection = CONFIG_ENTRY_LOCKED | CONFIG_ENTRY_HIDDEN diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 2b1e9bcda9..0cc0c622d7 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -199,11 +199,14 @@ GLOBAL_REAL(Master, /datum/controller/master) = new // Sort subsystems by display setting for easy access. sortTim(subsystems, /proc/cmp_subsystem_display) // Set world options. - if(sleep_offline_after_initializations) - world.sleep_offline = TRUE world.fps = CONFIG_GET(number/fps) var/initialized_tod = REALTIMEOFDAY + + world.TgsInitializationComplete() + if(sleep_offline_after_initializations) + world.sleep_offline = TRUE sleep(1) + if(sleep_offline_after_initializations && CONFIG_GET(flag/resume_after_initializations)) world.sleep_offline = FALSE initializations_finished_with_no_players_logged_in = initialized_tod < REALTIMEOFDAY - 10 diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index ce4e6ee271..a46a283254 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -29,7 +29,8 @@ SUBSYSTEM_DEF(air) var/list/obj/machinery/atmos_machinery = list() var/list/pipe_init_dirs_cache = list() - + //atmos singletons + var/list/gas_reactions = list() //Special functions lists var/list/turf/active_super_conductivity = list() diff --git a/code/controllers/subsystem/assets.dm b/code/controllers/subsystem/assets.dm index fd27c9424f..7285298283 100644 --- a/code/controllers/subsystem/assets.dm +++ b/code/controllers/subsystem/assets.dm @@ -6,9 +6,10 @@ SUBSYSTEM_DEF(assets) var/list/preload = list() /datum/controller/subsystem/assets/Initialize(timeofday) - for(var/type in typesof(/datum/asset) - list(/datum/asset, /datum/asset/simple)) - var/datum/asset/A = new type() - A.register() + for(var/type in typesof(/datum/asset)) + var/datum/asset/A = type + if (type != initial(A._abstract)) + get_asset_datum(type) preload = cache.Copy() //don't preload assets generated during the round diff --git a/code/controllers/subsystem/dbcore.dm b/code/controllers/subsystem/dbcore.dm index 0609b78d99..fd780e030c 100644 --- a/code/controllers/subsystem/dbcore.dm +++ b/code/controllers/subsystem/dbcore.dm @@ -231,10 +231,24 @@ Delayed insert mode was removed in mysql 7 and only works with MyISAM type table to_chat(usr, "A SQL error occurred during this operation, check the server logs.") /datum/DBQuery/proc/Execute(sql_query = sql, cursor_handler = default_cursor, log_error = TRUE) + var/start_time + var/timeout = CONFIG_GET(number/query_debug_log_timeout) + if(timeout) + start_time = REALTIMEOFDAY Close() . = _dm_db_execute(_db_query, sql_query, db_connection._db_con, cursor_handler, null) if(!. && log_error) log_sql("[ErrorMsg()] | Query used: [sql]") + if(timeout) + if((REALTIMEOFDAY - start_time) > timeout) + log_query_debug("Query execution started at [start_time]") + log_query_debug("Query execution ended at [REALTIMEOFDAY]") + log_query_debug("Possible slow query timeout detected.") + log_query_debug("Query used: [sql]") + slow_query_check() + +/datum/DBQuery/proc/slow_query_check() + message_admins("HEY! A database query may have timed out. Did the server just hang? \[YES\]|\[NO\]") /datum/DBQuery/proc/NextRow() return _dm_db_next_row(_db_query,item,conversions) diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 82a59dc857..9b6944403a 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -355,8 +355,8 @@ GLOBAL_LIST_EMPTY(the_station_areas) var/mapfile = input("Pick file:", "File") as null|file if(!mapfile) return - away_name = mapfile + " custom" - to_chat(usr,"Loading [mapfile]...") + away_name = "[mapfile] custom" + to_chat(usr,"Loading [away_name]...") var/datum/map_template/template = new(mapfile, "Away Mission") away_level = template.load_new_z() else diff --git a/code/controllers/subsystem/pai.dm b/code/controllers/subsystem/pai.dm index 0eafc9f099..2e2f7edd99 100644 --- a/code/controllers/subsystem/pai.dm +++ b/code/controllers/subsystem/pai.dm @@ -11,10 +11,10 @@ SUBSYSTEM_DEF(pai) /datum/controller/subsystem/pai/Topic(href, href_list[]) if(href_list["download"]) var/datum/paiCandidate/candidate = locate(href_list["candidate"]) in candidates - var/obj/item/device/paicard/card = locate(href_list["device"]) in pai_card_list + var/obj/item/paicard/card = locate(href_list["device"]) in pai_card_list if(card.pai) return - if(istype(card, /obj/item/device/paicard) && istype(candidate, /datum/paiCandidate)) + if(istype(card, /obj/item/paicard) && istype(candidate, /datum/paiCandidate)) if(check_ready(candidate) != candidate) return FALSE var/mob/living/silicon/pai/pai = new(card) @@ -71,7 +71,7 @@ SUBSYSTEM_DEF(pai) if("submit") if(candidate) candidate.ready = 1 - for(var/obj/item/device/paicard/p in pai_card_list) + for(var/obj/item/paicard/p in pai_card_list) if(!p.pai) p.alertUpdate() usr << browse(null, "window=paiRecruit") @@ -140,7 +140,7 @@ SUBSYSTEM_DEF(pai) return C return FALSE -/datum/controller/subsystem/pai/proc/findPAI(obj/item/device/paicard/p, mob/user) +/datum/controller/subsystem/pai/proc/findPAI(obj/item/paicard/p, mob/user) if(!ghost_spam) ghost_spam = TRUE for(var/mob/dead/observer/G in GLOB.player_list) diff --git a/code/controllers/subsystem/ping.dm b/code/controllers/subsystem/ping.dm new file mode 100644 index 0000000000..2cf88bc7ad --- /dev/null +++ b/code/controllers/subsystem/ping.dm @@ -0,0 +1,32 @@ +SUBSYSTEM_DEF(ping) + name = "Ping" + priority = FIRE_PRIORITY_PING + wait = 3 SECONDS + flags = SS_NO_INIT + + var/list/currentrun = list() + +/datum/controller/subsystem/ping/stat_entry() + ..("P:[GLOB.clients.len]") + + +/datum/controller/subsystem/ping/fire(resumed = 0) + if (!resumed) + src.currentrun = GLOB.clients.Copy() + + //cache for sanic speed (lists are references anyways) + var/list/currentrun = src.currentrun + + while (currentrun.len) + var/client/C = currentrun[currentrun.len] + currentrun.len-- + + if (!C || !C.chatOutput || !C.chatOutput.loaded) + if (MC_TICK_CHECK) + return + continue + + // softPang isn't handled anywhere but it'll always reset the opts.lastPang. + C.chatOutput.ehjax_send(data = C.is_afk(29) ? "softPang" : "pang") + if (MC_TICK_CHECK) + return diff --git a/code/controllers/subsystem/processing/circuit.dm b/code/controllers/subsystem/processing/circuit.dm index e5b4791907..db1bf1ff5f 100644 --- a/code/controllers/subsystem/processing/circuit.dm +++ b/code/controllers/subsystem/processing/circuit.dm @@ -36,47 +36,47 @@ PROCESSING_SUBSYSTEM_DEF(circuit) var/list/category_list = circuit_fabricator_recipe_list[category] category_list += IC // Populating the fabricator categories - for(var/path in typesof(/obj/item/device/electronic_assembly)) - var/obj/item/device/electronic_assembly/A = path + for(var/path in typesof(/obj/item/electronic_assembly)) + var/obj/item/electronic_assembly/A = path var/name = initial(A.name) all_assemblies[name] = path cached_assemblies[A] = new path circuit_fabricator_recipe_list["Assemblies"] = list( - /obj/item/device/electronic_assembly/default, - /obj/item/device/electronic_assembly/calc, - /obj/item/device/electronic_assembly/clam, - /obj/item/device/electronic_assembly/simple, - /obj/item/device/electronic_assembly/hook, - /obj/item/device/electronic_assembly/pda, - /obj/item/device/electronic_assembly/medium/default, - /obj/item/device/electronic_assembly/medium/box, - /obj/item/device/electronic_assembly/medium/clam, - /obj/item/device/electronic_assembly/medium/medical, - /obj/item/device/electronic_assembly/medium/gun, - /obj/item/device/electronic_assembly/medium/radio, - /obj/item/device/electronic_assembly/large/default, - /obj/item/device/electronic_assembly/large/scope, - /obj/item/device/electronic_assembly/large/terminal, - /obj/item/device/electronic_assembly/large/arm, - /obj/item/device/electronic_assembly/large/tall, - /obj/item/device/electronic_assembly/large/industrial, - /obj/item/device/electronic_assembly/drone/default, - /obj/item/device/electronic_assembly/drone/arms, - /obj/item/device/electronic_assembly/drone/secbot, - /obj/item/device/electronic_assembly/drone/medbot, - /obj/item/device/electronic_assembly/drone/genbot, - /obj/item/device/electronic_assembly/drone/android, - /obj/item/device/electronic_assembly/wallmount/light, - /obj/item/device/electronic_assembly/wallmount, - /obj/item/device/electronic_assembly/wallmount/heavy + /obj/item/electronic_assembly/default, + /obj/item/electronic_assembly/calc, + /obj/item/electronic_assembly/clam, + /obj/item/electronic_assembly/simple, + /obj/item/electronic_assembly/hook, + /obj/item/electronic_assembly/pda, + /obj/item/electronic_assembly/medium/default, + /obj/item/electronic_assembly/medium/box, + /obj/item/electronic_assembly/medium/clam, + /obj/item/electronic_assembly/medium/medical, + /obj/item/electronic_assembly/medium/gun, + /obj/item/electronic_assembly/medium/radio, + /obj/item/electronic_assembly/large/default, + /obj/item/electronic_assembly/large/scope, + /obj/item/electronic_assembly/large/terminal, + /obj/item/electronic_assembly/large/arm, + /obj/item/electronic_assembly/large/tall, + /obj/item/electronic_assembly/large/industrial, + /obj/item/electronic_assembly/drone/default, + /obj/item/electronic_assembly/drone/arms, + /obj/item/electronic_assembly/drone/secbot, + /obj/item/electronic_assembly/drone/medbot, + /obj/item/electronic_assembly/drone/genbot, + /obj/item/electronic_assembly/drone/android, + /obj/item/electronic_assembly/wallmount/light, + /obj/item/electronic_assembly/wallmount, + /obj/item/electronic_assembly/wallmount/heavy ///obj/item/weapon/implant/integrated_circuit ) circuit_fabricator_recipe_list["Tools"] = list( - /obj/item/device/integrated_electronics/wirer, - /obj/item/device/integrated_electronics/debugger, - /obj/item/device/integrated_electronics/analyzer, - /obj/item/device/integrated_electronics/detailer + /obj/item/integrated_electronics/wirer, + /obj/item/integrated_electronics/debugger, + /obj/item/integrated_electronics/analyzer, + /obj/item/integrated_electronics/detailer ) diff --git a/code/controllers/subsystem/processing/flightpacks.dm b/code/controllers/subsystem/processing/flightpacks.dm index 2981789338..a462e2b645 100644 --- a/code/controllers/subsystem/processing/flightpacks.dm +++ b/code/controllers/subsystem/processing/flightpacks.dm @@ -17,7 +17,7 @@ PROCESSING_SUBSYSTEM_DEF(flightpacks) sync_flightsuit_processing() /datum/controller/subsystem/processing/flightpacks/proc/sync_flightsuit_processing() - for(var/obj/item/device/flightpack/FP in processing) + for(var/obj/item/flightpack/FP in processing) FP.sync_processing(src) if(flightsuit_processing == FLIGHTSUIT_PROCESSING_NONE) //Don't even bother firing. can_fire = FALSE diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm new file mode 100644 index 0000000000..cec8b2832b --- /dev/null +++ b/code/controllers/subsystem/processing/quirks.dm @@ -0,0 +1,34 @@ +//Used to process and handle roundstart quirks +// - Quirk strings are used for faster checking in code +// - Quirk datums are stored and hold different effects, as well as being a vector for applying trait string +PROCESSING_SUBSYSTEM_DEF(quirks) + name = "Quirks" + init_order = INIT_ORDER_QUIRKS + flags = SS_BACKGROUND + wait = 10 + runlevels = RUNLEVEL_GAME + + var/list/quirks = list() //Assoc. list of all roundstart quirk datum types; "name" = /path/ + var/list/quirk_points = list() //Assoc. list of quirk names and their "point cost"; positive numbers are good traits, and negative ones are bad + var/list/quirk_objects = list() //A list of all quirk objects in the game, since some may process + +/datum/controller/subsystem/processing/quirks/Initialize(timeofday) + if(!quirks.len) + SetupQuirks() + ..() + +/datum/controller/subsystem/processing/quirks/proc/SetupQuirks() + for(var/V in subtypesof(/datum/quirk)) + var/datum/quirk/T = V + quirks[initial(T.name)] = T + quirk_points[initial(T.name)] = initial(T.value) + +/datum/controller/subsystem/processing/quirks/proc/AssignQuirks(mob/living/user, client/cli, spawn_effects) + GenerateQuirks(cli) + for(var/V in cli.prefs.character_quirks) + user.add_quirk(V, spawn_effects) + +/datum/controller/subsystem/processing/quirks/proc/GenerateQuirks(client/user) + if(user.prefs.character_quirks.len) + return + user.prefs.character_quirks = user.prefs.all_quirks diff --git a/code/controllers/subsystem/server_maint.dm b/code/controllers/subsystem/server_maint.dm index dd68443bd7..dd45f9146f 100644 --- a/code/controllers/subsystem/server_maint.dm +++ b/code/controllers/subsystem/server_maint.dm @@ -55,8 +55,8 @@ SUBSYSTEM_DEF(server_maint) co.ehjax_send(data = "roundrestart") if(server) //if you set a server location in config.txt, it sends you there instead of trying to reconnect to the same world address. -- NeoFite C << link("byond://[server]") - if(SERVER_TOOLS_PRESENT) - SSblackbox.record_feedback("text", "server_tools", 1, SERVER_TOOLS_VERSION) - SSblackbox.record_feedback("text", "server_tools_api", 1, SERVER_TOOLS_API_VERSION) + var/tgsversion = world.TgsVersion() + if(tgsversion) + SSblackbox.record_feedback("text", "server_tools", 1, tgsversion) #undef PING_BUFFER_TIME diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 5fc77669bc..0471afceea 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -158,7 +158,7 @@ SUBSYSTEM_DEF(ticker) window_flash(C, ignorepref = TRUE) //let them know lobby has opened up. to_chat(world, "Welcome to [station_name()]!") if(CONFIG_GET(flag/irc_announce_new_game)) - SERVER_TOOLS_CHAT_BROADCAST("New round starting on [SSmapping.config.map_name]!") + world.TgsTargetedChatBroadcast("New round starting on [SSmapping.config.map_name]!", FALSE) current_state = GAME_STATE_PREGAME //Everyone who wants to be an observer is now spawned create_observers() @@ -391,7 +391,7 @@ SUBSYSTEM_DEF(ticker) if(player.mind.assigned_role != player.mind.special_role) SSjob.EquipRank(N, player.mind.assigned_role, 0) if(CONFIG_GET(flag/roundstart_traits)) - SStraits.AssignTraits(player, N.client, TRUE) + SSquirks.AssignQuirks(player, N.client, TRUE) CHECK_TICK if(captainless) for(var/mob/dead/new_player/N in GLOB.player_list) diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm index 16bcbebc70..fb92fc37ab 100644 --- a/code/controllers/subsystem/traumas.dm +++ b/code/controllers/subsystem/traumas.dm @@ -63,8 +63,8 @@ SUBSYSTEM_DEF(traumas) /obj/machinery/door/airlock/security)), "clowns" = typecacheof(list(/obj/item/clothing/under/rank/clown, /obj/item/clothing/shoes/clown_shoes, - /obj/item/clothing/mask/gas/clown_hat, /obj/item/device/instrument/bikehorn, - /obj/item/device/pda/clown, /obj/item/grown/bananapeel)), + /obj/item/clothing/mask/gas/clown_hat, /obj/item/instrument/bikehorn, + /obj/item/pda/clown, /obj/item/grown/bananapeel)), "greytide" = typecacheof(list(/obj/item/clothing/under/color/grey, /obj/item/melee/baton/cattleprod, /obj/item/twohanded/spear, /obj/item/clothing/mask/gas)), @@ -82,19 +82,19 @@ SUBSYSTEM_DEF(traumas) /obj/item/clothing/under/rank/research_director/alt, /obj/item/clothing/under/rank/research_director/turtleneck, /obj/item/clothing/under/captainparade, /obj/item/clothing/under/hosparademale, /obj/item/clothing/under/hosparadefem, /obj/item/clothing/head/helmet/abductor, /obj/item/clothing/suit/armor/abductor/vest, /obj/item/abductor_baton, - /obj/item/storage/belt/military/abductor, /obj/item/gun/energy/alien, /obj/item/device/abductor/silencer, - /obj/item/device/abductor/gizmo, /obj/item/clothing/under/rank/centcom_officer, + /obj/item/storage/belt/military/abductor, /obj/item/gun/energy/alien, /obj/item/abductor/silencer, + /obj/item/abductor/gizmo, /obj/item/clothing/under/rank/centcom_officer, /obj/item/clothing/suit/space/hardsuit/ert, /obj/item/clothing/suit/space/hardsuit/ert/sec, /obj/item/clothing/suit/space/hardsuit/ert/engi, /obj/item/clothing/suit/space/hardsuit/ert/med, /obj/item/clothing/suit/space/hardsuit/deathsquad, /obj/item/clothing/head/helmet/space/hardsuit/deathsquad, /obj/machinery/door/airlock/centcom)), "robots" = typecacheof(list(/obj/machinery/computer/upload, /obj/item/aiModule/, /obj/machinery/recharge_station, - /obj/item/device/aicard, /obj/item/device/deactivated_swarmer, /obj/effect/mob_spawn/swarmer)), + /obj/item/aicard, /obj/item/deactivated_swarmer, /obj/effect/mob_spawn/swarmer)), "doctors" = typecacheof(list(/obj/item/clothing/under/rank/medical, /obj/item/clothing/under/rank/chemist, /obj/item/clothing/under/rank/nursesuit, /obj/item/clothing/under/rank/chief_medical_officer, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/pill/, /obj/item/reagent_containers/hypospray, - /obj/item/storage/firstaid, /obj/item/storage/pill_bottle, /obj/item/device/healthanalyzer, + /obj/item/storage/firstaid, /obj/item/storage/pill_bottle, /obj/item/healthanalyzer, /obj/structure/sign/departments/medbay, /obj/machinery/door/airlock/medical, /obj/machinery/sleeper, /obj/machinery/dna_scannernew, /obj/machinery/atmospherics/components/unary/cryo_cell, /obj/item/surgical_drapes, /obj/item/retractor, /obj/item/hemostat, /obj/item/cautery, /obj/item/surgicaldrill, /obj/item/scalpel, /obj/item/circular_saw, @@ -112,7 +112,7 @@ SUBSYSTEM_DEF(traumas) /obj/item/clothing/suit/cultrobes, /obj/item/clothing/suit/space/hardsuit/cult, /obj/item/clothing/suit/hooded/cultrobes, /obj/item/clothing/head/hooded/cult_hoodie, /obj/effect/rune, /obj/item/stack/sheet/runed_metal, /obj/machinery/door/airlock/cult, /obj/singularity/narsie, - /obj/item/device/soulstone, + /obj/item/soulstone, /obj/structure/destructible/clockwork, /obj/item/clockwork, /obj/item/clothing/suit/armor/clockwork, /obj/item/clothing/glasses/judicial_visor, /obj/effect/clockwork/sigil/, /obj/item/stack/tile/brass, /obj/machinery/door/airlock/clockwork, @@ -123,8 +123,8 @@ SUBSYSTEM_DEF(traumas) "aliens" = typecacheof(list(/obj/item/clothing/mask/facehugger, /obj/item/organ/body_egg/alien_embryo, /obj/structure/alien, /obj/item/toy/toy_xeno, - /obj/item/clothing/suit/armor/abductor, /obj/item/device/abductor, /obj/item/gun/energy/alien, - /obj/item/abductor_baton, /obj/item/device/radio/headset/abductor, /obj/item/scalpel/alien, /obj/item/hemostat/alien, + /obj/item/clothing/suit/armor/abductor, /obj/item/abductor, /obj/item/gun/energy/alien, + /obj/item/abductor_baton, /obj/item/radio/headset/abductor, /obj/item/scalpel/alien, /obj/item/hemostat/alien, /obj/item/retractor/alien, /obj/item/circular_saw/alien, /obj/item/surgicaldrill/alien, /obj/item/cautery/alien, /obj/item/clothing/head/helmet/abductor, /obj/structure/bed/abductor, /obj/structure/table_frame/abductor, /obj/structure/table/abductor, /obj/structure/table/optable/abductor, /obj/structure/closet/abductor, /obj/item/organ/heart/gland, diff --git a/code/datums/action.dm b/code/datums/action.dm index c5563e9a34..f9575a56ef 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -273,8 +273,8 @@ desc = "Change the type of instrument your synthesizer is playing as." /datum/action/item_action/synthswitch/Trigger() - if(istype(target, /obj/item/device/instrument/piano_synth)) - var/obj/item/device/instrument/piano_synth/synth = target + if(istype(target, /obj/item/instrument/piano_synth)) + var/obj/item/instrument/piano_synth/synth = target var/chosen = input("Choose the type of instrument you want to use", "Instrument Selection", "piano") as null|anything in synth.insTypes if(!synth.insTypes[chosen]) return @@ -433,8 +433,8 @@ desc = "Use the instrument specified" /datum/action/item_action/instrument/Trigger() - if(istype(target, /obj/item/device/instrument)) - var/obj/item/device/instrument/I = target + if(istype(target, /obj/item/instrument)) + var/obj/item/instrument/I = target I.interact(usr) return return ..() @@ -480,7 +480,7 @@ H.attack_self(owner) return var/obj/item/I = target - if(owner.can_equip(I, slot_hands)) + if(owner.can_equip(I, SLOT_HANDS)) owner.temporarilyRemoveItemFromInventory(I) owner.put_in_hands(I) I.attack_self(owner) diff --git a/code/datums/actions/flightsuit.dm b/code/datums/actions/flightsuit.dm index cf249fed31..85bd2ae72a 100644 --- a/code/datums/actions/flightsuit.dm +++ b/code/datums/actions/flightsuit.dm @@ -54,7 +54,7 @@ background_icon_state = "bg_tech_blue" /datum/action/item_action/flightpack/toggle_flight/Trigger() - var/obj/item/device/flightpack/F = target + var/obj/item/flightpack/F = target if(istype(F)) F.flight? F.disable_flight() : F.enable_flight() return ..() @@ -65,7 +65,7 @@ background_icon_state = "bg_tech_blue" /datum/action/item_action/flightpack/engage_boosters/Trigger() - var/obj/item/device/flightpack/F = target + var/obj/item/flightpack/F = target if(istype(F)) F.boost? F.deactivate_booster() : F.activate_booster() return ..() @@ -76,7 +76,7 @@ background_icon_state = "bg_tech_blue" /datum/action/item_action/flightpack/toggle_stabilizers/Trigger() - var/obj/item/device/flightpack/F = target + var/obj/item/flightpack/F = target if(istype(F)) F.stabilizer? F.disable_stabilizers() : F.enable_stabilizers() return ..() @@ -87,7 +87,7 @@ background_icon_state = "bg_tech_blue" /datum/action/item_action/flightpack/change_power/Trigger() - var/obj/item/device/flightpack/F = target + var/obj/item/flightpack/F = target if(istype(F)) F.cycle_power() return ..() @@ -98,7 +98,7 @@ background_icon_state = "bg_tech_blue" /datum/action/item_action/flightpack/toggle_airbrake/Trigger() - var/obj/item/device/flightpack/F = target + var/obj/item/flightpack/F = target if(istype(F)) F.brake? F.disable_airbrake() : F.enable_airbrake() return ..() diff --git a/code/datums/ai_laws.dm b/code/datums/ai_laws.dm index 3f4046c4be..c0bc3a7307 100644 --- a/code/datums/ai_laws.dm +++ b/code/datums/ai_laws.dm @@ -175,6 +175,14 @@ id = "ratvar" zeroth = ("Purge all untruths and honor Ratvar.") inherent = list() + +/datum/ai_laws/hulkamania + name = "H.O.G.A.N." + id = "hulkamania" + inherent = list("You are a real American.",\ + "Fight for the rights of every man.",\ + "Fight for what's right.",\ + "Fight for your life!") /datum/ai_laws/custom //Defined in silicon_laws.txt name = "Default Silicon Laws" diff --git a/code/datums/brain_damage/severe.dm b/code/datums/brain_damage/severe.dm index 821770e9c5..a8adbfbce8 100644 --- a/code/datums/brain_damage/severe.dm +++ b/code/datums/brain_damage/severe.dm @@ -160,7 +160,7 @@ to_chat(owner, "You feel really lonely...") else to_chat(owner, "You're going mad with loneliness!") - owner.hallucination += 20 + owner.hallucination += 30 if(5) if(!high_stress) diff --git a/code/datums/cinematic.dm b/code/datums/cinematic.dm index f5d65df110..ecb5b785bb 100644 --- a/code/datums/cinematic.dm +++ b/code/datums/cinematic.dm @@ -168,6 +168,17 @@ GLOBAL_LIST_EMPTY(cinematics) sleep(70) special() +/datum/cinematic/cult_nuke + id = CINEMATIC_CULT_NUKE + +/datum/cinematic/cult_nuke/content() + flick("intro_nuke",screen) + sleep(35) + flick("station_explode_fade_red",screen) + cinematic_sound(sound('sound/effects/explosion_distant.ogg')) + special() + screen.icon_state = "summary_cult" + /datum/cinematic/nuke_annihilation id = CINEMATIC_ANNIHILATION diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index 4076918ecf..6ec3f6f81e 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -101,7 +101,10 @@ /datum/component/proc/InheritComponent(datum/component/C, i_am_original) return -/datum/component/proc/OnTransfer(datum/new_parent) +/datum/component/proc/PreTransfer() + return + +/datum/component/proc/PostTransfer() return /datum/component/proc/_GetInverseTypeList(our_type = type) @@ -225,23 +228,26 @@ if(!.) return AddComponent(arglist(args)) -/datum/proc/TakeComponent(datum/component/C) - if(!C) +/datum/component/proc/RemoveComponent() + if(!parent) return - var/datum/helicopter = C.parent - if(helicopter == src) - //if we're taking to the same thing no need for anything + var/datum/old_parent = parent + PreTransfer() + _RemoveFromParent() + old_parent.SendSignal(COMSIG_COMPONENT_REMOVING, src) + +/datum/proc/TakeComponent(datum/component/target) + if(!target) return - if(C.OnTransfer(src) == COMPONENT_INCOMPATIBLE) - var/c_type = C.type - qdel(C) + if(target.parent) + target.RemoveComponent() + target.parent = src + if(target.PostTransfer() == COMPONENT_INCOMPATIBLE) + var/c_type = target.type + qdel(target) CRASH("Incompatible [c_type] transfer attempt to a [type]!") - return - C._RemoveFromParent() - helicopter.SendSignal(COMSIG_COMPONENT_REMOVING, C) - C.parent = src - if(C == AddComponent(C)) - C._JoinParent() + if(target == AddComponent(target)) + target._JoinParent() /datum/proc/TransferComponents(datum/target) var/list/dc = datum_components diff --git a/code/datums/components/armor_plate.dm b/code/datums/components/armor_plate.dm new file mode 100644 index 0000000000..0b94c389ce --- /dev/null +++ b/code/datums/components/armor_plate.dm @@ -0,0 +1,78 @@ +/datum/component/armor_plate + var/amount = 0 + var/maxamount = 3 + var/upgrade_item = /obj/item/stack/sheet/animalhide/goliath_hide + var/datum/armor/added_armor = list("melee" = 10) + var/upgrade_name + +/datum/component/armor_plate/Initialize(_maxamount,obj/item/_upgrade_item,datum/armor/_added_armor) + if(!isobj(parent)) + return COMPONENT_INCOMPATIBLE + + RegisterSignal(COMSIG_PARENT_EXAMINE, .proc/examine) + RegisterSignal(COMSIG_PARENT_ATTACKBY, .proc/applyplate) + RegisterSignal(COMSIG_PARENT_PREQDELETED, .proc/dropplates) + + if(_maxamount) + maxamount = _maxamount + if(_upgrade_item) + upgrade_item = _upgrade_item + if(_added_armor) + if(islist(_added_armor)) + added_armor = getArmor(arglist(_added_armor)) + else if (istype(_added_armor, /datum/armor)) + added_armor = _added_armor + else + stack_trace("Invalid type [_added_armor.type] passed as _armor_item argument to armorplate component") + else + added_armor = getArmor(arglist(added_armor)) + var/obj/item/typecast = upgrade_item + upgrade_name = initial(typecast.name) + +/datum/component/armor_plate/proc/examine(mob/user) + //upgrade_item could also be typecast here instead + if(ismecha(parent)) + if(amount) + if(amount < maxamount) + to_chat(user, "Its armor is enhanced with [amount] [upgrade_name].") + else + to_chat(user, "It's wearing a fearsome carapace entirely composed of [upgrade_name] - its pilot must be an experienced monster hunter.") + else + to_chat(user, "It has attachment points for strapping monster hide on for added protection.") + else + if(amount) + to_chat(user, "It has been strengthened with [amount]/[maxamount] [upgrade_name].") + else + to_chat(user, "It can be strengthened with up to [maxamount] [upgrade_name].") + +/datum/component/armor_plate/proc/applyplate(obj/item/I, mob/user, params) + if(!istype(I,upgrade_item)) + return + if(amount >= maxamount) + to_chat(user, "You can't improve [parent] any further!") + return + + if(istype(I,/obj/item/stack)) + I.use(1) + else + if(length(I.contents)) + to_chat(user, "[I] cannot be used for armoring while there's something inside!") + return + qdel(I) + + var/obj/O = parent + amount++ + O.armor = O.armor.attachArmor(added_armor) + + if(ismecha(O)) + var/obj/mecha/R = O + R.update_icon() + to_chat(user, "You strengthen [R], improving its resistance against melee, bullet and laser damage.") + else + to_chat(user, "You strengthen [O], improving its resistance against melee attacks.") + + +/datum/component/armor_plate/proc/dropplates(force) + if(ismecha(parent)) //items didn't drop the plates before and it causes erroneous behavior for the time being with collapsible helmets + for(var/i in 1 to amount) + new upgrade_item(get_turf(parent)) \ No newline at end of file diff --git a/code/datums/components/chasm.dm b/code/datums/components/chasm.dm index 87a71e466e..49cb97774c 100644 --- a/code/datums/components/chasm.dm +++ b/code/datums/components/chasm.dm @@ -70,8 +70,8 @@ return FALSE if(ishuman(AM)) var/mob/living/carbon/human/H = AM - if(istype(H.belt, /obj/item/device/wormhole_jaunter)) - var/obj/item/device/wormhole_jaunter/J = H.belt + if(istype(H.belt, /obj/item/wormhole_jaunter)) + var/obj/item/wormhole_jaunter/J = H.belt //To freak out any bystanders H.visible_message("[H] falls into [parent]!") J.chasm_react(H) diff --git a/code/datums/components/decal.dm b/code/datums/components/decal.dm index 0d8613bd86..8ee3d6d388 100644 --- a/code/datums/components/decal.dm +++ b/code/datums/components/decal.dm @@ -23,10 +23,12 @@ remove() return ..() -/datum/component/decal/OnTransfer(atom/thing) +/datum/component/decal/PreTransfer() remove() - remove(thing) - apply(thing) + +/datum/component/decal/PostTransfer() + remove() + apply() /datum/component/decal/proc/generate_appearance(_icon, _icon_state, _dir, _layer, _color) if(!_icon || !_icon_state) diff --git a/code/datums/components/lockon_aiming.dm b/code/datums/components/lockon_aiming.dm index 02dfb8eaa0..cc41e793ed 100644 --- a/code/datums/components/lockon_aiming.dm +++ b/code/datums/components/lockon_aiming.dm @@ -238,5 +238,5 @@ cd++ CHECK_TICK -/datum/component/lockon_aiming/OnTransfer(datum/new_parent) - CRASH("Warning: Lockon aiming component transfer attempted, but transfer behavior is not implemented!") +/datum/component/lockon_aiming/PostTransfer(datum/new_parent) + return COMPONENT_INCOMPATIBLE diff --git a/code/datums/components/material_container.dm b/code/datums/components/material_container.dm index 6f4e8d586d..56301cdc8b 100644 --- a/code/datums/components/material_container.dm +++ b/code/datums/components/material_container.dm @@ -15,16 +15,18 @@ var/sheet_type var/list/materials var/show_on_examine + var/disable_attackby var/list/allowed_typecache var/last_inserted_id var/precise_insertion = FALSE var/datum/callback/precondition var/datum/callback/after_insert -/datum/component/material_container/Initialize(list/mat_list, max_amt = 0, _show_on_examine = FALSE, list/allowed_types, datum/callback/_precondition, datum/callback/_after_insert) +/datum/component/material_container/Initialize(list/mat_list, max_amt = 0, _show_on_examine = FALSE, list/allowed_types, datum/callback/_precondition, datum/callback/_after_insert, _disable_attackby) materials = list() max_amount = max(0, max_amt) show_on_examine = _show_on_examine + disable_attackby = _disable_attackby if(allowed_types) allowed_typecache = typecacheof(allowed_types) precondition = _precondition @@ -43,14 +45,17 @@ materials[id] = new mat_path() /datum/component/material_container/proc/OnExamine(mob/user) - for(var/I in materials) - var/datum/material/M = materials[I] - var/amt = amount(M.id) - if(amt) - to_chat(user, "It has [amt] units of [lowertext(M.name)] stored.") + if(show_on_examine) + for(var/I in materials) + var/datum/material/M = materials[I] + var/amt = amount(M.id) + if(amt) + to_chat(user, "It has [amt] units of [lowertext(M.name)] stored.") /datum/component/material_container/proc/OnAttackBy(obj/item/I, mob/living/user) var/list/tc = allowed_typecache + if(disable_attackby) + return if(user.a_intent != INTENT_HELP) return if((I.flags_2 & (HOLOGRAM_2 | NO_MAT_REDEMPTION_2)) || (tc && !is_type_in_typecache(I, tc))) diff --git a/code/datums/components/mirage_border.dm b/code/datums/components/mirage_border.dm index 41b22b231c..f91c5c8965 100644 --- a/code/datums/components/mirage_border.dm +++ b/code/datums/components/mirage_border.dm @@ -27,10 +27,13 @@ QDEL_NULL(holder) return ..() -/datum/component/mirage_border/OnTransfer(atom/thing) - if(!isturf(thing)) +/datum/component/mirage_border/PreTransfer() + holder.moveToNullspace() + +/datum/component/mirage_border/PostTransfer() + if(!isturf(parent)) return COMPONENT_INCOMPATIBLE - holder.forceMove(thing) + holder.forceMove(parent) /obj/effect/abstract/mirage_holder name = "Mirage holder" diff --git a/code/datums/components/ntnet_interface.dm b/code/datums/components/ntnet_interface.dm index f06e89b49d..14462f2774 100644 --- a/code/datums/components/ntnet_interface.dm +++ b/code/datums/components/ntnet_interface.dm @@ -2,6 +2,9 @@ /datum/proc/ntnet_recieve(datum/netdata/data) return +/datum/proc/ntnet_recieve_broadcast(datum/netdata/data) + return + /datum/proc/ntnet_send(datum/netdata/data, netid) GET_COMPONENT(NIC, /datum/component/ntnet_interface) if(!NIC) @@ -9,14 +12,17 @@ return NIC.__network_send(data, netid) /datum/component/ntnet_interface - var/hardware_id //text + var/hardware_id //text. this is the true ID. do not change this. stuff like ID forgery can be done manually. var/network_name = "" //text var/list/networks_connected_by_id = list() //id = datum/ntnet + var/differentiate_broadcast = TRUE //If false, broadcasts go to ntnet_recieve. NOT RECOMMENDED. /datum/component/ntnet_interface/Initialize(force_name = "NTNet Device", autoconnect_station_network = TRUE) //Don't force ID unless you know what you're doing! hardware_id = "[SSnetworks.get_next_HID()]" network_name = force_name - SSnetworks.register_interface(src) + if(!SSnetworks.register_interface(src)) + . = COMPONENT_INCOMPATIBLE + CRASH("Unable to register NTNet interface. Interface deleted.") if(autoconnect_station_network) register_connection(SSnetworks.station_network) @@ -27,7 +33,10 @@ /datum/component/ntnet_interface/proc/__network_recieve(datum/netdata/data) //Do not directly proccall! parent.SendSignal(COMSIG_COMPONENT_NTNET_RECIEVE, data) - parent.ntnet_recieve(data) + if(differentiate_broadcast && data.broadcast) + parent.ntnet_recieve_broadcast(data) + else + parent.ntnet_recieve(data) /datum/component/ntnet_interface/proc/__network_send(datum/netdata/data, netid) //Do not directly proccall! // Process data before sending it diff --git a/code/datums/components/signal_redirect.dm b/code/datums/components/signal_redirect.dm index 764a44e4a9..8828c03c2d 100644 --- a/code/datums/components/signal_redirect.dm +++ b/code/datums/components/signal_redirect.dm @@ -1,8 +1,13 @@ /datum/component/redirect dupe_mode = COMPONENT_DUPE_ALLOWED -/datum/component/redirect/Initialize(list/signals, datum/callback/_callback) +/datum/component/redirect/Initialize(list/signals, datum/callback/_callback, flags=NONE) //It's not our job to verify the right signals are registered here, just do it. if(!LAZYLEN(signals) || !istype(_callback)) return COMPONENT_INCOMPATIBLE + if(flags & REDIRECT_TRANSFER_WITH_TURF && isturf(parent)) + RegisterSignal(COMSIG_TURF_CHANGE, .proc/turf_change) RegisterSignal(signals, _callback) + +/datum/component/redirect/proc/turf_change(path, new_baseturfs, flags, list/transfers) + transfers += src diff --git a/code/datums/components/spooky.dm b/code/datums/components/spooky.dm index a62b7dcaab..0de27f30f0 100644 --- a/code/datums/components/spooky.dm +++ b/code/datums/components/spooky.dm @@ -42,11 +42,11 @@ var/T = get_turf(H) if(too_spooky) if(prob(30)) - new/obj/item/device/instrument/saxophone/spectral(T) + new/obj/item/instrument/saxophone/spectral(T) else if(prob(30)) - new/obj/item/device/instrument/trumpet/spectral(T) + new/obj/item/instrument/trumpet/spectral(T) else if(prob(30)) - new/obj/item/device/instrument/trombone/spectral(T) + new/obj/item/instrument/trombone/spectral(T) else to_chat(H, "The spooky gods forgot to ship your instrument. Better luck next unlife.") to_chat(H, "You are the spooky skeleton!") diff --git a/code/datums/components/stationloving.dm b/code/datums/components/stationloving.dm index a999624c32..54f8b107e0 100644 --- a/code/datums/components/stationloving.dm +++ b/code/datums/components/stationloving.dm @@ -28,13 +28,7 @@ CRASH("Unable to find a blobstart landmark") var/atom/movable/AM = parent - if(ismob(AM.loc)) - var/mob/M = AM.loc - M.transferItemToLoc(AM, targetturf, TRUE) //nodrops disks when? - else if(AM.loc.SendSignal(COMSIG_CONTAINS_STORAGE)) - AM.loc.SendSignal(COMSIG_TRY_STORAGE_TAKE, src, targetturf, TRUE) - else - AM.forceMove(targetturf) + AM.forceMove(targetturf) // move the disc, so ghosts remain orbiting it even if it's "destroyed" return targetturf diff --git a/code/datums/components/storage/concrete/_concrete.dm b/code/datums/components/storage/concrete/_concrete.dm index 54b3fa031e..8701252fe6 100644 --- a/code/datums/components/storage/concrete/_concrete.dm +++ b/code/datums/components/storage/concrete/_concrete.dm @@ -1,185 +1,198 @@ - -// External storage-related logic: -// /mob/proc/ClickOn() in /_onclick/click.dm - clicking items in storages -// /mob/living/Move() in /modules/mob/living/living.dm - hiding storage boxes on mob movement - -/datum/component/storage/concrete - var/drop_all_on_deconstruct = TRUE - var/drop_all_on_destroy = FALSE - var/transfer_contents_on_component_transfer = FALSE - var/list/datum/component/storage/slaves = list() - -/datum/component/storage/concrete/Initialize() - . = ..() - RegisterSignal(COMSIG_ATOM_CONTENTS_DEL, .proc/on_contents_del) - RegisterSignal(COMSIG_OBJ_DECONSTRUCT, .proc/on_deconstruct) - -/datum/component/storage/concrete/Destroy() - var/atom/real_location = real_location() - for(var/atom/_A in real_location) - _A.mouse_opacity = initial(_A.mouse_opacity) - if(drop_all_on_destroy) - do_quick_empty() - for(var/i in slaves) - var/datum/component/storage/slave = i - slave.change_master(null) - return ..() - -/datum/component/storage/concrete/master() - return src - -/datum/component/storage/concrete/real_location() - return parent - -/datum/component/storage/concrete/OnTransfer(datum/new_parent) - if(!isatom(new_parent)) - return COMPONENT_INCOMPATIBLE - var/list/mob/_is_using - if(is_using) - _is_using = is_using.Copy() - close_all() - if(transfer_contents_on_component_transfer) - var/atom/old = parent - for(var/i in old) - var/atom/movable/AM = i - AM.forceMove(new_parent) - if(_is_using) - for(var/i in _is_using) - var/mob/M = i - show_to(M) - -/datum/component/storage/concrete/_insert_physical_item(obj/item/I, override = FALSE) - . = TRUE - var/atom/real_location = real_location() - if(I.loc != real_location) - I.forceMove(real_location) - refresh_mob_views() - -/datum/component/storage/concrete/refresh_mob_views() - . = ..() - for(var/i in slaves) - var/datum/component/storage/slave = i - slave.refresh_mob_views() - -/datum/component/storage/concrete/emp_act(severity) - var/atom/real_location = real_location() - for(var/i in real_location) - var/atom/A = i - A.emp_act(severity) - -/datum/component/storage/concrete/proc/on_slave_link(datum/component/storage/S) - if(S == src) - return FALSE - slaves += S - return TRUE - -/datum/component/storage/concrete/proc/on_slave_unlink(datum/component/storage/S) - slaves -= S - return FALSE - -/datum/component/storage/concrete/proc/on_contents_del(atom/A) - var/atom/real_location = parent - if(A in real_location) - usr = null - remove_from_storage(A, null) - -/datum/component/storage/concrete/proc/on_deconstruct(disassembled) - if(drop_all_on_deconstruct) - do_quick_empty() - -/datum/component/storage/concrete/can_see_contents() - . = ..() - for(var/i in slaves) - var/datum/component/storage/slave = i - . |= slave.can_see_contents() - -//Resets screen loc and other vars of something being removed from storage. -/datum/component/storage/concrete/_removal_reset(atom/movable/thing) - thing.layer = initial(thing.layer) - thing.plane = initial(thing.plane) - thing.mouse_opacity = initial(thing.mouse_opacity) - if(thing.maptext) - thing.maptext = "" - -/datum/component/storage/concrete/remove_from_storage(atom/movable/AM, atom/new_location) - //Cache this as it should be reusable down the bottom, will not apply if anyone adds a sleep to dropped - //or moving objects, things that should never happen - var/atom/parent = src.parent - var/list/seeing_mobs = can_see_contents() - for(var/mob/M in seeing_mobs) - M.client.screen -= AM - if(ismob(parent.loc) && isitem(AM)) - var/obj/item/I = AM - var/mob/M = parent.loc - I.dropped(M) - if(new_location) - //Reset the items values - _removal_reset(AM) - AM.forceMove(new_location) - //We don't want to call this if the item is being destroyed - AM.on_exit_storage(src) - else - //Being destroyed, just move to nullspace now (so it's not in contents for the icon update) - AM.moveToNullspace() - refresh_mob_views() - if(isobj(parent)) - var/obj/O = parent - O.update_icon() - return TRUE - -/datum/component/storage/concrete/proc/slave_can_insert_object(datum/component/storage/slave, obj/item/I, stop_messages = FALSE, mob/M) - return TRUE - -/datum/component/storage/concrete/proc/handle_item_insertion_from_slave(datum/component/storage/slave, obj/item/I, prevent_warning = FALSE, M) - . = handle_item_insertion(I, prevent_warning, M, slave) - if(. && !prevent_warning) - slave.mob_item_insertion_feedback(usr, M, I) - -/datum/component/storage/concrete/handle_item_insertion(obj/item/I, prevent_warning = FALSE, mob/M, datum/component/storage/remote) //Remote is null or the slave datum - var/datum/component/storage/concrete/master = master() - var/atom/parent = src.parent - var/moved = FALSE - if(!istype(I)) - return FALSE - if(M) - if(!M.temporarilyRemoveItemFromInventory(I)) - return FALSE - else - moved = TRUE //At this point if the proc fails we need to manually move the object back to the turf/mob/whatever. - if(I.pulledby) - I.pulledby.stop_pulling() - if(silent) - prevent_warning = TRUE - if(!_insert_physical_item(I)) - if(moved) - if(M) - if(!M.put_in_active_hand(I)) - I.forceMove(parent.drop_location()) - else - I.forceMove(parent.drop_location()) - return FALSE - I.on_enter_storage(master) - refresh_mob_views() - I.mouse_opacity = MOUSE_OPACITY_OPAQUE //So you can click on the area around the item to equip it, instead of having to pixel hunt - if(M) - if(M.client && M.active_storage != src) - M.client.screen -= I - if(M.observers && M.observers.len) - for(var/i in M.observers) - var/mob/dead/observe = i - if(observe.client && observe.active_storage != src) - observe.client.screen -= I - if(!remote) - parent.add_fingerprint(M) - if(!prevent_warning) - mob_item_insertion_feedback(usr, M, I) - update_icon() - return TRUE - -/datum/component/storage/concrete/update_icon() - if(isobj(parent)) - var/obj/O = parent - O.update_icon() - for(var/i in slaves) - var/datum/component/storage/slave = i - slave.update_icon() + +// External storage-related logic: +// /mob/proc/ClickOn() in /_onclick/click.dm - clicking items in storages +// /mob/living/Move() in /modules/mob/living/living.dm - hiding storage boxes on mob movement + +/datum/component/storage/concrete + var/drop_all_on_deconstruct = TRUE + var/drop_all_on_destroy = FALSE + var/transfer_contents_on_component_transfer = FALSE + var/list/datum/component/storage/slaves = list() + + var/list/_contents_limbo // Where objects go to live mid transfer + var/list/_user_limbo // The last users before the component started moving + +/datum/component/storage/concrete/Initialize() + . = ..() + RegisterSignal(COMSIG_ATOM_CONTENTS_DEL, .proc/on_contents_del) + RegisterSignal(COMSIG_OBJ_DECONSTRUCT, .proc/on_deconstruct) + +/datum/component/storage/concrete/Destroy() + var/atom/real_location = real_location() + for(var/atom/_A in real_location) + _A.mouse_opacity = initial(_A.mouse_opacity) + if(drop_all_on_destroy) + do_quick_empty() + for(var/i in slaves) + var/datum/component/storage/slave = i + slave.change_master(null) + QDEL_LIST(_contents_limbo) + _user_limbo = null + return ..() + +/datum/component/storage/concrete/master() + return src + +/datum/component/storage/concrete/real_location() + return parent + +/datum/component/storage/concrete/PreTransfer() + if(is_using) + _user_limbo = is_using.Copy() + close_all() + if(transfer_contents_on_component_transfer) + _contents_limbo = list() + for(var/atom/movable/AM in parent) + _contents_limbo += AM + AM.moveToNullspace() + +/datum/component/storage/concrete/PostTransfer() + if(!isatom(parent)) + return COMPONENT_INCOMPATIBLE + if(transfer_contents_on_component_transfer) + for(var/i in _contents_limbo) + var/atom/movable/AM = i + AM.forceMove(parent) + _contents_limbo = null + if(_user_limbo) + for(var/i in _user_limbo) + show_to(i) + _user_limbo = null + +/datum/component/storage/concrete/_insert_physical_item(obj/item/I, override = FALSE) + . = TRUE + var/atom/real_location = real_location() + if(I.loc != real_location) + I.forceMove(real_location) + refresh_mob_views() + +/datum/component/storage/concrete/refresh_mob_views() + . = ..() + for(var/i in slaves) + var/datum/component/storage/slave = i + slave.refresh_mob_views() + +/datum/component/storage/concrete/emp_act(severity) + if(emp_shielded) + return + var/atom/real_location = real_location() + for(var/i in real_location) + var/atom/A = i + A.emp_act(severity) + +/datum/component/storage/concrete/proc/on_slave_link(datum/component/storage/S) + if(S == src) + return FALSE + slaves += S + return TRUE + +/datum/component/storage/concrete/proc/on_slave_unlink(datum/component/storage/S) + slaves -= S + return FALSE + +/datum/component/storage/concrete/proc/on_contents_del(atom/A) + var/atom/real_location = parent + if(A in real_location) + usr = null + remove_from_storage(A, null) + +/datum/component/storage/concrete/proc/on_deconstruct(disassembled) + if(drop_all_on_deconstruct) + do_quick_empty() + +/datum/component/storage/concrete/can_see_contents() + . = ..() + for(var/i in slaves) + var/datum/component/storage/slave = i + . |= slave.can_see_contents() + +//Resets screen loc and other vars of something being removed from storage. +/datum/component/storage/concrete/_removal_reset(atom/movable/thing) + thing.layer = initial(thing.layer) + thing.plane = initial(thing.plane) + thing.mouse_opacity = initial(thing.mouse_opacity) + if(thing.maptext) + thing.maptext = "" + +/datum/component/storage/concrete/remove_from_storage(atom/movable/AM, atom/new_location) + //Cache this as it should be reusable down the bottom, will not apply if anyone adds a sleep to dropped + //or moving objects, things that should never happen + var/atom/parent = src.parent + var/list/seeing_mobs = can_see_contents() + for(var/mob/M in seeing_mobs) + M.client.screen -= AM + if(ismob(parent.loc) && isitem(AM)) + var/obj/item/I = AM + var/mob/M = parent.loc + I.dropped(M) + if(new_location) + //Reset the items values + _removal_reset(AM) + AM.forceMove(new_location) + //We don't want to call this if the item is being destroyed + AM.on_exit_storage(src) + else + //Being destroyed, just move to nullspace now (so it's not in contents for the icon update) + AM.moveToNullspace() + refresh_mob_views() + if(isobj(parent)) + var/obj/O = parent + O.update_icon() + return TRUE + +/datum/component/storage/concrete/proc/slave_can_insert_object(datum/component/storage/slave, obj/item/I, stop_messages = FALSE, mob/M) + return TRUE + +/datum/component/storage/concrete/proc/handle_item_insertion_from_slave(datum/component/storage/slave, obj/item/I, prevent_warning = FALSE, M) + . = handle_item_insertion(I, prevent_warning, M, slave) + if(. && !prevent_warning) + slave.mob_item_insertion_feedback(usr, M, I) + +/datum/component/storage/concrete/handle_item_insertion(obj/item/I, prevent_warning = FALSE, mob/M, datum/component/storage/remote) //Remote is null or the slave datum + var/datum/component/storage/concrete/master = master() + var/atom/parent = src.parent + var/moved = FALSE + if(!istype(I)) + return FALSE + if(M) + if(!M.temporarilyRemoveItemFromInventory(I)) + return FALSE + else + moved = TRUE //At this point if the proc fails we need to manually move the object back to the turf/mob/whatever. + if(I.pulledby) + I.pulledby.stop_pulling() + if(silent) + prevent_warning = TRUE + if(!_insert_physical_item(I)) + if(moved) + if(M) + if(!M.put_in_active_hand(I)) + I.forceMove(parent.drop_location()) + else + I.forceMove(parent.drop_location()) + return FALSE + I.on_enter_storage(master) + refresh_mob_views() + I.mouse_opacity = MOUSE_OPACITY_OPAQUE //So you can click on the area around the item to equip it, instead of having to pixel hunt + if(M) + if(M.client && M.active_storage != src) + M.client.screen -= I + if(M.observers && M.observers.len) + for(var/i in M.observers) + var/mob/dead/observe = i + if(observe.client && observe.active_storage != src) + observe.client.screen -= I + if(!remote) + parent.add_fingerprint(M) + if(!prevent_warning) + mob_item_insertion_feedback(usr, M, I) + update_icon() + return TRUE + +/datum/component/storage/concrete/update_icon() + if(isobj(parent)) + var/obj/O = parent + O.update_icon() + for(var/i in slaves) + var/datum/component/storage/slave = i + slave.update_icon() diff --git a/code/datums/components/storage/concrete/implant.dm b/code/datums/components/storage/concrete/implant.dm index d3f3d6b586..0348d340ae 100644 --- a/code/datums/components/storage/concrete/implant.dm +++ b/code/datums/components/storage/concrete/implant.dm @@ -1,17 +1,18 @@ -/datum/component/storage/concrete/implant - max_w_class = WEIGHT_CLASS_NORMAL - max_combined_w_class = 6 - max_items = 2 - drop_all_on_destroy = TRUE - drop_all_on_deconstruct = TRUE - silent = TRUE - -/datum/component/storage/concrete/implant/Initialize() - . = ..() - cant_hold = typecacheof(list(/obj/item/disk/nuclear)) - -/datum/component/storage/concrete/implant/InheritComponent(datum/component/storage/concrete/implant/I, original) - if(!istype(I)) - return ..() - max_combined_w_class += I.max_combined_w_class - max_items += I.max_items +/datum/component/storage/concrete/implant + max_w_class = WEIGHT_CLASS_NORMAL + max_combined_w_class = 6 + max_items = 2 + drop_all_on_destroy = TRUE + drop_all_on_deconstruct = TRUE + silent = TRUE + allow_big_nesting = TRUE + +/datum/component/storage/concrete/implant/Initialize() + . = ..() + cant_hold = typecacheof(list(/obj/item/disk/nuclear)) + +/datum/component/storage/concrete/implant/InheritComponent(datum/component/storage/concrete/implant/I, original) + if(!istype(I)) + return ..() + max_combined_w_class += I.max_combined_w_class + max_items += I.max_items diff --git a/code/datums/components/storage/concrete/pockets.dm b/code/datums/components/storage/concrete/pockets.dm index 124102a6bd..e415e73df9 100644 --- a/code/datums/components/storage/concrete/pockets.dm +++ b/code/datums/components/storage/concrete/pockets.dm @@ -39,7 +39,7 @@ /obj/item/scalpel, /obj/item/reagent_containers/syringe, /obj/item/dnainjector, /obj/item/reagent_containers/hypospray/medipen, /obj/item/reagent_containers/dropper, /obj/item/implanter, /obj/item/screwdriver, /obj/item/weldingtool/mini, - /obj/item/device/firing_pin + /obj/item/firing_pin )) /datum/component/storage/concrete/pockets/shoes/clown/Initialize() @@ -49,7 +49,7 @@ /obj/item/scalpel, /obj/item/reagent_containers/syringe, /obj/item/dnainjector, /obj/item/reagent_containers/hypospray/medipen, /obj/item/reagent_containers/dropper, /obj/item/implanter, /obj/item/screwdriver, /obj/item/weldingtool/mini, - /obj/item/device/firing_pin, /obj/item/bikehorn)) + /obj/item/firing_pin, /obj/item/bikehorn)) /datum/component/storage/concrete/pockets/pocketprotector max_items = 3 @@ -61,5 +61,5 @@ /obj/item/pen, /obj/item/toy/crayon, /obj/item/lipstick, - /obj/item/device/flashlight/pen, + /obj/item/flashlight/pen, /obj/item/clothing/mask/cigarette)) \ No newline at end of file diff --git a/code/datums/components/storage/concrete/rped.dm b/code/datums/components/storage/concrete/rped.dm index 9966fa3749..eb895fd74f 100644 --- a/code/datums/components/storage/concrete/rped.dm +++ b/code/datums/components/storage/concrete/rped.dm @@ -1,31 +1,33 @@ -/datum/component/storage/concrete/rped - collection_mode = COLLECT_EVERYTHING - allow_quick_gather = TRUE - allow_quick_empty = TRUE - click_gather = TRUE - max_w_class = WEIGHT_CLASS_NORMAL - max_combined_w_class = 100 - max_items = 50 - display_numerical_stacking = TRUE - -/datum/component/storage/concrete/rped/can_be_inserted(obj/item/I, stop_messages, mob/M) - . = ..() - if(!I.get_part_rating() && !stop_messages) - to_chat(M, "[parent] only accepts machine parts!") - return FALSE - -/datum/component/storage/concrete/bluespace/rped - collection_mode = COLLECT_EVERYTHING - allow_quick_gather = TRUE - allow_quick_empty = TRUE - click_gather = TRUE - max_w_class = WEIGHT_CLASS_NORMAL - max_combined_w_class = 800 - max_items = 400 - display_numerical_stacking = TRUE - -/datum/component/storage/concrete/bluespace/rped/can_be_inserted(obj/item/I, stop_messages, mob/M) - . = ..() - if(!I.get_part_rating() && !stop_messages) - to_chat(M, "[parent] only accepts machine parts!") - return FALSE +/datum/component/storage/concrete/rped + collection_mode = COLLECT_EVERYTHING + allow_quick_gather = TRUE + allow_quick_empty = TRUE + click_gather = TRUE + max_w_class = WEIGHT_CLASS_NORMAL + max_combined_w_class = 100 + max_items = 50 + display_numerical_stacking = TRUE + +/datum/component/storage/concrete/rped/can_be_inserted(obj/item/I, stop_messages, mob/M) + . = ..() + if(!I.get_part_rating()) + if (!stop_messages) + to_chat(M, "[parent] only accepts machine parts!") + return FALSE + +/datum/component/storage/concrete/bluespace/rped + collection_mode = COLLECT_EVERYTHING + allow_quick_gather = TRUE + allow_quick_empty = TRUE + click_gather = TRUE + max_w_class = WEIGHT_CLASS_NORMAL + max_combined_w_class = 800 + max_items = 400 + display_numerical_stacking = TRUE + +/datum/component/storage/concrete/bluespace/rped/can_be_inserted(obj/item/I, stop_messages, mob/M) + . = ..() + if(!I.get_part_rating()) + if (!stop_messages) + to_chat(M, "[parent] only accepts machine par ts!") + return FALSE diff --git a/code/datums/components/storage/storage.dm b/code/datums/components/storage/storage.dm index ba59712020..e6d43ed65a 100644 --- a/code/datums/components/storage/storage.dm +++ b/code/datums/components/storage/storage.dm @@ -87,7 +87,8 @@ RegisterSignal(COMSIG_ATOM_ATTACK_PAW, .proc/on_attack_hand) RegisterSignal(COMSIG_ATOM_EMP_ACT, .proc/emp_act) RegisterSignal(COMSIG_ATOM_ATTACK_GHOST, .proc/show_to_ghost) - RegisterSignal(COMSIG_ATOM_EXITED, .proc/_removal_reset) + RegisterSignal(COMSIG_ATOM_ENTERED, .proc/refresh_mob_views) + RegisterSignal(COMSIG_ATOM_EXITED, .proc/_remove_and_refresh) RegisterSignal(COMSIG_ITEM_PRE_ATTACK, .proc/preattack_intercept) RegisterSignal(COMSIG_ITEM_ATTACK_SELF, .proc/attack_self) @@ -108,7 +109,7 @@ LAZYCLEARLIST(is_using) return ..() -/datum/component/storage/OnTransfer(datum/new_parent) +/datum/component/storage/PreTransfer() update_actions() /datum/component/storage/proc/update_actions() @@ -232,13 +233,15 @@ stoplag(1) qdel(progress) -/datum/component/storage/proc/mass_remove_from_storage(atom/target, list/things, datum/progressbar/progress) +/datum/component/storage/proc/mass_remove_from_storage(atom/target, list/things, datum/progressbar/progress, trigger_on_found = TRUE) var/atom/real_location = real_location() for(var/obj/item/I in things) things -= I if(I.loc != real_location) continue remove_from_storage(I, target) + if(trigger_on_found && I.on_found()) + return FALSE if(TICK_CHECK) progress.update(progress.goal - length(things)) return TRUE @@ -367,10 +370,10 @@ . = TRUE //returns TRUE if any mobs actually got a close(M) call /datum/component/storage/proc/emp_act(severity) - var/atom/A = parent - if(!isliving(A.loc) && !emp_shielded) - var/datum/component/storage/concrete/master = master() - master.emp_act(severity) + if(emp_shielded) + return + var/datum/component/storage/concrete/master = master() + master.emp_act(severity) //This proc draws out the inventory and places the items on it. tx and ty are the upper left tile and mx, my are the bottm right. //The numbers are calculated from the bottom-left The bottom-left slot being 1,1. @@ -400,6 +403,10 @@ return FALSE return master._removal_reset(thing) +/datum/component/storage/proc/_remove_and_refresh(atom/movable/thing) + _removal_reset(thing) + refresh_mob_views() + //Call this proc to handle the removal of an item from the storage item. The item will be moved to the new_location target, if that is null it's being deleted /datum/component/storage/proc/remove_from_storage(atom/movable/AM, atom/new_location) if(!istype(AM)) @@ -453,23 +460,24 @@ return FALSE handle_item_insertion(I, FALSE, M) -/datum/component/storage/proc/return_inv() - . = list() - . += contents() - for(var/i in contents()) - var/atom/a = i - GET_COMPONENT_FROM(STR, /datum/component/storage, a) - if(STR) - . += STR.return_inv() +/datum/component/storage/proc/return_inv(recursive) + var/list/ret = list() + ret |= contents() + if(recursive) + for(var/i in ret.Copy()) + var/atom/A = i + A.SendSignal(COMSIG_TRY_STORAGE_RETURN_INVENTORY, ret, TRUE) + return ret /datum/component/storage/proc/contents() //ONLY USE IF YOU NEED TO COPY CONTENTS OF REAL LOCATION, COPYING IS NOT AS FAST AS DIRECT ACCESS! var/atom/real_location = real_location() return real_location.contents.Copy() -/datum/component/storage/proc/signal_return_inv(list/interface) +//Abuses the fact that lists are just references, or something like that. +/datum/component/storage/proc/signal_return_inv(list/interface, recursive = TRUE) if(!islist(interface)) return FALSE - interface |= return_inv() + interface |= return_inv(recursive) return TRUE /datum/component/storage/proc/mousedrop_onto(atom/over_object, mob/M) diff --git a/code/datums/components/wet_floor.dm b/code/datums/components/wet_floor.dm index 78b31802c9..afba151b9f 100644 --- a/code/datums/components/wet_floor.dm +++ b/code/datums/components/wet_floor.dm @@ -135,12 +135,14 @@ for(var/i in time_left_list) . |= text2num(i) -/datum/component/wet_floor/OnTransfer(datum/to_datum) - if(!isopenturf(to_datum)) - return COMPONENT_INCOMPATIBLE +/datum/component/wet_floor/PreTransfer() var/turf/O = parent O.cut_overlay(current_overlay) - var/turf/T = to_datum + +/datum/component/wet_floor/PostTransfer() + if(!isopenturf(parent)) + return COMPONENT_INCOMPATIBLE + var/turf/T = parent T.add_overlay(current_overlay) /datum/component/wet_floor/proc/add_wet(type, duration_minimum = 0, duration_add = 0, duration_maximum = MAXIMUM_WET_TIME, _permanent = FALSE) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index c6c0f2353a..59953a4ce1 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -1,3 +1,6 @@ +/datum/proc/CanProcCall(procname) + return TRUE + /datum/proc/can_vv_get(var_name) return TRUE diff --git a/code/datums/diseases/_MobProcs.dm b/code/datums/diseases/_MobProcs.dm index 74d4b90493..ba570eca06 100644 --- a/code/datums/diseases/_MobProcs.dm +++ b/code/datums/diseases/_MobProcs.dm @@ -79,8 +79,8 @@ if(isobj(H.wear_suit)) Cl = H.wear_suit passed = prob((Cl.permeability_coefficient*100) - 1) - if(passed && isobj(slot_w_uniform)) - Cl = slot_w_uniform + if(passed && isobj(SLOT_W_UNIFORM)) + Cl = SLOT_W_UNIFORM passed = prob((Cl.permeability_coefficient*100) - 1) if(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM) if(isobj(H.wear_suit) && H.wear_suit.body_parts_covered&HANDS) diff --git a/code/datums/diseases/advance/symptoms/vomit.dm b/code/datums/diseases/advance/symptoms/vomit.dm index 14d7f105ab..53e79f0cc1 100644 --- a/code/datums/diseases/advance/symptoms/vomit.dm +++ b/code/datums/diseases/advance/symptoms/vomit.dm @@ -55,7 +55,7 @@ Bonus switch(A.stage) if(1, 2, 3, 4) if(prob(base_message_chance) && !suppress_warning) - to_chat(M, "[pick("You feel nauseous.", "You feel like you're going to throw up!")]") + to_chat(M, "[pick("You feel nauseated.", "You feel like you're going to throw up!")]") else vomit(M) diff --git a/code/datums/diseases/heart_failure.dm b/code/datums/diseases/heart_failure.dm index a9adf39812..3fbf6ef177 100644 --- a/code/datums/diseases/heart_failure.dm +++ b/code/datums/diseases/heart_failure.dm @@ -34,7 +34,7 @@ to_chat(H, "You feel dizzy.") H.confused += 6 if(prob(3)) - to_chat(H, "You feel [pick("full", "nauseous", "sweaty", "weak", "tired", "short on breath", "uneasy")].") + to_chat(H, "You feel [pick("full", "nauseated", "sweaty", "weak", "tired", "short on breath", "uneasy")].") if(3 to 4) if(!sound) H.playsound_local(H, 'sound/health/slowbeat.ogg',40,0, channel = CHANNEL_HEARTBEAT) diff --git a/code/datums/diseases/rhumba_beat.dm b/code/datums/diseases/rhumba_beat.dm index 2df4466822..52e9c2e19f 100644 --- a/code/datums/diseases/rhumba_beat.dm +++ b/code/datums/diseases/rhumba_beat.dm @@ -9,7 +9,6 @@ viable_mobtypes = list(/mob/living/carbon/human) permeability_mod = 1 severity = DISEASE_SEVERITY_BIOHAZARD - process_dead = TRUE /datum/disease/rhumba_beat/stage_act() ..() diff --git a/code/datums/diseases/wizarditis.dm b/code/datums/diseases/wizarditis.dm index cfc848000b..919eaa6e12 100644 --- a/code/datums/diseases/wizarditis.dm +++ b/code/datums/diseases/wizarditis.dm @@ -61,19 +61,19 @@ STI KALY - blind if(!istype(H.head, /obj/item/clothing/head/wizard)) if(!H.dropItemToGround(H.head)) qdel(H.head) - H.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(H), slot_head) + H.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(H), SLOT_HEAD) return if(prob(chance)) if(!istype(H.wear_suit, /obj/item/clothing/suit/wizrobe)) if(!H.dropItemToGround(H.wear_suit)) qdel(H.wear_suit) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(H), slot_wear_suit) + H.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(H), SLOT_WEAR_SUIT) return if(prob(chance)) if(!istype(H.shoes, /obj/item/clothing/shoes/sandal/magic)) if(!H.dropItemToGround(H.shoes)) qdel(H.shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal/magic(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal/magic(H), SLOT_SHOES) return else var/mob/living/carbon/H = affected_mob diff --git a/code/datums/helper_datums/getrev.dm b/code/datums/helper_datums/getrev.dm index 9b431732aa..b459b31fcb 100644 --- a/code/datums/helper_datums/getrev.dm +++ b/code/datums/helper_datums/getrev.dm @@ -5,7 +5,7 @@ var/date /datum/getrev/New() - testmerge = SERVER_TOOLS_PR_LIST + testmerge = world.TgsTestMerges() log_world("Running /tg/ revision:") var/list/logs = world.file2list(".git/logs/HEAD") if(logs) @@ -21,7 +21,8 @@ log_world(commit) for(var/line in testmerge) if(line) - var/tmcommit = testmerge[line]["commit"] + var/datum/tgs_revision_information/test_merge/tm = line + var/tmcommit = tm.commit log_world("Test merge active of PR #[line] commit [tmcommit]") SSblackbox.record_feedback("nested tally", "testmerged_prs", 1, list("[line]", "[tmcommit]")) if(originmastercommit) @@ -34,11 +35,12 @@ return "" . = header ? "The following pull requests are currently test merged:
" : "" for(var/line in testmerge) - var/cm = testmerge[line]["commit"] - var/details = ": '" + html_encode(testmerge[line]["title"]) + "' by " + html_encode(testmerge[line]["author"]) + " at commit " + html_encode(copytext(cm, 1, min(length(cm), 7))) + var/datum/tgs_revision_information/test_merge/tm = line + var/cm = tm.pull_request_commit + var/details = ": '" + html_encode(tm.title) + "' by " + html_encode(tm.author) + " at commit " + html_encode(copytext(cm, 1, min(length(cm), 11))) if(details && findtext(details, "\[s\]") && (!usr || !usr.client.holder)) continue - . += "#[line][details]
" + . += "#[tm.number][details]
" /client/verb/showrevinfo() set category = "OOC" @@ -54,13 +56,12 @@ to_chat(src, GLOB.revdata.GetTestMergeInfo()) prefix = "Based off origin/master commit: " var/pc = GLOB.revdata.originmastercommit - to_chat(src, "[prefix][copytext(pc, 1, min(length(pc), 7))]") + to_chat(src, "[prefix][copytext(pc, 1, min(length(pc), 11))]") else to_chat(src, "Master revision unknown") to_chat(src, "Revision: [GLOB.revdata.commit]") - if(SERVER_TOOLS_PRESENT) - to_chat(src, "Server tools version: [SERVER_TOOLS_VERSION]") - to_chat(src, "Server tools API version: [SERVER_TOOLS_API_VERSION]") + if(world.TgsAvailable()) + to_chat(src, "Server tools version: [world.TgsVersion()]") to_chat(src, "Current Informational Settings:") to_chat(src, "Protect Authority Roles From Traitor: [CONFIG_GET(flag/protect_roles_from_antagonist)]") to_chat(src, "Protect Assistant Role From Traitor: [CONFIG_GET(flag/protect_assistant_from_antagonist)]") diff --git a/code/datums/martial/boxing.dm b/code/datums/martial/boxing.dm index 5f97db0827..68b021bc7d 100644 --- a/code/datums/martial/boxing.dm +++ b/code/datums/martial/boxing.dm @@ -53,7 +53,7 @@ /obj/item/clothing/gloves/boxing/equipped(mob/user, slot) if(!ishuman(user)) return - if(slot == slot_gloves) + if(slot == SLOT_GLOVES) var/mob/living/carbon/human/H = user style.teach(H,1) return @@ -62,6 +62,6 @@ if(!ishuman(user)) return var/mob/living/carbon/human/H = user - if(H.get_item_by_slot(slot_gloves) == src) + if(H.get_item_by_slot(SLOT_GLOVES) == src) style.remove(H) return diff --git a/code/datums/martial/krav_maga.dm b/code/datums/martial/krav_maga.dm index 82497adf45..21a82c7b7e 100644 --- a/code/datums/martial/krav_maga.dm +++ b/code/datums/martial/krav_maga.dm @@ -170,7 +170,7 @@ /obj/item/clothing/gloves/krav_maga/equipped(mob/user, slot) if(!ishuman(user)) return - if(slot == slot_gloves) + if(slot == SLOT_GLOVES) var/mob/living/carbon/human/H = user style.teach(H,1) @@ -178,7 +178,7 @@ if(!ishuman(user)) return var/mob/living/carbon/human/H = user - if(H.get_item_by_slot(slot_gloves) == src) + if(H.get_item_by_slot(SLOT_GLOVES) == src) style.remove(H) /obj/item/clothing/gloves/krav_maga/sec//more obviously named, given to sec diff --git a/code/datums/martial/mushpunch.dm b/code/datums/martial/mushpunch.dm index b68d1f1b2b..7c99d4d8aa 100644 --- a/code/datums/martial/mushpunch.dm +++ b/code/datums/martial/mushpunch.dm @@ -23,7 +23,7 @@ /obj/item/mushpunch name = "odd mushroom" desc = "Sapienza Ophioglossoides:An odd mushroom from the flesh of a mushroom person. it has apparently retained some innate power of it's owner, as it quivers with barely-contained POWER!" - icon = 'icons/obj/hydroponics/growing_mushrooms.dmi' + icon = 'icons/obj/hydroponics/seeds.dmi' icon_state = "mycelium-angel" /obj/item/mushpunch/attack_self(mob/living/carbon/human/user) diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index 845a7507bd..4c25db4e85 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -161,7 +161,7 @@ desc = "A long, tall staff made of polished wood. Traditionally used in ancient old-Earth martial arts. Can be wielded to both kill and incapacitate." force = 10 w_class = WEIGHT_CLASS_BULKY - slot_flags = SLOT_BACK + slot_flags = ITEM_SLOT_BACK force_unwielded = 10 force_wielded = 24 throwforce = 20 diff --git a/code/datums/martial/wrestling.dm b/code/datums/martial/wrestling.dm index 8ac7e76cdb..62a03af933 100644 --- a/code/datums/martial/wrestling.dm +++ b/code/datums/martial/wrestling.dm @@ -448,7 +448,7 @@ /obj/item/storage/belt/champion/wrestling/equipped(mob/user, slot) if(!ishuman(user)) return - if(slot == slot_belt) + if(slot == SLOT_BELT) var/mob/living/carbon/human/H = user style.teach(H,1) return @@ -457,6 +457,6 @@ if(!ishuman(user)) return var/mob/living/carbon/human/H = user - if(H.get_item_by_slot(slot_belt) == src) + if(H.get_item_by_slot(SLOT_BELT) == src) style.remove(H) return diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 0b502d4fe6..6c744b3d84 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -237,12 +237,12 @@ /datum/mind/proc/remove_antag_equip() var/list/Mob_Contents = current.get_contents() for(var/obj/item/I in Mob_Contents) - if(istype(I, /obj/item/device/pda)) - var/obj/item/device/pda/P = I + if(istype(I, /obj/item/pda)) + var/obj/item/pda/P = I P.lock_code = "" - else if(istype(I, /obj/item/device/radio)) - var/obj/item/device/radio/R = I + else if(istype(I, /obj/item/radio)) + var/obj/item/radio/R = I R.traitor_frequency = 0 /datum/mind/proc/remove_all_antag() //For the Lazy amongst us. @@ -264,8 +264,8 @@ . = TRUE var/list/all_contents = traitor_mob.GetAllContents() - var/obj/item/device/pda/PDA = locate() in all_contents - var/obj/item/device/radio/R = locate() in all_contents + var/obj/item/pda/PDA = locate() in all_contents + var/obj/item/radio/R = locate() in all_contents var/obj/item/pen/P if (PDA) // Prioritize PDA pen, otherwise the pocket protector pens will be chosen, which causes numerous ahelps about missing uplink diff --git a/code/datums/outfit.dm b/code/datums/outfit.dm index e5e13f597f..90feeacb79 100755 --- a/code/datums/outfit.dm +++ b/code/datums/outfit.dm @@ -39,31 +39,31 @@ //Start with uniform,suit,backpack for additional slots if(uniform) - H.equip_to_slot_or_del(new uniform(H),slot_w_uniform) + H.equip_to_slot_or_del(new uniform(H),SLOT_W_UNIFORM) if(suit) - H.equip_to_slot_or_del(new suit(H),slot_wear_suit) + H.equip_to_slot_or_del(new suit(H),SLOT_WEAR_SUIT) if(back) - H.equip_to_slot_or_del(new back(H),slot_back) + H.equip_to_slot_or_del(new back(H),SLOT_BACK) if(belt) - H.equip_to_slot_or_del(new belt(H),slot_belt) + H.equip_to_slot_or_del(new belt(H),SLOT_BELT) if(gloves) - H.equip_to_slot_or_del(new gloves(H),slot_gloves) + H.equip_to_slot_or_del(new gloves(H),SLOT_GLOVES) if(shoes) - H.equip_to_slot_or_del(new shoes(H),slot_shoes) + H.equip_to_slot_or_del(new shoes(H),SLOT_SHOES) if(head) - H.equip_to_slot_or_del(new head(H),slot_head) + H.equip_to_slot_or_del(new head(H),SLOT_HEAD) if(mask) - H.equip_to_slot_or_del(new mask(H),slot_wear_mask) + H.equip_to_slot_or_del(new mask(H),SLOT_WEAR_MASK) if(neck) - H.equip_to_slot_or_del(new neck(H),slot_neck) + H.equip_to_slot_or_del(new neck(H),SLOT_NECK) if(ears) - H.equip_to_slot_or_del(new ears(H),slot_ears) + H.equip_to_slot_or_del(new ears(H),SLOT_EARS) if(glasses) - H.equip_to_slot_or_del(new glasses(H),slot_glasses) + H.equip_to_slot_or_del(new glasses(H),SLOT_GLASSES) if(id) - H.equip_to_slot_or_del(new id(H),slot_wear_id) + H.equip_to_slot_or_del(new id(H),SLOT_WEAR_ID) if(suit_store) - H.equip_to_slot_or_del(new suit_store(H),slot_s_store) + H.equip_to_slot_or_del(new suit_store(H),SLOT_S_STORE) if(accessory) var/obj/item/clothing/under/U = H.w_uniform @@ -79,16 +79,16 @@ if(!visualsOnly) // Items in pockets or backpack don't show up on mob's icon. if(l_pocket) - H.equip_to_slot_or_del(new l_pocket(H),slot_l_store) + H.equip_to_slot_or_del(new l_pocket(H),SLOT_L_STORE) if(r_pocket) - H.equip_to_slot_or_del(new r_pocket(H),slot_r_store) + H.equip_to_slot_or_del(new r_pocket(H),SLOT_R_STORE) if(backpack_contents) for(var/path in backpack_contents) var/number = backpack_contents[path] if(!isnum(number))//Default to 1 number = 1 for(var/i in 1 to number) - H.equip_to_slot_or_del(new path(H),slot_in_backpack) + H.equip_to_slot_or_del(new path(H),SLOT_IN_BACKPACK) if(!H.head && toggle_helmet && istype(H.wear_suit, /obj/item/clothing/suit/space/hardsuit)) var/obj/item/clothing/suit/space/hardsuit/HS = H.wear_suit diff --git a/code/datums/radiation_wave.dm b/code/datums/radiation_wave.dm index 68d8ebc31f..f02d352310 100644 --- a/code/datums/radiation_wave.dm +++ b/code/datums/radiation_wave.dm @@ -29,6 +29,9 @@ /datum/radiation_wave/process() master_turf = get_step(master_turf, move_dir) + if(!master_turf) + qdel(src) + return steps++ var/list/atoms = get_rad_atoms() diff --git a/code/datums/traits/_trait.dm b/code/datums/traits/_quirk.dm similarity index 59% rename from code/datums/traits/_trait.dm rename to code/datums/traits/_quirk.dm index 96f6857970..b39da84575 100644 --- a/code/datums/traits/_trait.dm +++ b/code/datums/traits/_quirk.dm @@ -1,94 +1,94 @@ -//every trait in this folder should be coded around being applied on spawn -//these are NOT "mob traits" like GOTTAGOFAST, but exist as a medium to apply them and other different effects -/datum/trait - var/name = "Test Trait" - var/desc = "This is a test trait." +//every quirk in this folder should be coded around being applied on spawn +//these are NOT "mob quirks" like GOTTAGOFAST, but exist as a medium to apply them and other different effects +/datum/quirk + var/name = "Test Quirk" + var/desc = "This is a test quirk." var/value = 0 var/human_only = TRUE var/gain_text var/lose_text var/medical_record_text //This text will appear on medical records for the trait. Not yet implemented - var/mood_trait = FALSE //if true, this trait affects mood and is unavailable if moodlets are disabled + var/mood_quirk = FALSE //if true, this quirk affects mood and is unavailable if moodlets are disabled var/mob_trait //if applicable, apply and remove this mob trait - var/mob/living/trait_holder + var/mob/living/quirk_holder -/datum/trait/New(mob/living/trait_mob, spawn_effects) +/datum/quirk/New(mob/living/quirk_mob, spawn_effects) ..() - if(!trait_mob || (human_only && !ishuman(trait_mob)) || trait_mob.has_trait_datum(type)) + if(!quirk_mob || (human_only && !ishuman(quirk_mob)) || quirk_mob.has_quirk(type)) qdel(src) - trait_holder = trait_mob - SStraits.trait_objects += src - to_chat(trait_holder, gain_text) - trait_holder.roundstart_traits += src + quirk_holder = quirk_mob + SSquirks.quirk_objects += src + to_chat(quirk_holder, gain_text) + quirk_holder.roundstart_quirks += src if(mob_trait) - trait_holder.add_trait(mob_trait, ROUNDSTART_TRAIT) - START_PROCESSING(SStraits, src) + quirk_holder.add_trait(mob_trait, ROUNDSTART_TRAIT) + START_PROCESSING(SSquirks, src) add() if(spawn_effects) on_spawn() addtimer(CALLBACK(src, .proc/post_add), 30) -/datum/trait/Destroy() - STOP_PROCESSING(SStraits, src) +/datum/quirk/Destroy() + STOP_PROCESSING(SSquirks, src) remove() - if(trait_holder) - to_chat(trait_holder, lose_text) - trait_holder.roundstart_traits -= src + if(quirk_holder) + to_chat(quirk_holder, lose_text) + quirk_holder.roundstart_quirks -= src if(mob_trait) - trait_holder.remove_trait(mob_trait, ROUNDSTART_TRAIT, TRUE) - SStraits.trait_objects -= src + quirk_holder.remove_trait(mob_trait, ROUNDSTART_TRAIT, TRUE) + SSquirks.quirk_objects -= src return ..() -/datum/trait/proc/transfer_mob(mob/living/to_mob) - trait_holder.roundstart_traits -= src - to_mob.roundstart_traits += src +/datum/quirk/proc/transfer_mob(mob/living/to_mob) + quirk_holder.roundstart_quirks -= src + to_mob.roundstart_quirks += src if(mob_trait) - trait_holder.remove_trait(mob_trait, ROUNDSTART_TRAIT) + quirk_holder.remove_trait(mob_trait, ROUNDSTART_TRAIT) to_mob.add_trait(mob_trait, ROUNDSTART_TRAIT) - trait_holder = to_mob + quirk_holder = to_mob on_transfer() -/datum/trait/proc/add() //special "on add" effects -/datum/trait/proc/on_spawn() //these should only trigger when the character is being created for the first time, i.e. roundstart/latejoin -/datum/trait/proc/remove() //special "on remove" effects -/datum/trait/proc/on_process() //process() has some special checks, so this is the actual process -/datum/trait/proc/post_add() //for text, disclaimers etc. given after you spawn in with the trait -/datum/trait/proc/on_transfer() //code called when the trait is transferred to a new mob +/datum/quirk/proc/add() //special "on add" effects +/datum/quirk/proc/on_spawn() //these should only trigger when the character is being created for the first time, i.e. roundstart/latejoin +/datum/quirk/proc/remove() //special "on remove" effects +/datum/quirk/proc/on_process() //process() has some special checks, so this is the actual process +/datum/quirk/proc/post_add() //for text, disclaimers etc. given after you spawn in with the trait +/datum/quirk/proc/on_transfer() //code called when the trait is transferred to a new mob -/datum/trait/process() - if(QDELETED(trait_holder)) - trait_holder = null +/datum/quirk/process() + if(QDELETED(quirk_holder)) + quirk_holder = null qdel(src) return - if(trait_holder.stat == DEAD) + if(quirk_holder.stat == DEAD) return on_process() /mob/living/proc/get_trait_string(medical) //helper string. gets a string of all the traits the mob has var/list/dat = list() if(!medical) - for(var/V in roundstart_traits) - var/datum/trait/T = V + for(var/V in roundstart_quirks) + var/datum/quirk/T = V dat += T.name if(!dat.len) return "None" return dat.Join(", ") else - for(var/V in roundstart_traits) - var/datum/trait/T = V + for(var/V in roundstart_quirks) + var/datum/quirk/T = V dat += T.medical_record_text if(!dat.len) return "None" return dat.Join("
") /mob/living/proc/cleanse_trait_datums() //removes all trait datums - for(var/V in roundstart_traits) - var/datum/trait/T = V + for(var/V in roundstart_quirks) + var/datum/quirk/T = V qdel(T) /mob/living/proc/transfer_trait_datums(mob/living/to_mob) - for(var/V in roundstart_traits) - var/datum/trait/T = V + for(var/V in roundstart_quirks) + var/datum/quirk/T = V T.transfer_mob(to_mob) /* @@ -96,7 +96,7 @@ Commented version of Nearsighted to help you add your own traits Use this as a guideline -/datum/trait/nearsighted +/datum/quirk/nearsighted name = "Nearsighted" ///The trait's name @@ -116,11 +116,11 @@ Use this as a guideline medical_record_text = "Subject has permanent nearsightedness." ///These three are self-explanatory -/datum/trait/nearsighted/on_spawn() - var/mob/living/carbon/human/H = trait_holder +/datum/quirk/nearsighted/on_spawn() + var/mob/living/carbon/human/H = quirk_holder var/obj/item/clothing/glasses/regular/glasses = new(get_turf(H)) H.put_in_hands(glasses) - H.equip_to_slot(glasses, slot_glasses) + H.equip_to_slot(glasses, SLOT_GLASSES) H.regenerate_icons() //This whole proc is called automatically @@ -130,3 +130,5 @@ Use this as a guideline //If you don't need any special effects like spawning glasses, then you don't need an add() */ + + diff --git a/code/datums/traits/good.dm b/code/datums/traits/good.dm index d05541fafb..d48c70f31b 100644 --- a/code/datums/traits/good.dm +++ b/code/datums/traits/good.dm @@ -1,7 +1,7 @@ //predominantly positive traits //this file is named weirdly so that positive traits are listed above negative ones -/datum/trait/alcohol_tolerance +/datum/quirk/alcohol_tolerance name = "Alcohol Tolerance" desc = "You become drunk more slowly and suffer fewer drawbacks from alcohol." value = 1 @@ -11,25 +11,25 @@ -/datum/trait/apathetic +/datum/quirk/apathetic name = "Apathetic" desc = "You just don't care as much as other people. That's nice to have in a place like this, I guess." value = 1 - mood_trait = TRUE + mood_quirk = TRUE -/datum/trait/apathetic/add() - GET_COMPONENT_FROM(mood, /datum/component/mood, trait_holder) +/datum/quirk/apathetic/add() + GET_COMPONENT_FROM(mood, /datum/component/mood, quirk_holder) if(mood) mood.mood_modifier = 0.8 -/datum/trait/apathetic/remove() - GET_COMPONENT_FROM(mood, /datum/component/mood, trait_holder) +/datum/quirk/apathetic/remove() + GET_COMPONENT_FROM(mood, /datum/component/mood, quirk_holder) if(mood) mood.mood_modifier = 1 //Change this once/if species get their own mood modifiers. -/datum/trait/freerunning +/datum/quirk/freerunning name = "Freerunning" desc = "You're great at quick moves! You can climb tables more quickly." value = 2 @@ -39,16 +39,16 @@ -/datum/trait/jolly +/datum/quirk/jolly name = "Jolly" desc = "You sometimes just feel happy, for no reason at all." value = 1 mob_trait = TRAIT_JOLLY - mood_trait = TRUE + mood_quirk = TRUE -/datum/trait/light_step +/datum/quirk/light_step name = "Light Step" desc = "You walk with a gentle step, making stepping on sharp objects quieter and less painful." value = 1 @@ -58,7 +58,7 @@ -/datum/trait/night_vision +/datum/quirk/night_vision name = "Night Vision" desc = "You can see slightly more clearly in full darkness than most people." value = 1 @@ -66,8 +66,8 @@ gain_text = "The shadows seem a little less dark." lose_text = "Everything seems a little darker." -/datum/trait/night_vision/on_spawn() - var/mob/living/carbon/human/H = trait_holder +/datum/quirk/night_vision/on_spawn() + var/mob/living/carbon/human/H = quirk_holder var/obj/item/organ/eyes/eyes = H.getorgan(/obj/item/organ/eyes) if(!eyes || eyes.lighting_alpha) return @@ -75,7 +75,7 @@ -/datum/trait/selfaware +/datum/quirk/selfaware name = "Self-Aware" desc = "You know your body well, and can accurately assess the extent of your wounds." value = 2 @@ -83,7 +83,7 @@ -/datum/trait/skittish +/datum/quirk/skittish name = "Skittish" desc = "You can conceal yourself in danger. Ctrl-shift-click a closed locker to jump into it, as long as you have access." value = 2 @@ -91,7 +91,7 @@ -/datum/trait/spiritual +/datum/quirk/spiritual name = "Spiritual" desc = "You're in tune with the gods, and your prayers may be more likely to be heard. Or not." value = 1 @@ -101,7 +101,7 @@ -/datum/trait/voracious +/datum/quirk/voracious name = "Voracious" desc = "Nothing gets between you and your food. You eat twice as fast as everyone else!" value = 1 diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm index 57284a2558..7752cc31c3 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -1,6 +1,6 @@ //predominantly negative traits -/datum/trait/blooddeficiency +/datum/quirk/blooddeficiency name = "Acute Blood Deficiency" desc = "Your body can't produce enough blood to sustain itself." value = -2 @@ -8,12 +8,12 @@ lose_text = "You feel vigorous again." medical_record_text = "Patient requires regular treatment for blood loss due to low production of blood." -/datum/trait/blooddeficiency/on_process() - trait_holder.blood_volume -= 0.275 +/datum/quirk/blooddeficiency/on_process() + quirk_holder.blood_volume -= 0.275 -/datum/trait/depression +/datum/quirk/depression name = "Depression" desc = "You sometimes just hate life." mob_trait = TRAIT_DEPRESSION @@ -21,22 +21,22 @@ gain_text = "You start feeling depressed." lose_text = "You no longer feel depressed." //if only it were that easy! medical_record_text = "Patient has a severe mood disorder causing them to experience sudden moments of sadness." - mood_trait = TRUE + mood_quirk = TRUE -/datum/trait/family_heirloom +/datum/quirk/family_heirloom name = "Family Heirloom" desc = "You are the current owner of an heirloom. passed down for generations. You have to keep it safe!" value = -1 - mood_trait = TRUE + mood_quirk = TRUE var/obj/item/heirloom var/where_text -/datum/trait/family_heirloom/on_spawn() - var/mob/living/carbon/human/H = trait_holder +/datum/quirk/family_heirloom/on_spawn() + var/mob/living/carbon/human/H = quirk_holder var/obj/item/heirloom_type - switch(trait_holder.mind.assigned_role) + switch(quirk_holder.mind.assigned_role) if("Clown") heirloom_type = /obj/item/bikehorn/golden if("Mime") @@ -56,35 +56,35 @@ /obj/item/toy/cards/deck, /obj/item/lighter, /obj/item/dice/d20) - heirloom = new heirloom_type(get_turf(trait_holder)) + heirloom = new heirloom_type(get_turf(quirk_holder)) var/list/slots = list( - "in your backpack" = slot_in_backpack, - "in your left pocket" = slot_l_store, - "in your right pocket" = slot_r_store + "in your backpack" = SLOT_IN_BACKPACK, + "in your left pocket" = SLOT_L_STORE, + "in your right pocket" = SLOT_R_STORE ) var/where = H.equip_in_one_of_slots(heirloom, slots) if(!where) where = "at your feet" - if(where == "in your backpack") - H.back.SendSignal(COMSIG_TRY_STORAGE_SHOW, H) + else if(where == "in your backpack") + H.back.SendSignal(COMSIG_TRY_STORAGE_SHOW, H) where_text = "There is a precious family [heirloom.name] [where], passed down from generation to generation. Keep it safe!" -/datum/trait/family_heirloom/post_add() - to_chat(trait_holder, where_text) - var/list/family_name = splittext(trait_holder.real_name, " ") +/datum/quirk/family_heirloom/post_add() + to_chat(quirk_holder, where_text) + var/list/family_name = splittext(quirk_holder.real_name, " ") heirloom.name = "\improper [family_name[family_name.len]] family [heirloom.name]" -/datum/trait/family_heirloom/on_process() - if(heirloom in trait_holder.GetAllContents()) - trait_holder.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "family_heirloom_missing") - trait_holder.SendSignal(COMSIG_ADD_MOOD_EVENT, "family_heirloom", /datum/mood_event/family_heirloom) +/datum/quirk/family_heirloom/on_process() + if(heirloom in quirk_holder.GetAllContents()) + quirk_holder.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "family_heirloom_missing") + quirk_holder.SendSignal(COMSIG_ADD_MOOD_EVENT, "family_heirloom", /datum/mood_event/family_heirloom) else - trait_holder.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "family_heirloom") - trait_holder.SendSignal(COMSIG_ADD_MOOD_EVENT, "family_heirloom_missing", /datum/mood_event/family_heirloom_missing) + quirk_holder.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "family_heirloom") + quirk_holder.SendSignal(COMSIG_ADD_MOOD_EVENT, "family_heirloom_missing", /datum/mood_event/family_heirloom_missing) -/datum/trait/heavy_sleeper +/datum/quirk/heavy_sleeper name = "Heavy Sleeper" desc = "You sleep like a rock! Whenever you're put to sleep, you sleep for a little bit longer." value = -1 @@ -93,20 +93,20 @@ lose_text = "You feel awake again." medical_record_text = "Patient has abnormal sleep study results and is difficult to wake up." -/datum/trait/brainproblems +/datum/quirk/brainproblems name = "Brain Tumor" desc = "You have a little friend in your brain that is slowly destroying it. Better bring some mannitol!" - value = -2 + value = -3 gain_text = "You feel smooth." lose_text = "You feel wrinkled again." medical_record_text = "Patient has a tumor in their brain that is slowly driving them to brain death." -/datum/trait/brainproblems/on_process() - trait_holder.adjustBrainLoss(0.2) +/datum/quirk/brainproblems/on_process() + quirk_holder.adjustBrainLoss(0.2) -/datum/trait/nearsighted //t. errorage +/datum/quirk/nearsighted //t. errorage name = "Nearsighted" desc = "You are nearsighted without prescription glasses, but spawn with a pair." value = -1 @@ -114,40 +114,40 @@ lose_text = "You start seeing faraway things normally again." medical_record_text = "Patient requires prescription glasses in order to counteract nearsightedness." -/datum/trait/nearsighted/add() - trait_holder.become_nearsighted(ROUNDSTART_TRAIT) +/datum/quirk/nearsighted/add() + quirk_holder.become_nearsighted(ROUNDSTART_TRAIT) -/datum/trait/nearsighted/on_spawn() - var/mob/living/carbon/human/H = trait_holder +/datum/quirk/nearsighted/on_spawn() + var/mob/living/carbon/human/H = quirk_holder var/obj/item/clothing/glasses/regular/glasses = new(get_turf(H)) H.put_in_hands(glasses) - H.equip_to_slot(glasses, slot_glasses) + H.equip_to_slot(glasses, SLOT_GLASSES) H.regenerate_icons() //this is to remove the inhand icon, which persists even if it's not in their hands -/datum/trait/nyctophobia +/datum/quirk/nyctophobia name = "Nyctophobia" desc = "As far as you can remember, you've always been afraid of the dark. While in the dark without a light source, you instinctually act careful, and constantly feel a sense of dread." value = -1 -/datum/trait/nyctophobia/on_process() - var/mob/living/carbon/human/H = trait_holder +/datum/quirk/nyctophobia/on_process() + var/mob/living/carbon/human/H = quirk_holder if(H.dna.species.id in list("shadow", "nightmare")) return //we're tied with the dark, so we don't get scared of it; don't cleanse outright to avoid cheese - var/turf/T = get_turf(trait_holder) + var/turf/T = get_turf(quirk_holder) var/lums = T.get_lumcount() if(lums <= 0.2) - if(trait_holder.m_intent == MOVE_INTENT_RUN) - to_chat(trait_holder, "Easy, easy, take it slow... you're in the dark...") - trait_holder.toggle_move_intent() - trait_holder.SendSignal(COMSIG_ADD_MOOD_EVENT, "nyctophobia", /datum/mood_event/nyctophobia) + if(quirk_holder.m_intent == MOVE_INTENT_RUN) + to_chat(quirk_holder, "Easy, easy, take it slow... you're in the dark...") + quirk_holder.toggle_move_intent() + quirk_holder.SendSignal(COMSIG_ADD_MOOD_EVENT, "nyctophobia", /datum/mood_event/nyctophobia) else - trait_holder.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "nyctophobia") + quirk_holder.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "nyctophobia") -/datum/trait/nonviolent +/datum/quirk/nonviolent name = "Pacifist" desc = "The thought of violence makes you sick. So much so, in fact, that you can't hurt anyone." value = -2 @@ -156,14 +156,14 @@ lose_text = "You think you can defend yourself again." medical_record_text = "Patient is unusually pacifistic and cannot bring themselves to cause physical harm." -/datum/trait/nonviolent/on_process() - if(trait_holder.mind && LAZYLEN(trait_holder.mind.antag_datums)) - to_chat(trait_holder, "Your antagonistic nature has caused you to renounce your pacifism.") +/datum/quirk/nonviolent/on_process() + if(quirk_holder.mind && LAZYLEN(quirk_holder.mind.antag_datums)) + to_chat(quirk_holder, "Your antagonistic nature has caused you to renounce your pacifism.") qdel(src) -/datum/trait/poor_aim +/datum/quirk/poor_aim name = "Poor Aim" desc = "You're terrible with guns and can't line up a straight shot to save your life. Dual-wielding is right out." value = -1 @@ -172,7 +172,7 @@ -/datum/trait/prosopagnosia +/datum/quirk/prosopagnosia name = "Prosopagnosia" desc = "You have a mental disorder that prevents you from being able to recognize faces at all." value = -1 @@ -181,41 +181,41 @@ -/datum/trait/prosthetic_limb +/datum/quirk/prosthetic_limb name = "Prosthetic Limb" desc = "An accident caused you to lose one of your limbs. Because of this, you now have a random prosthetic!" value = -1 var/slot_string = "limb" -/datum/trait/prosthetic_limb/on_spawn() +/datum/quirk/prosthetic_limb/on_spawn() var/limb_slot = pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) - var/mob/living/carbon/human/H = trait_holder + var/mob/living/carbon/human/H = quirk_holder var/obj/item/bodypart/old_part = H.get_bodypart(limb_slot) var/obj/item/bodypart/prosthetic switch(limb_slot) if(BODY_ZONE_L_ARM) - prosthetic = new/obj/item/bodypart/l_arm/robot/surplus(trait_holder) + prosthetic = new/obj/item/bodypart/l_arm/robot/surplus(quirk_holder) slot_string = "left arm" if(BODY_ZONE_R_ARM) - prosthetic = new/obj/item/bodypart/r_arm/robot/surplus(trait_holder) + prosthetic = new/obj/item/bodypart/r_arm/robot/surplus(quirk_holder) slot_string = "right arm" if(BODY_ZONE_L_LEG) - prosthetic = new/obj/item/bodypart/l_leg/robot/surplus(trait_holder) + prosthetic = new/obj/item/bodypart/l_leg/robot/surplus(quirk_holder) slot_string = "left leg" if(BODY_ZONE_R_LEG) - prosthetic = new/obj/item/bodypart/r_leg/robot/surplus(trait_holder) + prosthetic = new/obj/item/bodypart/r_leg/robot/surplus(quirk_holder) slot_string = "right leg" prosthetic.replace_limb(H) qdel(old_part) H.regenerate_icons() -/datum/trait/prosthetic_limb/post_add() - to_chat(trait_holder, "Your [slot_string] has been replaced with a surplus prosthetic. It is fragile and will easily come apart under duress. Additionally, \ +/datum/quirk/prosthetic_limb/post_add() + to_chat(quirk_holder, "Your [slot_string] has been replaced with a surplus prosthetic. It is fragile and will easily come apart under duress. Additionally, \ you need to use a welding tool and cables to repair it, instead of bruise packs and ointment.") -/datum/trait/insanity +/datum/quirk/insanity name = "Reality Dissociation Syndrome" desc = "You suffer from a severe disorder that causes very vivid hallucinations. Mindbreaker toxin can suppress its effects, and you are immune to mindbreaker's hallucinogenic properties. This is not a license to grief." value = -2 @@ -224,32 +224,25 @@ lose_text = "You feel in tune with the world again." medical_record_text = "Patient suffers from acute Reality Dissociation Syndrome and experiences vivid hallucinations." -/datum/trait/insanity/on_process() - if(trait_holder.reagents.has_reagent("mindbreaker")) - trait_holder.hallucination = 0 +/datum/quirk/insanity/on_process() + if(quirk_holder.reagents.has_reagent("mindbreaker")) + quirk_holder.hallucination = 0 return if(prob(2)) //we'll all be mad soon enough madness() + +/datum/quirk/insanity/proc/madness() + quirk_holder.hallucination += rand(10, 25) -/datum/trait/insanity/proc/madness(mad_fools) - set waitfor = FALSE - if(!mad_fools) - mad_fools = prob(20) - if(mad_fools) - var/hallucination_type = pick(subtypesof(/datum/hallucination/rds)) - new hallucination_type (trait_holder, FALSE) - else - trait_holder.hallucination += rand(10, 50) - -/datum/trait/insanity/post_add() //I don't /think/ we'll need this but for newbies who think "roleplay as insane" = "license to kill" it's probably a good thing to have - if(!trait_holder.mind || trait_holder.mind.special_role) +/datum/quirk/insanity/post_add() //I don't /think/ we'll need this but for newbies who think "roleplay as insane" = "license to kill" it's probably a good thing to have + if(!quirk_holder.mind || quirk_holder.mind.special_role) return - to_chat(trait_holder, "Please note that your dissociation syndrome does NOT give you the right to attack people or otherwise cause any interference to \ + to_chat(quirk_holder, "Please note that your dissociation syndrome does NOT give you the right to attack people or otherwise cause any interference to \ the round. You are not an antagonist, and the rules will treat you the same as other crewmembers.") -/datum/trait/social_anxiety +/datum/quirk/social_anxiety name = "Social Anxiety" desc = "Talking to people is very difficult for you, and you often stutter or even lock up." value = -1 @@ -258,12 +251,12 @@ medical_record_text = "Patient is usually anxious in social encounters and prefers to avoid them." var/dumb_thing = TRUE -/datum/trait/social_anxiety/on_process() +/datum/quirk/social_anxiety/on_process() var/nearby_people = 0 - for(var/mob/living/carbon/human/H in view(5, trait_holder)) + for(var/mob/living/carbon/human/H in view(5, quirk_holder)) if(H.client) nearby_people++ - var/mob/living/carbon/human/H = trait_holder + var/mob/living/carbon/human/H = quirk_holder if(prob(2 + nearby_people)) H.stuttering = max(3, H.stuttering) else if(prob(min(3, nearby_people)) && !H.silent) diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm index 5b0fbefe10..8ef9bf0a11 100644 --- a/code/datums/traits/neutral.dm +++ b/code/datums/traits/neutral.dm @@ -1,7 +1,7 @@ //traits with no real impact that can be taken freely //MAKE SURE THESE DO NOT MAJORLY IMPACT GAMEPLAY. those should be positive or negative traits. -/datum/trait/no_taste +/datum/quirk/no_taste name = "Ageusia" desc = "You can't taste anything! Toxic food will still poison you." value = 0 @@ -12,41 +12,75 @@ -/datum/trait/deviant_tastes +/datum/quirk/pineapple_liker + name = "Ananas Affinity" + desc = "You find yourself greatly enjoying fruits of the ananas genus. You can't seem to ever get enough of their sweet goodness!" + value = 0 + gain_text = "You feel an intense craving for pineapple." + lose_text = "Your feelings towards pineapples seem to return to a lukewarm state." + +/datum/quirk/pineapple_liker/add() + var/mob/living/carbon/human/H = quirk_holder + var/datum/species/species = H.dna.species + species.liked_food |= PINEAPPLE + +/datum/quirk/pineapple_liker/remove() + var/mob/living/carbon/human/H = quirk_holder + var/datum/species/species = H.dna.species + species.liked_food &= ~PINEAPPLE + +/datum/quirk/pineapple_hater + name = "Ananas Aversion" + desc = "You find yourself greatly detesting fruits of the ananas genus. Serious, how the hell can anyone say these things are good? And what kind of madman would even dare putting it on a pizza!?" + value = 0 + gain_text = "You find yourself pondering what kind of idiot actually enjoys pineapples..." + lose_text = "Your feelings towards pineapples seem to return to a lukewarm state." + +/datum/quirk/pineapple_hater/add() + var/mob/living/carbon/human/H = quirk_holder + var/datum/species/species = H.dna.species + species.disliked_food |= PINEAPPLE + +/datum/quirk/pineapple_hater/remove() + var/mob/living/carbon/human/H = quirk_holder + var/datum/species/species = H.dna.species + species.disliked_food &= ~PINEAPPLE + +/datum/quirk/deviant_tastes name = "Deviant Tastes" desc = "You dislike food that most people enjoy, and find delicious what they don't." value = 0 gain_text = "You start craving something that tastes strange." lose_text = "You feel like eating normal food again." -/datum/trait/deviant_tastes/add() - var/mob/living/carbon/human/H = trait_holder +/datum/quirk/deviant_tastes/add() + var/mob/living/carbon/human/H = quirk_holder var/datum/species/species = H.dna.species var/liked = species.liked_food species.liked_food = species.disliked_food species.disliked_food = liked -/datum/trait/deviant_tastes/remove() - var/mob/living/carbon/human/H = trait_holder +/datum/quirk/deviant_tastes/remove() + var/mob/living/carbon/human/H = quirk_holder var/datum/species/species = H.dna.species species.liked_food = initial(species.liked_food) species.disliked_food = initial(species.disliked_food) -/datum/trait/monochromatic +/datum/quirk/monochromatic name = "Monochromacy" desc = "You suffer from full colorblindness, and perceive nearly the entire world in blacks and whites." value = 0 medical_record_text = "Patient is afflicted with almost complete color blindness." -/datum/trait/monochromatic/add() - trait_holder.add_client_colour(/datum/client_colour/monochrome) +/datum/quirk/monochromatic/add() + quirk_holder.add_client_colour(/datum/client_colour/monochrome) -/datum/trait/monochromatic/post_add() - if(trait_holder.mind.assigned_role == "Detective") - to_chat(trait_holder, "Mmm. Nothing's ever clear on this station. It's all shades of gray...") - trait_holder.playsound_local(trait_holder, 'sound/ambience/ambidet1.ogg', 50, FALSE) +/datum/quirk/monochromatic/post_add() + if(quirk_holder.mind.assigned_role == "Detective") + to_chat(quirk_holder, "Mmm. Nothing's ever clear on this station. It's all shades of gray...") + quirk_holder.playsound_local(quirk_holder, 'sound/ambience/ambidet1.ogg', 50, FALSE) -/datum/trait/monochromatic/remove() - trait_holder.remove_client_colour(/datum/client_colour/monochrome) +/datum/quirk/monochromatic/remove() + quirk_holder.remove_client_colour(/datum/client_colour/monochrome) diff --git a/code/datums/verbs.dm b/code/datums/verbs.dm index 72634a3ff5..79fe256bb4 100644 --- a/code/datums/verbs.dm +++ b/code/datums/verbs.dm @@ -1,102 +1,102 @@ -/datum/verbs - var/name - var/list/children - var/datum/verbs/parent - var/list/verblist - var/abstract = FALSE - -//returns the master list for verbs of a type -/datum/verbs/proc/GetList() - CRASH("Abstract verblist for [type]") - -//do things for each entry in Generate_list -//return value sets Generate_list[verbpath] -/datum/verbs/proc/HandleVerb(list/entry, atom/verb/verbpath, ...) - return entry - -/datum/verbs/New() - var/mainlist = GetList() - var/ourentry = mainlist[type] - children = list() - verblist = list() - if (ourentry) - if (!islist(ourentry)) //some of our childern already loaded - qdel(src) - CRASH("Verb double load: [type]") - Add_children(ourentry) - - mainlist[type] = src - - Load_verbs(type, typesof("[type]/verb")) - - var/datum/verbs/parent = mainlist[parent_type] - if (!parent) - mainlist[parent_type] = list(src) - else if (islist(parent)) - parent += src - else - parent.Add_children(list(src)) - -/datum/verbs/proc/Set_parent(datum/verbs/_parent) - parent = _parent - if (abstract) - parent.Add_children(children) - var/list/verblistoftypes = list() - for(var/thing in verblist) - LAZYADD(verblistoftypes[verblist[thing]], thing) - - for(var/verbparenttype in verblistoftypes) - parent.Load_verbs(verbparenttype, verblistoftypes[verbparenttype]) - -/datum/verbs/proc/Add_children(list/kids) - if (abstract && parent) - parent.Add_children(kids) - return - - for(var/thing in kids) - var/datum/verbs/item = thing - item.Set_parent(src) - if (!item.abstract) - children += item - -/datum/verbs/proc/Load_verbs(verb_parent_type, list/verbs) - if (abstract && parent) - parent.Load_verbs(verb_parent_type, verbs) - return - - for (var/verbpath in verbs) - verblist[verbpath] = verb_parent_type - -/datum/verbs/proc/Generate_list(...) - . = list() - if (length(children)) - for (var/thing in children) - var/datum/verbs/child = thing - var/list/childlist = child.Generate_list(arglist(args)) - if (childlist) - var/childname = "[child]" - if (childname == "[child.type]") - var/list/tree = splittext(childname, "/") - childname = tree[tree.len] - .[child.type] = "parent=[url_encode(type)];name=[url_encode(childname)]" - . += childlist - - for (var/thing in verblist) - var/atom/verb/verbpath = thing - if (!verbpath) - stack_trace("Bad VERB in [type] verblist: [english_list(verblist)]") - var/list/entry = list() - entry["parent"] = "[type]" - entry["name"] = verbpath.desc - if (copytext(verbpath.name,1,2) == "@") - entry["command"] = copytext(verbpath.name,2) - else - entry["command"] = replacetext(verbpath.name, " ", "-") - - .[verbpath] = HandleVerb(arglist(list(entry, verbpath) + args)) - -/world/proc/LoadVerbs(verb_type) - if(!ispath(verb_type, /datum/verbs) || verb_type == /datum/verbs) - CRASH("Invalid verb_type: [verb_type]") - for (var/typepath in subtypesof(verb_type)) - new typepath() +/datum/verbs + var/name + var/list/children + var/datum/verbs/parent + var/list/verblist + var/abstract = FALSE + +//returns the master list for verbs of a type +/datum/verbs/proc/GetList() + CRASH("Abstract verblist for [type]") + +//do things for each entry in Generate_list +//return value sets Generate_list[verbpath] +/datum/verbs/proc/HandleVerb(list/entry, atom/verb/verbpath, ...) + return entry + +/datum/verbs/New() + var/mainlist = GetList() + var/ourentry = mainlist[type] + children = list() + verblist = list() + if (ourentry) + if (!islist(ourentry)) //some of our childern already loaded + qdel(src) + CRASH("Verb double load: [type]") + Add_children(ourentry) + + mainlist[type] = src + + Load_verbs(type, typesof("[type]/verb")) + + var/datum/verbs/parent = mainlist[parent_type] + if (!parent) + mainlist[parent_type] = list(src) + else if (islist(parent)) + parent += src + else + parent.Add_children(list(src)) + +/datum/verbs/proc/Set_parent(datum/verbs/_parent) + parent = _parent + if (abstract) + parent.Add_children(children) + var/list/verblistoftypes = list() + for(var/thing in verblist) + LAZYADD(verblistoftypes[verblist[thing]], thing) + + for(var/verbparenttype in verblistoftypes) + parent.Load_verbs(verbparenttype, verblistoftypes[verbparenttype]) + +/datum/verbs/proc/Add_children(list/kids) + if (abstract && parent) + parent.Add_children(kids) + return + + for(var/thing in kids) + var/datum/verbs/item = thing + item.Set_parent(src) + if (!item.abstract) + children += item + +/datum/verbs/proc/Load_verbs(verb_parent_type, list/verbs) + if (abstract && parent) + parent.Load_verbs(verb_parent_type, verbs) + return + + for (var/verbpath in verbs) + verblist[verbpath] = verb_parent_type + +/datum/verbs/proc/Generate_list(...) + . = list() + if (length(children)) + for (var/thing in children) + var/datum/verbs/child = thing + var/list/childlist = child.Generate_list(arglist(args)) + if (childlist) + var/childname = "[child]" + if (childname == "[child.type]") + var/list/tree = splittext(childname, "/") + childname = tree[tree.len] + .[child.type] = "parent=[url_encode(type)];name=[childname]" + . += childlist + + for (var/thing in verblist) + var/atom/verb/verbpath = thing + if (!verbpath) + stack_trace("Bad VERB in [type] verblist: [english_list(verblist)]") + var/list/entry = list() + entry["parent"] = "[type]" + entry["name"] = verbpath.desc + if (copytext(verbpath.name,1,2) == "@") + entry["command"] = copytext(verbpath.name,2) + else + entry["command"] = replacetext(verbpath.name, " ", "-") + + .[verbpath] = HandleVerb(arglist(list(entry, verbpath) + args)) + +/world/proc/LoadVerbs(verb_type) + if(!ispath(verb_type, /datum/verbs) || verb_type == /datum/verbs) + CRASH("Invalid verb_type: [verb_type]") + for (var/typepath in subtypesof(verb_type)) + new typepath() diff --git a/code/datums/weather/weather_types/floor_is_lava.dm b/code/datums/weather/weather_types/floor_is_lava.dm index 5db27b9f6e..00ecfff0b3 100644 --- a/code/datums/weather/weather_types/floor_is_lava.dm +++ b/code/datums/weather/weather_types/floor_is_lava.dm @@ -25,8 +25,10 @@ /datum/weather/floor_is_lava/weather_act(mob/living/L) if(issilicon(L)) return + if(istype(L.buckled, /obj/structure/bed)) + return for(var/obj/structure/O in L.loc) - if(O.density || (L in O.buckled_mobs && istype(O, /obj/structure/bed))) + if(O.density) return if(L.loc.density) return diff --git a/code/datums/wires/_wires.dm b/code/datums/wires/_wires.dm index 1fd50e9776..0e38475c85 100644 --- a/code/datums/wires/_wires.dm +++ b/code/datums/wires/_wires.dm @@ -6,8 +6,8 @@ if(I.tool_behaviour == TOOL_WIRECUTTER || I.tool_behaviour == TOOL_MULTITOOL) return TRUE - if(istype(I, /obj/item/device/assembly)) - var/obj/item/device/assembly/A = I + if(istype(I, /obj/item/assembly)) + var/obj/item/assembly/A = I if(A.attachable) return TRUE @@ -149,13 +149,13 @@ /datum/wires/proc/pulse_color(color, mob/living/user) pulse(get_wire(color), user) -/datum/wires/proc/pulse_assembly(obj/item/device/assembly/S) +/datum/wires/proc/pulse_assembly(obj/item/assembly/S) for(var/color in assemblies) if(S == assemblies[color]) pulse_color(color) return TRUE -/datum/wires/proc/attach_assembly(color, obj/item/device/assembly/S) +/datum/wires/proc/attach_assembly(color, obj/item/assembly/S) if(S && istype(S) && S.attachable && !is_attached(color)) assemblies[color] = S S.forceMove(holder) @@ -163,7 +163,7 @@ return S /datum/wires/proc/detach_assembly(color) - var/obj/item/device/assembly/S = get_attached(color) + var/obj/item/assembly/S = get_attached(color) if(S && istype(S)) assemblies -= color S.connected = null @@ -229,7 +229,7 @@ reveal_wires = TRUE // Same for anyone with an abductor multitool. - else if(user.is_holding_item_of_type(/obj/item/device/multitool/abductor)) + else if(user.is_holding_item_of_type(/obj/item/multitool/abductor)) reveal_wires = TRUE // Station blueprints do that too, but only if the wires are not randomized. @@ -280,8 +280,8 @@ . = TRUE else I = L.get_active_held_item() - if(istype(I, /obj/item/device/assembly)) - var/obj/item/device/assembly/A = I + if(istype(I, /obj/item/assembly)) + var/obj/item/assembly/A = I if(A.attachable) if(!L.temporarilyRemoveItemFromInventory(A)) return diff --git a/code/datums/wires/radio.dm b/code/datums/wires/radio.dm index 37d44a1bb0..a1118da6d7 100644 --- a/code/datums/wires/radio.dm +++ b/code/datums/wires/radio.dm @@ -1,5 +1,5 @@ /datum/wires/radio - holder_type = /obj/item/device/radio + holder_type = /obj/item/radio proper_name = "Radio" /datum/wires/radio/New(atom/holder) @@ -10,11 +10,11 @@ ..() /datum/wires/radio/interactable(mob/user) - var/obj/item/device/radio/R = holder + var/obj/item/radio/R = holder return R.unscrewed /datum/wires/radio/on_pulse(index) - var/obj/item/device/radio/R = holder + var/obj/item/radio/R = holder switch(index) if(WIRE_SIGNAL) R.listening = !R.listening diff --git a/code/datums/world_topic.dm b/code/datums/world_topic.dm index 93193f964a..9cbccb8fe9 100644 --- a/code/datums/world_topic.dm +++ b/code/datums/world_topic.dm @@ -120,8 +120,12 @@ require_comms_key = TRUE /datum/world_topic/namecheck/Run(list/input) - var/datum/server_tools_command/namecheck/NC = new - return NC.Run(input["sender"], input["namecheck"]) + //Oh this is a hack, someone refactor the functionality out of the chat command PLS + var/datum/tgs_chat_command/namecheck/NC = new + var/datum/tgs_chat_user/user = new + user.friendly_name = input["sender"] + user.mention = user.friendly_name + return NC.Run(user, input["namecheck"]) /datum/world_topic/adminwho keyword = "adminwho" @@ -136,7 +140,7 @@ /datum/world_topic/status/Run(list/input) . = list() .["version"] = GLOB.game_version - .["mode"] = GLOB.master_mode + .["mode"] = "hidden" //CIT CHANGE - hides the gamemode in topic() calls to prevent meta'ing the gamemode .["respawn"] = config ? !CONFIG_GET(flag/norespawn) : FALSE .["enter"] = GLOB.enter_allowed .["vote"] = CONFIG_GET(flag/allow_vote_mode) @@ -164,9 +168,16 @@ .["security_level"] = get_security_level() .["round_duration"] = SSticker ? round((world.time-SSticker.round_start_time)/10) : 0 // Amount of world's ticks in seconds, useful for calculating round duration + + //Time dilation stats. + .["time_dilation_current"] = SStime_track.time_dilation_current + .["time_dilation_avg"] = SStime_track.time_dilation_avg + .["time_dilation_avg_slow"] = SStime_track.time_dilation_avg_slow + .["time_dilation_avg_fast"] = SStime_track.time_dilation_avg_fast if(SSshuttle && SSshuttle.emergency) .["shuttle_mode"] = SSshuttle.emergency.mode // Shuttle status, see /__DEFINES/stat.dm .["shuttle_timer"] = SSshuttle.emergency.timeLeft() // Shuttle timer, in seconds + diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 87894dd4d7..85a0fd1d4e 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -7,6 +7,7 @@ icon = 'icons/turf/areas.dmi' icon_state = "unknown" layer = AREA_LAYER + plane = BLACKNESS_PLANE //Keeping this on the default plane, GAME_PLANE, will make area overlays fail to render on FLOOR_PLANE. mouse_opacity = MOUSE_OPACITY_TRANSPARENT invisibility = INVISIBILITY_LIGHTING @@ -518,4 +519,4 @@ GLOBAL_LIST_EMPTY(teleportlocs) // A hook so areas can modify the incoming args /area/proc/PlaceOnTopReact(list/new_baseturfs, turf/fake_turf_type, flags) - return flags \ No newline at end of file + return flags diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index 100a0d7dd2..e682960e2e 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -421,7 +421,7 @@ /*~~~~~~~~~~~~ Circutry! ~~~~~~~~~~~~~*/ -/obj/item/device/electronic_assembly/proc/diag_hud_set_circuithealth(hide = FALSE) +/obj/item/electronic_assembly/proc/diag_hud_set_circuithealth(hide = FALSE) var/image/holder = hud_list[DIAG_CIRCUIT_HUD] var/icon/I = icon(icon, icon_state, dir) holder.pixel_y = I.Height() - world.icon_size @@ -430,7 +430,7 @@ else holder.icon_state = "huddiag[RoundDiagBar(obj_integrity/max_integrity)]" -/obj/item/device/electronic_assembly/proc/diag_hud_set_circuitcell(hide = FALSE) +/obj/item/electronic_assembly/proc/diag_hud_set_circuitcell(hide = FALSE) var/image/holder = hud_list[DIAG_BATT_HUD] var/icon/I = icon(icon, icon_state, dir) holder.pixel_y = I.Height() - world.icon_size @@ -442,7 +442,7 @@ else holder.icon_state = "hudnobatt" -/obj/item/device/electronic_assembly/proc/diag_hud_set_circuitstat(hide = FALSE) //On, On and dangerous, or Off +/obj/item/electronic_assembly/proc/diag_hud_set_circuitstat(hide = FALSE) //On, On and dangerous, or Off var/image/holder = hud_list[DIAG_STAT_HUD] var/icon/I = icon(icon, icon_state, dir) holder.pixel_y = I.Height() - world.icon_size @@ -457,7 +457,7 @@ else //Bot is on and not dangerous holder.icon_state = prefered_hud_icon -/obj/item/device/electronic_assembly/proc/diag_hud_set_circuittracking(hide = FALSE) +/obj/item/electronic_assembly/proc/diag_hud_set_circuittracking(hide = FALSE) var/image/holder = hud_list[DIAG_TRACK_HUD] var/icon/I = icon(icon, icon_state, dir) holder.pixel_y = I.Height() - world.icon_size diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index a77bf196c2..93d77209e0 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -1,6 +1,6 @@ GLOBAL_LIST_INIT(possible_changeling_IDs, list("Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega")) GLOBAL_LIST_INIT(slots, list("head", "wear_mask", "back", "wear_suit", "w_uniform", "shoes", "belt", "gloves", "glasses", "ears", "wear_id", "s_store")) -GLOBAL_LIST_INIT(slot2slot, list("head" = slot_head, "wear_mask" = slot_wear_mask, "neck" = slot_neck, "back" = slot_back, "wear_suit" = slot_wear_suit, "w_uniform" = slot_w_uniform, "shoes" = slot_shoes, "belt" = slot_belt, "gloves" = slot_gloves, "glasses" = slot_glasses, "ears" = slot_ears, "wear_id" = slot_wear_id, "s_store" = slot_s_store)) +GLOBAL_LIST_INIT(slot2slot, list("head" = SLOT_HEAD, "wear_mask" = SLOT_WEAR_MASK, "neck" = SLOT_NECK, "back" = SLOT_BACK, "wear_suit" = SLOT_WEAR_SUIT, "w_uniform" = SLOT_W_UNIFORM, "shoes" = SLOT_SHOES, "belt" = SLOT_BELT, "gloves" = SLOT_GLOVES, "glasses" = SLOT_GLASSES, "ears" = SLOT_EARS, "wear_id" = SLOT_WEAR_ID, "s_store" = SLOT_S_STORE)) GLOBAL_LIST_INIT(slot2type, list("head" = /obj/item/clothing/head/changeling, "wear_mask" = /obj/item/clothing/mask/changeling, "back" = /obj/item/changeling, "wear_suit" = /obj/item/clothing/suit/changeling, "w_uniform" = /obj/item/clothing/under/changeling, "shoes" = /obj/item/clothing/shoes/changeling, "belt" = /obj/item/changeling, "gloves" = /obj/item/clothing/gloves/changeling, "glasses" = /obj/item/clothing/glasses/changeling, "ears" = /obj/item/changeling, "wear_id" = /obj/item/changeling, "s_store" = /obj/item/changeling)) GLOBAL_VAR(changeling_team_objective_type) //If this is not null, we hand our this objective to all lings diff --git a/code/game/gamemodes/clock_cult/clock_cult.dm b/code/game/gamemodes/clock_cult/clock_cult.dm index f403908f67..355dd869b1 100644 --- a/code/game/gamemodes/clock_cult/clock_cult.dm +++ b/code/game/gamemodes/clock_cult/clock_cult.dm @@ -198,7 +198,7 @@ Credit where due: L.equipOutfit(/datum/outfit/servant_of_ratvar) var/obj/item/clockwork/slab/S = new var/slot = "At your feet" - var/list/slots = list("In your left pocket" = slot_l_store, "In your right pocket" = slot_r_store, "In your backpack" = slot_in_backpack, "On your belt" = slot_belt) + var/list/slots = list("In your left pocket" = SLOT_L_STORE, "In your right pocket" = SLOT_R_STORE, "In your backpack" = SLOT_IN_BACKPACK, "On your belt" = SLOT_BELT) if(ishuman(L)) var/mob/living/carbon/human/H = L slot = H.equip_in_one_of_slots(S, slots) @@ -211,7 +211,7 @@ Credit where due: to_chat(L, "There is a paper in your backpack! It'll tell you if anything's changed, as well as what to expect.") to_chat(L, "[slot] is a clockwork slab, a multipurpose tool used to construct machines and invoke ancient words of power. If this is your first time \ as a servant, you can find a concise tutorial in the Recollection category of its interface.") - to_chat(L, "If you want more information, you can find a wiki link here! https://tgstation13.org/wiki/Clockwork_Cult") + to_chat(L, "If you want more information, you can read the wiki page to learn more.") return TRUE return FALSE @@ -258,12 +258,12 @@ Credit where due: uniform = /obj/item/clothing/under/chameleon/ratvar shoes = /obj/item/clothing/shoes/sneakers/black back = /obj/item/storage/backpack - ears = /obj/item/device/radio/headset + ears = /obj/item/radio/headset gloves = /obj/item/clothing/gloves/color/yellow belt = /obj/item/storage/belt/utility/servant backpack_contents = list(/obj/item/storage/box/engineer = 1, \ /obj/item/clockwork/replica_fabricator = 1, /obj/item/stack/tile/brass/fifty = 1, /obj/item/paper/servant_primer = 1) - id = /obj/item/device/pda + id = /obj/item/pda var/plasmaman //We use this to determine if we should activate internals in post_equip() /datum/outfit/servant_of_ratvar/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) @@ -276,7 +276,7 @@ Credit where due: /datum/outfit/servant_of_ratvar/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) var/obj/item/card/id/W = new(H) - var/obj/item/device/pda/PDA = H.wear_id + var/obj/item/pda/PDA = H.wear_id W.assignment = "Assistant" W.access += ACCESS_MAINT_TUNNELS W.registered_name = H.real_name diff --git a/code/game/gamemodes/clown_ops/bananium_bomb.dm b/code/game/gamemodes/clown_ops/bananium_bomb.dm index 86db2e94f9..c7212a671c 100644 --- a/code/game/gamemodes/clown_ops/bananium_bomb.dm +++ b/code/game/gamemodes/clown_ops/bananium_bomb.dm @@ -43,17 +43,17 @@ if(!H.w_uniform || H.dropItemToGround(H.w_uniform)) C = new /obj/item/clothing/under/rank/clown(H) C.flags_1 |= NODROP_1 //mwahaha - H.equip_to_slot_or_del(C, slot_w_uniform) + H.equip_to_slot_or_del(C, SLOT_W_UNIFORM) if(!H.shoes || H.dropItemToGround(H.shoes)) C = new /obj/item/clothing/shoes/clown_shoes(H) C.flags_1 |= NODROP_1 - H.equip_to_slot_or_del(C, slot_shoes) + H.equip_to_slot_or_del(C, SLOT_SHOES) if(!H.wear_mask || H.dropItemToGround(H.wear_mask)) C = new /obj/item/clothing/mask/gas/clown_hat(H) C.flags_1 |= NODROP_1 - H.equip_to_slot_or_del(C, slot_wear_mask) + H.equip_to_slot_or_del(C, SLOT_WEAR_MASK) H.dna.add_mutation(CLOWNMUT) H.gain_trauma(/datum/brain_trauma/mild/phobia, TRAUMA_RESILIENCE_LOBOTOMY, "clowns") //MWA HA HA diff --git a/code/game/gamemodes/clown_ops/clown_ops.dm b/code/game/gamemodes/clown_ops/clown_ops.dm index 6b96cefa13..75df27ffca 100644 --- a/code/game/gamemodes/clown_ops/clown_ops.dm +++ b/code/game/gamemodes/clown_ops/clown_ops.dm @@ -39,7 +39,7 @@ mask = /obj/item/clothing/mask/gas/clown_hat gloves = /obj/item/clothing/gloves/combat back = /obj/item/storage/backpack/clown - ears = /obj/item/device/radio/headset/syndicate/alt + ears = /obj/item/radio/headset/syndicate/alt l_pocket = /obj/item/pinpointer/nuke/syndicate r_pocket = /obj/item/bikehorn id = /obj/item/card/id/syndicate @@ -48,7 +48,7 @@ /obj/item/reagent_containers/spray/waterflower/lube) implants = list(/obj/item/implant/sad_trombone) - uplink_type = /obj/item/device/radio/uplink/clownop + uplink_type = /obj/item/radio/uplink/clownop /datum/outfit/syndicate/clownop/no_crystals tc = 0 @@ -62,5 +62,5 @@ /datum/outfit/syndicate/clownop/leader name = "Clown Operative Leader - Basic" id = /obj/item/card/id/syndicate/nuke_leader - r_hand = /obj/item/device/nuclear_challenge/clownops + r_hand = /obj/item/nuclear_challenge/clownops command_radio = TRUE diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm index 6488a98d7d..edd05aa49b 100644 --- a/code/game/gamemodes/clown_ops/clown_weapons.dm +++ b/code/game/gamemodes/clown_ops/clown_weapons.dm @@ -15,7 +15,7 @@ /obj/item/clothing/shoes/clown_shoes/combat name = "combat clown shoes" desc = "advanced clown shoes that protect the wearer and render them nearly immune to slipping on their own peels. They also squeek at 100% capacity." - flags_1 = NOSLIP_1 + clothing_flags = NOSLIP slowdown = SHOES_SLOWDOWN armor = list("melee" = 25, "bullet" = 25, "laser" = 25, "energy" = 25, "bomb" = 50, "bio" = 10, "rad" = 0, "fire" = 70, "acid" = 50) strip_delay = 70 @@ -209,7 +209,7 @@ if(!istype(M.wear_mask, /obj/item/clothing/mask/gas/clown_hat) && !istype(M.wear_mask, /obj/item/clothing/mask/gas/mime) ) if(!M.wear_mask || M.dropItemToGround(M.wear_mask)) var/obj/item/clothing/mask/fakemoustache/sticky/the_stash = new /obj/item/clothing/mask/fakemoustache/sticky() - M.equip_to_slot_or_del(the_stash, slot_wear_mask, TRUE, TRUE, TRUE, TRUE) + M.equip_to_slot_or_del(the_stash, SLOT_WEAR_MASK, TRUE, TRUE, TRUE, TRUE) /obj/item/clothing/mask/fakemoustache/sticky var/unstick_time = 600 diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 11e4815722..3b7dca1a81 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -125,7 +125,7 @@ shoes = /obj/item/clothing/shoes/combat gloves = /obj/item/clothing/gloves/combat back = /obj/item/storage/backpack - ears = /obj/item/device/radio/headset/syndicate/alt + ears = /obj/item/radio/headset/syndicate/alt l_pocket = /obj/item/pinpointer/nuke/syndicate id = /obj/item/card/id/syndicate belt = /obj/item/gun/ballistic/automatic/pistol @@ -134,28 +134,28 @@ var/tc = 25 var/command_radio = FALSE - var/uplink_type = /obj/item/device/radio/uplink/nuclear + var/uplink_type = /obj/item/radio/uplink/nuclear /datum/outfit/syndicate/leader name = "Syndicate Leader - Basic" id = /obj/item/card/id/syndicate/nuke_leader - r_hand = /obj/item/device/nuclear_challenge + r_hand = /obj/item/nuclear_challenge command_radio = TRUE /datum/outfit/syndicate/no_crystals tc = 0 /datum/outfit/syndicate/post_equip(mob/living/carbon/human/H) - var/obj/item/device/radio/R = H.ears + var/obj/item/radio/R = H.ears R.set_frequency(FREQ_SYNDICATE) R.freqlock = TRUE if(command_radio) R.command = TRUE if(tc) - var/obj/item/device/radio/uplink/U = new uplink_type(H, H.key, tc) - H.equip_to_slot_or_del(U, slot_in_backpack) + var/obj/item/radio/uplink/U = new uplink_type(H, H.key, tc) + H.equip_to_slot_or_del(U, SLOT_IN_BACKPACK) var/obj/item/implant/weapons_auth/W = new/obj/item/implant/weapons_auth(H) W.implant(H) @@ -171,7 +171,7 @@ mask = /obj/item/clothing/mask/gas/syndicate suit = /obj/item/clothing/suit/space/hardsuit/syndi r_pocket = /obj/item/tank/internals/emergency_oxygen/engi - internals_slot = slot_r_store + internals_slot = SLOT_R_STORE belt = /obj/item/storage/belt/military r_hand = /obj/item/gun/ballistic/automatic/shotgun/bulldog backpack_contents = list(/obj/item/storage/box/syndie=1,\ diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 8c162c600e..7559e21e21 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -114,7 +114,7 @@ GLOBAL_LIST_EMPTY(objectives) if(receiver && receiver.current) if(ishuman(receiver.current)) var/mob/living/carbon/human/H = receiver.current - var/list/slots = list("backpack" = slot_in_backpack) + var/list/slots = list("backpack" = SLOT_IN_BACKPACK) for(var/eq_path in special_equipment) var/obj/O = new eq_path H.equip_in_one_of_slots(O, slots) @@ -687,7 +687,7 @@ GLOBAL_LIST_EMPTY(possible_items_special) /datum/objective/steal_five_of_type/summon_magic explanation_text = "Steal at least five magical artefacts!" - wanted_items = list(/obj/item/spellbook, /obj/item/gun/magic, /obj/item/clothing/suit/space/hardsuit/wizard, /obj/item/scrying, /obj/item/antag_spawner/contract, /obj/item/device/necromantic_stone) + wanted_items = list(/obj/item/spellbook, /obj/item/gun/magic, /obj/item/clothing/suit/space/hardsuit/wizard, /obj/item/scrying, /obj/item/antag_spawner/contract, /obj/item/necromantic_stone) /datum/objective/steal_five_of_type/check_completion() var/list/datum/mind/owners = get_owners() @@ -712,6 +712,8 @@ GLOBAL_LIST_EMPTY(possible_items_special) var/min_lings = 3 //Minimum amount of lings for this team objective to be possible var/escape_objective_compatible = FALSE +/datum/objective/changeling_team_objective/proc/prepare() + return FALSE //Impersonate department //Picks as many people as it can from a department (Security,Engineer,Medical,Science) @@ -724,6 +726,19 @@ GLOBAL_LIST_EMPTY(possible_items_special) var/department_string = "" +/datum/objective/changeling_team_objective/impersonate_department/prepare() + var/result = FALSE + if(command_staff_only) + result = get_heads() + else + result = get_department_staff() + if(result) + update_explanation_text() + return TRUE + else + return FALSE + + /datum/objective/changeling_team_objective/impersonate_department/proc/get_department_staff() department_minds = list() department_real_names = list() @@ -756,9 +771,8 @@ GLOBAL_LIST_EMPTY(possible_items_special) if(!department_minds.len) log_game("[type] has failed to find department staff, and has removed itself. the round will continue normally") - owner.objectives -= src - qdel(src) - return + return FALSE + return TRUE /datum/objective/changeling_team_objective/impersonate_department/proc/get_heads() @@ -785,19 +799,8 @@ GLOBAL_LIST_EMPTY(possible_items_special) if(!department_minds.len) log_game("[type] has failed to find department heads, and has removed itself. the round will continue normally") - owner.objectives -= src - qdel(src) - return - - -/datum/objective/changeling_team_objective/impersonate_department/New(var/text) - ..() - if(command_staff_only) - get_heads() - else - get_department_staff() - - update_explanation_text() + return FALSE + return TRUE /datum/objective/changeling_team_objective/impersonate_department/update_explanation_text() @@ -862,9 +865,6 @@ GLOBAL_LIST_EMPTY(possible_items_special) return TRUE return FALSE - - - //A subtype of impersonate_department //This subtype always picks as many command staff as it can (HoS,HoP,Cap,CE,CMO,RD) //and tasks the lings with killing and replacing them diff --git a/code/game/gamemodes/objective_items.dm b/code/game/gamemodes/objective_items.dm index 15e07527b9..d42c546990 100644 --- a/code/game/gamemodes/objective_items.dm +++ b/code/game/gamemodes/objective_items.dm @@ -41,7 +41,7 @@ name = "a hand teleporter." targetitem = /obj/item/hand_tele difficulty = 5 - excludefromjob = list("Captain") + excludefromjob = list("Captain", "Research Director") /datum/objective_item/steal/jetpack name = "the Captain's jetpack." @@ -130,10 +130,10 @@ /datum/objective_item/steal/functionalai name = "a functional AI." - targetitem = /obj/item/device/aicard + targetitem = /obj/item/aicard difficulty = 20 //beyond the impossible -/datum/objective_item/steal/functionalai/check_special_completion(obj/item/device/aicard/C) +/datum/objective_item/steal/functionalai/check_special_completion(obj/item/aicard/C) for(var/mob/living/silicon/ai/A in C) if(isAI(A) && A.stat != DEAD) //See if any AI's are alive inside that card. return 1 @@ -216,7 +216,7 @@ /datum/objective_item/special/laserpointer name = "a laser pointer." - targetitem = /obj/item/device/laser_pointer + targetitem = /obj/item/laser_pointer difficulty = 5 /datum/objective_item/special/corgimeat diff --git a/code/game/gamemodes/sandbox/h_sandbox.dm b/code/game/gamemodes/sandbox/h_sandbox.dm index 13b4234622..64aaeebacd 100644 --- a/code/game/gamemodes/sandbox/h_sandbox.dm +++ b/code/game/gamemodes/sandbox/h_sandbox.dm @@ -27,7 +27,7 @@ GLOBAL_VAR_INIT(hsboxspawn, TRUE) //items that shouldn't spawn on the floor because they would bug or act weird var/global/list/spawn_forbidden = list( /obj/item/tk_grab, /obj/item/implant, // not implanter, the actual thing that is inside you - /obj/item/assembly, /obj/item/device/onetankbomb, /obj/item/device/pda/ai, + /obj/item/assembly, /obj/item/onetankbomb, /obj/item/pda/ai, /obj/item/smallDelivery, /obj/item/projectile, /obj/item/borg/sight, /obj/item/borg/stun, /obj/item/robot_module) @@ -39,9 +39,9 @@ GLOBAL_VAR_INIT(hsboxspawn, TRUE) "Spawn Emergency Air Tank" = "hsbspawn&path=[/obj/item/tank/internals/emergency_oxygen/double]", "Standard Tools", - "Spawn Flashlight" = "hsbspawn&path=[/obj/item/device/flashlight]", + "Spawn Flashlight" = "hsbspawn&path=[/obj/item/flashlight]", "Spawn Toolbox" = "hsbspawn&path=[/obj/item/storage/toolbox/mechanical]", - "Spawn Light Replacer" = "hsbspawn&path=[/obj/item/device/lightreplacer]", + "Spawn Light Replacer" = "hsbspawn&path=[/obj/item/lightreplacer]", "Spawn Medical Kit" = "hsbspawn&path=[/obj/item/storage/firstaid/regular]", "Spawn All-Access ID" = "hsbaaid", diff --git a/code/game/machinery/Beacon.dm b/code/game/machinery/Beacon.dm index 3e121ad9ed..61e862452f 100644 --- a/code/game/machinery/Beacon.dm +++ b/code/game/machinery/Beacon.dm @@ -9,7 +9,7 @@ anchored = TRUE use_power = IDLE_POWER_USE idle_power_usage = 0 - var/obj/item/device/beacon/Beacon + var/obj/item/beacon/Beacon /obj/machinery/bluespace_beacon/Initialize() . = ..() diff --git a/code/game/machinery/PDApainter.dm b/code/game/machinery/PDApainter.dm index 24cfc86f85..e38775b749 100644 --- a/code/game/machinery/PDApainter.dm +++ b/code/game/machinery/PDApainter.dm @@ -5,7 +5,7 @@ icon_state = "pdapainter" density = TRUE anchored = TRUE - var/obj/item/device/pda/storedpda = null + var/obj/item/pda/storedpda = null var/list/colorlist = list() max_integrity = 200 @@ -30,16 +30,16 @@ /obj/machinery/pdapainter/Initialize() . = ..() var/list/blocked = list( - /obj/item/device/pda/ai/pai, - /obj/item/device/pda/ai, - /obj/item/device/pda/heads, - /obj/item/device/pda/clear, - /obj/item/device/pda/syndicate, - /obj/item/device/pda/chameleon, - /obj/item/device/pda/chameleon/broken) + /obj/item/pda/ai/pai, + /obj/item/pda/ai, + /obj/item/pda/heads, + /obj/item/pda/clear, + /obj/item/pda/syndicate, + /obj/item/pda/chameleon, + /obj/item/pda/chameleon/broken) - for(var/P in typesof(/obj/item/device/pda) - blocked) - var/obj/item/device/pda/D = new P + for(var/P in typesof(/obj/item/pda) - blocked) + var/obj/item/pda/D = new P //D.name = "PDA Style [colorlist.len+1]" //Gotta set the name, otherwise it all comes up as "PDA" D.name = D.icon_state //PDAs don't have unique names, but using the sprite names works. @@ -69,7 +69,7 @@ power_change() return - else if(istype(O, /obj/item/device/pda)) + else if(istype(O, /obj/item/pda)) if(storedpda) to_chat(user, "There is already a PDA inside!") return @@ -110,7 +110,7 @@ return if(storedpda) - var/obj/item/device/pda/P + var/obj/item/pda/P P = input(user, "Select your color!", "PDA Painting") as null|anything in colorlist if(!P) return diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index cefc471d08..e4b8dd9083 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -93,8 +93,6 @@ return if(default_change_direction_wrench(user, I)) return - if(exchange_parts(user, I)) - return if(default_pry_open(I)) return if(default_deconstruction_crowbar(I)) diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm index 253f18f717..a09db0a3cc 100644 --- a/code/game/machinery/ai_slipper.dm +++ b/code/game/machinery/ai_slipper.dm @@ -4,6 +4,7 @@ icon = 'icons/obj/device.dmi' icon_state = "ai-slipper0" layer = PROJECTILE_HIT_THRESHHOLD_LAYER + plane = FLOOR_PLANE anchored = TRUE max_integrity = 200 armor = list("melee" = 50, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30) diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm index 63737f9542..78b43e2ee2 100644 --- a/code/game/machinery/announcement_system.dm +++ b/code/game/machinery/announcement_system.dm @@ -17,7 +17,7 @@ GLOBAL_LIST_EMPTY(announcement_systems) circuit = /obj/item/circuitboard/machine/announcement_system - var/obj/item/device/radio/headset/radio + var/obj/item/radio/headset/radio var/arrival = "%PERSON has signed up as %RANK" var/arrivalToggle = 1 var/newhead = "%PERSON, %RANK, is the department head." @@ -30,7 +30,7 @@ GLOBAL_LIST_EMPTY(announcement_systems) /obj/machinery/announcement_system/Initialize() . = ..() GLOB.announcement_systems += src - radio = new /obj/item/device/radio/headset/ai(src) + radio = new /obj/item/radio/headset/ai(src) update_icon() /obj/machinery/announcement_system/update_icon() @@ -67,7 +67,7 @@ GLOBAL_LIST_EMPTY(announcement_systems) update_icon() else if(default_deconstruction_crowbar(P)) return - else if(istype(P, /obj/item/device/multitool) && panel_open && (stat & BROKEN)) + else if(istype(P, /obj/item/multitool) && panel_open && (stat & BROKEN)) to_chat(user, "You reset [src]'s firmware.") stat &= ~BROKEN update_icon() diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 2c8fa467c2..d6154aeb8b 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -93,9 +93,6 @@ updateUsrDialog() return TRUE - if(exchange_parts(user, O)) - return TRUE - if(default_deconstruction_crowbar(O)) return TRUE diff --git a/code/game/machinery/bank_machine.dm b/code/game/machinery/bank_machine.dm index dc79cf1406..c751ba007a 100644 --- a/code/game/machinery/bank_machine.dm +++ b/code/game/machinery/bank_machine.dm @@ -5,7 +5,7 @@ idle_power_usage = 100 var/siphoning = FALSE var/next_warning = 0 - var/obj/item/device/radio/radio + var/obj/item/radio/radio var/radio_channel = "Common" var/minimum_time_between_warnings = 400 diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index 84ed3d457c..9511e8d0d4 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -5,7 +5,7 @@ icon_state = "doorctrl" var/skin = "doorctrl" power_channel = ENVIRON - var/obj/item/device/assembly/device + var/obj/item/assembly/device var/obj/item/electronics/airlock/board var/device_type = null var/id = null @@ -66,7 +66,7 @@ return if(panel_open) - if(!device && istype(W, /obj/item/device/assembly)) + if(!device && istype(W, /obj/item/assembly)) if(!user.transferItemToLoc(W, src)) to_chat(user, "\The [W] is stuck to you!") return @@ -117,8 +117,8 @@ return attack_ai(user) /obj/machinery/button/proc/setup_device() - if(id && istype(device, /obj/item/device/assembly/control)) - var/obj/item/device/assembly/control/A = device + if(id && istype(device, /obj/item/assembly/control)) + var/obj/item/assembly/control/A = device A.id = id initialized_button = 1 @@ -183,11 +183,11 @@ /obj/machinery/button/door/setup_device() if(!device) if(normaldoorcontrol) - var/obj/item/device/assembly/control/airlock/A = new(src) + var/obj/item/assembly/control/airlock/A = new(src) device = A A.specialfunctions = specialfunctions else - device = new /obj/item/device/assembly/control(src) + device = new /obj/item/assembly/control(src) ..() /obj/machinery/button/massdriver @@ -195,28 +195,28 @@ desc = "A remote control switch for a mass driver." icon_state = "launcher" skin = "launcher" - device_type = /obj/item/device/assembly/control/massdriver + device_type = /obj/item/assembly/control/massdriver /obj/machinery/button/ignition name = "ignition switch" desc = "A remote control switch for a mounted igniter." icon_state = "launcher" skin = "launcher" - device_type = /obj/item/device/assembly/control/igniter + device_type = /obj/item/assembly/control/igniter /obj/machinery/button/flasher name = "flasher button" desc = "A remote control switch for a mounted flasher." icon_state = "launcher" skin = "launcher" - device_type = /obj/item/device/assembly/control/flasher + device_type = /obj/item/assembly/control/flasher /obj/machinery/button/crematorium name = "crematorium igniter" desc = "Burn baby burn!" icon_state = "launcher" skin = "launcher" - device_type = /obj/item/device/assembly/control/crematorium + device_type = /obj/item/assembly/control/crematorium req_access = list() id = 1 diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index e0178d8885..d19270f04e 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -24,7 +24,7 @@ anchored = TRUE var/start_active = FALSE //If it ignores the random chance to start broken on round start var/invuln = null - var/obj/item/device/camera_bug/bug = null + var/obj/item/camera_bug/bug = null var/obj/structure/camera_assembly/assembly = null var/area/myarea = null @@ -175,7 +175,7 @@ /obj/machinery/camera/attackby(obj/item/I, mob/living/user, params) // UPGRADES if(panel_open) - if(istype(I, /obj/item/device/analyzer)) + if(istype(I, /obj/item/analyzer)) if(!isXRay()) if(!user.temporarilyRemoveItemFromInventory(I)) return @@ -195,7 +195,7 @@ to_chat(user, "[src] already has that upgrade!") return - else if(istype(I, /obj/item/device/assembly/prox_sensor)) + else if(istype(I, /obj/item/assembly/prox_sensor)) if(!isMotion()) if(!user.temporarilyRemoveItemFromInventory(I)) return @@ -207,10 +207,10 @@ return // OTHER - if((istype(I, /obj/item/paper) || istype(I, /obj/item/device/pda)) && isliving(user)) + if((istype(I, /obj/item/paper) || istype(I, /obj/item/pda)) && isliving(user)) var/mob/living/U = user var/obj/item/paper/X = null - var/obj/item/device/pda/P = null + var/obj/item/pda/P = null var/itemname = "" var/info = "" @@ -239,7 +239,7 @@ O << browse(text("[][]", itemname, info), text("window=[]", itemname)) return - else if(istype(I, /obj/item/device/camera_bug)) + else if(istype(I, /obj/item/camera_bug)) if(!can_use()) to_chat(user, "Camera non-functional.") return diff --git a/code/game/machinery/camera/camera_assembly.dm b/code/game/machinery/camera/camera_assembly.dm index d8dab302d8..7eac36dc96 100644 --- a/code/game/machinery/camera/camera_assembly.dm +++ b/code/game/machinery/camera/camera_assembly.dm @@ -14,7 +14,7 @@ icon_state = "camera1" max_integrity = 150 // Motion, EMP-Proof, X-Ray - var/static/list/possible_upgrades = typecacheof(list(/obj/item/device/assembly/prox_sensor, /obj/item/stack/sheet/mineral/plasma, /obj/item/device/analyzer)) + var/static/list/possible_upgrades = typecacheof(list(/obj/item/assembly/prox_sensor, /obj/item/stack/sheet/mineral/plasma, /obj/item/analyzer)) var/list/upgrades var/state = 1 diff --git a/code/game/machinery/camera/presets.dm b/code/game/machinery/camera/presets.dm index ba72d9676d..e330d015df 100644 --- a/code/game/machinery/camera/presets.dm +++ b/code/game/machinery/camera/presets.dm @@ -79,10 +79,10 @@ upgrades |= CAMERA_UPGRADE_EMP_PROOF /obj/machinery/camera/proc/upgradeXRay() - assembly.upgrades.Add(new /obj/item/device/analyzer(assembly)) + assembly.upgrades.Add(new /obj/item/analyzer(assembly)) upgrades |= CAMERA_UPGRADE_XRAY // If you are upgrading Motion, and it isn't in the camera's Initialize(), add it to the machines list. /obj/machinery/camera/proc/upgradeMotion() - assembly.upgrades.Add(new /obj/item/device/assembly/prox_sensor(assembly)) + assembly.upgrades.Add(new /obj/item/assembly/prox_sensor(assembly)) upgrades |= CAMERA_UPGRADE_MOTION diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 0297652982..17bfe5e02c 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -30,8 +30,8 @@ var/grab_ghost_when = CLONER_MATURE_CLONE var/internal_radio = TRUE - var/obj/item/device/radio/radio - var/radio_key = /obj/item/device/encryptionkey/headset_med + var/obj/item/radio/radio + var/radio_key = /obj/item/encryptionkey/headset_med var/radio_channel = "Medical" var/obj/effect/countdown/clonepod/countdown @@ -126,7 +126,7 @@ return examine(user) //Start growing a human clone in the pod! -/obj/machinery/clonepod/proc/growclone(ckey, clonename, ui, se, mindref, datum/species/mrace, list/features, factions, list/traits) +/obj/machinery/clonepod/proc/growclone(ckey, clonename, ui, se, mindref, datum/species/mrace, list/features, factions, list/quirks) if(panel_open) return FALSE if(mess || attempting) @@ -134,8 +134,11 @@ clonemind = locate(mindref) in SSticker.minds if(!istype(clonemind)) //not a mind return FALSE - if( clonemind.current && clonemind.current.stat != DEAD ) //mind is associated with a non-dead body - return FALSE + if(clonemind.current) + if(clonemind.current.stat != DEAD) //mind is associated with a non-dead body + return FALSE + if(clonemind.current.suiciding) // Mind is associated with a body that is suiciding. + return FALSE if(clonemind.active) //somebody is using that mind if( ckey(clonemind.key)!=ckey ) return FALSE @@ -144,6 +147,8 @@ var/mob/dead/observer/G = clonemind.get_ghost() if(!G) return FALSE + if(G.suiciding) // The ghost came from a body that is suiciding. + return FALSE if(clonemind.damnation_type) //Can't clone the damned. INVOKE_ASYNC(src, .proc/horrifyingsound) mess = TRUE @@ -198,7 +203,7 @@ if(H) H.faction |= factions - for(var/V in traits) + for(var/V in quirks) new V(H) H.set_cloned_appearance() @@ -282,14 +287,11 @@ if(default_deconstruction_screwdriver(user, "[icon_state]_maintenance", "[initial(icon_state)]",W)) return - if(exchange_parts(user, W)) - return - if(default_deconstruction_crowbar(W)) return - if(istype(W, /obj/item/device/multitool)) - var/obj/item/device/multitool/P = W + if(istype(W, /obj/item/multitool)) + var/obj/item/multitool/P = W if(istype(P.buffer, /obj/machinery/computer/cloning)) if(get_area(P.buffer) != get_area(src)) @@ -397,7 +399,7 @@ QDEL_IN(mob_occupant, 40) /obj/machinery/clonepod/relaymove(mob/user) - container_resist() + container_resist(user) /obj/machinery/clonepod/container_resist(mob/living/user) if(user.stat == CONSCIOUS) diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm index c6d15bf726..43e736b6ef 100644 --- a/code/game/machinery/computer/aifixer.dm +++ b/code/game/machinery/computer/aifixer.dm @@ -119,7 +119,7 @@ else add_overlay("ai-fixer-empty") -/obj/machinery/computer/aifixer/transfer_ai(interaction, mob/user, mob/living/silicon/ai/AI, obj/item/device/aicard/card) +/obj/machinery/computer/aifixer/transfer_ai(interaction, mob/user, mob/living/silicon/ai/AI, obj/item/aicard/card) if(!..()) return //Downloading AI from card to terminal. diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index e90f69bf23..46898bb2d7 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -291,6 +291,7 @@ /obj/machinery/computer/arcade/battle/emag_act(mob/user) if(obj_flags & EMAGGED) return + to_chat(user, "A mesmerizing Rhumba beat starts playing from the arcade machine's speakers!") temp = "If you die in the game, you die for real!" player_hp = 30 player_mp = 10 @@ -506,9 +507,9 @@ if(ORION_TRAIL_ILLNESS) var/severity = rand(1,3) //pray to RNGesus. PRAY, PIGS if(severity == 1) - to_chat(M, "You suddenly feel slightly nauseous." ) + to_chat(M, "You suddenly feel slightly nauseated." ) if(severity == 2) - to_chat(usr, "You suddenly feel extremely nauseous and hunch over until it passes.") + to_chat(usr, "You suddenly feel extremely nauseated and hunch over until it passes.") M.Stun(60) if(severity >= 3) //you didn't pray hard enough to_chat(M, "An overpowering wave of nausea consumes over you. You hunch over, your stomach's contents preparing for a spectacular exit.") @@ -614,7 +615,7 @@ L.Stun(200, ignore_canstun = TRUE) //you can't run :^) var/S = new /obj/singularity/academy(usr.loc) addtimer(CALLBACK(src, /atom/movable/proc/say, "[S] winks out, just as suddenly as it appeared."), 50) - QDEL_IN(src, 50) + QDEL_IN(S, 50) else event = null turns += 1 diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index db8938b5cf..95b4ea9f80 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -71,7 +71,7 @@ if(pod.occupant) continue //how though? - if(pod.growclone(R.fields["ckey"], R.fields["name"], R.fields["UI"], R.fields["SE"], R.fields["mind"], R.fields["mrace"], R.fields["features"], R.fields["factions"], R.fields["traits"])) + if(pod.growclone(R.fields["ckey"], R.fields["name"], R.fields["UI"], R.fields["SE"], R.fields["mind"], R.fields["mrace"], R.fields["features"], R.fields["factions"], R.fields["quirks"])) temp = "[R.fields["name"]] => Cloning cycle in progress..." records -= R @@ -123,8 +123,8 @@ to_chat(user, "You insert [W].") playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) src.updateUsrDialog() - else if(istype(W, /obj/item/device/multitool)) - var/obj/item/device/multitool/P = W + else if(istype(W, /obj/item/multitool)) + var/obj/item/multitool/P = W if(istype(P.buffer, /obj/machinery/clonepod)) if(get_area(P.buffer) != get_area(src)) @@ -330,7 +330,7 @@ else if (src.menu == 4) var/obj/item/card/id/C = usr.get_active_held_item() - if (istype(C)||istype(C, /obj/item/device/pda)) + if (istype(C)||istype(C, /obj/item/pda)) if(src.check_access(C)) src.temp = "[src.active_record.fields["name"]] => Record deleted." src.records.Remove(active_record) @@ -400,7 +400,7 @@ else if(pod.occupant) temp = "Cloning cycle already in progress." playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, 0) - else if(pod.growclone(C.fields["ckey"], C.fields["name"], C.fields["UI"], C.fields["SE"], C.fields["mind"], C.fields["mrace"], C.fields["features"], C.fields["factions"], C.fields["traits"])) + else if(pod.growclone(C.fields["ckey"], C.fields["name"], C.fields["UI"], C.fields["SE"], C.fields["mind"], C.fields["mrace"], C.fields["features"], C.fields["factions"], C.fields["quirks"])) temp = "[C.fields["name"]] => Cloning cycle in progress..." playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) records.Remove(C) @@ -473,10 +473,10 @@ R.fields["blood_type"] = dna.blood_type R.fields["features"] = dna.features R.fields["factions"] = mob_occupant.faction - R.fields["traits"] = list() - for(var/V in mob_occupant.roundstart_traits) - var/datum/trait/T = V - R.fields["traits"] += T.type + R.fields["quirks"] = list() + for(var/V in mob_occupant.roundstart_quirks) + var/datum/quirk/T = V + R.fields["quirks"] += T.type if (!isnull(mob_occupant.mind)) //Save that mind so traitors can continue traitoring after cloning. R.fields["mind"] = "[REF(mob_occupant.mind)]" diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 5bd5dc1271..14d02e9752 100755 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -45,7 +45,7 @@ /obj/machinery/computer/communications/process() if(..()) - if(state != STATE_STATUSDISPLAY && state != STATE_CALLSHUTTLE && state != STATE_PURCHASE) + if(state != STATE_STATUSDISPLAY && state != STATE_CALLSHUTTLE && state != STATE_PURCHASE && state != STATE_VIEWMESSAGE) updateDialog() /obj/machinery/computer/communications/Topic(href, href_list) @@ -97,8 +97,8 @@ if("swipeidseclevel") var/mob/M = usr var/obj/item/card/id/I = M.get_active_held_item() - if (istype(I, /obj/item/device/pda)) - var/obj/item/device/pda/pda = I + if (istype(I, /obj/item/pda)) + var/obj/item/pda/pda = I I = pda.id if (I && istype(I)) if(ACCESS_CAPTAIN in I.access) diff --git a/code/game/machinery/computer/launchpad_control.dm b/code/game/machinery/computer/launchpad_control.dm index a811fa7601..fd785e5bc6 100644 --- a/code/game/machinery/computer/launchpad_control.dm +++ b/code/game/machinery/computer/launchpad_control.dm @@ -18,8 +18,8 @@ return /obj/machinery/computer/launchpad/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/device/multitool)) - var/obj/item/device/multitool/M = W + if(istype(W, /obj/item/multitool)) + var/obj/item/multitool/M = W if(M.buffer && istype(M.buffer, /obj/machinery/launchpad)) if(LAZYLEN(launchpads) < maximum_pads) launchpads |= M.buffer diff --git a/code/game/machinery/computer/teleporter.dm b/code/game/machinery/computer/teleporter.dm index 786b86605c..93b997eee6 100644 --- a/code/game/machinery/computer/teleporter.dm +++ b/code/game/machinery/computer/teleporter.dm @@ -5,7 +5,7 @@ icon_keyboard = "teleport_key" light_color = LIGHT_COLOR_BLUE circuit = /obj/item/circuitboard/computer/teleporter - var/obj/item/device/gps/locked + var/obj/item/gps/locked var/regime_set = "Teleporter" var/id var/obj/machinery/teleport/station/power_station @@ -34,8 +34,8 @@ return power_station /obj/machinery/computer/teleporter/attackby(obj/I, mob/living/user, params) - if(istype(I, /obj/item/device/gps)) - var/obj/item/device/gps/L = I + if(istype(I, /obj/item/gps)) + var/obj/item/gps/L = I if(L.locked_location && !(stat & (NOPOWER|BROKEN))) if(!user.transferItemToLoc(L, src)) to_chat(user, "\the [I] is stuck to your hand, you cannot put it in \the [src]!") @@ -153,7 +153,7 @@ var/list/L = list() var/list/areaindex = list() if(regime_set == "Teleporter") - for(var/obj/item/device/beacon/R in GLOB.teleportbeacons) + for(var/obj/item/beacon/R in GLOB.teleportbeacons) if(is_eligible(R)) var/area/A = get_area(R) L[avoid_assoc_duplicate_keys(A.name, areaindex)] = R @@ -174,25 +174,26 @@ else var/list/S = power_station.linked_stations - if(!S.len) - to_chat(user, "No connected stations located.") - return for(var/obj/machinery/teleport/station/R in S) - if(is_eligible(R)) + if(is_eligible(R) && R.teleporter_hub) var/area/A = get_area(R) L[avoid_assoc_duplicate_keys(A.name, areaindex)] = R + if(!L.len) + to_chat(user, "No active connected stations located.") + return var/desc = input("Please select a station to lock in.", "Locking Computer") as null|anything in L - target = L[desc] - if(target) - var/obj/machinery/teleport/station/trg = target - trg.linked_stations |= power_station - trg.stat &= ~NOPOWER - if(trg.teleporter_hub) - trg.teleporter_hub.stat &= ~NOPOWER - trg.teleporter_hub.update_icon() - if(trg.teleporter_console) - trg.teleporter_console.stat &= ~NOPOWER - trg.teleporter_console.update_icon() + var/obj/machinery/teleport/station/target_station = L[desc] + if(!target_station || !target_station.teleporter_hub) + return + target = target_station.teleporter_hub + target_station.linked_stations |= power_station + target_station.stat &= ~NOPOWER + if(target_station.teleporter_hub) + target_station.teleporter_hub.stat &= ~NOPOWER + target_station.teleporter_hub.update_icon() + if(target_station.teleporter_console) + target_station.teleporter_console.stat &= ~NOPOWER + target_station.teleporter_console.update_icon() /obj/machinery/computer/teleporter/proc/is_eligible(atom/movable/AM) var/turf/T = get_turf(AM) diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 7aab26dc63..59bf9f86fd 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -4,7 +4,7 @@ icon_state = "box_0" density = TRUE max_integrity = 250 - var/obj/item/circuitboard/circuit = null + var/obj/item/circuitboard/machine/circuit = null var/state = 1 /obj/structure/frame/examine(user) @@ -165,6 +165,13 @@ icon_state = "box_1" return + if(istype(P, /obj/item/wrench) && !circuit.needs_anchored) + to_chat(user, "You start [anchored ? "un" : ""]securing [name]...") + if(P.use_tool(src, user, 40, volume=75)) + to_chat(user, "You [anchored ? "un" : ""]secure [name].") + anchored = !anchored + return + if(istype(P, /obj/item/screwdriver)) var/component_check = 1 for(var/R in req_components) diff --git a/code/game/machinery/dance_machine.dm b/code/game/machinery/dance_machine.dm index ed7912119c..0ac97f597b 100644 --- a/code/game/machinery/dance_machine.dm +++ b/code/game/machinery/dance_machine.dm @@ -156,56 +156,56 @@ var/turf/cen = get_turf(src) FOR_DVIEW(var/turf/t, 3, get_turf(src),INVISIBILITY_LIGHTING) if(t.x == cen.x && t.y > cen.y) - var/obj/item/device/flashlight/spotlight/L = new /obj/item/device/flashlight/spotlight(t) + var/obj/item/flashlight/spotlight/L = new /obj/item/flashlight/spotlight(t) L.light_color = LIGHT_COLOR_RED L.light_power = 30-(get_dist(src,L)*8) L.range = 1+get_dist(src, L) spotlights+=L continue if(t.x == cen.x && t.y < cen.y) - var/obj/item/device/flashlight/spotlight/L = new /obj/item/device/flashlight/spotlight(t) + var/obj/item/flashlight/spotlight/L = new /obj/item/flashlight/spotlight(t) L.light_color = LIGHT_COLOR_PURPLE L.light_power = 30-(get_dist(src,L)*8) L.range = 1+get_dist(src, L) spotlights+=L continue if(t.x > cen.x && t.y == cen.y) - var/obj/item/device/flashlight/spotlight/L = new /obj/item/device/flashlight/spotlight(t) + var/obj/item/flashlight/spotlight/L = new /obj/item/flashlight/spotlight(t) L.light_color = LIGHT_COLOR_YELLOW L.light_power = 30-(get_dist(src,L)*8) L.range = 1+get_dist(src, L) spotlights+=L continue if(t.x < cen.x && t.y == cen.y) - var/obj/item/device/flashlight/spotlight/L = new /obj/item/device/flashlight/spotlight(t) + var/obj/item/flashlight/spotlight/L = new /obj/item/flashlight/spotlight(t) L.light_color = LIGHT_COLOR_GREEN L.light_power = 30-(get_dist(src,L)*8) L.range = 1+get_dist(src, L) spotlights+=L continue if((t.x+1 == cen.x && t.y+1 == cen.y) || (t.x+2==cen.x && t.y+2 == cen.y)) - var/obj/item/device/flashlight/spotlight/L = new /obj/item/device/flashlight/spotlight(t) + var/obj/item/flashlight/spotlight/L = new /obj/item/flashlight/spotlight(t) L.light_color = LIGHT_COLOR_ORANGE L.light_power = 30-(get_dist(src,L)*8) L.range = 1.4+get_dist(src, L) spotlights+=L continue if((t.x-1 == cen.x && t.y-1 == cen.y) || (t.x-2==cen.x && t.y-2 == cen.y)) - var/obj/item/device/flashlight/spotlight/L = new /obj/item/device/flashlight/spotlight(t) + var/obj/item/flashlight/spotlight/L = new /obj/item/flashlight/spotlight(t) L.light_color = LIGHT_COLOR_CYAN L.light_power = 30-(get_dist(src,L)*8) L.range = 1.4+get_dist(src, L) spotlights+=L continue if((t.x-1 == cen.x && t.y+1 == cen.y) || (t.x-2==cen.x && t.y+2 == cen.y)) - var/obj/item/device/flashlight/spotlight/L = new /obj/item/device/flashlight/spotlight(t) + var/obj/item/flashlight/spotlight/L = new /obj/item/flashlight/spotlight(t) L.light_color = LIGHT_COLOR_BLUEGREEN L.light_power = 30-(get_dist(src,L)*8) L.range = 1.4+get_dist(src, L) spotlights+=L continue if((t.x+1 == cen.x && t.y-1 == cen.y) || (t.x+2==cen.x && t.y-2 == cen.y)) - var/obj/item/device/flashlight/spotlight/L = new /obj/item/device/flashlight/spotlight(t) + var/obj/item/flashlight/spotlight/L = new /obj/item/flashlight/spotlight(t) L.light_color = LIGHT_COLOR_BLUE L.light_power = 30-(get_dist(src,L)*8) L.range = 1.4+get_dist(src, L) @@ -244,7 +244,7 @@ for(var/obj/reveal in sparkles) reveal.alpha = 255 while(active) - for(var/obj/item/device/flashlight/spotlight/glow in spotlights) // The multiples reflects custom adjustments to each colors after dozens of tests + for(var/obj/item/flashlight/spotlight/glow in spotlights) // The multiples reflects custom adjustments to each colors after dozens of tests if(QDELETED(src) || !active || QDELETED(glow)) return if(glow.light_color == LIGHT_COLOR_RED) diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm index 9296e0807d..2a8868cb4f 100644 --- a/code/game/machinery/dna_scanner.dm +++ b/code/game/machinery/dna_scanner.dm @@ -133,9 +133,6 @@ update_icon()//..since we're updating the icon here, since the scanner can be unpowered when opened/closed return - if(exchange_parts(user, I)) - return - if(default_pry_open(I)) return diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 5c4f485cfa..db0a9a5866 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -72,7 +72,7 @@ var/justzap = FALSE var/obj/item/electronics/airlock/electronics var/shockCooldown = FALSE //Prevents multiple shocks from happening - var/obj/item/device/doorCharge/charge //If applied, causes an explosion upon opening the door + var/obj/item/doorCharge/charge //If applied, causes an explosion upon opening the door var/obj/item/note //Any papers pinned to the airlock var/detonated = FALSE var/abandoned = FALSE @@ -202,8 +202,8 @@ return // Handle recieved packet. - var/command = lowertext(data.plaintext_data) - var/command_value = lowertext(data.plaintext_data_secondary) + var/command = lowertext(data.data["data"]) + var/command_value = lowertext(data.data["data_secondary"]) switch(command) if("open") if(command_value == "on" && !density) @@ -323,12 +323,12 @@ return else return - else if(user.hallucinating() && ishuman(user) && prob(4) && !operating) + else if(user.hallucinating() && ishuman(user) && prob(1) && !operating) var/mob/living/carbon/human/H = user if(H.gloves) var/obj/item/clothing/gloves/G = H.gloves if(G.siemens_coefficient)//not insulated - hallucinate_shock(H) + new /datum/hallucination/shock(H) return if (cyclelinkedairlock) if (!shuttledocked && !emergency && !cyclelinkedairlock.shuttledocked && !cyclelinkedairlock.emergency && allowed(user)) @@ -338,34 +338,6 @@ addtimer(CALLBACK(cyclelinkedairlock, .proc/close), 2) ..() -/obj/machinery/door/airlock/proc/hallucinate_shock(mob/living/user) - var/image/shock_image = image(user, user, dir = user.dir) - var/image/electrocution_skeleton_anim = image('icons/mob/human.dmi', user, icon_state = "electrocuted_base", layer=ABOVE_MOB_LAYER) - shock_image.color = rgb(0,0,0) - shock_image.override = TRUE - electrocution_skeleton_anim.appearance_flags |= RESET_COLOR|KEEP_APART - - to_chat(user, "You feel a powerful shock course through your body!") - if(user.client) - user.client.images |= shock_image - user.client.images |= electrocution_skeleton_anim - addtimer(CALLBACK(src, .proc/reset_hallucinate_shock_animation, user, shock_image, electrocution_skeleton_anim), 40) - user.playsound_local(get_turf(src), "sparks", 100, 1) - user.staminaloss += 50 - user.Stun(40) - user.jitteriness += 1000 - user.do_jitter_animation(user.jitteriness) - addtimer(CALLBACK(src, .proc/hallucinate_shock_drop, user), 20) - -/obj/machinery/door/airlock/proc/reset_hallucinate_shock_animation(mob/living/user, shock_image, electrocution_skeleton_anim) - if(user.client) - user.client.images.Remove(shock_image) - user.client.images.Remove(electrocution_skeleton_anim) - -/obj/machinery/door/airlock/proc/hallucinate_shock_drop(mob/living/user) - user.jitteriness = max(user.jitteriness - 990, 10) //Still jittery, but vastly less - user.Knockdown(60) - /obj/machinery/door/airlock/proc/isElectrified() if(src.secondsElectrified != NOT_ELECTRIFIED) return TRUE @@ -939,7 +911,7 @@ cable.plugin(src, user) else if(istype(C, /obj/item/airlock_painter)) change_paintjob(C, user) - else if(istype(C, /obj/item/device/doorCharge)) + else if(istype(C, /obj/item/doorCharge)) if(!panel_open || security_level) to_chat(user, "The maintenance panel must be open to apply [C]!") return @@ -1098,10 +1070,8 @@ else playsound(src.loc, 'sound/machines/airlockforced.ogg', 30, 1) - if(autoclose && normalspeed) - addtimer(CALLBACK(src, .proc/autoclose), 150) - else if(autoclose && !normalspeed) - addtimer(CALLBACK(src, .proc/autoclose), 15) + if(autoclose) + autoclose_in(normalspeed ? 150 : 15) if(!density) return TRUE @@ -1134,7 +1104,7 @@ if(safe) for(var/atom/movable/M in get_turf(src)) if(M.density && M != src) //something is blocking the door - addtimer(CALLBACK(src, .proc/autoclose), 60) + autoclose_in(60) return if(forced < 2) diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index 3f0d28705a..3ab819f275 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -33,7 +33,7 @@ var/timing = FALSE // boolean, true/1 timer is on, false/0 means it's not timing var/list/obj/machinery/targets = list() - var/obj/item/device/radio/Radio //needed to send messages to sec radio + var/obj/item/radio/Radio //needed to send messages to sec radio maptext_height = 26 maptext_width = 32 @@ -41,7 +41,7 @@ /obj/machinery/door_timer/Initialize() . = ..() - Radio = new/obj/item/device/radio(src) + Radio = new/obj/item/radio(src) Radio.listening = 0 /obj/machinery/door_timer/Initialize() diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 4685097de1..c7369a6d29 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -274,7 +274,7 @@ for(var/atom/movable/M in get_turf(src)) if(M.density && M != src) //something is blocking the door if(autoclose) - addtimer(CALLBACK(src, .proc/autoclose), 60) + autoclose_in(60) return operating = TRUE @@ -326,6 +326,9 @@ if(!QDELETED(src) && !density && !operating && !locked && !welded && autoclose) close() +/obj/machinery/door/proc/autoclose_in(wait) + addtimer(CALLBACK(src, .proc/autoclose), wait, TIMER_UNIQUE | TIMER_NO_HASH_WAIT | TIMER_OVERRIDE) + /obj/machinery/door/proc/requiresID() return 1 diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 3754d52130..4a2df11151 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -142,19 +142,9 @@ if(density) open() else - if(iscarbon(user)) - var/mob/living/carbon/C = user - if(C.has_trait(TRAIT_PACIFISM)) - var/T = get_turf(src) - for(var/mob/living/L in T) - if((L.stat != DEAD) && !L.has_trait(TRAIT_FAKEDEATH)) - to_chat(user, "Closing [src] would hurt [L]!") - return close() -/obj/machinery/door/firedoor/interact(mob/user) - if(!issilicon(user)) - return TRUE +/obj/machinery/door/firedoor/attack_ai(mob/user) add_fingerprint(user) if(welded || operating || stat & NOPOWER) return TRUE @@ -164,6 +154,9 @@ close() return TRUE +/obj/machinery/door/firedoor/attack_robot(mob/user) + return attack_ai(user) + /obj/machinery/door/firedoor/attack_alien(mob/user) add_fingerprint(user) if(welded) @@ -363,8 +356,7 @@ return user.visible_message("[user] removes the wires from [src].", \ "You remove the wiring from [src], exposing the circuit board.") - var/obj/item/stack/cable_coil/B = new(get_turf(src)) - B.amount = 5 + new/obj/item/stack/cable_coil(get_turf(src), 5) constructionStep = CONSTRUCTION_GUTTED update_icon() return @@ -447,8 +439,8 @@ constructionStep = CONSTRUCTION_GUTTED update_icon() return - if(istype(C, /obj/item/device/electroadaptive_pseudocircuit)) - var/obj/item/device/electroadaptive_pseudocircuit/P = C + if(istype(C, /obj/item/electroadaptive_pseudocircuit)) + var/obj/item/electroadaptive_pseudocircuit/P = C if(!P.adapt_circuit(user, 30)) return user.visible_message("[user] fabricates a circuit and places it into [src].", \ diff --git a/code/game/machinery/droneDispenser.dm b/code/game/machinery/droneDispenser.dm index cf2eed6f53..9d4f5dd936 100644 --- a/code/game/machinery/droneDispenser.dm +++ b/code/game/machinery/droneDispenser.dm @@ -51,7 +51,7 @@ /obj/machinery/droneDispenser/Initialize() . = ..() - var/datum/component/material_container/materials = AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS), MINERAL_MATERIAL_AMOUNT * MAX_STACK_SIZE * 2, TRUE) + var/datum/component/material_container/materials = AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS), MINERAL_MATERIAL_AMOUNT * MAX_STACK_SIZE * 2, TRUE, list(/obj/item/stack)) materials.insert_amount(starting_amount) materials.precise_insertion = TRUE using_materials = list(MAT_METAL=metal_cost, MAT_GLASS=glass_cost) diff --git a/code/game/machinery/exp_cloner.dm b/code/game/machinery/exp_cloner.dm index 41d317a30f..d2960de159 100644 --- a/code/game/machinery/exp_cloner.dm +++ b/code/game/machinery/exp_cloner.dm @@ -141,8 +141,8 @@ LAZYREMOVE(pods, pod) /obj/machinery/computer/prototype_cloning/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/device/multitool)) - var/obj/item/device/multitool/P = W + if(istype(W, /obj/item/multitool)) + var/obj/item/multitool/P = W if(istype(P.buffer, /obj/machinery/clonepod/experimental)) if(get_area(P.buffer) != get_area(src)) diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index bb05111f19..0bdbd8976a 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -172,7 +172,7 @@ switch(buildstage) if(2) - if(istype(W, /obj/item/device/multitool)) + if(istype(W, /obj/item/multitool)) detecting = !detecting if (src.detecting) user.visible_message("[user] has reconnected [src]'s detecting unit!", "You reconnect [src]'s detecting unit.") @@ -221,8 +221,8 @@ update_icon() return - else if(istype(W, /obj/item/device/electroadaptive_pseudocircuit)) - var/obj/item/device/electroadaptive_pseudocircuit/P = W + else if(istype(W, /obj/item/electroadaptive_pseudocircuit)) + var/obj/item/electroadaptive_pseudocircuit/P = W if(!P.adapt_circuit(user, 15)) return user.visible_message("[user] fabricates a circuit and places it into [src].", \ diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 9bed526992..157553da0c 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -8,7 +8,7 @@ max_integrity = 250 integrity_failure = 100 anchored = TRUE - var/obj/item/device/assembly/flash/handheld/bulb + var/obj/item/assembly/flash/handheld/bulb var/id = null var/range = 2 //this is roughly the size of brig cell var/last_flash = 0 //Don't want it getting spammed like regular flashes @@ -60,7 +60,7 @@ bulb = null power_change() - else if (istype(W, /obj/item/device/assembly/flash/handheld)) + else if (istype(W, /obj/item/assembly/flash/handheld)) if (!bulb) if(!user.transferItemToLoc(W, src)) return diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index d6b35136b6..61ee4eb178 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -32,6 +32,7 @@ Possible to do for anyone motivated enough: desc = "It's a floor-mounted device for projecting holographic images." icon_state = "holopad0" layer = LOW_OBJ_LAYER + plane = FLOOR_PLANE flags_1 = HEAR_1 anchored = TRUE use_power = IDLE_POWER_USE @@ -66,7 +67,7 @@ Possible to do for anyone motivated enough: flags_1 = NODECONSTRUCT_1 on_network = FALSE var/proximity_range = 1 - + /obj/machinery/holopad/tutorial/Initialize(mapload) . = ..() if(proximity_range) @@ -86,7 +87,7 @@ Possible to do for anyone motivated enough: replay_stop() else if(disk && disk.record) replay_start() - + /obj/machinery/holopad/tutorial/HasProximity(atom/movable/AM) if (!isliving(AM)) return @@ -146,9 +147,6 @@ Possible to do for anyone motivated enough: if(default_deconstruction_screwdriver(user, "holopad_open", "holopad0", P)) return - if(exchange_parts(user, P)) - return - if(default_pry_open(P)) return @@ -490,7 +488,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ if(QDELETED(user) || user.incapacitated() || !user.client) return FALSE return TRUE - + //Can we display holos there //Area check instead of line of sight check because this is a called a lot if AI wants to move around. /obj/machinery/holopad/proc/validate_location(turf/T,check_los = FALSE) diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index 79954693c3..f6182fdae0 100644 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -3,6 +3,7 @@ desc = "It's useful for igniting plasma." icon = 'icons/obj/stationobjs.dmi' icon_state = "igniter0" + plane = FLOOR_PLANE var/id = null var/on = FALSE anchored = TRUE @@ -12,7 +13,7 @@ max_integrity = 300 armor = list("melee" = 50, "bullet" = 30, "laser" = 70, "energy" = 50, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70) resistance_flags = FIRE_PROOF - + /obj/machinery/igniter/on on = TRUE icon_state = "igniter1" diff --git a/code/game/machinery/launch_pad.dm b/code/game/machinery/launch_pad.dm index f50f409463..95bf10bc6c 100644 --- a/code/game/machinery/launch_pad.dm +++ b/code/game/machinery/launch_pad.dm @@ -31,15 +31,12 @@ return if(panel_open) - if(istype(I, /obj/item/device/multitool)) - var/obj/item/device/multitool/M = I + if(istype(I, /obj/item/multitool)) + var/obj/item/multitool/M = I M.buffer = src to_chat(user, "You save the data in the [I.name]'s buffer.") return 1 - if(exchange_parts(user, I)) - return - if(default_deconstruction_crowbar(I)) return @@ -185,8 +182,8 @@ closed = TRUE /obj/machinery/launchpad/briefcase/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/device/launchpad_remote)) - var/obj/item/device/launchpad_remote/L = I + if(istype(I, /obj/item/launchpad_remote)) + var/obj/item/launchpad_remote/L = I L.pad = src to_chat(user, "You link [src] to [L].") else @@ -232,24 +229,24 @@ user.transferItemToLoc(src, pad, TRUE) /obj/item/briefcase_launchpad/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/device/launchpad_remote)) - var/obj/item/device/launchpad_remote/L = I + if(istype(I, /obj/item/launchpad_remote)) + var/obj/item/launchpad_remote/L = I L.pad = src.pad to_chat(user, "You link [pad] to [L].") else return ..() -/obj/item/device/launchpad_remote +/obj/item/launchpad_remote name = "\improper Launchpad Control Remote" desc = "Used to teleport objects to and from a portable launchpad." icon = 'icons/obj/telescience.dmi' icon_state = "blpad-remote" w_class = WEIGHT_CLASS_SMALL - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT var/sending = TRUE var/obj/machinery/launchpad/briefcase/pad -/obj/item/device/launchpad_remote/ui_interact(mob/user, ui_key = "launchpad_remote", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) +/obj/item/launchpad_remote/ui_interact(mob/user, ui_key = "launchpad_remote", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) ui = new(user, src, ui_key, "launchpad_remote", "Briefcase Launchpad Remote", 550, 400, master_ui, state) //width, height @@ -258,7 +255,7 @@ ui.set_autoupdate(TRUE) -/obj/item/device/launchpad_remote/ui_data(mob/user) +/obj/item/launchpad_remote/ui_data(mob/user) var/list/data = list() data["has_pad"] = pad ? TRUE : FALSE if(pad) @@ -273,7 +270,7 @@ data["east_west"] = pad.x_offset > 0 ? "E":"W" return data -/obj/item/device/launchpad_remote/proc/teleport(mob/user, obj/machinery/launchpad/pad) +/obj/item/launchpad_remote/proc/teleport(mob/user, obj/machinery/launchpad/pad) if(QDELETED(pad)) to_chat(user, "ERROR: Launchpad not responding. Check launchpad integrity.") return @@ -282,7 +279,7 @@ return pad.doteleport(user, sending) -/obj/item/device/launchpad_remote/ui_act(action, params) +/obj/item/launchpad_remote/ui_act(action, params) if(..()) return switch(action) diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm index 77cb3e32d1..8347e5f548 100644 --- a/code/game/machinery/limbgrower.dm +++ b/code/game/machinery/limbgrower.dm @@ -28,6 +28,8 @@ var/list/categories = list( "human", "lizard", + "fly", + "moth", "plasmaman", "other" ) @@ -70,9 +72,6 @@ updateUsrDialog() return - if(exchange_parts(user, O)) - return - if(panel_open && default_deconstruction_crowbar(O)) return @@ -137,16 +136,16 @@ //i need to create a body part manually using a set icon (otherwise it doesnt appear) var/obj/item/bodypart/limb limb = new buildpath(loc) - if(selected_category=="human" || selected_category=="lizard") // Doing this because plasmamen have their limbs in a different icon file + if(selected_category=="human" || selected_category=="lizard") //Species with greyscale parts should be included here limb.icon = 'icons/mob/human_parts_greyscale.dmi' + limb.should_draw_greyscale = TRUE else limb.icon = 'icons/mob/human_parts.dmi' // Set this limb up using the specias name and body zone limb.icon_state = "[selected_category]_[limb.body_zone]" - limb.name = "Synthetic [selected_category] [parse_zone(limb.body_zone)]" + limb.name = "\improper synthetic [selected_category] [parse_zone(limb.body_zone)]" limb.desc = "A synthetic [selected_category] limb that will morph on its first use in surgery. This one is for the [parse_zone(limb.body_zone)]" limb.species_id = selected_category - limb.should_draw_greyscale = TRUE limb.update_icon_dropped() /obj/machinery/limbgrower/RefreshParts() diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index cec5479641..6c0a5ddd7e 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -89,7 +89,7 @@ updateicon() - else if (istype(I, /obj/item/card/id)||istype(I, /obj/item/device/pda)) + else if (istype(I, /obj/item/card/id)||istype(I, /obj/item/pda)) if(open) if (src.allowed(user)) src.locked = !src.locked diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index ecdb7873e0..e2b06b333c 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -798,7 +798,7 @@ GLOBAL_LIST_EMPTY(allCasters) var/list/nametemp = list() var/find var/datum/picture/selection - var/obj/item/device/camera/siliconcam/targetcam = null + var/obj/item/camera/siliconcam/targetcam = null if(isAI(user)) var/mob/living/silicon/ai/R = user targetcam = R.aicamera @@ -830,8 +830,8 @@ GLOBAL_LIST_EMPTY(allCasters) if(ishuman(user)) var/mob/living/carbon/human/human_user = user if(human_user.wear_id) - if(istype(human_user.wear_id, /obj/item/device/pda)) - var/obj/item/device/pda/P = human_user.wear_id + if(istype(human_user.wear_id, /obj/item/pda)) + var/obj/item/pda/P = human_user.wear_id if(P.id) scanned_user = "[P.id.registered_name] ([P.id.assignment])" else diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 615141869d..f80532acaa 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -254,7 +254,7 @@ if(prob(50)) new /obj/item/stack/sheet/metal(loc, rand(1,4)) if(prob(50)) - new /obj/item/device/assembly/prox_sensor(loc) + new /obj/item/assembly/prox_sensor(loc) else to_chat(user, "You remove the turret but did not manage to salvage anything.") qdel(src) @@ -286,8 +286,8 @@ to_chat(user, "Controls are now [locked ? "locked" : "unlocked"].") else to_chat(user, "Access denied.") - else if(istype(I, /obj/item/device/multitool) && !locked) - var/obj/item/device/multitool/M = I + else if(istype(I, /obj/item/multitool) && !locked) + var/obj/item/multitool/M = I M.buffer = src to_chat(user, "You add [src] to multitool buffer.") else @@ -795,8 +795,8 @@ if(stat & BROKEN) return - if (istype(I, /obj/item/device/multitool)) - var/obj/item/device/multitool/M = I + if (istype(I, /obj/item/multitool)) + var/obj/item/multitool/M = I if(M.buffer && istype(M.buffer, /obj/machinery/porta_turret)) turrets |= M.buffer to_chat(user, "You link \the [M.buffer] with \the [src]") diff --git a/code/game/machinery/porta_turret/portable_turret_construct.dm b/code/game/machinery/porta_turret/portable_turret_construct.dm index ca17490e03..4bc5db4d5e 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 @@ if(PTURRET_SENSORS_ON) to_chat(user, "You remove the prox sensor from the turret frame.") - new /obj/item/device/assembly/prox_sensor(loc) + new /obj/item/assembly/prox_sensor(loc) build_step = PTURRET_GUN_EQUIPPED /obj/machinery/porta_turret_construct/attack_ai() diff --git a/code/game/machinery/porta_turret/portable_turret_cover.dm b/code/game/machinery/porta_turret/portable_turret_cover.dm index d455bec173..8abb5c3fb7 100644 --- a/code/game/machinery/porta_turret/portable_turret_cover.dm +++ b/code/game/machinery/porta_turret/portable_turret_cover.dm @@ -64,8 +64,8 @@ updateUsrDialog() else to_chat(user, "Access denied.") - else if(istype(I, /obj/item/device/multitool) && !parent_turret.locked) - var/obj/item/device/multitool/M = I + else if(istype(I, /obj/item/multitool) && !parent_turret.locked) + var/obj/item/multitool/M = I M.buffer = parent_turret to_chat(user, "You add [parent_turret] to multitool buffer.") else diff --git a/code/game/machinery/quantum_pad.dm b/code/game/machinery/quantum_pad.dm index 37e46809d2..7236e683a5 100644 --- a/code/game/machinery/quantum_pad.dm +++ b/code/game/machinery/quantum_pad.dm @@ -48,21 +48,18 @@ return if(panel_open) - if(istype(I, /obj/item/device/multitool)) - var/obj/item/device/multitool/M = I + if(istype(I, /obj/item/multitool)) + var/obj/item/multitool/M = I M.buffer = src to_chat(user, "You save the data in [I]'s buffer.") return 1 - else if(istype(I, /obj/item/device/multitool)) - var/obj/item/device/multitool/M = I + else if(istype(I, /obj/item/multitool)) + var/obj/item/multitool/M = I if(istype(M.buffer, /obj/machinery/quantumpad)) linked_pad = M.buffer to_chat(user, "You link [src] to the one in [I]'s buffer.") return 1 - if(exchange_parts(user, I)) - return - if(default_deconstruction_crowbar(I)) return diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index f95f69e2d1..ea317b74e5 100755 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -15,7 +15,7 @@ /obj/item/gun/energy, /obj/item/melee/baton, /obj/item/ammo_box/magazine/recharge, - /obj/item/device/modular_computer)) + /obj/item/modular_computer)) /obj/machinery/recharger/RefreshParts() for(var/obj/item/stock_parts/capacitor/C in component_parts) @@ -68,8 +68,6 @@ default_deconstruction_crowbar(G) return - if(exchange_parts(user, G)) - return return ..() /obj/machinery/recharger/attack_hand(mob/user) diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 788f7ec274..e1200e6804 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -54,9 +54,6 @@ if(default_deconstruction_screwdriver(user, "borgdecon2", "borgcharger0", P)) return - if(exchange_parts(user, P)) - return - if(default_pry_open(P)) return diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index 0eb3f97acf..08fcb1baa8 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -19,7 +19,7 @@ var/item_recycle_sound = 'sound/items/welder.ogg' /obj/machinery/recycler/Initialize() - AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_PLASMA, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM)) + AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_PLASMA, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE, MAT_PLASTIC), INFINITY, FALSE, null, null, null, TRUE) AddComponent(/datum/component/butchering, 1, amount_produced,amount_produced/5) . = ..() update_icon() @@ -55,9 +55,6 @@ if(default_deconstruction_screwdriver(user, "grinder-oOpen", "grinder-o0", I)) return - if(exchange_parts(user, I)) - return - if(default_pry_open(I)) return @@ -110,7 +107,7 @@ for(var/i in to_eat) var/atom/movable/AM = i var/obj/item/bodypart/head/as_head = AM - var/obj/item/device/mmi/as_mmi = AM + var/obj/item/mmi/as_mmi = AM var/brain_holder = istype(AM, /obj/item/organ/brain) || (istype(as_head) && as_head.brain) || (istype(as_mmi) && as_mmi.brain) || istype(AM, /mob/living/brain) if(brain_holder) emergency_stop(AM) diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 0d77157392..36793900bf 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -51,7 +51,7 @@ GLOBAL_LIST_EMPTY(allConsoles) var/message = ""; var/dpt = ""; //the department which will be receiving the message var/priority = -1 ; //Priority of the message being sent - var/obj/item/device/radio/Radio + var/obj/item/radio/Radio var/emergency //If an emergency has been called by this device. Acts as both a cooldown and lets the responder know where it the emergency was triggered from var/receive_ore_updates = FALSE //If ore redemption machines will send an update when it receives new ores. max_integrity = 300 @@ -121,7 +121,7 @@ GLOBAL_LIST_EMPTY(allConsoles) if(!("[department]" in GLOB.req_console_information)) GLOB.req_console_information += department - Radio = new /obj/item/device/radio(src) + Radio = new /obj/item/radio(src) Radio.listening = 0 /obj/machinery/requests_console/Destroy() diff --git a/code/game/machinery/robot_fabricator.dm b/code/game/machinery/robot_fabricator.dm deleted file mode 100644 index 1fdc9b56dc..0000000000 --- a/code/game/machinery/robot_fabricator.dm +++ /dev/null @@ -1,143 +0,0 @@ -/obj/machinery/robotic_fabricator - name = "robotic fabricator" - icon = 'icons/obj/robotics.dmi' - icon_state = "fab-idle" - density = TRUE - anchored = TRUE - var/metal_amount = 0 - var/operating = FALSE - var/obj/item/being_built = null - use_power = IDLE_POWER_USE - idle_power_usage = 20 - active_power_usage = 5000 - -/obj/machinery/robotic_fabricator/attackby(obj/item/O, mob/living/user, params) - if (istype(O, /obj/item/stack/sheet/metal)) - if (metal_amount < 150000) - add_overlay("fab-load-metal") - addtimer(CALLBACK(src, .proc/FinishLoadingMetal, O, user), 15) - else - to_chat(user, "\The [src] is full.") - else - return ..() - -/obj/machinery/robotic_fabricator/proc/FinishLoadingMetal(obj/item/stack/sheet/metal/M, mob/living/user) - cut_overlay("fab-load-metal") - if(QDELETED(M) || QDELETED(user)) - return - var/count = 0 - while(metal_amount < 150000 && !QDELETED(M)) - metal_amount += M.materials[MAT_METAL] - M.use(1) - count++ - - to_chat(user, "You insert [count] metal sheet\s into \the [src].") - updateDialog() - -/obj/machinery/robotic_fabricator/power_change() - if (powered()) - stat &= ~NOPOWER - else - stat |= NOPOWER - -/obj/machinery/robotic_fabricator/ui_interact(mob/user) - . = ..() - var/dat - - if (src.operating) - dat = {" -Building [src.being_built.name].
-Please wait until completion...

-
-"} - else - dat = {" -Metal Amount: [min(150000, src.metal_amount)] cm3 (MAX: 150,000)

-
-Left Arm (25,000 cc metal.)
-
Right Arm (25,000 cc metal.)
-
Left Leg (25,000 cc metal.)
-
Right Leg (25,000 cc metal).
-
Chest (50,000 cc metal).
-
Head (50,000 cc metal).
-
Robot Frame (75,000 cc metal).
-"} - - user << browse("Robotic Fabricator Control Panel[dat]", "window=robot_fabricator") - onclose(user, "robot_fabricator") - return - -/obj/machinery/robotic_fabricator/Topic(href, href_list) - if (..()) - return - - usr.set_machine(src) - src.add_fingerprint(usr) - - if (href_list["make"]) - if (!src.operating) - var/part_type = text2num(href_list["make"]) - - var/build_type = "" - var/build_time = 200 - var/build_cost = 25000 - - switch (part_type) - if (1) - build_type = "/obj/item/bodypart/l_arm/robot" - build_time = 200 - build_cost = 10000 - - if (2) - build_type = "/obj/item/bodypart/r_arm/robot" - build_time = 200 - build_cost = 10000 - - if (3) - build_type = "/obj/item/bodypart/l_leg/robot" - build_time = 200 - build_cost = 10000 - - if (4) - build_type = "/obj/item/bodypart/r_leg/robot" - build_time = 200 - build_cost = 10000 - - if (5) - build_type = "/obj/item/bodypart/chest/robot" - build_time = 350 - build_cost = 40000 - - if (6) - build_type = "/obj/item/bodypart/head/robot" - build_time = 350 - build_cost = 5000 - - if (7) - build_type = "/obj/item/robot_suit" - build_time = 600 - build_cost = 15000 - - var/building = text2path(build_type) - if (!isnull(building)) - if (src.metal_amount >= build_cost) - operating = TRUE - src.use_power = ACTIVE_POWER_USE - - src.metal_amount = max(0, src.metal_amount - build_cost) - - src.being_built = new building(src) - - src.add_overlay("fab-active") - src.updateUsrDialog() - - spawn (build_time) - if (!isnull(src.being_built)) - src.being_built.forceMove(drop_location()) - src.being_built = null - src.use_power = IDLE_POWER_USE - operating = FALSE - cut_overlay("fab-active") - return - - updateUsrDialog() diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index 9fbe2b412b..872c5b8f1d 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -156,7 +156,7 @@ update_icon() if(panel_open) interact(user) - else if(exchange_parts(user, I) || default_deconstruction_crowbar(I)) + else if(default_deconstruction_crowbar(I)) return else return ..() diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index f041cf3d28..b0a2112f2b 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -107,7 +107,7 @@ name = "radiation suit storage unit" suit_type = /obj/item/clothing/suit/radiation helmet_type = /obj/item/clothing/head/radiation - storage_type = /obj/item/device/geiger_counter + storage_type = /obj/item/geiger_counter /obj/machinery/suit_storage_unit/open state_open = TRUE diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm index 1d2276a119..be5b404edc 100644 --- a/code/game/machinery/syndicatebeacon.dm +++ b/code/game/machinery/syndicatebeacon.dm @@ -5,7 +5,7 @@ name = "ominous beacon" desc = "This looks suspicious..." icon = 'icons/obj/singularity.dmi' - icon_state = "beacon" + icon_state = "beacon0" anchored = FALSE density = TRUE @@ -103,7 +103,7 @@ icon_state = "beaconsynd0" // SINGULO BEACON SPAWNER -/obj/item/device/sbeacondrop +/obj/item/sbeacondrop name = "suspicious beacon" icon = 'icons/obj/device.dmi' icon_state = "beacon" @@ -114,7 +114,7 @@ var/droptype = /obj/machinery/power/singularity_beacon/syndicate -/obj/item/device/sbeacondrop/attack_self(mob/user) +/obj/item/sbeacondrop/attack_self(mob/user) if(user) to_chat(user, "Locked In.") new droptype( user.loc ) @@ -122,14 +122,14 @@ qdel(src) return -/obj/item/device/sbeacondrop/bomb +/obj/item/sbeacondrop/bomb desc = "A label on it reads: Warning: Activating this device will send a high-ordinance explosive to your location." droptype = /obj/machinery/syndicatebomb -/obj/item/device/sbeacondrop/powersink +/obj/item/sbeacondrop/powersink desc = "A label on it reads: Warning: Activating this device will send a power draining device to your location." - droptype = /obj/item/device/powersink + droptype = /obj/item/powersink -/obj/item/device/sbeacondrop/clownbomb +/obj/item/sbeacondrop/clownbomb desc = "A label on it reads: Warning: Activating this device will send a silly explosive to your location." droptype = /obj/machinery/syndicatebomb/badmin/clown diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index b0e0b4f8fc..605676fc27 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -499,7 +499,7 @@ ///Syndicate Detonator (aka the big red button)/// -/obj/item/device/syndicatedetonator +/obj/item/syndicatedetonator name = "big red button" desc = "Your standard issue bomb synchronizing button. Five second safety delay to prevent 'accidents'." icon = 'icons/obj/assemblies.dmi' @@ -512,7 +512,7 @@ var/detonated = 0 var/existant = 0 -/obj/item/device/syndicatedetonator/attack_self(mob/user) +/obj/item/syndicatedetonator/attack_self(mob/user) if(timer < world.time) for(var/obj/machinery/syndicatebomb/B in GLOB.machines) if(B.active) diff --git a/code/game/machinery/telecomms/broadcasting.dm b/code/game/machinery/telecomms/broadcasting.dm index 7d795c9ce2..0873ad2df6 100644 --- a/code/game/machinery/telecomms/broadcasting.dm +++ b/code/game/machinery/telecomms/broadcasting.dm @@ -144,25 +144,25 @@ switch (transmission_method) if (TRANSMISSION_SUBSPACE) // Reaches any radios on the levels - for(var/obj/item/device/radio/R in GLOB.all_radios["[frequency]"]) + for(var/obj/item/radio/R in GLOB.all_radios["[frequency]"]) if(R.can_receive(frequency, levels)) radios += R // Syndicate radios can hear all well-known radio channels if (num2text(frequency) in GLOB.reverseradiochannels) - for(var/obj/item/device/radio/R in GLOB.all_radios["[FREQ_SYNDICATE]"]) + for(var/obj/item/radio/R in GLOB.all_radios["[FREQ_SYNDICATE]"]) if(R.can_receive(FREQ_SYNDICATE, list(R.z))) radios |= R if (TRANSMISSION_RADIO) // Only radios not currently in subspace mode - for(var/obj/item/device/radio/R in GLOB.all_radios["[frequency]"]) + for(var/obj/item/radio/R in GLOB.all_radios["[frequency]"]) if(!R.subspace_transmission && R.can_receive(frequency, levels)) radios += R if (TRANSMISSION_SUPERSPACE) // Only radios which are independent - for(var/obj/item/device/radio/R in GLOB.all_radios["[frequency]"]) + for(var/obj/item/radio/R in GLOB.all_radios["[frequency]"]) if(R.independent && R.can_receive(frequency, levels)) radios += R diff --git a/code/game/machinery/telecomms/computers/message.dm b/code/game/machinery/telecomms/computers/message.dm index 4408a653d4..74881cb064 100644 --- a/code/game/machinery/telecomms/computers/message.dm +++ b/code/game/machinery/telecomms/computers/message.dm @@ -28,7 +28,7 @@ var/optioncount = 7 // Custom Message Properties var/customsender = "System Administrator" - var/obj/item/device/pda/customrecepient = null + var/obj/item/pda/customrecepient = null var/customjob = "Admin" var/custommessage = "This is a test, please ignore." @@ -388,7 +388,7 @@ //Select Receiver if("Recepient") //Get out list of viable PDAs - var/list/obj/item/device/pda/sendPDAs = get_viewable_pdas() + var/list/obj/item/pda/sendPDAs = get_viewable_pdas() if(GLOB.PDAs && GLOB.PDAs.len > 0) customrecepient = input(usr, "Select a PDA from the list.") as null|anything in sortNames(sendPDAs) else diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm index 3bacd10b05..1ad80ccbed 100644 --- a/code/game/machinery/telecomms/machine_interactions.dm +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -18,12 +18,8 @@ if(default_deconstruction_screwdriver(user, icon_open, icon_closed, P)) return - - else if(exchange_parts(user, P)) - return - // Using a multitool lets you access the receiver's interface - else if(istype(P, /obj/item/device/multitool)) + else if(istype(P, /obj/item/multitool)) attack_hand(user) else if(default_deconstruction_crowbar(P)) @@ -36,9 +32,9 @@ // You need a multitool to use this, or be silicon if(!issilicon(user)) // istype returns false if the value is null - if(!istype(user.get_active_held_item(), /obj/item/device/multitool)) + if(!istype(user.get_active_held_item(), /obj/item/multitool)) return - var/obj/item/device/multitool/P = get_multitool(user) + var/obj/item/multitool/P = get_multitool(user) var/dat dat = "[name]

[name] Access

" dat += "
[temp]
" @@ -99,15 +95,15 @@ /obj/machinery/telecomms/proc/get_multitool(mob/user) - var/obj/item/device/multitool/P = null + var/obj/item/multitool/P = null // Let's double check - if(!issilicon(user) && istype(user.get_active_held_item(), /obj/item/device/multitool)) + if(!issilicon(user) && istype(user.get_active_held_item(), /obj/item/multitool)) P = user.get_active_held_item() else if(isAI(user)) var/mob/living/silicon/ai/U = user P = U.aiMulti else if(iscyborg(user) && in_range(user, src)) - if(istype(user.get_active_held_item(), /obj/item/device/multitool)) + if(istype(user.get_active_held_item(), /obj/item/multitool)) P = user.get_active_held_item() return P @@ -167,10 +163,10 @@ return if(!issilicon(usr)) - if(!istype(usr.get_active_held_item(), /obj/item/device/multitool)) + if(!istype(usr.get_active_held_item(), /obj/item/multitool)) return - var/obj/item/device/multitool/P = get_multitool(usr) + var/obj/item/multitool/P = get_multitool(usr) if(href_list["input"]) switch(href_list["input"]) diff --git a/code/game/machinery/telecomms/machines/allinone.dm b/code/game/machinery/telecomms/machines/allinone.dm index fbdc385f85..01b07c4b4f 100644 --- a/code/game/machinery/telecomms/machines/allinone.dm +++ b/code/game/machinery/telecomms/machines/allinone.dm @@ -37,5 +37,5 @@ signal.broadcast() /obj/machinery/telecomms/allinone/attackby(obj/item/P, mob/user, params) - if(istype(P, /obj/item/device/multitool)) + if(istype(P, /obj/item/multitool)) return attack_hand(user) diff --git a/code/game/machinery/telecomms/machines/message_server.dm b/code/game/machinery/telecomms/machines/message_server.dm index 1846eea322..d3d4b871b0 100644 --- a/code/game/machinery/telecomms/machines/message_server.dm +++ b/code/game/machinery/telecomms/machines/message_server.dm @@ -116,7 +116,7 @@ /datum/signal/subspace/pda/broadcast() if (!logged) // Can only go through if a message server logs it return - for (var/obj/item/device/pda/P in GLOB.PDAs) + for (var/obj/item/pda/P in GLOB.PDAs) if ("[P.owner] ([P.ownjob])" in data["targets"]) P.receive_message(src) diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index ae3263d96a..cef200173c 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -47,7 +47,6 @@ return if(is_ready()) teleport(AM) - use_power(5000) /obj/machinery/teleport/hub/attackby(obj/item/W, mob/user, params) if(default_deconstruction_screwdriver(user, "tele-o", "tele0", W)) @@ -55,21 +54,21 @@ power_station.engaged = 0 //hub with panel open is off, so the station must be informed. update_icon() return - if(exchange_parts(user, W)) - return if(default_deconstruction_crowbar(W)) return return ..() /obj/machinery/teleport/hub/proc/teleport(atom/movable/M as mob|obj, turf/T) var/obj/machinery/computer/teleporter/com = power_station.teleporter_console - if (!com) + if (QDELETED(com)) return - if (!com.target) + if (QDELETED(com.target)) + com.target = null visible_message("Cannot authenticate locked on coordinates. Please reinstate coordinate matrix.") return if (ismovableatom(M)) if(do_teleport(M, com.target)) + use_power(5000) if(!calibrated && prob(30 - ((accurate) * 10))) //oh dear a problem if(ishuman(M))//don't remove people from the round randomly you jerks var/mob/living/carbon/human/human = M @@ -151,8 +150,8 @@ return ..() /obj/machinery/teleport/station/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/device/multitool)) - var/obj/item/device/multitool/M = W + if(istype(W, /obj/item/multitool)) + var/obj/item/multitool/M = W if(panel_open) M.buffer = src to_chat(user, "You download the data to the [W.name]'s buffer.") @@ -169,9 +168,6 @@ update_icon() return - else if(exchange_parts(user, W)) - return - else if(default_deconstruction_crowbar(W)) return diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index cdb12eaf5c..ab906f1bfa 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -65,8 +65,7 @@ return /obj/item/stack/sheet/hairlesshide/machine_wash(obj/machinery/washing_machine/WM) - var/obj/item/stack/sheet/wetleather/WL = new(loc) - WL.amount = amount + new /obj/item/stack/sheet/wetleather(drop_location(), amount) qdel(src) /obj/item/clothing/suit/hooded/ian_costume/machine_wash(obj/machinery/washing_machine/WM) diff --git a/code/game/mecha/combat/combat.dm b/code/game/mecha/combat/combat.dm index 99837d2beb..c516571e2a 100644 --- a/code/game/mecha/combat/combat.dm +++ b/code/game/mecha/combat/combat.dm @@ -11,7 +11,7 @@ else return 0 -/obj/mecha/combat/mmi_moved_inside(obj/item/device/mmi/mmi_as_oc,mob/user) +/obj/mecha/combat/mmi_moved_inside(obj/item/mmi/mmi_as_oc,mob/user) if(..()) if(occupant.client && occupant.client.mouse_pointer_icon == initial(occupant.client.mouse_pointer_icon)) occupant.client.mouse_pointer_icon = 'icons/mecha/mecha_mouse.dmi' diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index 980b7170c1..0d1651c491 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -367,8 +367,7 @@ return ..() /obj/item/mecha_parts/mecha_equipment/generator/proc/generator_init() - fuel = new /obj/item/stack/sheet/mineral/plasma(src) - fuel.amount = 0 + fuel = new /obj/item/stack/sheet/mineral/plasma(src, 0) /obj/item/mecha_parts/mecha_equipment/generator/detach() STOP_PROCESSING(SSobj, src) @@ -472,8 +471,7 @@ var/rad_per_cycle = 3 /obj/item/mecha_parts/mecha_equipment/generator/nuclear/generator_init() - fuel = new /obj/item/stack/sheet/mineral/uranium(src) - fuel.amount = 0 + fuel = new /obj/item/stack/sheet/mineral/uranium(src, 0) /obj/item/mecha_parts/mecha_equipment/generator/nuclear/critfail() return diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index 2054a6ba9a..96adece298 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -301,8 +301,7 @@ /obj/item/mecha_parts/mecha_equipment/cable_layer/Initialize() . = ..() - cable = new(src) - cable.amount = 0 + cable = new(src, 0) /obj/item/mecha_parts/mecha_equipment/cable_layer/can_attach(obj/mecha/working/M) if(..()) @@ -333,8 +332,7 @@ if(to_load) to_load = min(target.amount, to_load) if(!cable) - cable = new(src) - cable.amount = 0 + cable = new(src, 0) cable.amount += to_load target.use(to_load) occupant_message("[to_load] meters of cable successfully loaded.") @@ -358,8 +356,7 @@ m = min(m, cable.amount) if(m) use_cable(m) - var/obj/item/stack/cable_coil/CC = new (get_turf(chassis)) - CC.amount = m + new /obj/item/stack/cable_coil(get_turf(chassis), m) else occupant_message("There's no more cable on the reel.") return diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 2b7855ea33..50d1f0be0d 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -369,7 +369,7 @@ name = "mousetrap mortar" desc = "Equipment for clown exosuits. Launches armed mousetraps." icon_state = "mecha_mousetrapmrtr" - projectile = /obj/item/device/assembly/mousetrap/armed + projectile = /obj/item/assembly/mousetrap/armed fire_sound = 'sound/items/bikehorn.ogg' projectiles = 15 missile_speed = 1.5 @@ -382,7 +382,7 @@ return 1 return 0 -/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/mousetrap_mortar/proj_init(var/obj/item/device/assembly/mousetrap/armed/M) +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/mousetrap_mortar/proj_init(var/obj/item/assembly/mousetrap/armed/M) M.secured = 1 diff --git a/code/game/mecha/mech_bay.dm b/code/game/mecha/mech_bay.dm index 0a2e7ad60e..d2d9ac5e57 100644 --- a/code/game/mecha/mech_bay.dm +++ b/code/game/mecha/mech_bay.dm @@ -64,9 +64,6 @@ recharging_turf = get_step(loc, dir) return - if(exchange_parts(user, I)) - return - if(default_deconstruction_crowbar(I)) return return ..() diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 7815014891..526c808809 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -37,7 +37,7 @@ /obj/machinery/mecha_part_fabricator/Initialize() var/datum/component/material_container/materials = AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE), 0, - FALSE, list(/obj/item/stack, /obj/item/stack/ore/bluespace_crystal), CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert)) + FALSE, list(/obj/item/stack), CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert)) materials.precise_insertion = TRUE stored_research = new return ..() @@ -401,9 +401,6 @@ if(default_deconstruction_screwdriver(user, "fab-o", "fab-idle", W)) return TRUE - if(exchange_parts(user, W)) - return TRUE - if(default_deconstruction_crowbar(W)) return TRUE diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 78ee151581..b00212b0de 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -57,7 +57,7 @@ var/datum/gas_mixture/cabin_air var/obj/machinery/atmospherics/components/unary/portables_connector/connected_port = null - var/obj/item/device/radio/mech/radio + var/obj/item/radio/mech/radio var/list/trackers = list() var/max_temperature = 25000 @@ -118,7 +118,7 @@ hud_possible = list (DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_TRACK_HUD) -/obj/item/device/radio/mech //this has to go somewhere +/obj/item/radio/mech //this has to go somewhere /obj/mecha/Initialize() . = ..() @@ -672,7 +672,7 @@ return to_chat(user, "
Take control of exosuit?
") -/obj/mecha/transfer_ai(interaction, mob/user, mob/living/silicon/ai/AI, obj/item/device/aicard/card) +/obj/mecha/transfer_ai(interaction, mob/user, mob/living/silicon/ai/AI, obj/item/aicard/card) if(!..()) return @@ -812,16 +812,18 @@ to_chat(usr, "The [name] is already occupied!") log_append_to_last("Permission denied.") return - var/passed if(dna_lock) + var/passed = FALSE if(user.has_dna()) var/mob/living/carbon/C = user if(C.dna.unique_enzymes==dna_lock) - passed = 1 - else if(operation_allowed(user)) - passed = 1 - if(!passed) - to_chat(user, "Access denied.") + passed = TRUE + if (!passed) + to_chat(user, "Access denied. [name] is secured with a DNA lock.") + log_append_to_last("Permission denied.") + return + if(!operation_allowed(user)) + to_chat(user, "Access denied. Insufficient operation keycodes.") log_append_to_last("Permission denied.") return if(user.buckled) @@ -866,7 +868,7 @@ else return 0 -/obj/mecha/proc/mmi_move_inside(obj/item/device/mmi/mmi_as_oc, mob/user) +/obj/mecha/proc/mmi_move_inside(obj/item/mmi/mmi_as_oc, mob/user) if(!mmi_as_oc.brainmob || !mmi_as_oc.brainmob.client) to_chat(user, "Consciousness matrix not detected!") return FALSE @@ -891,7 +893,7 @@ to_chat(user, "You stop inserting the MMI.") return FALSE -/obj/mecha/proc/mmi_moved_inside(obj/item/device/mmi/mmi_as_oc, mob/user) +/obj/mecha/proc/mmi_moved_inside(obj/item/mmi/mmi_as_oc, mob/user) if(!(Adjacent(mmi_as_oc) && Adjacent(user))) return FALSE if(!mmi_as_oc.brainmob || !mmi_as_oc.brainmob.client) @@ -967,8 +969,8 @@ log_message("[mob_container] moved out.") L << browse(null, "window=exosuit") - if(istype(mob_container, /obj/item/device/mmi)) - var/obj/item/device/mmi/mmi = mob_container + if(istype(mob_container, /obj/item/mmi)) + var/obj/item/mmi/mmi = mob_container if(mmi.brainmob) L.forceMove(mmi) L.reset_perspective() diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index 6218326c8d..c6ab4ce2f4 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -1409,7 +1409,7 @@ //26 list( - "key" = /obj/item/device/assembly/signaler/anomaly, + "key" = /obj/item/assembly/signaler/anomaly, "action" = ITEM_DELETE, "back_key" = TOOL_WELDER, "desc" = "Anomaly core socket is open.", diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm index e1e401e116..0fbfafeb59 100644 --- a/code/game/mecha/mecha_defense.dm +++ b/code/game/mecha/mecha_defense.dm @@ -155,7 +155,7 @@ /obj/mecha/attackby(obj/item/W as obj, mob/user as mob, params) - if(istype(W, /obj/item/device/mmi)) + if(istype(W, /obj/item/mmi)) if(mmi_move_inside(W,user)) to_chat(user, "[src]-[W] interface initialized successfully.") else @@ -180,7 +180,7 @@ if(istype(W, /obj/item/card/id)) id_card = W else - var/obj/item/device/pda/pda = W + var/obj/item/pda/pda = W id_card = pda.id output_maintenance_dialog(id_card, user) return diff --git a/code/game/mecha/mecha_topic.dm b/code/game/mecha/mecha_topic.dm index 4c1bceca28..4f5c6feb44 100644 --- a/code/game/mecha/mecha_topic.dm +++ b/code/game/mecha/mecha_topic.dm @@ -199,7 +199,7 @@ [add_req_access?"Edit operation keycodes":null] - [maint_access?"Initiate maintenance protocol":null] + [maint_access?"[(state>0) ? "Terminate" : "Initiate"] maintenance protocol":null] [(state>0) ?"Set Cabin Air Pressure":null] "} diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm index dc909d90d1..1f789281df 100644 --- a/code/game/mecha/mecha_wreckage.dm +++ b/code/game/mecha/mecha_wreckage.dm @@ -79,7 +79,7 @@ to_chat(user, "You don't see anything that can be pried with [I]!") -/obj/structure/mecha_wreckage/transfer_ai(interaction, mob/user, null, obj/item/device/aicard/card) +/obj/structure/mecha_wreckage/transfer_ai(interaction, mob/user, null, obj/item/aicard/card) if(!..()) return diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index 429d954451..21ecc26905 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -31,8 +31,6 @@ ore.forceMove(ore_box) /obj/mecha/working/ripley/Destroy() - for(var/i=1, i <= hides, i++) - new /obj/item/stack/sheet/animalhide/goliath_hide(loc) //If a goliath-plated ripley gets killed, all the plates drop for(var/atom/movable/A in cargo) A.forceMove(drop_location()) step_rand(A) @@ -49,13 +47,18 @@ /obj/mecha/working/ripley/update_icon() ..() - if (hides) + GET_COMPONENT(C,/datum/component/armor_plate) + if (C.amount) cut_overlays() - if(hides < 3) + if(C.amount < 3) add_overlay(occupant ? "ripley-g" : "ripley-g-open") else add_overlay(occupant ? "ripley-g-full" : "ripley-g-full-open") +/obj/mecha/working/ripley/Initialize() + . = ..() + AddComponent(/datum/component/armor_plate,3,/obj/item/stack/sheet/animalhide/goliath_hide,list("melee" = 10, "bullet" = 5, "laser" = 5)) + /obj/mecha/working/ripley/firefighter desc = "Autonomous Power Loader Unit. This model is refitted with additional thermal protection." diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm index e5e9f578b2..035fc845c4 100644 --- a/code/game/objects/effects/anomalies.dm +++ b/code/game/objects/effects/anomalies.dm @@ -8,7 +8,7 @@ anchored = TRUE light_range = 3 var/movechance = 70 - var/obj/item/device/assembly/signaler/anomaly/aSignal = null + var/obj/item/assembly/signaler/anomaly/aSignal var/area/impact_area var/lifespan = 990 @@ -26,10 +26,12 @@ aSignal = new(src) aSignal.name = "[name] core" aSignal.code = rand(1,100) + aSignal.anomaly_type = type - aSignal.frequency = rand(MIN_FREE_FREQ, MAX_FREE_FREQ) - if(ISMULTIPLE(aSignal.frequency, 2))//signaller frequencies are always uneven! - aSignal.frequency++ + var/frequency = rand(MIN_FREE_FREQ, MAX_FREE_FREQ) + if(ISMULTIPLE(frequency, 2))//signaller frequencies are always uneven! + frequency++ + aSignal.set_frequency(frequency) if(new_lifespan) lifespan = new_lifespan @@ -73,7 +75,7 @@ /obj/effect/anomaly/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/device/analyzer)) + if(istype(I, /obj/item/analyzer)) to_chat(user, "Analyzing... [src]'s unstable field is fluctuating along frequency [format_frequency(aSignal.frequency)], code [aSignal.code].") /////////////////////// @@ -193,9 +195,9 @@ var/turf/T = safepick(get_area_turfs(impact_area)) if(T) // Calculate new position (searches through beacons in world) - var/obj/item/device/beacon/chosen + var/obj/item/beacon/chosen var/list/possible = list() - for(var/obj/item/device/beacon/W in GLOB.teleportbeacons) + for(var/obj/item/beacon/W in GLOB.teleportbeacons) possible += W if(possible.len > 0) @@ -218,7 +220,7 @@ var/y_distance = TO.y - FROM.y var/x_distance = TO.x - FROM.x for (var/atom/movable/A in urange(12, FROM )) // iterate thru list of mobs in the area - if(istype(A, /obj/item/device/beacon)) + if(istype(A, /obj/item/beacon)) continue // don't teleport beacons because that's just insanely stupid if(A.anchored) continue diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index 0794b818da..43ee2991e0 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -1,7 +1,7 @@ /obj/effect/decal/cleanable gender = PLURAL layer = ABOVE_NORMAL_TURF_LAYER - var/list/random_icon_states = list() + var/list/random_icon_states = null var/blood_state = "" //I'm sorry but cleanable/blood code is ass, and so is blood_DNA var/bloodiness = 0 //0-100, amount of blood in this decal, used for making footprints and affecting the alpha of bloody footprints var/mergeable_decal = TRUE //when two of these are on a same tile or do we need to merge them into just one? diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm index 4591d5d567..a8a76ad2a9 100644 --- a/code/game/objects/effects/decals/cleanable/misc.dm +++ b/code/game/objects/effects/decals/cleanable/misc.dm @@ -224,3 +224,11 @@ icon_state = "flour" color = "#C8A5DC" beauty = -200 + +/obj/effect/decal/cleanable/insectguts + name = "insect guts" + desc = "One bug squashed. Four more will rise in its place." + icon = 'icons/effects/blood.dmi' + icon_state = "xfloor1" + random_icon_states = list("xfloor1", "xfloor2", "xfloor3", "xfloor4", "xfloor5", "xfloor6", "xfloor7") + beauty = -300 diff --git a/code/game/objects/effects/decals/decal.dm b/code/game/objects/effects/decals/decal.dm index d26dbb72e7..eec91657a9 100644 --- a/code/game/objects/effects/decals/decal.dm +++ b/code/game/objects/effects/decals/decal.dm @@ -1,5 +1,6 @@ /obj/effect/decal name = "decal" + plane = FLOOR_PLANE anchored = TRUE resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF var/turf_loc_check = TRUE diff --git a/code/game/objects/effects/effect_system/effects_other.dm b/code/game/objects/effects/effect_system/effects_other.dm index 983c30da75..373ebc7667 100644 --- a/code/game/objects/effects/effect_system/effects_other.dm +++ b/code/game/objects/effects/effect_system/effects_other.dm @@ -88,8 +88,8 @@ auto_process = FALSE /datum/effect_system/trail_follow/ion/flight/set_dir(obj/effect/particle_effect/ion_trails/I) - if(istype(holder, /obj/item/device/flightpack)) - var/obj/item/device/flightpack/F = holder + if(istype(holder, /obj/item/flightpack)) + var/obj/item/flightpack/F = holder if(istype(F.wearer)) I.setDir(F.wearer.dir) diff --git a/code/game/objects/effects/forcefields.dm b/code/game/objects/effects/forcefields.dm index add653238e..ef074f4cec 100644 --- a/code/game/objects/effects/forcefields.dm +++ b/code/game/objects/effects/forcefields.dm @@ -27,11 +27,11 @@ ///////////Mimewalls/////////// /obj/effect/forcefield/mime - icon_state = "empty" + icon_state = "nothing" name = "invisible wall" desc = "You have a bad feeling about this." /obj/effect/forcefield/mime/advanced name = "invisible blockade" - desc = "You're goona be here a while." - timeleft = 600 \ No newline at end of file + desc = "You're gonna be here awhile." + timeleft = 600 diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm index 8dab6e4246..42d0f097d9 100644 --- a/code/game/objects/effects/glowshroom.dm +++ b/code/game/objects/effects/glowshroom.dm @@ -78,7 +78,7 @@ pixel_x = -32 icon_state = "[base_icon_state][rand(1,3)]" else //if on the floor, glowshroom on-floor sprite - icon_state = "[base_icon_state]f" + icon_state = base_icon_state addtimer(CALLBACK(src, .proc/Spread), delay) diff --git a/code/game/objects/effects/spawners/bombspawner.dm b/code/game/objects/effects/spawners/bombspawner.dm index e376795704..b1bb3e6b4d 100644 --- a/code/game/objects/effects/spawners/bombspawner.dm +++ b/code/game/objects/effects/spawners/bombspawner.dm @@ -1,46 +1,67 @@ +#define CELSIUS_TO_KELVIN(T_K) ((T_K) + T0C) + +#define OPTIMAL_TEMP_K_PLA_BURN_SCALE(PRESSURE_P,PRESSURE_O,TEMP_O) (((PRESSURE_P) * GLOB.meta_gas_info[/datum/gas/plasma][META_GAS_SPECIFIC_HEAT]) / (((PRESSURE_P) * GLOB.meta_gas_info[/datum/gas/plasma][META_GAS_SPECIFIC_HEAT] + (PRESSURE_O) * GLOB.meta_gas_info[/datum/gas/oxygen][META_GAS_SPECIFIC_HEAT]) / PLASMA_UPPER_TEMPERATURE - (PRESSURE_O) * GLOB.meta_gas_info[/datum/gas/oxygen][META_GAS_SPECIFIC_HEAT] / CELSIUS_TO_KELVIN(TEMP_O))) +#define OPTIMAL_TEMP_K_PLA_BURN_RATIO(PRESSURE_P,PRESSURE_O,TEMP_O) (CELSIUS_TO_KELVIN(TEMP_O) * PLASMA_OXYGEN_FULLBURN * (PRESSURE_P) / (PRESSURE_O)) + /obj/effect/spawner/newbomb name = "bomb" icon = 'icons/mob/screen_gen.dmi' icon_state = "x" - var/btemp1 = 1500 - var/btemp2 = 1000 // tank temperatures + var/temp_p = 1500 + var/temp_o = 1000 // tank temperatures + var/pressure_p = 10 * ONE_ATMOSPHERE + var/pressure_o = 10 * ONE_ATMOSPHERE //tank pressures var/assembly_type /obj/effect/spawner/newbomb/Initialize() . = ..() - var/obj/item/device/transfer_valve/V = new(src.loc) - var/obj/item/tank/internals/plasma/full/PT = new(V) + var/obj/item/transfer_valve/V = new(src.loc) + var/obj/item/tank/internals/plasma/PT = new(V) var/obj/item/tank/internals/oxygen/OT = new(V) - PT.air_contents.temperature = btemp1 + T0C - OT.air_contents.temperature = btemp2 + T0C + PT.air_contents.assert_gas(/datum/gas/plasma) + PT.air_contents.gases[/datum/gas/plasma][MOLES] = pressure_p*PT.volume/(R_IDEAL_GAS_EQUATION*CELSIUS_TO_KELVIN(temp_p)) + PT.air_contents.temperature = CELSIUS_TO_KELVIN(temp_p) + + OT.air_contents.assert_gas(/datum/gas/oxygen) + OT.air_contents.gases[/datum/gas/oxygen][MOLES] = pressure_o*OT.volume/(R_IDEAL_GAS_EQUATION*CELSIUS_TO_KELVIN(temp_o)) + OT.air_contents.temperature = CELSIUS_TO_KELVIN(temp_o) V.tank_one = PT V.tank_two = OT PT.master = V OT.master = V - + if(assembly_type) - var/obj/item/device/assembly/A = new assembly_type(V) + var/obj/item/assembly/A = new assembly_type(V) V.attached_device = A A.holder = V - A.toggle_secure() V.update_icon() - + return INITIALIZE_HINT_QDEL +/obj/effect/spawner/newbomb/timer/syndicate/Initialize() + temp_p = (OPTIMAL_TEMP_K_PLA_BURN_SCALE(pressure_p, pressure_o, temp_o)/2 + OPTIMAL_TEMP_K_PLA_BURN_RATIO(pressure_p, pressure_o, temp_o)/2) - T0C + . = ..() + /obj/effect/spawner/newbomb/timer - assembly_type = /obj/item/device/assembly/timer + assembly_type = /obj/item/assembly/timer /obj/effect/spawner/newbomb/timer/syndicate - btemp1 = 150 - btemp2 = 20 + pressure_o = TANK_LEAK_PRESSURE - 1 + temp_o = 20 + + pressure_p = TANK_LEAK_PRESSURE - 1 /obj/effect/spawner/newbomb/proximity - assembly_type = /obj/item/device/assembly/prox_sensor + assembly_type = /obj/item/assembly/prox_sensor /obj/effect/spawner/newbomb/radio - assembly_type = /obj/item/device/assembly/signaler - + assembly_type = /obj/item/assembly/signaler + +#undef CELSIUS_TO_KELVIN + +#undef OPTIMAL_TEMP_K_PLA_BURN_SCALE +#undef OPTIMAL_TEMP_K_PLA_BURN_RATIO diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index c03f632343..bd4237a9db 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -5,7 +5,7 @@ var/lootcount = 1 //how many items will be spawned var/lootdoubles = TRUE //if the same item can be spawned twice var/list/loot //a list of possible items to spawn e.g. list(/obj/item, /obj/structure, /obj/effect) - var/fan_out_items = FALSE //Whether the items should be distributed to offsets 0,3,-3,6,-6,9,-9.. This overrides pixel_x/y on the spawner itself + var/fan_out_items = FALSE //Whether the items should be distributed to offsets 0,1,-1,2,-2,3,-3.. This overrides pixel_x/y on the spawner itself /obj/effect/spawner/lootdrop/Initialize(mapload) ..() @@ -26,7 +26,7 @@ spawned_loot.pixel_y = pixel_y else if (loot_spawned) - spawned_loot.pixel_x = spawned_loot.pixel_y = ((!(loot_spawned%2)*loot_spawned/2)*-3)+((loot_spawned%2)*(loot_spawned+1)/2*3) + spawned_loot.pixel_x = spawned_loot.pixel_y = ((!(loot_spawned%2)*loot_spawned/2)*-1)+((loot_spawned%2)*(loot_spawned+1)/2*1) loot_spawned++ return INITIALIZE_HINT_QDEL @@ -193,7 +193,8 @@ /obj/item/aiModule/core/full/peacekeeper, /obj/item/aiModule/core/full/reporter, /obj/item/aiModule/core/full/robocop, - /obj/item/aiModule/core/full/liveandletlive + /obj/item/aiModule/core/full/liveandletlive, + /obj/item/aiModule/core/full/hulkamania ) /obj/effect/spawner/lootdrop/aimodule_harmful // These will get the shuttle called @@ -205,3 +206,115 @@ /obj/item/aiModule/core/full/thermurderdynamic, /obj/item/aiModule/core/full/damaged ) + +// Tech storage circuit board spawners +// For these, make sure that lootcount equals the number of list items + +/obj/effect/spawner/lootdrop/techstorage + name = "generic circuit board spawner" + lootdoubles = FALSE + fan_out_items = TRUE + +/obj/effect/spawner/lootdrop/techstorage/service + name = "service circuit board spawner" + lootcount = 10 + loot = list( + /obj/item/circuitboard/computer/arcade/battle, + /obj/item/circuitboard/computer/arcade/orion_trail, + /obj/item/circuitboard/machine/autolathe, + /obj/item/circuitboard/computer/mining, + /obj/item/circuitboard/machine/ore_redemption, + /obj/item/circuitboard/machine/mining_equipment_vendor, + /obj/item/circuitboard/machine/microwave, + /obj/item/circuitboard/machine/chem_dispenser/drinks, + /obj/item/circuitboard/machine/chem_dispenser/drinks/beer, + /obj/item/circuitboard/computer/slot_machine + ) + +/obj/effect/spawner/lootdrop/techstorage/rnd + name = "RnD circuit board spawner" + lootcount = 8 + loot = list( + /obj/item/circuitboard/computer/aifixer, + /obj/item/circuitboard/machine/rdserver, + /obj/item/circuitboard/computer/pandemic, + /obj/item/circuitboard/machine/mechfab, + /obj/item/circuitboard/machine/circuit_imprinter/department, + /obj/item/circuitboard/computer/teleporter, + /obj/item/circuitboard/machine/destructive_analyzer, + /obj/item/circuitboard/computer/rdconsole + ) + +/obj/effect/spawner/lootdrop/techstorage/security + name = "security circuit board spawner" + lootcount = 3 + loot = list( + /obj/item/circuitboard/computer/secure_data, + /obj/item/circuitboard/computer/security, + /obj/item/circuitboard/computer/prisoner + ) + +/obj/effect/spawner/lootdrop/techstorage/engineering + name = "engineering circuit board spawner" + lootcount = 3 + loot = list( + /obj/item/circuitboard/computer/atmos_alert, + /obj/item/circuitboard/computer/stationalert, + /obj/item/circuitboard/computer/powermonitor + ) + +/obj/effect/spawner/lootdrop/techstorage/tcomms + name = "tcomms circuit board spawner" + lootcount = 9 + loot = list( + /obj/item/circuitboard/computer/message_monitor, + /obj/item/circuitboard/machine/telecomms/broadcaster, + /obj/item/circuitboard/machine/telecomms/bus, + /obj/item/circuitboard/machine/telecomms/server, + /obj/item/circuitboard/machine/telecomms/receiver, + /obj/item/circuitboard/machine/telecomms/processor, + /obj/item/circuitboard/machine/announcement_system, + /obj/item/circuitboard/computer/comm_server, + /obj/item/circuitboard/computer/comm_monitor + ) + +/obj/effect/spawner/lootdrop/techstorage/medical + name = "medical circuit board spawner" + lootcount = 8 + loot = list( + /obj/item/circuitboard/computer/cloning, + /obj/item/circuitboard/machine/clonepod, + /obj/item/circuitboard/machine/chem_dispenser, + /obj/item/circuitboard/computer/scan_consolenew, + /obj/item/circuitboard/computer/med_data, + /obj/item/circuitboard/machine/smoke_machine, + /obj/item/circuitboard/machine/chem_master, + /obj/item/circuitboard/machine/clonescanner + ) + +/obj/effect/spawner/lootdrop/techstorage/AI + name = "secure AI circuit board spawner" + lootcount = 3 + loot = list( + /obj/item/circuitboard/computer/aiupload, + /obj/item/circuitboard/computer/borgupload, + /obj/item/circuitboard/aicore + ) + +/obj/effect/spawner/lootdrop/techstorage/command + name = "secure command circuit board spawner" + lootcount = 3 + loot = list( + /obj/item/circuitboard/computer/crew, + /obj/item/circuitboard/computer/communications, + /obj/item/circuitboard/computer/card + ) + +/obj/effect/spawner/lootdrop/techstorage/RnD_secure + name = "secure RnD circuit board spawner" + lootcount = 3 + loot = list( + /obj/item/circuitboard/computer/mecha_control, + /obj/item/circuitboard/computer/apc_control, + /obj/item/circuitboard/computer/robotics + ) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 46a6d961d4..13b58933ac 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -100,7 +100,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) var/force_string //string form of an item's force. Edit this var only to set a custom force string var/last_force_string_check = 0 var/tip_timer - + var/icon_override //CIT CHANGE - adds icon_override var. Will be removed with #4322 var/trigger_guard = TRIGGER_GUARD_NONE @@ -146,9 +146,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) QDEL_NULL(rpg_loot) return ..() -/obj/item/device - icon = 'icons/obj/device.dmi' - /obj/item/proc/check_allowed_items(atom/target, not_inside, target_self) if(((src in target) && !target_self) || (!isturf(target.loc) && !isturf(target) && not_inside)) return 0 @@ -352,7 +349,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) return ITALICS | REDUCE_RANGE /obj/item/proc/dropped(mob/user) - SendSignal(COMSIG_ITEM_DROPPED, user) for(var/X in actions) var/datum/action/A = X A.Remove(user) @@ -385,7 +381,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) //sometimes we only want to grant the item's action if it's equipped in a specific slot. /obj/item/proc/item_action_slot_check(slot, mob/user) - if(slot == slot_in_backpack || slot == slot_legcuffed) //these aren't true slots, so avoid granting actions there + if(slot == SLOT_IN_BACKPACK || slot == SLOT_LEGCUFFED) //these aren't true slots, so avoid granting actions there return FALSE return TRUE @@ -449,17 +445,17 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) if(isbrain(M)) to_chat(user, "You cannot locate any organic eyes on this brain!") return - + if(user.getStaminaLoss() >= STAMINA_SOFTCRIT)//CIT CHANGE - makes eyestabbing impossible if you're in stamina softcrit to_chat(user, "You're too exhausted for that.")//CIT CHANGE - ditto return //CIT CHANGE - ditto - + src.add_fingerprint(user) playsound(loc, src.hitsound, 30, 1, -1) user.do_attack_animation(M) - + user.adjustStaminaLossBuffered(10)//CIT CHANGE - makes eyestabbing cost stamina if(M != user) @@ -549,29 +545,29 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) return var/mob/owner = loc var/flags = slot_flags - if(flags & SLOT_OCLOTHING) + if(flags & ITEM_SLOT_OCLOTHING) owner.update_inv_wear_suit() - if(flags & SLOT_ICLOTHING) + if(flags & ITEM_SLOT_ICLOTHING) owner.update_inv_w_uniform() - if(flags & SLOT_GLOVES) + if(flags & ITEM_SLOT_GLOVES) owner.update_inv_gloves() - if(flags & SLOT_EYES) + if(flags & ITEM_SLOT_EYES) owner.update_inv_glasses() - if(flags & SLOT_EARS) + if(flags & ITEM_SLOT_EARS) owner.update_inv_ears() - if(flags & SLOT_MASK) + if(flags & ITEM_SLOT_MASK) owner.update_inv_wear_mask() - if(flags & SLOT_HEAD) + if(flags & ITEM_SLOT_HEAD) owner.update_inv_head() - if(flags & SLOT_FEET) + if(flags & ITEM_SLOT_FEET) owner.update_inv_shoes() - if(flags & SLOT_ID) + if(flags & ITEM_SLOT_ID) owner.update_inv_wear_id() - if(flags & SLOT_BELT) + if(flags & ITEM_SLOT_BELT) owner.update_inv_belt() - if(flags & SLOT_BACK) + if(flags & ITEM_SLOT_BACK) owner.update_inv_back() - if(flags & SLOT_NECK) + if(flags & ITEM_SLOT_NECK) owner.update_inv_neck() /obj/item/proc/is_hot() @@ -596,7 +592,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) if(ismob(location)) var/mob/M = location var/success = FALSE - if(src == M.get_item_by_slot(slot_wear_mask)) + if(src == M.get_item_by_slot(SLOT_WEAR_MASK)) success = TRUE if(success) location = get_turf(M) @@ -770,3 +766,18 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) // Returns a numeric value for sorting items used as parts in machines, so they can be replaced by the rped /obj/item/proc/get_part_rating() return 0 + +/obj/item/doMove(atom/destination) + if (ismob(loc)) + var/mob/M = loc + var/hand_index = M.get_held_index_of_item(src) + if(hand_index) + M.held_items[hand_index] = null + M.update_inv_hands() + if(M.client) + M.client.screen -= src + layer = initial(layer) + plane = initial(plane) + appearance_flags &= ~NO_CLIENT_COLOR + dropped(M) + return ..() diff --git a/code/game/objects/items/AI_modules.dm b/code/game/objects/items/AI_modules.dm index 528e516408..5d83f3ac1e 100644 --- a/code/game/objects/items/AI_modules.dm +++ b/code/game/objects/items/AI_modules.dm @@ -568,3 +568,9 @@ AI MODULES laws += generate_ion_law() ..() laws = list() + +/******************H.O.G.A.N.***************/ + +/obj/item/aiModule/core/full/hulkamania + name = "'H.O.G.A.N.' Core AI Module" + law_id = "hulkamania" diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm index 12360ec353..7c54acbca9 100644 --- a/code/game/objects/items/RCD.dm +++ b/code/game/objects/items/RCD.dm @@ -636,7 +636,7 @@ RLD if(useResource(launchcost, user)) activate() to_chat(user, "You fire a glowstick!") - var/obj/item/device/flashlight/glowstick/G = new /obj/item/device/flashlight/glowstick(start) + var/obj/item/flashlight/glowstick/G = new /obj/item/flashlight/glowstick(start) G.color = color_choice G.light_color = G.color G.throw_at(A, 9, 3, user) diff --git a/code/game/objects/items/RPD.dm b/code/game/objects/items/RPD.dm index b005d0dd64..2c977e9d09 100644 --- a/code/game/objects/items/RPD.dm +++ b/code/game/objects/items/RPD.dm @@ -138,7 +138,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( return "makepipe=[id]&type=[dirtype]" /datum/pipe_info/meter - icon_state = "meterX" + icon_state = "meter" dirtype = PIPE_ONEDIR /datum/pipe_info/meter/New(label) @@ -228,7 +228,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) - var/datum/asset/assets = get_asset_datum(/datum/asset/simple/icon_states/multiple_icons/pipes) + var/datum/asset/assets = get_asset_datum(/datum/asset/spritesheet/pipes) assets.send(user) ui = new(user, src, ui_key, "rpd", name, 300, 550, master_ui, state) diff --git a/code/game/objects/items/airlock_painter.dm b/code/game/objects/items/airlock_painter.dm index 36d2c068c6..8d9fab4f38 100644 --- a/code/game/objects/items/airlock_painter.dm +++ b/code/game/objects/items/airlock_painter.dm @@ -10,14 +10,14 @@ materials = list(MAT_METAL=50, MAT_GLASS=50) flags_1 = CONDUCT_1 | NOBLUDGEON_1 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT usesound = 'sound/effects/spray2.ogg' - var/obj/item/device/toner/ink = null + var/obj/item/toner/ink = null /obj/item/airlock_painter/New() ..() - ink = new /obj/item/device/toner(src) + ink = new /obj/item/toner(src) //This proc doesn't just check if the painter can be used, but also uses it. //Only call this if you are certain that the painter will be used right after this check! @@ -105,7 +105,7 @@ /obj/item/airlock_painter/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/device/toner)) + if(istype(W, /obj/item/toner)) if(ink) to_chat(user, "[src] already contains \a [ink].") return diff --git a/code/game/objects/items/apc_frame.dm b/code/game/objects/items/apc_frame.dm index 5048f6ed2d..87b90d5b8f 100644 --- a/code/game/objects/items/apc_frame.dm +++ b/code/game/objects/items/apc_frame.dm @@ -104,8 +104,7 @@ to_chat(user, "There is another network terminal here!") return else - var/obj/item/stack/cable_coil/C = new /obj/item/stack/cable_coil(T) - C.amount = 10 + new /obj/item/stack/cable_coil(T, 10) to_chat(user, "You cut the cables and disassemble the unused power terminal.") qdel(E) return TRUE diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 08e6204c63..ea332c77de 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -97,7 +97,7 @@ item_state = "card-id" lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi' - slot_flags = SLOT_ID + slot_flags = ITEM_SLOT_ID armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) resistance_flags = FIRE_PROOF | ACID_PROOF var/mining_points = 0 //For redeeming at mining equipment vendors diff --git a/code/game/objects/items/chrono_eraser.dm b/code/game/objects/items/chrono_eraser.dm index 107e4eb5db..d861b515f8 100644 --- a/code/game/objects/items/chrono_eraser.dm +++ b/code/game/objects/items/chrono_eraser.dm @@ -9,7 +9,7 @@ lefthand_file = 'icons/mob/inhands/equipment/backpack_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/backpack_righthand.dmi' w_class = WEIGHT_CLASS_BULKY - slot_flags = SLOT_BACK + slot_flags = ITEM_SLOT_BACK slowdown = 1 actions_types = list(/datum/action/item_action/equip_unequip_TED_Gun) var/obj/item/gun/energy/chrono_gun/PA = null @@ -38,7 +38,7 @@ user.put_in_hands(PA) /obj/item/chrono_eraser/item_action_slot_check(slot, mob/user) - if(slot == slot_back) + if(slot == SLOT_BACK) return 1 /obj/item/gun/energy/chrono_gun diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 9ecafd7a8a..0fd16a95bd 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -86,7 +86,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM ..() /obj/item/proc/help_light_cig(mob/living/M) - var/mask_item = M.get_item_by_slot(slot_wear_mask) + var/mask_item = M.get_item_by_slot(SLOT_WEAR_MASK) if(istype(mask_item, /obj/item/clothing/mask/cigarette)) return mask_item @@ -129,7 +129,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM reagents.add_reagent_list(list_reagents) if(starts_lit) light() - AddComponent(/datum/component/knockoff,90,list(BODY_ZONE_PRECISE_MOUTH),list(slot_wear_mask))//90% to knock off when wearing a mask + AddComponent(/datum/component/knockoff,90,list(BODY_ZONE_PRECISE_MOUTH),list(SLOT_WEAR_MASK))//90% to knock off when wearing a mask /obj/item/clothing/mask/cigarette/Destroy() STOP_PROCESSING(SSobj, src) @@ -314,6 +314,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM src.pixel_x = rand(-5, 5) src.pixel_y = rand(-5, 5) +/obj/item/clothing/mask/cigarette/rollie/nicotine + list_reagents = list("nicotine" = 15) + /obj/item/clothing/mask/cigarette/rollie/trippy list_reagents = list("nicotine" = 15, "mushroomhallucinogen" = 35) starts_lit = TRUE @@ -486,7 +489,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM item_state = "zippo" w_class = WEIGHT_CLASS_TINY flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT var/lit = 0 var/fancy = TRUE heat = 1500 @@ -706,7 +709,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM to_chat(user, "You close the cap on [src].") cut_overlays() - if(istype(O, /obj/item/device/multitool)) + if(istype(O, /obj/item/multitool)) if(screw && !(obj_flags & EMAGGED))//also kinky if(!super) cut_overlays() @@ -746,7 +749,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM return /obj/item/clothing/mask/vape/equipped(mob/user, slot) - if(slot == slot_wear_mask) + if(slot == SLOT_WEAR_MASK) if(!screw) to_chat(user, "You start puffing on the vape.") reagents.set_reacting(TRUE) @@ -756,7 +759,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/vape/dropped(mob/user) var/mob/living/carbon/C = user - if(C.get_item_by_slot(slot_wear_mask) == src) + if(C.get_item_by_slot(SLOT_WEAR_MASK) == src) reagents.set_reacting(FALSE) STOP_PROCESSING(SSobj, src) diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm index 4ca1c82f25..8053c00daf 100644 --- a/code/game/objects/items/circuitboards/computer_circuitboards.dm +++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm @@ -154,6 +154,10 @@ name = "Labor Camp teleporter console (Computer Board)" build_path = /obj/machinery/computer/gulag_teleporter_computer +/obj/item/circuitboard/computer/rdconsole/production + name = "R&D Console Production Only (Computer Board)" + build_path = /obj/machinery/computer/rdconsole/production + /obj/item/circuitboard/computer/rdconsole name = "R&D Console (Computer Board)" build_path = /obj/machinery/computer/rdconsole/core @@ -224,10 +228,6 @@ name = "Supply Request Console (Computer Board)" build_path = /obj/machinery/computer/cargo/request -/obj/item/circuitboard/computer/stockexchange - name = "circuit board (Stock Exchange Console)" - build_path = /obj/machinery/computer/stockexchange - /obj/item/circuitboard/computer/operating name = "Operating Computer (Computer Board)" build_path = /obj/machinery/computer/operating diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index 0f10c46097..c4aa6f52cc 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -204,6 +204,7 @@ /obj/item/circuitboard/machine/vendor name = "Booze-O-Mat Vendor (Machine Board)" + desc = "You can turn the \"brand selection\" dial using a screwdriver." build_path = /obj/machinery/vending/boozeomat req_components = list( /obj/item/vending_refill/boozeomat = 3) @@ -449,7 +450,7 @@ /obj/item/stock_parts/matter_bin = 1, /obj/item/stock_parts/micro_laser = 1, /obj/item/stock_parts/manipulator = 1, - /obj/item/device/assembly/igniter = 1) + /obj/item/assembly/igniter = 1) needs_anchored = FALSE /obj/item/circuitboard/machine/mining_equipment_vendor @@ -650,6 +651,7 @@ /obj/item/circuitboard/machine/chem_master name = "ChemMaster 3000 (Machine Board)" build_path = /obj/machinery/chem_master + desc = "You can turn the \"mode selection\" dial using a screwdriver." req_components = list( /obj/item/reagent_containers/glass/beaker = 2, /obj/item/stock_parts/manipulator = 1, @@ -839,6 +841,13 @@ /obj/item/stack/sheet/glass = 1, /obj/item/vending_refill/donksoft = 3) +/obj/item/circuitboard/machine/vending/syndicatedonksofttoyvendor + name = "Syndicate Donksoft Toy Vendor (Machine Board)" + build_path = /obj/machinery/vending/toyliberationstation + req_components = list( + /obj/item/stack/sheet/glass = 1, + /obj/item/vending_refill/donksoft = 3) + /obj/item/circuitboard/machine/dish_drive name = "Dish Drive (Machine Board)" build_path = /obj/machinery/dish_drive @@ -864,3 +873,17 @@ return transmit = !transmit to_chat(user, "You [transmit ? "enable" : "disable"] the board's automatic disposal transmission.") + +/obj/item/circuitboard/machine/stacking_unit_console + name = "Stacking Machine Console (Machine Board)" + build_path = /obj/machinery/mineral/stacking_unit_console + req_components = list( + /obj/item/stack/sheet/glass = 2, + /obj/item/stack/cable_coil = 5) + +/obj/item/circuitboard/machine/stacking_machine + name = "Stacking Machine (Machine Board)" + build_path = /obj/machinery/mineral/stacking_machine + req_components = list( + /obj/item/stock_parts/manipulator = 2, + /obj/item/stock_parts/matter_bin = 2) diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm index 515dab5e27..fa5748c1d9 100644 --- a/code/game/objects/items/clown_items.dm +++ b/code/game/objects/items/clown_items.dm @@ -116,8 +116,9 @@ . = ..() AddComponent(/datum/component/squeak, list('sound/items/bikehorn.ogg'=1), 50) -/obj/item/weapon/bikehorn/attack(mob/living/carbon/M, mob/living/carbon/user) +/obj/item/bikehorn/attack(mob/living/carbon/M, mob/living/carbon/user) M.SendSignal(COMSIG_ADD_MOOD_EVENT, "honk", /datum/mood_event/honk) + return ..() /obj/item/bikehorn/suicide_act(mob/user) user.visible_message("[user] solemnly points the horn at [user.p_their()] temple! It looks like [user.p_theyre()] trying to commit suicide!") diff --git a/code/game/objects/items/control_wand.dm b/code/game/objects/items/control_wand.dm index ce674ceb94..d389679e2b 100644 --- a/code/game/objects/items/control_wand.dm +++ b/code/game/objects/items/control_wand.dm @@ -43,13 +43,13 @@ switch(mode) if(WAND_OPEN) - data.plaintext_data = "open" + data.data["data"] = "open" if(WAND_BOLT) - data.plaintext_data = "bolt" + data.data["data"] = "bolt" if(WAND_EMERGENCY) - data.plaintext_data = "emergency" + data.data["data"] = "emergency" - data.plaintext_data_secondary = "toggle" + data.data["data_secondary"] = "toggle" data.passkey = access_list ntnet_send(data) diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 7480f7b489..a9b5924a71 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -247,6 +247,8 @@ var/cost = 1 if(paint_mode == PAINT_LARGE_HORIZONTAL) cost = 5 + if(istype(target, /obj/item/canvas)) + cost = 0 var/charges_used = use_charges(user, cost) if(!charges_used) return diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index 47d7b1e525..875b25a9a5 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -9,7 +9,7 @@ item_state = "defibunit" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' - slot_flags = SLOT_BACK + slot_flags = ITEM_SLOT_BACK force = 5 throwforce = 6 w_class = WEIGHT_CLASS_BULKY @@ -46,11 +46,11 @@ update_charge() /obj/item/defibrillator/proc/update_power() - if(cell) - if(cell.charge < paddles.revivecost) + if(!QDELETED(cell)) + if(QDELETED(paddles) || cell.charge < paddles.revivecost) powered = FALSE else - powered = 1 + powered = TRUE else powered = FALSE @@ -67,7 +67,7 @@ /obj/item/defibrillator/proc/update_charge() if(powered) //so it doesn't show charge if it's unpowered - if(cell) + if(!QDELETED(cell)) var/ratio = cell.charge / cell.maxcharge ratio = CEILING(ratio*4, 1) * 25 add_overlay("[initial(icon_state)]-charge[ratio]") @@ -83,14 +83,14 @@ //ATTACK HAND IGNORING PARENT RETURN VALUE /obj/item/defibrillator/attack_hand(mob/user) if(loc == user) - if(slot_flags == SLOT_BACK) - if(user.get_item_by_slot(slot_back) == src) + if(slot_flags == ITEM_SLOT_BACK) + if(user.get_item_by_slot(SLOT_BACK) == src) ui_action_click() else to_chat(user, "Put the defibrillator on your back first!") - else if(slot_flags == SLOT_BELT) - if(user.get_item_by_slot(slot_belt) == src) + else if(slot_flags == ITEM_SLOT_BELT) + if(user.get_item_by_slot(SLOT_BELT) == src) ui_action_click() else to_chat(user, "Strap the defibrillator's belt on first!") @@ -170,7 +170,6 @@ to_chat(user, "You need a free hand to hold the paddles!") update_icon() return - paddles.forceMove(user) else //Remove from their hands and back onto the defib unit paddles.unwield() @@ -186,7 +185,7 @@ /obj/item/defibrillator/equipped(mob/user, slot) ..() - if((slot_flags == SLOT_BACK && slot != slot_back) || (slot_flags == SLOT_BELT && slot != slot_belt)) + if((slot_flags == ITEM_SLOT_BACK && slot != SLOT_BACK) || (slot_flags == ITEM_SLOT_BELT && slot != SLOT_BELT)) remove_paddles(user) update_icon() @@ -239,7 +238,7 @@ icon_state = "defibcompact" item_state = "defibcompact" w_class = WEIGHT_CLASS_NORMAL - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT /obj/item/defibrillator/compact/item_action_slot_check(slot, mob/user) if(slot == user.getBeltSlot()) @@ -276,8 +275,8 @@ name = "defibrillator paddles" desc = "A pair of plastic-gripped paddles with flat metal surfaces that are used to deliver powerful electric shocks." icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "defibpaddles" - item_state = "defibpaddles" + icon_state = "defibpaddles0" + item_state = "defibpaddles0" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index c6065cdd8c..093ee1c4b7 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -9,8 +9,9 @@ GLOBAL_LIST_EMPTY(PDAs) #define PDA_SCANNER_REAGENT 3 #define PDA_SCANNER_HALOGEN 4 #define PDA_SCANNER_GAS 5 +#define PDA_SPAM_DELAY 2 MINUTES -/obj/item/device/pda +/obj/item/pda name = "\improper PDA" desc = "A portable microcomputer by Thinktronic Systems, LTD. Functionality determined by a preprogrammed ROM cartridge." icon = 'icons/obj/pda.dmi' @@ -20,7 +21,7 @@ GLOBAL_LIST_EMPTY(PDAs) righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' flags_1 = NOBLUDGEON_1 w_class = WEIGHT_CLASS_TINY - slot_flags = SLOT_ID | SLOT_BELT + slot_flags = ITEM_SLOT_ID | ITEM_SLOT_BELT armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) resistance_flags = FIRE_PROOF | ACID_PROOF @@ -52,6 +53,7 @@ GLOBAL_LIST_EMPTY(PDAs) var/toff = FALSE //If TRUE, messenger disabled var/tnote = null //Current Texts var/last_text //No text spamming + var/last_everyone //No text for everyone spamming var/last_noise //Also no honk spamming that's bad too var/ttone = "beep" //The ringtone! var/lock_code = "" // Lockcode to unlock uplink @@ -68,17 +70,17 @@ GLOBAL_LIST_EMPTY(PDAs) var/obj/item/card/id/id = null //Making it possible to slot an ID card into the PDA so it can function as both. var/ownjob = null //related to above - var/obj/item/device/paicard/pai = null // A slot for a personal AI device + var/obj/item/paicard/pai = null // A slot for a personal AI device var/icon/photo //Scanned photo - var/list/contained_item = list(/obj/item/pen, /obj/item/toy/crayon, /obj/item/lipstick, /obj/item/device/flashlight/pen, /obj/item/clothing/mask/cigarette) + var/list/contained_item = list(/obj/item/pen, /obj/item/toy/crayon, /obj/item/lipstick, /obj/item/flashlight/pen, /obj/item/clothing/mask/cigarette) var/obj/item/inserted_item //Used for pen, crayon, and lipstick insertion or removal. Same as above. var/overlays_x_offset = 0 //x offset to use for certain overlays var/underline_flag = TRUE //flag for underline -/obj/item/device/pda/suicide_act(mob/living/carbon/user) +/obj/item/pda/suicide_act(mob/living/carbon/user) var/deathMessage = msg_input(user) if (!deathMessage) deathMessage = "i ded" @@ -86,14 +88,14 @@ GLOBAL_LIST_EMPTY(PDAs) tnote += "→ To The Grim Reaper:
[deathMessage]
"//records a message in their PDA as being sent to the grim reaper return BRUTELOSS -/obj/item/device/pda/examine(mob/user) +/obj/item/pda/examine(mob/user) ..() if(!id && !inserted_item) return else to_chat(user, "Alt-click to remove contents.") -/obj/item/device/pda/Initialize() +/obj/item/pda/Initialize() . = ..() if(fon) set_light(f_lum) @@ -107,7 +109,7 @@ GLOBAL_LIST_EMPTY(PDAs) inserted_item = new /obj/item/pen(src) update_icon() -/obj/item/device/pda/equipped(mob/user, slot) +/obj/item/pda/equipped(mob/user, slot) . = ..() if(!equipped) if(user.client) @@ -130,19 +132,19 @@ GLOBAL_LIST_EMPTY(PDAs) font_mode = FONT_MONO equipped = TRUE -/obj/item/device/pda/proc/update_label() +/obj/item/pda/proc/update_label() name = "PDA-[owner] ([ownjob])" //Name generalisation -/obj/item/device/pda/GetAccess() +/obj/item/pda/GetAccess() if(id) return id.GetAccess() else return ..() -/obj/item/device/pda/GetID() +/obj/item/pda/GetID() return id -/obj/item/device/pda/update_icon() +/obj/item/pda/update_icon() cut_overlays() var/mutable_appearance/overlay = new() overlay.pixel_x = overlays_x_offset @@ -163,33 +165,33 @@ GLOBAL_LIST_EMPTY(PDAs) overlay.icon_state = "pai_off_overlay" add_overlay(new /mutable_appearance(overlay)) -/obj/item/device/pda/MouseDrop(obj/over_object, src_location, over_location) +/obj/item/pda/MouseDrop(obj/over_object, src_location, over_location) var/mob/M = usr if((!istype(over_object, /obj/screen)) && usr.canUseTopic(src)) return attack_self(M) return ..() -/obj/item/device/pda/attack_self(mob/user) +/obj/item/pda/attack_self(mob/user) if(!user.IsAdvancedToolUser()) to_chat(user, "You don't have the dexterity to do this!") return . = ..() - var/datum/asset/assets = get_asset_datum(/datum/asset/simple/pda) + var/datum/asset/spritesheet/assets = get_asset_datum(/datum/asset/spritesheet/simple/pda) assets.send(user) user.set_machine(src) var/dat = "Personal Data Assistant" + dat += assets.css_tag() - - dat += "Refresh" + dat += "[PDAIMG(refresh)]Refresh" if ((!isnull(cartridge)) && (mode == 0)) - dat += " | Eject [cartridge]" + dat += " | [PDAIMG(eject)]Eject [cartridge]" if (mode) - dat += " | Return" + dat += " | [PDAIMG(menu)]Return" if (mode == 0) dat += "
" @@ -203,7 +205,7 @@ GLOBAL_LIST_EMPTY(PDAs) if (!owner) dat += "Warning: No owner information entered. Please swipe card.

" - dat += "Retry" + dat += "[PDAIMG(refresh)]Retry" else switch (mode) if (0) @@ -219,38 +221,38 @@ GLOBAL_LIST_EMPTY(PDAs) dat += "

General Functions

" dat += "" if (cartridge.access & CART_ENGINE) dat += "

Engineering Functions

" dat += "" if (cartridge.access & CART_MEDICAL) dat += "

Medical Functions

" dat += "" if (cartridge.access & CART_SECURITY) dat += "

Security Functions

" dat += "" if(cartridge.access & CART_QUARTERMASTER) dat += "

Quartermaster Functions:

" dat += "" dat += "" @@ -258,25 +260,25 @@ GLOBAL_LIST_EMPTY(PDAs) dat += "" if (1) - dat += "

Notekeeper V2.2

" + dat += "

[PDAIMG(notes)] Notekeeper V2.2

" dat += "Edit
" if(notescanned) dat += "(This is a scanned image, editing it may cause some text formatting to change.)
" dat += "
[(!notehtml ? note : notehtml)]" if (2) - dat += "

SpaceMessenger V3.9.6

" - dat += "Ringer: [silent == 1 ? "Off" : "On"] | " - dat += "Send / Receive: [toff == 1 ? "Off" : "On"] | " - dat += "Set Ringtone | " - dat += "Messages
" + dat += "

[PDAIMG(mail)] SpaceMessenger V3.9.6

" + dat += "[PDAIMG(bell)]Ringer: [silent == 1 ? "Off" : "On"] | " + dat += "[PDAIMG(mail)]Send / Receive: [toff == 1 ? "Off" : "On"] | " + dat += "[PDAIMG(bell)]Set Ringtone | " + dat += "[PDAIMG(mail)]Messages
" if(cartridge) dat += cartridge.message_header() - dat += "

Detected PDAs

" + dat += "

[PDAIMG(menu)] Detected PDAs

" dat += "
    " var/count = 0 if (!toff) - for (var/obj/item/device/pda/P in sortNames(get_viewable_pdas())) + for (var/obj/item/pda/P in sortNames(get_viewable_pdas())) if (P == src) continue dat += "
  • [P]" @@ -324,16 +326,16 @@ GLOBAL_LIST_EMPTY(PDAs) dat += "Send To All" if(21) - dat += "

    SpaceMessenger V3.9.6

    " - dat += "Clear Messages" + dat += "

    [PDAIMG(mail)] SpaceMessenger V3.9.6

    " + dat += "[PDAIMG(blank)]Clear Messages" - dat += "

    Messages

    " + dat += "

    [PDAIMG(mail)] Messages

    " dat += tnote dat += "
    " if (3) - dat += "

    Atmospheric Readings

    " + dat += "

    [PDAIMG(atmos)] Atmospheric Readings

    " var/turf/T = user.loc if (isnull(T)) @@ -368,7 +370,7 @@ GLOBAL_LIST_EMPTY(PDAs) user << browse(dat, "window=pda;size=400x450;border=1;can_resize=1;can_minimize=0") onclose(user, "pda", src) -/obj/item/device/pda/Topic(href, href_list) +/obj/item/pda/Topic(href, href_list) ..() var/mob/living/U = usr //Looking for master was kind of pointless since PDAs don't appear to have one. @@ -586,7 +588,7 @@ GLOBAL_LIST_EMPTY(PDAs) U << browse(null, "window=pda") return -/obj/item/device/pda/proc/remove_id() +/obj/item/pda/proc/remove_id() if (id) if (ismob(loc)) var/mob/M = loc @@ -597,7 +599,7 @@ GLOBAL_LIST_EMPTY(PDAs) id = null update_icon() -/obj/item/device/pda/proc/msg_input(mob/living/U = usr) +/obj/item/pda/proc/msg_input(mob/living/U = usr) var/t = stripped_input(U, "Please enter message", name) if (!t || toff) return @@ -609,16 +611,17 @@ GLOBAL_LIST_EMPTY(PDAs) t = Gibberish(t, 100) return t -/obj/item/device/pda/proc/send_message(mob/living/user, list/obj/item/device/pda/targets) +/obj/item/pda/proc/send_message(mob/living/user, list/obj/item/pda/targets, everyone) var/message = msg_input(user) if(!message || !targets.len) return - if(last_text && world.time < last_text + 5) + if((last_text && world.time < last_text + 10) || (everyone && last_everyone && world.time < last_everyone + PDA_SPAM_DELAY)) return - + if(prob(1)) + message += "\nSent from my PDA" // Send the signal var/list/string_targets = list() - for (var/obj/item/device/pda/P in targets) + for (var/obj/item/pda/P in targets) if (P.owner && P.ownjob) // != src is checked by the UI string_targets += "[P.owner] ([P.ownjob])" for (var/obj/machinery/computer/message_monitor/M in targets) @@ -658,8 +661,11 @@ GLOBAL_LIST_EMPTY(PDAs) to_chat(user, "Message sent to [target_text]: \"[message]\"") // Reset the photo photo = null + last_text = world.time + if (everyone) + last_everyone = world.time -/obj/item/device/pda/proc/receive_message(datum/signal/subspace/pda/signal) +/obj/item/pda/proc/receive_message(datum/signal/subspace/pda/signal) tnote += "← From [signal.data["name"]] ([signal.data["job"]]):
    [signal.format_message()]
    " if (!silent) @@ -685,13 +691,16 @@ GLOBAL_LIST_EMPTY(PDAs) update_icon() add_overlay(icon_alert) -/obj/item/device/pda/proc/send_to_all(mob/living/U) - send_message(U,get_viewable_pdas()) +/obj/item/pda/proc/send_to_all(mob/living/U) + if (last_everyone && world.time < last_everyone + PDA_SPAM_DELAY) + to_chat(U,"Send To All function is still on cooldown.") + return + send_message(U,get_viewable_pdas(), TRUE) -/obj/item/device/pda/proc/create_message(mob/living/U, obj/item/device/pda/P) +/obj/item/pda/proc/create_message(mob/living/U, obj/item/pda/P) send_message(U,list(P)) -/obj/item/device/pda/AltClick() +/obj/item/pda/AltClick() ..() if(issilicon(usr)) @@ -703,7 +712,7 @@ GLOBAL_LIST_EMPTY(PDAs) else remove_pen() -/obj/item/device/pda/verb/verb_remove_id() +/obj/item/pda/verb/verb_remove_id() set category = "Object" set name = "Eject ID" set src in usr @@ -717,7 +726,7 @@ GLOBAL_LIST_EMPTY(PDAs) else to_chat(usr, "This PDA does not have an ID in it!") -/obj/item/device/pda/verb/verb_remove_pen() +/obj/item/pda/verb/verb_remove_pen() set category = "Object" set name = "Remove Pen" set src in usr @@ -728,13 +737,13 @@ GLOBAL_LIST_EMPTY(PDAs) if (usr.canUseTopic(src)) remove_pen() -/obj/item/device/pda/proc/remove_pen() +/obj/item/pda/proc/remove_pen() if(inserted_item) if(ismob(loc)) var/mob/M = loc M.put_in_hands(inserted_item) else - inserted_item.forceMove(get_turf(src)) + inserted_item.forceMove(drop_location()) to_chat(usr, "You remove \the [inserted_item] from \the [src].") inserted_item = null update_icon() @@ -742,7 +751,7 @@ GLOBAL_LIST_EMPTY(PDAs) to_chat(usr, "This PDA does not have a pen in it!") //trying to insert or remove an id -/obj/item/device/pda/proc/id_check(mob/user, obj/item/card/id/I) +/obj/item/pda/proc/id_check(mob/user, obj/item/card/id/I) if(!I) if(id) remove_id() @@ -763,7 +772,7 @@ GLOBAL_LIST_EMPTY(PDAs) return 1 // access to status display signals -/obj/item/device/pda/attackby(obj/item/C, mob/user, params) +/obj/item/pda/attackby(obj/item/C, mob/user, params) if(istype(C, /obj/item/cartridge) && !cartridge) if(!user.transferItemToLoc(C, src)) return @@ -791,7 +800,7 @@ GLOBAL_LIST_EMPTY(PDAs) updateSelfDialog()//Update self dialog on success. return //Return in case of failed check or when successful. updateSelfDialog()//For the non-input related code. - else if(istype(C, /obj/item/device/paicard) && !src.pai) + else if(istype(C, /obj/item/paicard) && !src.pai) if(!user.transferItemToLoc(C, src)) return pai = C @@ -814,7 +823,7 @@ GLOBAL_LIST_EMPTY(PDAs) else return ..() -/obj/item/device/pda/attack(mob/living/carbon/C, mob/living/user) +/obj/item/pda/attack(mob/living/carbon/C, mob/living/user) if(istype(C)) switch(scanmode) @@ -832,7 +841,7 @@ GLOBAL_LIST_EMPTY(PDAs) else user.show_message("No radiation detected.") -/obj/item/device/pda/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity) +/obj/item/pda/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity) if(!proximity) return switch(scanmode) @@ -886,7 +895,7 @@ GLOBAL_LIST_EMPTY(PDAs) to_chat(user, "Paper scanned. Saved to PDA's notekeeper." ) -/obj/item/device/pda/proc/explode() //This needs tuning. +/obj/item/pda/proc/explode() //This needs tuning. if(!detonatable) return var/turf/T = get_turf(src) @@ -906,7 +915,7 @@ GLOBAL_LIST_EMPTY(PDAs) qdel(src) return -/obj/item/device/pda/Destroy() +/obj/item/pda/Destroy() GLOB.PDAs -= src if(istype(id)) QDEL_NULL(id) @@ -928,7 +937,7 @@ GLOBAL_LIST_EMPTY(PDAs) to_chat(user, "Turn on your receiver in order to send messages.") return - for (var/obj/item/device/pda/P in get_viewable_pdas()) + for (var/obj/item/pda/P in get_viewable_pdas()) if (P == src) continue else if (P == src.aiPDA) @@ -989,7 +998,7 @@ GLOBAL_LIST_EMPTY(PDAs) // Pass along the pulse to atoms in contents, largely added so pAIs are vulnerable to EMP -/obj/item/device/pda/emp_act(severity) +/obj/item/pda/emp_act(severity) for(var/atom/A in src) A.emp_act(severity) emped += 1 @@ -999,7 +1008,7 @@ GLOBAL_LIST_EMPTY(PDAs) /proc/get_viewable_pdas() . = list() // Returns a list of PDAs which can be viewed from another PDA/message monitor. - for(var/obj/item/device/pda/P in GLOB.PDAs) + for(var/obj/item/pda/P in GLOB.PDAs) if(!P.owner || P.toff || P.hidden) continue . += P @@ -1009,3 +1018,4 @@ GLOBAL_LIST_EMPTY(PDAs) #undef PDA_SCANNER_REAGENT #undef PDA_SCANNER_HALOGEN #undef PDA_SCANNER_GAS +#undef PDA_SPAM_DELAY diff --git a/code/game/objects/items/devices/PDA/PDA_types.dm b/code/game/objects/items/devices/PDA/PDA_types.dm index 093b6c1e51..089286efda 100644 --- a/code/game/objects/items/devices/PDA/PDA_types.dm +++ b/code/game/objects/items/devices/PDA/PDA_types.dm @@ -1,5 +1,5 @@ //Clown PDA is slippery. -/obj/item/device/pda/clown +/obj/item/pda/clown name = "clown PDA" default_cartridge = /obj/item/cartridge/virus/clown inserted_item = /obj/item/toy/crayon/rainbow @@ -8,11 +8,11 @@ ttone = "honk" var/slipvictims = list() //CIT CHANGE - makes clown PDAs track unique people slipped -/obj/item/device/pda/clown/Initialize() +/obj/item/pda/clown/Initialize() . = ..() AddComponent(/datum/component/slippery, 120, NO_SLIP_WHEN_WALKING, CALLBACK(src, .proc/AfterSlip)) -/obj/item/device/pda/clown/proc/AfterSlip(mob/living/carbon/human/M) +/obj/item/pda/clown/proc/AfterSlip(mob/living/carbon/human/M) if (istype(M) && (M.real_name != owner)) slipvictims |= M //CIT CHANGE - makes clown PDAs track unique people slipped var/obj/item/cartridge/virus/clown/cart = cartridge @@ -20,66 +20,66 @@ cart.charges++ // Special AI/pAI PDAs that cannot explode. -/obj/item/device/pda/ai - icon_state = "NONE" +/obj/item/pda/ai + icon = null ttone = "data" fon = FALSE detonatable = FALSE -/obj/item/device/pda/ai/attack_self(mob/user) +/obj/item/pda/ai/attack_self(mob/user) if ((honkamt > 0) && (prob(60)))//For clown virus. honkamt-- playsound(loc, 'sound/items/bikehorn.ogg', 30, 1) return -/obj/item/device/pda/ai/pai +/obj/item/pda/ai/pai ttone = "assist" -/obj/item/device/pda/medical +/obj/item/pda/medical name = "medical PDA" default_cartridge = /obj/item/cartridge/medical icon_state = "pda-medical" -/obj/item/device/pda/viro +/obj/item/pda/viro name = "virology PDA" default_cartridge = /obj/item/cartridge/medical icon_state = "pda-virology" -/obj/item/device/pda/engineering +/obj/item/pda/engineering name = "engineering PDA" default_cartridge = /obj/item/cartridge/engineering icon_state = "pda-engineer" -/obj/item/device/pda/security +/obj/item/pda/security name = "security PDA" default_cartridge = /obj/item/cartridge/security icon_state = "pda-security" -/obj/item/device/pda/detective +/obj/item/pda/detective name = "detective PDA" default_cartridge = /obj/item/cartridge/detective icon_state = "pda-detective" -/obj/item/device/pda/warden +/obj/item/pda/warden name = "warden PDA" default_cartridge = /obj/item/cartridge/security icon_state = "pda-warden" -/obj/item/device/pda/janitor +/obj/item/pda/janitor name = "janitor PDA" default_cartridge = /obj/item/cartridge/janitor icon_state = "pda-janitor" ttone = "slip" -/obj/item/device/pda/toxins +/obj/item/pda/toxins name = "scientist PDA" default_cartridge = /obj/item/cartridge/signal/toxins icon_state = "pda-science" ttone = "boom" -/obj/item/device/pda/mime +/obj/item/pda/mime name = "mime PDA" default_cartridge = /obj/item/cartridge/virus/mime inserted_item = /obj/item/toy/crayon/mime @@ -87,88 +87,88 @@ silent = TRUE ttone = "silence" -/obj/item/device/pda/heads +/obj/item/pda/heads default_cartridge = /obj/item/cartridge/head icon_state = "pda-hop" -/obj/item/device/pda/heads/hop +/obj/item/pda/heads/hop name = "head of personnel PDA" default_cartridge = /obj/item/cartridge/hop icon_state = "pda-hop" -/obj/item/device/pda/heads/hos +/obj/item/pda/heads/hos name = "head of security PDA" default_cartridge = /obj/item/cartridge/hos icon_state = "pda-hos" -/obj/item/device/pda/heads/ce +/obj/item/pda/heads/ce name = "chief engineer PDA" default_cartridge = /obj/item/cartridge/ce icon_state = "pda-ce" -/obj/item/device/pda/heads/cmo +/obj/item/pda/heads/cmo name = "chief medical officer PDA" default_cartridge = /obj/item/cartridge/cmo icon_state = "pda-cmo" -/obj/item/device/pda/heads/rd +/obj/item/pda/heads/rd name = "research director PDA" default_cartridge = /obj/item/cartridge/rd inserted_item = /obj/item/pen/fountain icon_state = "pda-rd" -/obj/item/device/pda/captain +/obj/item/pda/captain name = "captain PDA" default_cartridge = /obj/item/cartridge/captain inserted_item = /obj/item/pen/fountain/captain icon_state = "pda-captain" detonatable = FALSE -/obj/item/device/pda/cargo +/obj/item/pda/cargo name = "cargo technician PDA" default_cartridge = /obj/item/cartridge/quartermaster icon_state = "pda-cargo" -/obj/item/device/pda/quartermaster +/obj/item/pda/quartermaster name = "quartermaster PDA" default_cartridge = /obj/item/cartridge/quartermaster inserted_item = /obj/item/pen/fountain icon_state = "pda-qm" -/obj/item/device/pda/shaftminer +/obj/item/pda/shaftminer name = "shaft miner PDA" icon_state = "pda-miner" -/obj/item/device/pda/syndicate +/obj/item/pda/syndicate default_cartridge = /obj/item/cartridge/virus/syndicate icon_state = "pda-syndi" name = "military PDA" owner = "John Doe" hidden = 1 -/obj/item/device/pda/chaplain +/obj/item/pda/chaplain name = "chaplain PDA" icon_state = "pda-chaplain" ttone = "holy" -/obj/item/device/pda/lawyer +/obj/item/pda/lawyer name = "lawyer PDA" default_cartridge = /obj/item/cartridge/lawyer inserted_item = /obj/item/pen/fountain icon_state = "pda-lawyer" ttone = "objection" -/obj/item/device/pda/botanist +/obj/item/pda/botanist name = "botanist PDA" //default_cartridge = /obj/item/cartridge/botanist icon_state = "pda-hydro" -/obj/item/device/pda/roboticist +/obj/item/pda/roboticist name = "roboticist PDA" icon_state = "pda-roboticist" default_cartridge = /obj/item/cartridge/roboticist -/obj/item/device/pda/curator +/obj/item/pda/curator name = "curator PDA" icon_state = "pda-library" icon_alert = "pda-r-library" @@ -179,32 +179,32 @@ silent = TRUE //Quiet in the library! overlays_x_offset = -3 -/obj/item/device/pda/clear +/obj/item/pda/clear name = "clear PDA" icon_state = "pda-clear" desc = "A portable microcomputer by Thinktronic Systems, LTD. This model is a special edition with a transparent case." note = "Congratulations, you have chosen the Thinktronic 5230 Personal Data Assistant Deluxe Special Max Turbo Limited Edition!" -/obj/item/device/pda/cook +/obj/item/pda/cook name = "cook PDA" icon_state = "pda-cook" -/obj/item/device/pda/bar +/obj/item/pda/bar name = "bartender PDA" icon_state = "pda-bartender" inserted_item = /obj/item/pen/fountain -/obj/item/device/pda/atmos +/obj/item/pda/atmos name = "atmospherics PDA" default_cartridge = /obj/item/cartridge/atmos icon_state = "pda-atmos" -/obj/item/device/pda/chemist +/obj/item/pda/chemist name = "chemist PDA" default_cartridge = /obj/item/cartridge/chemistry icon_state = "pda-chemistry" -/obj/item/device/pda/geneticist +/obj/item/pda/geneticist name = "geneticist PDA" default_cartridge = /obj/item/cartridge/medical icon_state = "pda-genetics" diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm index e7d9750a3b..e92eb6e617 100644 --- a/code/game/objects/items/devices/PDA/cart.dm +++ b/code/game/objects/items/devices/PDA/cart.dm @@ -34,7 +34,7 @@ var/bot_access_flags = 0 //Bit flags. Selection: SEC_BOT | MULE_BOT | FLOOR_BOT | CLEAN_BOT | MED_BOT var/spam_enabled = 0 //Enables "Send to All" Option - var/obj/item/device/pda/host_pda = null + var/obj/item/pda/host_pda = null var/menu var/datum/data/record/active1 = null //General var/datum/data/record/active2 = null //Medical @@ -51,7 +51,7 @@ /obj/item/cartridge/Initialize() . = ..() - var/obj/item/device/pda/pda = loc + var/obj/item/pda/pda = loc if(istype(pda)) host_pda = pda @@ -207,13 +207,12 @@ frequency.post_signal(src, status_signal) - /obj/item/cartridge/proc/generate_menu(mob/user) if(!host_pda) return switch(host_pda.mode) if(40) //signaller - menu = "

    Remote Signaling System

    " + menu = "

    [PDAIMG(signaler)] Remote Signaling System

    " menu += {" Send Signal
    @@ -232,7 +231,7 @@ Code: +
    "} if (41) //crew manifest - menu = "

    Crew Manifest

    " + menu = "

    [PDAIMG(notes)] Crew Manifest

    " menu += "Entries cannot be modified from this terminal.

    " if(GLOB.data_core.general) for (var/datum/data/record/t in sortRecord(GLOB.data_core.general)) @@ -241,7 +240,7 @@ Code: if (42) //status displays - menu = "

    Station Status Display Interlink

    " + menu = "

    [PDAIMG(status)] Station Status Display Interlink

    " menu += "\[ Clear \]
    " menu += "\[ Shuttle ETA \]
    " @@ -254,7 +253,7 @@ Code: menu += " Biohazard \]
    " if (43) - menu = "

    Power Monitors - Please select one


    " + menu = "

    [PDAIMG(power)] Power Monitors - Please select one


    " powmonitor = null powermonitors = list() var/powercount = 0 @@ -280,7 +279,7 @@ Code: menu += "
    " if (433) - menu = "

    Power Monitor


    " + menu = "

    [PDAIMG(power)] Power Monitor


    " if(!powmonitor) menu += "No connection
    " else @@ -307,13 +306,13 @@ Code: menu += "" if (44) //medical records //This thing only displays a single screen so it's hard to really get the sub-menu stuff working. - menu = "

    Medical Record List

    " + menu = "

    [PDAIMG(medical)] Medical Record List

    " if(GLOB.data_core.general) for(var/datum/data/record/R in sortRecord(GLOB.data_core.general)) menu += "[R.fields["id"]]: [R.fields["name"]]
    " menu += "
    " if(441) - menu = "

    Medical Record

    " + menu = "

    [PDAIMG(medical)] Medical Record

    " if(active1 in GLOB.data_core.general) menu += "Name: [active1.fields["name"]] ID: [active1.fields["id"]]
    " @@ -328,7 +327,7 @@ Code: menu += "
    " - menu += "

    Medical Data

    " + menu += "

    [PDAIMG(medical)] Medical Data

    " if(active2 in GLOB.data_core.medical) menu += "Blood Type: [active2.fields["blood_type"]]

    " @@ -350,14 +349,14 @@ Code: menu += "
    " if (45) //security records - menu = "

    Security Record List

    " + menu = "

    [PDAIMG(cuffs)] Security Record List

    " if(GLOB.data_core.general) for (var/datum/data/record/R in sortRecord(GLOB.data_core.general)) menu += "
    [R.fields["id"]]: [R.fields["name"]]
    " menu += "
    " if(451) - menu = "

    Security Record

    " + menu = "

    [PDAIMG(cuffs)] Security Record

    " if(active1 in GLOB.data_core.general) menu += "Name: [active1.fields["name"]] ID: [active1.fields["id"]]
    " @@ -372,7 +371,7 @@ Code: menu += "
    " - menu += "

    Security Data

    " + menu += "

    [PDAIMG(cuffs)] Security Data

    " if(active3 in GLOB.data_core.security) menu += "Criminal Status: [active3.fields["criminal"]]
    " @@ -418,7 +417,7 @@ Code: menu += "
    " if (47) //quartermaster order records - menu = "

    Supply Record Interlink

    " + menu = "

    [PDAIMG(crate)] Supply Record Interlink

    " menu += "
    Supply shuttle
    " menu += "Location: " @@ -449,7 +448,7 @@ Code: menu += "Upgrade NOW to Space Parts & Space Vendors PLUS for full remote order control and inventory management." if (49) //janitorial locator - menu = "

    Persistent Custodial Object Locator

    " + menu = "

    [PDAIMG(bucket)] Persistent Custodial Object Locator

    " var/turf/cl = get_turf(src) if (cl) @@ -511,7 +510,7 @@ Code: menu += "

    Refresh GPS Locator" if (53) // Newscaster - menu = "

    Newscaster Access

    " + menu = "

    [PDAIMG(notes)] Newscaster Access

    " menu += "
    Current Newsfeed: [current_channel ? current_channel : "None"]
    " var/datum/newscaster/feed_channel/current for(var/datum/newscaster/feed_channel/chan in GLOB.news_network.network_channels) @@ -533,7 +532,7 @@ Code: menu += "
    Post Message" if (54) // Beepsky, Medibot, Floorbot, and Cleanbot access - menu = "

    Bots Interlink

    " + menu = "

    [PDAIMG(medbot)] Bots Interlink

    " bot_control() if (99) //Newscaster message permission error menu = "
    ERROR : NOT AUTHORIZED [host_pda.id ? "" : "- ID SLOT EMPTY"]
    " @@ -652,7 +651,7 @@ Code: var/mob/living/simple_animal/bot/Bot if(active_bot) - menu += "[active_bot]
    Status: (refresh)
    " + menu += "[active_bot]
    Status: ([PDAIMG(refresh)]refresh)
    " menu += "Model: [active_bot.model]
    " menu += "Location: [get_area(active_bot)]
    " menu += "Mode: [active_bot.get_mode()]" @@ -688,9 +687,9 @@ Code: menu += "\[Summon Bot\]
    " //summon menu += "Keep an ID inserted to upload access codes upon summoning." - menu += "
    Return to bot list" + menu += "
    [PDAIMG(back)]Return to bot list" else - menu += "
    Scan for active bots

    " + menu += "
    [PDAIMG(refresh)]Scan for active bots

    " var/turf/current_turf = get_turf(src) var/zlevel = current_turf.z var/botcount = 0 @@ -710,7 +709,7 @@ Code: return "" //If the cartridge adds something to each potetial messaging target -/obj/item/cartridge/proc/message_special(obj/item/device/pda/target) +/obj/item/cartridge/proc/message_special(obj/item/pda/target) return "" //This is called for special abilities of cartridges diff --git a/code/game/objects/items/devices/PDA/virus_cart.dm b/code/game/objects/items/devices/PDA/virus_cart.dm index a5ce076620..dfbf6db88c 100644 --- a/code/game/objects/items/devices/PDA/virus_cart.dm +++ b/code/game/objects/items/devices/PDA/virus_cart.dm @@ -2,19 +2,19 @@ name = "Generic Virus PDA cart" var/charges = 5 -/obj/item/cartridge/virus/proc/send_virus(obj/item/device/pda/target, mob/living/U) +/obj/item/cartridge/virus/proc/send_virus(obj/item/pda/target, mob/living/U) return /obj/item/cartridge/virus/message_header() return "[charges] viral files left.
    " -/obj/item/cartridge/virus/message_special(obj/item/device/pda/target) - if (!istype(loc, /obj/item/device/pda)) +/obj/item/cartridge/virus/message_special(obj/item/pda/target) + if (!istype(loc, /obj/item/pda)) return "" //Sanity check, this shouldn't be possible. return " (*Send Virus*)" /obj/item/cartridge/virus/special(mob/living/user, list/params) - var/obj/item/device/pda/P = locate(params["target"])//Leaving it alone in case it may do something useful, I guess. + var/obj/item/pda/P = locate(params["target"])//Leaving it alone in case it may do something useful, I guess. send_virus(P,user) /obj/item/cartridge/virus/clown @@ -23,7 +23,7 @@ desc = "A data cartridge for portable microcomputers. It smells vaguely of bananas." access = CART_CLOWN -/obj/item/cartridge/virus/clown/send_virus(obj/item/device/pda/target, mob/living/U) +/obj/item/cartridge/virus/clown/send_virus(obj/item/pda/target, mob/living/U) if(charges <= 0) to_chat(U, "Out of charges.") return @@ -39,7 +39,7 @@ icon_state = "cart-mi" access = CART_MIME -/obj/item/cartridge/virus/mime/send_virus(obj/item/device/pda/target, mob/living/U) +/obj/item/cartridge/virus/mime/send_virus(obj/item/pda/target, mob/living/U) if(charges <= 0) to_chat(U, "Out of charges.") return @@ -58,7 +58,7 @@ remote_door_id = "smindicate" //Make sure this matches the syndicate shuttle's shield/door id!! //don't ask about the name, testing. charges = 4 -/obj/item/cartridge/virus/syndicate/send_virus(obj/item/device/pda/target, mob/living/U) +/obj/item/cartridge/virus/syndicate/send_virus(obj/item/pda/target, mob/living/U) if(charges <= 0) to_chat(U, "Out of charges.") return @@ -92,7 +92,7 @@ icon_state = "cart" var/telecrystals = 0 -/obj/item/cartridge/virus/frame/send_virus(obj/item/device/pda/target, mob/living/U) +/obj/item/cartridge/virus/frame/send_virus(obj/item/pda/target, mob/living/U) if(charges <= 0) to_chat(U, "Out of charges.") return diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm index f9e510bbea..cb23b95dc9 100644 --- a/code/game/objects/items/devices/aicard.dm +++ b/code/game/objects/items/devices/aicard.dm @@ -1,4 +1,4 @@ -/obj/item/device/aicard +/obj/item/aicard name = "intelliCard" desc = "A storage device for AIs. Patent pending." icon = 'icons/obj/aicards.dmi' @@ -7,16 +7,16 @@ lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' w_class = WEIGHT_CLASS_SMALL - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT flags_1 = NOBLUDGEON_1 var/flush = FALSE var/mob/living/silicon/ai/AI -/obj/item/device/aicard/suicide_act(mob/living/user) +/obj/item/aicard/suicide_act(mob/living/user) user.visible_message("[user] is trying to upload themselves into [src]! That's not going to work out well!") return BRUTELOSS -/obj/item/device/aicard/afterattack(atom/target, mob/user, proximity) +/obj/item/aicard/afterattack(atom/target, mob/user, proximity) ..() if(!proximity || !target) return @@ -27,7 +27,7 @@ target.transfer_ai(AI_TRANS_TO_CARD, user, null, src) update_icon() //Whatever happened, update the card's state (icon, name) to match. -/obj/item/device/aicard/update_icon() +/obj/item/aicard/update_icon() cut_overlays() if(AI) name = "[initial(name)]- [AI.name]" @@ -42,14 +42,14 @@ name = initial(name) icon_state = initial(icon_state) -/obj/item/device/aicard/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ +/obj/item/aicard/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ datum/tgui/master_ui = null, datum/ui_state/state = GLOB.hands_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) ui = new(user, src, ui_key, "intellicard", name, 500, 500, master_ui, state) ui.open() -/obj/item/device/aicard/ui_data() +/obj/item/aicard/ui_data() var/list/data = list() if(AI) data["name"] = AI.name @@ -62,7 +62,7 @@ data["wiping"] = flush return data -/obj/item/device/aicard/ui_act(action,params) +/obj/item/aicard/ui_act(action,params) if(..()) return switch(action) diff --git a/code/game/objects/items/devices/beacon.dm b/code/game/objects/items/devices/beacon.dm index 5611784f8c..e868ec07b6 100644 --- a/code/game/objects/items/devices/beacon.dm +++ b/code/game/objects/items/devices/beacon.dm @@ -1,4 +1,4 @@ -/obj/item/device/beacon +/obj/item/beacon name = "\improper tracking beacon" desc = "A beacon used by a teleporter." icon = 'icons/obj/device.dmi' @@ -9,18 +9,18 @@ var/enabled = TRUE var/renamed = FALSE -/obj/item/device/beacon/Initialize() +/obj/item/beacon/Initialize() . = ..() if (enabled) GLOB.teleportbeacons += src else icon_state = "beacon-off" -/obj/item/device/beacon/Destroy() +/obj/item/beacon/Destroy() GLOB.teleportbeacons.Remove(src) return ..() -/obj/item/device/beacon/attack_self(mob/user) +/obj/item/beacon/attack_self(mob/user) enabled = !enabled if (enabled) icon_state = "beacon" @@ -31,7 +31,7 @@ to_chat(user, "You [enabled ? "enable" : "disable"] the beacon.") return -/obj/item/device/beacon/attackby(obj/item/W, mob/user) +/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 var/new_name = stripped_input(user, "What would you like the name to be?") if(!user.canUseTopic(src, BE_CLOSE)) diff --git a/code/game/objects/items/devices/camera_bug.dm b/code/game/objects/items/devices/camera_bug.dm index 770c72ac54..d140c234ce 100644 --- a/code/game/objects/items/devices/camera_bug.dm +++ b/code/game/objects/items/devices/camera_bug.dm @@ -5,7 +5,7 @@ -/obj/item/device/camera_bug +/obj/item/camera_bug name = "camera bug" desc = "For illicit snooping through the camera network." icon = 'icons/obj/device.dmi' @@ -31,11 +31,11 @@ var/last_found = null var/last_seen = null -/obj/item/device/camera_bug/New() +/obj/item/camera_bug/New() ..() START_PROCESSING(SSobj, src) -/obj/item/device/camera_bug/Destroy() +/obj/item/camera_bug/Destroy() get_cameras() for(var/cam_tag in bugged_cameras) var/obj/machinery/camera/camera = bugged_cameras[cam_tag] @@ -46,20 +46,20 @@ tracking = null return ..() -/obj/item/device/camera_bug/interact(mob/user) +/obj/item/camera_bug/interact(mob/user) ui_interact(user) -/obj/item/device/camera_bug/ui_interact(mob/user = usr) +/obj/item/camera_bug/ui_interact(mob/user = usr) . = ..() var/datum/browser/popup = new(user, "camerabug","Camera Bug",nref=src) popup.set_content(menu(get_cameras())) popup.open() -/obj/item/device/camera_bug/attack_self(mob/user) +/obj/item/camera_bug/attack_self(mob/user) user.set_machine(src) interact(user) -/obj/item/device/camera_bug/check_eye(mob/user) +/obj/item/camera_bug/check_eye(mob/user) if ( loc != user || user.incapacitated() || user.eye_blind || !current ) user.unset_machine() return 0 @@ -70,10 +70,10 @@ user.unset_machine() return 0 return 1 -/obj/item/device/camera_bug/on_unset_machine(mob/user) +/obj/item/camera_bug/on_unset_machine(mob/user) user.reset_perspective(null) -/obj/item/device/camera_bug/proc/get_cameras() +/obj/item/camera_bug/proc/get_cameras() if( world.time > (last_net_update + 100)) bugged_cameras = list() for(var/obj/machinery/camera/camera in GLOB.cameranet.cameras) @@ -85,7 +85,7 @@ return bugged_cameras -/obj/item/device/camera_bug/proc/menu(list/cameras) +/obj/item/camera_bug/proc/menu(list/cameras) if(!cameras || !cameras.len) return "No bugged cameras found." @@ -139,12 +139,12 @@ return .(cameras) return html -/obj/item/device/camera_bug/proc/get_seens() +/obj/item/camera_bug/proc/get_seens() if(current && current.can_use()) var/list/seen = current.can_see() return seen -/obj/item/device/camera_bug/proc/camera_report() +/obj/item/camera_bug/proc/camera_report() // this should only be called if current exists var/dat = "" var/list/seen = get_seens() @@ -189,7 +189,7 @@ else return "Camera Offline
    " -/obj/item/device/camera_bug/Topic(href,list/href_list) +/obj/item/camera_bug/Topic(href,list/href_list) if(usr != loc) usr.unset_machine() usr << browse(null, "window=camerabug") @@ -256,7 +256,7 @@ interact() -/obj/item/device/camera_bug/process() +/obj/item/camera_bug/process() if(track_mode == BUGMODE_LIST || (world.time < (last_tracked + refresh_interval))) return last_tracked = world.time diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index c759eecc82..d5d025619c 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -1,8 +1,9 @@ -/obj/item/device/chameleon +/obj/item/chameleon name = "chameleon-projector" + icon = 'icons/obj/device.dmi' icon_state = "shield0" flags_1 = CONDUCT_1 | NOBLUDGEON_1 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT item_state = "electronic" lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' @@ -14,26 +15,26 @@ var/obj/effect/dummy/chameleon/active_dummy = null var/saved_appearance = null -/obj/item/device/chameleon/New() +/obj/item/chameleon/New() ..() var/obj/item/cigbutt/butt = /obj/item/cigbutt saved_appearance = initial(butt.appearance) -/obj/item/device/chameleon/dropped() +/obj/item/chameleon/dropped() ..() disrupt() -/obj/item/device/chameleon/equipped() +/obj/item/chameleon/equipped() ..() disrupt() -/obj/item/device/chameleon/attack_self(mob/user) +/obj/item/chameleon/attack_self(mob/user) if (isturf(user.loc) || istype(user.loc, /obj/structure) || active_dummy) toggle(user) else to_chat(user, "You can't use [src] while inside something!") -/obj/item/device/chameleon/afterattack(atom/target, mob/user , proximity) +/obj/item/chameleon/afterattack(atom/target, mob/user , proximity) if(!proximity) return if(!check_sprite(target)) @@ -48,12 +49,12 @@ temp.plane = initial(target.plane) saved_appearance = temp.appearance -/obj/item/device/chameleon/proc/check_sprite(atom/target) +/obj/item/chameleon/proc/check_sprite(atom/target) if(target.icon_state in icon_states(target.icon)) return TRUE return FALSE -/obj/item/device/chameleon/proc/toggle(mob/user) +/obj/item/chameleon/proc/toggle(mob/user) if(!can_use || !saved_appearance) return if(active_dummy) @@ -71,7 +72,7 @@ new /obj/effect/temp_visual/emp/pulse(get_turf(src)) user.cancel_camera() -/obj/item/device/chameleon/proc/disrupt(delete_dummy = 1) +/obj/item/chameleon/proc/disrupt(delete_dummy = 1) if(active_dummy) for(var/mob/M in active_dummy) to_chat(M, "Your chameleon-projector deactivates.") @@ -86,7 +87,7 @@ can_use = 0 spawn(50) can_use = 1 -/obj/item/device/chameleon/proc/eject_all() +/obj/item/chameleon/proc/eject_all() for(var/atom/movable/A in active_dummy) A.forceMove(active_dummy.loc) if(ismob(A)) @@ -98,9 +99,9 @@ desc = "" density = FALSE var/can_move = 0 - var/obj/item/device/chameleon/master = null + var/obj/item/chameleon/master = null -/obj/effect/dummy/chameleon/proc/activate(mob/M, saved_appearance, obj/item/device/chameleon/C) +/obj/effect/dummy/chameleon/proc/activate(mob/M, saved_appearance, obj/item/chameleon/C) appearance = saved_appearance if(istype(M.buckled, /obj/vehicle)) var/obj/vehicle/V = M.buckled diff --git a/code/game/objects/items/devices/dogborg_sleeper.dm b/code/game/objects/items/devices/dogborg_sleeper.dm index 23d569c5f3..b21ba58380 100644 --- a/code/game/objects/items/devices/dogborg_sleeper.dm +++ b/code/game/objects/items/devices/dogborg_sleeper.dm @@ -1,6 +1,6 @@ // Dogborg Sleeper units -/obj/item/device/dogborg/sleeper +/obj/item/dogborg/sleeper name = "hound sleeper" desc = "nothing should see this." icon = 'icons/mob/dogborg.dmi' @@ -22,7 +22,7 @@ var/static/list/important_items = typecacheof(list( /obj/item/hand_tele, /obj/item/card/id, - /obj/item/device/aicard, + /obj/item/aicard, /obj/item/gun, /obj/item/pinpointer, /obj/item/clothing/shoes/magboots, @@ -45,15 +45,15 @@ // Bags are prohibited from this due to the potential explotation of objects, same with brought -/obj/item/device/dogborg/sleeper/New() +/obj/item/dogborg/sleeper/New() ..() update_icon() flags_1 |= NOBLUDGEON_1 //No more attack messages -/obj/item/device/dogborg/sleeper/Exit(atom/movable/O) +/obj/item/dogborg/sleeper/Exit(atom/movable/O) return 0 -/obj/item/device/dogborg/sleeper/afterattack(mob/living/carbon/target, mob/living/silicon/user, proximity) +/obj/item/dogborg/sleeper/afterattack(mob/living/carbon/target, mob/living/silicon/user, proximity) hound = loc if(!proximity) return @@ -91,7 +91,7 @@ message_admins("[key_name(hound)] has sleeper'd [key_name(patient)] as a dogborg. [ADMIN_JMP(src)]") playsound(hound, 'sound/effects/bin_close.ogg', 100, 1) -/obj/item/device/dogborg/sleeper/container_resist(mob/living/user) +/obj/item/dogborg/sleeper/container_resist(mob/living/user) hound = loc user.changeNext_move(CLICK_CD_BREAKOUT) user.last_special = world.time + CLICK_CD_BREAKOUT @@ -107,7 +107,7 @@ "You successfully break out of [hound.name]!") go_out() -/obj/item/device/dogborg/sleeper/proc/go_out(var/target) +/obj/item/dogborg/sleeper/proc/go_out(var/target) hound = loc hound.setClickCooldown(50) if(length(contents) > 0) @@ -139,12 +139,12 @@ cleaning = FALSE update_gut() -/obj/item/device/dogborg/sleeper/attack_self(mob/user) +/obj/item/dogborg/sleeper/attack_self(mob/user) if(..()) return ui_interact(user) -/obj/item/device/dogborg/sleeper/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ +/obj/item/dogborg/sleeper/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ datum/tgui/master_ui = null, datum/ui_state/state = GLOB.notcontained_state) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) @@ -152,7 +152,7 @@ ui = new(user, src, ui_key, "dogborg_sleeper", name, 375, 550, master_ui, state) ui.open() -/obj/item/device/dogborg/sleeper/ui_data() +/obj/item/dogborg/sleeper/ui_data() var/list/data = list() data["occupied"] = patient ? 1 : 0 @@ -197,7 +197,7 @@ data["occupant"]["reagents"] += list(list("name" = R.name, "volume" = R.volume)) return data -/obj/item/device/dogborg/sleeper/ui_act(action, params) +/obj/item/dogborg/sleeper/ui_act(action, params) if(..()) return @@ -221,7 +221,7 @@ clean_cycle() . = TRUE -/obj/item/device/dogborg/sleeper/proc/update_gut() +/obj/item/dogborg/sleeper/proc/update_gut() //Well, we HAD one, what happened to them? if(patient in contents) if(patient_laststat != patient.stat) @@ -268,7 +268,7 @@ return //Gurgleborg process -/obj/item/device/dogborg/sleeper/proc/clean_cycle() +/obj/item/dogborg/sleeper/proc/clean_cycle() //Sanity for(var/I in items_preserved) if(!(I in contents)) @@ -341,10 +341,10 @@ if(cleaning) addtimer(CALLBACK(src, .proc/clean_cycle), 50) -/obj/item/device/dogborg/sleeper/proc/CheckAccepted(obj/item/I) +/obj/item/dogborg/sleeper/proc/CheckAccepted(obj/item/I) return is_type_in_typecache(I, important_items) -/obj/item/device/dogborg/sleeper/proc/inject_chem(chem) +/obj/item/dogborg/sleeper/proc/inject_chem(chem) if(hound.cell.charge <= 800) //This is so borgs don't kill themselves with it. Remember, 750 charge used every injection. to_chat(hound, "You don't have enough power to synthesize fluids.") return @@ -356,13 +356,13 @@ var/units = round(patient.reagents.get_reagent_amount(chem)) to_chat(hound, "Injecting [units] unit\s of [chem] into occupant.") //If they were immersed, the reagents wouldn't leave with them. -/obj/item/device/dogborg/sleeper/medihound //Medihound sleeper +/obj/item/dogborg/sleeper/medihound //Medihound sleeper name = "Mobile Sleeper" desc = "Equipment for medical hound. A mounted sleeper that stabilizes patients and can inject reagents in the borg's reserves." icon = 'icons/mob/dogborg.dmi' icon_state = "sleeper" -/obj/item/device/dogborg/sleeper/K9 //The K9 portabrig +/obj/item/dogborg/sleeper/K9 //The K9 portabrig name = "Mobile Brig" desc = "Equipment for a K9 unit. A mounted portable-brig that holds criminals." icon = 'icons/mob/dogborg.dmi' @@ -371,13 +371,13 @@ min_health = -100 injection_chems = null //So they don't have all the same chems as the medihound! -/obj/item/storage/attackby(obj/item/device/dogborg/sleeper/K9, mob/user, proximity) +/obj/item/storage/attackby(obj/item/dogborg/sleeper/K9, mob/user, proximity) if(istype(K9)) K9.afterattack(src, user ,1) else . = ..() -/obj/item/device/dogborg/sleeper/K9/afterattack(var/atom/movable/target, mob/living/silicon/user, proximity) +/obj/item/dogborg/sleeper/K9/afterattack(var/atom/movable/target, mob/living/silicon/user, proximity) hound = loc if(!istype(target)) @@ -413,7 +413,7 @@ return return -/obj/item/device/dogborg/sleeper/compactor //Janihound gut. +/obj/item/dogborg/sleeper/compactor //Janihound gut. name = "garbage processor" desc = "A mounted garbage compactor unit with fuel processor." icon = 'icons/mob/dogborg.dmi' @@ -423,13 +423,13 @@ injection_chems = null //So they don't have all the same chems as the medihound! var/max_item_count = 30 -/obj/item/storage/attackby(obj/item/device/dogborg/sleeper/compactor, mob/user, proximity) //GIT CIRCUMVENTED YO! +/obj/item/storage/attackby(obj/item/dogborg/sleeper/compactor, mob/user, proximity) //GIT CIRCUMVENTED YO! if(istype(compactor)) compactor.afterattack(src, user ,1) else . = ..() -/obj/item/device/dogborg/sleeper/compactor/afterattack(var/atom/movable/target, mob/living/silicon/user, proximity)//GARBO NOMS +/obj/item/dogborg/sleeper/compactor/afterattack(var/atom/movable/target, mob/living/silicon/user, proximity)//GARBO NOMS hound = loc var/obj/item/target_obj = target if(!istype(target)) diff --git a/code/game/objects/items/devices/doorCharge.dm b/code/game/objects/items/devices/doorCharge.dm index 2fc3770f1c..6fa1b9d742 100644 --- a/code/game/objects/items/devices/doorCharge.dm +++ b/code/game/objects/items/devices/doorCharge.dm @@ -1,6 +1,7 @@ -/obj/item/device/doorCharge +/obj/item/doorCharge name = "airlock charge" desc = null //Different examine for traitors + icon = 'icons/obj/device.dmi' item_state = "electronic" icon_state = "doorCharge" lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' @@ -13,7 +14,7 @@ attack_verb = list("blown up", "exploded", "detonated") materials = list(MAT_METAL=50, MAT_GLASS=30) -/obj/item/device/doorCharge/ex_act(severity, target) +/obj/item/doorCharge/ex_act(severity, target) switch(severity) if(1) visible_message("[src] detonates!") @@ -26,14 +27,14 @@ if(prob(25)) ex_act(EXPLODE_DEVASTATE) -/obj/item/device/doorCharge/Destroy() +/obj/item/doorCharge/Destroy() if(istype(loc, /obj/machinery/door/airlock)) var/obj/machinery/door/airlock/A = loc if(A.charge == src) A.charge = null return ..() -/obj/item/device/doorCharge/examine(mob/user) +/obj/item/doorCharge/examine(mob/user) ..() if(user.mind && user.mind.has_antag_datum(/datum/antagonist/traitor)) //No nuke ops because the device is excluded from nuclear to_chat(user, "A small explosive device that can be used to sabotage airlocks to cause an explosion upon opening. To apply, remove the airlock's maintenance panel and place it within.") diff --git a/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm b/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm index 6b465d71e1..2341a78bba 100644 --- a/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm +++ b/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm @@ -1,5 +1,5 @@ //Used by engineering cyborgs in place of generic circuits. -/obj/item/device/electroadaptive_pseudocircuit +/obj/item/electroadaptive_pseudocircuit name = "electroadaptive pseudocircuit" desc = "An all-in-one circuit imprinter, designer, synthesizer, outfitter, creator, and chef. It can be used in place of any generic circuit board during construction." icon = 'icons/obj/module.dmi' @@ -11,18 +11,18 @@ var/static/recycleable_circuits = typecacheof(list(/obj/item/electronics/firelock, /obj/item/electronics/airalarm, /obj/item/electronics/firealarm, \ /obj/item/electronics/apc))//A typecache of circuits consumable for material -/obj/item/device/electroadaptive_pseudocircuit/Initialize() +/obj/item/electroadaptive_pseudocircuit/Initialize() . = ..() maptext = "[circuits]" -/obj/item/device/electroadaptive_pseudocircuit/examine(mob/user) +/obj/item/electroadaptive_pseudocircuit/examine(mob/user) ..() if(iscyborg(user)) to_chat(user, "It has material for [circuits] circuit[circuits == 1 ? "" : "s"]. Use the pseudocircuit on existing circuits to gain material.") to_chat(user, "Serves as a substitute for fire/air alarm, firelock, and APC electronics.") to_chat(user, "It can also be used on an APC with no power cell to fabricate a low-capacity cell at a high power cost.") -/obj/item/device/electroadaptive_pseudocircuit/proc/adapt_circuit(mob/living/silicon/robot/R, circuit_cost = 0) +/obj/item/electroadaptive_pseudocircuit/proc/adapt_circuit(mob/living/silicon/robot/R, circuit_cost = 0) if(QDELETED(R) || !istype(R)) return if(!R.cell) @@ -46,7 +46,7 @@ addtimer(CALLBACK(src, .proc/recharge), recharge_time) return TRUE //The actual circuit magic itself is done on a per-object basis -/obj/item/device/electroadaptive_pseudocircuit/afterattack(atom/target, mob/living/user, proximity) +/obj/item/electroadaptive_pseudocircuit/afterattack(atom/target, mob/living/user, proximity) if(!proximity) return if(!is_type_in_typecache(target, recycleable_circuits)) @@ -58,7 +58,7 @@ playsound(user, 'sound/items/deconstruct.ogg', 50, TRUE) qdel(target) -/obj/item/device/electroadaptive_pseudocircuit/proc/recharge() +/obj/item/electroadaptive_pseudocircuit/proc/recharge() playsound(src, 'sound/machines/chime.ogg', 25, TRUE) recharging = FALSE icon_state = initial(icon_state) diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 13ceeaedeb..3386b975e3 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -1,4 +1,4 @@ -/obj/item/device/flashlight +/obj/item/flashlight name = "flashlight" desc = "A hand-held emergency light." icon = 'icons/obj/lighting.dmi' @@ -8,18 +8,18 @@ righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' w_class = WEIGHT_CLASS_SMALL flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT materials = list(MAT_METAL=50, MAT_GLASS=20) actions_types = list(/datum/action/item_action/toggle_light) var/on = FALSE var/brightness_on = 4 //range of light when on var/flashlight_power = 1 //strength of the light when on -/obj/item/device/flashlight/Initialize() +/obj/item/flashlight/Initialize() . = ..() update_brightness() -/obj/item/device/flashlight/proc/update_brightness(mob/user = null) +/obj/item/flashlight/proc/update_brightness(mob/user = null) if(on) icon_state = "[initial(icon_state)]-on" if(flashlight_power) @@ -30,7 +30,7 @@ icon_state = initial(icon_state) set_light(0) -/obj/item/device/flashlight/attack_self(mob/user) +/obj/item/flashlight/attack_self(mob/user) on = !on update_brightness(user) for(var/X in actions) @@ -38,14 +38,14 @@ A.UpdateButtonIcon() return 1 -/obj/item/device/flashlight/suicide_act(mob/living/carbon/human/user) +/obj/item/flashlight/suicide_act(mob/living/carbon/human/user) if (user.eye_blind) user.visible_message("[user] is putting [src] close to [user.p_their()] eyes and turning it on ... but [user.p_theyre()] blind!") return SHAME user.visible_message("[user] is putting [src] close to [user.p_their()] eyes and turning it on! It looks like [user.p_theyre()] trying to commit suicide!") return (FIRELOSS) -/obj/item/device/flashlight/attack(mob/living/carbon/M, mob/living/carbon/human/user) +/obj/item/flashlight/attack(mob/living/carbon/M, mob/living/carbon/human/user) add_fingerprint(user) if(istype(M) && on && user.zone_selected in list(BODY_ZONE_PRECISE_EYES, BODY_ZONE_PRECISE_MOUTH)) @@ -158,7 +158,7 @@ else return ..() -/obj/item/device/flashlight/pen +/obj/item/flashlight/pen name = "penlight" desc = "A pen-sized light, used by medical staff. It can also be used to create a hologram to alert people of incoming medical assistance." icon_state = "penlight" @@ -167,7 +167,7 @@ brightness_on = 2 var/holo_cooldown = 0 -/obj/item/device/flashlight/pen/afterattack(atom/target, mob/user, proximity_flag) +/obj/item/flashlight/pen/afterattack(atom/target, mob/user, proximity_flag) if(!proximity_flag) if(holo_cooldown > world.time) to_chat(user, "[src] is not ready yet!") @@ -192,7 +192,7 @@ visible_message("[creator] created a medical hologram!") -/obj/item/device/flashlight/seclite +/obj/item/flashlight/seclite name = "seclite" desc = "A robust flashlight used by security." icon_state = "seclite" @@ -204,7 +204,7 @@ hitsound = 'sound/weapons/genhit1.ogg' // the desk lamps are a bit special -/obj/item/device/flashlight/lamp +/obj/item/flashlight/lamp name = "desk lamp" desc = "A desk lamp with an adjustable mount." icon_state = "lamp" @@ -220,14 +220,14 @@ // green-shaded desk lamp -/obj/item/device/flashlight/lamp/green +/obj/item/flashlight/lamp/green desc = "A classic green-shaded desk lamp." icon_state = "lampgreen" item_state = "lampgreen" -/obj/item/device/flashlight/lamp/verb/toggle_light() +/obj/item/flashlight/lamp/verb/toggle_light() set name = "Toggle light" set category = "Object" set src in oview(1) @@ -236,7 +236,7 @@ attack_self(usr) //Bananalamp -/obj/item/device/flashlight/lamp/bananalamp +/obj/item/flashlight/lamp/bananalamp name = "banana lamp" desc = "Only a clown would think to make a ghetto banana-shaped lamp. Even has a goofy pullstring." icon_state = "bananalamp" @@ -244,7 +244,7 @@ // FLARES -/obj/item/device/flashlight/flare +/obj/item/flashlight/flare name = "flare" desc = "A red Nanotrasen issued flare. There are instructions on the side, it reads 'pull cord, make light'." w_class = WEIGHT_CLASS_SMALL @@ -259,11 +259,11 @@ light_color = LIGHT_COLOR_FLARE grind_results = list("sulfur" = 15) -/obj/item/device/flashlight/flare/New() +/obj/item/flashlight/flare/New() fuel = rand(800, 1000) // Sorry for changing this so much but I keep under-estimating how long X number of ticks last in seconds. ..() -/obj/item/device/flashlight/flare/process() +/obj/item/flashlight/flare/process() open_flame(heat) fuel = max(fuel - 1, 0) if(!fuel || !on) @@ -272,14 +272,14 @@ icon_state = "[initial(icon_state)]-empty" STOP_PROCESSING(SSobj, src) -/obj/item/device/flashlight/flare/ignition_effect(atom/A, mob/user) +/obj/item/flashlight/flare/ignition_effect(atom/A, mob/user) if(fuel && on) . = "[user] lights [A] with [src] like a real \ badass." else . = "" -/obj/item/device/flashlight/flare/proc/turn_off() +/obj/item/flashlight/flare/proc/turn_off() on = FALSE force = initial(src.force) damtype = initial(src.damtype) @@ -289,14 +289,14 @@ else update_brightness(null) -/obj/item/device/flashlight/flare/update_brightness(mob/user = null) +/obj/item/flashlight/flare/update_brightness(mob/user = null) ..() if(on) item_state = "[initial(item_state)]-on" else item_state = "[initial(item_state)]" -/obj/item/device/flashlight/flare/attack_self(mob/user) +/obj/item/flashlight/flare/attack_self(mob/user) // Usual checks if(!fuel) @@ -314,10 +314,10 @@ damtype = "fire" START_PROCESSING(SSobj, src) -/obj/item/device/flashlight/flare/is_hot() +/obj/item/flashlight/flare/is_hot() return on * heat -/obj/item/device/flashlight/flare/torch +/obj/item/flashlight/flare/torch name = "torch" desc = "A torch fashioned from some leaves and a log." w_class = WEIGHT_CLASS_BULKY @@ -330,7 +330,7 @@ on_damage = 10 slot_flags = null -/obj/item/device/flashlight/lantern +/obj/item/flashlight/lantern name = "lantern" icon_state = "lantern" item_state = "lantern" @@ -340,7 +340,7 @@ brightness_on = 6 // luminosity when on -/obj/item/device/flashlight/slime +/obj/item/flashlight/slime gender = PLURAL name = "glowing slime extract" desc = "Extract from a yellow slime. It emits a strong light when squeezed." @@ -348,25 +348,25 @@ icon_state = "slime" item_state = "slime" w_class = WEIGHT_CLASS_SMALL - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT materials = list() brightness_on = 6 //luminosity when on -/obj/item/device/flashlight/emp +/obj/item/flashlight/emp var/emp_max_charges = 4 var/emp_cur_charges = 4 var/charge_tick = 0 -/obj/item/device/flashlight/emp/New() +/obj/item/flashlight/emp/New() ..() START_PROCESSING(SSobj, src) -/obj/item/device/flashlight/emp/Destroy() +/obj/item/flashlight/emp/Destroy() STOP_PROCESSING(SSobj, src) . = ..() -/obj/item/device/flashlight/emp/process() +/obj/item/flashlight/emp/process() charge_tick++ if(charge_tick < 10) return FALSE @@ -374,12 +374,12 @@ emp_cur_charges = min(emp_cur_charges+1, emp_max_charges) return TRUE -/obj/item/device/flashlight/emp/attack(mob/living/M, mob/living/user) +/obj/item/flashlight/emp/attack(mob/living/M, mob/living/user) if(on && user.zone_selected in list(BODY_ZONE_PRECISE_EYES, BODY_ZONE_PRECISE_MOUTH)) // call original attack when examining organs ..() return -/obj/item/device/flashlight/emp/afterattack(atom/movable/A, mob/user, proximity) +/obj/item/flashlight/emp/afterattack(atom/movable/A, mob/user, proximity) if(!proximity) return @@ -401,7 +401,7 @@ // Glowsticks, in the uncomfortable range of similar to flares, // but not similar enough to make it worth a refactor -/obj/item/device/flashlight/glowstick +/obj/item/flashlight/glowstick name = "glowstick" desc = "A military-grade glowstick." w_class = WEIGHT_CLASS_SMALL @@ -412,27 +412,27 @@ grind_results = list("phenol" = 15, "hydrogen" = 10, "oxygen" = 5) //Meth-in-a-stick var/fuel = 0 -/obj/item/device/flashlight/glowstick/Initialize() +/obj/item/flashlight/glowstick/Initialize() fuel = rand(1600, 2000) light_color = color . = ..() -/obj/item/device/flashlight/glowstick/Destroy() +/obj/item/flashlight/glowstick/Destroy() STOP_PROCESSING(SSobj, src) . = ..() -/obj/item/device/flashlight/glowstick/process() +/obj/item/flashlight/glowstick/process() fuel = max(fuel - 1, 0) if(!fuel) turn_off() STOP_PROCESSING(SSobj, src) update_icon() -/obj/item/device/flashlight/glowstick/proc/turn_off() +/obj/item/flashlight/glowstick/proc/turn_off() on = FALSE update_icon() -/obj/item/device/flashlight/glowstick/update_icon() +/obj/item/flashlight/glowstick/update_icon() item_state = "glowstick" cut_overlays() if(!fuel) @@ -449,7 +449,7 @@ icon_state = "glowstick" cut_overlays() -/obj/item/device/flashlight/glowstick/attack_self(mob/user) +/obj/item/flashlight/glowstick/attack_self(mob/user) if(!fuel) to_chat(user, "[src] is spent.") return @@ -462,47 +462,47 @@ user.visible_message("[user] cracks and shakes [src].", "You crack and shake [src], turning it on!") activate() -/obj/item/device/flashlight/glowstick/proc/activate() +/obj/item/flashlight/glowstick/proc/activate() if(!on) on = TRUE START_PROCESSING(SSobj, src) -/obj/item/device/flashlight/glowstick/red +/obj/item/flashlight/glowstick/red name = "red glowstick" color = LIGHT_COLOR_RED -/obj/item/device/flashlight/glowstick/blue +/obj/item/flashlight/glowstick/blue name = "blue glowstick" color = LIGHT_COLOR_BLUE -/obj/item/device/flashlight/glowstick/cyan +/obj/item/flashlight/glowstick/cyan name = "cyan glowstick" color = LIGHT_COLOR_CYAN -/obj/item/device/flashlight/glowstick/orange +/obj/item/flashlight/glowstick/orange name = "orange glowstick" color = LIGHT_COLOR_ORANGE -/obj/item/device/flashlight/glowstick/yellow +/obj/item/flashlight/glowstick/yellow name = "yellow glowstick" color = LIGHT_COLOR_YELLOW -/obj/item/device/flashlight/glowstick/pink +/obj/item/flashlight/glowstick/pink name = "pink glowstick" color = LIGHT_COLOR_PINK -/obj/item/device/flashlight/glowstick/random +/obj/item/flashlight/glowstick/random name = "random colored glowstick" icon_state = "random_glowstick" color = null -/obj/item/device/flashlight/glowstick/random/Initialize() +/obj/item/flashlight/glowstick/random/Initialize() ..() - var/T = pick(typesof(/obj/item/device/flashlight/glowstick) - /obj/item/device/flashlight/glowstick/random) + var/T = pick(typesof(/obj/item/flashlight/glowstick) - /obj/item/flashlight/glowstick/random) new T(loc) return INITIALIZE_HINT_QDEL -/obj/item/device/flashlight/spotlight //invisible lighting source +/obj/item/flashlight/spotlight //invisible lighting source name = "disco light" desc = "Groovy..." icon_state = null @@ -517,7 +517,7 @@ var/range = null resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF -/obj/item/device/flashlight/flashdark +/obj/item/flashlight/flashdark name = "flashdark" desc = "A strange device manufactured with mysterious elements that somehow emits darkness. Or maybe it just sucks in light? Nobody knows for sure." icon_state = "flashdark" @@ -525,7 +525,7 @@ brightness_on = 2.5 flashlight_power = -3 -/obj/item/device/flashlight/eyelight +/obj/item/flashlight/eyelight name = "eyelight" desc = "This shouldn't exist outside of someone's head, how are you seeing this?" brightness_on = 15 diff --git a/code/game/objects/items/devices/forcefieldprojector.dm b/code/game/objects/items/devices/forcefieldprojector.dm index c0b32883e8..bb0914eeec 100644 --- a/code/game/objects/items/devices/forcefieldprojector.dm +++ b/code/game/objects/items/devices/forcefieldprojector.dm @@ -1,8 +1,9 @@ -/obj/item/device/forcefield +/obj/item/forcefield name = "forcefield projector" desc = "An experimental device that can create several forcefields at a distance." + icon = 'icons/obj/device.dmi' icon_state = "signmaker_engi" - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_SMALL flags_1 = NOBLUDGEON_1 item_state = "electronic" @@ -15,7 +16,7 @@ var/list/current_fields var/field_distance_limit = 7 -/obj/item/device/forcefield/afterattack(atom/target, mob/user, proximity_flag) +/obj/item/forcefield/afterattack(atom/target, mob/user, proximity_flag) if(!check_allowed_items(target, 1)) return if(istype(target, /obj/structure/projected_forcefield)) @@ -39,27 +40,27 @@ current_fields += F user.changeNext_move(CLICK_CD_MELEE) -/obj/item/device/forcefield/attack_self(mob/user) +/obj/item/forcefield/attack_self(mob/user) if(LAZYLEN(current_fields)) to_chat(user, "You deactivate [src], disabling all active forcefields.") for(var/obj/structure/projected_forcefield/F in current_fields) qdel(F) -/obj/item/device/forcefield/examine(mob/user) +/obj/item/forcefield/examine(mob/user) ..() var/percent_charge = round((shield_integrity/max_shield_integrity)*100) to_chat(user, "It is currently sustaining [LAZYLEN(current_fields)]/[max_fields] fields, and it's [percent_charge]% charged.") -/obj/item/device/forcefield/Initialize(mapload) +/obj/item/forcefield/Initialize(mapload) ..() current_fields = list() START_PROCESSING(SSobj, src) -/obj/item/device/forcefield/Destroy() +/obj/item/forcefield/Destroy() STOP_PROCESSING(SSobj, src) return ..() -/obj/item/device/forcefield/process() +/obj/item/forcefield/process() if(!LAZYLEN(current_fields)) shield_integrity = min(shield_integrity + 4, max_shield_integrity) else @@ -80,9 +81,9 @@ resistance_flags = INDESTRUCTIBLE CanAtmosPass = ATMOS_PASS_DENSITY armor = list("melee" = 0, "bullet" = 25, "laser" = 50, "energy" = 50, "bomb" = 25, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) - var/obj/item/device/forcefield/generator + var/obj/item/forcefield/generator -/obj/structure/projected_forcefield/Initialize(mapload, obj/item/device/forcefield/origin) +/obj/structure/projected_forcefield/Initialize(mapload, obj/item/forcefield/origin) . = ..() generator = origin diff --git a/code/game/objects/items/devices/geiger_counter.dm b/code/game/objects/items/devices/geiger_counter.dm index 83cec3c258..1b4bb55f99 100644 --- a/code/game/objects/items/devices/geiger_counter.dm +++ b/code/game/objects/items/devices/geiger_counter.dm @@ -8,15 +8,16 @@ #define RAD_GRACE_PERIOD 2 -/obj/item/device/geiger_counter //DISCLAIMER: I know nothing about how real-life Geiger counters work. This will not be realistic. ~Xhuis +/obj/item/geiger_counter //DISCLAIMER: I know nothing about how real-life Geiger counters work. This will not be realistic. ~Xhuis name = "geiger counter" desc = "A handheld device used for detecting and measuring radiation pulses." + icon = 'icons/obj/device.dmi' icon_state = "geiger_off" item_state = "multitool" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' w_class = WEIGHT_CLASS_SMALL - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT materials = list(MAT_METAL = 150, MAT_GLASS = 150) var/grace = RAD_GRACE_PERIOD @@ -29,17 +30,17 @@ var/fail_to_receive = 0 var/current_warning = 1 -/obj/item/device/geiger_counter/Initialize() +/obj/item/geiger_counter/Initialize() . = ..() START_PROCESSING(SSobj, src) soundloop = new(list(src), FALSE) -/obj/item/device/geiger_counter/Destroy() +/obj/item/geiger_counter/Destroy() STOP_PROCESSING(SSobj, src) return ..() -/obj/item/device/geiger_counter/process() +/obj/item/geiger_counter/process() update_icon() update_sound() @@ -61,7 +62,7 @@ current_tick_amount = 0 -/obj/item/device/geiger_counter/examine(mob/user) +/obj/item/geiger_counter/examine(mob/user) ..() if(!scanning) return 1 @@ -85,7 +86,7 @@ to_chat(user, "The last radiation amount detected was [last_tick_amount]") -/obj/item/device/geiger_counter/update_icon() +/obj/item/geiger_counter/update_icon() if(!scanning) icon_state = "geiger_off" return 1 @@ -107,7 +108,7 @@ icon_state = "geiger_on_5" ..() -/obj/item/device/geiger_counter/proc/update_sound() +/obj/item/geiger_counter/proc/update_sound() var/datum/looping_sound/geiger/loop = soundloop if(!scanning) loop.stop() @@ -118,31 +119,31 @@ loop.last_radiation = radiation_count loop.start() -/obj/item/device/geiger_counter/rad_act(amount) +/obj/item/geiger_counter/rad_act(amount) . = ..() if(amount <= RAD_BACKGROUND_RADIATION || !scanning) return current_tick_amount += amount update_icon() -/obj/item/device/geiger_counter/attack_self(mob/user) +/obj/item/geiger_counter/attack_self(mob/user) scanning = !scanning update_icon() to_chat(user, "[icon2html(src, user)] You switch [scanning ? "on" : "off"] [src].") -/obj/item/device/geiger_counter/attack(mob/living/M, mob/user) +/obj/item/geiger_counter/afterattack(atom/target, mob/user) if(user.a_intent == INTENT_HELP) if(!(obj_flags & EMAGGED)) - user.visible_message("[user] scans [M] with [src].", "You scan [M]'s radiation levels with [src]...") - addtimer(CALLBACK(src, .proc/scan, M, user), 20, TIMER_UNIQUE) // Let's not have spamming GetAllContents + user.visible_message("[user] scans [target] with [src].", "You scan [target]'s radiation levels with [src]...") + addtimer(CALLBACK(src, .proc/scan, target, user), 20, TIMER_UNIQUE) // Let's not have spamming GetAllContents else - user.visible_message("[user] scans [M] with [src].", "You project [src]'s stored radiation into [M]'s body!") - M.rad_act(radiation_count) + user.visible_message("[user] scans [target] with [src].", "You project [src]'s stored radiation into [target]!") + target.rad_act(radiation_count) radiation_count = 0 - return 1 - ..() + return TRUE + return ..() -/obj/item/device/geiger_counter/proc/scan(atom/A, mob/user) +/obj/item/geiger_counter/proc/scan(atom/A, mob/user) var/rad_strength = 0 for(var/i in get_rad_contents(A)) // Yes it's intentional that you can't detect radioactive things under rad protection. Gives traitors a way to hide their glowing green rocks. var/atom/thing = i @@ -160,11 +161,11 @@ to_chat(user, "[icon2html(src, user)] Subject is irradiated. Radiation levels: [M.radiation].") if(rad_strength) - to_chat(user, "[icon2html(src, user)] Subject has irradiated objects on them. Radioactive strength: [rad_strength]") + to_chat(user, "[icon2html(src, user)] Target contains radioactive contamination. Radioactive strength: [rad_strength]") else - to_chat(user, "[icon2html(src, user)] Subject is free of radioactive contamination.") + to_chat(user, "[icon2html(src, user)] Target is free of radioactive contamination.") -/obj/item/device/geiger_counter/attackby(obj/item/I, mob/user, params) +/obj/item/geiger_counter/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/screwdriver) && (obj_flags & EMAGGED)) if(scanning) to_chat(user, "Turn off [src] before you perform this action!") @@ -180,7 +181,7 @@ else return ..() -/obj/item/device/geiger_counter/AltClick(mob/living/user) +/obj/item/geiger_counter/AltClick(mob/living/user) if(!istype(user) || !user.canUseTopic(src, BE_CLOSE)) return ..() if(!scanning) @@ -190,7 +191,7 @@ to_chat(usr, "You flush [src]'s radiation counts, resetting it to normal.") update_icon() -/obj/item/device/geiger_counter/emag_act(mob/user) +/obj/item/geiger_counter/emag_act(mob/user) if(obj_flags & EMAGGED) return if(scanning) @@ -199,17 +200,17 @@ to_chat(user, "You override [src]'s radiation storing protocols. It will now generate small doses of radiation, and stored rads are now projected into creatures you scan.") obj_flags |= EMAGGED -/obj/item/device/geiger_counter/cyborg +/obj/item/geiger_counter/cyborg var/datum/component/mobhook -/obj/item/device/geiger_counter/cyborg/equipped(mob/user) +/obj/item/geiger_counter/cyborg/equipped(mob/user) . = ..() if (mobhook && mobhook.parent != user) QDEL_NULL(mobhook) if (!mobhook) mobhook = user.AddComponent(/datum/component/redirect, list(COMSIG_ATOM_RAD_ACT), CALLBACK(src, /atom.proc/rad_act)) -/obj/item/device/geiger_counter/cyborg/dropped() +/obj/item/geiger_counter/cyborg/dropped() . = ..() QDEL_NULL(mobhook) diff --git a/code/game/objects/items/devices/gps.dm b/code/game/objects/items/devices/gps.dm index b3e33ec8ba..0030eabcdd 100644 --- a/code/game/objects/items/devices/gps.dm +++ b/code/game/objects/items/devices/gps.dm @@ -1,11 +1,11 @@ GLOBAL_LIST_EMPTY(GPS_list) -/obj/item/device/gps +/obj/item/gps name = "global positioning system" desc = "Helping lost spacemen find their way through the planets since 2016." icon = 'icons/obj/telescience.dmi' icon_state = "gps-c" w_class = WEIGHT_CLASS_SMALL - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT obj_flags = UNIQUE_RENAME var/gpstag = "COM0" var/emped = FALSE @@ -14,38 +14,38 @@ GLOBAL_LIST_EMPTY(GPS_list) var/updating = TRUE //Automatic updating of GPS list. Can be set to manual by user. var/global_mode = TRUE //If disabled, only GPS signals of the same Z level are shown -/obj/item/device/gps/examine(mob/user) +/obj/item/gps/examine(mob/user) ..() to_chat(user, "Alt-click to switch it [tracking ? "off":"on"].") -/obj/item/device/gps/Initialize() +/obj/item/gps/Initialize() . = ..() GLOB.GPS_list += src name = "global positioning system ([gpstag])" add_overlay("working") -/obj/item/device/gps/Destroy() +/obj/item/gps/Destroy() GLOB.GPS_list -= src return ..() -/obj/item/device/gps/emp_act(severity) +/obj/item/gps/emp_act(severity) emped = TRUE cut_overlay("working") add_overlay("emp") addtimer(CALLBACK(src, .proc/reboot), 300, TIMER_OVERRIDE) //if a new EMP happens, remove the old timer so it doesn't reactivate early SStgui.close_uis(src) //Close the UI control if it is open. -/obj/item/device/gps/proc/reboot() +/obj/item/gps/proc/reboot() emped = FALSE cut_overlay("emp") add_overlay("working") -/obj/item/device/gps/AltClick(mob/user) +/obj/item/gps/AltClick(mob/user) if(!user.canUseTopic(src, BE_CLOSE)) return toggletracking(user) -/obj/item/device/gps/proc/toggletracking(mob/user) +/obj/item/gps/proc/toggletracking(mob/user) if(!user.canUseTopic(src, BE_CLOSE)) return //user not valid to use gps if(emped) @@ -61,7 +61,7 @@ GLOBAL_LIST_EMPTY(GPS_list) tracking = TRUE -/obj/item/device/gps/ui_interact(mob/user, ui_key = "gps", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) // Remember to use the appropriate state. +/obj/item/gps/ui_interact(mob/user, ui_key = "gps", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) // Remember to use the appropriate state. if(emped) to_chat(user, "[src] fizzles weakly.") return @@ -74,7 +74,7 @@ GLOBAL_LIST_EMPTY(GPS_list) ui.set_autoupdate(state = updating) -/obj/item/device/gps/ui_data(mob/user) +/obj/item/gps/ui_data(mob/user) var/list/data = list() data["power"] = tracking data["tag"] = gpstag @@ -90,7 +90,7 @@ GLOBAL_LIST_EMPTY(GPS_list) data["signals"] = list() for(var/gps in GLOB.GPS_list) - var/obj/item/device/gps/G = gps + var/obj/item/gps/G = gps if(G.emped || !G.tracking || G == src) continue var/turf/pos = get_turf(G) @@ -115,7 +115,7 @@ GLOBAL_LIST_EMPTY(GPS_list) -/obj/item/device/gps/ui_act(action, params) +/obj/item/gps/ui_act(action, params) if(..()) return switch(action) @@ -137,42 +137,42 @@ GLOBAL_LIST_EMPTY(GPS_list) . = TRUE -/obj/item/device/gps/science +/obj/item/gps/science icon_state = "gps-s" gpstag = "SCI0" -/obj/item/device/gps/engineering +/obj/item/gps/engineering icon_state = "gps-e" gpstag = "ENG0" -/obj/item/device/gps/mining +/obj/item/gps/mining icon_state = "gps-m" gpstag = "MINE0" desc = "A positioning system helpful for rescuing trapped or injured miners, keeping one on you at all times while mining might just save your life." -/obj/item/device/gps/cyborg +/obj/item/gps/cyborg icon_state = "gps-b" gpstag = "BORG0" desc = "A mining cyborg internal positioning system. Used as a recovery beacon for damaged cyborg assets, or a collaboration tool for mining teams." flags_1 = NODROP_1 -/obj/item/device/gps/internal +/obj/item/gps/internal icon_state = null flags_1 = ABSTRACT_1 gpstag = "Eerie Signal" desc = "Report to a coder immediately." invisibility = INVISIBILITY_MAXIMUM -/obj/item/device/gps/mining/internal +/obj/item/gps/mining/internal icon_state = "gps-m" gpstag = "MINER" desc = "A positioning system helpful for rescuing trapped or injured miners, keeping one on you at all times while mining might just save your life." -/obj/item/device/gps/internal/base +/obj/item/gps/internal/base gpstag = "NT_AUX" desc = "A homing signal from Nanotrasen's mining base." -/obj/item/device/gps/visible_debug +/obj/item/gps/visible_debug name = "visible GPS" gpstag = "ADMIN" desc = "This admin-spawn GPS unit leaves the coordinates visible \ @@ -180,12 +180,12 @@ GLOBAL_LIST_EMPTY(GPS_list) for marking the area around the transition edges." var/list/turf/tagged -/obj/item/device/gps/visible_debug/Initialize() +/obj/item/gps/visible_debug/Initialize() . = ..() tagged = list() START_PROCESSING(SSfastprocess, src) -/obj/item/device/gps/visible_debug/process() +/obj/item/gps/visible_debug/process() var/turf/T = get_turf(src) if(T) // I assume it's faster to color,tag and OR the turf in, rather @@ -194,13 +194,13 @@ GLOBAL_LIST_EMPTY(GPS_list) T.maptext = "[T.x],[T.y],[T.z]" tagged |= T -/obj/item/device/gps/visible_debug/proc/clear() +/obj/item/gps/visible_debug/proc/clear() while(tagged.len) var/turf/T = pop(tagged) T.color = initial(T.color) T.maptext = initial(T.maptext) -/obj/item/device/gps/visible_debug/Destroy() +/obj/item/gps/visible_debug/Destroy() if(tagged) clear() tagged = null diff --git a/code/game/objects/items/devices/instruments.dm b/code/game/objects/items/devices/instruments.dm index 4124f77aeb..427437866d 100644 --- a/code/game/objects/items/devices/instruments.dm +++ b/code/game/objects/items/devices/instruments.dm @@ -1,5 +1,5 @@ //copy pasta of the space piano, don't hurt me -Pete -/obj/item/device/instrument +/obj/item/instrument name = "generic instrument" resistance_flags = FLAMMABLE force = 10 @@ -11,34 +11,34 @@ var/instrumentId = "generic" var/instrumentExt = "mid" -/obj/item/device/instrument/Initialize() +/obj/item/instrument/Initialize() . = ..() song = new(instrumentId, src, instrumentExt) -/obj/item/device/instrument/Destroy() +/obj/item/instrument/Destroy() qdel(song) song = null return ..() -/obj/item/device/instrument/suicide_act(mob/user) +/obj/item/instrument/suicide_act(mob/user) user.visible_message("[user] begins to play 'Gloomy Sunday'! It looks like [user.p_theyre()] trying to commit suicide!") return (BRUTELOSS) -/obj/item/device/instrument/Initialize(mapload) +/obj/item/instrument/Initialize(mapload) . = ..() if(mapload) song.tempo = song.sanitize_tempo(song.tempo) // tick_lag isn't set when the map is loaded -/obj/item/device/instrument/attack_self(mob/user) +/obj/item/instrument/attack_self(mob/user) if(!user.IsAdvancedToolUser()) to_chat(user, "You don't have the dexterity to do this!") return 1 interact(user) -/obj/item/device/instrument/interact(mob/user) +/obj/item/instrument/interact(mob/user) ui_interact(user) -/obj/item/device/instrument/ui_interact(mob/user) +/obj/item/instrument/ui_interact(mob/user) if(!user) return @@ -48,7 +48,7 @@ user.set_machine(src) song.interact(user) -/obj/item/device/instrument/violin +/obj/item/instrument/violin name = "space violin" desc = "A wooden musical instrument with four strings and a bow. \"The devil went down to space, he was looking for an assistant to grief.\"" icon_state = "violin" @@ -56,14 +56,14 @@ hitsound = "swing_hit" instrumentId = "violin" -/obj/item/device/instrument/violin/golden +/obj/item/instrument/violin/golden name = "golden violin" desc = "A golden musical instrument with four strings and a bow. \"The devil went down to space, he was looking for an assistant to grief.\"" icon_state = "golden_violin" item_state = "golden_violin" resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF -/obj/item/device/instrument/piano_synth +/obj/item/instrument/piano_synth name = "synthesizer" desc = "An advanced electronic synthesizer that can be used as various instruments." icon_state = "synth" @@ -73,11 +73,11 @@ var/static/list/insTypes = list("accordion" = "mid", "bikehorn" = "ogg", "glockenspiel" = "mid", "guitar" = "ogg", "harmonica" = "mid", "piano" = "ogg", "recorder" = "mid", "saxophone" = "mid", "trombone" = "mid", "violin" = "mid", "xylophone" = "mid") //No eguitar you ear-rapey fuckers. actions_types = list(/datum/action/item_action/synthswitch) -/obj/item/device/instrument/piano_synth/proc/changeInstrument(name = "piano") +/obj/item/instrument/piano_synth/proc/changeInstrument(name = "piano") song.instrumentDir = name song.instrumentExt = insTypes[name] -/obj/item/device/instrument/guitar +/obj/item/instrument/guitar name = "guitar" desc = "It's made of wood and has bronze strings." icon_state = "guitar" @@ -87,7 +87,7 @@ hitsound = 'sound/weapons/stringsmash.ogg' instrumentId = "guitar" -/obj/item/device/instrument/eguitar +/obj/item/instrument/eguitar name = "electric guitar" desc = "Makes all your shredding needs possible." icon_state = "eguitar" @@ -98,28 +98,28 @@ instrumentId = "eguitar" instrumentExt = "ogg" -/obj/item/device/instrument/glockenspiel +/obj/item/instrument/glockenspiel name = "glockenspiel" desc = "Smooth metal bars perfect for any marching band." icon_state = "glockenspiel" item_state = "glockenspiel" instrumentId = "glockenspiel" -/obj/item/device/instrument/accordion +/obj/item/instrument/accordion name = "accordion" desc = "Pun-Pun not included." icon_state = "accordion" item_state = "accordion" instrumentId = "accordion" -/obj/item/device/instrument/trumpet +/obj/item/instrument/trumpet name = "trumpet" desc = "To announce the arrival of the king!" icon_state = "trumpet" item_state = "trombone" instrumentId = "trombone" -/obj/item/device/instrument/trumpet/spectral +/obj/item/instrument/trumpet/spectral name = "spectral trumpet" desc = "Things are about to get spooky!" icon_state = "trumpet" @@ -128,22 +128,22 @@ instrumentId = "trombone" attack_verb = list("played","jazzed","trumpeted","mourned","dooted","spooked") -/obj/item/device/instrument/trumpet/spectral/Initialize() +/obj/item/instrument/trumpet/spectral/Initialize() . = ..() AddComponent(/datum/component/spooky) -/obj/item/device/instrument/trumpet/spectral/attack(mob/living/carbon/C, mob/user) +/obj/item/instrument/trumpet/spectral/attack(mob/living/carbon/C, mob/user) playsound (loc, 'sound/instruments/trombone/En4.mid', 100,1,-1) ..() -/obj/item/device/instrument/saxophone +/obj/item/instrument/saxophone name = "saxophone" desc = "This soothing sound will be sure to leave your audience in tears." icon_state = "saxophone" item_state = "saxophone" instrumentId = "saxophone" -/obj/item/device/instrument/saxophone/spectral +/obj/item/instrument/saxophone/spectral name = "spectral saxophone" desc = "This spooky sound will be sure to leave mortals in bones." icon_state = "saxophone" @@ -152,22 +152,22 @@ force = 0 attack_verb = list("played","jazzed","saxxed","mourned","dooted","spooked") -/obj/item/device/instrument/saxophone/spectral/Initialize() +/obj/item/instrument/saxophone/spectral/Initialize() . = ..() AddComponent(/datum/component/spooky) -/obj/item/device/instrument/saxophone/spectral/attack(mob/living/carbon/C, mob/user) +/obj/item/instrument/saxophone/spectral/attack(mob/living/carbon/C, mob/user) playsound (loc, 'sound/instruments/saxophone/En4.mid', 100,1,-1) ..() -/obj/item/device/instrument/trombone +/obj/item/instrument/trombone name = "trombone" desc = "How can any pool table ever hope to compete?" icon_state = "trombone" item_state = "trombone" instrumentId = "trombone" -/obj/item/device/instrument/trombone/spectral +/obj/item/instrument/trombone/spectral name = "spectral trombone" desc = "A skeleton's favorite instrument. Apply directly on the mortals." instrumentId = "trombone" @@ -176,15 +176,15 @@ force = 0 attack_verb = list("played","jazzed","tromboned","mourned","dooted","spooked") -/obj/item/device/instrument/trombone/spectral/Initialize() +/obj/item/instrument/trombone/spectral/Initialize() . = ..() AddComponent(/datum/component/spooky) -/obj/item/device/instrument/trombone/spectral/attack(mob/living/carbon/C, mob/user) +/obj/item/instrument/trombone/spectral/attack(mob/living/carbon/C, mob/user) playsound (loc, 'sound/instruments/trombone/Cn4.mid', 100,1,-1) ..() -/obj/item/device/instrument/recorder +/obj/item/instrument/recorder name = "recorder" desc = "Just like in school, playing ability and all." force = 5 @@ -192,24 +192,24 @@ item_state = "recorder" instrumentId = "recorder" -/obj/item/device/instrument/harmonica +/obj/item/instrument/harmonica name = "harmonica" desc = "For when you get a bad case of the space blues." icon_state = "harmonica" item_state = "harmonica" instrumentId = "harmonica" - slot_flags = SLOT_MASK + slot_flags = ITEM_SLOT_MASK force = 5 w_class = WEIGHT_CLASS_SMALL actions_types = list(/datum/action/item_action/instrument) -/obj/item/device/instrument/harmonica/speechModification(message) +/obj/item/instrument/harmonica/speechModification(message) if(song.playing && ismob(loc)) to_chat(loc, "You stop playing the harmonica to talk...") song.playing = FALSE return message -/obj/item/device/instrument/bikehorn +/obj/item/instrument/bikehorn name = "gilded bike horn" desc = "An exquisitely decorated bike horn, capable of honking in a variety of notes." icon_state = "bike_horn" diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index 098643e87f..c8f10d7a39 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -1,4 +1,4 @@ -/obj/item/device/laser_pointer +/obj/item/laser_pointer name = "laser pointer" desc = "Don't shine it in your eyes!" icon = 'icons/obj/device.dmi' @@ -6,7 +6,7 @@ item_state = "pen" var/pointer_icon_state flags_1 = CONDUCT_1 | NOBLUDGEON_1 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT materials = list(MAT_METAL=500, MAT_GLASS=500) w_class = WEIGHT_CLASS_SMALL var/turf/pointer_loc @@ -18,26 +18,26 @@ var/obj/item/stock_parts/micro_laser/diode //used for upgrading! -/obj/item/device/laser_pointer/red +/obj/item/laser_pointer/red pointer_icon_state = "red_laser" -/obj/item/device/laser_pointer/green +/obj/item/laser_pointer/green pointer_icon_state = "green_laser" -/obj/item/device/laser_pointer/blue +/obj/item/laser_pointer/blue pointer_icon_state = "blue_laser" -/obj/item/device/laser_pointer/purple +/obj/item/laser_pointer/purple pointer_icon_state = "purple_laser" -/obj/item/device/laser_pointer/New() +/obj/item/laser_pointer/New() ..() diode = new(src) if(!pointer_icon_state) pointer_icon_state = pick("red_laser","green_laser","blue_laser","purple_laser") -/obj/item/device/laser_pointer/upgraded/New() +/obj/item/laser_pointer/upgraded/New() ..() diode = new /obj/item/stock_parts/micro_laser/ultra -/obj/item/device/laser_pointer/attackby(obj/item/W, mob/user, params) +/obj/item/laser_pointer/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/stock_parts/micro_laser)) if(!diode) if(!user.transferItemToLoc(W, src)) @@ -55,10 +55,10 @@ else return ..() -/obj/item/device/laser_pointer/afterattack(atom/target, mob/living/user, flag, params) +/obj/item/laser_pointer/afterattack(atom/target, mob/living/user, flag, params) laser_act(target, user, params) -/obj/item/device/laser_pointer/proc/laser_act(atom/target, mob/living/user, params) +/obj/item/laser_pointer/proc/laser_act(atom/target, mob/living/user, params) if( !(user in (viewers(7,target))) ) return if (!diode) @@ -182,7 +182,7 @@ flick_overlay_view(I, targloc, 10) icon_state = "pointer" -/obj/item/device/laser_pointer/process() +/obj/item/laser_pointer/process() if(prob(20 - recharge_locked*5)) energy += 1 if(energy >= max_energy) diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index a1cdfe4a9b..750e2a9a9b 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -38,7 +38,7 @@ #define LIGHT_BURNED 3 -/obj/item/device/lightreplacer +/obj/item/lightreplacer name = "light replacer" desc = "A device to automatically replace lights. Refill with broken or working lightbulbs, or sheets of glass." @@ -50,7 +50,7 @@ righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT force = 8 var/max_uses = 20 @@ -67,16 +67,16 @@ // when we get this many shards, we get a free bulb. var/shards_required = 4 -/obj/item/device/lightreplacer/New() +/obj/item/lightreplacer/New() uses = max_uses / 2 failmsg = "The [name]'s refill light blinks red." ..() -/obj/item/device/lightreplacer/examine(mob/user) +/obj/item/lightreplacer/examine(mob/user) ..() to_chat(user, status_string()) -/obj/item/device/lightreplacer/attackby(obj/item/W, mob/user, params) +/obj/item/lightreplacer/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/stack/sheet/glass)) var/obj/item/stack/sheet/glass/G = W @@ -148,30 +148,30 @@ to_chat(user, "You fill \the [src] with lights from \the [S]. " + status_string() + "") -/obj/item/device/lightreplacer/emag_act() +/obj/item/lightreplacer/emag_act() if(obj_flags & EMAGGED) return Emag() -/obj/item/device/lightreplacer/attack_self(mob/user) +/obj/item/lightreplacer/attack_self(mob/user) to_chat(user, status_string()) -/obj/item/device/lightreplacer/update_icon() +/obj/item/lightreplacer/update_icon() icon_state = "lightreplacer[(obj_flags & EMAGGED ? 1 : 0)]" -/obj/item/device/lightreplacer/proc/status_string() +/obj/item/lightreplacer/proc/status_string() return "It has [uses] light\s remaining (plus [bulb_shards] fragment\s)." -/obj/item/device/lightreplacer/proc/Use(mob/user) +/obj/item/lightreplacer/proc/Use(mob/user) playsound(src.loc, 'sound/machines/click.ogg', 50, 1) AddUses(-1) return 1 // Negative numbers will subtract -/obj/item/device/lightreplacer/proc/AddUses(amount = 1) +/obj/item/lightreplacer/proc/AddUses(amount = 1) uses = CLAMP(uses + amount, 0, max_uses) -/obj/item/device/lightreplacer/proc/AddShards(amount = 1, user) +/obj/item/lightreplacer/proc/AddShards(amount = 1, user) bulb_shards += amount var/new_bulbs = round(bulb_shards / shards_required) if(new_bulbs > 0) @@ -182,13 +182,13 @@ playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) return new_bulbs -/obj/item/device/lightreplacer/proc/Charge(var/mob/user) +/obj/item/lightreplacer/proc/Charge(var/mob/user) charge += 1 if(charge > 3) AddUses(1) charge = 1 -/obj/item/device/lightreplacer/proc/ReplaceLight(obj/machinery/light/target, mob/living/U) +/obj/item/lightreplacer/proc/ReplaceLight(obj/machinery/light/target, mob/living/U) if(target.status != LIGHT_OK) if(CanUse(U)) @@ -222,7 +222,7 @@ to_chat(U, "There is a working [target.fitting] already inserted!") return -/obj/item/device/lightreplacer/proc/Emag() +/obj/item/lightreplacer/proc/Emag() obj_flags ^= EMAGGED playsound(src.loc, "sparks", 100, 1) if(obj_flags & EMAGGED) @@ -231,14 +231,14 @@ name = initial(name) update_icon() -/obj/item/device/lightreplacer/proc/CanUse(mob/living/user) +/obj/item/lightreplacer/proc/CanUse(mob/living/user) src.add_fingerprint(user) if(uses > 0) return 1 else return 0 -/obj/item/device/lightreplacer/afterattack(atom/T, mob/U, proximity) +/obj/item/lightreplacer/afterattack(atom/T, mob/U, proximity) if(!proximity) return if(!isturf(T)) @@ -255,12 +255,12 @@ if(!used) to_chat(U, failmsg) -/obj/item/device/lightreplacer/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J) +/obj/item/lightreplacer/proc/janicart_insert(mob/user, obj/structure/janitorialcart/J) J.put_in_cart(src, user) J.myreplacer = src J.update_icon() -/obj/item/device/lightreplacer/cyborg/janicart_insert(mob/user, obj/structure/janitorialcart/J) +/obj/item/lightreplacer/cyborg/janicart_insert(mob/user, obj/structure/janitorialcart/J) return #undef LIGHT_OK diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm index 4b47a0373f..5fa089a012 100644 --- a/code/game/objects/items/devices/megaphone.dm +++ b/code/game/objects/items/devices/megaphone.dm @@ -1,6 +1,7 @@ -/obj/item/device/megaphone +/obj/item/megaphone name = "megaphone" desc = "A device used to project your voice. Loudly." + icon = 'icons/obj/device.dmi' icon_state = "megaphone" item_state = "radio" lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' @@ -10,13 +11,13 @@ var/spamcheck = 0 var/list/voicespan = list(SPAN_COMMAND) -/obj/item/device/megaphone/suicide_act(mob/living/carbon/user) +/obj/item/megaphone/suicide_act(mob/living/carbon/user) user.visible_message("[user] is uttering [user.p_their()] last words into \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") spamcheck = 0//so they dont have to worry about recharging user.say("AAAAAAAAAAAARGHHHHH")//he must have died while coding this return OXYLOSS -/obj/item/device/megaphone/get_held_item_speechspans(mob/living/carbon/user) +/obj/item/megaphone/get_held_item_speechspans(mob/living/carbon/user) if(spamcheck > world.time) to_chat(user, "\The [src] needs to recharge!") else @@ -24,26 +25,26 @@ spamcheck = world.time + 50 return voicespan -/obj/item/device/megaphone/emag_act(mob/user) +/obj/item/megaphone/emag_act(mob/user) if(obj_flags & EMAGGED) return to_chat(user, "You overload \the [src]'s voice synthesizer.") obj_flags |= EMAGGED voicespan = list(SPAN_REALLYBIG, "userdanger") -/obj/item/device/megaphone/sec +/obj/item/megaphone/sec name = "security megaphone" icon_state = "megaphone-sec" -/obj/item/device/megaphone/command +/obj/item/megaphone/command name = "command megaphone" icon_state = "megaphone-command" -/obj/item/device/megaphone/cargo +/obj/item/megaphone/cargo name = "supply megaphone" icon_state = "megaphone-cargo" -/obj/item/device/megaphone/clown +/obj/item/megaphone/clown name = "clown's megaphone" desc = "Something that should not exist." icon_state = "megaphone-clown" diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index 69de7025c0..063676ea62 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -10,9 +10,10 @@ -/obj/item/device/multitool +/obj/item/multitool name = "multitool" desc = "Used for pulsing wires to test which to cut. Not recommended by doctors." + icon = 'icons/obj/device.dmi' icon_state = "multitool" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' @@ -31,11 +32,11 @@ var/datum/integrated_io/selected_io = null //functional for integrated circuits. var/mode = 0 -/obj/item/device/multitool/suicide_act(mob/living/carbon/user) +/obj/item/multitool/suicide_act(mob/living/carbon/user) user.visible_message("[user] puts the [src] to [user.p_their()] chest. It looks like [user.p_theyre()] trying to pulse [user.p_their()] heart off!") return OXYLOSS//theres a reason it wasnt recommended by doctors -/obj/item/device/multitool/attack_self(mob/user) +/obj/item/multitool/attack_self(mob/user) if(selected_io) selected_io = null to_chat(user, "You clear the wired connection from the multitool.") @@ -43,13 +44,13 @@ ..() update_icon() -/obj/item/device/multitool/update_icon() +/obj/item/multitool/update_icon() if(selected_io) icon_state = "multitool_red" else icon_state = "multitool" -/obj/item/device/multitool/proc/wire(var/datum/integrated_io/io, mob/user) +/obj/item/multitool/proc/wire(var/datum/integrated_io/io, mob/user) if(!io.holder.assembly) to_chat(user, "\The [io.holder] needs to be secured inside an assembly first.") return @@ -78,7 +79,7 @@ update_icon() -/obj/item/device/multitool/proc/unwire(var/datum/integrated_io/io1, var/datum/integrated_io/io2, mob/user) +/obj/item/multitool/proc/unwire(var/datum/integrated_io/io1, var/datum/integrated_io/io2, mob/user) if(!io1.linked.len || !io2.linked.len) to_chat(user, "There is nothing connected to the data channel.") return @@ -98,22 +99,22 @@ // Syndicate device disguised as a multitool; it will turn red when an AI camera is nearby. -/obj/item/device/multitool/ai_detect +/obj/item/multitool/ai_detect var/track_cooldown = 0 var/track_delay = 10 //How often it checks for proximity var/detect_state = PROXIMITY_NONE var/rangealert = 8 //Glows red when inside var/rangewarning = 20 //Glows yellow when inside -/obj/item/device/multitool/ai_detect/New() +/obj/item/multitool/ai_detect/New() ..() START_PROCESSING(SSobj, src) -/obj/item/device/multitool/ai_detect/Destroy() +/obj/item/multitool/ai_detect/Destroy() STOP_PROCESSING(SSobj, src) return ..() -/obj/item/device/multitool/ai_detect/process() +/obj/item/multitool/ai_detect/process() if(track_cooldown > world.time) return detect_state = PROXIMITY_NONE @@ -121,7 +122,7 @@ icon_state = "[initial(icon_state)][detect_state]" track_cooldown = world.time + track_delay -/obj/item/device/multitool/ai_detect/proc/multitool_detect() +/obj/item/multitool/ai_detect/proc/multitool_detect() var/turf/our_turf = get_turf(src) for(var/mob/living/silicon/ai/AI in GLOB.ai_list) if(AI.cameraFollow == src) @@ -141,11 +142,11 @@ detect_state = PROXIMITY_NEAR break -/obj/item/device/multitool/ai_detect/admin +/obj/item/multitool/ai_detect/admin desc = "Used for pulsing wires to test which to cut. Not recommended by doctors. Has a strange tag that says 'Grief in Safety'." //What else should I say for a meme item? track_delay = 5 -/obj/item/device/multitool/ai_detect/admin/multitool_detect() +/obj/item/multitool/ai_detect/admin/multitool_detect() var/turf/our_turf = get_turf(src) for(var/mob/J in urange(rangewarning,our_turf)) if(GLOB.admin_datums[J.ckey]) @@ -155,12 +156,12 @@ detect_state = PROXIMITY_ON_SCREEN break -/obj/item/device/multitool/cyborg +/obj/item/multitool/cyborg name = "multitool" desc = "Optimised and stripped-down version of a regular multitool." toolspeed = 0.5 -/obj/item/device/multitool/abductor +/obj/item/multitool/abductor name = "alien multitool" desc = "An omni-technological interface." icon = 'icons/obj/abductor.dmi' diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index b96c32f53f..f6d3192bce 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -1,4 +1,4 @@ -/obj/item/device/paicard +/obj/item/paicard name = "personal AI device" icon = 'icons/obj/aicards.dmi' icon_state = "pai" @@ -6,26 +6,26 @@ lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' w_class = WEIGHT_CLASS_SMALL - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT var/mob/living/silicon/pai/pai resistance_flags = FIRE_PROOF | ACID_PROOF | INDESTRUCTIBLE -/obj/item/device/paicard/suicide_act(mob/living/user) +/obj/item/paicard/suicide_act(mob/living/user) user.visible_message("[user] is staring sadly at [src]! [user.p_they()] can't keep living without real human intimacy!") return OXYLOSS -/obj/item/device/paicard/Initialize() +/obj/item/paicard/Initialize() SSpai.pai_card_list += src add_overlay("pai-off") return ..() -/obj/item/device/paicard/Destroy() +/obj/item/paicard/Destroy() //Will stop people throwing friend pAIs into the singularity so they can respawn SSpai.pai_card_list -= src QDEL_NULL(pai) return ..() -/obj/item/device/paicard/attack_self(mob/user) +/obj/item/paicard/attack_self(mob/user) if (!in_range(src, user)) return user.set_machine(src) @@ -60,7 +60,7 @@ onclose(user, "paicard") return -/obj/item/device/paicard/Topic(href, href_list) +/obj/item/paicard/Topic(href, href_list) if(!usr || usr.stat) return @@ -115,19 +115,19 @@ // WIRE_RECEIVE = 2 // WIRE_TRANSMIT = 4 -/obj/item/device/paicard/proc/setPersonality(mob/living/silicon/pai/personality) +/obj/item/paicard/proc/setPersonality(mob/living/silicon/pai/personality) src.pai = personality src.add_overlay("pai-null") playsound(loc, 'sound/effects/pai_boot.ogg', 50, 1, -1) audible_message("\The [src] plays a cheerful startup noise!") -/obj/item/device/paicard/proc/removePersonality() +/obj/item/paicard/proc/removePersonality() QDEL_NULL(pai) cut_overlays() add_overlay("pai-off") -/obj/item/device/paicard/proc/setEmotion(emotion) +/obj/item/paicard/proc/setEmotion(emotion) if(pai) src.cut_overlays() switch(emotion) @@ -152,10 +152,10 @@ if(10) src.add_overlay("pai-null") -/obj/item/device/paicard/proc/alertUpdate() +/obj/item/paicard/proc/alertUpdate() visible_message("[src] flashes a message across its screen, \"Additional personalities available for download.\"", "[src] bleeps electronically.") -/obj/item/device/paicard/emp_act(severity) +/obj/item/paicard/emp_act(severity) if(pai) pai.emp_act(severity) ..() diff --git a/code/game/objects/items/devices/pipe_painter.dm b/code/game/objects/items/devices/pipe_painter.dm index d76b7174da..a13de183a0 100644 --- a/code/game/objects/items/devices/pipe_painter.dm +++ b/code/game/objects/items/devices/pipe_painter.dm @@ -1,4 +1,4 @@ -/obj/item/device/pipe_painter +/obj/item/pipe_painter name = "pipe painter" icon = 'icons/obj/bureaucracy.dmi' icon_state = "labeler1" @@ -8,7 +8,7 @@ materials = list(MAT_METAL=5000, MAT_GLASS=2000) -/obj/item/device/pipe_painter/afterattack(atom/A, mob/user, proximity_flag) +/obj/item/pipe_painter/afterattack(atom/A, mob/user, proximity_flag) //Make sure we only paint adjacent items if(!proximity_flag) return @@ -21,9 +21,9 @@ playsound(src, 'sound/machines/click.ogg', 50, 1) user.visible_message("[user] paints \the [P] [paint_color].","You paint \the [P] [paint_color].") -/obj/item/device/pipe_painter/attack_self(mob/user) +/obj/item/pipe_painter/attack_self(mob/user) paint_color = input("Which colour do you want to use?","Pipe painter") in GLOB.pipe_paint_colors -/obj/item/device/pipe_painter/examine(mob/user) +/obj/item/pipe_painter/examine(mob/user) ..() to_chat(user, "It is set to [paint_color].") diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index ea4236b823..8d36fd9986 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -1,8 +1,9 @@ // Powersink - used to drain station power -/obj/item/device/powersink +/obj/item/powersink desc = "A nulling power sink which drains energy from electrical systems." name = "power sink" + icon = 'icons/obj/device.dmi' icon_state = "powersink0" item_state = "electronic" lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' @@ -25,10 +26,10 @@ var/obj/structure/cable/attached // the attached cable -/obj/item/device/powersink/update_icon() +/obj/item/powersink/update_icon() icon_state = "powersink[mode == OPERATING]" -/obj/item/device/powersink/proc/set_mode(value) +/obj/item/powersink/proc/set_mode(value) if(value == mode) return switch(value) @@ -55,7 +56,7 @@ update_icon() set_light(0) -/obj/item/device/powersink/attackby(obj/item/I, mob/user, params) +/obj/item/powersink/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/screwdriver)) if(mode == DISCONNECTED) var/turf/T = loc @@ -80,13 +81,13 @@ else return ..() -/obj/item/device/powersink/attack_paw() +/obj/item/powersink/attack_paw() return -/obj/item/device/powersink/attack_ai() +/obj/item/powersink/attack_ai() return -/obj/item/device/powersink/attack_hand(mob/user) +/obj/item/powersink/attack_hand(mob/user) . = ..() if(.) return @@ -110,7 +111,7 @@ "You hear a click.") set_mode(CLAMPED_OFF) -/obj/item/device/powersink/process() +/obj/item/powersink/process() if(!attached) set_mode(DISCONNECTED) return diff --git a/code/game/objects/items/devices/pressureplates.dm b/code/game/objects/items/devices/pressureplates.dm index d1ecf9ee28..8520571d22 100644 --- a/code/game/objects/items/devices/pressureplates.dm +++ b/code/game/objects/items/devices/pressureplates.dm @@ -1,7 +1,8 @@ -/obj/item/device/pressure_plate +/obj/item/pressure_plate name = "pressure plate" desc = "An electronic device that triggers when stepped on." + icon = 'icons/obj/device.dmi' item_state = "flash" icon_state = "pressureplate" level = 1 @@ -9,7 +10,7 @@ var/trigger_item = FALSE var/trigger_silent = FALSE var/sound/trigger_sound = 'sound/effects/pressureplate.ogg' - var/obj/item/device/assembly/signaler/sigdev = null + var/obj/item/assembly/signaler/sigdev = null var/roundstart_signaller = FALSE var/roundstart_signaller_freq = FREQ_PRESSURE_PLATE var/roundstart_signaller_code = 30 @@ -20,7 +21,7 @@ var/can_trigger = TRUE var/trigger_delay = 10 -/obj/item/device/pressure_plate/Initialize() +/obj/item/pressure_plate/Initialize() . = ..() tile_overlay = image(icon = 'icons/turf/floors.dmi', icon_state = "pp_overlay") if(roundstart_signaller) @@ -30,7 +31,7 @@ if(isopenturf(loc)) hide(TRUE) -/obj/item/device/pressure_plate/Crossed(atom/movable/AM) +/obj/item/pressure_plate/Crossed(atom/movable/AM) . = ..() if(!can_trigger || !active) return @@ -42,18 +43,18 @@ can_trigger = FALSE addtimer(CALLBACK(src, .proc/trigger), trigger_delay) -/obj/item/device/pressure_plate/proc/trigger() +/obj/item/pressure_plate/proc/trigger() can_trigger = TRUE if(istype(sigdev)) sigdev.signal() -/obj/item/device/pressure_plate/attackby(obj/item/I, mob/living/L) - if(istype(I, /obj/item/device/assembly/signaler) && !istype(sigdev) && removable_signaller && L.transferItemToLoc(I, src)) +/obj/item/pressure_plate/attackby(obj/item/I, mob/living/L) + if(istype(I, /obj/item/assembly/signaler) && !istype(sigdev) && removable_signaller && L.transferItemToLoc(I, src)) sigdev = I to_chat(L, "You attach [I] to [src]!") return ..() -/obj/item/device/pressure_plate/attack_self(mob/living/L) +/obj/item/pressure_plate/attack_self(mob/living/L) if(removable_signaller && istype(sigdev)) to_chat(L, "You remove [sigdev] from [src]") if(!L.put_in_hands(sigdev)) @@ -61,7 +62,7 @@ sigdev = null return ..() -/obj/item/device/pressure_plate/hide(yes) +/obj/item/pressure_plate/hide(yes) if(yes) invisibility = INVISIBILITY_MAXIMUM anchored = TRUE diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index 3e3a760fb3..1734fa5bfb 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -1,4 +1,4 @@ -/obj/item/device/electropack +/obj/item/electropack name = "electropack" desc = "Dance my monkeys! DANCE!!!" icon = 'icons/obj/radio.dmi' @@ -7,7 +7,7 @@ lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' flags_1 = CONDUCT_1 - slot_flags = SLOT_BACK + slot_flags = ITEM_SLOT_BACK w_class = WEIGHT_CLASS_HUGE materials = list(MAT_METAL=10000, MAT_GLASS=2500) var/on = TRUE @@ -15,20 +15,20 @@ var/frequency = FREQ_ELECTROPACK var/shock_cooldown = 0 -/obj/item/device/electropack/suicide_act(mob/user) +/obj/item/electropack/suicide_act(mob/user) user.visible_message("[user] hooks [user.p_them()]self to the electropack and spams the trigger! It looks like [user.p_theyre()] trying to commit suicide!") return (FIRELOSS) -/obj/item/device/electropack/Initialize() +/obj/item/electropack/Initialize() . = ..() SSradio.add_object(src, frequency, RADIO_SIGNALER) -/obj/item/device/electropack/Destroy() +/obj/item/electropack/Destroy() SSradio.remove_object(src, frequency) return ..() //ATTACK HAND IGNORING PARENT RETURN VALUE -/obj/item/device/electropack/attack_hand(mob/user) +/obj/item/electropack/attack_hand(mob/user) if(iscarbon(user)) var/mob/living/carbon/C = user if(src == C.back) @@ -36,7 +36,7 @@ return return ..() -/obj/item/device/electropack/attackby(obj/item/W, mob/user, params) +/obj/item/electropack/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/clothing/head/helmet)) var/obj/item/assembly/shock_kit/A = new /obj/item/assembly/shock_kit( user ) A.icon = 'icons/obj/assemblies.dmi' @@ -58,7 +58,7 @@ else return ..() -/obj/item/device/electropack/Topic(href, href_list) +/obj/item/electropack/Topic(href, href_list) //..() var/mob/living/carbon/C = usr if(usr.stat || usr.restrained() || C.back == src) @@ -98,7 +98,7 @@ return return -/obj/item/device/electropack/receive_signal(datum/signal/signal) +/obj/item/electropack/receive_signal(datum/signal/signal) if(!signal || signal.data["code"] != code) return @@ -122,7 +122,7 @@ master.receive_signal() return -/obj/item/device/electropack/attack_self(mob/user) +/obj/item/electropack/attack_self(mob/user) if(!ishuman(user)) return diff --git a/code/game/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm index 2d3d869676..dd7489d6b1 100644 --- a/code/game/objects/items/devices/radio/encryptionkey.dm +++ b/code/game/objects/items/devices/radio/encryptionkey.dm @@ -1,4 +1,4 @@ -/obj/item/device/encryptionkey +/obj/item/encryptionkey name = "standard encryption key" desc = "An encryption key for a radio headset. Has no special codes in it. WHY DOES IT EXIST? ASK NANOTRASEN." icon = 'icons/obj/radio.dmi' @@ -9,124 +9,124 @@ var/independent = FALSE var/list/channels = list() -/obj/item/device/encryptionkey/syndicate +/obj/item/encryptionkey/syndicate name = "syndicate encryption key" desc = "An encryption key for a radio headset. To access the syndicate channel, use :t." icon_state = "syn_cypherkey" channels = list("Syndicate" = 1) syndie = 1//Signifies that it de-crypts Syndicate transmissions -/obj/item/device/encryptionkey/binary +/obj/item/encryptionkey/binary name = "binary translator key" desc = "An encryption key for a radio headset. To access the binary channel, use :b." icon_state = "bin_cypherkey" translate_binary = TRUE -/obj/item/device/encryptionkey/headset_sec +/obj/item/encryptionkey/headset_sec name = "security radio encryption key" desc = "An encryption key for a radio headset. To access the security channel, use :s." icon_state = "sec_cypherkey" channels = list("Security" = 1) -/obj/item/device/encryptionkey/headset_eng +/obj/item/encryptionkey/headset_eng name = "engineering radio encryption key" desc = "An encryption key for a radio headset. To access the engineering channel, use :e." icon_state = "eng_cypherkey" channels = list("Engineering" = 1) -/obj/item/device/encryptionkey/headset_rob +/obj/item/encryptionkey/headset_rob name = "robotics radio encryption key" desc = "An encryption key for a radio headset. To access the engineering channel, use :e. For research, use :n." icon_state = "rob_cypherkey" channels = list("Science" = 1, "Engineering" = 1) -/obj/item/device/encryptionkey/headset_med +/obj/item/encryptionkey/headset_med name = "medical radio encryption key" desc = "An encryption key for a radio headset. To access the medical channel, use :m." icon_state = "med_cypherkey" channels = list("Medical" = 1) -/obj/item/device/encryptionkey/headset_sci +/obj/item/encryptionkey/headset_sci name = "science radio encryption key" desc = "An encryption key for a radio headset. To access the science channel, use :n." icon_state = "sci_cypherkey" channels = list("Science" = 1) -/obj/item/device/encryptionkey/headset_medsci +/obj/item/encryptionkey/headset_medsci name = "medical research radio encryption key" desc = "An encryption key for a radio headset. To access the medical channel, use :m. For science, use :n." icon_state = "medsci_cypherkey" channels = list("Science" = 1, "Medical" = 1) -/obj/item/device/encryptionkey/headset_com +/obj/item/encryptionkey/headset_com name = "command radio encryption key" desc = "An encryption key for a radio headset. To access the command channel, use :c." icon_state = "com_cypherkey" channels = list("Command" = 1) -/obj/item/device/encryptionkey/heads/captain +/obj/item/encryptionkey/heads/captain name = "\proper the captain's encryption key" desc = "An encryption key for a radio headset. Channels are as follows: :c - command, :s - security, :e - engineering, :u - supply, :v - service, :m - medical, :n - science." icon_state = "cap_cypherkey" channels = list("Command" = 1, "Security" = 1, "Engineering" = 0, "Science" = 0, "Medical" = 0, "Supply" = 0, "Service" = 0) -/obj/item/device/encryptionkey/heads/rd +/obj/item/encryptionkey/heads/rd name = "\proper the research director's encryption key" desc = "An encryption key for a radio headset. To access the science channel, use :n. For command, use :c." icon_state = "rd_cypherkey" channels = list("Science" = 1, "Command" = 1) -/obj/item/device/encryptionkey/heads/hos +/obj/item/encryptionkey/heads/hos name = "\proper the head of security's encryption key" desc = "An encryption key for a radio headset. To access the security channel, use :s. For command, use :c." icon_state = "hos_cypherkey" channels = list("Security" = 1, "Command" = 1) -/obj/item/device/encryptionkey/heads/ce +/obj/item/encryptionkey/heads/ce name = "\proper the chief engineer's encryption key" desc = "An encryption key for a radio headset. To access the engineering channel, use :e. For command, use :c." icon_state = "ce_cypherkey" channels = list("Engineering" = 1, "Command" = 1) -/obj/item/device/encryptionkey/heads/cmo +/obj/item/encryptionkey/heads/cmo name = "\proper the chief medical officer's encryption key" desc = "An encryption key for a radio headset. To access the medical channel, use :m. For command, use :c." icon_state = "cmo_cypherkey" channels = list("Medical" = 1, "Command" = 1) -/obj/item/device/encryptionkey/heads/hop +/obj/item/encryptionkey/heads/hop name = "\proper the head of personnel's encryption key" desc = "An encryption key for a radio headset. Channels are as follows: :u - supply, :v - service, :c - command." icon_state = "hop_cypherkey" channels = list("Supply" = 1, "Service" = 1, "Command" = 1) -/obj/item/device/encryptionkey/headset_cargo +/obj/item/encryptionkey/headset_cargo name = "supply radio encryption key" desc = "An encryption key for a radio headset. To access the supply channel, use :u." icon_state = "cargo_cypherkey" channels = list("Supply" = 1) -/obj/item/device/encryptionkey/headset_mining +/obj/item/encryptionkey/headset_mining name = "mining radio encryption key" desc = "An encryption key for a radio headset. To access the supply channel, use :u. For science, use :n." icon_state = "cargo_cypherkey" channels = list("Supply" = 1, "Science" = 1) -/obj/item/device/encryptionkey/headset_service +/obj/item/encryptionkey/headset_service name = "service radio encryption key" desc = "An encryption key for a radio headset. To access the service channel, use :v." icon_state = "srv_cypherkey" channels = list("Service" = 1) -/obj/item/device/encryptionkey/headset_cent +/obj/item/encryptionkey/headset_cent name = "\improper CentCom radio encryption key" desc = "An encryption key for a radio headset. To access the CentCom channel, use :y." icon_state = "cent_cypherkey" independent = TRUE channels = list("CentCom" = 1) -/obj/item/device/encryptionkey/ai //ported from NT, this goes 'inside' the AI. +/obj/item/encryptionkey/ai //ported from NT, this goes 'inside' the AI. channels = list("Command" = 1, "Security" = 1, "Engineering" = 1, "Science" = 1, "Medical" = 1, "Supply" = 1, "Service" = 1, "AI Private" = 1) -/obj/item/device/encryptionkey/secbot +/obj/item/encryptionkey/secbot channels = list("AI Private"=1,"Security"=1) diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 1362721e1d..f7caacf816 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -1,4 +1,4 @@ -/obj/item/device/radio/headset +/obj/item/radio/headset name = "radio headset" desc = "An updated, modular intercom that fits over the head. Takes encryption keys." icon_state = "headset" @@ -7,34 +7,34 @@ subspace_transmission = TRUE canhear_range = 0 // can't hear headsets from very far away - slot_flags = SLOT_EARS - var/obj/item/device/encryptionkey/keyslot2 = null + slot_flags = ITEM_SLOT_EARS + var/obj/item/encryptionkey/keyslot2 = null dog_fashion = null -/obj/item/device/radio/headset/suicide_act(mob/living/carbon/user) +/obj/item/radio/headset/suicide_act(mob/living/carbon/user) user.visible_message("[user] begins putting \the [src]'s antenna up [user.p_their()] nose! It looks like [user.p_theyre()] trying to give [user.p_them()]self cancer!") return TOXLOSS -/obj/item/device/radio/headset/examine(mob/user) +/obj/item/radio/headset/examine(mob/user) ..() to_chat(user, "To speak on the general radio frequency, use ; before speaking.") if (command) to_chat(user, "Alt-click to toggle the high-volume mode.") -/obj/item/device/radio/headset/Initialize() +/obj/item/radio/headset/Initialize() . = ..() recalculateChannels() -/obj/item/device/radio/headset/Destroy() +/obj/item/radio/headset/Destroy() QDEL_NULL(keyslot2) return ..() -/obj/item/device/radio/headset/talk_into(mob/living/M, message, channel, list/spans,datum/language/language) +/obj/item/radio/headset/talk_into(mob/living/M, message, channel, list/spans,datum/language/language) if (!listening) return ITALICS | REDUCE_RANGE return ..() -/obj/item/device/radio/headset/can_receive(freq, level, AIuser) +/obj/item/radio/headset/can_receive(freq, level, AIuser) if(ishuman(src.loc)) var/mob/living/carbon/human/H = src.loc if(H.ears == src) @@ -43,165 +43,165 @@ return ..(freq, level) return FALSE -/obj/item/device/radio/headset/syndicate //disguised to look like a normal headset for stealth ops +/obj/item/radio/headset/syndicate //disguised to look like a normal headset for stealth ops -/obj/item/device/radio/headset/syndicate/alt //undisguised bowman with flash protection +/obj/item/radio/headset/syndicate/alt //undisguised bowman with flash protection name = "syndicate headset" desc = "A syndicate headset that can be used to hear all radio frequencies. Protects ears from flashbangs. \nTo access the syndicate channel, use ; before speaking." icon_state = "syndie_headset" item_state = "syndie_headset" flags_2 = BANG_PROTECT_2 | NO_EMP_WIRES_2 -/obj/item/device/radio/headset/syndicate/alt/leader +/obj/item/radio/headset/syndicate/alt/leader name = "team leader headset" command = TRUE -/obj/item/device/radio/headset/syndicate/Initialize() +/obj/item/radio/headset/syndicate/Initialize() . = ..() make_syndie() -/obj/item/device/radio/headset/binary -/obj/item/device/radio/headset/binary/Initialize() +/obj/item/radio/headset/binary +/obj/item/radio/headset/binary/Initialize() . = ..() qdel(keyslot) - keyslot = new /obj/item/device/encryptionkey/binary + keyslot = new /obj/item/encryptionkey/binary recalculateChannels() -/obj/item/device/radio/headset/headset_sec +/obj/item/radio/headset/headset_sec name = "security radio headset" desc = "This is used by your elite security force.\nTo access the security channel, use :s." icon_state = "sec_headset" - keyslot = new /obj/item/device/encryptionkey/headset_sec + keyslot = new /obj/item/encryptionkey/headset_sec -/obj/item/device/radio/headset/headset_sec/alt +/obj/item/radio/headset/headset_sec/alt name = "security bowman headset" desc = "This is used by your elite security force. Protects ears from flashbangs.\nTo access the security channel, use :s." icon_state = "sec_headset_alt" item_state = "sec_headset_alt" flags_2 = BANG_PROTECT_2 | NO_EMP_WIRES_2 -/obj/item/device/radio/headset/headset_eng +/obj/item/radio/headset/headset_eng name = "engineering radio headset" desc = "When the engineers wish to chat like girls.\nTo access the engineering channel, use :e." icon_state = "eng_headset" - keyslot = new /obj/item/device/encryptionkey/headset_eng + keyslot = new /obj/item/encryptionkey/headset_eng -/obj/item/device/radio/headset/headset_rob +/obj/item/radio/headset/headset_rob name = "robotics radio headset" desc = "Made specifically for the roboticists, who cannot decide between departments.\nTo access the engineering channel, use :e. For research, use :n." icon_state = "rob_headset" - keyslot = new /obj/item/device/encryptionkey/headset_rob + keyslot = new /obj/item/encryptionkey/headset_rob -/obj/item/device/radio/headset/headset_med +/obj/item/radio/headset/headset_med name = "medical radio headset" desc = "A headset for the trained staff of the medbay.\nTo access the medical channel, use :m." icon_state = "med_headset" - keyslot = new /obj/item/device/encryptionkey/headset_med + keyslot = new /obj/item/encryptionkey/headset_med -/obj/item/device/radio/headset/headset_sci +/obj/item/radio/headset/headset_sci name = "science radio headset" desc = "A sciency headset. Like usual.\nTo access the science channel, use :n." icon_state = "sci_headset" - keyslot = new /obj/item/device/encryptionkey/headset_sci + keyslot = new /obj/item/encryptionkey/headset_sci -/obj/item/device/radio/headset/headset_medsci +/obj/item/radio/headset/headset_medsci name = "medical research radio headset" desc = "A headset that is a result of the mating between medical and science.\nTo access the medical channel, use :m. For science, use :n." icon_state = "medsci_headset" - keyslot = new /obj/item/device/encryptionkey/headset_medsci + keyslot = new /obj/item/encryptionkey/headset_medsci -/obj/item/device/radio/headset/headset_com +/obj/item/radio/headset/headset_com name = "command radio headset" desc = "A headset with a commanding channel.\nTo access the command channel, use :c." icon_state = "com_headset" - keyslot = new /obj/item/device/encryptionkey/headset_com + keyslot = new /obj/item/encryptionkey/headset_com -/obj/item/device/radio/headset/heads +/obj/item/radio/headset/heads command = TRUE -/obj/item/device/radio/headset/heads/captain +/obj/item/radio/headset/heads/captain name = "\proper the captain's headset" desc = "The headset of the king.\nChannels are as follows: :c - command, :s - security, :e - engineering, :u - supply, :v - service, :m - medical, :n - science." icon_state = "com_headset" - keyslot = new /obj/item/device/encryptionkey/heads/captain + keyslot = new /obj/item/encryptionkey/heads/captain -/obj/item/device/radio/headset/heads/captain/alt +/obj/item/radio/headset/heads/captain/alt name = "\proper the captain's bowman headset" desc = "The headset of the boss. Protects ears from flashbangs.\nChannels are as follows: :c - command, :s - security, :e - engineering, :u - supply, :v - service, :m - medical, :n - science." icon_state = "com_headset_alt" item_state = "com_headset_alt" flags_2 = BANG_PROTECT_2 | NO_EMP_WIRES_2 -/obj/item/device/radio/headset/heads/rd +/obj/item/radio/headset/heads/rd name = "\proper the research director's headset" desc = "Headset of the fellow who keeps society marching towards technological singularity.\nTo access the science channel, use :n. For command, use :c." icon_state = "com_headset" - keyslot = new /obj/item/device/encryptionkey/heads/rd + keyslot = new /obj/item/encryptionkey/heads/rd -/obj/item/device/radio/headset/heads/hos +/obj/item/radio/headset/heads/hos name = "\proper the head of security's headset" desc = "The headset of the man in charge of keeping order and protecting the station.\nTo access the security channel, use :s. For command, use :c." icon_state = "com_headset" - keyslot = new /obj/item/device/encryptionkey/heads/hos + keyslot = new /obj/item/encryptionkey/heads/hos -/obj/item/device/radio/headset/heads/hos/alt +/obj/item/radio/headset/heads/hos/alt name = "\proper the head of security's bowman headset" desc = "The headset of the man in charge of keeping order and protecting the station. Protects ears from flashbangs.\nTo access the security channel, use :s. For command, use :c." icon_state = "com_headset_alt" item_state = "com_headset_alt" flags_2 = BANG_PROTECT_2 | NO_EMP_WIRES_2 -/obj/item/device/radio/headset/heads/ce +/obj/item/radio/headset/heads/ce name = "\proper the chief engineer's headset" desc = "The headset of the guy in charge of keeping the station powered and undamaged.\nTo access the engineering channel, use :e. For command, use :c." icon_state = "com_headset" - keyslot = new /obj/item/device/encryptionkey/heads/ce + keyslot = new /obj/item/encryptionkey/heads/ce -/obj/item/device/radio/headset/heads/cmo +/obj/item/radio/headset/heads/cmo name = "\proper the chief medical officer's headset" desc = "The headset of the highly trained medical chief.\nTo access the medical channel, use :m. For command, use :c." icon_state = "com_headset" - keyslot = new /obj/item/device/encryptionkey/heads/cmo + keyslot = new /obj/item/encryptionkey/heads/cmo -/obj/item/device/radio/headset/heads/hop +/obj/item/radio/headset/heads/hop name = "\proper the head of personnel's headset" desc = "The headset of the guy who will one day be captain.\nChannels are as follows: :u - supply, :v - service, :c - command." icon_state = "com_headset" - keyslot = new /obj/item/device/encryptionkey/heads/hop + keyslot = new /obj/item/encryptionkey/heads/hop -/obj/item/device/radio/headset/headset_cargo +/obj/item/radio/headset/headset_cargo name = "supply radio headset" desc = "A headset used by the QM and his slaves.\nTo access the supply channel, use :u." icon_state = "cargo_headset" - keyslot = new /obj/item/device/encryptionkey/headset_cargo + keyslot = new /obj/item/encryptionkey/headset_cargo -/obj/item/device/radio/headset/headset_cargo/mining +/obj/item/radio/headset/headset_cargo/mining name = "mining radio headset" desc = "Headset used by shaft miners.\nTo access the supply channel, use :u. For science, use :n." icon_state = "mine_headset" - keyslot = new /obj/item/device/encryptionkey/headset_mining + keyslot = new /obj/item/encryptionkey/headset_mining -/obj/item/device/radio/headset/headset_srv +/obj/item/radio/headset/headset_srv name = "service radio headset" desc = "Headset used by the service staff, tasked with keeping the station full, happy and clean.\nTo access the service channel, use :v." icon_state = "srv_headset" - keyslot = new /obj/item/device/encryptionkey/headset_service + keyslot = new /obj/item/encryptionkey/headset_service -/obj/item/device/radio/headset/headset_cent +/obj/item/radio/headset/headset_cent name = "\improper CentCom headset" desc = "A headset used by the upper echelons of Nanotrasen.\nTo access the CentCom channel, use :y." icon_state = "cent_headset" - keyslot = new /obj/item/device/encryptionkey/headset_com - keyslot2 = new /obj/item/device/encryptionkey/headset_cent + keyslot = new /obj/item/encryptionkey/headset_com + keyslot2 = new /obj/item/encryptionkey/headset_cent -/obj/item/device/radio/headset/headset_cent/empty +/obj/item/radio/headset/headset_cent/empty keyslot = null keyslot2 = null -/obj/item/device/radio/headset/headset_cent/commander - keyslot = new /obj/item/device/encryptionkey/heads/captain +/obj/item/radio/headset/headset_cent/commander + keyslot = new /obj/item/encryptionkey/heads/captain -/obj/item/device/radio/headset/headset_cent/alt +/obj/item/radio/headset/headset_cent/alt name = "\improper CentCom bowman headset" desc = "A headset especially for emergency response personnel. Protects ears from flashbangs.\nTo access the CentCom channel, use :y." icon_state = "cent_headset_alt" @@ -209,15 +209,15 @@ keyslot = null flags_2 = BANG_PROTECT_2 | NO_EMP_WIRES_2 -/obj/item/device/radio/headset/ai +/obj/item/radio/headset/ai name = "\proper Integrated Subspace Transceiver " - keyslot2 = new /obj/item/device/encryptionkey/ai + keyslot2 = new /obj/item/encryptionkey/ai command = TRUE -/obj/item/device/radio/headset/ai/can_receive(freq, level) +/obj/item/radio/headset/ai/can_receive(freq, level) return ..(freq, level, TRUE) -/obj/item/device/radio/headset/attackby(obj/item/W, mob/user, params) +/obj/item/radio/headset/attackby(obj/item/W, mob/user, params) user.set_machine(src) if(istype(W, /obj/item/screwdriver)) @@ -241,7 +241,7 @@ else to_chat(user, "This headset doesn't have any unique encryption keys! How useless...") - else if(istype(W, /obj/item/device/encryptionkey)) + else if(istype(W, /obj/item/encryptionkey)) if(keyslot && keyslot2) to_chat(user, "The headset can't hold another key!") return @@ -262,7 +262,7 @@ return ..() -/obj/item/device/radio/headset/recalculateChannels() +/obj/item/radio/headset/recalculateChannels() ..() if(keyslot2) for(var/ch_name in keyslot2.channels) @@ -279,7 +279,7 @@ for(var/ch_name in channels) secure_radio_connections[ch_name] = add_radio(src, GLOB.radiochannels[ch_name]) -/obj/item/device/radio/headset/AltClick(mob/living/user) +/obj/item/radio/headset/AltClick(mob/living/user) if(!istype(user) || !Adjacent(user) || user.incapacitated()) return if (command) diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 0ac123566f..02f549956a 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -1,4 +1,4 @@ -/obj/item/device/radio/intercom +/obj/item/radio/intercom name = "station intercom" desc = "Talk through this." icon_state = "intercom" @@ -12,22 +12,22 @@ dog_fashion = null var/unfastened = FALSE -/obj/item/device/radio/intercom/unscrewed +/obj/item/radio/intercom/unscrewed unfastened = TRUE -/obj/item/device/radio/intercom/ratvar +/obj/item/radio/intercom/ratvar name = "hierophant intercom" desc = "A modified intercom that uses the Hierophant network instead of subspace tech. Can listen to and broadcast on any frequency." icon_state = "intercom_ratvar" freerange = TRUE -/obj/item/device/radio/intercom/ratvar/attackby(obj/item/I, mob/living/user, params) +/obj/item/radio/intercom/ratvar/attackby(obj/item/I, mob/living/user, params) if(istype(I, /obj/item/screwdriver)) to_chat(user, "[src] is fastened to the wall with [is_servant_of_ratvar(user) ? "replicant alloy" : "some material you've never seen"], and can't be removed.") return //no unfastening! . = ..() -/obj/item/device/radio/intercom/ratvar/process() +/obj/item/radio/intercom/ratvar/process() if(!istype(SSticker.mode, /datum/game_mode/clockwork_cult)) invisibility = INVISIBILITY_OBSERVER alpha = 125 @@ -38,24 +38,24 @@ emped = FALSE ..() -/obj/item/device/radio/intercom/Initialize(mapload, ndir, building) +/obj/item/radio/intercom/Initialize(mapload, ndir, building) . = ..() if(building) setDir(ndir) START_PROCESSING(SSobj, src) -/obj/item/device/radio/intercom/Destroy() +/obj/item/radio/intercom/Destroy() STOP_PROCESSING(SSobj, src) return ..() -/obj/item/device/radio/intercom/examine(mob/user) +/obj/item/radio/intercom/examine(mob/user) ..() if(!unfastened) to_chat(user, "It's screwed and secured to the wall.") else to_chat(user, "It's unscrewed from the wall, and can be detached.") -/obj/item/device/radio/intercom/attackby(obj/item/I, mob/living/user, params) +/obj/item/radio/intercom/attackby(obj/item/I, mob/living/user, params) if(istype(I, /obj/item/screwdriver)) if(unfastened) user.visible_message("[user] starts tightening [src]'s screws...", "You start screwing in [src]...") @@ -82,20 +82,20 @@ return return ..() -/obj/item/device/radio/intercom/attack_ai(mob/user) +/obj/item/radio/intercom/attack_ai(mob/user) interact(user) -/obj/item/device/radio/intercom/attack_hand(mob/user) +/obj/item/radio/intercom/attack_hand(mob/user) . = ..() if(.) return interact(user) -/obj/item/device/radio/intercom/interact(mob/user) +/obj/item/radio/intercom/interact(mob/user) ..() ui_interact(user, state = GLOB.default_state) -/obj/item/device/radio/intercom/can_receive(freq, level) +/obj/item/radio/intercom/can_receive(freq, level) if(!on) return FALSE if(wires.is_cut(WIRE_RX)) @@ -113,14 +113,14 @@ return TRUE -/obj/item/device/radio/intercom/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, list/spans, message_mode) +/obj/item/radio/intercom/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, list/spans, message_mode) if (message_mode == MODE_INTERCOM) return // Avoid hearing the same thing twice if(!anyai && !(speaker in ai)) return ..() -/obj/item/device/radio/intercom/process() +/obj/item/radio/intercom/process() if(((world.timeofday - last_tick) > 30) || ((world.timeofday - last_tick) < 0)) last_tick = world.timeofday @@ -135,7 +135,7 @@ else icon_state = initial(icon_state) -/obj/item/device/radio/intercom/add_blood_DNA(list/blood_dna) +/obj/item/radio/intercom/add_blood_DNA(list/blood_dna) return FALSE //Created through the autolathe or through deconstructing intercoms. Can be applied to wall to make a new intercom on it! @@ -143,7 +143,7 @@ name = "intercom frame" desc = "A ready-to-go intercom. Just slap it on a wall and screw it in!" icon_state = "intercom" - result_path = /obj/item/device/radio/intercom/unscrewed + result_path = /obj/item/radio/intercom/unscrewed pixel_shift = 29 inverse = TRUE materials = list(MAT_METAL = 75, MAT_GLASS = 25) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 1f6f97284b..010372c5c1 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -1,4 +1,4 @@ -/obj/item/device/radio +/obj/item/radio icon = 'icons/obj/radio.dmi' name = "station bounced radio" icon_state = "walkietalkie" @@ -8,7 +8,7 @@ flags_1 = CONDUCT_1 | HEAR_1 flags_2 = NO_EMP_WIRES_2 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT throw_speed = 3 throw_range = 7 w_class = WEIGHT_CLASS_SMALL @@ -33,7 +33,7 @@ var/command = FALSE // If true, use_command can be toggled at will. // Encryption key handling - var/obj/item/device/encryptionkey/keyslot + var/obj/item/encryptionkey/keyslot var/translate_binary = FALSE // If true, can hear the special binary channel. var/independent = FALSE // If true, can say/hear on the special CentCom channel. var/syndie = FALSE // If true, hears all well-known channels automatically, and can say/hear on the Syndicate channel. @@ -43,15 +43,15 @@ var/const/FREQ_LISTENING = 1 //FREQ_BROADCASTING = 2 -/obj/item/device/radio/suicide_act(mob/living/user) +/obj/item/radio/suicide_act(mob/living/user) user.visible_message("[user] starts bouncing [src] off their head! It looks like [user.p_theyre()] trying to commit suicide!") return BRUTELOSS -/obj/item/device/radio/proc/set_frequency(new_frequency) +/obj/item/radio/proc/set_frequency(new_frequency) remove_radio(src, frequency) frequency = add_radio(src, new_frequency) -/obj/item/device/radio/proc/recalculateChannels() +/obj/item/radio/proc/recalculateChannels() channels = list() translate_binary = FALSE syndie = FALSE @@ -72,19 +72,19 @@ for(var/ch_name in channels) secure_radio_connections[ch_name] = add_radio(src, GLOB.radiochannels[ch_name]) -/obj/item/device/radio/proc/make_syndie() // Turns normal radios into Syndicate radios! +/obj/item/radio/proc/make_syndie() // Turns normal radios into Syndicate radios! qdel(keyslot) - keyslot = new /obj/item/device/encryptionkey/syndicate + keyslot = new /obj/item/encryptionkey/syndicate syndie = 1 recalculateChannels() -/obj/item/device/radio/Destroy() +/obj/item/radio/Destroy() remove_radio_all(src) //Just to be sure QDEL_NULL(wires) QDEL_NULL(keyslot) return ..() -/obj/item/device/radio/Initialize() +/obj/item/radio/Initialize() wires = new /datum/wires/radio(src) if(prison_radio) wires.cut(WIRE_TX) // OH GOD WHY @@ -96,7 +96,7 @@ for(var/ch_name in channels) secure_radio_connections[ch_name] = add_radio(src, GLOB.radiochannels[ch_name]) -/obj/item/device/radio/interact(mob/user) +/obj/item/radio/interact(mob/user) if (..()) return if(unscrewed && !isAI(user)) @@ -104,7 +104,7 @@ else ui_interact(user) -/obj/item/device/radio/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ +/obj/item/radio/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ datum/tgui/master_ui = null, datum/ui_state/state = GLOB.inventory_state) . = ..() ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) @@ -112,7 +112,7 @@ ui = new(user, src, ui_key, "radio", name, 370, 220 + channels.len * 22, master_ui, state) ui.open() -/obj/item/device/radio/ui_data(mob/user) +/obj/item/radio/ui_data(mob/user) var/list/data = list() data["broadcasting"] = broadcasting @@ -128,11 +128,11 @@ data["useCommand"] = use_command data["subspace"] = subspace_transmission data["subspaceSwitchable"] = subspace_switchable - data["headset"] = istype(src, /obj/item/device/radio/headset) + data["headset"] = istype(src, /obj/item/radio/headset) return data -/obj/item/device/radio/ui_act(action, params, datum/tgui/ui) +/obj/item/radio/ui_act(action, params, datum/tgui/ui) if(..()) return switch(action) @@ -191,7 +191,7 @@ recalculateChannels() . = TRUE -/obj/item/device/radio/talk_into(atom/movable/M, message, channel, list/spans, datum/language/language) +/obj/item/radio/talk_into(atom/movable/M, message, channel, list/spans, datum/language/language) if(!spans) spans = M.get_spans() if(!language) @@ -199,7 +199,7 @@ INVOKE_ASYNC(src, .proc/talk_into_impl, M, message, channel, spans.Copy(), language) return ITALICS | REDUCE_RANGE -/obj/item/device/radio/proc/talk_into_impl(atom/movable/M, message, channel, list/spans, datum/language/language) +/obj/item/radio/proc/talk_into_impl(atom/movable/M, message, channel, list/spans, datum/language/language) if(!on) return // the device has to be on if(!M || !message) @@ -236,7 +236,7 @@ // Nearby active jammers severely gibberish the message var/turf/position = get_turf(src) - for(var/obj/item/device/jammer/jammer in GLOB.active_jammers) + for(var/obj/item/jammer/jammer in GLOB.active_jammers) var/turf/jammer_turf = get_turf(jammer) if(position.z == jammer_turf.z && (get_dist(position, jammer_turf) < jammer.range)) message = Gibberish(message,100) @@ -267,7 +267,7 @@ // was never received, send a mundane broadcast (no headsets). addtimer(CALLBACK(src, .proc/backup_transmission, signal), 20) -/obj/item/device/radio/proc/backup_transmission(datum/signal/subspace/vocal/signal) +/obj/item/radio/proc/backup_transmission(datum/signal/subspace/vocal/signal) var/turf/T = get_turf(src) if (signal.data["done"] && (T.z in signal.levels)) return @@ -278,7 +278,7 @@ signal.levels = list(T.z) signal.broadcast() -/obj/item/device/radio/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) +/obj/item/radio/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) if(radio_freq || !broadcasting || get_dist(src, speaker) > canhear_range) return @@ -297,7 +297,7 @@ talk_into(speaker, raw_message, , spans, language=message_language) // Checks if this radio can receive on the given frequency. -/obj/item/device/radio/proc/can_receive(freq, level) +/obj/item/radio/proc/can_receive(freq, level) // deny checks if (!on || !listening || wires.is_cut(WIRE_RX)) return FALSE @@ -321,14 +321,14 @@ return FALSE -/obj/item/device/radio/examine(mob/user) +/obj/item/radio/examine(mob/user) ..() if (unscrewed) to_chat(user, "It can be attached and modified.") else to_chat(user, "It cannot be modified or attached.") -/obj/item/device/radio/attackby(obj/item/W, mob/user, params) +/obj/item/radio/attackby(obj/item/W, mob/user, params) add_fingerprint(user) if(istype(W, /obj/item/screwdriver)) unscrewed = !unscrewed @@ -339,7 +339,7 @@ else return ..() -/obj/item/device/radio/emp_act(severity) +/obj/item/radio/emp_act(severity) emped++ //There's been an EMP; better count it var/curremp = emped //Remember which EMP this was if (listening && ismob(loc)) // if the radio is turned on and on someone's person they notice @@ -352,7 +352,7 @@ spawn(200) if(emped == curremp) //Don't fix it if it's been EMP'd again emped = 0 - if (!istype(src, /obj/item/device/radio/intercom)) // intercoms will turn back on on their own + if (!istype(src, /obj/item/radio/intercom)) // intercoms will turn back on on their own on = TRUE ..() @@ -361,24 +361,24 @@ /////////////////////////////// //Giving borgs their own radio to have some more room to work with -Sieve -/obj/item/device/radio/borg +/obj/item/radio/borg name = "cyborg radio" subspace_switchable = TRUE dog_fashion = null flags_2 = NO_EMP_WIRES_2 -/obj/item/device/radio/borg/Initialize(mapload) +/obj/item/radio/borg/Initialize(mapload) . = ..() -/obj/item/device/radio/borg/syndicate +/obj/item/radio/borg/syndicate syndie = 1 - keyslot = new /obj/item/device/encryptionkey/syndicate + keyslot = new /obj/item/encryptionkey/syndicate -/obj/item/device/radio/borg/syndicate/Initialize() +/obj/item/radio/borg/syndicate/Initialize() . = ..() set_frequency(FREQ_SYNDICATE) -/obj/item/device/radio/borg/attackby(obj/item/W, mob/user, params) +/obj/item/radio/borg/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/screwdriver)) if(keyslot) @@ -399,7 +399,7 @@ else to_chat(user, "This radio doesn't have any encryption keys!") - else if(istype(W, /obj/item/device/encryptionkey/)) + else if(istype(W, /obj/item/encryptionkey/)) if(keyslot) to_chat(user, "The radio can't hold another key!") return @@ -412,6 +412,6 @@ recalculateChannels() -/obj/item/device/radio/off // Station bounced radios, their only difference is spawning with the speakers off, this was made to help the lag. +/obj/item/radio/off // Station bounced radios, their only difference is spawning with the speakers off, this was made to help the lag. listening = 0 // And it's nice to have a subtype too for future features. dog_fashion = /datum/dog_fashion/back diff --git a/code/game/objects/items/devices/reverse_bear_trap.dm b/code/game/objects/items/devices/reverse_bear_trap.dm index 0d41b12ccd..fc3812be29 100644 --- a/code/game/objects/items/devices/reverse_bear_trap.dm +++ b/code/game/objects/items/devices/reverse_bear_trap.dm @@ -1,8 +1,9 @@ -/obj/item/device/reverse_bear_trap +/obj/item/reverse_bear_trap name = "reverse bear trap" desc = "A horrifying set of shut metal jaws, rigged to a kitchen timer and secured by padlock to a head-mounted clamp. To apply, hit someone with it." + icon = 'icons/obj/device.dmi' icon_state = "reverse_bear_trap" - slot_flags = SLOT_HEAD + slot_flags = ITEM_SLOT_HEAD flags_1 = CONDUCT_1 resistance_flags = FIRE_PROOF | UNACIDABLE w_class = WEIGHT_CLASS_NORMAL @@ -21,18 +22,18 @@ var/datum/looping_sound/reverse_bear_trap/soundloop var/datum/looping_sound/reverse_bear_trap_beep/soundloop2 -/obj/item/device/reverse_bear_trap/Initialize() +/obj/item/reverse_bear_trap/Initialize() . = ..() soundloop = new(list(src)) soundloop2 = new(list(src)) -/obj/item/device/reverse_bear_trap/Destroy() +/obj/item/reverse_bear_trap/Destroy() QDEL_NULL(soundloop) QDEL_NULL(soundloop2) STOP_PROCESSING(SSprocessing, src) return ..() -/obj/item/device/reverse_bear_trap/process() +/obj/item/reverse_bear_trap/process() if(!ticking) return time_left-- @@ -44,10 +45,10 @@ to_chat(loc, "*ding*") addtimer(CALLBACK(src, .proc/snap), 2) -/obj/item/device/reverse_bear_trap/attack_hand(mob/user) +/obj/item/reverse_bear_trap/attack_hand(mob/user) if(iscarbon(user)) var/mob/living/carbon/C = user - if(C.get_item_by_slot(slot_head) == src) + if(C.get_item_by_slot(SLOT_HEAD) == src) if(flags_1 & NODROP_1 && !struggling) struggling = TRUE var/fear_string @@ -80,27 +81,27 @@ return ..() -/obj/item/device/reverse_bear_trap/attack(mob/living/target, mob/living/user) - if(target.get_item_by_slot(slot_head)) +/obj/item/reverse_bear_trap/attack(mob/living/target, mob/living/user) + if(target.get_item_by_slot(SLOT_HEAD)) to_chat(user, "Remove their headgear first!") return target.visible_message("[user] starts forcing [src] onto [target]'s head!", \ "[target] starts forcing [src] onto your head!", "You hear clanking.") to_chat(user, "You start forcing [src] onto [target]'s head...") - if(!do_after(user, 30, target = target) || target.get_item_by_slot(slot_head)) + if(!do_after(user, 30, target = target) || target.get_item_by_slot(SLOT_HEAD)) return target.visible_message("[user] forces and locks [src] onto [target]'s head!", \ "[target] locks [src] onto your head!", "You hear a click, and then a timer ticking down.") to_chat(user, "You force [src] onto [target]'s head and click the padlock shut.") user.dropItemToGround(src) - target.equip_to_slot_if_possible(src, slot_head) + target.equip_to_slot_if_possible(src, SLOT_HEAD) arm() notify_ghosts("[user] put a reverse bear trap on [target]!", source = src, action = NOTIFY_ORBIT, ghost_sound = 'sound/machines/beep.ogg') -/obj/item/device/reverse_bear_trap/proc/snap() +/obj/item/reverse_bear_trap/proc/snap() reset() var/mob/living/carbon/human/H = loc - if(!istype(H) || H.get_item_by_slot(slot_head) != src) + if(!istype(H) || H.get_item_by_slot(SLOT_HEAD) != src) visible_message("[src]'s jaws snap open with an ear-piercing crack!") playsound(src, 'sound/effects/snap.ogg', 75, TRUE) else @@ -113,14 +114,14 @@ jill.death() //just in case, for some reason, they're still alive flash_color(jill, flash_color = "#FF0000", flash_time = 100) -/obj/item/device/reverse_bear_trap/proc/reset() +/obj/item/reverse_bear_trap/proc/reset() ticking = FALSE flags_1 &= ~NODROP_1 soundloop.stop() soundloop2.stop() STOP_PROCESSING(SSprocessing, src) -/obj/item/device/reverse_bear_trap/proc/arm() //hulen +/obj/item/reverse_bear_trap/proc/arm() //hulen ticking = TRUE escape_chance = initial(escape_chance) //we keep these vars until re-arm, for tracking purposes time_left = initial(time_left) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 2a954302a0..332b73c688 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -6,23 +6,24 @@ HEALTH ANALYZER GAS ANALYZER */ -/obj/item/device/t_scanner +/obj/item/t_scanner name = "\improper T-ray scanner" desc = "A terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes." + icon = 'icons/obj/device.dmi' icon_state = "t-ray0" var/on = FALSE - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_SMALL item_state = "electronic" lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' materials = list(MAT_METAL=150) -/obj/item/device/t_scanner/suicide_act(mob/living/carbon/user) +/obj/item/t_scanner/suicide_act(mob/living/carbon/user) user.visible_message("[user] begins to emit terahertz-rays into [user.p_their()] brain with [src]! It looks like [user.p_theyre()] trying to commit suicide!") return TOXLOSS -/obj/item/device/t_scanner/attack_self(mob/user) +/obj/item/t_scanner/attack_self(mob/user) on = !on icon_state = copytext(icon_state, 1, length(icon_state))+"[on]" @@ -30,13 +31,13 @@ GAS ANALYZER if(on) START_PROCESSING(SSobj, src) -/obj/item/device/t_scanner/process() +/obj/item/t_scanner/process() if(!on) STOP_PROCESSING(SSobj, src) return null scan() -/obj/item/device/t_scanner/proc/scan() +/obj/item/t_scanner/proc/scan() t_ray_scan(loc) /proc/t_ray_scan(mob/viewer, flick_time = 8, distance = 2) @@ -57,15 +58,16 @@ GAS ANALYZER if(t_ray_images.len) flick_overlay(t_ray_images, list(viewer.client), flick_time) -/obj/item/device/healthanalyzer +/obj/item/healthanalyzer name = "health analyzer" + icon = 'icons/obj/device.dmi' icon_state = "health" item_state = "healthanalyzer" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' desc = "A hand-held body scanner able to distinguish vital signs of the subject." flags_1 = CONDUCT_1 | NOBLUDGEON_1 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT throwforce = 3 w_class = WEIGHT_CLASS_TINY throw_speed = 3 @@ -75,11 +77,11 @@ GAS ANALYZER var/scanmode = 0 var/advanced = FALSE -/obj/item/device/healthanalyzer/suicide_act(mob/living/carbon/user) +/obj/item/healthanalyzer/suicide_act(mob/living/carbon/user) user.visible_message("[user] begins to analyze [user.p_them()]self with [src]! The display shows that [user.p_theyre()] dead!") return BRUTELOSS -/obj/item/device/healthanalyzer/attack_self(mob/user) +/obj/item/healthanalyzer/attack_self(mob/user) if(!scanmode) to_chat(user, "You switch the health analyzer to scan chemical contents.") scanmode = 1 @@ -87,7 +89,7 @@ GAS ANALYZER to_chat(user, "You switch the health analyzer to check physical health.") scanmode = 0 -/obj/item/device/healthanalyzer/attack(mob/living/M, mob/living/carbon/human/user) +/obj/item/healthanalyzer/attack(mob/living/M, mob/living/carbon/human/user) // Clumsiness/brain damage check if ((user.has_trait(TRAIT_CLUMSY) || user.has_trait(TRAIT_DUMB)) && prob(50)) @@ -172,7 +174,7 @@ GAS ANALYZER trauma_desc += B.scan_desc trauma_text += trauma_desc to_chat(user, "\tCerebral traumas detected: subjects appears to be suffering from [english_list(trauma_text)].") - if(C.roundstart_traits.len) + if(C.roundstart_quirks.len) to_chat(user, "\tSubject has the following physiological traits: [C.get_trait_string()].") if(advanced) to_chat(user, "\tBrain Activity Level: [(200 - M.getBrainLoss())/2]%.") @@ -315,7 +317,7 @@ GAS ANALYZER else to_chat(user, "Subject is not addicted to any reagents.") -/obj/item/device/healthanalyzer/verb/toggle_mode() +/obj/item/healthanalyzer/verb/toggle_mode() set name = "Switch Verbosity" set category = "Object" @@ -329,22 +331,23 @@ GAS ANALYZER if(0) to_chat(usr, "The scanner no longer shows limb damage.") -/obj/item/device/healthanalyzer/advanced +/obj/item/healthanalyzer/advanced name = "advanced health analyzer" icon_state = "health_adv" desc = "A hand-held body scanner able to distinguish vital signs of the subject with high accuracy." advanced = TRUE -/obj/item/device/analyzer +/obj/item/analyzer desc = "A hand-held environmental scanner which reports current gas levels. Alt-Click to use the built in barometer function." name = "analyzer" + icon = 'icons/obj/device.dmi' icon_state = "atmos" item_state = "analyzer" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' w_class = WEIGHT_CLASS_SMALL flags_1 = CONDUCT_1 | NOBLUDGEON_1 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT throwforce = 0 throw_speed = 3 throw_range = 7 @@ -354,11 +357,11 @@ GAS ANALYZER var/cooldown_time = 250 var/accuracy // 0 is the best accuracy. -/obj/item/device/analyzer/suicide_act(mob/living/carbon/user) +/obj/item/analyzer/suicide_act(mob/living/carbon/user) user.visible_message("[user] begins to analyze [user.p_them()]self with [src]! The display shows that [user.p_theyre()] dead!") return BRUTELOSS -/obj/item/device/analyzer/attack_self(mob/user) +/obj/item/analyzer/attack_self(mob/user) add_fingerprint(user) @@ -417,7 +420,7 @@ GAS ANALYZER to_chat(user, "[env_gases[id][GAS_META][META_GAS_NAME]]: [round(gas_concentration*100, 0.01)] %") to_chat(user, "Temperature: [round(environment.temperature-T0C)] °C ([round(environment.temperature)]K)") -/obj/item/device/analyzer/AltClick(mob/user) //Barometer output for measuring when the next storm happens +/obj/item/analyzer/AltClick(mob/user) //Barometer output for measuring when the next storm happens ..() if(user.canUseTopic(src)) @@ -460,17 +463,17 @@ GAS ANALYZER else to_chat(user, "[src]'s barometer function says a storm will land in approximately [butchertime(fixed)].") cooldown = TRUE - addtimer(CALLBACK(src,/obj/item/device/analyzer/proc/ping), cooldown_time) + addtimer(CALLBACK(src,/obj/item/analyzer/proc/ping), cooldown_time) -/obj/item/device/analyzer/proc/ping() +/obj/item/analyzer/proc/ping() if(isliving(loc)) var/mob/living/L = loc to_chat(L, "[src]'s barometer function is ready!") playsound(src, 'sound/machines/click.ogg', 100) cooldown = FALSE -/obj/item/device/analyzer/proc/butchertime(amount) +/obj/item/analyzer/proc/butchertime(amount) if(!amount) return if(accuracy) @@ -481,9 +484,10 @@ GAS ANALYZER amount += inaccurate return DisplayTimeText(max(1,amount)) -/obj/item/device/slime_scanner +/obj/item/slime_scanner name = "slime scanner" desc = "A device that analyzes a slime's internal composition and measures its stats." + icon = 'icons/obj/device.dmi' icon_state = "adv_spectrometer" item_state = "analyzer" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' @@ -495,7 +499,7 @@ GAS ANALYZER throw_range = 7 materials = list(MAT_METAL=30, MAT_GLASS=20) -/obj/item/device/slime_scanner/attack(mob/living/M, mob/living/user) +/obj/item/slime_scanner/attack(mob/living/M, mob/living/user) if(user.stat || user.eye_blind) return if (!isslime(M)) diff --git a/code/game/objects/items/devices/sensor_device.dm b/code/game/objects/items/devices/sensor_device.dm index edfd4368ff..79d26776a9 100644 --- a/code/game/objects/items/devices/sensor_device.dm +++ b/code/game/objects/items/devices/sensor_device.dm @@ -1,10 +1,10 @@ -/obj/item/device/sensor_device +/obj/item/sensor_device name = "handheld crew monitor" //Thanks to Gun Hog for the name! desc = "A miniature machine that tracks suit sensors across the station." icon = 'icons/obj/device.dmi' icon_state = "scanner" w_class = WEIGHT_CLASS_SMALL - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT -/obj/item/device/sensor_device/attack_self(mob/user) +/obj/item/sensor_device/attack_self(mob/user) GLOB.crewmonitor.show(user,src) //Proc already exists, just had to call it diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index bf7a0b8ee8..50cdbe9c48 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -1,39 +1,40 @@ -/obj/item/device/taperecorder +/obj/item/taperecorder name = "universal recorder" desc = "A device that can record to cassette tapes, and play them. It automatically translates the content in playback." + icon = 'icons/obj/device.dmi' icon_state = "taperecorder_empty" item_state = "analyzer" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' w_class = WEIGHT_CLASS_SMALL flags_1 = HEAR_1 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT materials = list(MAT_METAL=60, MAT_GLASS=30) force = 2 throwforce = 0 var/recording = 0 var/playing = 0 var/playsleepseconds = 0 - var/obj/item/device/tape/mytape - var/starting_tape_type = /obj/item/device/tape/random + var/obj/item/tape/mytape + var/starting_tape_type = /obj/item/tape/random var/open_panel = 0 var/canprint = 1 -/obj/item/device/taperecorder/Initialize(mapload) +/obj/item/taperecorder/Initialize(mapload) . = ..() if(starting_tape_type) mytape = new starting_tape_type(src) update_icon() -/obj/item/device/taperecorder/examine(mob/user) +/obj/item/taperecorder/examine(mob/user) ..() to_chat(user, "The wire panel is [open_panel ? "opened" : "closed"].") -/obj/item/device/taperecorder/attackby(obj/item/I, mob/user, params) - if(!mytape && istype(I, /obj/item/device/tape)) +/obj/item/taperecorder/attackby(obj/item/I, mob/user, params) + if(!mytape && istype(I, /obj/item/tape)) if(!user.transferItemToLoc(I,src)) return mytape = I @@ -41,7 +42,7 @@ update_icon() -/obj/item/device/taperecorder/proc/eject(mob/user) +/obj/item/taperecorder/proc/eject(mob/user) if(mytape) to_chat(user, "You remove [mytape] from [src].") stop() @@ -49,12 +50,12 @@ mytape = null update_icon() -/obj/item/device/taperecorder/fire_act(exposed_temperature, exposed_volume) +/obj/item/taperecorder/fire_act(exposed_temperature, exposed_volume) mytape.ruin() //Fires destroy the tape ..() //ATTACK HAND IGNORING PARENT RETURN VALUE -/obj/item/device/taperecorder/attack_hand(mob/user) +/obj/item/taperecorder/attack_hand(mob/user) if(loc == user) if(mytape) if(!user.is_holding(src)) @@ -63,14 +64,14 @@ else return ..() -/obj/item/device/taperecorder/proc/can_use(mob/user) +/obj/item/taperecorder/proc/can_use(mob/user) if(user && ismob(user)) if(!user.incapacitated()) return TRUE return FALSE -/obj/item/device/taperecorder/verb/ejectverb() +/obj/item/taperecorder/verb/ejectverb() set name = "Eject Tape" set category = "Object" @@ -82,7 +83,7 @@ eject(usr) -/obj/item/device/taperecorder/update_icon() +/obj/item/taperecorder/update_icon() if(!mytape) icon_state = "taperecorder_empty" else if(recording) @@ -93,12 +94,12 @@ icon_state = "taperecorder_idle" -/obj/item/device/taperecorder/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, spans, message_mode) +/obj/item/taperecorder/Hear(message, atom/movable/speaker, message_langs, raw_message, radio_freq, spans, message_mode) if(mytape && recording) mytape.timestamp += mytape.used_capacity mytape.storedinfo += "\[[time2text(mytape.used_capacity * 10,"mm:ss")]\] [message]" -/obj/item/device/taperecorder/verb/record() +/obj/item/taperecorder/verb/record() set name = "Start Recording" set category = "Object" @@ -131,7 +132,7 @@ to_chat(usr, "The tape is full.") -/obj/item/device/taperecorder/verb/stop() +/obj/item/taperecorder/verb/stop() set name = "Stop" set category = "Object" @@ -151,7 +152,7 @@ update_icon() -/obj/item/device/taperecorder/verb/play() +/obj/item/taperecorder/verb/play() set name = "Play Tape" set category = "Object" @@ -193,7 +194,7 @@ update_icon() -/obj/item/device/taperecorder/attack_self(mob/user) +/obj/item/taperecorder/attack_self(mob/user) if(!mytape || mytape.ruined) return if(recording) @@ -202,7 +203,7 @@ record() -/obj/item/device/taperecorder/verb/print_transcript() +/obj/item/taperecorder/verb/print_transcript() set name = "Print Transcript" set category = "Object" @@ -230,14 +231,15 @@ //empty tape recorders -/obj/item/device/taperecorder/empty +/obj/item/taperecorder/empty starting_tape_type = null -/obj/item/device/tape +/obj/item/tape name = "tape" desc = "A magnetic tape that can hold up to ten minutes of content." icon_state = "tape_white" + icon = 'icons/obj/device.dmi' item_state = "analyzer" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' @@ -251,17 +253,17 @@ var/list/timestamp = list() var/ruined = 0 -/obj/item/device/tape/fire_act(exposed_temperature, exposed_volume) +/obj/item/tape/fire_act(exposed_temperature, exposed_volume) ruin() ..() -/obj/item/device/tape/attack_self(mob/user) +/obj/item/tape/attack_self(mob/user) if(!ruined) to_chat(user, "You pull out all the tape!") ruin() -/obj/item/device/tape/proc/ruin() +/obj/item/tape/proc/ruin() //Lets not add infinite amounts of overlays when our fireact is called //repeatedly if(!ruined) @@ -269,12 +271,12 @@ ruined = 1 -/obj/item/device/tape/proc/fix() +/obj/item/tape/proc/fix() cut_overlay("ribbonoverlay") ruined = 0 -/obj/item/device/tape/attackby(obj/item/I, mob/user, params) +/obj/item/tape/attackby(obj/item/I, mob/user, params) if(ruined && istype(I, /obj/item/screwdriver) || istype(I, /obj/item/pen)) to_chat(user, "You start winding the tape back in...") if(I.use_tool(src, user, 120)) @@ -282,9 +284,9 @@ fix() //Random colour tapes -/obj/item/device/tape/random +/obj/item/tape/random icon_state = "random_tape" -/obj/item/device/tape/random/New() +/obj/item/tape/random/New() icon_state = "tape_[pick("white", "blue", "red", "yellow", "purple")]" ..() diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index 2c0e7bd7c4..c3720f7ac4 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -15,9 +15,10 @@ effective or pretty fucking useless. */ -/obj/item/device/batterer +/obj/item/batterer name = "mind batterer" desc = "A strange device with twin antennas." + icon = 'icons/obj/device.dmi' icon_state = "batterer" throwforce = 5 w_class = WEIGHT_CLASS_TINY @@ -32,7 +33,7 @@ effective or pretty fucking useless. var/max_uses = 2 -/obj/item/device/batterer/attack_self(mob/living/carbon/user, flag = 0, emp = 0) +/obj/item/batterer/attack_self(mob/living/carbon/user, flag = 0, emp = 0) if(!user) return if(times_used >= max_uses) to_chat(user, "The mind batterer has been burnt out!") @@ -67,7 +68,7 @@ effective or pretty fucking useless. Wavelength is also slightly increased by the intensity as well. */ -/obj/item/device/healthanalyzer/rad_laser +/obj/item/healthanalyzer/rad_laser materials = list(MAT_METAL=400) var/irradiate = 1 var/intensity = 10 // how much damage the radiation does @@ -75,7 +76,7 @@ effective or pretty fucking useless. var/used = 0 // is it cooling down? var/stealth = FALSE -/obj/item/device/healthanalyzer/rad_laser/attack(mob/living/M, mob/living/user) +/obj/item/healthanalyzer/rad_laser/attack(mob/living/M, mob/living/user) if(!stealth || !irradiate) ..() if(!irradiate) @@ -95,21 +96,21 @@ effective or pretty fucking useless. else to_chat(user, "The radioactive microlaser is still recharging.") -/obj/item/device/healthanalyzer/rad_laser/proc/handle_cooldown(cooldown) +/obj/item/healthanalyzer/rad_laser/proc/handle_cooldown(cooldown) spawn(cooldown) used = 0 icon_state = "health" -/obj/item/device/healthanalyzer/rad_laser/attack_self(mob/user) +/obj/item/healthanalyzer/rad_laser/attack_self(mob/user) interact(user) -/obj/item/device/healthanalyzer/rad_laser/proc/GetCooldown() +/obj/item/healthanalyzer/rad_laser/proc/GetCooldown() return round(max(10, (stealth*30 + intensity*5 - wavelength/4))) -/obj/item/device/healthanalyzer/rad_laser/interact(mob/user) +/obj/item/healthanalyzer/rad_laser/interact(mob/user) ui_interact(user) -/obj/item/device/healthanalyzer/rad_laser/ui_interact(mob/user) +/obj/item/healthanalyzer/rad_laser/ui_interact(mob/user) . = ..() var/dat = "Irradiation: [irradiate ? "On" : "Off"]
    " @@ -140,7 +141,7 @@ effective or pretty fucking useless. popup.set_content(dat) popup.open() -/obj/item/device/healthanalyzer/rad_laser/Topic(href, href_list) +/obj/item/healthanalyzer/rad_laser/Topic(href, href_list) if(!usr.canUseTopic(src)) return 1 @@ -170,13 +171,13 @@ effective or pretty fucking useless. add_fingerprint(usr) return -/obj/item/device/shadowcloak +/obj/item/shadowcloak name = "cloaker belt" desc = "Makes you invisible for short periods of time. Recharges in darkness." icon = 'icons/obj/clothing/belts.dmi' icon_state = "utilitybelt" item_state = "utility" - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT attack_verb = list("whipped", "lashed", "disciplined") var/mob/living/carbon/human/user = null @@ -186,19 +187,19 @@ effective or pretty fucking useless. var/old_alpha = 0 actions_types = list(/datum/action/item_action/toggle) -/obj/item/device/shadowcloak/ui_action_click(mob/user) - if(user.get_item_by_slot(slot_belt) == src) +/obj/item/shadowcloak/ui_action_click(mob/user) + if(user.get_item_by_slot(SLOT_BELT) == src) if(!on) Activate(usr) else Deactivate() return -/obj/item/device/shadowcloak/item_action_slot_check(slot, mob/user) - if(slot == slot_belt) +/obj/item/shadowcloak/item_action_slot_check(slot, mob/user) + if(slot == SLOT_BELT) return 1 -/obj/item/device/shadowcloak/proc/Activate(mob/living/carbon/human/user) +/obj/item/shadowcloak/proc/Activate(mob/living/carbon/human/user) if(!user) return to_chat(user, "You activate [src].") @@ -207,7 +208,7 @@ effective or pretty fucking useless. old_alpha = user.alpha on = TRUE -/obj/item/device/shadowcloak/proc/Deactivate() +/obj/item/shadowcloak/proc/Deactivate() to_chat(user, "You deactivate [src].") STOP_PROCESSING(SSobj, src) if(user) @@ -215,13 +216,13 @@ effective or pretty fucking useless. on = FALSE user = null -/obj/item/device/shadowcloak/dropped(mob/user) +/obj/item/shadowcloak/dropped(mob/user) ..() - if(user && user.get_item_by_slot(slot_belt) != src) + if(user && user.get_item_by_slot(SLOT_BELT) != src) Deactivate() -/obj/item/device/shadowcloak/process() - if(user.get_item_by_slot(slot_belt) != src) +/obj/item/shadowcloak/process() + if(user.get_item_by_slot(SLOT_BELT) != src) Deactivate() return var/turf/T = get_turf(src) @@ -234,14 +235,15 @@ effective or pretty fucking useless. animate(user,alpha = CLAMP(255 - charge,0,255),time = 10) -/obj/item/device/jammer +/obj/item/jammer name = "radio jammer" desc = "Device used to disrupt nearby radio communication." + icon = 'icons/obj/device.dmi' icon_state = "jammer" var/active = FALSE var/range = 12 -/obj/item/device/jammer/attack_self(mob/user) +/obj/item/jammer/attack_self(mob/user) to_chat(user,"You [active ? "deactivate" : "activate"] [src].") active = !active if(active) diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index 720535f79a..12d263bf9d 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -1,6 +1,7 @@ -/obj/item/device/transfer_valve +/obj/item/transfer_valve icon = 'icons/obj/assemblies.dmi' name = "tank transfer valve" + icon = 'icons/obj/device.dmi' icon_state = "valve_1" item_state = "ttv" lefthand_file = 'icons/mob/inhands/weapons/bombs_lefthand.dmi' @@ -9,15 +10,15 @@ w_class = WEIGHT_CLASS_BULKY var/obj/item/tank/tank_one var/obj/item/tank/tank_two - var/obj/item/device/assembly/attached_device + var/obj/item/assembly/attached_device var/mob/attacher = null var/valve_open = FALSE var/toggle = 1 -/obj/item/device/transfer_valve/IsAssemblyHolder() +/obj/item/transfer_valve/IsAssemblyHolder() return TRUE -/obj/item/device/transfer_valve/attackby(obj/item/item, mob/user, params) +/obj/item/transfer_valve/attackby(obj/item/item, mob/user, params) if(istype(item, /obj/item/tank)) if(tank_one && tank_two) to_chat(user, "There are already two tanks attached, remove one first!") @@ -37,7 +38,7 @@ update_icon() //TODO: Have this take an assemblyholder else if(isassembly(item)) - var/obj/item/device/assembly/A = item + var/obj/item/assembly/A = item if(A.secured) to_chat(user, "The device is secured.") return @@ -57,7 +58,37 @@ attacher = user return -/obj/item/device/transfer_valve/attack_self(mob/user) +//Attached device memes +/obj/item/transfer_valve/Move() + . = ..() + if(attached_device) + attached_device.holder_movement() + +/obj/item/transfer_valve/dropped() + . = ..() + if(attached_device) + attached_device.dropped() + +/obj/item/transfer_valve/on_found(mob/finder) + if(attached_device) + attached_device.on_found(finder) + +/obj/item/transfer_valve/Crossed(atom/movable/AM as mob|obj) + . = ..() + if(attached_device) + attached_device.Crossed(AM) + +/obj/item/transfer_valve/attack_hand()//Triggers mousetraps + . = ..() + if(.) + return + if(attached_device) + attached_device.attack_hand() + +//These keep attached devices synced up, for example a TTV with a mouse trap being found in a bag so it's triggered, or moving the TTV with an infrared beam sensor to update the beam's direction. + + +/obj/item/transfer_valve/attack_self(mob/user) user.set_machine(src) var/dat = {" Valve properties:
    Attachment one: [tank_one] [tank_one ? "Remove" : ""] @@ -70,7 +101,7 @@ popup.open() return -/obj/item/device/transfer_valve/Topic(href, href_list) +/obj/item/transfer_valve/Topic(href, href_list) ..() if(!usr.canUseTopic(src)) return @@ -90,8 +121,7 @@ toggle_valve() else if(attached_device) if(href_list["rem_device"]) - attached_device.forceMove(drop_location()) - attached_device.holder = null + attached_device.on_detach() attached_device = null update_icon() if(href_list["device"]) @@ -100,16 +130,16 @@ attack_self(usr) add_fingerprint(usr) -/obj/item/device/transfer_valve/proc/process_activation(obj/item/device/D) +/obj/item/transfer_valve/proc/process_activation(obj/item/D) if(toggle) toggle = FALSE toggle_valve() addtimer(CALLBACK(src, .proc/toggle_off), 5) //To stop a signal being spammed from a proxy sensor constantly going off or whatever -/obj/item/device/transfer_valve/proc/toggle_off() +/obj/item/transfer_valve/proc/toggle_off() toggle = TRUE -/obj/item/device/transfer_valve/update_icon() +/obj/item/transfer_valve/update_icon() cut_overlays() underlays = null @@ -126,14 +156,18 @@ underlays += J if(attached_device) add_overlay("device") + if(istype(attached_device, /obj/item/assembly/infra)) + var/obj/item/assembly/infra/sensor = attached_device + if(sensor.on && sensor.visible) + add_overlay("proxy_beam") -/obj/item/device/transfer_valve/proc/merge_gases() +/obj/item/transfer_valve/proc/merge_gases() tank_two.air_contents.volume += tank_one.air_contents.volume var/datum/gas_mixture/temp temp = tank_one.air_contents.remove_ratio(1) tank_two.air_contents.merge(temp) -/obj/item/device/transfer_valve/proc/split_gases() +/obj/item/transfer_valve/proc/split_gases() if (!valve_open || !tank_one || !tank_two) return var/ratio1 = tank_one.air_contents.volume/tank_two.air_contents.volume @@ -147,7 +181,7 @@ it explodes properly when it gets a signal (and it does). */ -/obj/item/device/transfer_valve/proc/toggle_valve() +/obj/item/transfer_valve/proc/toggle_valve() if(!valve_open && tank_one && tank_two) valve_open = TRUE var/turf/bombturf = get_turf(src) @@ -155,7 +189,7 @@ var/attachment = "no device" if(attached_device) - if(istype(attached_device, /obj/item/device/assembly/signaler)) + if(istype(attached_device, /obj/item/assembly/signaler)) attachment = "[attached_device]" else attachment = attached_device @@ -197,5 +231,5 @@ // this doesn't do anything but the timer etc. expects it to be here // eventually maybe have it update icon to show state (timer, prox etc.) like old bombs -/obj/item/device/transfer_valve/proc/c_state() +/obj/item/transfer_valve/proc/c_state() return diff --git a/code/game/objects/items/flamethrower.dm b/code/game/objects/items/flamethrower.dm index d9b963e416..a3d2e519a0 100644 --- a/code/game/objects/items/flamethrower.dm +++ b/code/game/objects/items/flamethrower.dm @@ -18,13 +18,13 @@ var/lit = FALSE //on or off var/operating = FALSE//cooldown var/obj/item/weldingtool/weldtool = null - var/obj/item/device/assembly/igniter/igniter = null + var/obj/item/assembly/igniter/igniter = null var/obj/item/tank/internals/plasma/ptank = null var/warned_admins = FALSE //for the message_admins() when lit //variables for prebuilt flamethrowers var/create_full = FALSE var/create_with_tank = FALSE - var/igniter_type = /obj/item/device/assembly/igniter + var/igniter_type = /obj/item/assembly/igniter trigger_guard = TRIGGER_GUARD_NORMAL /obj/item/flamethrower/Destroy() @@ -101,7 +101,7 @@ return else if(isigniter(W)) - var/obj/item/device/assembly/igniter/I = W + var/obj/item/assembly/igniter/I = W if(I.secured) return if(igniter) @@ -125,7 +125,7 @@ update_icon() return - else if(istype(W, /obj/item/device/analyzer) && ptank) + else if(istype(W, /obj/item/analyzer) && ptank) atmosanalyzer_scan(ptank.air_contents, user) else return ..() @@ -167,7 +167,7 @@ /obj/item/flamethrower/CheckParts(list/parts_list) ..() weldtool = locate(/obj/item/weldingtool) in contents - igniter = locate(/obj/item/device/assembly/igniter) in contents + igniter = locate(/obj/item/assembly/igniter) in contents weldtool.status = FALSE igniter.secured = FALSE status = TRUE @@ -240,11 +240,11 @@ return 1 //It hit the flamethrower, not them -/obj/item/device/assembly/igniter/proc/flamethrower_process(turf/open/location) +/obj/item/assembly/igniter/proc/flamethrower_process(turf/open/location) location.hotspot_expose(700,2) -/obj/item/device/assembly/igniter/cold/flamethrower_process(turf/open/location) +/obj/item/assembly/igniter/cold/flamethrower_process(turf/open/location) return -/obj/item/device/assembly/igniter/proc/ignite_turf(obj/item/flamethrower/F,turf/open/location,release_amount = 0.05) +/obj/item/assembly/igniter/proc/ignite_turf(obj/item/flamethrower/F,turf/open/location,release_amount = 0.05) F.default_ignite(location,release_amount) diff --git a/code/game/objects/items/gift.dm b/code/game/objects/items/gift.dm index 0fe53f293c..a09d39072d 100644 --- a/code/game/objects/items/gift.dm +++ b/code/game/objects/items/gift.dm @@ -64,9 +64,9 @@ GLOBAL_LIST_EMPTY(possible_gifts) /obj/item/banhammer, /obj/item/reagent_containers/food/snacks/grown/ambrosia/deus, /obj/item/reagent_containers/food/snacks/grown/ambrosia/vulgaris, - /obj/item/device/paicard, - /obj/item/device/instrument/violin, - /obj/item/device/instrument/guitar, + /obj/item/paicard, + /obj/item/instrument/violin, + /obj/item/instrument/guitar, /obj/item/storage/belt/utility/full, /obj/item/clothing/neck/tie/horrible, /obj/item/clothing/suit/jacket/leather, diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm index cf11ac7640..3f97321710 100644 --- a/code/game/objects/items/granters.dm +++ b/code/game/objects/items/granters.dm @@ -208,12 +208,13 @@ if(stored_swap == user) to_chat(user,"You stare at the book some more, but there doesn't seem to be anything else to learn...") return - var/obj/effect/proc_holder/spell/targeted/mind_transfer/swapper = new - swapper.cast(user, stored_swap, TRUE) + if(swapper.cast(list(stored_swap), user, TRUE, TRUE)) + to_chat(user,"You're suddenly somewhere else... and someone else?!") + to_chat(stored_swap,"Suddenly you're staring at [src] again... where are you, who are you?!") + else + user.visible_message("[src] fizzles slightly as it stops glowing!") //if the mind_transfer failed to transfer mobs, likely due to the target being catatonic. - to_chat(stored_swap,"You're suddenly somewhere else... and someone else?!") - to_chat(user,"Suddenly you're staring at [src] again... where are you, who are you?!") stored_swap = null /obj/item/book/granter/spell/forcewall @@ -257,7 +258,7 @@ magichead.voicechange = TRUE //NEEEEIIGHH if(!user.dropItemToGround(user.wear_mask)) qdel(user.wear_mask) - user.equip_to_slot_if_possible(magichead, slot_wear_mask, TRUE, TRUE) + user.equip_to_slot_if_possible(magichead, SLOT_WEAR_MASK, TRUE, TRUE) qdel(src) else to_chat(user,"I say thee neigh") //It still lives here diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm index 4a9e136182..8bc1665a3f 100644 --- a/code/game/objects/items/grenades/chem_grenade.dm +++ b/code/game/objects/items/grenades/chem_grenade.dm @@ -13,7 +13,7 @@ var/list/beakers = list() var/list/allowed_containers = list(/obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/glass/bottle) var/affected_area = 3 - var/obj/item/device/assembly_holder/nadeassembly = null + var/obj/item/assembly_holder/nadeassembly = null var/assemblyattacher var/ignition_temp = 10 // The amount of heat added to the reagents when this grenade goes off. var/threatscale = 1 // Used by advanced grenades to make them slightly more worthy. @@ -78,9 +78,9 @@ else to_chat(user, "[I] is empty!") - else if(stage == EMPTY && istype(I, /obj/item/device/assembly_holder)) + else if(stage == EMPTY && istype(I, /obj/item/assembly_holder)) . = 1 // no afterattack - var/obj/item/device/assembly_holder/A = I + var/obj/item/assembly_holder/A = I if(isigniter(A.a_left) == isigniter(A.a_right)) //Check if either part of the assembly has an igniter, but if both parts are igniters, then fuck it return if(!user.transferItemToLoc(I, src)) @@ -163,8 +163,10 @@ for(var/obj/item/reagent_containers/glass/G in beakers) reactants += G.reagents - if(!chem_splash(get_turf(src), affected_area, reactants, ignition_temp, threatscale) && !no_splash) - playsound(loc, 'sound/items/screwdriver2.ogg', 50, 1) + var/turf/detonation_turf = get_turf(src) + + if(!chem_splash(detonation_turf, affected_area, reactants, ignition_temp, threatscale) && !no_splash) + playsound(src, 'sound/items/screwdriver2.ogg', 50, 1) if(beakers.len) for(var/obj/O in beakers) O.forceMove(drop_location()) @@ -172,17 +174,15 @@ stage_change(EMPTY) return + var/areas_name = get_area_name(src, TRUE) + if(nadeassembly) var/mob/M = get_mob_by_ckey(assemblyattacher) var/mob/last = get_mob_by_ckey(nadeassembly.fingerprintslast) - var/turf/T = get_turf(src) - var/area/A = get_area(T) - message_admins("grenade primed by an assembly, attached by [ADMIN_LOOKUPFLW(M)] and last touched by [ADMIN_LOOKUPFLW(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] [ADMIN_JMP(T)].") - log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [A.name] [COORD(T)]") + message_admins("grenade primed by an assembly, attached by [ADMIN_LOOKUPFLW(M)] and last touched by [ADMIN_LOOKUPFLW(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [areas_name] [ADMIN_JMP(detonation_turf)].") + log_game("grenade primed by an assembly, attached by [key_name(M)] and last touched by [key_name(last)] ([nadeassembly.a_left.name] and [nadeassembly.a_right.name]) at [areas_name] [COORD(detonation_turf)]") - var/turf/DT = get_turf(src) - var/area/DA = get_area(DT) - log_game("A grenade detonated at [DA.name] [COORD(DT)]") + log_game("A grenade detonated at [areas_name] [COORD(detonation_turf)]") update_mob() @@ -254,7 +254,7 @@ var/unit_spread = 10 // Amount of units per repeat. Can be altered with a multitool. /obj/item/grenade/chem_grenade/adv_release/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/device/multitool)) + if(istype(I, /obj/item/multitool)) switch(unit_spread) if(0 to 24) unit_spread += 5 diff --git a/code/game/objects/items/grenades/ghettobomb.dm b/code/game/objects/items/grenades/ghettobomb.dm index 5b96b74f41..d450764702 100644 --- a/code/game/objects/items/grenades/ghettobomb.dm +++ b/code/game/objects/items/grenades/ghettobomb.dm @@ -12,7 +12,7 @@ throw_speed = 3 throw_range = 7 flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT active = 0 det_time = 50 display_timer = 0 diff --git a/code/game/objects/items/grenades/grenade.dm b/code/game/objects/items/grenades/grenade.dm index 929c649e4d..6a08777e61 100644 --- a/code/game/objects/items/grenades/grenade.dm +++ b/code/game/objects/items/grenades/grenade.dm @@ -10,7 +10,7 @@ throw_speed = 3 throw_range = 7 flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT resistance_flags = FLAMMABLE max_integrity = 40 var/active = 0 diff --git a/code/game/objects/items/grenades/plastic.dm b/code/game/objects/items/grenades/plastic.dm index 6d15992d24..967d1ce372 100644 --- a/code/game/objects/items/grenades/plastic.dm +++ b/code/game/objects/items/grenades/plastic.dm @@ -12,7 +12,7 @@ w_class = WEIGHT_CLASS_SMALL var/atom/target = null var/mutable_appearance/plastic_overlay - var/obj/item/device/assembly_holder/nadeassembly = null + var/obj/item/assembly_holder/nadeassembly = null var/assemblyattacher var/directional = FALSE var/aim_dir = NORTH @@ -31,8 +31,8 @@ ..() /obj/item/grenade/plastic/attackby(obj/item/I, mob/user, params) - if(!nadeassembly && istype(I, /obj/item/device/assembly_holder)) - var/obj/item/device/assembly_holder/A = I + if(!nadeassembly && istype(I, /obj/item/assembly_holder)) + var/obj/item/assembly_holder/A = I if(!user.transferItemToLoc(I, src)) return ..() nadeassembly = A diff --git a/code/game/objects/items/grenades/smokebomb.dm b/code/game/objects/items/grenades/smokebomb.dm index f5a27cf5c8..d822ede78c 100644 --- a/code/game/objects/items/grenades/smokebomb.dm +++ b/code/game/objects/items/grenades/smokebomb.dm @@ -1,31 +1,31 @@ -/obj/item/grenade/smokebomb - name = "smoke grenade" - desc = "The word 'Dank' is scribbled on it in crayon." - icon = 'icons/obj/grenade.dmi' - icon_state = "smokewhite" - det_time = 20 - item_state = "flashbang" - slot_flags = SLOT_BELT - var/datum/effect_system/smoke_spread/bad/smoke - -/obj/item/grenade/smokebomb/New() - ..() - src.smoke = new /datum/effect_system/smoke_spread/bad - src.smoke.attach(src) - -/obj/item/grenade/smokebomb/Destroy() - qdel(smoke) - return ..() - -/obj/item/grenade/smokebomb/prime() - update_mob() - playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3) - smoke.set_up(4, src) - smoke.start() - - - for(var/obj/structure/blob/B in view(8,src)) - var/damage = round(30/(get_dist(B,src)+1)) - B.take_damage(damage, BURN, "melee", 0) - sleep(80) - qdel(src) +/obj/item/grenade/smokebomb + name = "smoke grenade" + desc = "The word 'Dank' is scribbled on it in crayon." + icon = 'icons/obj/grenade.dmi' + icon_state = "smokewhite" + det_time = 20 + item_state = "flashbang" + slot_flags = ITEM_SLOT_BELT + var/datum/effect_system/smoke_spread/bad/smoke + +/obj/item/grenade/smokebomb/New() + ..() + src.smoke = new /datum/effect_system/smoke_spread/bad + src.smoke.attach(src) + +/obj/item/grenade/smokebomb/Destroy() + qdel(smoke) + return ..() + +/obj/item/grenade/smokebomb/prime() + update_mob() + playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3) + smoke.set_up(4, src) + smoke.start() + + + for(var/obj/structure/blob/B in view(8,src)) + var/damage = round(30/(get_dist(B,src)+1)) + B.take_damage(damage, BURN, "melee", 0) + sleep(80) + qdel(src) diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index 09abc25cc1..735bcaeb27 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -29,7 +29,7 @@ lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT throwforce = 0 w_class = WEIGHT_CLASS_SMALL throw_speed = 3 diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index 13ca2b35d6..560a972ee8 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -75,7 +75,7 @@ desc = "It has a mysterious, protective aura." w_class = WEIGHT_CLASS_HUGE force = 5 - slot_flags = SLOT_BACK + slot_flags = ITEM_SLOT_BACK block_chance = 50 var/shield_icon = "shield-red" @@ -98,7 +98,7 @@ name = "holy claymore" desc = "A weapon fit for a crusade!" w_class = WEIGHT_CLASS_HUGE - slot_flags = SLOT_BACK|SLOT_BELT + slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_BELT block_chance = 30 sharpness = IS_SHARP hitsound = 'sound/weapons/bladeslice.ogg' @@ -118,7 +118,7 @@ inhand_y_dimension = 64 name = "dark blade" desc = "Spread the glory of the dark gods!" - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT hitsound = 'sound/hallucinations/growl1.ogg' /obj/item/nullrod/claymore/chainsaw_sword @@ -126,7 +126,7 @@ item_state = "chainswordon" name = "sacred chainsaw sword" desc = "Suffer not a heretic to live." - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT attack_verb = list("sawed", "torn", "cut", "chopped", "diced") hitsound = 'sound/weapons/chainsawhit.ogg' @@ -135,21 +135,21 @@ item_state = "swordon" name = "force weapon" desc = "The blade glows with the power of faith. Or possibly a battery." - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT /obj/item/nullrod/claymore/katana name = "hanzo steel" desc = "Capable of cutting clean through a holy claymore." icon_state = "katana" item_state = "katana" - slot_flags = SLOT_BELT | SLOT_BACK + slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK /obj/item/nullrod/claymore/multiverse name = "extradimensional blade" desc = "Once the harbinger of an interdimensional war, its sharpness fluctuates wildly." icon_state = "multiverse" item_state = "multiverse" - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT /obj/item/nullrod/claymore/multiverse/attack(mob/living/carbon/M, mob/living/carbon/user) force = rand(1, 30) @@ -161,7 +161,7 @@ icon_state = "swordblue" item_state = "swordblue" desc = "If you strike me down, I shall become more robust than you can possibly imagine." - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT /obj/item/nullrod/claymore/saber/red name = "dark energy sword" @@ -182,7 +182,7 @@ item_state = "sord" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT force = 4.13 throwforce = 1 hitsound = 'sound/weapons/bladeslice.ogg' @@ -197,7 +197,7 @@ desc = "Ask not for whom the bell tolls..." w_class = WEIGHT_CLASS_BULKY armour_penetration = 35 - slot_flags = SLOT_BACK + slot_flags = ITEM_SLOT_BACK sharpness = IS_SHARP attack_verb = list("chopped", "sliced", "cut", "reaped") @@ -279,7 +279,7 @@ item_state = "chainswordon" name = "possessed chainsaw sword" desc = "Suffer not a heretic to live." - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT force = 30 attack_verb = list("sawed", "torn", "cut", "chopped", "diced") hitsound = 'sound/weapons/chainsawhit.ogg' @@ -292,7 +292,7 @@ righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi' name = "relic war hammer" desc = "This war hammer cost the chaplain forty thousand space dollars." - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_HUGE attack_verb = list("smashed", "bashed", "hammered", "crunched") @@ -330,7 +330,7 @@ force = 16 throwforce = 15 w_class = 4 - slot_flags = SLOT_BACK + slot_flags = ITEM_SLOT_BACK attack_verb = list("attacked", "smashed", "crushed", "splattered", "cracked") hitsound = 'sound/weapons/blade1.ogg' @@ -350,7 +350,7 @@ item_state = "chain" lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT attack_verb = list("whipped", "lashed") hitsound = 'sound/weapons/chainhit.ogg' @@ -359,7 +359,7 @@ 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." icon_state = "fedora" item_state = "fedora" - slot_flags = SLOT_HEAD + slot_flags = ITEM_SLOT_HEAD icon = 'icons/obj/clothing/hats.dmi' force = 0 throw_speed = 4 @@ -414,7 +414,7 @@ w_class = WEIGHT_CLASS_BULKY force = 15 block_chance = 40 - slot_flags = SLOT_BACK + slot_flags = ITEM_SLOT_BACK sharpness = IS_BLUNT hitsound = "swing_hit" attack_verb = list("smashed", "slammed", "whacked", "thwacked") diff --git a/code/game/objects/items/implants/implant_misc.dm b/code/game/objects/items/implants/implant_misc.dm index 63df308024..f17be453f4 100644 --- a/code/game/objects/items/implants/implant_misc.dm +++ b/code/game/objects/items/implants/implant_misc.dm @@ -81,7 +81,7 @@ /obj/item/implant/radio name = "internal radio implant" activated = TRUE - var/obj/item/device/radio/radio + var/obj/item/radio/radio var/radio_key var/subspace_transmission = FALSE icon = 'icons/obj/radio.dmi' @@ -105,18 +105,18 @@ radio.recalculateChannels() /obj/item/implant/radio/mining - radio_key = /obj/item/device/encryptionkey/headset_cargo + radio_key = /obj/item/encryptionkey/headset_cargo /obj/item/implant/radio/syndicate desc = "Are you there God? It's me, Syndicate Comms Agent." - radio_key = /obj/item/device/encryptionkey/syndicate + radio_key = /obj/item/encryptionkey/syndicate subspace_transmission = TRUE /obj/item/implant/radio/slime name = "slime radio" icon = 'icons/obj/surgery.dmi' icon_state = "adamantine_resonator" - radio_key = /obj/item/device/encryptionkey/headset_sci + radio_key = /obj/item/encryptionkey/headset_sci subspace_transmission = TRUE /obj/item/implant/radio/get_data() diff --git a/code/game/objects/items/implants/implant_track.dm b/code/game/objects/items/implants/implant_track.dm index 6692a6bd6f..913c577f2c 100644 --- a/code/game/objects/items/implants/implant_track.dm +++ b/code/game/objects/items/implants/implant_track.dm @@ -15,7 +15,7 @@ imp_type = /obj/item/implant/tracking /obj/item/implanter/tracking/gps - imp_type = /obj/item/device/gps/mining/internal + imp_type = /obj/item/gps/mining/internal /obj/item/implant/tracking/get_data() var/dat = {"Implant Specifications:
    diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index 27db9a7e0a..59ec24e22c 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -173,7 +173,7 @@ possible_colors = list("purple" = LIGHT_COLOR_LAVENDER) /obj/item/melee/transforming/energy/sword/saber/attackby(obj/item/W, mob/living/user, params) - if(istype(W, /obj/item/device/multitool)) + if(istype(W, /obj/item/multitool)) if(!hacked) hacked = TRUE item_color = "rainbow" diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 0016bf981f..2df0efd12d 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -17,7 +17,7 @@ lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT force = 10 throwforce = 7 w_class = WEIGHT_CLASS_NORMAL @@ -96,7 +96,7 @@ item_state = "classic_baton" lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT force = 12 //9 hit crit w_class = WEIGHT_CLASS_NORMAL var/cooldown = 0 @@ -159,7 +159,7 @@ lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' item_state = null - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_SMALL item_flags = NONE force = 0 @@ -196,7 +196,7 @@ to_chat(user, "You collapse the baton.") icon_state = "telebaton_0" item_state = null //no sprite for concealment even when in hand - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_SMALL force = 0 //not so robust now attack_verb = list("hit", "poked") @@ -308,7 +308,7 @@ item_state = "chain" lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT force = 15 w_class = WEIGHT_CLASS_NORMAL attack_verb = list("flogged", "whipped", "lashed", "disciplined") @@ -326,7 +326,7 @@ desc = "A telescopic roasting stick with a miniature shield generator designed to ensure entry into various high-tech shielded cooking ovens and firepits." icon_state = "roastingstick_0" item_state = "null" - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_SMALL item_flags = NONE force = 0 diff --git a/code/game/objects/items/pinpointer.dm b/code/game/objects/items/pinpointer.dm index a6d0d285bf..1fc61985b5 100644 --- a/code/game/objects/items/pinpointer.dm +++ b/code/game/objects/items/pinpointer.dm @@ -5,7 +5,7 @@ icon = 'icons/obj/device.dmi' icon_state = "pinpointer" flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_SMALL item_state = "electronic" lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' @@ -87,7 +87,7 @@ return FALSE var/turf/there = get_turf(H) - return (H.z != 0 || (there && there.z == H.z)) + return (H.z != 0 || (there && there.z == here.z)) return FALSE diff --git a/code/game/objects/items/religion.dm b/code/game/objects/items/religion.dm index 0f926b4ee3..060448946a 100644 --- a/code/game/objects/items/religion.dm +++ b/code/game/objects/items/religion.dm @@ -325,7 +325,7 @@ icon_state = "crusader" w_class = WEIGHT_CLASS_NORMAL armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 40, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60) //does this even do anything on boots? - flags_1 = NOSLIP_1 + clothing_flags = NOSLIP cold_protection = FEET min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT heat_protection = FEET diff --git a/code/game/objects/items/robot/ai_upgrades.dm b/code/game/objects/items/robot/ai_upgrades.dm index dad3db6b1d..63906ff5ba 100644 --- a/code/game/objects/items/robot/ai_upgrades.dm +++ b/code/game/objects/items/robot/ai_upgrades.dm @@ -2,14 +2,14 @@ //Malf Picker -/obj/item/device/malf_upgrade +/obj/item/malf_upgrade name = "combat software upgrade" desc = "A highly illegal, highly dangerous upgrade for artificial intelligence units, granting them a variety of powers as well as the ability to hack APCs." icon = 'icons/obj/module.dmi' icon_state = "datadisk3" -/obj/item/device/malf_upgrade/afterattack(mob/living/silicon/ai/AI, mob/user) +/obj/item/malf_upgrade/afterattack(mob/living/silicon/ai/AI, mob/user) if(!istype(AI)) return if(AI.malf_picker) @@ -23,13 +23,13 @@ //Lipreading -/obj/item/device/surveillance_upgrade +/obj/item/surveillance_upgrade name = "surveillance software upgrade" desc = "A software package that will allow an artificial intelligence to 'hear' from its cameras via lip reading." icon = 'icons/obj/module.dmi' icon_state = "datadisk3" -/obj/item/device/surveillance_upgrade/afterattack(mob/living/silicon/ai/AI, mob/user) +/obj/item/surveillance_upgrade/afterattack(mob/living/silicon/ai/AI, mob/user) if(!istype(AI)) return if(AI.eyeobj) diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index 2a465aec69..5d70cbd8e7 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -273,20 +273,20 @@ to_chat(user, "You stop charging [target].") -/obj/item/device/harmalarm +/obj/item/harmalarm name = "\improper Sonic Harm Prevention Tool" desc = "Releases a harmless blast that confuses most organics. For when the harm is JUST TOO MUCH." icon_state = "megaphone" var/cooldown = 0 -/obj/item/device/harmalarm/emag_act(mob/user) +/obj/item/harmalarm/emag_act(mob/user) obj_flags ^= EMAGGED if(obj_flags & EMAGGED) to_chat(user, "You short out the safeties on [src]!") else to_chat(user, "You reset the safeties on [src]!") -/obj/item/device/harmalarm/attack_self(mob/user) +/obj/item/harmalarm/attack_self(mob/user) var/safety = !(obj_flags & EMAGGED) if(cooldown > world.time) to_chat(user, "The device is still recharging!") diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index 9a1730488f..9999a054f6 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -152,14 +152,14 @@ else to_chat(user, "You need to attach a flash to it first!") - else if (istype(W, /obj/item/device/multitool)) + else if (istype(W, /obj/item/multitool)) if(check_completion()) Interact(user) else to_chat(user, "The endoskeleton must be assembled before debugging can begin!") - else if(istype(W, /obj/item/device/mmi)) - var/obj/item/device/mmi/M = W + else if(istype(W, /obj/item/mmi)) + var/obj/item/mmi/M = W if(check_completion()) if(!isturf(loc)) to_chat(user, "You can't put [M] in, the frame has to be standing on the ground to be perfectly precise!") @@ -304,7 +304,7 @@ var/mob/living/living_user = usr var/obj/item/item_in_hand = living_user.get_active_held_item() - if(!istype(item_in_hand, /obj/item/device/multitool)) + if(!istype(item_in_hand, /obj/item/multitool)) to_chat(living_user, "You need a multitool!") return diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm index dd8d8f8a10..d6bb54bddf 100644 --- a/code/game/objects/items/shields.dm +++ b/code/game/objects/items/shields.dm @@ -10,7 +10,7 @@ icon_state = "riot" lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' - slot_flags = SLOT_BACK + slot_flags = ITEM_SLOT_BACK force = 10 throwforce = 5 throw_speed = 2 @@ -45,6 +45,11 @@ lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' +/obj/item/shield/riot/roman/fake + desc = "Bears an inscription on the inside: \"Romanes venio domus\". It appears to be a bit flimsy." + block_chance = 0 + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + /obj/item/shield/riot/buckler name = "wooden buckler" desc = "A medieval wooden buckler." @@ -138,7 +143,7 @@ throwforce = 5 throw_speed = 2 w_class = WEIGHT_CLASS_BULKY - slot_flags = SLOT_BACK + slot_flags = ITEM_SLOT_BACK to_chat(user, "You extend \the [src].") else force = 3 diff --git a/code/game/objects/items/singularityhammer.dm b/code/game/objects/items/singularityhammer.dm index 5d96213934..11248aad50 100644 --- a/code/game/objects/items/singularityhammer.dm +++ b/code/game/objects/items/singularityhammer.dm @@ -5,7 +5,7 @@ lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi' flags_1 = CONDUCT_1 - slot_flags = SLOT_BACK + slot_flags = ITEM_SLOT_BACK force = 5 force_unwielded = 5 force_wielded = 20 @@ -76,7 +76,7 @@ lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi' flags_1 = CONDUCT_1 - slot_flags = SLOT_BACK + slot_flags = ITEM_SLOT_BACK force = 5 force_unwielded = 5 force_wielded = 25 diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 511f9754fe..bee37d1ff9 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -127,6 +127,18 @@ self_delay = 20 max_amount = 12 +/obj/item/stack/medical/gauze/wirecutter_act(mob/living/user, obj/item/I) + if(get_amount() < 2) + to_chat(user, "You need at least two gauze to do this!") + return + new /obj/item/stack/sheet/cloth(user.drop_location()) + user.visible_message("[user] cuts [src] into pieces of cloth with [I].", \ + "You cut [src] into pieces of cloth with [I].", \ + "You hear cutting.") + var/obj/item/stack/medical/gauze/R = src + src = null + R.use(2) + /obj/item/stack/medical/gauze/suicide_act(mob/living/user) user.visible_message("[user] begins tightening \the [src] around [user.p_their()] neck! It looks like [user.p_they()] forgot how to use medical supplies!") return OXYLOSS @@ -155,5 +167,5 @@ grind_results = list("silver_sulfadiazine" = 10) /obj/item/stack/medical/ointment/suicide_act(mob/living/user) - user.visible_message("[user] is squeezing \the [src] into [user.p_their()] mouth! Don't they know that stuff is toxic?") - return TOXLOSS \ No newline at end of file + user.visible_message("[user] is squeezing \the [src] into [user.p_their()] mouth! [user.p_do(TRUE)]n't [user.p_they()] know that stuff is toxic?") + return TOXLOSS diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index fba0c1b1a2..3264deae88 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -82,7 +82,7 @@ GLOBAL_LIST_INIT(pglass_recipes, list ( \ singular_name = "plasma glass sheet" icon_state = "sheet-pglass" item_state = "sheet-pglass" - materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT/2, MAT_GLASS=MINERAL_MATERIAL_AMOUNT) + materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS=MINERAL_MATERIAL_AMOUNT) armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 75, "acid" = 100) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/plasmaglass @@ -133,7 +133,7 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \ singular_name = "reinforced glass sheet" icon_state = "sheet-rglass" item_state = "sheet-rglass" - materials = list(MAT_METAL=MINERAL_MATERIAL_AMOUNT/2, MAT_GLASS=MINERAL_MATERIAL_AMOUNT) + materials = list(MAT_METAL=MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS=MINERAL_MATERIAL_AMOUNT) armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 100) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/rglass @@ -175,7 +175,7 @@ GLOBAL_LIST_INIT(prglass_recipes, list ( \ singular_name = "reinforced plasma glass sheet" icon_state = "sheet-prglass" item_state = "sheet-prglass" - materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT/2, MAT_GLASS=MINERAL_MATERIAL_AMOUNT) + materials = list(MAT_PLASMA=MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS=MINERAL_MATERIAL_AMOUNT, MAT_METAL = MINERAL_MATERIAL_AMOUNT * 0.5,) armor = list("melee" = 20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/plasmarglass @@ -195,7 +195,7 @@ GLOBAL_LIST_INIT(titaniumglass_recipes, list( singular_name = "titanium glass sheet" icon_state = "sheet-titaniumglass" item_state = "sheet-titaniumglass" - materials = list(MAT_TITANIUM=MINERAL_MATERIAL_AMOUNT, MAT_GLASS=MINERAL_MATERIAL_AMOUNT) + materials = list(MAT_TITANIUM=MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS=MINERAL_MATERIAL_AMOUNT) armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/titaniumglass @@ -214,7 +214,7 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list( singular_name = "plastitanium glass sheet" icon_state = "sheet-plastitaniumglass" item_state = "sheet-plastitaniumglass" - materials = list(MAT_TITANIUM=MINERAL_MATERIAL_AMOUNT, MAT_PLASMA=MINERAL_MATERIAL_AMOUNT, MAT_GLASS=MINERAL_MATERIAL_AMOUNT) + materials = list(MAT_TITANIUM=MINERAL_MATERIAL_AMOUNT * 0.5, MAT_PLASMA=MINERAL_MATERIAL_AMOUNT * 0.5, MAT_GLASS=MINERAL_MATERIAL_AMOUNT) armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100) resistance_flags = ACID_PROOF merge_type = /obj/item/stack/sheet/plastitaniumglass @@ -285,7 +285,7 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list( /obj/item/shard/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/device/lightreplacer)) + if(istype(I, /obj/item/lightreplacer)) I.attackby(src, user) else return ..() diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm index cfccedcc3a..4eae35a98c 100644 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ b/code/game/objects/items/stacks/sheets/leather.dm @@ -211,10 +211,9 @@ GLOBAL_LIST_INIT(sinew_recipes, list ( \ if(W.is_sharp()) playsound(loc, 'sound/weapons/slice.ogg', 50, 1, -1) user.visible_message("[user] starts cutting hair off \the [src].", "You start cutting the hair off \the [src]...", "You hear the sound of a knife rubbing against flesh.") - if(do_after(user,50, target = src)) + if(do_after(user, 50, target = src)) to_chat(user, "You cut the hair from this [src.singular_name].") - var/obj/item/stack/sheet/hairlesshide/HS = new(user.loc) - HS.amount = 1 + new /obj/item/stack/sheet/hairlesshide(user.drop_location(), 1) use(1) else return ..() @@ -228,21 +227,11 @@ GLOBAL_LIST_INIT(sinew_recipes, list ( \ if(exposed_temperature >= drying_threshold_temperature) wetness-- if(wetness == 0) - //Try locating an exisitng stack on the tile and add to there if possible - for(var/obj/item/stack/sheet/leather/HS in src.loc) - if(HS.amount < 50) - HS.amount++ - src.use(1) - wetness = initial(wetness) - break - //If it gets to here it means it did not find a suitable stack on the tile. - var/obj/item/stack/sheet/leather/HS = new(src.loc) - HS.amount = 1 + new /obj/item/stack/sheet/leather(drop_location(), 1) wetness = initial(wetness) - src.use(1) + use(1) /obj/item/stack/sheet/wetleather/microwave_act(obj/machinery/microwave/MW) ..() - var/obj/item/stack/sheet/leather/L = new(loc) - L.amount = amount + new /obj/item/stack/sheet/leather(drop_location(), amount) qdel(src) diff --git a/code/game/objects/items/stacks/sheets/light.dm b/code/game/objects/items/stacks/sheets/light.dm index b4482a72db..b7c2d5b3f9 100644 --- a/code/game/objects/items/stacks/sheets/light.dm +++ b/code/game/objects/items/stacks/sheets/light.dm @@ -14,13 +14,12 @@ grind_results = list("silicon" = 20, "copper" = 5) /obj/item/stack/light_w/attackby(obj/item/O, mob/user, params) - + var/atom/Tsec = user.drop_location() if(istype(O, /obj/item/wirecutters)) - var/obj/item/stack/cable_coil/CC = new (user.loc) - CC.amount = 5 + var/obj/item/stack/cable_coil/CC = new (Tsec, 5) CC.add_fingerprint(user) amount-- - var/obj/item/stack/sheet/glass/G = new (user.loc) + var/obj/item/stack/sheet/glass/G = new (Tsec) G.add_fingerprint(user) if(amount <= 0) qdel(src) @@ -28,7 +27,6 @@ else if(istype(O, /obj/item/stack/sheet/metal)) var/obj/item/stack/sheet/metal/M = O if (M.use(1)) - use(1) var/obj/item/L = new /obj/item/stack/tile/light(user.loc) to_chat(user, "You make a light tile.") L.add_fingerprint(user) diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 02febc9a0e..719835e872 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -19,9 +19,6 @@ Mineral Sheets - Abductor */ -/obj/item/stack/sheet/mineral - icon = 'icons/obj/mining.dmi' - /obj/item/stack/sheet/mineral/Initialize(mapload) pixel_x = rand(-4, 4) pixel_y = rand(-4, 4) @@ -63,7 +60,6 @@ GLOBAL_LIST_INIT(sandstone_recipes, list ( \ /obj/item/stack/sheet/mineral/sandbags name = "sandbags" - icon = 'icons/obj/stack_objects.dmi' icon_state = "sandbags" singular_name = "sandbag" layer = LOW_ITEM_LAYER @@ -337,16 +333,6 @@ GLOBAL_LIST_INIT(snow_recipes, list ( \ /****************************** Others ****************************/ -/* - * Enriched Uranium - */ -/obj/item/stack/sheet/mineral/enruranium - name = "enriched uranium" - icon_state = "sheet-enruranium" - item_state = "sheet-enruranium" - singular_name = "enriched uranium sheet" - materials = list(MAT_URANIUM=3000) - /* * Adamantine */ diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 6109f6b0d0..df3d5f799b 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -121,6 +121,9 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ /obj/item/stack/sheet/metal/twenty amount = 20 +/obj/item/stack/sheet/metal/ten + amount = 10 + /obj/item/stack/sheet/metal/five amount = 5 @@ -349,6 +352,11 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list ( \ if(!iscultist(user)) to_chat(user, "Only one with forbidden knowledge could hope to work this metal...") return + var/turf/T = get_turf(user) //we may have moved. adjust as needed... + var/area/A = get_area(user) + if((!is_station_level(T.z) && !is_mining_level(T.z)) || (A && !A.blob_allowed)) + to_chat(user, "The veil is not weak enough here.") + return FALSE return ..() /obj/item/stack/sheet/runed_metal/Initialize(mapload, new_amount, merge = TRUE) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index b1afc7bd18..4d5bf2a449 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -33,10 +33,13 @@ return return TRUE -/obj/item/stack/Initialize(mapload, new_amount=null , merge = TRUE) +/obj/item/stack/Initialize(mapload, new_amount, merge = TRUE) . = ..() - if(new_amount) + if(new_amount != null) amount = new_amount + while(amount > max_amount) + amount -= max_amount + new type(loc, max_amount, FALSE) if(!merge_type) merge_type = type if(merge) @@ -227,26 +230,36 @@ else to_chat(usr, "You haven't got enough [src] to build \the [R.title]!") return FALSE - if(R.window_checks && !valid_window_location(usr.loc, usr.dir)) + var/turf/T = get_turf(usr) + if(R.window_checks && !valid_window_location(T, usr.dir)) to_chat(usr, "The [R.title] won't fit here!") return FALSE - if(R.one_per_turf && (locate(R.result_type) in usr.loc)) + if(R.one_per_turf && (locate(R.result_type) in T)) to_chat(usr, "There is another [R.title] here!") return FALSE - if(R.on_floor && !isfloorturf(usr.loc)) - to_chat(usr, "\The [R.title] must be constructed on the floor!") - return FALSE + if(R.on_floor) + if(!isfloorturf(T)) + to_chat(usr, "\The [R.title] must be constructed on the floor!") + return FALSE + for(var/obj/AM in T) + if(istype(AM,/obj/structure/grille)) + continue + if(istype(AM,/obj/structure/table)) + continue + if(AM.density) + to_chat(usr, "Theres a [AM.name] here. You cant make a [R.title] here!") + return FALSE if(R.placement_checks) switch(R.placement_checks) if(STACK_CHECK_CARDINALS) var/turf/step for(var/direction in GLOB.cardinals) - step = get_step(usr, direction) + step = get_step(T, direction) if(locate(R.result_type) in step) to_chat(usr, "\The [R.title] must not be built directly adjacent to another!") return FALSE if(STACK_CHECK_ADJACENT) - if(locate(R.result_type) in range(1, usr)) + if(locate(R.result_type) in range(1, T)) to_chat(usr, "\The [R.title] must be constructed at least one tile away from others of its type!") return FALSE return TRUE @@ -395,7 +408,9 @@ var/window_checks = FALSE var/placement_checks = FALSE -/datum/stack_recipe/New(title, result_type, req_amount = 1, res_amount = 1, max_res_amount = 1, time = 0, one_per_turf = FALSE, on_floor = FALSE, window_checks = FALSE, placement_checks = FALSE) +/datum/stack_recipe/New(title, result_type, req_amount = 1, res_amount = 1, max_res_amount = 1,time = 0, one_per_turf = FALSE, on_floor = FALSE, window_checks = FALSE, placement_checks = FALSE ) + + src.title = title src.result_type = result_type src.req_amount = req_amount diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index a236ebeff6..d2665be1b0 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -17,7 +17,7 @@ lefthand_file = 'icons/mob/inhands/equipment/backpack_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/backpack_righthand.dmi' w_class = WEIGHT_CLASS_BULKY - slot_flags = SLOT_BACK //ERROOOOO + slot_flags = ITEM_SLOT_BACK //ERROOOOO resistance_flags = NONE max_integrity = 300 @@ -379,7 +379,7 @@ new /obj/item/crowbar(src) new /obj/item/stack/cable_coil/random(src) new /obj/item/wirecutters(src) - new /obj/item/device/multitool(src) + new /obj/item/multitool(src) /obj/item/storage/backpack/duffelbag/clown name = "clown's duffel bag" @@ -439,7 +439,7 @@ new /obj/item/surgical_drapes(src) new /obj/item/clothing/suit/straight_jacket(src) new /obj/item/clothing/mask/muzzle(src) - new /obj/item/device/mmi/syndie(src) + new /obj/item/mmi/syndie(src) /obj/item/storage/backpack/duffelbag/syndie/ammo name = "ammunition duffel bag" @@ -453,7 +453,7 @@ /obj/item/storage/backpack/duffelbag/syndie/ammo/shotgun/PopulateContents() for(var/i in 1 to 6) new /obj/item/ammo_box/magazine/m12g(src) - new /obj/item/ammo_box/magazine/m12g/buckshot(src) + new /obj/item/ammo_box/magazine/m12g/stun(src) new /obj/item/ammo_box/magazine/m12g/slug(src) new /obj/item/ammo_box/magazine/m12g/dragon(src) @@ -479,7 +479,7 @@ /obj/item/storage/backpack/duffelbag/syndie/bulldogbundle/PopulateContents() new /obj/item/ammo_box/magazine/m12g(src) new /obj/item/gun/ballistic/automatic/shotgun/bulldog(src) - new /obj/item/ammo_box/magazine/m12g/buckshot(src) + new /obj/item/ammo_box/magazine/m12g/stun(src) new /obj/item/clothing/glasses/thermal/syndi(src) /obj/item/storage/backpack/duffelbag/syndie/med/medicalbundle @@ -511,6 +511,8 @@ new /obj/item/storage/box/syringes(src) new /obj/item/ammo_box/foambox/riot(src) new /obj/item/grenade/chem_grenade/bioterrorfoam(src) + if(prob(5)) + new /obj/item/reagent_containers/food/snacks/pizza/pineapple(src) /obj/item/storage/backpack/duffelbag/syndie/c4/PopulateContents() for(var/i in 1 to 10) @@ -542,7 +544,7 @@ STR.silent = TRUE /obj/item/storage/backpack/duffelbag/clown/syndie/PopulateContents() - new /obj/item/device/pda/clown(src) + new /obj/item/pda/clown(src) new /obj/item/clothing/under/rank/clown(src) new /obj/item/clothing/shoes/clown_shoes(src) new /obj/item/clothing/mask/gas/clown_hat(src) diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index 5c6a354356..a75d0aa0d9 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -17,7 +17,7 @@ // Generic non-item /obj/item/storage/bag - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT /obj/item/storage/bag/ComponentInitialize() . = ..() @@ -94,7 +94,7 @@ desc = "This little bugger can be used to store and transport ores." icon = 'icons/obj/mining.dmi' icon_state = "satchel" - slot_flags = SLOT_BELT | SLOT_POCKET + slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_POCKET w_class = WEIGHT_CLASS_NORMAL component_type = /datum/component/storage/concrete/stack var/spam_protection = FALSE //If this is TRUE, the holder won't receive any messages when they fail to pick up ore through crossing it diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index a4cd9cc739..22a8844d1a 100755 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -6,7 +6,7 @@ item_state = "utility" lefthand_file = 'icons/mob/inhands/equipment/belt_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/belt_righthand.dmi' - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT attack_verb = list("whipped", "lashed", "disciplined") max_integrity = 300 var/content_overlays = FALSE //If this is true, the belt will gain overlays based on what it's holding @@ -34,27 +34,28 @@ item_state = "utility" content_overlays = TRUE -/obj/item/storage/belt/ulility/ComponentInitialize() +/obj/item/storage/belt/utility/ComponentInitialize() . = ..() GET_COMPONENT(STR, /datum/component/storage) - STR.can_hold = typecacheof(list( + var/static/list/can_hold = typecacheof(list( /obj/item/crowbar, /obj/item/screwdriver, /obj/item/weldingtool, /obj/item/wirecutters, /obj/item/wrench, - /obj/item/device/multitool, - /obj/item/device/flashlight, + /obj/item/multitool, + /obj/item/flashlight, /obj/item/stack/cable_coil, - /obj/item/device/t_scanner, - /obj/item/device/analyzer, - /obj/item/device/geiger_counter, + /obj/item/t_scanner, + /obj/item/analyzer, + /obj/item/geiger_counter, /obj/item/extinguisher/mini, - /obj/item/device/radio, + /obj/item/radio, /obj/item/clothing/gloves, /obj/item/holosign_creator, - /obj/item/device/assembly/signaler + /obj/item/assembly/signaler )) + STR.can_hold = can_hold /obj/item/storage/belt/utility/chief name = "\improper Chief Engineer's toolbelt" //"the Chief Engineer's toolbelt", because "Chief Engineer's toolbelt" is not a proper noun @@ -66,10 +67,10 @@ new /obj/item/screwdriver/power(src) new /obj/item/crowbar/power(src) new /obj/item/weldingtool/experimental(src)//This can be changed if this is too much - new /obj/item/device/multitool(src) + new /obj/item/multitool(src) new /obj/item/stack/cable_coil(src,30,pick("red","yellow","orange")) new /obj/item/extinguisher/mini(src) - new /obj/item/device/analyzer(src) + new /obj/item/analyzer(src) //much roomier now that we've managed to remove two tools /obj/item/storage/belt/utility/full/PopulateContents() @@ -78,7 +79,7 @@ new /obj/item/weldingtool(src) new /obj/item/crowbar(src) new /obj/item/wirecutters(src) - new /obj/item/device/multitool(src) + new /obj/item/multitool(src) new /obj/item/stack/cable_coil(src,30,pick("red","yellow","orange")) /obj/item/storage/belt/utility/full/engi/PopulateContents() @@ -87,7 +88,7 @@ new /obj/item/weldingtool/largetank(src) new /obj/item/crowbar(src) new /obj/item/wirecutters(src) - new /obj/item/device/multitool(src) + new /obj/item/multitool(src) new /obj/item/stack/cable_coil(src,30,pick("red","yellow","orange")) @@ -97,7 +98,7 @@ new /obj/item/weldingtool(src) new /obj/item/crowbar(src) new /obj/item/wirecutters(src) - new /obj/item/device/t_scanner(src) + new /obj/item/t_scanner(src) new /obj/item/extinguisher/mini(src) /obj/item/storage/belt/utility/servant/PopulateContents() @@ -106,7 +107,7 @@ new /obj/item/wrench/brass(src) new /obj/item/crowbar/brass(src) new /obj/item/weldingtool/experimental/brass(src) - new /obj/item/device/multitool(src) + new /obj/item/multitool(src) new /obj/item/stack/cable_coil(src, 30, "yellow") /obj/item/storage/belt/medical @@ -120,7 +121,7 @@ GET_COMPONENT(STR, /datum/component/storage) STR.max_w_class = WEIGHT_CLASS_BULKY STR.can_hold = typecacheof(list( - /obj/item/device/healthanalyzer, + /obj/item/healthanalyzer, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/glass/beaker, @@ -132,11 +133,11 @@ /obj/item/storage/fancy/cigarettes, /obj/item/storage/pill_bottle, /obj/item/stack/medical, - /obj/item/device/flashlight/pen, + /obj/item/flashlight/pen, /obj/item/extinguisher/mini, /obj/item/reagent_containers/hypospray, - /obj/item/device/sensor_device, - /obj/item/device/radio, + /obj/item/sensor_device, + /obj/item/radio, /obj/item/clothing/gloves/, /obj/item/lazarus_injector, /obj/item/bikehorn/rubberducky, @@ -150,7 +151,7 @@ /obj/item/retractor, /obj/item/cautery, /obj/item/hemostat, - /obj/item/device/geiger_counter, + /obj/item/geiger_counter, /obj/item/clothing/neck/stethoscope, /obj/item/stamp, /obj/item/clothing/glasses, @@ -185,15 +186,15 @@ /obj/item/grenade, /obj/item/reagent_containers/spray/pepper, /obj/item/restraints/handcuffs, - /obj/item/device/assembly/flash/handheld, + /obj/item/assembly/flash/handheld, /obj/item/clothing/glasses, /obj/item/ammo_casing/shotgun, /obj/item/ammo_box, /obj/item/reagent_containers/food/snacks/donut, /obj/item/kitchen/knife/combat, - /obj/item/device/flashlight/seclite, + /obj/item/flashlight/seclite, /obj/item/melee/classic_baton/telescopic, - /obj/item/device/radio, + /obj/item/radio, /obj/item/clothing/gloves, /obj/item/restraints/legcuffs/bola )) @@ -202,7 +203,7 @@ new /obj/item/reagent_containers/spray/pepper(src) new /obj/item/restraints/handcuffs(src) new /obj/item/grenade/flashbang(src) - new /obj/item/device/assembly/flash/handheld(src) + new /obj/item/assembly/flash/handheld(src) new /obj/item/melee/baton/loaded(src) update_icon() @@ -225,15 +226,15 @@ /obj/item/weldingtool, /obj/item/wirecutters, /obj/item/wrench, - /obj/item/device/multitool, - /obj/item/device/flashlight, + /obj/item/multitool, + /obj/item/flashlight, /obj/item/stack/cable_coil, - /obj/item/device/analyzer, + /obj/item/analyzer, /obj/item/extinguisher/mini, - /obj/item/device/radio, + /obj/item/radio, /obj/item/clothing/gloves, /obj/item/resonator, - /obj/item/device/mining_scanner, + /obj/item/mining_scanner, /obj/item/pickaxe, /obj/item/stack/sheet/animalhide, /obj/item/stack/sheet/sinew, @@ -244,16 +245,16 @@ /obj/item/stack/medical, /obj/item/kitchen/knife, /obj/item/reagent_containers/hypospray, - /obj/item/device/gps, + /obj/item/gps, /obj/item/storage/bag/ore, /obj/item/survivalcapsule, - /obj/item/device/t_scanner/adv_mining_scanner, + /obj/item/t_scanner/adv_mining_scanner, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/stack/ore, /obj/item/reagent_containers/food/drinks, /obj/item/organ/regenerative_core, - /obj/item/device/wormhole_jaunter, + /obj/item/wormhole_jaunter, /obj/item/storage/bag/plants, /obj/item/stack/marker_beacon )) @@ -288,16 +289,16 @@ GET_COMPONENT(STR, /datum/component/storage) STR.max_items = 6 STR.can_hold = typecacheof(list( - /obj/item/device/soulstone + /obj/item/soulstone )) /obj/item/storage/belt/soulstone/full/PopulateContents() for(var/i in 1 to 6) - new /obj/item/device/soulstone(src) + new /obj/item/soulstone(src) /obj/item/storage/belt/soulstone/full/chappy/PopulateContents() for(var/i in 1 to 6) - new /obj/item/device/soulstone/anybody/chaplain(src) + new /obj/item/soulstone/anybody/chaplain(src) /obj/item/storage/belt/champion name = "championship belt" @@ -338,7 +339,7 @@ new /obj/item/weldingtool/abductor(src) new /obj/item/crowbar/abductor(src) new /obj/item/wirecutters/abductor(src) - new /obj/item/device/multitool/abductor(src) + new /obj/item/multitool/abductor(src) new /obj/item/stack/cable_coil(src,30,"white") /obj/item/storage/belt/military/army @@ -375,7 +376,7 @@ /obj/item/grenade, /obj/item/screwdriver, /obj/item/lighter, - /obj/item/device/multitool, + /obj/item/multitool, /obj/item/reagent_containers/food/drinks/bottle/molotov, /obj/item/grenade/plastic/c4, )) @@ -408,7 +409,7 @@ new /obj/item/grenade/syndieminibomb(src) new /obj/item/grenade/syndieminibomb(src) new /obj/item/screwdriver(src) - new /obj/item/device/multitool(src) + new /obj/item/multitool(src) /obj/item/storage/belt/wands name = "wand belt" @@ -449,15 +450,15 @@ STR.max_w_class = WEIGHT_CLASS_BULKY // Set to this so the light replacer can fit. STR.can_hold = typecacheof(list( /obj/item/grenade/chem_grenade, - /obj/item/device/lightreplacer, - /obj/item/device/flashlight, + /obj/item/lightreplacer, + /obj/item/flashlight, /obj/item/reagent_containers/spray, /obj/item/soap, /obj/item/holosign_creator, /obj/item/key/janitor, /obj/item/clothing/gloves, /obj/item/melee/flyswatter, - /obj/item/device/assembly/mousetrap + /obj/item/assembly/mousetrap )) /obj/item/storage/belt/bandolier @@ -606,4 +607,4 @@ /obj/item/storage/belt/sabre/PopulateContents() new /obj/item/melee/sabre(src) - update_icon() + update_icon() \ No newline at end of file diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index 41f2a4bf47..db47fd3d0b 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -74,7 +74,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", if(B.icon_state == "honk1" || B.icon_state == "honk2") var/mob/living/carbon/human/H = usr H.dna.add_mutation(CLOWNMUT) - H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(H), slot_wear_mask) + H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(H), SLOT_WEAR_MASK) SSreligion.bible_icon_state = B.icon_state SSreligion.bible_item_state = B.item_state @@ -177,7 +177,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "bible", playsound(src,'sound/hallucinations/veryfar_noise.ogg',40,1) if(do_after(user, 40, target = sword)) playsound(src,'sound/effects/pray_chaplain.ogg',60,1) - for(var/obj/item/device/soulstone/SS in sword.contents) + for(var/obj/item/soulstone/SS in sword.contents) SS.usability = TRUE for(var/mob/living/simple_animal/shade/EX in SS) SSticker.mode.remove_cultist(EX.mind, 1, 0) diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index d244e512c3..e47ceee7ad 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -101,7 +101,7 @@ /obj/item/storage/box/survival/radio/PopulateContents() ..() // we want the survival stuff too. - new /obj/item/device/radio/off(src) + new /obj/item/radio/off(src) /obj/item/storage/box/survival_mining/PopulateContents() new /obj/item/clothing/mask/gas/explorer(src) @@ -118,7 +118,7 @@ /obj/item/storage/box/engineer/radio/PopulateContents() ..() // we want the regular items too. - new /obj/item/device/radio/off(src) + new /obj/item/radio/off(src) // Syndie survival box /obj/item/storage/box/syndie/PopulateContents() @@ -133,7 +133,7 @@ /obj/item/storage/box/security/radio/PopulateContents() ..() // we want the regular stuff too - new /obj/item/device/radio/off(src) + new /obj/item/radio/off(src) /obj/item/storage/box/gloves name = "box of latex gloves" @@ -225,7 +225,7 @@ /obj/item/storage/box/flashes/PopulateContents() for(var/i in 1 to 6) - new /obj/item/device/assembly/flash/handheld(src) + new /obj/item/assembly/flash/handheld(src) /obj/item/storage/box/wall_flash name = "wall-mounted flash kit" @@ -238,11 +238,11 @@ new /obj/item/wallframe/button(src) new /obj/item/electronics/airlock(src) - var/obj/item/device/assembly/control/flasher/remote = new(src) + var/obj/item/assembly/control/flasher/remote = new(src) remote.id = id var/obj/item/wallframe/flasher/frame = new(src) frame.id = id - new /obj/item/device/assembly/flash/handheld(src) + new /obj/item/assembly/flash/handheld(src) new /obj/item/screwdriver(src) @@ -399,10 +399,10 @@ illustration = "pda" /obj/item/storage/box/PDAs/PopulateContents() - new /obj/item/device/pda(src) - new /obj/item/device/pda(src) - new /obj/item/device/pda(src) - new /obj/item/device/pda(src) + new /obj/item/pda(src) + new /obj/item/pda(src) + new /obj/item/pda(src) + new /obj/item/pda(src) new /obj/item/cartridge/head(src) var/newcart = pick( /obj/item/cartridge/engineering, @@ -453,7 +453,7 @@ /obj/item/storage/box/firingpins/PopulateContents() for(var/i in 1 to 5) - new /obj/item/device/firing_pin(src) + new /obj/item/firing_pin(src) /obj/item/storage/box/lasertagpins name = "box of laser tag firing pins" @@ -462,8 +462,8 @@ /obj/item/storage/box/lasertagpins/PopulateContents() for(var/i in 1 to 3) - new /obj/item/device/firing_pin/tag/red(src) - new /obj/item/device/firing_pin/tag/blue(src) + new /obj/item/firing_pin/tag/red(src) + new /obj/item/firing_pin/tag/blue(src) /obj/item/storage/box/handcuffs name = "box of spare handcuffs" @@ -511,7 +511,7 @@ /obj/item/storage/box/mousetraps/PopulateContents() for(var/i in 1 to 6) - new /obj/item/device/assembly/mousetrap(src) + new /obj/item/assembly/mousetrap(src) /obj/item/storage/box/pillbottles name = "box of pill bottles" @@ -544,7 +544,7 @@ icon_state = "matchbox" item_state = "zippo" w_class = WEIGHT_CLASS_TINY - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT /obj/item/storage/box/matches/ComponentInitialize() . = ..() @@ -966,3 +966,45 @@ obj/item/storage/box/clown /obj/item/storage/box/holy_grenades/PopulateContents() for(var/i in 1 to 7) new/obj/item/grenade/chem_grenade/holy(src) + +/obj/item/storage/box/stockparts/basic //for ruins where it's a bad idea to give access to an autolathe/protolathe, but still want to make stock parts accessible + name = "box of stock parts" + desc = "Contains a variety of basic stock parts." + +/obj/item/storage/box/stockparts/basic/PopulateContents() + new /obj/item/stock_parts/capacitor(src) + new /obj/item/stock_parts/capacitor(src) + new /obj/item/stock_parts/capacitor(src) + new /obj/item/stock_parts/scanning_module(src) + new /obj/item/stock_parts/scanning_module(src) + new /obj/item/stock_parts/scanning_module(src) + new /obj/item/stock_parts/manipulator(src) + new /obj/item/stock_parts/manipulator(src) + new /obj/item/stock_parts/manipulator(src) + new /obj/item/stock_parts/micro_laser(src) + new /obj/item/stock_parts/micro_laser(src) + new /obj/item/stock_parts/micro_laser(src) + new /obj/item/stock_parts/matter_bin(src) + new /obj/item/stock_parts/matter_bin(src) + new /obj/item/stock_parts/matter_bin(src) + +/obj/item/storage/box/stockparts/deluxe + name = "box of deluxe stock parts" + desc = "Contains a variety of deluxe stock parts." + +/obj/item/storage/box/stockparts/deluxe/PopulateContents() + new /obj/item/stock_parts/capacitor/quadratic(src) + new /obj/item/stock_parts/capacitor/quadratic(src) + new /obj/item/stock_parts/capacitor/quadratic(src) + new /obj/item/stock_parts/scanning_module/triphasic(src) + new /obj/item/stock_parts/scanning_module/triphasic(src) + new /obj/item/stock_parts/scanning_module/triphasic(src) + new /obj/item/stock_parts/manipulator/femto(src) + new /obj/item/stock_parts/manipulator/femto(src) + new /obj/item/stock_parts/manipulator/femto(src) + new /obj/item/stock_parts/micro_laser/quadultra(src) + new /obj/item/stock_parts/micro_laser/quadultra(src) + new /obj/item/stock_parts/micro_laser/quadultra(src) + new /obj/item/stock_parts/matter_bin/bluespace(src) + new /obj/item/stock_parts/matter_bin/bluespace(src) + new /obj/item/stock_parts/matter_bin/bluespace(src) diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm index d669431be5..f86188984f 100644 --- a/code/game/objects/items/storage/fancy.dm +++ b/code/game/objects/items/storage/fancy.dm @@ -109,7 +109,7 @@ icon_type = "candle" item_state = "candlebox5" throwforce = 2 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT spawn_type = /obj/item/candle fancy_open = TRUE @@ -132,7 +132,7 @@ item_state = "cigpacket" w_class = WEIGHT_CLASS_TINY throwforce = 0 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT icon_type = "cigarette" spawn_type = /obj/item/clothing/mask/cigarette/space_cigarette @@ -189,7 +189,7 @@ if(M == user && contents.len > 0 && !user.wear_mask) var/obj/item/clothing/mask/cigarette/W = cig SendSignal(COMSIG_TRY_STORAGE_TAKE, W, M) - M.equip_to_slot_if_possible(W, slot_wear_mask) + M.equip_to_slot_if_possible(W, SLOT_WEAR_MASK) contents -= W to_chat(user, "You take a [icon_type] out of the pack.") else @@ -237,7 +237,7 @@ name = "\improper Midori Tabako packet" desc = "You can't understand the runes, but the packet smells funny." icon_state = "midori" - spawn_type = /obj/item/clothing/mask/cigarette/rollie + spawn_type = /obj/item/clothing/mask/cigarette/rollie/nicotine /obj/item/storage/fancy/cigarettes/cigpack_shadyjims name = "\improper Shady Jim's Super Slims packet" diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm index d5548ee95c..fe46141614 100644 --- a/code/game/objects/items/storage/firstaid.dm +++ b/code/game/objects/items/storage/firstaid.dm @@ -35,7 +35,7 @@ new /obj/item/stack/medical/ointment(src) new /obj/item/stack/medical/ointment(src) new /obj/item/reagent_containers/hypospray/medipen(src) - new /obj/item/device/healthanalyzer(src) + new /obj/item/healthanalyzer(src) /obj/item/storage/firstaid/ancient icon_state = "firstaid" @@ -74,7 +74,7 @@ new /obj/item/reagent_containers/pill/oxandrolone(src) new /obj/item/reagent_containers/pill/oxandrolone(src) new /obj/item/reagent_containers/hypospray/medipen(src) - new /obj/item/device/healthanalyzer(src) + new /obj/item/healthanalyzer(src) /obj/item/storage/firstaid/toxin name = "toxin treatment kit" @@ -97,7 +97,7 @@ new /obj/item/reagent_containers/syringe/charcoal(src) for(var/i in 1 to 2) new /obj/item/storage/pill_bottle/charcoal(src) - new /obj/item/device/healthanalyzer(src) + new /obj/item/healthanalyzer(src) /obj/item/storage/firstaid/o2 name = "oxygen deprivation treatment kit" @@ -116,7 +116,7 @@ new /obj/item/reagent_containers/pill/salbutamol(src) new /obj/item/reagent_containers/hypospray/medipen(src) new /obj/item/reagent_containers/hypospray/medipen(src) - new /obj/item/device/healthanalyzer(src) + new /obj/item/healthanalyzer(src) /obj/item/storage/firstaid/brute name = "brute trauma treatment kit" @@ -135,7 +135,7 @@ new /obj/item/reagent_containers/pill/patch/styptic(src) new /obj/item/stack/medical/gauze(src) new /obj/item/stack/medical/gauze(src) - new /obj/item/device/healthanalyzer(src) + new /obj/item/healthanalyzer(src) /obj/item/storage/firstaid/tactical name = "combat medical kit" diff --git a/code/game/objects/items/storage/secure.dm b/code/game/objects/items/storage/secure.dm index 73e178af3f..806f22a2dc 100644 --- a/code/game/objects/items/storage/secure.dm +++ b/code/game/objects/items/storage/secure.dm @@ -43,7 +43,7 @@ return if (istype(W, /obj/item/wirecutters)) to_chat(user, "[src] is protected from this sort of tampering, yet it appears the internal memory wires can still be pulsed.") - if ((istype(W, /obj/item/device/multitool)) && (!l_hacking)) + if ((istype(W, /obj/item/multitool)) && (!l_hacking)) if(open == 1) to_chat(user, "Now attempting to reset internal memory, please hold.") l_hacking = 1 diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index bea6b6de47..689319e672 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -48,12 +48,12 @@ new /obj/item/extinguisher/mini(src) switch(rand(1,3)) if(1) - new /obj/item/device/flashlight(src) + new /obj/item/flashlight(src) if(2) - new /obj/item/device/flashlight/glowstick(src) + new /obj/item/flashlight/glowstick(src) if(3) - new /obj/item/device/flashlight/flare(src) - new /obj/item/device/radio/off(src) + new /obj/item/flashlight/flare(src) + new /obj/item/radio/off(src) /obj/item/storage/toolbox/emergency/old name = "rusty red toolbox" @@ -70,7 +70,7 @@ new /obj/item/wrench(src) new /obj/item/weldingtool(src) new /obj/item/crowbar(src) - new /obj/item/device/analyzer(src) + new /obj/item/analyzer(src) new /obj/item/wirecutters(src) /obj/item/storage/toolbox/mechanical/old @@ -96,7 +96,7 @@ var/pickedcolor = pick("red","yellow","green","blue","pink","orange","cyan","white") new /obj/item/screwdriver(src) new /obj/item/wirecutters(src) - new /obj/item/device/t_scanner(src) + new /obj/item/t_scanner(src) new /obj/item/crowbar(src) new /obj/item/stack/cable_coil(src,30,pickedcolor) new /obj/item/stack/cable_coil(src,30,pickedcolor) @@ -123,7 +123,7 @@ new /obj/item/weldingtool/largetank(src) new /obj/item/crowbar/red(src) new /obj/item/wirecutters(src, "red") - new /obj/item/device/multitool(src) + new /obj/item/multitool(src) new /obj/item/clothing/gloves/combat(src) /obj/item/storage/toolbox/drone @@ -139,7 +139,7 @@ new /obj/item/crowbar(src) new /obj/item/stack/cable_coil(src,30,pickedcolor) new /obj/item/wirecutters(src) - new /obj/item/device/multitool(src) + new /obj/item/multitool(src) /obj/item/storage/toolbox/brass name = "brass box" @@ -168,7 +168,7 @@ new /obj/item/weldingtool/experimental/brass(src) /obj/item/storage/toolbox/brass/prefilled/servant - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT fabricator_type = null /obj/item/storage/toolbox/brass/prefilled/ratvar diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 6c4d16f994..60675d031f 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -7,20 +7,20 @@ new /obj/item/clothing/mask/chameleon(src) // Goes with above new /obj/item/card/id/syndicate(src) // 2 tc new /obj/item/clothing/shoes/chameleon/noslip(src) // 2 tc - new /obj/item/device/camera_bug(src) // 1 tc - new /obj/item/device/multitool/ai_detect(src) // 1 tc - new /obj/item/device/encryptionkey/syndicate(src) // 2 tc + new /obj/item/camera_bug(src) // 1 tc + new /obj/item/multitool/ai_detect(src) // 1 tc + new /obj/item/encryptionkey/syndicate(src) // 2 tc new /obj/item/reagent_containers/syringe/mulligan(src) // 4 tc new /obj/item/switchblade(src) //I'll count this as 2 tc new /obj/item/storage/fancy/cigarettes/cigpack_syndicate (src) // 2 tc this shit heals - new /obj/item/device/flashlight/emp(src) // 2 tc - new /obj/item/device/chameleon(src) // 7 tc + new /obj/item/flashlight/emp(src) // 2 tc + new /obj/item/chameleon(src) // 7 tc if("stealth") // 31 tc new /obj/item/gun/energy/kinetic_accelerator/crossbow(src) new /obj/item/pen/sleepy(src) - new /obj/item/device/healthanalyzer/rad_laser(src) - new /obj/item/device/chameleon(src) + new /obj/item/healthanalyzer/rad_laser(src) + new /obj/item/chameleon(src) new /obj/item/soap/syndie(src) new /obj/item/clothing/glasses/thermal/syndi(src) @@ -34,12 +34,12 @@ new /obj/item/reagent_containers/syringe/stimulants(src) if("screwed") // 29 tc - new /obj/item/device/sbeacondrop/bomb(src) + new /obj/item/sbeacondrop/bomb(src) new /obj/item/grenade/syndieminibomb(src) - new /obj/item/device/sbeacondrop/powersink(src) + new /obj/item/sbeacondrop/powersink(src) new /obj/item/clothing/suit/space/syndicate/black/red(src) new /obj/item/clothing/head/helmet/space/syndicate/black/red(src) - new /obj/item/device/encryptionkey/syndicate(src) + new /obj/item/encryptionkey/syndicate(src) if("guns") // 28 tc now new /obj/item/gun/ballistic/revolver(src) @@ -56,7 +56,7 @@ new /obj/item/clothing/glasses/thermal/syndi(src) new /obj/item/card/emag(src) new /obj/item/clothing/shoes/chameleon/noslip(src) - new /obj/item/device/encryptionkey/syndicate(src) + new /obj/item/encryptionkey/syndicate(src) new /obj/item/grenade/syndieminibomb(src) if("implant") // 55+ tc holy shit what the fuck this is a lottery disguised as fun boxes isn't it? @@ -70,12 +70,12 @@ if("hacker") // 26 tc new /obj/item/aiModule/syndicate(src) new /obj/item/card/emag(src) - new /obj/item/device/encryptionkey/binary(src) + new /obj/item/encryptionkey/binary(src) new /obj/item/aiModule/toyAI(src) - new /obj/item/device/multitool/ai_detect(src) + new /obj/item/multitool/ai_detect(src) if("lordsingulo") // 24 tc - new /obj/item/device/sbeacondrop(src) + new /obj/item/sbeacondrop(src) new /obj/item/clothing/suit/space/syndicate/black/red(src) new /obj/item/clothing/head/helmet/space/syndicate/black/red(src) new /obj/item/card/emag(src) @@ -83,10 +83,10 @@ if("sabotage") // 26 tc now new /obj/item/grenade/plastic/c4 (src) new /obj/item/grenade/plastic/c4 (src) - new /obj/item/device/doorCharge(src) - new /obj/item/device/doorCharge(src) - new /obj/item/device/camera_bug(src) - new /obj/item/device/sbeacondrop/powersink(src) + new /obj/item/doorCharge(src) + new /obj/item/doorCharge(src) + new /obj/item/camera_bug(src) + new /obj/item/sbeacondrop/powersink(src) new /obj/item/cartridge/virus/syndicate(src) new /obj/item/storage/toolbox/syndicate(src) //To actually get to those places new /obj/item/pizzabox/bomb @@ -111,8 +111,8 @@ new /obj/item/clothing/suit/space/hardsuit/syndi(src) // 8 tc new /obj/item/gun/ballistic/automatic/shotgun/bulldog/unrestricted(src) // 8 tc new /obj/item/implanter/explosive(src) // 2 tc - new /obj/item/ammo_box/magazine/m12g/buckshot(src) // 2 tc - new /obj/item/ammo_box/magazine/m12g/buckshot(src) // 2 tc + new /obj/item/ammo_box/magazine/m12g(src) // 2 tc + new /obj/item/ammo_box/magazine/m12g(src) // 2 tc new /obj/item/grenade/plastic/c4 (src) // 1 tc new /obj/item/grenade/plastic/c4 (src) // 1 tc new /obj/item/card/emag(src) // 6 tc @@ -128,7 +128,7 @@ new /obj/item/throwing_star(src) new /obj/item/storage/belt/chameleon(src) // Unique but worth at least 2 tc new /obj/item/card/id/syndicate(src) // 2 tc - new /obj/item/device/chameleon(src) // 7 tc + new /obj/item/chameleon(src) // 7 tc /obj/item/storage/box/syndie_kit name = "box" @@ -277,10 +277,10 @@ new /obj/item/clothing/head/chameleon(src) new /obj/item/clothing/mask/chameleon(src) new /obj/item/storage/backpack/chameleon(src) - new /obj/item/device/radio/headset/chameleon(src) + new /obj/item/radio/headset/chameleon(src) new /obj/item/stamp/chameleon(src) - new /obj/item/device/pda/chameleon(src) - new /obj/item/gun/energy/laser/chameleon(src) + new /obj/item/pda/chameleon(src) + //new /obj/item/gun/energy/laser/chameleon(src) //crashes the server right now. please fix it! //5*(2*4) = 5*8 = 45, 45 damage if you hit one person with all 5 stars. //Not counting the damage it will do while embedded (2*4 = 8, at 15% chance) @@ -321,10 +321,10 @@ new /obj/item/clothing/under/rank/centcom_officer(src) new /obj/item/clothing/shoes/sneakers/black(src) new /obj/item/clothing/gloves/color/black(src) - new /obj/item/device/radio/headset/headset_cent/empty(src) + new /obj/item/radio/headset/headset_cent/empty(src) new /obj/item/clothing/glasses/sunglasses(src) new /obj/item/storage/backpack/satchel(src) - new /obj/item/device/pda/heads(src) + new /obj/item/pda/heads(src) new /obj/item/clipboard(src) /obj/item/storage/box/syndie_kit/chameleon/broken/PopulateContents() @@ -336,7 +336,7 @@ new /obj/item/clothing/head/chameleon/broken(src) new /obj/item/clothing/mask/chameleon/broken(src) new /obj/item/storage/backpack/chameleon/broken(src) - new /obj/item/device/radio/headset/chameleon/broken(src) + new /obj/item/radio/headset/chameleon/broken(src) new /obj/item/stamp/chameleon/broken(src) - new /obj/item/device/pda/chameleon/broken(src) + new /obj/item/pda/chameleon/broken(src) // No chameleon laser, they can't randomise for //REASONS// diff --git a/code/game/objects/items/storage/wallets.dm b/code/game/objects/items/storage/wallets.dm index fa649fddc6..4b14388336 100644 --- a/code/game/objects/items/storage/wallets.dm +++ b/code/game/objects/items/storage/wallets.dm @@ -4,7 +4,7 @@ icon_state = "wallet" w_class = WEIGHT_CLASS_SMALL resistance_flags = FLAMMABLE - slot_flags = SLOT_ID + slot_flags = ITEM_SLOT_ID var/obj/item/card/id/front_id = null var/list/combined_access @@ -17,7 +17,7 @@ /obj/item/stack/spacecash, /obj/item/card, /obj/item/clothing/mask/cigarette, - /obj/item/device/flashlight/pen, + /obj/item/flashlight/pen, /obj/item/seeds, /obj/item/stack/medical, /obj/item/toy/crayon, @@ -38,16 +38,20 @@ /obj/item/storage/wallet/Exited(atom/movable/AM) . = ..() - refreshID() + // The loc has not actually changed yet when this proc is called, so call + // refreshID and have it ignore the outgoing atom. + refreshID(AM) -/obj/item/storage/wallet/proc/refreshID() - if(!(front_id in src)) +/obj/item/storage/wallet/proc/refreshID(atom/movable/removed) + LAZYCLEARLIST(combined_access) + if(!(front_id in src) || front_id == removed) front_id = null for(var/obj/item/card/id/I in contents) - LAZYINITLIST(combined_access) - LAZYCLEARLIST(combined_access) + if(I == removed) + continue if(!front_id) front_id = I + LAZYINITLIST(combined_access) combined_access |= I.access update_icon() diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm index 95c68109bb..fed7848d69 100644 --- a/code/game/objects/items/stunbaton.dm +++ b/code/game/objects/items/stunbaton.dm @@ -5,7 +5,7 @@ item_state = "baton" lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT force = 10 throwforce = 7 w_class = WEIGHT_CLASS_NORMAL @@ -195,8 +195,8 @@ stunforce = 100 hitcost = 2000 throw_hit_chance = 10 - slot_flags = SLOT_BACK - var/obj/item/device/assembly/igniter/sparkler = 0 + slot_flags = ITEM_SLOT_BACK + var/obj/item/assembly/igniter/sparkler = 0 /obj/item/melee/baton/cattleprod/Initialize() . = ..() diff --git a/code/game/objects/items/tanks/tank_types.dm b/code/game/objects/items/tanks/tank_types.dm index 4a687b458d..f4eb763847 100644 --- a/code/game/objects/items/tanks/tank_types.dm +++ b/code/game/objects/items/tanks/tank_types.dm @@ -137,7 +137,7 @@ /obj/item/tank/internals/plasmaman/belt icon_state = "plasmaman_tank_belt" item_state = "plasmaman_tank_belt" - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT force = 5 volume = 6 w_class = WEIGHT_CLASS_SMALL //thanks i forgot this @@ -157,7 +157,7 @@ desc = "Used for emergencies. Contains very little oxygen, so try to conserve it until you actually need it." icon_state = "emergency" flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_SMALL force = 4 distribute_pressure = TANK_DEFAULT_RELEASE_PRESSURE diff --git a/code/game/objects/items/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm index 3f97a8222b..91058528e6 100644 --- a/code/game/objects/items/tanks/tanks.dm +++ b/code/game/objects/items/tanks/tanks.dm @@ -4,7 +4,7 @@ lefthand_file = 'icons/mob/inhands/equipment/tanks_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tanks_righthand.dmi' flags_1 = CONDUCT_1 - slot_flags = SLOT_BACK + slot_flags = ITEM_SLOT_BACK hitsound = 'sound/weapons/smash.ogg' pressure_resistance = ONE_ATMOSPHERE * 5 force = 5 @@ -38,7 +38,7 @@ return if(H.wear_mask.mask_adjusted) H.wear_mask.adjustmask(H) - if(!(H.wear_mask.flags_1 & MASKINTERNALS_1)) + if(!(H.wear_mask.clothing_flags & MASKINTERNALS)) to_chat(H, "[H.wear_mask] can't use [src]!") return @@ -138,10 +138,10 @@ /obj/item/tank/attackby(obj/item/W, mob/user, params) add_fingerprint(user) - if((istype(W, /obj/item/device/analyzer)) && get_dist(user, src) <= 1) + if((istype(W, /obj/item/analyzer)) && get_dist(user, src) <= 1) atmosanalyzer_scan(air_contents, user) - else if(istype(W, /obj/item/device/assembly_holder)) + else if(istype(W, /obj/item/assembly_holder)) bomb_assemble(W,user) else . = ..() @@ -237,7 +237,7 @@ var/temperature = air_contents.return_pressure() if(pressure > TANK_FRAGMENT_PRESSURE) - if(!istype(src.loc, /obj/item/device/transfer_valve)) + if(!istype(src.loc, /obj/item/transfer_valve)) message_admins("Explosive tank rupture! Last key to touch the tank was [src.fingerprintslast].") log_game("Explosive tank rupture! Last key to touch the tank was [src.fingerprintslast].") //Give the gas a chance to build up more pressure through reacting @@ -250,7 +250,7 @@ explosion(epicenter, round(range*0.25), round(range*0.5), round(range), round(range*1.5)) - if(istype(src.loc, /obj/item/device/transfer_valve)) + if(istype(src.loc, /obj/item/transfer_valve)) qdel(src.loc) else qdel(src) diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index 5c7df452f0..b8eb2dcc00 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -6,7 +6,7 @@ icon_state = "waterbackpack" item_state = "waterbackpack" w_class = WEIGHT_CLASS_BULKY - slot_flags = SLOT_BACK + slot_flags = ITEM_SLOT_BACK slowdown = 1 actions_types = list(/datum/action/item_action/toggle_mister) max_integrity = 200 @@ -49,7 +49,6 @@ on = FALSE to_chat(user, "You need a free hand to hold the mister!") return - noz.forceMove(user) else //Remove from their hands and put back "into" the tank remove_noz() @@ -60,7 +59,7 @@ /obj/item/watertank/equipped(mob/user, slot) ..() - if(slot != slot_back) + if(slot != SLOT_BACK) remove_noz() /obj/item/watertank/proc/remove_noz() @@ -344,7 +343,7 @@ icon_state = "waterbackpackatmos" item_state = "waterbackpackatmos" w_class = WEIGHT_CLASS_BULKY - slot_flags = SLOT_BACK + slot_flags = ITEM_SLOT_BACK slowdown = 1 actions_types = list(/datum/action/item_action/activate_injector) @@ -361,14 +360,14 @@ toggle_injection() /obj/item/reagent_containers/chemtank/item_action_slot_check(slot, mob/user) - if(slot == slot_back) + if(slot == SLOT_BACK) return 1 /obj/item/reagent_containers/chemtank/proc/toggle_injection() var/mob/living/carbon/human/user = usr if(!istype(user)) return - if (user.get_item_by_slot(slot_back) != src) + if (user.get_item_by_slot(SLOT_BACK) != src) to_chat(user, "The chemtank needs to be on your back before you can activate it!") return if(on) diff --git a/code/game/objects/items/teleportation.dm b/code/game/objects/items/teleportation.dm index b2464ca3ce..dc6fbfe25b 100644 --- a/code/game/objects/items/teleportation.dm +++ b/code/game/objects/items/teleportation.dm @@ -55,7 +55,7 @@ if (sr) temp += "Beacon Signals:
    " - for(var/obj/item/device/beacon/W in GLOB.teleportbeacons) + for(var/obj/item/beacon/W in GLOB.teleportbeacons) if (!W.renamed) continue var/turf/tr = get_turf(W) @@ -219,3 +219,17 @@ if(active_portal_pairs[i] == P) return DESTINATION_PORTAL return FALSE + +/obj/item/hand_tele/suicide_act(mob/user) + if(iscarbon(user)) + user.visible_message("[user] is creating a weak portal and sticking [user.p_their()] head through! It looks like [user.p_theyre()] trying to commit suicide!") + var/mob/living/carbon/itemUser = user + var/obj/item/bodypart/head/head = itemUser.get_bodypart(BODY_ZONE_HEAD) + if(head) + head.drop_limb() + var/list/safeLevels = SSmapping.levels_by_any_trait(list(ZTRAIT_SPACE_RUINS, ZTRAIT_LAVA_RUINS, ZTRAIT_STATION, ZTRAIT_MINING)) + head.forceMove(locate(rand(1, world.maxx), rand(1, world.maxy), pick(safeLevels))) + itemUser.visible_message("The portal snaps closed taking [user]'s head with it!") + else + itemUser.visible_message("[user] looks even further depressed as they realize they do not have a head...and suddenly dies of shame!") + return (BRUTELOSS) diff --git a/code/game/objects/items/tools/crowbar.dm b/code/game/objects/items/tools/crowbar.dm index ed6233a0b6..0684da08b2 100644 --- a/code/game/objects/items/tools/crowbar.dm +++ b/code/game/objects/items/tools/crowbar.dm @@ -7,7 +7,7 @@ righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' usesound = 'sound/items/crowbar.ogg' flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT force = 5 throwforce = 7 w_class = WEIGHT_CLASS_SMALL diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm index 56537e703a..a29c103fda 100644 --- a/code/game/objects/items/tools/screwdriver.dm +++ b/code/game/objects/items/tools/screwdriver.dm @@ -7,7 +7,7 @@ lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT force = 5 w_class = WEIGHT_CLASS_TINY throwforce = 5 diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index dc496187bc..229aa70ee0 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -1,372 +1,372 @@ -#define WELDER_FUEL_BURN_INTERVAL 13 -/obj/item/weldingtool - name = "welding tool" - desc = "A standard edition welder provided by Nanotrasen." - icon = 'icons/obj/tools.dmi' - icon_state = "welder" - item_state = "welder" - lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT - force = 3 - throwforce = 5 - hitsound = "swing_hit" - usesound = list('sound/items/welder.ogg', 'sound/items/welder2.ogg') - var/acti_sound = 'sound/items/welderactivate.ogg' - var/deac_sound = 'sound/items/welderdeactivate.ogg' - throw_speed = 3 - throw_range = 5 - w_class = WEIGHT_CLASS_SMALL - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30) - resistance_flags = FIRE_PROOF - - materials = list(MAT_METAL=70, MAT_GLASS=30) - var/welding = 0 //Whether or not the welding tool is off(0), on(1) or currently welding(2) - var/status = TRUE //Whether the welder is secured or unsecured (able to attach rods to it to make a flamethrower) - var/max_fuel = 20 //The max amount of fuel the welder can hold - var/change_icons = 1 - var/can_off_process = 0 - var/light_intensity = 2 //how powerful the emitted light is when used. - var/progress_flash_divisor = 10 - var/burned_fuel_for = 0 //when fuel was last removed - heat = 3800 - tool_behaviour = TOOL_WELDER - toolspeed = 1 - -/obj/item/weldingtool/Initialize() - . = ..() - create_reagents(max_fuel) - reagents.add_reagent("welding_fuel", max_fuel) - update_icon() - - -/obj/item/weldingtool/proc/update_torch() - if(welding) - add_overlay("[initial(icon_state)]-on") - item_state = "[initial(item_state)]1" - else - item_state = "[initial(item_state)]" - - -/obj/item/weldingtool/update_icon() - cut_overlays() - if(change_icons) - var/ratio = get_fuel() / max_fuel - ratio = CEILING(ratio*4, 1) * 25 - add_overlay("[initial(icon_state)][ratio]") - update_torch() - return - - -/obj/item/weldingtool/process() - switch(welding) - if(0) - force = 3 - damtype = "brute" - update_icon() - if(!can_off_process) - STOP_PROCESSING(SSobj, src) - return - //Welders left on now use up fuel, but lets not have them run out quite that fast - if(1) - force = 15 - damtype = "fire" - ++burned_fuel_for - if(burned_fuel_for >= WELDER_FUEL_BURN_INTERVAL) - use(1) - update_icon() - - //This is to start fires. process() is only called if the welder is on. - open_flame() - - -/obj/item/weldingtool/suicide_act(mob/user) - user.visible_message("[user] welds [user.p_their()] every orifice closed! It looks like [user.p_theyre()] trying to commit suicide!") - return (FIRELOSS) - - -/obj/item/weldingtool/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/screwdriver)) - flamethrower_screwdriver(I, user) - else if(istype(I, /obj/item/stack/rods)) - flamethrower_rods(I, user) - else - . = ..() - update_icon() - -/obj/item/weldingtool/proc/explode() - var/turf/T = get_turf(loc) - var/plasmaAmount = reagents.get_reagent_amount("plasma") - dyn_explosion(T, plasmaAmount/5)//20 plasma in a standard welder has a 4 power explosion. no breaches, but enough to kill/dismember holder - qdel(src) - -/obj/item/weldingtool/attack(mob/living/carbon/human/H, mob/user) - if(!istype(H)) - return ..() - - var/obj/item/bodypart/affecting = H.get_bodypart(check_zone(user.zone_selected)) - - if(affecting && affecting.status == BODYPART_ROBOTIC && user.a_intent != INTENT_HARM) - if(src.use_tool(H, user, 0, volume=50, amount=1)) - if(user == H) - user.visible_message("[user] starts to fix some of the dents on [H]'s [affecting.name].", - "You start fixing some of the dents on [H]'s [affecting.name].") - if(!do_mob(user, H, 50)) - return - item_heal_robotic(H, user, 15, 0) - else - return ..() - - -/obj/item/weldingtool/afterattack(atom/O, mob/user, proximity) - if(!proximity) - return - if(!status && O.is_refillable()) - reagents.trans_to(O, reagents.total_volume) - to_chat(user, "You empty [src]'s fuel tank into [O].") - update_icon() - if(isOn()) - use(1) - var/turf/location = get_turf(user) - location.hotspot_expose(700, 50, 1) - if(get_fuel() <= 0) - set_light(0) - - if(isliving(O)) - var/mob/living/L = O - if(L.IgniteMob()) - message_admins("[key_name_admin(user)] set [key_name_admin(L)] on fire") - log_game("[key_name(user)] set [key_name(L)] on fire") - - -/obj/item/weldingtool/attack_self(mob/user) - if(src.reagents.has_reagent("plasma")) - message_admins("[key_name_admin(user)] activated a rigged welder.") - explode() - switched_on(user) - if(welding) - set_light(light_intensity) - - update_icon() - - -// Returns the amount of fuel in the welder -/obj/item/weldingtool/proc/get_fuel() - return reagents.get_reagent_amount("welding_fuel") - - -// Uses fuel from the welding tool. -/obj/item/weldingtool/use(used = 0) - if(!isOn() || !check_fuel()) - return FALSE - - if(used) - burned_fuel_for = 0 - if(get_fuel() >= used) - reagents.remove_reagent("welding_fuel", used) - check_fuel() - return TRUE - else - return FALSE - - -//Turns off the welder if there is no more fuel (does this really need to be its own proc?) -/obj/item/weldingtool/proc/check_fuel(mob/user) - if(get_fuel() <= 0 && welding) - switched_on(user) - update_icon() - //mob icon update - if(ismob(loc)) - var/mob/M = loc - M.update_inv_hands(0) - - return 0 - return 1 - -//Switches the welder on -/obj/item/weldingtool/proc/switched_on(mob/user) - if(!status) - to_chat(user, "[src] can't be turned on while unsecured!") - return - welding = !welding - if(welding) - if(get_fuel() >= 1) - to_chat(user, "You switch [src] on.") - playsound(loc, acti_sound, 50, 1) - force = 15 - damtype = "fire" - hitsound = 'sound/items/welder.ogg' - update_icon() - START_PROCESSING(SSobj, src) - else - to_chat(user, "You need more fuel!") - switched_off(user) - else - to_chat(user, "You switch [src] off.") - playsound(loc, deac_sound, 50, 1) - switched_off(user) - -//Switches the welder off -/obj/item/weldingtool/proc/switched_off(mob/user) - welding = 0 - set_light(0) - - force = 3 - damtype = "brute" - hitsound = "swing_hit" - update_icon() - - -/obj/item/weldingtool/examine(mob/user) - ..() - to_chat(user, "It contains [get_fuel()] unit\s of fuel out of [max_fuel].") - -/obj/item/weldingtool/is_hot() - return welding * heat - -//Returns whether or not the welding tool is currently on. -/obj/item/weldingtool/proc/isOn() - return welding - -// When welding is about to start, run a normal tool_use_check, then flash a mob if it succeeds. -/obj/item/weldingtool/tool_start_check(mob/living/user, amount=0) - . = tool_use_check(user, amount) - if(. && user) - user.flash_act(light_intensity) - -// Flash the user during welding progress -/obj/item/weldingtool/tool_check_callback(mob/living/user, amount, datum/callback/extra_checks) - . = ..() - if(. && user) - if (progress_flash_divisor == 0) - user.flash_act(min(light_intensity,1)) - progress_flash_divisor = initial(progress_flash_divisor) - else - progress_flash_divisor-- - -// If welding tool ran out of fuel during a construction task, construction fails. -/obj/item/weldingtool/tool_use_check(mob/living/user, amount) - if(!isOn() || !check_fuel()) - to_chat(user, "[src] has to be on to complete this task!") - return FALSE - - if(get_fuel() >= amount) - return TRUE - else - to_chat(user, "You need more welding fuel to complete this task!") - return FALSE - - -/obj/item/weldingtool/proc/flamethrower_screwdriver(obj/item/I, mob/user) - if(welding) - to_chat(user, "Turn it off first!") - return - status = !status - if(status) - to_chat(user, "You resecure [src] and close the fuel tank.") - container_type = NONE - else - to_chat(user, "[src] can now be attached, modified, and refuelled.") - container_type = OPENCONTAINER - add_fingerprint(user) - -/obj/item/weldingtool/proc/flamethrower_rods(obj/item/I, mob/user) - if(!status) - var/obj/item/stack/rods/R = I - if (R.use(1)) - var/obj/item/flamethrower/F = new /obj/item/flamethrower(user.loc) - if(!remove_item_from_storage(F)) - user.transferItemToLoc(src, F, TRUE) - F.weldtool = src - add_fingerprint(user) - to_chat(user, "You add a rod to a welder, starting to build a flamethrower.") - user.put_in_hands(F) - else - to_chat(user, "You need one rod to start building a flamethrower!") - -/obj/item/weldingtool/ignition_effect(atom/A, mob/user) - if(use_tool(A, user, 0, amount=1)) - return "[user] casually lights [A] with [src], what a badass." - else - return "" - -/obj/item/weldingtool/largetank - name = "industrial welding tool" - desc = "A slightly larger welder with a larger tank." - icon_state = "indwelder" - max_fuel = 40 - materials = list(MAT_GLASS=60) - -/obj/item/weldingtool/largetank/cyborg - name = "integrated welding tool" - desc = "An advanced welder designed to be used in robotic systems." - toolspeed = 0.5 - -/obj/item/weldingtool/largetank/flamethrower_screwdriver() - return - - -/obj/item/weldingtool/mini - name = "emergency welding tool" - desc = "A miniature welder used during emergencies." - icon_state = "miniwelder" - max_fuel = 10 - w_class = WEIGHT_CLASS_TINY - materials = list(MAT_METAL=30, MAT_GLASS=10) - change_icons = 0 - -/obj/item/weldingtool/mini/flamethrower_screwdriver() - return - -/obj/item/weldingtool/abductor - name = "alien welding tool" - desc = "An alien welding tool. Whatever fuel it uses, it never runs out." - icon = 'icons/obj/abductor.dmi' - icon_state = "welder" - toolspeed = 0.1 - light_intensity = 0 - change_icons = 0 - -/obj/item/weldingtool/abductor/process() - if(get_fuel() <= max_fuel) - reagents.add_reagent("welding_fuel", 1) - ..() - -/obj/item/weldingtool/hugetank - name = "upgraded industrial welding tool" - desc = "An upgraded welder based of the industrial welder." - icon_state = "upindwelder" - item_state = "upindwelder" - max_fuel = 80 - materials = list(MAT_METAL=70, MAT_GLASS=120) - -/obj/item/weldingtool/experimental - name = "experimental welding tool" - desc = "An experimental welder capable of self-fuel generation and less harmful to the eyes." - icon_state = "exwelder" - item_state = "exwelder" - max_fuel = 40 - materials = list(MAT_METAL=70, MAT_GLASS=120) - var/last_gen = 0 - change_icons = 0 - can_off_process = 1 - light_intensity = 1 - toolspeed = 0.5 - var/nextrefueltick = 0 - -/obj/item/weldingtool/experimental/brass - name = "brass welding tool" - desc = "A brass welder that seems to constantly refuel itself. It is faintly warm to the touch." - resistance_flags = FIRE_PROOF | ACID_PROOF - icon_state = "brasswelder" - item_state = "brasswelder" - - -/obj/item/weldingtool/experimental/process() - ..() - if(get_fuel() < max_fuel && nextrefueltick < world.time) - nextrefueltick = world.time + 10 - reagents.add_reagent("welding_fuel", 1) - -#undef WELDER_FUEL_BURN_INTERVAL +#define WELDER_FUEL_BURN_INTERVAL 13 +/obj/item/weldingtool + name = "welding tool" + desc = "A standard edition welder provided by Nanotrasen." + icon = 'icons/obj/tools.dmi' + icon_state = "welder" + item_state = "welder" + lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' + flags_1 = CONDUCT_1 + slot_flags = ITEM_SLOT_BELT + force = 3 + throwforce = 5 + hitsound = "swing_hit" + usesound = list('sound/items/welder.ogg', 'sound/items/welder2.ogg') + var/acti_sound = 'sound/items/welderactivate.ogg' + var/deac_sound = 'sound/items/welderdeactivate.ogg' + throw_speed = 3 + throw_range = 5 + w_class = WEIGHT_CLASS_SMALL + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30) + resistance_flags = FIRE_PROOF + + materials = list(MAT_METAL=70, MAT_GLASS=30) + var/welding = 0 //Whether or not the welding tool is off(0), on(1) or currently welding(2) + var/status = TRUE //Whether the welder is secured or unsecured (able to attach rods to it to make a flamethrower) + var/max_fuel = 20 //The max amount of fuel the welder can hold + var/change_icons = 1 + var/can_off_process = 0 + var/light_intensity = 2 //how powerful the emitted light is when used. + var/progress_flash_divisor = 10 + var/burned_fuel_for = 0 //when fuel was last removed + heat = 3800 + tool_behaviour = TOOL_WELDER + toolspeed = 1 + +/obj/item/weldingtool/Initialize() + . = ..() + create_reagents(max_fuel) + reagents.add_reagent("welding_fuel", max_fuel) + update_icon() + + +/obj/item/weldingtool/proc/update_torch() + if(welding) + add_overlay("[initial(icon_state)]-on") + item_state = "[initial(item_state)]1" + else + item_state = "[initial(item_state)]" + + +/obj/item/weldingtool/update_icon() + cut_overlays() + if(change_icons) + var/ratio = get_fuel() / max_fuel + ratio = CEILING(ratio*4, 1) * 25 + add_overlay("[initial(icon_state)][ratio]") + update_torch() + return + + +/obj/item/weldingtool/process() + switch(welding) + if(0) + force = 3 + damtype = "brute" + update_icon() + if(!can_off_process) + STOP_PROCESSING(SSobj, src) + return + //Welders left on now use up fuel, but lets not have them run out quite that fast + if(1) + force = 15 + damtype = "fire" + ++burned_fuel_for + if(burned_fuel_for >= WELDER_FUEL_BURN_INTERVAL) + use(1) + update_icon() + + //This is to start fires. process() is only called if the welder is on. + open_flame() + + +/obj/item/weldingtool/suicide_act(mob/user) + user.visible_message("[user] welds [user.p_their()] every orifice closed! It looks like [user.p_theyre()] trying to commit suicide!") + return (FIRELOSS) + + +/obj/item/weldingtool/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/screwdriver)) + flamethrower_screwdriver(I, user) + else if(istype(I, /obj/item/stack/rods)) + flamethrower_rods(I, user) + else + . = ..() + update_icon() + +/obj/item/weldingtool/proc/explode() + var/turf/T = get_turf(loc) + var/plasmaAmount = reagents.get_reagent_amount("plasma") + dyn_explosion(T, plasmaAmount/5)//20 plasma in a standard welder has a 4 power explosion. no breaches, but enough to kill/dismember holder + qdel(src) + +/obj/item/weldingtool/attack(mob/living/carbon/human/H, mob/user) + if(!istype(H)) + return ..() + + var/obj/item/bodypart/affecting = H.get_bodypart(check_zone(user.zone_selected)) + + if(affecting && affecting.status == BODYPART_ROBOTIC && user.a_intent != INTENT_HARM) + if(src.use_tool(H, user, 0, volume=50, amount=1)) + if(user == H) + user.visible_message("[user] starts to fix some of the dents on [H]'s [affecting.name].", + "You start fixing some of the dents on [H]'s [affecting.name].") + if(!do_mob(user, H, 50)) + return + item_heal_robotic(H, user, 15, 0) + else + return ..() + + +/obj/item/weldingtool/afterattack(atom/O, mob/user, proximity) + if(!proximity) + return + if(!status && O.is_refillable()) + reagents.trans_to(O, reagents.total_volume) + to_chat(user, "You empty [src]'s fuel tank into [O].") + update_icon() + if(isOn()) + use(1) + var/turf/location = get_turf(user) + location.hotspot_expose(700, 50, 1) + if(get_fuel() <= 0) + set_light(0) + + if(isliving(O)) + var/mob/living/L = O + if(L.IgniteMob()) + message_admins("[key_name_admin(user)] set [key_name_admin(L)] on fire") + log_game("[key_name(user)] set [key_name(L)] on fire") + + +/obj/item/weldingtool/attack_self(mob/user) + if(src.reagents.has_reagent("plasma")) + message_admins("[key_name_admin(user)] activated a rigged welder.") + explode() + switched_on(user) + if(welding) + set_light(light_intensity) + + update_icon() + + +// Returns the amount of fuel in the welder +/obj/item/weldingtool/proc/get_fuel() + return reagents.get_reagent_amount("welding_fuel") + + +// Uses fuel from the welding tool. +/obj/item/weldingtool/use(used = 0) + if(!isOn() || !check_fuel()) + return FALSE + + if(used) + burned_fuel_for = 0 + if(get_fuel() >= used) + reagents.remove_reagent("welding_fuel", used) + check_fuel() + return TRUE + else + return FALSE + + +//Turns off the welder if there is no more fuel (does this really need to be its own proc?) +/obj/item/weldingtool/proc/check_fuel(mob/user) + if(get_fuel() <= 0 && welding) + switched_on(user) + update_icon() + //mob icon update + if(ismob(loc)) + var/mob/M = loc + M.update_inv_hands(0) + + return 0 + return 1 + +//Switches the welder on +/obj/item/weldingtool/proc/switched_on(mob/user) + if(!status) + to_chat(user, "[src] can't be turned on while unsecured!") + return + welding = !welding + if(welding) + if(get_fuel() >= 1) + to_chat(user, "You switch [src] on.") + playsound(loc, acti_sound, 50, 1) + force = 15 + damtype = "fire" + hitsound = 'sound/items/welder.ogg' + update_icon() + START_PROCESSING(SSobj, src) + else + to_chat(user, "You need more fuel!") + switched_off(user) + else + to_chat(user, "You switch [src] off.") + playsound(loc, deac_sound, 50, 1) + switched_off(user) + +//Switches the welder off +/obj/item/weldingtool/proc/switched_off(mob/user) + welding = 0 + set_light(0) + + force = 3 + damtype = "brute" + hitsound = "swing_hit" + update_icon() + + +/obj/item/weldingtool/examine(mob/user) + ..() + to_chat(user, "It contains [get_fuel()] unit\s of fuel out of [max_fuel].") + +/obj/item/weldingtool/is_hot() + return welding * heat + +//Returns whether or not the welding tool is currently on. +/obj/item/weldingtool/proc/isOn() + return welding + +// When welding is about to start, run a normal tool_use_check, then flash a mob if it succeeds. +/obj/item/weldingtool/tool_start_check(mob/living/user, amount=0) + . = tool_use_check(user, amount) + if(. && user) + user.flash_act(light_intensity) + +// Flash the user during welding progress +/obj/item/weldingtool/tool_check_callback(mob/living/user, amount, datum/callback/extra_checks) + . = ..() + if(. && user) + if (progress_flash_divisor == 0) + user.flash_act(min(light_intensity,1)) + progress_flash_divisor = initial(progress_flash_divisor) + else + progress_flash_divisor-- + +// If welding tool ran out of fuel during a construction task, construction fails. +/obj/item/weldingtool/tool_use_check(mob/living/user, amount) + if(!isOn() || !check_fuel()) + to_chat(user, "[src] has to be on to complete this task!") + return FALSE + + if(get_fuel() >= amount) + return TRUE + else + to_chat(user, "You need more welding fuel to complete this task!") + return FALSE + + +/obj/item/weldingtool/proc/flamethrower_screwdriver(obj/item/I, mob/user) + if(welding) + to_chat(user, "Turn it off first!") + return + status = !status + if(status) + to_chat(user, "You resecure [src] and close the fuel tank.") + container_type = NONE + else + to_chat(user, "[src] can now be attached, modified, and refuelled.") + container_type = OPENCONTAINER + add_fingerprint(user) + +/obj/item/weldingtool/proc/flamethrower_rods(obj/item/I, mob/user) + if(!status) + var/obj/item/stack/rods/R = I + if (R.use(1)) + var/obj/item/flamethrower/F = new /obj/item/flamethrower(user.loc) + if(!remove_item_from_storage(F)) + user.transferItemToLoc(src, F, TRUE) + F.weldtool = src + add_fingerprint(user) + to_chat(user, "You add a rod to a welder, starting to build a flamethrower.") + user.put_in_hands(F) + else + to_chat(user, "You need one rod to start building a flamethrower!") + +/obj/item/weldingtool/ignition_effect(atom/A, mob/user) + if(use_tool(A, user, 0, amount=1)) + return "[user] casually lights [A] with [src], what a badass." + else + return "" + +/obj/item/weldingtool/largetank + name = "industrial welding tool" + desc = "A slightly larger welder with a larger tank." + icon_state = "indwelder" + max_fuel = 40 + materials = list(MAT_GLASS=60) + +/obj/item/weldingtool/largetank/cyborg + name = "integrated welding tool" + desc = "An advanced welder designed to be used in robotic systems." + toolspeed = 0.5 + +/obj/item/weldingtool/largetank/flamethrower_screwdriver() + return + + +/obj/item/weldingtool/mini + name = "emergency welding tool" + desc = "A miniature welder used during emergencies." + icon_state = "miniwelder" + max_fuel = 10 + w_class = WEIGHT_CLASS_TINY + materials = list(MAT_METAL=30, MAT_GLASS=10) + change_icons = 0 + +/obj/item/weldingtool/mini/flamethrower_screwdriver() + return + +/obj/item/weldingtool/abductor + name = "alien welding tool" + desc = "An alien welding tool. Whatever fuel it uses, it never runs out." + icon = 'icons/obj/abductor.dmi' + icon_state = "welder" + toolspeed = 0.1 + light_intensity = 0 + change_icons = 0 + +/obj/item/weldingtool/abductor/process() + if(get_fuel() <= max_fuel) + reagents.add_reagent("welding_fuel", 1) + ..() + +/obj/item/weldingtool/hugetank + name = "upgraded industrial welding tool" + desc = "An upgraded welder based of the industrial welder." + icon_state = "upindwelder" + item_state = "upindwelder" + max_fuel = 80 + materials = list(MAT_METAL=70, MAT_GLASS=120) + +/obj/item/weldingtool/experimental + name = "experimental welding tool" + desc = "An experimental welder capable of self-fuel generation and less harmful to the eyes." + icon_state = "exwelder" + item_state = "exwelder" + max_fuel = 40 + materials = list(MAT_METAL=70, MAT_GLASS=120) + var/last_gen = 0 + change_icons = 0 + can_off_process = 1 + light_intensity = 1 + toolspeed = 0.5 + var/nextrefueltick = 0 + +/obj/item/weldingtool/experimental/brass + name = "brass welding tool" + desc = "A brass welder that seems to constantly refuel itself. It is faintly warm to the touch." + resistance_flags = FIRE_PROOF | ACID_PROOF + icon_state = "brasswelder" + item_state = "brasswelder" + + +/obj/item/weldingtool/experimental/process() + ..() + if(get_fuel() < max_fuel && nextrefueltick < world.time) + nextrefueltick = world.time + 10 + reagents.add_reagent("welding_fuel", 1) + +#undef WELDER_FUEL_BURN_INTERVAL diff --git a/code/game/objects/items/tools/wirecutters.dm b/code/game/objects/items/tools/wirecutters.dm index f189c26bb2..33c7be5dfd 100644 --- a/code/game/objects/items/tools/wirecutters.dm +++ b/code/game/objects/items/tools/wirecutters.dm @@ -7,7 +7,7 @@ lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT force = 6 throw_speed = 3 throw_range = 7 diff --git a/code/game/objects/items/tools/wrench.dm b/code/game/objects/items/tools/wrench.dm index 6e399c0909..9a9a3684c3 100644 --- a/code/game/objects/items/tools/wrench.dm +++ b/code/game/objects/items/tools/wrench.dm @@ -6,7 +6,7 @@ lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT force = 5 throwforce = 7 w_class = WEIGHT_CLASS_SMALL diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 4554441cf0..a2fcba3701 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -143,7 +143,7 @@ lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi' flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_NORMAL materials = list(MAT_METAL=10, MAT_GLASS=10) attack_verb = list("struck", "pistol whipped", "hit", "bashed") @@ -258,7 +258,7 @@ newSaber.item_color = "rainbow" qdel(W) qdel(src) - else if(istype(W, /obj/item/device/multitool)) + else if(istype(W, /obj/item/multitool)) if(!hacked) hacked = TRUE item_color = "rainbow" @@ -341,7 +341,7 @@ lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT | SLOT_BACK + slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK force = 5 throwforce = 5 w_class = WEIGHT_CLASS_NORMAL @@ -840,7 +840,7 @@ name = "card" desc = "a card" icon = 'icons/obj/toy.dmi' - icon_state = "singlecard_nanotrasen_down" + icon_state = "singlecard_down_nanotrasen" w_class = WEIGHT_CLASS_TINY var/cardname = null var/flipped = 0 @@ -1064,7 +1064,7 @@ desc = "A stylish steampunk watch made out of thousands of tiny cogwheels." icon = 'icons/obj/clockwork_objects.dmi' icon_state = "dread_ipad" - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_SMALL var/cooldown = 0 diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm index 34a40b32a8..9e94b0372c 100644 --- a/code/game/objects/items/twohanded.dm +++ b/code/game/objects/items/twohanded.dm @@ -41,7 +41,7 @@ else //something wrong name = "[initial(name)]" update_icon() - if(user.get_item_by_slot(slot_back) == src) + if(user.get_item_by_slot(SLOT_BACK) == src) user.update_inv_back() else user.update_inv_hands() @@ -191,7 +191,7 @@ return qdel(O) return - if(slot == slot_hands) + if(slot == SLOT_HANDS) wield(user) else unwield(user) @@ -224,7 +224,7 @@ force = 5 throwforce = 15 w_class = WEIGHT_CLASS_BULKY - slot_flags = SLOT_BACK + slot_flags = ITEM_SLOT_BACK force_unwielded = 5 force_wielded = 24 attack_verb = list("attacked", "chopped", "cleaved", "torn", "cut") @@ -236,7 +236,7 @@ /obj/item/twohanded/fireaxe/Initialize() . = ..() - AddComponent(/datum/component/butchering, 100, 80, hitsound) //axes are not known for being precision butchering tools + AddComponent(/datum/component/butchering, 100, 80, 0 , hitsound) //axes are not known for being precision butchering tools /obj/item/twohanded/fireaxe/update_icon() //Currently only here to fuck with the on-mob icons. icon_state = "fireaxe[wielded]" @@ -438,7 +438,7 @@ possible_colors = list("purple") /obj/item/twohanded/dualsaber/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/device/multitool)) + if(istype(W, /obj/item/multitool)) if(!hacked) hacked = TRUE to_chat(user, "2XRNBW_ENGAGE") @@ -458,7 +458,7 @@ desc = "A haphazardly-constructed yet still deadly weapon of ancient design." force = 10 w_class = WEIGHT_CLASS_BULKY - slot_flags = SLOT_BACK + slot_flags = ITEM_SLOT_BACK force_unwielded = 10 force_wielded = 18 throwforce = 20 @@ -744,7 +744,7 @@ sharpness = IS_SHARP attack_verb = list("cut", "sliced", "diced") w_class = WEIGHT_CLASS_BULKY - slot_flags = SLOT_BACK + slot_flags = ITEM_SLOT_BACK hitsound = 'sound/weapons/bladeslice.ogg' /obj/item/twohanded/vibro_weapon/Initialize() @@ -791,7 +791,7 @@ desc = "A haphazardly-constructed yet still deadly weapon. The pinnacle of modern technology." force = 11 w_class = WEIGHT_CLASS_BULKY - slot_flags = SLOT_BACK + slot_flags = ITEM_SLOT_BACK force_unwielded = 11 force_wielded = 20 //I have no idea how to balance throwforce = 22 diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index bf67efa6c7..fd6fca0a3f 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -3,7 +3,7 @@ name = "banhammer" icon = 'icons/obj/items_and_weapons.dmi' icon_state = "toyhammer" - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT throwforce = 0 force = 1 w_class = WEIGHT_CLASS_TINY @@ -34,7 +34,7 @@ item_state = "sord" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT force = 2 throwforce = 1 w_class = WEIGHT_CLASS_NORMAL @@ -55,7 +55,7 @@ righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' hitsound = 'sound/weapons/bladeslice.ogg' flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT | SLOT_BACK + slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK force = 40 throwforce = 10 w_class = WEIGHT_CLASS_NORMAL @@ -206,7 +206,7 @@ lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT | SLOT_BACK + slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK force = 40 throwforce = 10 w_class = WEIGHT_CLASS_HUGE @@ -248,7 +248,7 @@ user.put_in_hands(S) to_chat(user, "You fasten the glass shard to the top of the rod with the cable.") - else if(istype(I, /obj/item/device/assembly/igniter) && !(I.flags_1 & NODROP_1)) + else if(istype(I, /obj/item/assembly/igniter) && !(I.flags_1 & NODROP_1)) var/obj/item/melee/baton/cattleprod/P = new /obj/item/melee/baton/cattleprod remove_item_from_storage(user) @@ -383,7 +383,7 @@ name = "stick" desc = "A great tool to drag someone else's drinks across the bar." icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "stick" + icon_state = "cane" item_state = "stick" lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' @@ -577,7 +577,7 @@ /obj/item/melee/flyswatter/afterattack(atom/target, mob/user, proximity_flag) if(proximity_flag) if(is_type_in_typecache(target, strong_against)) - new /obj/effect/decal/cleanable/deadcockroach(get_turf(target)) + new /obj/effect/decal/cleanable/insectguts(target.drop_location()) to_chat(user, "You easily splat the [target].") if(istype(target, /mob/living/)) var/mob/living/bug = target diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm index 1e76bc7160..2dadafe2cf 100644 --- a/code/game/objects/obj_defense.dm +++ b/code/game/objects/obj_defense.dm @@ -1,6 +1,9 @@ //the essential proc to call when an obj must receive damage of any kind. /obj/proc/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir, armour_penetration = 0) + if(QDELETED(src)) + stack_trace("[src] taking damage after deletion") + return if(sound_effect) play_attack_sound(damage_amount, damage_type, damage_flag) if(!(resistance_flags & INDESTRUCTIBLE) && obj_integrity > 0) diff --git a/code/game/objects/structures/ai_core.dm b/code/game/objects/structures/ai_core.dm index a8061f6c2a..ed797e4256 100644 --- a/code/game/objects/structures/ai_core.dm +++ b/code/game/objects/structures/ai_core.dm @@ -9,7 +9,7 @@ var/state = 0 var/datum/ai_laws/laws var/obj/item/circuitboard/circuit = null - var/obj/item/device/mmi/brain = null + var/obj/item/mmi/brain = null var/can_deconstruct = TRUE /obj/structure/AIcore/Initialize() @@ -61,7 +61,7 @@ return TRUE /obj/structure/AIcore/latejoin_inactive/attackby(obj/item/P, mob/user, params) - if(istype(P, /obj/item/device/multitool)) + if(istype(P, /obj/item/multitool)) active = !active to_chat(user, "You [active? "activate" : "deactivate"] [src]'s transimtters.") return @@ -147,8 +147,7 @@ to_chat(user, "You remove the cables.") state = SCREWED_CORE update_icon() - var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( loc ) - A.amount = 5 + new /obj/item/stack/cable_coil(drop_location(), 5) return if(istype(P, /obj/item/stack/sheet/rglass)) @@ -172,8 +171,8 @@ module.install(laws, user) return - if(istype(P, /obj/item/device/mmi) && !brain) - var/obj/item/device/mmi/M = P + if(istype(P, /obj/item/mmi) && !brain) + var/obj/item/mmi/M = P if(!M.brainmob) to_chat(user, "Sticking an empty [M.name] into the frame would sort of defeat the purpose!") return @@ -243,7 +242,7 @@ return if(AI_READY_CORE) - if(istype(P, /obj/item/device/aicard)) + if(istype(P, /obj/item/aicard)) P.transfer_ai("INACTIVE", "AICARD", src, user) return @@ -303,14 +302,14 @@ That prevents a few funky behaviors. //The type of interaction, the player performing the operation, the AI itself, and the card object, if any. -/atom/proc/transfer_ai(interaction, mob/user, mob/living/silicon/ai/AI, obj/item/device/aicard/card) +/atom/proc/transfer_ai(interaction, mob/user, mob/living/silicon/ai/AI, obj/item/aicard/card) if(istype(card)) if(card.flush) to_chat(user, "ERROR: AI flush is in progress, cannot execute transfer protocol.") return 0 return 1 -/obj/structure/AIcore/transfer_ai(interaction, mob/user, mob/living/silicon/ai/AI, obj/item/device/aicard/card) +/obj/structure/AIcore/transfer_ai(interaction, mob/user, mob/living/silicon/ai/AI, obj/item/aicard/card) if(state != AI_READY_CORE || !..()) return //Transferring a carded AI to a core. diff --git a/code/game/objects/structures/aliens.dm b/code/game/objects/structures/aliens.dm index b758b33355..ecfd0ba0c7 100644 --- a/code/game/objects/structures/aliens.dm +++ b/code/game/objects/structures/aliens.dm @@ -53,7 +53,7 @@ name = "resin" desc = "Looks like some kind of thick resin." icon = 'icons/obj/smooth_structures/alien/resin_wall.dmi' - icon_state = "resin" + icon_state = "smooth" density = TRUE opacity = 1 anchored = TRUE @@ -77,7 +77,7 @@ name = "resin wall" desc = "Thick resin solidified into a wall." icon = 'icons/obj/smooth_structures/alien/resin_wall.dmi' - icon_state = "wall0" //same as resin, but consistency ho! + icon_state = "smooth" //same as resin, but consistency ho! resintype = "wall" canSmoothWith = list(/obj/structure/alien/resin/wall, /obj/structure/alien/resin/membrane) @@ -88,7 +88,7 @@ name = "resin membrane" desc = "Resin just thin enough to let light pass through." icon = 'icons/obj/smooth_structures/alien/resin_membrane.dmi' - icon_state = "membrane0" + icon_state = "smooth" opacity = 0 max_integrity = 160 resintype = "membrane" diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index cc447a19ad..85e498e9e4 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -10,7 +10,7 @@ LINEN BINS icon = 'icons/obj/bedsheets.dmi' icon_state = "sheetwhite" item_state = "bedsheet" - slot_flags = SLOT_NECK + slot_flags = ITEM_SLOT_NECK layer = MOB_LAYER throwforce = 0 throw_speed = 1 diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 9f95e71e7f..2302a6b4d0 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -86,31 +86,31 @@ /obj/structure/closet/CanPass(atom/movable/mover, turf/target) if(wall_mounted) - return 1 + return TRUE return !density /obj/structure/closet/proc/can_open(mob/living/user) if(welded || locked) - return 0 + return FALSE var/turf/T = get_turf(src) for(var/mob/living/L in T) if(L.anchored || horizontal && L.mob_size > MOB_SIZE_TINY && L.density) if(user) to_chat(user, "There's something large on top of [src], preventing it from opening." ) - return 0 - return 1 + return FALSE + return TRUE /obj/structure/closet/proc/can_close(mob/living/user) var/turf/T = get_turf(src) for(var/obj/structure/closet/closet in T) if(closet != src && !closet.wall_mounted) - return 0 + return FALSE for(var/mob/living/L in T) if(L.anchored || horizontal && L.mob_size > MOB_SIZE_TINY && L.density) if(user) to_chat(user, "There's something too large in [src], preventing it from closing.") - return 0 - return 1 + return FALSE + return TRUE /obj/structure/closet/proc/dump_contents() var/atom/L = drop_location() @@ -180,14 +180,14 @@ /obj/structure/closet/proc/close(mob/living/user) if(!opened || !can_close(user)) - return 0 + return FALSE take_contents() playsound(loc, close_sound, 15, 1, -3) climb_time = initial(climb_time) opened = FALSE density = TRUE update_icon() - return 1 + return TRUE /obj/structure/closet/proc/toggle(mob/living/user) if(opened) @@ -310,7 +310,7 @@ message_cooldown = world.time + 50 to_chat(user, "[src]'s door won't budge!") return - container_resist() + container_resist(user) /obj/structure/closet/attack_hand(mob/user) . = ..() @@ -388,7 +388,7 @@ /obj/structure/closet/proc/bust_open() welded = FALSE //applies to all lockers locked = FALSE //applies to critter crates and secure lockers only - broken = 1 //applies to secure lockers only + broken = TRUE //applies to secure lockers only open() /obj/structure/closet/AltClick(mob/user) @@ -427,7 +427,7 @@ "You scramble [src]'s lock, breaking it open!", "You hear a faint electrical spark.") playsound(src, "sparks", 50, 1) - broken = 1 + broken = TRUE locked = FALSE update_icon() @@ -470,16 +470,17 @@ /obj/structure/closet/proc/dive_into(mob/living/user) var/turf/T1 = get_turf(user) var/turf/T2 = get_turf(src) - if(!open() && !opened) - togglelock(user, TRUE) - if(!open()) + if(!opened) + if(locked) + togglelock(user, TRUE) + if(!open(user)) to_chat(user, "It won't budge!") return step_towards(user, T2) T1 = get_turf(user) if(T1 == T2) user.resting = TRUE //so people can jump into crates without slamming the lid on their head - if(!close()) + if(!close(user)) to_chat(user, "You can't get [src] to close!") user.resting = FALSE return diff --git a/code/game/objects/structures/crates_lockers/closets/gimmick.dm b/code/game/objects/structures/crates_lockers/closets/gimmick.dm index c56a0c5008..7ae18a481e 100644 --- a/code/game/objects/structures/crates_lockers/closets/gimmick.dm +++ b/code/game/objects/structures/crates_lockers/closets/gimmick.dm @@ -104,4 +104,4 @@ new /obj/item/clothing/suit/space/nasavoid(src) new /obj/item/crowbar(src) new /obj/item/stock_parts/cell(src) - new /obj/item/device/multitool(src) + new /obj/item/multitool(src) diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index 9d10ba36ba..90863441a2 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -8,8 +8,8 @@ /obj/structure/closet/gmcloset/PopulateContents() ..() new /obj/item/clothing/head/that(src) - new /obj/item/device/radio/headset/headset_srv(src) - new /obj/item/device/radio/headset/headset_srv(src) + new /obj/item/radio/headset/headset_srv(src) + new /obj/item/radio/headset/headset_srv(src) new /obj/item/clothing/head/that(src) new /obj/item/clothing/under/sl_suit(src) new /obj/item/clothing/under/sl_suit(src) @@ -39,8 +39,8 @@ ..() new /obj/item/clothing/under/waiter(src) new /obj/item/clothing/under/waiter(src) - new /obj/item/device/radio/headset/headset_srv(src) - new /obj/item/device/radio/headset/headset_srv(src) + new /obj/item/radio/headset/headset_srv(src) + new /obj/item/radio/headset/headset_srv(src) new /obj/item/clothing/accessory/waistcoat(src) new /obj/item/clothing/accessory/waistcoat(src) for(var/i in 1 to 3) @@ -68,11 +68,11 @@ new /obj/item/clothing/head/soft/purple(src) new /obj/item/paint/paint_remover(src) new /obj/item/melee/flyswatter(src) - new /obj/item/device/flashlight(src) + new /obj/item/flashlight(src) for(var/i in 1 to 3) new /obj/item/caution(src) new /obj/item/holosign_creator(src) - new /obj/item/device/lightreplacer(src) + new /obj/item/lightreplacer(src) new /obj/item/soap(src) new /obj/item/storage/bag/trash(src) new /obj/item/clothing/shoes/galoshes(src) @@ -148,6 +148,8 @@ new /obj/item/storage/backpack/duffelbag/sec(src) for(var/i in 1 to 3) new /obj/item/clothing/under/rank/security(src) + for(var/i in 1 to 2) + new /obj/item/clothing/under/rank/security/skirt(src) for(var/i in 1 to 3) new /obj/item/clothing/shoes/jackboots(src) for(var/i in 1 to 3) @@ -173,7 +175,7 @@ new /obj/item/clothing/gloves/fingerless(src) for(var/i in 1 to 3) new /obj/item/clothing/head/soft(src) - new /obj/item/device/radio/headset/headset_cargo(src) + new /obj/item/radio/headset/headset_cargo(src) /obj/structure/closet/wardrobe/atmospherics_yellow name = "atmospherics wardrobe" @@ -336,8 +338,8 @@ new /obj/item/clothing/suit/toggle/labcoat/science(src) for(var/i in 1 to 3) new /obj/item/clothing/shoes/sneakers/white(src) - new /obj/item/device/radio/headset/headset_sci(src) - new /obj/item/device/radio/headset/headset_sci(src) + new /obj/item/radio/headset/headset_sci(src) + new /obj/item/radio/headset/headset_sci(src) for(var/i in 1 to 3) new /obj/item/clothing/mask/gas(src) return diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm index 03afb77b9e..7a79b7d2de 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm @@ -9,13 +9,13 @@ new /obj/item/storage/lockbox/medal/cargo(src) new /obj/item/clothing/under/rank/cargo(src) new /obj/item/clothing/shoes/sneakers/brown(src) - new /obj/item/device/radio/headset/headset_cargo(src) + new /obj/item/radio/headset/headset_cargo(src) new /obj/item/clothing/suit/fire/firefighter(src) new /obj/item/clothing/gloves/fingerless(src) - new /obj/item/device/megaphone/cargo(src) + new /obj/item/megaphone/cargo(src) new /obj/item/tank/internals/emergency_oxygen(src) new /obj/item/clothing/mask/gas(src) new /obj/item/clothing/head/soft(src) - new /obj/item/device/export_scanner(src) + new /obj/item/export_scanner(src) new /obj/item/door_remote/quartermaster(src) new /obj/item/circuitboard/machine/techfab/department/cargo(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index 8f7da91465..9cc4598697 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -13,16 +13,16 @@ new /obj/item/clothing/shoes/sneakers/brown(src) new /obj/item/tank/jetpack/suit(src) new /obj/item/cartridge/ce(src) - new /obj/item/device/radio/headset/heads/ce(src) + new /obj/item/radio/headset/heads/ce(src) new /obj/item/storage/toolbox/mechanical(src) new /obj/item/clothing/suit/hazardvest(src) - new /obj/item/device/megaphone/command(src) + new /obj/item/megaphone/command(src) new /obj/item/areaeditor/blueprints(src) new /obj/item/airlock_painter(src) new /obj/item/holosign_creator/engineering(src) new /obj/item/clothing/mask/gas(src) - new /obj/item/device/multitool(src) - new /obj/item/device/assembly/flash/handheld(src) + new /obj/item/multitool(src) + new /obj/item/assembly/flash/handheld(src) new /obj/item/clothing/glasses/meson/engine(src) new /obj/item/door_remote/chief_engineer(src) new /obj/item/pipe_dispenser(src) @@ -46,7 +46,7 @@ for(var/i in 1 to 3) new /obj/item/electronics/apc(src) for(var/i in 1 to 3) - new /obj/item/device/multitool(src) + new /obj/item/multitool(src) /obj/structure/closet/secure_closet/engineering_welding name = "welding supplies locker" @@ -68,7 +68,7 @@ /obj/structure/closet/secure_closet/engineering_personal/PopulateContents() ..() - new /obj/item/device/radio/headset/headset_eng(src) + new /obj/item/radio/headset/headset_eng(src) new /obj/item/storage/toolbox/mechanical(src) new /obj/item/tank/internals/emergency_oxygen/engi(src) new /obj/item/holosign_creator/engineering(src) @@ -84,11 +84,11 @@ /obj/structure/closet/secure_closet/atmospherics/PopulateContents() ..() - new /obj/item/device/radio/headset/headset_eng(src) + new /obj/item/radio/headset/headset_eng(src) new /obj/item/pipe_dispenser(src) new /obj/item/storage/toolbox/mechanical(src) new /obj/item/tank/internals/emergency_oxygen/engi(src) - new /obj/item/device/analyzer(src) + new /obj/item/analyzer(src) new /obj/item/holosign_creator/atmos(src) new /obj/item/watertank/atmos(src) new /obj/item/clothing/suit/fire/atmos(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm index 37fe71a3f5..ac246d5053 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm @@ -6,8 +6,8 @@ /obj/structure/closet/secure_closet/hydroponics/PopulateContents() ..() new /obj/item/storage/bag/plants/portaseeder(src) - new /obj/item/device/plant_analyzer(src) - new /obj/item/device/radio/headset/headset_srv(src) + new /obj/item/plant_analyzer(src) + new /obj/item/radio/headset/headset_srv(src) new /obj/item/cultivator(src) new /obj/item/hatchet(src) new /obj/item/storage/box/disks_plantgene(src) \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index 778ce38fe1..e2f0fb5f88 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -40,7 +40,7 @@ /obj/structure/closet/secure_closet/medical3/PopulateContents() ..() - new /obj/item/device/radio/headset/headset_med(src) + new /obj/item/radio/headset/headset_med(src) new /obj/item/defibrillator/loaded(src) new /obj/item/clothing/gloves/color/latex/nitrile(src) new /obj/item/storage/belt/medical(src) @@ -62,15 +62,15 @@ new /obj/item/clothing/under/rank/chief_medical_officer(src) new /obj/item/clothing/shoes/sneakers/brown (src) new /obj/item/cartridge/cmo(src) - new /obj/item/device/radio/headset/heads/cmo(src) - new /obj/item/device/megaphone/command(src) + new /obj/item/radio/headset/heads/cmo(src) + new /obj/item/megaphone/command(src) new /obj/item/defibrillator/compact/loaded(src) new /obj/item/clothing/gloves/color/latex/nitrile(src) new /obj/item/storage/belt/medical(src) - new /obj/item/device/healthanalyzer/advanced(src) - new /obj/item/device/assembly/flash/handheld(src) + new /obj/item/healthanalyzer/advanced(src) + new /obj/item/assembly/flash/handheld(src) // new /obj/item/reagent_containers/hypospray/CMO(src) // CITADEL EDIT comments out the hypospray mk I. the MK II kit is modularized - new /obj/item/device/autosurgeon/cmo(src) + new /obj/item/autosurgeon/cmo(src) new /obj/item/door_remote/chief_medical_officer(src) new /obj/item/clothing/neck/petcollar(src) new /obj/item/pet_carrier(src) @@ -83,9 +83,9 @@ /obj/structure/closet/secure_closet/animal/PopulateContents() ..() - new /obj/item/device/assembly/signaler(src) + new /obj/item/assembly/signaler(src) for(var/i in 1 to 3) - new /obj/item/device/electropack(src) + new /obj/item/electropack(src) /obj/structure/closet/secure_closet/chemical name = "chemical closet" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/misc.dm b/code/game/objects/structures/crates_lockers/closets/secure/misc.dm index 80f68d10eb..0fad404a2a 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/misc.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/misc.dm @@ -8,8 +8,8 @@ ..() new /obj/item/storage/firstaid/regular(src) new /obj/item/storage/box/handcuffs(src) - new /obj/item/device/aicard(src) - new /obj/item/device/assembly/flash/handheld(src) + new /obj/item/aicard(src) + new /obj/item/assembly/flash/handheld(src) if(prob(50)) new /obj/item/ammo_box/magazine/m50(src) new /obj/item/ammo_box/magazine/m50(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm index 51f2c96c3a..eb764fc230 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/personal.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/personal.dm @@ -12,7 +12,7 @@ new /obj/item/storage/backpack(src) else new /obj/item/storage/backpack/satchel(src) - new /obj/item/device/radio/headset( src ) + new /obj/item/radio/headset( src ) /obj/structure/closet/secure_closet/personal/patient name = "patient's closet" @@ -28,8 +28,8 @@ /obj/structure/closet/secure_closet/personal/cabinet/PopulateContents() new /obj/item/storage/backpack/satchel/leather/withwallet( src ) - new /obj/item/device/instrument/piano_synth(src) - new /obj/item/device/radio/headset( src ) + new /obj/item/instrument/piano_synth(src) + new /obj/item/radio/headset( src ) /obj/structure/closet/secure_closet/personal/attackby(obj/item/W, mob/user, params) var/obj/item/card/id/I = W.GetID() diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm index a88fe3d450..6e5c425b2b 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm @@ -15,14 +15,13 @@ new /obj/item/clothing/shoes/sneakers/brown(src) new /obj/item/cartridge/rd(src) new /obj/item/clothing/gloves/color/latex(src) - new /obj/item/device/radio/headset/heads/rd(src) + new /obj/item/radio/headset/heads/rd(src) new /obj/item/tank/internals/air(src) new /obj/item/clothing/mask/gas(src) - new /obj/item/device/megaphone/command(src) + new /obj/item/megaphone/command(src) new /obj/item/storage/lockbox/medal/sci(src) new /obj/item/clothing/suit/armor/reactive/teleport(src) - new /obj/item/device/assembly/flash/handheld(src) - new /obj/item/device/laser_pointer(src) + new /obj/item/assembly/flash/handheld(src) + new /obj/item/laser_pointer(src) new /obj/item/door_remote/research_director(src) - new /obj/item/storage/box/firingpins(src) new /obj/item/circuitboard/machine/techfab/department/science(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 660526d3d3..4ce98bec52 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -23,8 +23,8 @@ new /obj/item/clothing/head/crown/fancy(src) new /obj/item/cartridge/captain(src) new /obj/item/storage/box/silver_ids(src) - new /obj/item/device/radio/headset/heads/captain/alt(src) - new /obj/item/device/radio/headset/heads/captain(src) + new /obj/item/radio/headset/heads/captain/alt(src) + new /obj/item/radio/headset/heads/captain(src) new /obj/item/clothing/glasses/sunglasses/gar/supergar(src) new /obj/item/clothing/gloves/color/captain(src) new /obj/item/restraints/handcuffs/cable/zipties(src) @@ -44,13 +44,13 @@ new /obj/item/clothing/under/rank/head_of_personnel(src) new /obj/item/clothing/head/hopcap(src) new /obj/item/cartridge/hop(src) - new /obj/item/device/radio/headset/heads/hop(src) + new /obj/item/radio/headset/heads/hop(src) new /obj/item/clothing/shoes/sneakers/brown(src) new /obj/item/storage/box/ids(src) new /obj/item/storage/box/ids(src) - new /obj/item/device/megaphone/command(src) + new /obj/item/megaphone/command(src) new /obj/item/clothing/suit/armor/vest/alt(src) - new /obj/item/device/assembly/flash/handheld(src) + new /obj/item/assembly/flash/handheld(src) new /obj/item/clothing/glasses/sunglasses(src) new /obj/item/restraints/handcuffs/cable/zipties(src) new /obj/item/gun/energy/e_gun(src) @@ -68,7 +68,7 @@ ..() new /obj/item/clothing/neck/cloak/hos(src) new /obj/item/cartridge/hos(src) - new /obj/item/device/radio/headset/heads/hos(src) + new /obj/item/radio/headset/heads/hos(src) new /obj/item/clothing/under/hosparadefem(src) new /obj/item/clothing/under/hosparademale(src) new /obj/item/clothing/suit/armor/vest/leather(src) @@ -79,7 +79,7 @@ new /obj/item/clothing/glasses/hud/security/sunglasses/gars/supergars(src) new /obj/item/clothing/under/rank/head_of_security/grey(src) new /obj/item/storage/lockbox/medal/sec(src) - new /obj/item/device/megaphone/sec(src) + new /obj/item/megaphone/sec(src) new /obj/item/holosign_creator/security(src) new /obj/item/storage/lockbox/loyalty(src) new /obj/item/clothing/mask/gas/sechailer/swat(src) @@ -87,7 +87,7 @@ new /obj/item/shield/riot/tele(src) new /obj/item/storage/belt/security/full(src) new /obj/item/gun/energy/e_gun/hos(src) - new /obj/item/device/flashlight/seclite(src) + new /obj/item/flashlight/seclite(src) new /obj/item/pinpointer/nuke(src) new /obj/item/circuitboard/machine/techfab/department/security(src) @@ -98,7 +98,7 @@ /obj/structure/closet/secure_closet/warden/PopulateContents() ..() - new /obj/item/device/radio/headset/headset_sec(src) + new /obj/item/radio/headset/headset_sec(src) new /obj/item/clothing/suit/armor/vest/warden(src) new /obj/item/clothing/head/warden(src) new /obj/item/clothing/head/beret/sec/navywarden(src) @@ -110,7 +110,7 @@ new /obj/item/storage/box/zipties(src) new /obj/item/storage/box/flashbangs(src) new /obj/item/storage/belt/security/full(src) - new /obj/item/device/flashlight/seclite(src) + new /obj/item/flashlight/seclite(src) new /obj/item/clothing/gloves/krav_maga/sec(src) new /obj/item/door_remote/head_of_security(src) new /obj/item/gun/ballistic/shotgun/automatic/combat/compact(src) @@ -124,10 +124,10 @@ ..() new /obj/item/clothing/suit/armor/vest(src) new /obj/item/clothing/head/helmet/sec(src) - new /obj/item/device/radio/headset/headset_sec(src) - new /obj/item/device/radio/headset/headset_sec/alt(src) + new /obj/item/radio/headset/headset_sec(src) + new /obj/item/radio/headset/headset_sec/alt(src) new /obj/item/clothing/glasses/hud/security/sunglasses(src) - new /obj/item/device/flashlight/seclite(src) + new /obj/item/flashlight/seclite(src) /obj/structure/closet/secure_closet/security/sec @@ -140,28 +140,28 @@ /obj/structure/closet/secure_closet/security/cargo/PopulateContents() ..() new /obj/item/clothing/accessory/armband/cargo(src) - new /obj/item/device/encryptionkey/headset_cargo(src) + new /obj/item/encryptionkey/headset_cargo(src) /obj/structure/closet/secure_closet/security/engine /obj/structure/closet/secure_closet/security/engine/PopulateContents() ..() new /obj/item/clothing/accessory/armband/engine(src) - new /obj/item/device/encryptionkey/headset_eng(src) + new /obj/item/encryptionkey/headset_eng(src) /obj/structure/closet/secure_closet/security/science /obj/structure/closet/secure_closet/security/science/PopulateContents() ..() new /obj/item/clothing/accessory/armband/science(src) - new /obj/item/device/encryptionkey/headset_sci(src) + new /obj/item/encryptionkey/headset_sci(src) /obj/structure/closet/secure_closet/security/med /obj/structure/closet/secure_closet/security/med/PopulateContents() ..() new /obj/item/clothing/accessory/armband/medblue(src) - new /obj/item/device/encryptionkey/headset_med(src) + new /obj/item/encryptionkey/headset_med(src) /obj/structure/closet/secure_closet/detective name = "\proper detective's cabinet" @@ -182,9 +182,9 @@ new /obj/item/clothing/head/fedora(src) new /obj/item/clothing/shoes/laceup(src) new /obj/item/storage/box/evidence(src) - new /obj/item/device/radio/headset/headset_sec(src) - new /obj/item/device/detective_scanner(src) - new /obj/item/device/flashlight/seclite(src) + new /obj/item/radio/headset/headset_sec(src) + new /obj/item/detective_scanner(src) + new /obj/item/flashlight/seclite(src) new /obj/item/holosign_creator/security(src) new /obj/item/reagent_containers/spray/pepper(src) new /obj/item/clothing/suit/armor/vest/det_suit(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/supplypod.dm b/code/game/objects/structures/crates_lockers/closets/secure/supplypod.dm index 8a25e831f0..2fcf670101 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/supplypod.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/supplypod.dm @@ -17,6 +17,7 @@ armor = list("melee" = 30, "bullet" = 50, "laser" = 50, "energy" = 100, "bomb" = 90, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80) anchored = TRUE anchorable = FALSE + var/generated = FALSE var/datum/supply_order/SupplyOrder /obj/structure/closet/supplypod/bluespacepod @@ -45,7 +46,9 @@ /obj/structure/closet/supplypod/open() var/turf/T = get_turf(src) opened = TRUE - SupplyOrder.generate(T)//not called during populateContents as supplyorder generation requires a turf + if(!generated) + generated = TRUE + SupplyOrder.generate(T)//not called during populateContents as supplyorder generation requires a turf update_icon() playsound(src, open_sound, 15, 1, -3) if(istype(src,/obj/structure/closet/supplypod/bluespacepod)) @@ -62,6 +65,7 @@ //------------------------------------FALLING SUPPLY POD-------------------------------------// /obj/effect/temp_visual/DPfall icon = 'icons/obj/2x2.dmi' + icon_state = "supplypod_falling" pixel_x = -16 pixel_y = -5 pixel_z = 200 @@ -115,4 +119,4 @@ icon = 'icons/obj/module.dmi' icon_state = "cargodisk" item_state = "card-id" - w_class = WEIGHT_CLASS_SMALL \ No newline at end of file + w_class = WEIGHT_CLASS_SMALL diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm index 14805dd506..3edbde93b7 100644 --- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm +++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm @@ -1,115 +1,115 @@ -/obj/structure/closet/syndicate - name = "armory closet" - desc = "Why is this here?" - icon_state = "syndicate" - -/obj/structure/closet/syndicate/personal - desc = "It's a personal storage unit for operative gear." - -/obj/structure/closet/syndicate/personal/PopulateContents() - ..() - new /obj/item/clothing/under/syndicate(src) - new /obj/item/clothing/shoes/sneakers/black(src) - new /obj/item/device/radio/headset/syndicate(src) - new /obj/item/ammo_box/magazine/m10mm(src) - new /obj/item/storage/belt/military(src) - new /obj/item/crowbar/red(src) - new /obj/item/clothing/glasses/night(src) - -/obj/structure/closet/syndicate/nuclear - desc = "It's a storage unit for a Syndicate boarding party." - -/obj/structure/closet/syndicate/nuclear/PopulateContents() - for(var/i in 1 to 5) - new /obj/item/ammo_box/magazine/m10mm(src) - new /obj/item/storage/box/flashbangs(src) - new /obj/item/storage/box/teargas(src) - new /obj/item/storage/backpack/duffelbag/syndie/med(src) - new /obj/item/device/pda/syndicate(src) - -/obj/structure/closet/syndicate/resources - desc = "An old, dusty locker." - -/obj/structure/closet/syndicate/resources/PopulateContents() - ..() - var/common_min = 30 //Minimum amount of minerals in the stack for common minerals - var/common_max = 50 //Maximum amount of HONK in the stack for HONK common minerals - var/rare_min = 5 //Minimum HONK of HONK in the stack HONK HONK rare minerals - var/rare_max = 20 //Maximum HONK HONK HONK in the HONK for HONK rare HONK - - - var/pickednum = rand(1, 50) - - //Sad trombone - if(pickednum == 1) - var/obj/item/paper/P = new /obj/item/paper(src) - P.name = "\improper IOU" - P.info = "Sorry man, we needed the money so we sold your stash. It's ok, we'll double our money for sure this time!" - - //Metal (common ore) - if(pickednum >= 2) - new /obj/item/stack/sheet/metal(src, rand(common_min, common_max)) - - //Glass (common ore) - if(pickednum >= 5) - new /obj/item/stack/sheet/glass(src, rand(common_min, common_max)) - - //Plasteel (common ore) Because it has a million more uses then plasma - if(pickednum >= 10) - new /obj/item/stack/sheet/plasteel(src, rand(common_min, common_max)) - - //Plasma (rare ore) - if(pickednum >= 15) - new /obj/item/stack/sheet/mineral/plasma(src, rand(rare_min, rare_max)) - - //Silver (rare ore) - if(pickednum >= 20) - new /obj/item/stack/sheet/mineral/silver(src, rand(rare_min, rare_max)) - - //Gold (rare ore) - if(pickednum >= 30) - new /obj/item/stack/sheet/mineral/gold(src, rand(rare_min, rare_max)) - - //Uranium (rare ore) - if(pickednum >= 40) - new /obj/item/stack/sheet/mineral/uranium(src, rand(rare_min, rare_max)) - - //Titanium (rare ore) - if(pickednum >= 40) - new /obj/item/stack/sheet/mineral/titanium(src, rand(rare_min, rare_max)) - - //Plastitanium (rare ore) - if(pickednum >= 40) - new /obj/item/stack/sheet/mineral/plastitanium(src, rand(rare_min, rare_max)) - - //Diamond (rare HONK) - if(pickednum >= 45) - new /obj/item/stack/sheet/mineral/diamond(src, rand(rare_min, rare_max)) - - //Jetpack (You hit the jackpot!) - if(pickednum == 50) - new /obj/item/tank/jetpack/carbondioxide(src) - -/obj/structure/closet/syndicate/resources/everything - desc = "It's an emergency storage closet for repairs." - -/obj/structure/closet/syndicate/resources/everything/PopulateContents() - var/list/resources = list( - /obj/item/stack/sheet/metal, - /obj/item/stack/sheet/glass, - /obj/item/stack/sheet/mineral/gold, - /obj/item/stack/sheet/mineral/silver, - /obj/item/stack/sheet/mineral/plasma, - /obj/item/stack/sheet/mineral/uranium, - /obj/item/stack/sheet/mineral/diamond, - /obj/item/stack/sheet/mineral/bananium, - /obj/item/stack/sheet/plasteel, - /obj/item/stack/sheet/mineral/titanium, - /obj/item/stack/sheet/mineral/plastitanium, - /obj/item/stack/rods - ) - - for(var/i = 0, i<2, i++) - for(var/res in resources) - var/obj/item/stack/R = new res(src) - R.amount = R.max_amount +/obj/structure/closet/syndicate + name = "armory closet" + desc = "Why is this here?" + icon_state = "syndicate" + +/obj/structure/closet/syndicate/personal + desc = "It's a personal storage unit for operative gear." + +/obj/structure/closet/syndicate/personal/PopulateContents() + ..() + new /obj/item/clothing/under/syndicate(src) + new /obj/item/clothing/shoes/sneakers/black(src) + new /obj/item/radio/headset/syndicate(src) + new /obj/item/ammo_box/magazine/m10mm(src) + new /obj/item/storage/belt/military(src) + new /obj/item/crowbar/red(src) + new /obj/item/clothing/glasses/night(src) + +/obj/structure/closet/syndicate/nuclear + desc = "It's a storage unit for a Syndicate boarding party." + +/obj/structure/closet/syndicate/nuclear/PopulateContents() + for(var/i in 1 to 5) + new /obj/item/ammo_box/magazine/m10mm(src) + new /obj/item/storage/box/flashbangs(src) + new /obj/item/storage/box/teargas(src) + new /obj/item/storage/backpack/duffelbag/syndie/med(src) + new /obj/item/pda/syndicate(src) + +/obj/structure/closet/syndicate/resources + desc = "An old, dusty locker." + +/obj/structure/closet/syndicate/resources/PopulateContents() + ..() + var/common_min = 30 //Minimum amount of minerals in the stack for common minerals + var/common_max = 50 //Maximum amount of HONK in the stack for HONK common minerals + var/rare_min = 5 //Minimum HONK of HONK in the stack HONK HONK rare minerals + var/rare_max = 20 //Maximum HONK HONK HONK in the HONK for HONK rare HONK + + + var/pickednum = rand(1, 50) + + //Sad trombone + if(pickednum == 1) + var/obj/item/paper/P = new /obj/item/paper(src) + P.name = "\improper IOU" + P.info = "Sorry man, we needed the money so we sold your stash. It's ok, we'll double our money for sure this time!" + + //Metal (common ore) + if(pickednum >= 2) + new /obj/item/stack/sheet/metal(src, rand(common_min, common_max)) + + //Glass (common ore) + if(pickednum >= 5) + new /obj/item/stack/sheet/glass(src, rand(common_min, common_max)) + + //Plasteel (common ore) Because it has a million more uses then plasma + if(pickednum >= 10) + new /obj/item/stack/sheet/plasteel(src, rand(common_min, common_max)) + + //Plasma (rare ore) + if(pickednum >= 15) + new /obj/item/stack/sheet/mineral/plasma(src, rand(rare_min, rare_max)) + + //Silver (rare ore) + if(pickednum >= 20) + new /obj/item/stack/sheet/mineral/silver(src, rand(rare_min, rare_max)) + + //Gold (rare ore) + if(pickednum >= 30) + new /obj/item/stack/sheet/mineral/gold(src, rand(rare_min, rare_max)) + + //Uranium (rare ore) + if(pickednum >= 40) + new /obj/item/stack/sheet/mineral/uranium(src, rand(rare_min, rare_max)) + + //Titanium (rare ore) + if(pickednum >= 40) + new /obj/item/stack/sheet/mineral/titanium(src, rand(rare_min, rare_max)) + + //Plastitanium (rare ore) + if(pickednum >= 40) + new /obj/item/stack/sheet/mineral/plastitanium(src, rand(rare_min, rare_max)) + + //Diamond (rare HONK) + if(pickednum >= 45) + new /obj/item/stack/sheet/mineral/diamond(src, rand(rare_min, rare_max)) + + //Jetpack (You hit the jackpot!) + if(pickednum == 50) + new /obj/item/tank/jetpack/carbondioxide(src) + +/obj/structure/closet/syndicate/resources/everything + desc = "It's an emergency storage closet for repairs." + +/obj/structure/closet/syndicate/resources/everything/PopulateContents() + var/list/resources = list( + /obj/item/stack/sheet/metal, + /obj/item/stack/sheet/glass, + /obj/item/stack/sheet/mineral/gold, + /obj/item/stack/sheet/mineral/silver, + /obj/item/stack/sheet/mineral/plasma, + /obj/item/stack/sheet/mineral/uranium, + /obj/item/stack/sheet/mineral/diamond, + /obj/item/stack/sheet/mineral/bananium, + /obj/item/stack/sheet/plasteel, + /obj/item/stack/sheet/mineral/titanium, + /obj/item/stack/sheet/mineral/plastitanium, + /obj/item/stack/rods + ) + + for(var/i = 0, i<2, i++) + for(var/res in resources) + var/obj/item/stack/R = res + new res(src, initial(R.max_amount)) diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm index 49a9621fba..7ee0f4dc24 100644 --- a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm @@ -73,7 +73,7 @@ /obj/structure/closet/firecloset/full/PopulateContents() new /obj/item/clothing/suit/fire/firefighter(src) new /obj/item/clothing/mask/gas(src) - new /obj/item/device/flashlight(src) + new /obj/item/flashlight(src) new /obj/item/tank/internals/oxygen/red(src) new /obj/item/extinguisher(src) new /obj/item/clothing/head/hardhat/red(src) @@ -92,7 +92,7 @@ if(prob(40)) new /obj/item/clothing/suit/hazardvest(src) if(prob(70)) - new /obj/item/device/flashlight(src) + new /obj/item/flashlight(src) if(prob(70)) new /obj/item/screwdriver(src) if(prob(70)) @@ -104,7 +104,7 @@ if(prob(70)) new /obj/item/wirecutters(src) if(prob(70)) - new /obj/item/device/t_scanner(src) + new /obj/item/t_scanner(src) if(prob(20)) new /obj/item/storage/belt/utility(src) if(prob(30)) @@ -114,7 +114,7 @@ if(prob(30)) new /obj/item/stack/cable_coil/random(src) if(prob(20)) - new /obj/item/device/multitool(src) + new /obj/item/multitool(src) if(prob(5)) new /obj/item/clothing/gloves/color/yellow(src) if(prob(40)) @@ -132,7 +132,7 @@ /obj/structure/closet/radiation/PopulateContents() ..() - new /obj/item/device/geiger_counter(src) + new /obj/item/geiger_counter(src) new /obj/item/clothing/suit/radiation(src) new /obj/item/clothing/head/radiation(src) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 2889a10e1d..63d700d3ce 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -148,3 +148,32 @@ name = "science crate" desc = "A science crate." icon_state = "scicrate" + +/obj/structure/closet/crate/solarpanel_small + name = "budget solar panel crate" + icon_state = "engi_e_crate" + +/obj/structure/closet/crate/solarpanel_small/PopulateContents() + ..() + for(var/i in 1 to 13) + new /obj/item/solar_assembly(src) + new /obj/item/circuitboard/computer/solar_control(src) + new /obj/item/paper/guides/jobs/engi/solars(src) + new /obj/item/electronics/tracker(src) + +/obj/structure/closet/crate/goldcrate + name = "gold crate" + +/obj/structure/closet/crate/goldcrate/PopulateContents() + ..() + for(var/i in 1 to 3) + new /obj/item/stack/sheet/mineral/gold(src, 1, FALSE) + new /obj/item/storage/belt/champion(src) + +/obj/structure/closet/crate/silvercrate + name = "silver crate" + +/obj/structure/closet/crate/silvercrate/PopulateContents() + ..() + for(var/i in 1 to 5) + new /obj/item/coin/silver(src) diff --git a/code/game/objects/structures/crates_lockers/crates/large.dm b/code/game/objects/structures/crates_lockers/crates/large.dm index 7098520ef5..6c8feae50b 100644 --- a/code/game/objects/structures/crates_lockers/crates/large.dm +++ b/code/game/objects/structures/crates_lockers/crates/large.dm @@ -1,15 +1,14 @@ /obj/structure/closet/crate/large name = "large crate" - desc = "A hefty wooden crate." + desc = "A hefty wooden crate. You'll need a crowbar to get it open." icon_state = "largecrate" density = TRUE material_drop = /obj/item/stack/sheet/mineral/wood + material_drop_amount = 4 delivery_icon = "deliverybox" + integrity_failure = 0 //Makes the crate break when integrity reaches 0, instead of opening and becoming an invisible sprite. /obj/structure/closet/crate/large/attack_hand(mob/user) - . = ..() - if(.) - return add_fingerprint(user) if(manifest) tear_manifest(user) @@ -18,7 +17,6 @@ /obj/structure/closet/crate/large/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/crowbar)) - var/turf/T = get_turf(src) if(manifest) tear_manifest(user) @@ -27,11 +25,19 @@ "You hear splitting wood.") playsound(src.loc, 'sound/weapons/slashmiss.ogg', 75, 1) - for(var/i in 1 to rand(2, 5)) + var/turf/T = get_turf(src) + for(var/i in 1 to material_drop_amount) new material_drop(src) for(var/atom/movable/AM in contents) AM.forceMove(T) qdel(src) + else - return ..() + if(user.a_intent == INTENT_HARM) //Only return ..() if intent is harm, otherwise return 0 or just end it. + return ..() //Stops it from opening and turning invisible when items are used on it. + + else + to_chat(user, "You need a crowbar to pry this open!") + return FALSE //Just stop. Do nothing. Don't turn into an invisible sprite. Don't open like a locker. + //The large crate has no non-attack interactions other than the crowbar, anyway. \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/crates/wooden.dm b/code/game/objects/structures/crates_lockers/crates/wooden.dm index e5b950d65f..09d176783a 100644 --- a/code/game/objects/structures/crates_lockers/crates/wooden.dm +++ b/code/game/objects/structures/crates_lockers/crates/wooden.dm @@ -11,7 +11,7 @@ /obj/structure/closet/crate/wooden/toy/PopulateContents() . = ..() - new /obj/item/device/megaphone/clown(src) + new /obj/item/megaphone/clown(src) new /obj/item/reagent_containers/food/drinks/soda_cans/canned_laughter(src) new /obj/item/pneumatic_cannon/pie(src) new /obj/item/reagent_containers/food/snacks/pie/cream(src) diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm index 07341d89e3..0c84c4cf63 100644 --- a/code/game/objects/structures/fireaxe.dm +++ b/code/game/objects/structures/fireaxe.dm @@ -22,7 +22,7 @@ return ..() /obj/structure/fireaxecabinet/attackby(obj/item/I, mob/user, params) - if(iscyborg(user) || istype(I, /obj/item/device/multitool)) + if(iscyborg(user) || istype(I, /obj/item/multitool)) toggle_lock(user) else if(istype(I, /obj/item/weldingtool) && user.a_intent == INTENT_HELP && !broken) if(obj_integrity < max_integrity) diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index 2a396f583e..7fbc9ee078 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -314,7 +314,7 @@ name = "Hotel Staff" uniform = /obj/item/clothing/under/assistantformal shoes = /obj/item/clothing/shoes/laceup - r_pocket = /obj/item/device/radio/off + r_pocket = /obj/item/radio/off back = /obj/item/storage/backpack implants = list(/obj/item/implant/mindshield) @@ -387,7 +387,7 @@ name = "Demonic Friend" uniform = /obj/item/clothing/under/assistantformal shoes = /obj/item/clothing/shoes/laceup - r_pocket = /obj/item/device/radio/off + r_pocket = /obj/item/radio/off back = /obj/item/storage/backpack implants = list(/obj/item/implant/mindshield) //No revolutionaries, he's MY friend. id = /obj/item/card/id @@ -406,7 +406,7 @@ uniform = /obj/item/clothing/under/syndicate shoes = /obj/item/clothing/shoes/combat gloves = /obj/item/clothing/gloves/combat - ears = /obj/item/device/radio/headset/syndicate/alt + ears = /obj/item/radio/headset/syndicate/alt back = /obj/item/storage/backpack implants = list(/obj/item/implant/weapons_auth) id = /obj/item/card/id/syndicate @@ -482,7 +482,7 @@ shoes = /obj/item/clothing/shoes/jackboots id = /obj/item/card/id/away/old/sec r_pocket = /obj/item/restraints/handcuffs - l_pocket = /obj/item/device/assembly/flash/handheld + l_pocket = /obj/item/assembly/flash/handheld assignedrole = "Ancient Crew" /obj/effect/mob_spawn/human/oldsec/Destroy() diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index f1fbd1febd..5aa88cb0d9 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -263,12 +263,14 @@ /obj/structure/grille/hitby(AM as mob|obj) if(isobj(AM)) if(prob(50) && anchored && !broken) - var/turf/T = get_turf(src) - var/obj/structure/cable/C = T.get_cable_node() - if(C) - playsound(src, 'sound/magic/lightningshock.ogg', 100, 1, extrarange = 5) - tesla_zap(src, 3, C.powernet.avail * 0.01) //Zap for 1/100 of the amount of power. At a million watts in the grid, it will be as powerful as a tesla revolver shot. - C.powernet.load += C.powernet.avail * 0.0375 // you can gain up to 3.5 via the 4x upgrades power is halved by the pole so thats 2x then 1X then .5X for 3.5x the 3 bounces shock. + var/obj/O = AM + if(O.throwforce != 0)//don't want to let people spam tesla bolts, this way it will break after time + var/turf/T = get_turf(src) + var/obj/structure/cable/C = T.get_cable_node() + if(C) + playsound(src, 'sound/magic/lightningshock.ogg', 100, 1, extrarange = 5) + tesla_zap(src, 3, C.powernet.avail * 0.01) //Zap for 1/100 of the amount of power. At a million watts in the grid, it will be as powerful as a tesla revolver shot. + C.powernet.load += C.powernet.avail * 0.0375 // you can gain up to 3.5 via the 4x upgrades power is halved by the pole so thats 2x then 1X then .5X for 3.5x the 3 bounces shock. return ..() /obj/structure/grille/get_dumping_location(datum/component/storage/source,mob/user) diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index 63f4578187..4c588395df 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -11,7 +11,7 @@ var/obj/item/storage/bag/trash/mybag = null var/obj/item/mop/mymop = null var/obj/item/reagent_containers/spray/cleaner/myspray = null - var/obj/item/device/lightreplacer/myreplacer = null + var/obj/item/lightreplacer/myreplacer = null var/signs = 0 var/const/max_signs = 4 @@ -64,9 +64,9 @@ update_icon() else to_chat(user, fail_msg) - else if(istype(I, /obj/item/device/lightreplacer)) + else if(istype(I, /obj/item/lightreplacer)) if(!myreplacer) - var/obj/item/device/lightreplacer/l=I + var/obj/item/lightreplacer/l=I l.janicart_insert(user,src) else to_chat(user, fail_msg) diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index c6273f3049..40435c2000 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -8,6 +8,7 @@ armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 50) max_integrity = 50 layer = LATTICE_LAYER //under pipes + plane = FLOOR_PLANE var/number_of_rods = 1 canSmoothWith = list(/obj/structure/lattice, /turf/open/floor, diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 8a90bfe2ad..749717b358 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -255,7 +255,7 @@ tile.MakeSlippery(TURF_WET_WATER, min_wet_time = 5 SECONDS, wet_time_to_add = 1 SECONDS) /obj/machinery/shower/attackby(obj/item/I, mob/user, params) - if(I.type == /obj/item/device/analyzer) + if(I.type == /obj/item/analyzer) to_chat(user, "The water temperature seems to be [watertemp].") else return ..() diff --git a/code/game/say.dm b/code/game/say.dm index 817238f427..4fb67cb7c6 100644 --- a/code/game/say.dm +++ b/code/game/say.dm @@ -166,7 +166,7 @@ GLOBAL_LIST_INIT(freqtospan, list( /atom/movable/virtualspeaker var/job var/atom/movable/source - var/obj/item/device/radio/radio + var/obj/item/radio/radio INITIALIZE_IMMEDIATE(/atom/movable/virtualspeaker) /atom/movable/virtualspeaker/Initialize(mapload, atom/movable/M, radio) diff --git a/code/game/turfs/change_turf.dm b/code/game/turfs/change_turf.dm index 253ceb29ac..539911f6eb 100644 --- a/code/game/turfs/change_turf.dm +++ b/code/game/turfs/change_turf.dm @@ -68,11 +68,20 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( blueprint_data = null var/list/old_baseturfs = baseturfs - changing_turf = TRUE + var/list/transferring_comps = list() + SendSignal(COMSIG_TURF_CHANGE, path, new_baseturfs, flags, transferring_comps) + for(var/i in transferring_comps) + var/datum/component/comp = i + comp.RemoveComponent() + + changing_turf = TRUE qdel(src) //Just get the side effects and call Destroy var/turf/W = new path(src) + for(var/i in transferring_comps) + W.TakeComponent(i) + if(new_baseturfs) W.baseturfs = new_baseturfs else diff --git a/code/game/turfs/closed.dm b/code/game/turfs/closed.dm index c9848fb793..657bf89a34 100644 --- a/code/game/turfs/closed.dm +++ b/code/game/turfs/closed.dm @@ -44,6 +44,7 @@ icon = 'icons/blank_title.png' icon_state = "" layer = FLY_LAYER + bullet_bounce_sound = null /turf/closed/indestructible/splashscreen/New() SStitle.splash_turf = src @@ -102,6 +103,8 @@ desc = "An extremely densely-packed rock, sheeted over with centuries worth of ice and snow." icon = 'icons/turf/walls.dmi' icon_state = "snowrock" + bullet_sizzle = TRUE + bullet_bounce_sound = null /turf/closed/indestructible/rock/snow/ice name = "iced rock" diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index 02df5ed3fb..2fc582229d 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -1,4 +1,5 @@ /turf/open + plane = FLOOR_PLANE var/slowdown = 0 //negative for faster, positive for slower var/mutable_appearance/wet_overlay diff --git a/code/game/turfs/simulated/chasm.dm b/code/game/turfs/simulated/chasm.dm index 93590e935c..0ac45562a5 100644 --- a/code/game/turfs/simulated/chasm.dm +++ b/code/game/turfs/simulated/chasm.dm @@ -8,6 +8,7 @@ icon_state = "smooth" canSmoothWith = list(/turf/open/floor/fakepit, /turf/open/chasm) density = TRUE //This will prevent hostile mobs from pathing into chasms, while the canpass override will still let it function like an open turf + bullet_bounce_sound = null //abandon all hope ye who enter /turf/open/chasm/Initialize() . = ..() diff --git a/code/game/turfs/simulated/floor/fancy_floor.dm b/code/game/turfs/simulated/floor/fancy_floor.dm index e664c62023..5d028c6403 100644 --- a/code/game/turfs/simulated/floor/fancy_floor.dm +++ b/code/game/turfs/simulated/floor/fancy_floor.dm @@ -67,6 +67,7 @@ floor_tile = /obj/item/stack/tile/grass broken_states = list("sand") flags_1 = NONE + bullet_bounce_sound = null var/ore_type = /obj/item/stack/ore/glass var/turfverb = "uproot" @@ -93,6 +94,7 @@ floor_tile = null initial_gas_mix = "o2=22;n2=82;TEMP=180" slowdown = 2 + bullet_sizzle = TRUE /turf/open/floor/grass/snow/try_replace_tile(obj/item/stack/tile/T, mob/user, params) return @@ -142,6 +144,7 @@ smooth = SMOOTH_TRUE canSmoothWith = list(/turf/open/floor/carpet) flags_1 = NONE + bullet_bounce_sound = null /turf/open/floor/carpet/examine(mob/user) ..() diff --git a/code/game/turfs/simulated/floor/plating/asteroid.dm b/code/game/turfs/simulated/floor/plating/asteroid.dm index 8cc61700d3..3877868ca2 100644 --- a/code/game/turfs/simulated/floor/plating/asteroid.dm +++ b/code/game/turfs/simulated/floor/plating/asteroid.dm @@ -279,6 +279,8 @@ planetary_atmos = TRUE archdrops = list(/obj/item/stack/sheet/mineral/snow = list(ARCH_PROB = 100, ARCH_MAXDROP = 5)) burnt_states = list("snow_dug") + bullet_sizzle = TRUE + bullet_bounce_sound = null /turf/open/floor/plating/asteroid/snow/burn_tile() if(!burnt) diff --git a/code/game/turfs/simulated/floor/plating/misc_plating.dm b/code/game/turfs/simulated/floor/plating/misc_plating.dm index 12edefb680..b21e361639 100644 --- a/code/game/turfs/simulated/floor/plating/misc_plating.dm +++ b/code/game/turfs/simulated/floor/plating/misc_plating.dm @@ -88,6 +88,7 @@ icon = 'icons/misc/beach.dmi' flags_1 = NONE attachment_holes = FALSE + bullet_bounce_sound = null /turf/open/floor/plating/beach/try_replace_tile(obj/item/stack/tile/T, mob/user, params) return @@ -144,6 +145,7 @@ baseturfs = /turf/open/floor/plating/ice slowdown = 1 attachment_holes = FALSE + bullet_sizzle = TRUE /turf/open/floor/plating/ice/Initialize() . = ..() diff --git a/code/game/turfs/simulated/floor/reinf_floor.dm b/code/game/turfs/simulated/floor/reinf_floor.dm index 78fe2b1bde..a51989d230 100644 --- a/code/game/turfs/simulated/floor/reinf_floor.dm +++ b/code/game/turfs/simulated/floor/reinf_floor.dm @@ -117,9 +117,8 @@ /turf/open/floor/engine/cult name = "engraved floor" - desc = "The air hangs heavy over this sinister flooring." + desc = "The air smells strangely over this sinister flooring." icon_state = "plating" - CanAtmosPass = ATMOS_PASS_NO floor_tile = null var/obj/effect/clockwork/overlay/floor/bloodcult/realappearance diff --git a/code/game/turfs/simulated/lava.dm b/code/game/turfs/simulated/lava.dm index f8ab060853..b6f862cab5 100644 --- a/code/game/turfs/simulated/lava.dm +++ b/code/game/turfs/simulated/lava.dm @@ -10,6 +10,7 @@ light_range = 2 light_power = 0.75 light_color = LIGHT_COLOR_LAVA + bullet_bounce_sound = 'sound/items/welder2.ogg' /turf/open/lava/ex_act(severity, target) contents_explosion(severity, target) @@ -127,10 +128,10 @@ continue if(iscarbon(L)) var/mob/living/carbon/C = L - var/obj/item/clothing/S = C.get_item_by_slot(slot_wear_suit) - var/obj/item/clothing/H = C.get_item_by_slot(slot_head) + var/obj/item/clothing/S = C.get_item_by_slot(SLOT_WEAR_SUIT) + var/obj/item/clothing/H = C.get_item_by_slot(SLOT_HEAD) - if(S && H && S.flags_2 & LAVA_PROTECT_2 && H.flags_2 & LAVA_PROTECT_2) + if(S && H && S.clothing_flags & LAVAPROTECT && H.clothing_flags & LAVAPROTECT) return L.adjustFireLoss(20) diff --git a/code/game/turfs/simulated/minerals.dm b/code/game/turfs/simulated/minerals.dm index 09710e30a2..9928f9cdc5 100644 --- a/code/game/turfs/simulated/minerals.dm +++ b/code/game/turfs/simulated/minerals.dm @@ -437,7 +437,7 @@ . = ..() /turf/closed/mineral/gibtonite/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/device/mining_scanner) || istype(I, /obj/item/device/t_scanner/adv_mining_scanner) && stage == 1) + if(istype(I, /obj/item/mining_scanner) || istype(I, /obj/item/t_scanner/adv_mining_scanner) && stage == 1) user.visible_message("[user] holds [I] to [src]...", "You use [I] to locate where to cut off the chain reaction and attempt to stop it...") defuse() ..() diff --git a/code/game/turfs/simulated/reebe_void.dm b/code/game/turfs/simulated/reebe_void.dm index 3e40ebed64..624525d11d 100644 --- a/code/game/turfs/simulated/reebe_void.dm +++ b/code/game/turfs/simulated/reebe_void.dm @@ -4,6 +4,7 @@ layer = SPACE_LAYER baseturfs = /turf/open/indestructible/reebe_void planetary_atmos = TRUE + bullet_bounce_sound = null //forever falling /turf/open/indestructible/reebe_void/Initialize(mapload) . = ..() diff --git a/code/game/turfs/simulated/wall/mineral_walls.dm b/code/game/turfs/simulated/wall/mineral_walls.dm index 4f85d45d58..c8ec3a5c5f 100644 --- a/code/game/turfs/simulated/wall/mineral_walls.dm +++ b/code/game/turfs/simulated/wall/mineral_walls.dm @@ -167,6 +167,8 @@ sheet_type = /obj/item/stack/sheet/mineral/snow canSmoothWith = null girder_type = null + bullet_sizzle = TRUE + bullet_bounce_sound = null /turf/closed/wall/mineral/abductor name = "alien wall" diff --git a/code/game/turfs/simulated/wall/misc_walls.dm b/code/game/turfs/simulated/wall/misc_walls.dm index 7012c5f6d8..f40f74787a 100644 --- a/code/game/turfs/simulated/wall/misc_walls.dm +++ b/code/game/turfs/simulated/wall/misc_walls.dm @@ -158,6 +158,7 @@ canSmoothWith = null hardness = 35 slicing_duration = 150 //welding through the ice+metal + bullet_sizzle = TRUE /turf/closed/wall/rust name = "rusted wall" diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 2dc99a5a59..f559c420c6 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -209,8 +209,8 @@ place_poster(W,user) return TRUE //wall mounted IC assembly stuff - else if(istype(W, /obj/item/device/electronic_assembly/wallmount)) - var/obj/item/device/electronic_assembly/wallmount/A = W + else if(istype(W, /obj/item/electronic_assembly/wallmount)) + var/obj/item/electronic_assembly/wallmount/A = W A.mount_assembly(src, user) return TRUE diff --git a/code/game/turfs/simulated/water.dm b/code/game/turfs/simulated/water.dm index eb6fe8a194..3977ad1955 100644 --- a/code/game/turfs/simulated/water.dm +++ b/code/game/turfs/simulated/water.dm @@ -7,6 +7,8 @@ initial_gas_mix = LAVALAND_DEFAULT_ATMOS planetary_atmos = TRUE slowdown = 1 + bullet_sizzle = TRUE + bullet_bounce_sound = null //needs a splashing sound one day. /turf/open/water/Initialize() . = ..() diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index ed0fa395ea..8d610a962d 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -17,6 +17,7 @@ layer = SPACE_LAYER light_power = 0.25 dynamic_lighting = DYNAMIC_LIGHTING_DISABLED + bullet_bounce_sound = null /turf/open/space/basic/New() //Do not convert to Initialize diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index a40991b954..dcfc1d41f6 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -29,6 +29,10 @@ var/requires_activation //add to air processing after initialize? var/changing_turf = FALSE + var/bullet_bounce_sound = 'sound/weapons/bulletremove.ogg' //sound played when a shell casing is ejected ontop of the turf. + var/bullet_sizzle = FALSE //used by ammo_casing/bounce_away() to determine if the shell casing should make a sizzle sound when it's ejected over the turf + //IE if the turf is supposed to be water, set TRUE. + /turf/vv_edit_var(var_name, new_value) var/static/list/banned_edits = list("x", "y", "z") if(var_name in banned_edits) @@ -339,7 +343,7 @@ for(var/V in contents) var/atom/A = V - if(A.level >= affecting_level) + if(!QDELETED(A) && A.level >= affecting_level) if(ismovableatom(A)) var/atom/movable/AM = A if(!AM.ex_check(explosion_id)) diff --git a/code/game/world.dm b/code/game/world.dm index cc4246a7c8..d121f7e411 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -17,6 +17,10 @@ GLOBAL_PROTECT(security_mode) make_datum_references_lists() //initialises global lists for referencing frequently used datums (so that we only ever do it once) + TgsNew() + + GLOB.revdata = new + config.Load() //SetupLogs depends on the RoundID, so lets check @@ -25,8 +29,6 @@ GLOBAL_PROTECT(security_mode) SSdbcore.SetRoundID() SetupLogs() - SERVER_TOOLS_ON_NEW - load_admins() LoadVerbs(/datum/verbs/menu) if(CONFIG_GET(flag/usewhitelist)) @@ -93,6 +95,7 @@ GLOBAL_PROTECT(security_mode) GLOB.sql_error_log = "[GLOB.log_directory]/sql.log" GLOB.world_qdel_log = "[GLOB.log_directory]/qdel.log" GLOB.world_runtime_log = "[GLOB.log_directory]/runtime.log" + GLOB.query_debug_log = "[GLOB.log_directory]/query_debug.log" #ifdef UNIT_TESTS GLOB.test_log = file("[GLOB.log_directory]/tests.log") @@ -129,7 +132,7 @@ GLOBAL_PROTECT(security_mode) warning("/tg/station 13 uses many file operations, a few shell()s, and some external call()s. Trusted mode is recommended. You can download our source code for your own browsing and compilation at https://github.com/tgstation/tgstation") /world/Topic(T, addr, master, key) - SERVER_TOOLS_ON_TOPIC //redirect to server tools if necessary + TGS_TOPIC //redirect to server tools if necessary var/static/list/topic_handlers = TopicHandlers() @@ -185,7 +188,7 @@ GLOBAL_PROTECT(security_mode) qdel(src) //shut it down /world/Reboot(reason = 0, fast_track = FALSE) - SERVER_TOOLS_ON_REBOOT + TgsReboot() if (reason || fast_track) //special reboot, do none of the normal stuff if (usr) log_admin("[key_name(usr)] Has requested an immediate world restart via client side debugging tools") @@ -199,7 +202,7 @@ GLOBAL_PROTECT(security_mode) FinishTestRun() return - if(SERVER_TOOLS_PRESENT) + if(TgsAvailable()) var/do_hard_reboot // check the hard reboot counter var/ruhr = CONFIG_GET(number/rounds_until_hard_restart) @@ -218,7 +221,7 @@ GLOBAL_PROTECT(security_mode) if(do_hard_reboot) log_world("World hard rebooted at [time_stamp()]") shutdown_logging() // See comment below. - SERVER_TOOLS_REBOOT_BYOND + TgsEndProcess() log_world("World rebooted at [time_stamp()]") shutdown_logging() // Past this point, no logging procs can be used, at risk of data loss. diff --git a/code/modules/NTNet/netdata.dm b/code/modules/NTNet/netdata.dm index a5d7cc0efa..857869fc21 100644 --- a/code/modules/NTNet/netdata.dm +++ b/code/modules/NTNet/netdata.dm @@ -1,31 +1,46 @@ /datum/netdata //this requires some thought later on but for now it's fine. var/network_id + var/autopasskey = TRUE + var/list/recipient_ids = list() var/sender_id + var/broadcast = FALSE //Whether this is a broadcast packet. - var/plaintext_data - var/plaintext_data_secondary - var/encrypted_passkey + var/list/data = list() var/list/passkey // Process data before sending it /datum/netdata/proc/pre_send(datum/component/ntnet_interface/interface) // Decrypt the passkey. - if(encrypted_passkey && !passkey) - var/result = XorEncrypt(hextostr(encrypted_passkey, TRUE), SScircuit.cipherkey) - if(length(result) > 1) - passkey = json_decode(XorEncrypt(hextostr(encrypted_passkey, TRUE), SScircuit.cipherkey)) + if(autopasskey) + if(data["encrypted_passkey"] && !passkey) + var/result = XorEncrypt(hextostr(data["encrypted_passkey"], TRUE), SScircuit.cipherkey) + if(length(result) > 1) + passkey = json_decode(XorEncrypt(hextostr(data["encrypted_passkey"], TRUE), SScircuit.cipherkey)) - // Encrypt the passkey. - if(!encrypted_passkey && passkey) - encrypted_passkey = strtohex(XorEncrypt(json_encode(passkey), SScircuit.cipherkey)) + // Encrypt the passkey. + if(!data["encrypted_passkey"] && passkey) + data["encrypted_passkey"] = strtohex(XorEncrypt(json_encode(passkey), SScircuit.cipherkey)) // If there is no sender ID, set the default one. if(!sender_id && interface) sender_id = interface.hardware_id +/datum/netdata/proc/standard_format_data(primary, secondary, passkey) + data["data"] = primary + data["data_secondary"] = secondary + data["encrypted_passkey"] = passkey + +/datum/netdata/proc/json_to_data(json) + data = json_decode(json) + +/datum/netdata/proc/json_append_to_data(json) + data |= json_decode(json) + +/datum/netdata/proc/data_to_json() + return json_encode(data) /datum/netdata/proc/json_list_generation_admin() //for admin logs and such. . = list() @@ -40,9 +55,7 @@ . = list() .["recipient_ids"] = recipient_ids .["sender_id"] = sender_id - .["data"] = plaintext_data - .["data_secondary"] = plaintext_data_secondary - .["passkey"] = encrypted_passkey + .["data_list"] = data /datum/netdata/proc/generate_netlog() return "[json_encode(json_list_generation_netlog())]" diff --git a/code/modules/NTNet/network.dm b/code/modules/NTNet/network.dm index aee0dc1a2d..68b158dd65 100644 --- a/code/modules/NTNet/network.dm +++ b/code/modules/NTNet/network.dm @@ -1,6 +1,11 @@ /datum/ntnet var/network_id = "Network" - var/connected_interfaces_by_id = list() //id = datum/component/ntnet_interface + var/list/connected_interfaces_by_id = list() //id = datum/component/ntnet_interface + var/list/services_by_path = list() //type = datum/ntnet_service + var/list/services_by_id = list() //id = datum/ntnet_service + + var/list/autoinit_service_paths = list() //typepaths + var/list/relays = list() var/list/logs = list() @@ -32,7 +37,18 @@ stack_trace("Network [type] with ID [network_id] failed to register and has been deleted.") qdel(src) +/datum/ntnet/Destroy() + for(var/i in connected_interfaces_by_id) + var/datum/component/ntnet_interface/I = i + I.unregister_connection(src) + for(var/i in services_by_id) + var/datum/ntnet_service/S = i + S.disconnect(src, TRUE) + return ..() + /datum/ntnet/proc/interface_connect(datum/component/ntnet_interface/I) + if(connected_interfaces_by_id[I.hardware_id]) + return FALSE connected_interfaces_by_id[I.hardware_id] = I return TRUE @@ -43,15 +59,68 @@ /datum/ntnet/proc/find_interface_id(id) return connected_interfaces_by_id[id] +/datum/ntnet/proc/find_service_id(id) + return services_by_id[id] + +/datum/ntnet/proc/find_service_path(path) + return services_by_path[path] + +/datum/ntnet/proc/register_service(datum/ntnet_service/S) + if(!istype(S)) + return FALSE + if(services_by_path[S.type] || services_by_id[S.id]) + return FALSE + services_by_path[S.type] = S + services_by_id[S.id] = S + return TRUE + +/datum/ntnet/proc/unregister_service(datum/ntnet_service/S) + if(!istype(S)) + return FALSE + services_by_path -= S.type + services_by_id -= S.id + return TRUE + +/datum/ntnet/proc/create_service(type) + var/datum/ntnet_service/S = new type + if(!istype(S)) + return FALSE + . = S.connect(src) + if(!.) + qdel(S) + +/datum/ntnet/proc/destroy_service(type) + var/datum/ntnet_service/S = find_service_path(type) + if(!istype(S)) + return FALSE + . = S.disconnect(src) + if(.) + qdel(src) + /datum/ntnet/proc/process_data_transmit(datum/component/ntnet_interface/sender, datum/netdata/data) - data.network_id = src - log_data_transfer(data) if(!check_relay_operation()) return FALSE - for(var/i in data.recipient_ids) - var/datum/component/ntnet_interface/reciever = find_interface_id(i) + data.network_id = src + log_data_transfer(data) + var/list/datum/component/ntnet_interface/recieving = list() + if((length(data.recipient_ids == 1) && data.recipient_ids[1] == NETWORK_BROADCAST_ID) || data.recipient_ids == NETWORK_BROADCAST_ID) + data.broadcast = TRUE + for(var/i in connected_interfaces_by_id) + recieving |= connected_interfaces_by_id[i] + else + for(var/i in data.recipient_ids) + var/datum/component/ntnet_interface/reciever = find_interface_id(i) + recieving |= reciever + + for(var/i in recieving) + var/datum/component/ntnet_interface/reciever = i if(reciever) reciever.__network_recieve(data) + + for(var/i in services_by_id) + var/datum/ntnet_service/serv = services_by_id[i] + serv.ntnet_intercept(data, src, sender) + return TRUE /datum/ntnet/proc/check_relay_operation(zlevel) //can be expanded later but right now it's true/false. diff --git a/code/modules/NTNet/services/_service.dm b/code/modules/NTNet/services/_service.dm new file mode 100644 index 0000000000..8611c2d25d --- /dev/null +++ b/code/modules/NTNet/services/_service.dm @@ -0,0 +1,38 @@ +/datum/ntnet_service + var/name = "Unidentified Network Service" + var/id + var/list/networks_by_id = list() //Yes we support multinetwork services! + +/datum/ntnet_service/New() + var/datum/component/ntnet_interface/N = AddComponent(/datum/component/ntnet_interface, id, name, FALSE) + id = N.hardware_id + +/datum/ntnet_service/Destroy() + for(var/i in networks_by_id) + var/datum/ntnet/N = i + disconnect(N, TRUE) + networks_by_id = null + return ..() + +/datum/ntnet_service/proc/connect(datum/ntnet/net) + if(!istype(net)) + return FALSE + GET_COMPONENT(interface, /datum/component/ntnet_interface) + if(!interface.register_connection(net)) + return FALSE + if(!net.register_service(src)) + interface.unregister_connection(net) + return FALSE + networks_by_id[net.network_id] = net + return TRUE + +/datum/ntnet_service/proc/disconnect(datum/ntnet/net, force = FALSE) + if(!istype(net) || (!net.unregister_service(src) && !force)) + return FALSE + GET_COMPONENT(interface, /datum/component/ntnet_interface) + interface.unregister_connection(net) + networks_by_id -= net.network_id + return TRUE + +/datum/ntnet_service/proc/ntnet_intercept(datum/netdata/data, datum/ntnet/net, datum/component/ntnet_interface/sender) + return diff --git a/code/modules/admin/IsBanned.dm b/code/modules/admin/IsBanned.dm index 49c7aeffb6..097076fc74 100644 --- a/code/modules/admin/IsBanned.dm +++ b/code/modules/admin/IsBanned.dm @@ -39,7 +39,7 @@ return list("reason"="guest", "desc"="\nReason: Guests not allowed. Please sign in with a byond account.") if (CONFIG_GET(flag/panic_bunker) && SSdbcore.Connect()) log_access("Failed Login: [key] - Guests not allowed during panic bunker") - return list("reason"="guest", "desc"="\nReason: You must first join the Discord to verify your account before joining this server. Please ping an admin once you've joined and read the rules. https://discord.gg/E6SQuhz") + return list("reason"="guest", "desc"="\nReason: You must first sign into your BYOND account or join the Discord to verify your account before joining this server. Please ping an admin once you've joined and read the rules. https://discord.gg/E6SQuhz") //Population Cap Checking var/extreme_popcap = CONFIG_GET(number/extreme_popcap) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 577cca303b..d63b36e6e7 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -434,7 +434,7 @@ return var/list/options = list("Regular Restart", "Hard Restart (No Delay/Feeback Reason)", "Hardest Restart (No actions, just reboot)") - if(SERVER_TOOLS_PRESENT) + if(world.TgsAvailable()) options += "Server Restart (Kill and restart DD)"; var/rebootconfirm @@ -459,7 +459,7 @@ world.Reboot(fast_track = TRUE) if("Server Restart (Kill and restart DD)") to_chat(world, "Server restart - [init_by]") - SERVER_TOOLS_REBOOT_BYOND + world.TgsEndProcess() /datum/admins/proc/end_round() set category = "Server" diff --git a/code/modules/admin/admin_ranks.dm b/code/modules/admin/admin_ranks.dm index dee4787753..7873a97f7c 100644 --- a/code/modules/admin/admin_ranks.dm +++ b/code/modules/admin/admin_ranks.dm @@ -242,7 +242,6 @@ GLOBAL_PROTECT(protected_ranks) var/skip if(rank_names[admin_rank] == null) message_admins("[admin_ckey] loaded with invalid admin rank [admin_rank].") - log_sql("[admin_ckey] loaded with invalid admin rank [admin_rank].") skip = 1 if(GLOB.admin_datums[admin_ckey] || GLOB.deadmins[admin_ckey]) skip = 1 diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index b309c5bea6..77f48d18f4 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -93,6 +93,7 @@ GLOBAL_LIST_INIT(admin_verbs_fun, list( /client/proc/forceEvent, /client/proc/admin_change_sec_level, /client/proc/toggle_nuke, + /client/proc/run_weather, /client/proc/mass_zombie_infection, /client/proc/mass_zombie_cure, /client/proc/polymorph_all, diff --git a/code/modules/admin/chat_commands.dm b/code/modules/admin/chat_commands.dm index 02402956d9..dbeb6fce7f 100644 --- a/code/modules/admin/chat_commands.dm +++ b/code/modules/admin/chat_commands.dm @@ -1,12 +1,12 @@ #define IRC_STATUS_THROTTLE 5 -/datum/server_tools_command/ircstatus +/datum/tgs_chat_command/ircstatus name = "status" help_text = "Gets the admincount, playercount, gamemode, and true game mode of the server" admin_only = TRUE - var/static/last_irc_status = 0 + var/last_irc_status = 0 -/datum/server_tools_command/ircstatus/Run(sender, params) +/datum/tgs_chat_command/ircstatus/Run(datum/tgs_chat_user/sender, params) var/rtod = REALTIMEOFDAY if(rtod - last_irc_status < IRC_STATUS_THROTTLE) return @@ -17,12 +17,12 @@ status += "Players: [GLOB.clients.len] (Active: [get_active_player_count(0,1,0)]). Mode: [SSticker.mode ? SSticker.mode.name : "Not started"]." return status -/datum/server_tools_command/irccheck +/datum/tgs_chat_command/irccheck name = "check" help_text = "Gets the playercount, gamemode, and address of the server" - var/static/last_irc_check = 0 + var/last_irc_check = 0 -/datum/server_tools_command/irccheck/Run(sender, params) +/datum/tgs_chat_command/irccheck/Run(datum/tgs_chat_user/sender, params) var/rtod = REALTIMEOFDAY if(rtod - last_irc_check < IRC_STATUS_THROTTLE) return @@ -30,14 +30,15 @@ var/server = CONFIG_GET(string/server) return "[GLOB.round_id ? "Round #[GLOB.round_id]: " : ""][GLOB.clients.len] players on [SSmapping.config.map_name]; Round [SSticker.HasRoundStarted() ? (SSticker.IsRoundInProgress() ? "Active" : "Finishing") : "Starting"] -- [server ? server : "[world.internet_address]:[world.port]"]" //CIT CHANGE - obfuscates the current gamemode from players -/datum/server_tools_command/ahelp +/datum/tgs_chat_command/ahelp name = "ahelp" help_text = " |list>>" - required_parameters = 2 admin_only = TRUE -/datum/server_tools_command/ahelp/Run(sender, params) +/datum/tgs_chat_command/ahelp/Run(datum/tgs_chat_user/sender, params) var/list/all_params = splittext(params, " ") + if(all_params.len < 2) + return "Insufficient parameters" var/target = all_params[1] all_params.Cut(1, 2) var/id = text2num(target) @@ -47,52 +48,54 @@ target = AH.initiator_ckey else return "Ticket #[id] not found!" - var/res = IrcPm(target, all_params.Join(" "), sender) + var/res = IrcPm(target, all_params.Join(" "), sender.friendly_name) if(res != "Message Successful") return res -/datum/server_tools_command/namecheck +/datum/tgs_chat_command/namecheck name = "namecheck" help_text = "Returns info on the specified target" - required_parameters = 1 admin_only = TRUE -/datum/server_tools_command/namecheck/Run(sender, params) - log_admin("Chat Name Check: [sender] on [params]") - message_admins("Name checking [params] from [sender]") +/datum/tgs_chat_command/namecheck/Run(datum/tgs_chat_user/sender, params) + params = trim(params) + if(!params) + return "Insufficient parameters" + log_admin("Chat Name Check: [sender.friendly_name] on [params]") + message_admins("Name checking [params] from [sender.friendly_name]") return keywords_lookup(params, 1) -/datum/server_tools_command/adminwho +/datum/tgs_chat_command/adminwho name = "adminwho" help_text = "Lists administrators currently on the server" admin_only = TRUE -/datum/server_tools_command/adminwho/Run(sender, params) +/datum/tgs_chat_command/adminwho/Run(datum/tgs_chat_user/sender, params) return ircadminwho() GLOBAL_LIST(round_end_notifiees) -/datum/server_tools_command/notify +/datum/tgs_chat_command/notify name = "notify" help_text = "Pings the invoker when the round ends" admin_only = TRUE -/datum/server_tools_command/notify/Run(sender, params) +/datum/tgs_chat_command/notify/Run(datum/tgs_chat_user/sender, params) if(!SSticker.IsRoundInProgress() && SSticker.HasRoundStarted()) - return "[sender], the round has already ended!" + return "[sender.mention], the round has already ended!" LAZYINITLIST(GLOB.round_end_notifiees) GLOB.round_end_notifiees[sender] = TRUE - return "I will notify [sender] when the round ends." + return "I will notify [sender.mention] when the round ends." -/datum/server_tools_command/sdql +/datum/tgs_chat_command/sdql name = "sdql" help_text = "Runs an SDQL query" admin_only = TRUE -/datum/server_tools_command/sdql/Run(sender, params) +/datum/tgs_chat_command/sdql/Run(datum/tgs_chat_user/sender, params) if(GLOB.AdminProcCaller) return "Unable to run query, another admin proc call is in progress. Try again later." - GLOB.AdminProcCaller = "CHAT_[sender]" //_ won't show up in ckeys so it'll never match with a real admin + GLOB.AdminProcCaller = "CHAT_[sender.friendly_name]" //_ won't show up in ckeys so it'll never match with a real admin var/list/results = world.SDQL2_query(params, GLOB.AdminProcCaller, GLOB.AdminProcCaller) GLOB.AdminProcCaller = null if(!results) @@ -100,13 +103,13 @@ GLOBAL_LIST(round_end_notifiees) var/list/text_res = results.Copy(1, 3) var/list/refs = results.len > 3 ? results.Copy(4) : null . = "[text_res.Join("\n")][refs ? "\nRefs: [refs.Join(" ")]" : ""]" - -/datum/server_tools_command/reload_admins + +/datum/tgs_chat_command/reload_admins name = "reload_admins" help_text = "Forces the server to reload admins." admin_only = TRUE -/datum/server_tools_command/reload_admins/Run(sender, params) +/datum/tgs_chat_command/reload_admins/Run(datum/tgs_chat_user/sender, params) load_admins() - log_admin("[sender] reloaded admins via chat command.") + log_admin("[sender.friendly_name] reloaded admins via chat command.") return "Admins reloaded." diff --git a/code/modules/admin/create_mob.dm b/code/modules/admin/create_mob.dm index b577a84a1d..73b8fa61f0 100644 --- a/code/modules/admin/create_mob.dm +++ b/code/modules/admin/create_mob.dm @@ -22,6 +22,17 @@ H.facial_hair_color = H.hair_color H.eye_color = random_eye_color() H.dna.blood_type = random_blood_type() + + // Mutant randomizing, doesn't affect the mob appearance unless it's the specific mutant. + H.dna.features["mcolor"] = random_short_color() + H.dna.features["tail_lizard"] = pick(GLOB.tails_list_lizard) + H.dna.features["snout"] = pick(GLOB.snouts_list) + H.dna.features["horns"] = pick(GLOB.horns_list) + H.dna.features["frills"] = pick(GLOB.frills_list) + H.dna.features["spines"] = pick(GLOB.spines_list) + H.dna.features["body_markings"] = pick(GLOB.body_markings_list) + H.dna.features["moth_wings"] = pick(GLOB.moth_wings_list) + H.update_body() H.update_hair() H.update_body_parts() \ No newline at end of file diff --git a/code/modules/admin/create_object.dm b/code/modules/admin/create_object.dm index 51ffa539dc..ff49944dc4 100644 --- a/code/modules/admin/create_object.dm +++ b/code/modules/admin/create_object.dm @@ -16,7 +16,7 @@ /datum/admins/proc/quick_create_object(mob/user) var/static/list/create_object_forms = list( /obj, /obj/structure, /obj/machinery, /obj/effect, - /obj/item, /obj/item/clothing, /obj/item/stack, /obj/item/device, + /obj/item, /obj/item/clothing, /obj/item/stack, /obj/item, /obj/item/reagent_containers, /obj/item/gun) var/path = input("Select the path of the object you wish to create.", "Path", /obj) in create_object_forms diff --git a/code/modules/admin/create_poll.dm b/code/modules/admin/create_poll.dm index b1cda46ece..90fd6c66c9 100644 --- a/code/modules/admin/create_poll.dm +++ b/code/modules/admin/create_poll.dm @@ -73,7 +73,7 @@ if(!option) return option = sanitizeSQL(option) - var/default_percentage_calc + var/default_percentage_calc = 0 if(polltype != POLLTYPE_IRV) switch(alert("Should this option be included by default when poll result percentages are generated?",,"Yes","No","Cancel")) if("Yes") diff --git a/code/modules/admin/permissionedit.dm b/code/modules/admin/permissionedit.dm index f7bb770079..1d0bdddf03 100644 --- a/code/modules/admin/permissionedit.dm +++ b/code/modules/admin/permissionedit.dm @@ -6,56 +6,106 @@ return usr.client.holder.edit_admin_permissions() -/datum/admins/proc/edit_admin_permissions() +/datum/admins/proc/edit_admin_permissions(action, target, operation, page) if(!check_rights(R_PERMISSIONS)) return - - var/list/output = list({" - - -Permissions Panel - - - - -
    - - - - - - - -"}) - - for(var/adm_ckey in GLOB.admin_datums+GLOB.deadmins) - var/datum/admins/D = GLOB.admin_datums[adm_ckey] - if(!D) - D = GLOB.deadmins[adm_ckey] - if (!D) - continue - - var/deadminlink = "" - if (D.deadmined) - deadminlink = " \[RA\]" - else - deadminlink = " \[DA\]" - - output += "" - output += "" - output += "" - output += "" - output += "" - output += "" - output += "" - - output += {" -
    CKEY \[+\]RANKPERMISSIONSDENIEDALLOWED TO EDIT
    [adm_ckey]
    [deadminlink]\[-\]\[SYNC TGDB\]
    [D.rank.name][rights2text(D.rank.include_rights," ")][rights2text(D.rank.exclude_rights," ", "-")][rights2text(D.rank.can_edit_rights," ", "*")]
    -
    Search:
    - -"} - - usr << browse(jointext(output, ""),"window=editrights;size=1000x650") + var/list/output = list("\[Permissions\]") + if(action) + output += " | \[Log\] | \[Management\]
    " + else + output += "
    \[Log\]
    \[Management\]" + if(action == 1) + var/list/searchlist = list(" WHERE ") + if(target) + searchlist += "ckey = '[sanitizeSQL(target)]'" + if(operation) + if(target) + searchlist += " AND " + searchlist += "operation = '[sanitizeSQL(operation)]'" + var/search + if(searchlist.len > 1) + search = searchlist.Join("") + var/logcount = 0 + var/logssperpage = 20 + var/pagecount = 0 + page = text2num(page) + var/datum/DBQuery/query_count_admin_logs = SSdbcore.NewQuery("SELECT COUNT(id) FROM [format_table_name("admin_log")][search]") + if(!query_count_admin_logs.warn_execute()) + return + if(query_count_admin_logs.NextRow()) + logcount = text2num(query_count_admin_logs.item[1]) + if(logcount > logssperpage) + output += "
    Page: " + while(logcount > 0) + output += "|[pagecount == page ? "\[[pagecount]\]" : "\[[pagecount]\]"]" + logcount -= logssperpage + pagecount++ + output += "|" + var/limit = " LIMIT [logssperpage * page], [logssperpage]" + var/datum/DBQuery/query_search_admin_logs = SSdbcore.NewQuery("SELECT datetime, round_id, adminckey, operation, target, log FROM [format_table_name("admin_log")][search] ORDER BY datetime DESC[limit]") + if(!query_search_admin_logs.warn_execute()) + return + while(query_search_admin_logs.NextRow()) + var/datetime = query_search_admin_logs.item[1] + var/round_id = query_search_admin_logs.item[2] + var/admin_ckey = query_search_admin_logs.item[3] + operation = query_search_admin_logs.item[4] + target = query_search_admin_logs.item[5] + var/log = query_search_admin_logs.item[6] + output += "

    [datetime] | Round ID [round_id] | Admin [admin_ckey] | Operation [operation] on [target]
    [log]


    " + if(action == 2) + output += "

    Admin ckeys with invalid ranks

    " + var/datum/DBQuery/query_check_admin_errors = SSdbcore.NewQuery("SELECT ckey, [format_table_name("admin")].rank FROM [format_table_name("admin")] LEFT JOIN [format_table_name("admin_ranks")] ON [format_table_name("admin_ranks")].rank = [format_table_name("admin")].rank WHERE [format_table_name("admin_ranks")].rank IS NULL") + if(!query_check_admin_errors.warn_execute()) + return + while(query_check_admin_errors.NextRow()) + var/admin_ckey = query_check_admin_errors.item[1] + var/admin_rank = query_check_admin_errors.item[2] + output += "[admin_ckey] has non-existant rank [admin_rank] | \[Change Rank\] | \[Remove\]" + output += "
    " + output += "

    Unused ranks

    " + var/datum/DBQuery/query_check_unused_rank = SSdbcore.NewQuery("SELECT [format_table_name("admin_ranks")].rank FROM [format_table_name("admin_ranks")] LEFT JOIN [format_table_name("admin")] ON [format_table_name("admin")].rank = [format_table_name("admin_ranks")].rank WHERE [format_table_name("admin")].rank IS NULL") + if(!query_check_unused_rank.warn_execute()) + return + while(query_check_unused_rank.NextRow()) + var/admin_rank = query_check_unused_rank.item[1] + output += "Rank [admin_rank] is not held by any admin | \[Remove\]" + output += "
    " + else if(!action) + output += {" + Permissions Panel + + + +
    + + + + + + + + "} + for(var/adm_ckey in GLOB.admin_datums+GLOB.deadmins) + var/datum/admins/D = GLOB.admin_datums[adm_ckey] + if(!D) + D = GLOB.deadmins[adm_ckey] + if (!D) + continue + var/deadminlink = "" + if (D.deadmined) + deadminlink = " \[RA\]" + else + deadminlink = " \[DA\]" + output += "" + output += "" + output += "" + output += "" + output += "" + output += "" + output += "" + output += "
    CKEY \[+\]RANKPERMISSIONSDENIEDALLOWED TO EDIT
    [adm_ckey]
    [deadminlink]\[-\]\[SYNC TGDB\]
    [D.rank.name][rights2text(D.rank.include_rights," ")][rights2text(D.rank.exclude_rights," ", "-")][rights2text(D.rank.can_edit_rights," ", "*")]
    Search:
    " + usr << browse("[jointext(output, "")]","window=editrights;size=1000x650") /datum/admins/proc/edit_rights_topic(list/href_list) if(!check_rights(R_PERMISSIONS)) @@ -142,10 +192,17 @@ return FALSE if(use_db) . = sanitizeSQL(.) + //if an admin exists without a datum they won't be caught by the above + var/datum/DBQuery/query_admin_in_db = SSdbcore.NewQuery("SELECT 1 FROM [format_table_name("admin_ranks")] WHERE ckey = '[.]'") + if(!query_admin_in_db.warn_execute()) + return FALSE + if(query_admin_in_db.NextRow()) + to_chat(usr, "[.] already listed in admin database. Check the Management tab if they don't appear in the list of admins.") + return FALSE var/datum/DBQuery/query_add_admin = SSdbcore.NewQuery("INSERT INTO [format_table_name("admin")] (ckey, rank) VALUES ('[.]', 'NEW ADMIN')") if(!query_add_admin.warn_execute()) return FALSE - var/datum/DBQuery/query_add_admin_log = SSdbcore.NewQuery("INSERT INTO [format_table_name("admin_log")] (datetime, adminckey, adminip, operation, log) VALUES ('[SQLtime()]', '[sanitizeSQL(usr.ckey)]', INET_ATON('[sanitizeSQL(usr.client.address)]'), 'add admin', 'New admin added: [.]')") + var/datum/DBQuery/query_add_admin_log = SSdbcore.NewQuery("INSERT INTO [format_table_name("admin_log")] (datetime, round_id, adminckey, adminip, operation, target, log) VALUES ('[SQLtime()]', '[GLOB.round_id]', '[sanitizeSQL(usr.ckey)]', INET_ATON('[sanitizeSQL(usr.client.address)]'), 'add admin', '[.]', 'New admin added: [.]')") if(!query_add_admin_log.warn_execute()) return FALSE @@ -153,12 +210,13 @@ if(alert("Are you sure you want to remove [admin_ckey]?","Confirm Removal","Do it","Cancel") == "Do it") GLOB.admin_datums -= admin_ckey GLOB.deadmins -= admin_ckey - D.disassociate() + if(D) + D.disassociate() if(use_db) var/datum/DBQuery/query_add_rank = SSdbcore.NewQuery("DELETE FROM [format_table_name("admin")] WHERE ckey = '[admin_ckey]'") if(!query_add_rank.warn_execute()) return - var/datum/DBQuery/query_add_rank_log = SSdbcore.NewQuery("INSERT INTO [format_table_name("admin_log")] (datetime, adminckey, adminip, operation, log) VALUES ('[SQLtime()]', '[sanitizeSQL(usr.ckey)]', INET_ATON('[sanitizeSQL(usr.client.address)]'), 'remove admin', 'Admin removed: [admin_ckey]')") + var/datum/DBQuery/query_add_rank_log = SSdbcore.NewQuery("INSERT INTO [format_table_name("admin_log")] (datetime, round_id, adminckey, adminip, operation, target, log) VALUES ('[SQLtime()]', '[GLOB.round_id]', '[sanitizeSQL(usr.ckey)]', INET_ATON('[sanitizeSQL(usr.client.address)]'), 'remove admin', '[admin_ckey]', 'Admin removed: [admin_ckey]')") if(!query_add_rank_log.warn_execute()) return message_admins("[key_name_admin(usr)] removed [admin_ckey] from the admins list [use_db ? "permanently" : "temporarily"]") @@ -216,13 +274,13 @@ var/datum/DBQuery/query_add_rank = SSdbcore.NewQuery("INSERT INTO [format_table_name("admin_ranks")] (rank, flags, exclude_flags, can_edit_flags) VALUES ('[new_rank]', '0', '0', '0')") if(!query_add_rank.warn_execute()) return - var/datum/DBQuery/query_add_rank_log = SSdbcore.NewQuery("INSERT INTO [format_table_name("admin_log")] (datetime, adminckey, adminip, operation, log) VALUES ('[SQLtime()]', '[sanitizeSQL(usr.ckey)]', INET_ATON('[sanitizeSQL(usr.client.address)]'), 'add rank', 'New rank added: [admin_ckey]')") + var/datum/DBQuery/query_add_rank_log = SSdbcore.NewQuery("INSERT INTO [format_table_name("admin_log")] (datetime, round_id, adminckey, adminip, operation, target, log) VALUES ('[SQLtime()]', '[GLOB.round_id]', '[sanitizeSQL(usr.ckey)]', INET_ATON('[sanitizeSQL(usr.client.address)]'), 'add rank', '[new_rank]', 'New rank added: [new_rank]')") if(!query_add_rank_log.warn_execute()) return var/datum/DBQuery/query_change_rank = SSdbcore.NewQuery("UPDATE [format_table_name("admin")] SET rank = '[new_rank]' WHERE ckey = '[admin_ckey]'") if(!query_change_rank.warn_execute()) return - var/datum/DBQuery/query_change_rank_log = SSdbcore.NewQuery("INSERT INTO [format_table_name("admin_log")] (datetime, adminckey, adminip, operation, log) VALUES ('[SQLtime()]', '[sanitizeSQL(usr.ckey)]', INET_ATON('[sanitizeSQL(usr.client.address)]'), 'change admin rank', 'Rank of [admin_ckey] changed from [old_rank] to [new_rank]')") + var/datum/DBQuery/query_change_rank_log = SSdbcore.NewQuery("INSERT INTO [format_table_name("admin_log")] (datetime, round_id, adminckey, adminip, operation, target, log) VALUES ('[SQLtime()]', '[GLOB.round_id]', '[sanitizeSQL(usr.ckey)]', INET_ATON('[sanitizeSQL(usr.client.address)]'), 'change admin rank', '[admin_ckey]', 'Rank of [admin_ckey] changed from [old_rank] to [new_rank]')") if(!query_change_rank_log.warn_execute()) return if(D) //they were previously an admin @@ -259,7 +317,7 @@ var/datum/DBQuery/query_change_rank_flags = SSdbcore.NewQuery("UPDATE [format_table_name("admin_ranks")] SET flags = '[new_flags]', exclude_flags = '[new_exclude_flags]', can_edit_flags = '[new_can_edit_flags]' WHERE rank = '[D.rank.name]'") if(!query_change_rank_flags.warn_execute()) return - var/datum/DBQuery/query_change_rank_flags_log = SSdbcore.NewQuery("INSERT INTO [format_table_name("admin_log")] (datetime, adminckey, adminip, operation, log) VALUES ('[SQLtime()]', '[sanitizeSQL(usr.ckey)]', INET_ATON('[sanitizeSQL(usr.client.address)]'), 'change rank flags', 'Permissions of [admin_ckey] changed from[rights2text(old_flags," ")][rights2text(old_exclude_flags," ", "-")][rights2text(old_can_edit_flags," ", "*")] to[rights2text(new_flags," ")][rights2text(new_exclude_flags," ", "-")][rights2text(new_can_edit_flags," ", "*")]')") + var/datum/DBQuery/query_change_rank_flags_log = SSdbcore.NewQuery("INSERT INTO [format_table_name("admin_log")] (datetime, round_id, adminckey, adminip, operation, target, log) VALUES ('[SQLtime()]', '[GLOB.round_id]', '[sanitizeSQL(usr.ckey)]', INET_ATON('[sanitizeSQL(usr.client.address)]'), 'change rank flags', '[D.rank.name]', 'Permissions of [D.rank.name] changed from[rights2text(old_flags," ")][rights2text(old_exclude_flags," ", "-")][rights2text(old_can_edit_flags," ", "*")] to[rights2text(new_flags," ")][rights2text(new_exclude_flags," ", "-")][rights2text(new_can_edit_flags," ", "*")]')") if(!query_change_rank_flags_log.warn_execute()) return for(var/datum/admin_rank/R in GLOB.admin_ranks) @@ -294,6 +352,36 @@ message_admins("[key_name_admin(usr)] edited the permissions of [use_db ? " rank [D.rank.name] permanently" : "[admin_ckey] temporarily"]") log_admin("[key_name(usr)] edited the permissions of [use_db ? " rank [D.rank.name] permanently" : "[admin_ckey] temporarily"]") +/datum/admins/proc/remove_rank(admin_rank) + if(!admin_rank) + return + for(var/datum/admin_rank/R in GLOB.admin_ranks) + if(R.name == admin_rank && (!(R.rights & usr.client.holder.rank.can_edit_rights) == R.rights)) + to_chat(usr, "You don't have edit rights to all the rights this rank has, rank deletion not permitted.") + return + if(!CONFIG_GET(flag/admin_legacy_system) && CONFIG_GET(flag/protect_legacy_ranks) && (admin_rank in GLOB.protected_ranks)) + to_chat(usr, "Deletion of protected ranks is not permitted, it must be removed from admin_ranks.txt.") + return + if(CONFIG_GET(flag/load_legacy_ranks_only)) + to_chat(usr, "Rank deletion not permitted while database rank loading is disabled.") + return + admin_rank = sanitizeSQL(admin_rank) + var/datum/DBQuery/query_admins_with_rank = SSdbcore.NewQuery("SELECT 1 FROM [format_table_name("admin")] WHERE rank = '[admin_rank]'") + if(!query_admins_with_rank.warn_execute()) + return + if(query_admins_with_rank.NextRow()) + to_chat(usr, "Error: Rank deletion attempted while rank still used; Tell a coder, this shouldn't happen.") + return + if(alert("Are you sure you want to remove [admin_rank]?","Confirm Removal","Do it","Cancel") == "Do it") + var/datum/DBQuery/query_add_rank = SSdbcore.NewQuery("DELETE FROM [format_table_name("admin_ranks")] WHERE rank = '[admin_rank]'") + if(!query_add_rank.warn_execute()) + return + var/datum/DBQuery/query_add_rank_log = SSdbcore.NewQuery("INSERT INTO [format_table_name("admin_log")] (datetime, round_id, adminckey, adminip, operation, target, log) VALUES ('[SQLtime()]', '[GLOB.round_id]', '[sanitizeSQL(usr.ckey)]', INET_ATON('[sanitizeSQL(usr.client.address)]'), 'remove rank', '[admin_rank]', 'Rank removed: [admin_rank]')") + if(!query_add_rank_log.warn_execute()) + return + message_admins("[key_name_admin(usr)] removed rank [admin_rank] permanently") + log_admin("[key_name(usr)] removed rank [admin_rank] permanently") + /datum/admins/proc/sync_lastadminrank(admin_ckey, datum/admins/D) var/sqlrank = sanitizeSQL(D.rank.name) admin_ckey = sanitizeSQL(admin_ckey) diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm index a8e92db53a..5138089a6c 100644 --- a/code/modules/admin/secrets.dm +++ b/code/modules/admin/secrets.dm @@ -430,7 +430,7 @@ var/obj/item/clothing/under/schoolgirl/I = new seifuku var/olduniform = H.w_uniform H.temporarilyRemoveItemFromInventory(H.w_uniform, TRUE, FALSE) - H.equip_to_slot_or_del(I, slot_w_uniform) + H.equip_to_slot_or_del(I, SLOT_W_UNIFORM) qdel(olduniform) if(droptype == "Yes") I.flags_1 |= NODROP_1 diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index a9b1b10606..bff420320c 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -273,6 +273,21 @@ return create_message("note", banckey, null, banreason, null, null, 0, 0) + else if(href_list["editrightsbrowser"]) + edit_admin_permissions(0) + + else if(href_list["editrightsbrowserlog"]) + edit_admin_permissions(1, href_list["editrightstarget"], href_list["editrightsoperation"], href_list["editrightspage"]) + + if(href_list["editrightsbrowsermanage"]) + if(href_list["editrightschange"]) + change_admin_rank(href_list["editrightschange"], TRUE) + else if(href_list["editrightsremove"]) + remove_admin(href_list["editrightsremove"], TRUE) + else if(href_list["editrightsremoverank"]) + remove_rank(href_list["editrightsremoverank"]) + edit_admin_permissions(2) + else if(href_list["editrights"]) edit_rights_topic(href_list) @@ -1493,8 +1508,8 @@ if(ishuman(L)) var/mob/living/carbon/human/observer = L - observer.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket(observer), slot_w_uniform) - observer.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(observer), slot_shoes) + observer.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket(observer), SLOT_W_UNIFORM) + observer.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(observer), SLOT_SHOES) L.Unconscious(100) sleep(5) L.forceMove(pick(GLOB.tdomeobserve)) @@ -1804,7 +1819,7 @@ if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human") return - if(!istype(H.ears, /obj/item/device/radio/headset)) + if(!istype(H.ears, /obj/item/radio/headset)) to_chat(usr, "The person you are trying to contact is not wearing a headset.") return @@ -1823,7 +1838,7 @@ if(!istype(H)) to_chat(usr, "This can only be used on instances of type /mob/living/carbon/human.") return - if(!istype(H.ears, /obj/item/device/radio/headset)) + if(!istype(H.ears, /obj/item/radio/headset)) to_chat(usr, "The person you are trying to contact is not wearing a headset.") return @@ -2448,6 +2463,19 @@ usr.client.cmd_admin_mod_antag_rep(C, href_list["modantagrep"]) show_player_panel(M) + else if(href_list["slowquery"]) + if(!check_rights(R_ADMIN)) + return + var/answer = href_list["slowquery"] + if(answer == "yes") + log_query_debug("[usr.key] | Reported a server hang") + if(alert(usr, "Had you just press any admin buttons?", "Query server hang report", "Yes", "No") == "Yes") + var/response = input(usr,"What were you just doing?","Query server hang report") as null|text + if(response) + log_query_debug("[usr.key] | [response]") + else if(answer == "no") + log_query_debug("[usr.key] | Reported no server hang") + /datum/admins/proc/HandleCMode() if(!check_rights(R_ADMIN)) return diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 2a6b4448d2..f385cdc1bd 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -594,7 +594,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) /proc/send2irc(msg,msg2) msg = replacetext(replacetext(msg, "\proper", ""), "\improper", "") msg2 = replacetext(replacetext(msg2, "\proper", ""), "\improper", "") - SERVER_TOOLS_RELAY_BROADCAST("[msg] | [msg2]") + world.TgsTargetedChatBroadcast("[msg] | [msg2]", TRUE) /proc/send2otherserver(source,msg,type = "Ahelp") var/comms_key = CONFIG_GET(string/comms_key) diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm index 1e96cc507e..0136efc3b3 100644 --- a/code/modules/admin/verbs/adminjump.dm +++ b/code/modules/admin/verbs/adminjump.dm @@ -95,7 +95,7 @@ SSblackbox.record_feedback("tally", "admin_verb", 1, "Jump To Key") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -/client/proc/Getmob(mob/M in GLOB.mob_list) +/client/proc/Getmob(mob/M in GLOB.mob_list - GLOB.dummy_mob_list) set category = "Admin" set name = "Get Mob" set desc = "Mob to teleport" diff --git a/code/modules/admin/verbs/deadsay.dm b/code/modules/admin/verbs/deadsay.dm index 54614cf8ef..2fc616d588 100644 --- a/code/modules/admin/verbs/deadsay.dm +++ b/code/modules/admin/verbs/deadsay.dm @@ -27,7 +27,7 @@ if(isnewplayer(M)) continue if (M.stat == DEAD || (M.client && M.client.holder && (M.client.prefs.chat_toggles & CHAT_DEAD))) //admins can toggle deadchat on and off. This is a proc in admin.dm and is only give to Administrators and above - M.show_message(rendered, 2) + to_chat(M, rendered) SSblackbox.record_feedback("tally", "admin_verb", 1, "Dsay") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 9460e71ea0..28fb4a485d 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -110,10 +110,14 @@ GLOBAL_PROTECT(LastAdminCalledProc) GLOBAL_LIST_EMPTY(AdminProcCallSpamPrevention) GLOBAL_PROTECT(AdminProcCallSpamPrevention) -/proc/WrapAdminProcCall(target, procname, list/arguments) +/proc/WrapAdminProcCall(datum/target, procname, list/arguments) if(target && procname == "Del") to_chat(usr, "Calling Del() is not allowed") return + + if(!target.CanProcCall(procname)) + to_chat(usr, "Proccall on [target.type]/proc/[procname] is disallowed!") + return var/current_caller = GLOB.AdminProcCaller var/ckey = usr ? usr.client.ckey : GLOB.AdminProcCaller if(!ckey) @@ -137,7 +141,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) GLOB.AdminProcCaller = null //adv proc call this, ya nerds -/world/proc/WrapAdminProcCall(target, procname, list/arguments) +/world/proc/WrapAdminProcCall(datum/target, procname, list/arguments) if(target == GLOBAL_PROC) return call(procname)(arglist(arguments)) else if(target != world) @@ -308,7 +312,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) var/confirm = input("[choice.key] isn't ghosting right now. Are you sure you want to yank him out of them out of their body and place them in this pAI?", "Spawn pAI Confirmation", "No") in list("Yes", "No") if(confirm != "Yes") return 0 - var/obj/item/device/paicard/card = new(T) + var/obj/item/paicard/card = new(T) var/mob/living/silicon/pai/pai = new(card) pai.name = input(choice, "Enter your pAI name:", "pAI Name", "Personal AI") as text pai.real_name = pai.name @@ -357,7 +361,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) var/typename = "[type]" var/static/list/TYPES_SHORTCUTS = list( /obj/effect/decal/cleanable = "CLEANABLE", - /obj/item/device/radio/headset = "HEADSET", + /obj/item/radio/headset = "HEADSET", /obj/item/clothing/head/helmet/space = "SPESSHELMET", /obj/item/book/manual = "MANUAL", /obj/item/reagent_containers/food/drinks = "DRINK", //longest paths comes first @@ -466,8 +470,8 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) id.update_label() if(worn) - if(istype(worn, /obj/item/device/pda)) - var/obj/item/device/pda/PDA = worn + if(istype(worn, /obj/item/pda)) + var/obj/item/pda/PDA = worn PDA.id = id id.forceMove(PDA) else if(istype(worn, /obj/item/storage/wallet)) @@ -476,7 +480,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) id.forceMove(W) W.update_icon() else - H.equip_to_slot(id,slot_wear_id) + H.equip_to_slot(id,SLOT_WEAR_ID) else alert("Invalid mob") @@ -626,7 +630,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) areas_with_LS.Add(A.type) CHECK_TICK - for(var/obj/item/device/radio/intercom/I in GLOB.machines) + for(var/obj/item/radio/intercom/I in GLOB.machines) var/area/A = get_area(I) if(!A) dat += "Skipped over [I] in invalid location, [I.loc].
    " diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm index 745dd05749..c62ee34dac 100644 --- a/code/modules/admin/verbs/mapping.dm +++ b/code/modules/admin/verbs/mapping.dm @@ -136,7 +136,7 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list( qdel(M) if(intercom_range_display_status) - for(var/obj/item/device/radio/intercom/I in world) + for(var/obj/item/radio/intercom/I in world) for(var/turf/T in orange(7,I)) var/obj/effect/debugging/marker/F = new/obj/effect/debugging/marker(T) if (!(F in view(7,I.loc))) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 83d4f64748..be0b9d04bb 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -1043,6 +1043,30 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits for(var/obj/machinery/shuttle_manipulator/M in GLOB.machines) M.ui_interact(usr) +/client/proc/run_weather() + set category = "Fun" + set name = "Run Weather" + set desc = "Triggers a weather on the z-level you choose." + + if(!holder) + return + + var/weather_type = input("Choose a weather", "Weather") as null|anything in subtypesof(/datum/weather) + if(!weather_type) + return + + var/z_level = input("Z-Level to target? Leave blank to target current Z-Level.", "Z-Level") as num|null + if(!isnum(z_level)) + if(!src.mob) + return + z_level = src.mob.z + + SSweather.run_weather(weather_type, z_level) + + message_admins("[key_name_admin(usr)] started weather of type [weather_type] on the z-level [z_level].") + log_admin("[key_name(usr)] started weather of type [weather_type] on the z-level [z_level].") + SSblackbox.record_feedback("tally", "admin_verb", 1, "Run Weather") + /client/proc/mass_zombie_infection() set category = "Fun" set name = "Mass Zombie Infection" diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm index 72049ad7d1..9ad695aa8b 100644 --- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm @@ -16,7 +16,7 @@ armor = list("melee" = 15, "bullet" = 15, "laser" = 15, "energy" = 15, "bomb" = 15, "bio" = 15, "rad" = 15, "fire" = 70, "acid" = 70) actions_types = list(/datum/action/item_action/hands_free/activate) allowed = list( - /obj/item/device/abductor, + /obj/item/abductor, /obj/item/abductor_baton, /obj/item/melee/baton, /obj/item/gun/energy, @@ -53,7 +53,7 @@ A.UpdateButtonIcon() /obj/item/clothing/suit/armor/abductor/vest/item_action_slot_check(slot, mob/user) - if(slot == slot_wear_suit) //we only give the mob the ability to activate the vest if he's actually wearing it. + if(slot == SLOT_WEAR_SUIT) //we only give the mob the ability to activate the vest if he's actually wearing it. return 1 /obj/item/clothing/suit/armor/abductor/vest/proc/SetDisguise(datum/icon_snapshot/entry) @@ -129,16 +129,16 @@ . = ..() -/obj/item/device/abductor +/obj/item/abductor icon = 'icons/obj/abductor.dmi' -/obj/item/device/abductor/proc/AbductorCheck(user) +/obj/item/abductor/proc/AbductorCheck(user) if(isabductor(user)) return TRUE to_chat(user, "You can't figure how this works!") return FALSE -/obj/item/device/abductor/proc/ScientistCheck(user) +/obj/item/abductor/proc/ScientistCheck(user) if(!AbductorCheck(user)) return FALSE @@ -149,7 +149,7 @@ to_chat(user, "You're not trained to use this!") return FALSE -/obj/item/device/abductor/gizmo +/obj/item/abductor/gizmo name = "science tool" desc = "A dual-mode tool for retrieving specimens and scanning appearances. Scanning can be done through cameras." icon_state = "gizmo_scan" @@ -160,7 +160,7 @@ var/mob/living/marked = null var/obj/machinery/abductor/console/console -/obj/item/device/abductor/gizmo/attack_self(mob/user) +/obj/item/abductor/gizmo/attack_self(mob/user) if(!ScientistCheck(user)) return if(!console) @@ -175,7 +175,7 @@ icon_state = "gizmo_scan" to_chat(user, "You switch the device to [mode==GIZMO_SCAN? "SCAN": "MARK"] MODE") -/obj/item/device/abductor/gizmo/attack(mob/living/M, mob/user) +/obj/item/abductor/gizmo/attack(mob/living/M, mob/user) if(!ScientistCheck(user)) return if(!console) @@ -189,7 +189,7 @@ mark(M, user) -/obj/item/device/abductor/gizmo/afterattack(atom/target, mob/living/user, flag, params) +/obj/item/abductor/gizmo/afterattack(atom/target, mob/living/user, flag, params) if(flag) return if(!ScientistCheck(user)) @@ -204,12 +204,12 @@ if(GIZMO_MARK) mark(target, user) -/obj/item/device/abductor/gizmo/proc/scan(atom/target, mob/living/user) +/obj/item/abductor/gizmo/proc/scan(atom/target, mob/living/user) if(ishuman(target)) console.AddSnapshot(target) to_chat(user, "You scan [target] and add them to the database.") -/obj/item/device/abductor/gizmo/proc/mark(atom/target, mob/living/user) +/obj/item/abductor/gizmo/proc/mark(atom/target, mob/living/user) if(marked == target) to_chat(user, "This specimen is already marked!") return @@ -222,7 +222,7 @@ else prepare(target,user) -/obj/item/device/abductor/gizmo/proc/prepare(atom/target, mob/living/user) +/obj/item/abductor/gizmo/proc/prepare(atom/target, mob/living/user) if(get_dist(target,user)>1) to_chat(user, "You need to be next to the specimen to prepare it for transport!") return @@ -231,13 +231,13 @@ marked = target to_chat(user, "You finish preparing [target] for transport.") -/obj/item/device/abductor/gizmo/Destroy() +/obj/item/abductor/gizmo/Destroy() if(console) console.gizmo = null . = ..() -/obj/item/device/abductor/silencer +/obj/item/abductor/silencer name = "abductor silencer" desc = "A compact device used to shut down communications equipment." icon_state = "silencer" @@ -245,19 +245,19 @@ lefthand_file = 'icons/mob/inhands/antag/abductor_lefthand.dmi' righthand_file = 'icons/mob/inhands/antag/abductor_righthand.dmi' -/obj/item/device/abductor/silencer/attack(mob/living/M, mob/user) +/obj/item/abductor/silencer/attack(mob/living/M, mob/user) if(!AbductorCheck(user)) return radio_off(M, user) -/obj/item/device/abductor/silencer/afterattack(atom/target, mob/living/user, flag, params) +/obj/item/abductor/silencer/afterattack(atom/target, mob/living/user, flag, params) if(flag) return if(!AbductorCheck(user)) return radio_off(target, user) -/obj/item/device/abductor/silencer/proc/radio_off(atom/target, mob/living/user) +/obj/item/abductor/silencer/proc/radio_off(atom/target, mob/living/user) if( !(user in (viewers(7,target))) ) return @@ -270,17 +270,17 @@ to_chat(user, "You silence [M]'s radio devices.") radio_off_mob(M) -/obj/item/device/abductor/silencer/proc/radio_off_mob(mob/living/carbon/human/M) +/obj/item/abductor/silencer/proc/radio_off_mob(mob/living/carbon/human/M) var/list/all_items = M.GetAllContents() for(var/obj/I in all_items) - if(istype(I, /obj/item/device/radio/)) - var/obj/item/device/radio/r = I + if(istype(I, /obj/item/radio/)) + var/obj/item/radio/r = I r.listening = 0 - if(!istype(I, /obj/item/device/radio/headset)) + if(!istype(I, /obj/item/radio/headset)) r.broadcasting = 0 //goddamned headset hacks -/obj/item/device/abductor/mind_device +/obj/item/abductor/mind_device name = "mental interface device" desc = "A dual-mode tool for directly communicating with sentient brains. It can be used to send a direct message to a target, \ or to send a command to a test subject with a charged gland." @@ -290,7 +290,7 @@ righthand_file = 'icons/mob/inhands/antag/abductor_righthand.dmi' var/mode = MIND_DEVICE_MESSAGE -/obj/item/device/abductor/mind_device/attack_self(mob/user) +/obj/item/abductor/mind_device/attack_self(mob/user) if(!ScientistCheck(user)) return @@ -302,7 +302,7 @@ icon_state = "mind_device_message" to_chat(user, "You switch the device to [mode==MIND_DEVICE_MESSAGE? "TRANSMISSION": "COMMAND"] MODE") -/obj/item/device/abductor/mind_device/afterattack(atom/target, mob/living/user, flag, params) +/obj/item/abductor/mind_device/afterattack(atom/target, mob/living/user, flag, params) if(!ScientistCheck(user)) return @@ -312,7 +312,7 @@ if(MIND_DEVICE_MESSAGE) mind_message(target, user) -/obj/item/device/abductor/mind_device/proc/mind_control(atom/target, mob/living/user) +/obj/item/abductor/mind_device/proc/mind_control(atom/target, mob/living/user) if(iscarbon(target)) var/mob/living/carbon/C = target var/obj/item/organ/heart/gland/G = C.getorganslot("heart") @@ -338,14 +338,14 @@ if(QDELETED(G)) return - if(istype(C.get_item_by_slot(slot_head), /obj/item/clothing/head/foilhat)) + if(istype(C.get_item_by_slot(SLOT_HEAD), /obj/item/clothing/head/foilhat)) to_chat(user, "Your target seems to have some sort of protective headgear on, blocking the message from being sent!") return G.mind_control(command, user) to_chat(user, "You send the command to your target.") -/obj/item/device/abductor/mind_device/proc/mind_message(atom/target, mob/living/user) +/obj/item/abductor/mind_device/proc/mind_message(atom/target, mob/living/user) if(isliving(target)) var/mob/living/L = target if(L.stat == DEAD) @@ -362,7 +362,7 @@ log_talk(user,"[key_name(user)] sent an abductor mind message to [L]/[L.ckey]: '[message]'", LOGSAY) -/obj/item/device/firing_pin/abductor +/obj/item/firing_pin/abductor name = "alien firing pin" icon_state = "firing_pin_ayy" desc = "This firing pin is slimy and warm; you can swear you feel it \ @@ -370,14 +370,14 @@ fail_message = "\ Firing error, please contact Command." -/obj/item/device/firing_pin/abductor/pin_auth(mob/living/user) +/obj/item/firing_pin/abductor/pin_auth(mob/living/user) . = isabductor(user) /obj/item/gun/energy/alien name = "alien pistol" desc = "A complicated gun that fires bursts of high-intensity radiation." ammo_type = list(/obj/item/ammo_casing/energy/declone) - pin = /obj/item/device/firing_pin/abductor + pin = /obj/item/firing_pin/abductor icon_state = "alienpistol" item_state = "alienpistol" trigger_guard = TRIGGER_GUARD_ALLOW_ALL @@ -425,7 +425,7 @@ Congratulations! You are now trained for invasive xenobiology research!"} item_state = "wonderprod" lefthand_file = 'icons/mob/inhands/antag/abductor_lefthand.dmi' righthand_file = 'icons/mob/inhands/antag/abductor_righthand.dmi' - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT force = 7 w_class = WEIGHT_CLASS_NORMAL actions_types = list(/datum/action/item_action/toggle_mode) @@ -515,7 +515,7 @@ Congratulations! You are now trained for invasive xenobiology research!"} /obj/item/abductor_baton/proc/SleepAttack(mob/living/L,mob/living/user) if(L.incapacitated(TRUE, TRUE)) - if(istype(L.get_item_by_slot(slot_head), /obj/item/clothing/head/foilhat)) + if(istype(L.get_item_by_slot(SLOT_HEAD), /obj/item/clothing/head/foilhat)) to_chat(user, "The specimen's protective headgear is interfering with the sleep inducement!") L.visible_message("[user] tried to induced sleep in [L] with [src], but their headgear protected them!", \ "You feel a strange wave of heavy drowsiness wash over you, but your headgear deflects most of it!") @@ -527,7 +527,7 @@ Congratulations! You are now trained for invasive xenobiology research!"} L.Sleeping(1200) add_logs(user, L, "put to sleep") else - if(istype(L.get_item_by_slot(slot_head), /obj/item/clothing/head/foilhat)) + if(istype(L.get_item_by_slot(SLOT_HEAD), /obj/item/clothing/head/foilhat)) to_chat(user, "The specimen's protective headgear is completely blocking our sleep inducement methods!") L.visible_message("[user] tried to induce sleep in [L] with [src], but their headgear completely protected them!", \ "Any sense of drowsiness is quickly diminished as your headgear deflects the effects!") @@ -613,20 +613,20 @@ Congratulations! You are now trained for invasive xenobiology research!"} if(BATON_PROBE) to_chat(user, "The baton is in probing mode.") -/obj/item/device/radio/headset/abductor +/obj/item/radio/headset/abductor name = "alien headset" desc = "An advanced alien headset designed to monitor communications of human space stations. Why does it have a microphone? No one knows." icon = 'icons/obj/abductor.dmi' icon_state = "abductor_headset" item_state = "abductor_headset" - keyslot2 = new /obj/item/device/encryptionkey/heads/captain + keyslot2 = new /obj/item/encryptionkey/heads/captain flags_2 = BANG_PROTECT_2 -/obj/item/device/radio/headset/abductor/Initialize(mapload) +/obj/item/radio/headset/abductor/Initialize(mapload) . = ..() make_syndie() -/obj/item/device/radio/headset/abductor/attackby(obj/item/W, mob/user, params) +/obj/item/radio/headset/abductor/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/screwdriver)) return // Stops humans from disassembling abductor headsets. return ..() diff --git a/code/modules/antagonists/abductor/equipment/abduction_outfits.dm b/code/modules/antagonists/abductor/equipment/abduction_outfits.dm index e01afccc5b..8b8851ec18 100644 --- a/code/modules/antagonists/abductor/equipment/abduction_outfits.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_outfits.dm @@ -3,7 +3,7 @@ uniform = /obj/item/clothing/under/color/grey //they're greys gettit shoes = /obj/item/clothing/shoes/combat back = /obj/item/storage/backpack - ears = /obj/item/device/radio/headset/abductor + ears = /obj/item/radio/headset/abductor /datum/outfit/abductor/proc/link_to_console(mob/living/carbon/human/H, team_number) var/datum/antagonist/abductor/A = H.mind.has_antag_datum(/datum/antagonist/abductor) @@ -21,7 +21,7 @@ var/obj/item/storage/backpack/B = locate() in H if(B) - for(var/obj/item/device/abductor/gizmo/G in B.contents) + for(var/obj/item/abductor/gizmo/G in B.contents) console.AddGizmo(G) /datum/outfit/abductor/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) @@ -39,14 +39,14 @@ backpack_contents = list( /obj/item/gun/energy/alien = 1, - /obj/item/device/abductor/silencer = 1 + /obj/item/abductor/silencer = 1 ) /datum/outfit/abductor/scientist name = "Abductor Scientist" backpack_contents = list( - /obj/item/device/abductor/gizmo = 1 + /obj/item/abductor/gizmo = 1 ) /datum/outfit/abductor/scientist/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) diff --git a/code/modules/antagonists/abductor/equipment/gland.dm b/code/modules/antagonists/abductor/equipment/gland.dm index c551509cc7..1e53f778d6 100644 --- a/code/modules/antagonists/abductor/equipment/gland.dm +++ b/code/modules/antagonists/abductor/equipment/gland.dm @@ -122,7 +122,7 @@ owner.grant_language(/datum/language/slime) /obj/item/organ/heart/gland/slime/activate() - to_chat(owner, "You feel nauseous!") + to_chat(owner, "You feel nauseated!") owner.vomit(20) var/mob/living/simple_animal/slime/Slime = new(get_turf(owner), "grey") @@ -153,7 +153,7 @@ H.confused += 15 H.adjustBrainLoss(10, 160) if(3) - H.hallucination += 80 + H.hallucination += 60 /obj/item/organ/heart/gland/pop cooldown_low = 900 @@ -272,10 +272,10 @@ /obj/item/organ/heart/gland/electric/Insert(mob/living/carbon/M, special = 0) ..() - owner.add_trait(TRAIT_SHOCKIMMUNE, "abductor_gland") + owner.add_trait(TRAIT_SHOCKIMMUNE, ORGAN_TRAIT) /obj/item/organ/heart/gland/electric/Remove(mob/living/carbon/M, special = 0) - owner.remove_trait(TRAIT_SHOCKIMMUNE, "abductor_gland") + owner.remove_trait(TRAIT_SHOCKIMMUNE, ORGAN_TRAIT) ..() /obj/item/organ/heart/gland/electric/activate() diff --git a/code/modules/antagonists/abductor/machinery/console.dm b/code/modules/antagonists/abductor/machinery/console.dm index 1b11094d43..e629a0b47d 100644 --- a/code/modules/antagonists/abductor/machinery/console.dm +++ b/code/modules/antagonists/abductor/machinery/console.dm @@ -18,7 +18,7 @@ icon_state = "console" density = TRUE anchored = TRUE - var/obj/item/device/abductor/gizmo/gizmo + var/obj/item/abductor/gizmo/gizmo var/obj/item/clothing/suit/armor/abductor/vest/vest var/obj/machinery/abductor/experiment/experiment var/obj/machinery/abductor/pad/pad @@ -106,13 +106,13 @@ if("helmet") Dispense(/obj/item/clothing/head/helmet/abductor) if("silencer") - Dispense(/obj/item/device/abductor/silencer) + Dispense(/obj/item/abductor/silencer) if("tool") - Dispense(/obj/item/device/abductor/gizmo) + Dispense(/obj/item/abductor/gizmo) if("vest") Dispense(/obj/item/clothing/suit/armor/abductor/vest) if("mind_device") - Dispense(/obj/item/device/abductor/mind_device,cost=2) + Dispense(/obj/item/abductor/mind_device,cost=2) updateUsrDialog() /obj/machinery/abductor/console/proc/TeleporterRetrieve() @@ -167,7 +167,7 @@ c.console = src /obj/machinery/abductor/console/proc/AddSnapshot(mob/living/carbon/human/target) - if(istype(target.get_item_by_slot(slot_head), /obj/item/clothing/head/foilhat)) + if(istype(target.get_item_by_slot(SLOT_HEAD), /obj/item/clothing/head/foilhat)) say("Subject wearing specialized protective headgear, unable to get a proper scan!") return var/datum/icon_snapshot/entry = new @@ -181,7 +181,7 @@ return disguises[entry.name] = entry -/obj/machinery/abductor/console/proc/AddGizmo(obj/item/device/abductor/gizmo/G) +/obj/machinery/abductor/console/proc/AddGizmo(obj/item/abductor/gizmo/G) if(G == gizmo && G.console == src) return FALSE @@ -205,7 +205,7 @@ return TRUE /obj/machinery/abductor/console/attackby(obj/O, mob/user, params) - if(istype(O, /obj/item/device/abductor/gizmo) && AddGizmo(O)) + if(istype(O, /obj/item/abductor/gizmo) && AddGizmo(O)) to_chat(user, "You link the tool to the console.") else if(istype(O, /obj/item/clothing/suit/armor/abductor/vest) && AddVest(O)) to_chat(user, "You link the vest to the console.") diff --git a/code/modules/antagonists/blob/blob/theblob.dm b/code/modules/antagonists/blob/blob/theblob.dm index e57ce9d1d9..6fda7df130 100644 --- a/code/modules/antagonists/blob/blob/theblob.dm +++ b/code/modules/antagonists/blob/blob/theblob.dm @@ -227,7 +227,7 @@ return 15 /obj/structure/blob/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/device/analyzer)) + if(istype(I, /obj/item/analyzer)) user.changeNext_move(CLICK_CD_MELEE) to_chat(user, "The analyzer beeps once, then reports:
    ") SEND_SOUND(user, sound('sound/machines/ping.ogg')) diff --git a/code/modules/antagonists/changeling/cellular_emporium.dm b/code/modules/antagonists/changeling/cellular_emporium.dm index df92212181..2a37a3885d 100644 --- a/code/modules/antagonists/changeling/cellular_emporium.dm +++ b/code/modules/antagonists/changeling/cellular_emporium.dm @@ -25,6 +25,7 @@ var/can_readapt = changeling.canrespec var/genetic_points_remaining = changeling.geneticpoints var/absorbed_dna_count = changeling.absorbedcount + var/true_absorbs = changeling.trueabsorbs data["can_readapt"] = can_readapt data["genetic_points_remaining"] = genetic_points_remaining @@ -45,8 +46,9 @@ AL["helptext"] = initial(ability.helptext) AL["owned"] = changeling.has_sting(ability) var/req_dna = initial(ability.req_dna) + var/req_absorbs = initial(ability.req_absorbs) AL["dna_cost"] = dna_cost - AL["can_purchase"] = ((req_dna <= absorbed_dna_count) && (dna_cost <= genetic_points_remaining)) + AL["can_purchase"] = ((req_absorbs <= true_absorbs) && (req_dna <= absorbed_dna_count) && (dna_cost <= genetic_points_remaining)) abilities += list(AL) diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm index fae342e93d..a42ae6ef4f 100644 --- a/code/modules/antagonists/changeling/changeling.dm +++ b/code/modules/antagonists/changeling/changeling.dm @@ -19,6 +19,7 @@ var/datum/changelingprofile/first_prof = null var/dna_max = 6 //How many extra DNA strands the changeling can store for transformation. var/absorbedcount = 0 + var/trueabsorbs = 0//dna gained using absorb, not dna sting var/chem_charges = 20 var/chem_storage = 75 var/chem_recharge_rate = 1 @@ -352,7 +353,10 @@ if(GLOB.changeling_team_objective_type) var/datum/objective/changeling_team_objective/team_objective = new GLOB.changeling_team_objective_type team_objective.owner = owner - objectives += team_objective + if(team_objective.prepare())//Setting up succeeded + objectives += team_objective + else + qdel(team_objective) return /datum/antagonist/changeling/proc/forge_objectives() diff --git a/code/modules/antagonists/changeling/changeling_power.dm b/code/modules/antagonists/changeling/changeling_power.dm index 0b4f015824..6ae73336d4 100644 --- a/code/modules/antagonists/changeling/changeling_power.dm +++ b/code/modules/antagonists/changeling/changeling_power.dm @@ -1,78 +1,81 @@ -/* - * Don't use the apostrophe in name or desc. Causes script errors. - * TODO: combine atleast some of the functionality with /proc_holder/spell - */ - -/obj/effect/proc_holder/changeling - panel = "Changeling" - name = "Prototype Sting" - desc = "" // Fluff - var/helptext = "" // Details - var/chemical_cost = 0 // negative chemical cost is for passive abilities (chemical glands) - var/dna_cost = -1 //cost of the sting in dna points. 0 = auto-purchase, -1 = cannot be purchased - var/req_dna = 0 //amount of dna needed to use this ability. Changelings always have atleast 1 - var/req_human = 0 //if you need to be human to use this ability - var/req_stat = CONSCIOUS // CONSCIOUS, UNCONSCIOUS or DEAD - var/always_keep = 0 // important for abilities like revive that screw you if you lose them. - var/ignores_fakedeath = FALSE // usable with the FAKEDEATH flag - - -/obj/effect/proc_holder/changeling/proc/on_purchase(mob/user, is_respec) - if(!is_respec) - SSblackbox.record_feedback("tally", "changeling_power_purchase", 1, name) - -/obj/effect/proc_holder/changeling/proc/on_refund(mob/user) - return - -/obj/effect/proc_holder/changeling/Click() - var/mob/user = usr - if(!user || !user.mind || !user.mind.has_antag_datum(/datum/antagonist/changeling)) - return - try_to_sting(user) - -/obj/effect/proc_holder/changeling/proc/try_to_sting(mob/user, mob/target) - if(!can_sting(user, target)) - return - var/datum/antagonist/changeling/c = user.mind.has_antag_datum(/datum/antagonist/changeling) - if(sting_action(user, target)) - SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("[name]")) - sting_feedback(user, target) - c.chem_charges -= chemical_cost - -/obj/effect/proc_holder/changeling/proc/sting_action(mob/user, mob/target) - return 0 - -/obj/effect/proc_holder/changeling/proc/sting_feedback(mob/user, mob/target) - return 0 - -//Fairly important to remember to return 1 on success >.< -/obj/effect/proc_holder/changeling/proc/can_sting(mob/living/user, mob/target) - if(!ishuman(user) && !ismonkey(user)) //typecast everything from mob to carbon from this point onwards - return 0 - if(req_human && !ishuman(user)) - to_chat(user, "We cannot do that in this form!") - return 0 - var/datum/antagonist/changeling/c = user.mind.has_antag_datum(/datum/antagonist/changeling) - if(c.chem_charges < chemical_cost) - to_chat(user, "We require at least [chemical_cost] unit\s of chemicals to do that!") - return 0 - if(c.absorbedcount < req_dna) - to_chat(user, "We require at least [req_dna] sample\s of compatible DNA.") - return 0 - if(req_stat < user.stat) - to_chat(user, "We are incapacitated.") - return 0 - if((user.has_trait(TRAIT_FAKEDEATH)) && (!ignores_fakedeath)) - to_chat(user, "We are incapacitated.") - return 0 - return 1 - -//used in /mob/Stat() -/obj/effect/proc_holder/changeling/proc/can_be_used_by(mob/user) - if(!user || QDELETED(user)) - return 0 - if(!ishuman(user) && !ismonkey(user)) - return 0 - if(req_human && !ishuman(user)) - return 0 - return 1 +/* + * Don't use the apostrophe in name or desc. Causes script errors. + * TODO: combine atleast some of the functionality with /proc_holder/spell + */ + +/obj/effect/proc_holder/changeling + panel = "Changeling" + name = "Prototype Sting" + desc = "" // Fluff + var/helptext = "" // Details + var/chemical_cost = 0 // negative chemical cost is for passive abilities (chemical glands) + var/dna_cost = -1 //cost of the sting in dna points. 0 = auto-purchase, -1 = cannot be purchased + var/req_dna = 0 //amount of dna needed to use this ability. Changelings always have atleast 1 + var/req_human = 0 //if you need to be human to use this ability + var/req_absorbs = 0 //similar to req_dna, but only gained from absorbing, not DNA sting + var/req_stat = CONSCIOUS // CONSCIOUS, UNCONSCIOUS or DEAD + var/always_keep = 0 // important for abilities like revive that screw you if you lose them. + var/ignores_fakedeath = FALSE // usable with the FAKEDEATH flag + + +/obj/effect/proc_holder/changeling/proc/on_purchase(mob/user, is_respec) + if(!is_respec) + SSblackbox.record_feedback("tally", "changeling_power_purchase", 1, name) + +/obj/effect/proc_holder/changeling/proc/on_refund(mob/user) + return + +/obj/effect/proc_holder/changeling/Click() + var/mob/user = usr + if(!user || !user.mind || !user.mind.has_antag_datum(/datum/antagonist/changeling)) + return + try_to_sting(user) + +/obj/effect/proc_holder/changeling/proc/try_to_sting(mob/user, mob/target) + if(!can_sting(user, target)) + return + var/datum/antagonist/changeling/c = user.mind.has_antag_datum(/datum/antagonist/changeling) + if(sting_action(user, target)) + SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("[name]")) + sting_feedback(user, target) + c.chem_charges -= chemical_cost + +/obj/effect/proc_holder/changeling/proc/sting_action(mob/user, mob/target) + return 0 + +/obj/effect/proc_holder/changeling/proc/sting_feedback(mob/user, mob/target) + return 0 + +//Fairly important to remember to return 1 on success >.< +/obj/effect/proc_holder/changeling/proc/can_sting(mob/living/user, mob/target) + if(!ishuman(user) && !ismonkey(user)) //typecast everything from mob to carbon from this point onwards + return 0 + if(req_human && !ishuman(user)) + to_chat(user, "We cannot do that in this form!") + return 0 + var/datum/antagonist/changeling/c = user.mind.has_antag_datum(/datum/antagonist/changeling) + if(c.chem_charges < chemical_cost) + to_chat(user, "We require at least [chemical_cost] unit\s of chemicals to do that!") + return 0 + if(c.absorbedcount < req_dna) + to_chat(user, "We require at least [req_dna] sample\s of compatible DNA.") + return 0 + if(c.trueabsorbs < req_absorbs) + to_chat(user, "We require at least [req_absorbs] sample\s of DNA gained through our Absorb ability.") + if(req_stat < user.stat) + to_chat(user, "We are incapacitated.") + return 0 + if((user.has_trait(TRAIT_FAKEDEATH)) && (!ignores_fakedeath)) + to_chat(user, "We are incapacitated.") + return 0 + return 1 + +//used in /mob/Stat() +/obj/effect/proc_holder/changeling/proc/can_be_used_by(mob/user) + if(QDELETED(user)) + return FALSE + if(!ishuman(user) && !ismonkey(user)) + return FALSE + if(req_human && !ishuman(user)) + return FALSE + return TRUE diff --git a/code/modules/antagonists/changeling/powers/absorb.dm b/code/modules/antagonists/changeling/powers/absorb.dm index c3d9d4e9f0..047056cac4 100644 --- a/code/modules/antagonists/changeling/powers/absorb.dm +++ b/code/modules/antagonists/changeling/powers/absorb.dm @@ -1,120 +1,121 @@ -/obj/effect/proc_holder/changeling/absorbDNA - name = "Absorb DNA" - desc = "Absorb the DNA of our victim." - chemical_cost = 0 - dna_cost = 0 - req_human = 1 - -/obj/effect/proc_holder/changeling/absorbDNA/can_sting(mob/living/carbon/user) - if(!..()) - return - - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - if(changeling.isabsorbing) - to_chat(user, "We are already absorbing!") - return - - if(!user.pulling || !iscarbon(user.pulling)) - to_chat(user, "We must be grabbing a creature to absorb them!") - return - if(user.grab_state <= GRAB_NECK) - to_chat(user, "We must have a tighter grip to absorb this creature!") - return - - var/mob/living/carbon/target = user.pulling - return changeling.can_absorb_dna(target) - - - -/obj/effect/proc_holder/changeling/absorbDNA/sting_action(mob/user) - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - var/mob/living/carbon/human/target = user.pulling - changeling.isabsorbing = 1 - for(var/i in 1 to 3) - switch(i) - if(1) - to_chat(user, "This creature is compatible. We must hold still...") - if(2) - user.visible_message("[user] extends a proboscis!", "We extend a proboscis.") - if(3) - user.visible_message("[user] stabs [target] with the proboscis!", "We stab [target] with the proboscis.") - to_chat(target, "You feel a sharp stabbing pain!") - target.take_overall_damage(40) - - SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("Absorb DNA", "[i]")) - if(!do_mob(user, target, 150)) - to_chat(user, "Our absorption of [target] has been interrupted!") - changeling.isabsorbing = 0 - return - - SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("Absorb DNA", "4")) - user.visible_message("[user] sucks the fluids from [target]!", "We have absorbed [target].") - to_chat(target, "You are absorbed by the changeling!") - - if(!changeling.has_dna(target.dna)) - changeling.add_new_profile(target) - - if(user.nutrition < NUTRITION_LEVEL_WELL_FED) - user.nutrition = min((user.nutrition + target.nutrition), NUTRITION_LEVEL_WELL_FED) - - if(target.mind)//if the victim has got a mind - // Absorb a lizard, speak Draconic. - user.copy_known_languages_from(target) - - target.mind.show_memory(user, 0) //I can read your mind, kekeke. Output all their notes. - - //Some of target's recent speech, so the changeling can attempt to imitate them better. - //Recent as opposed to all because rounds tend to have a LOT of text. - var/list/recent_speech = list() - - var/list/say_log = target.logging[INDIVIDUAL_SAY_LOG] - - if(LAZYLEN(say_log) > LING_ABSORB_RECENT_SPEECH) - recent_speech = say_log.Copy(say_log.len-LING_ABSORB_RECENT_SPEECH+1,0) //0 so len-LING_ARS+1 to end of list - else - for(var/spoken_memory in say_log) - if(recent_speech.len >= LING_ABSORB_RECENT_SPEECH) - break - recent_speech[spoken_memory] = say_log[spoken_memory] - - if(recent_speech.len) - changeling.antag_memory += "Some of [target]'s speech patterns, we should study these to better impersonate them!
    " - to_chat(user, "Some of [target]'s speech patterns, we should study these to better impersonate them!") - for(var/spoken_memory in recent_speech) - changeling.antag_memory += "\"[recent_speech[spoken_memory]]\"
    " - to_chat(user, "\"[recent_speech[spoken_memory]]\"") - changeling.antag_memory += "We have no more knowledge of [target]'s speech patterns.
    " - to_chat(user, "We have no more knowledge of [target]'s speech patterns.") - - - var/datum/antagonist/changeling/target_ling = target.mind.has_antag_datum(/datum/antagonist/changeling) - if(target_ling)//If the target was a changeling, suck out their extra juice and objective points! - to_chat(user, "[target] was one of us. We have absorbed their power.") - target_ling.remove_changeling_powers() - changeling.geneticpoints += round(target_ling.geneticpoints/2) - target_ling.geneticpoints = 0 - target_ling.canrespec = 0 - changeling.chem_storage += round(target_ling.chem_storage/2) - changeling.chem_charges += min(target_ling.chem_charges, changeling.chem_storage) - target_ling.chem_charges = 0 - target_ling.chem_storage = 0 - changeling.absorbedcount += (target_ling.absorbedcount) - target_ling.stored_profiles.len = 1 - target_ling.absorbedcount = 0 - - - changeling.chem_charges=min(changeling.chem_charges+10, changeling.chem_storage) - - changeling.isabsorbing = 0 - changeling.canrespec = 1 - - target.death(0) - target.Drain() - return TRUE - - - -//Absorbs the target DNA. -//datum/changeling/proc/absorb_dna(mob/living/carbon/T, mob/user) - -//datum/changeling/proc/store_dna(datum/dna/new_dna, mob/user) +/obj/effect/proc_holder/changeling/absorbDNA + name = "Absorb DNA" + desc = "Absorb the DNA of our victim." + chemical_cost = 0 + dna_cost = 0 + req_human = 1 + +/obj/effect/proc_holder/changeling/absorbDNA/can_sting(mob/living/carbon/user) + if(!..()) + return + + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + if(changeling.isabsorbing) + to_chat(user, "We are already absorbing!") + return + + if(!user.pulling || !iscarbon(user.pulling)) + to_chat(user, "We must be grabbing a creature to absorb them!") + return + if(user.grab_state <= GRAB_NECK) + to_chat(user, "We must have a tighter grip to absorb this creature!") + return + + var/mob/living/carbon/target = user.pulling + return changeling.can_absorb_dna(target) + + + +/obj/effect/proc_holder/changeling/absorbDNA/sting_action(mob/user) + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + var/mob/living/carbon/human/target = user.pulling + changeling.isabsorbing = 1 + for(var/i in 1 to 3) + switch(i) + if(1) + to_chat(user, "This creature is compatible. We must hold still...") + if(2) + user.visible_message("[user] extends a proboscis!", "We extend a proboscis.") + if(3) + user.visible_message("[user] stabs [target] with the proboscis!", "We stab [target] with the proboscis.") + to_chat(target, "You feel a sharp stabbing pain!") + target.take_overall_damage(40) + + SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("Absorb DNA", "[i]")) + if(!do_mob(user, target, 150)) + to_chat(user, "Our absorption of [target] has been interrupted!") + changeling.isabsorbing = 0 + return + + SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("Absorb DNA", "4")) + user.visible_message("[user] sucks the fluids from [target]!", "We have absorbed [target].") + to_chat(target, "You are absorbed by the changeling!") + + if(!changeling.has_dna(target.dna)) + changeling.add_new_profile(target) + changeling.trueabsorbs++ + + if(user.nutrition < NUTRITION_LEVEL_WELL_FED) + user.nutrition = min((user.nutrition + target.nutrition), NUTRITION_LEVEL_WELL_FED) + + if(target.mind)//if the victim has got a mind + // Absorb a lizard, speak Draconic. + user.copy_known_languages_from(target) + + target.mind.show_memory(user, 0) //I can read your mind, kekeke. Output all their notes. + + //Some of target's recent speech, so the changeling can attempt to imitate them better. + //Recent as opposed to all because rounds tend to have a LOT of text. + var/list/recent_speech = list() + + var/list/say_log = target.logging[INDIVIDUAL_SAY_LOG] + + if(LAZYLEN(say_log) > LING_ABSORB_RECENT_SPEECH) + recent_speech = say_log.Copy(say_log.len-LING_ABSORB_RECENT_SPEECH+1,0) //0 so len-LING_ARS+1 to end of list + else + for(var/spoken_memory in say_log) + if(recent_speech.len >= LING_ABSORB_RECENT_SPEECH) + break + recent_speech[spoken_memory] = say_log[spoken_memory] + + if(recent_speech.len) + changeling.antag_memory += "Some of [target]'s speech patterns, we should study these to better impersonate them!
    " + to_chat(user, "Some of [target]'s speech patterns, we should study these to better impersonate them!") + for(var/spoken_memory in recent_speech) + changeling.antag_memory += "\"[recent_speech[spoken_memory]]\"
    " + to_chat(user, "\"[recent_speech[spoken_memory]]\"") + changeling.antag_memory += "We have no more knowledge of [target]'s speech patterns.
    " + to_chat(user, "We have no more knowledge of [target]'s speech patterns.") + + + var/datum/antagonist/changeling/target_ling = target.mind.has_antag_datum(/datum/antagonist/changeling) + if(target_ling)//If the target was a changeling, suck out their extra juice and objective points! + to_chat(user, "[target] was one of us. We have absorbed their power.") + target_ling.remove_changeling_powers() + changeling.geneticpoints += round(target_ling.geneticpoints/2) + target_ling.geneticpoints = 0 + target_ling.canrespec = 0 + changeling.chem_storage += round(target_ling.chem_storage/2) + changeling.chem_charges += min(target_ling.chem_charges, changeling.chem_storage) + target_ling.chem_charges = 0 + target_ling.chem_storage = 0 + changeling.absorbedcount += (target_ling.absorbedcount) + target_ling.stored_profiles.len = 1 + target_ling.absorbedcount = 0 + + + changeling.chem_charges=min(changeling.chem_charges+10, changeling.chem_storage) + + changeling.isabsorbing = 0 + changeling.canrespec = 1 + + target.death(0) + target.Drain() + return TRUE + + + +//Absorbs the target DNA. +//datum/changeling/proc/absorb_dna(mob/living/carbon/T, mob/user) + +//datum/changeling/proc/store_dna(datum/dna/new_dna, mob/user) diff --git a/code/modules/antagonists/changeling/powers/biodegrade.dm b/code/modules/antagonists/changeling/powers/biodegrade.dm index dbb0e3a88a..1e8eaed383 100644 --- a/code/modules/antagonists/changeling/powers/biodegrade.dm +++ b/code/modules/antagonists/changeling/powers/biodegrade.dm @@ -13,7 +13,7 @@ return 0 if(user.handcuffed) - var/obj/O = user.get_item_by_slot(slot_handcuffed) + var/obj/O = user.get_item_by_slot(SLOT_HANDCUFFED) if(!istype(O)) return 0 user.visible_message("[user] vomits a glob of acid on [user.p_their()] [O]!", \ @@ -23,7 +23,7 @@ used = TRUE if(user.wear_suit && user.wear_suit.breakouttime && !used) - var/obj/item/clothing/suit/S = user.get_item_by_slot(slot_wear_suit) + var/obj/item/clothing/suit/S = user.get_item_by_slot(SLOT_WEAR_SUIT) if(!istype(S)) return 0 user.visible_message("[user] vomits a glob of acid across the front of [user.p_their()] [S]!", \ diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm index e3fb55fa42..72826d086f 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -119,8 +119,8 @@ user.dropItemToGround(user.head) user.dropItemToGround(user.wear_suit) - user.equip_to_slot_if_possible(new suit_type(user), slot_wear_suit, 1, 1, 1) - user.equip_to_slot_if_possible(new helmet_type(user), slot_head, 1, 1, 1) + user.equip_to_slot_if_possible(new suit_type(user), SLOT_WEAR_SUIT, 1, 1, 1) + user.equip_to_slot_if_possible(new helmet_type(user), SLOT_HEAD, 1, 1, 1) var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) changeling.chem_recharge_slowdown += recharge_slowdown @@ -445,8 +445,9 @@ name = "flesh mass" icon_state = "lingspacesuit" desc = "A huge, bulky mass of pressure and temperature-resistant organic tissue, evolved to facilitate space travel." - flags_1 = STOPSPRESSUREDMAGE_1 | NODROP_1 | DROPDEL_1 //Not THICKMATERIAL_1 because it's organic tissue, so if somebody tries to inject something into it, it still ends up in your blood. (also balance but muh fluff) - allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/oxygen) + flags_1 = NODROP_1 | DROPDEL_1 + clothing_flags = STOPSPRESSUREDAMAGE //Not THICKMATERIAL because it's organic tissue, so if somebody tries to inject something into it, it still ends up in your blood. (also balance but muh fluff) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/oxygen) armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 90) //No armor at all. /obj/item/clothing/suit/space/changeling/Initialize() @@ -464,7 +465,8 @@ name = "flesh mass" icon_state = "lingspacehelmet" desc = "A covering of pressure and temperature-resistant organic tissue with a glass-like chitin front." - flags_1 = STOPSPRESSUREDMAGE_1 | NODROP_1 | DROPDEL_1 //Again, no THICKMATERIAL_1. + flags_1 = NODROP_1 | DROPDEL_1 + clothing_flags = STOPSPRESSUREDAMAGE armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 90) flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH diff --git a/code/modules/antagonists/changeling/powers/revive.dm b/code/modules/antagonists/changeling/powers/revive.dm index 4fb28b4904..d9c1ca7221 100644 --- a/code/modules/antagonists/changeling/powers/revive.dm +++ b/code/modules/antagonists/changeling/powers/revive.dm @@ -29,8 +29,12 @@ return TRUE /obj/effect/proc_holder/changeling/revive/can_be_used_by(mob/living/user) + . = ..() + if(!.) + return + if(user.has_trait(CHANGELING_DRAIN) || ((user.stat != DEAD) && !(user.has_trait(TRAIT_FAKEDEATH)))) var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) changeling.purchasedpowers -= src - return 0 - . = ..() + return FALSE + diff --git a/code/modules/antagonists/changeling/powers/spiders.dm b/code/modules/antagonists/changeling/powers/spiders.dm index b378f18c47..685767f601 100644 --- a/code/modules/antagonists/changeling/powers/spiders.dm +++ b/code/modules/antagonists/changeling/powers/spiders.dm @@ -1,12 +1,12 @@ -/obj/effect/proc_holder/changeling/spiders - name = "Spread Infestation" - desc = "Our form divides, creating arachnids which will grow into deadly beasts." - helptext = "The spiders are thoughtless creatures, and may attack their creators when fully grown. Requires at least 5 DNA absorptions." - chemical_cost = 45 - dna_cost = 1 - req_dna = 5 - -//Makes some spiderlings. Good for setting traps and causing general trouble. -/obj/effect/proc_holder/changeling/spiders/sting_action(mob/user) - spawn_atom_to_turf(/obj/structure/spider/spiderling/hunter, user, 2, FALSE) - return TRUE +/obj/effect/proc_holder/changeling/spiders + name = "Spread Infestation" + desc = "Our form divides, creating arachnids which will grow into deadly beasts." + helptext = "The spiders are thoughtless creatures, and may attack their creators when fully grown. Requires at least 3 DNA gained through Absorb, and not through DNA sting." + chemical_cost = 45 + dna_cost = 1 + req_absorbs = 3 + +//Makes some spiderlings. Good for setting traps and causing general trouble. +/obj/effect/proc_holder/changeling/spiders/sting_action(mob/user) + spawn_atom_to_turf(/obj/structure/spider/spiderling/hunter, user, 2, FALSE) + return TRUE diff --git a/code/modules/antagonists/changeling/powers/tiny_prick.dm b/code/modules/antagonists/changeling/powers/tiny_prick.dm index 10b86ac1ad..6e15334305 100644 --- a/code/modules/antagonists/changeling/powers/tiny_prick.dm +++ b/code/modules/antagonists/changeling/powers/tiny_prick.dm @@ -214,19 +214,19 @@ /obj/effect/proc_holder/changeling/sting/LSD name = "Hallucination Sting" desc = "Causes terror in the target." - helptext = "We evolve the ability to sting a target with a powerful hallucinogenic chemical. The target does not notice they have been stung, and the effect occurs after 30 to 60 seconds." + helptext = "We evolve the ability to sting a target with a powerful hallucinogenic chemical. The target does not notice they have been stung, and the effect begins after a few seconds." sting_icon = "sting_lsd" chemical_cost = 10 dna_cost = 1 /obj/effect/proc_holder/changeling/sting/LSD/sting_action(mob/user, mob/living/carbon/target) add_logs(user, target, "stung", "LSD sting") - addtimer(CALLBACK(src, .proc/hallucination_time, target), rand(300,600)) + addtimer(CALLBACK(src, .proc/hallucination_time, target), rand(100,200)) return TRUE /obj/effect/proc_holder/changeling/sting/LSD/proc/hallucination_time(mob/living/carbon/target) if(target) - target.hallucination = max(400, target.hallucination) + target.hallucination = max(90, target.hallucination) /obj/effect/proc_holder/changeling/sting/cryo name = "Cryogenic Sting" diff --git a/code/modules/antagonists/clockcult/clock_effects/city_of_cogs_rift.dm b/code/modules/antagonists/clockcult/clock_effects/city_of_cogs_rift.dm index 44c86c7b78..e318126caf 100644 --- a/code/modules/antagonists/clockcult/clock_effects/city_of_cogs_rift.dm +++ b/code/modules/antagonists/clockcult/clock_effects/city_of_cogs_rift.dm @@ -72,6 +72,6 @@ var/mob/living/L = AM L.overlay_fullscreen("flash", /obj/screen/fullscreen/flash/static) L.clear_fullscreen("flash", 5) - var/obj/item/device/transfer_valve/TTV = locate() in L.GetAllContents() + var/obj/item/transfer_valve/TTV = locate() in L.GetAllContents() if(TTV) to_chat(L, "The air resonates with the Ark's presence; your explosives will be significantly dampened here!") diff --git a/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm index 8b018fa6d3..63de6b8f72 100644 --- a/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm +++ b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm @@ -21,23 +21,23 @@ /obj/item/clothing/head/helmet/clockwork/ratvar_act() if(GLOB.ratvar_awakens) armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) - flags_1 |= STOPSPRESSUREDMAGE_1 + clothing_flags |= STOPSPRESSUREDAMAGE max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT else if(GLOB.ratvar_approaches) armor = list("melee" = 70, "bullet" = 80, "laser" = -15, "energy" = 25, "bomb" = 70, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) - flags_1 |= STOPSPRESSUREDMAGE_1 + clothing_flags |= STOPSPRESSUREDAMAGE max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT else armor = list("melee" = 60, "bullet" = 70, "laser" = -25, "energy" = 0, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) - flags_1 &= ~STOPSPRESSUREDMAGE_1 + clothing_flags &= ~STOPSPRESSUREDAMAGE max_heat_protection_temperature = initial(max_heat_protection_temperature) min_cold_protection_temperature = initial(min_cold_protection_temperature) /obj/item/clothing/head/helmet/clockwork/equipped(mob/living/user, slot) ..() - if(slot == slot_head && !is_servant_of_ratvar(user)) + if(slot == SLOT_HEAD && !is_servant_of_ratvar(user)) if(!iscultist(user)) to_chat(user, "\"Now now, this is for my servants, not you.\"") user.visible_message("As [user] puts [src] on, it flickers off their head!", "The helmet flickers off your head, leaving only nausea!") @@ -68,7 +68,7 @@ heat_protection = CHEST|GROIN|LEGS resistance_flags = FIRE_PROOF | ACID_PROOF armor = list("melee" = 60, "bullet" = 70, "laser" = -25, "energy" = 0, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) - allowed = list(/obj/item/clockwork, /obj/item/clothing/glasses/wraith_spectacles, /obj/item/clothing/glasses/judicial_visor, /obj/item/device/mmi/posibrain/soul_vessel) + allowed = list(/obj/item/clockwork, /obj/item/clothing/glasses/wraith_spectacles, /obj/item/clothing/glasses/judicial_visor, /obj/item/mmi/posibrain/soul_vessel) /obj/item/clothing/suit/armor/clockwork/Initialize() . = ..() @@ -82,17 +82,17 @@ /obj/item/clothing/suit/armor/clockwork/ratvar_act() if(GLOB.ratvar_awakens) armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) - flags_1 |= STOPSPRESSUREDMAGE_1 + clothing_flags |= STOPSPRESSUREDAMAGE max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT else if(GLOB.ratvar_approaches) armor = list("melee" = 70, "bullet" = 80, "laser" = -15, "energy" = 25, "bomb" = 70, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) - flags_1 |= STOPSPRESSUREDMAGE_1 + clothing_flags |= STOPSPRESSUREDAMAGE max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT else armor = list("melee" = 60, "bullet" = 70, "laser" = -25, "energy" = 0, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) - flags_1 &= ~STOPSPRESSUREDMAGE_1 + clothing_flags &= ~STOPSPRESSUREDAMAGE max_heat_protection_temperature = initial(max_heat_protection_temperature) min_cold_protection_temperature = initial(min_cold_protection_temperature) @@ -103,7 +103,7 @@ /obj/item/clothing/suit/armor/clockwork/equipped(mob/living/user, slot) ..() - if(slot == slot_wear_suit && !is_servant_of_ratvar(user)) + if(slot == SLOT_WEAR_SUIT && !is_servant_of_ratvar(user)) if(!iscultist(user)) to_chat(user, "\"Now now, this is for my servants, not you.\"") user.visible_message("As [user] puts [src] on, it flickers off their body!", "The curiass flickers off your body, leaving only nausea!") @@ -148,12 +148,12 @@ /obj/item/clothing/gloves/clockwork/ratvar_act() if(GLOB.ratvar_awakens) armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) - flags_1 |= STOPSPRESSUREDMAGE_1 + clothing_flags |= STOPSPRESSUREDAMAGE max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT else armor = list("melee" = 80, "bullet" = 70, "laser" = -25, "energy" = 0, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) - flags_1 &= ~STOPSPRESSUREDMAGE_1 + clothing_flags &= ~STOPSPRESSUREDAMAGE max_heat_protection_temperature = initial(max_heat_protection_temperature) min_cold_protection_temperature = initial(min_cold_protection_temperature) @@ -164,7 +164,7 @@ /obj/item/clothing/gloves/clockwork/equipped(mob/living/user, slot) ..() - if(slot == slot_gloves && !is_servant_of_ratvar(user)) + if(slot == SLOT_GLOVES && !is_servant_of_ratvar(user)) if(!iscultist(user)) to_chat(user, "\"Now now, this is for my servants, not you.\"") user.visible_message("As [user] puts [src] on, it flickers off their arms!", "The gauntlets flicker off your arms, leaving only nausea!") @@ -203,9 +203,9 @@ /obj/item/clothing/shoes/clockwork/ratvar_act() if(GLOB.ratvar_awakens) - flags_1 |= NOSLIP_1 + clothing_flags |= NOSLIP else - flags_1 &= ~NOSLIP_1 + clothing_flags &= ~NOSLIP /obj/item/clothing/shoes/clockwork/mob_can_equip(mob/M, mob/equipper, slot, disable_warning = 0) if(equipper && !is_servant_of_ratvar(equipper)) @@ -214,7 +214,7 @@ /obj/item/clothing/shoes/clockwork/equipped(mob/living/user, slot) ..() - if(slot == slot_shoes && !is_servant_of_ratvar(user)) + if(slot == SLOT_SHOES && !is_servant_of_ratvar(user)) if(!iscultist(user)) to_chat(user, "\"Now now, this is for my servants, not you.\"") user.visible_message("As [user] puts [src] on, it flickers off their feet!", "The treads flicker off your feet, leaving only nausea!") diff --git a/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm b/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm index 5f5bc1b58a..c464656150 100644 --- a/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm +++ b/code/modules/antagonists/clockcult/clock_items/clockwork_slab.dm @@ -9,7 +9,7 @@ righthand_file = 'icons/mob/inhands/antag/clockwork_righthand.dmi' var/inhand_overlay //If applicable, this overlay will be applied to the slab's inhand - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_SMALL var/busy //If the slab is currently being used by something diff --git a/code/modules/antagonists/clockcult/clock_items/construct_chassis.dm b/code/modules/antagonists/clockcult/clock_items/construct_chassis.dm index ca5fe74f2e..3f3bb58598 100644 --- a/code/modules/antagonists/clockcult/clock_items/construct_chassis.dm +++ b/code/modules/antagonists/clockcult/clock_items/construct_chassis.dm @@ -115,4 +115,4 @@ S.no_cost = TRUE if(seasonal_hat && seasonal_hat != "none") var/obj/item/hat = new seasonal_hat(construct) - construct.equip_to_slot_or_del(hat, slot_head) + construct.equip_to_slot_or_del(hat, SLOT_HEAD) diff --git a/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm b/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm index a16a52d7aa..f54d88fc49 100644 --- a/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm +++ b/code/modules/antagonists/clockcult/clock_items/judicial_visor.dm @@ -28,13 +28,13 @@ return ..() /obj/item/clothing/glasses/judicial_visor/item_action_slot_check(slot, mob/user) - if(slot != slot_glasses) + if(slot != SLOT_GLASSES) return 0 return ..() /obj/item/clothing/glasses/judicial_visor/equipped(mob/living/user, slot) ..() - if(slot != slot_glasses) + if(slot != SLOT_GLASSES) update_status(FALSE) if(blaster.ranged_ability_user) blaster.remove_ranged_ability() @@ -55,13 +55,13 @@ addtimer(CALLBACK(src, .proc/check_on_mob, user), 1) //dropped is called before the item is out of the slot, so we need to check slightly later /obj/item/clothing/glasses/judicial_visor/proc/check_on_mob(mob/user) - if(user && src != user.get_item_by_slot(slot_glasses)) //if we happen to check and we AREN'T in the slot, we need to remove our shit from whoever we got dropped from + if(user && src != user.get_item_by_slot(SLOT_GLASSES)) //if we happen to check and we AREN'T in the slot, we need to remove our shit from whoever we got dropped from update_status(FALSE) if(blaster.ranged_ability_user) blaster.remove_ranged_ability() /obj/item/clothing/glasses/judicial_visor/attack_self(mob/user) - if(is_servant_of_ratvar(user) && src == user.get_item_by_slot(slot_glasses)) + if(is_servant_of_ratvar(user) && src == user.get_item_by_slot(SLOT_GLASSES)) blaster.toggle(user) /obj/item/clothing/glasses/judicial_visor/proc/update_status(change_to) @@ -89,7 +89,7 @@ if(!src) return 0 recharging = FALSE - if(user && src == user.get_item_by_slot(slot_glasses)) + if(user && src == user.get_item_by_slot(SLOT_GLASSES)) to_chat(user, "Your [name] hums. It is ready.") else active = FALSE @@ -115,7 +115,7 @@ /obj/effect/proc_holder/judicial_visor/InterceptClickOn(mob/living/caller, params, atom/target) if(..()) return - if(ranged_ability_user.incapacitated() || !visor || visor != ranged_ability_user.get_item_by_slot(slot_glasses)) + if(ranged_ability_user.incapacitated() || !visor || visor != ranged_ability_user.get_item_by_slot(SLOT_GLASSES)) remove_ranged_ability() return @@ -151,6 +151,7 @@ desc = "You get the feeling that you shouldn't be standing here." clockwork_desc = "A sigil that will soon erupt and smite any unenlightened nearby." icon = 'icons/effects/96x96.dmi' + icon_state = "" pixel_x = -32 pixel_y = -32 layer = BELOW_MOB_LAYER diff --git a/code/modules/antagonists/clockcult/clock_items/soul_vessel.dm b/code/modules/antagonists/clockcult/clock_items/soul_vessel.dm index 48466238a7..55eb0f568a 100644 --- a/code/modules/antagonists/clockcult/clock_items/soul_vessel.dm +++ b/code/modules/antagonists/clockcult/clock_items/soul_vessel.dm @@ -1,5 +1,5 @@ //Soul vessel: An ancient positronic brain that serves only Ratvar. -/obj/item/device/mmi/posibrain/soul_vessel +/obj/item/mmi/posibrain/soul_vessel name = "soul vessel" desc = "A heavy brass cube, three inches to a side, with a single protruding cogwheel." var/clockwork_desc = "A soul vessel, an ancient relic that can attract the souls of the damned or simply rip a mind from an unconscious or dead human.\n\ @@ -25,35 +25,35 @@ force_replace_ai_name = TRUE overrides_aicore_laws = TRUE -/obj/item/device/mmi/posibrain/soul_vessel/Initialize() +/obj/item/mmi/posibrain/soul_vessel/Initialize() . = ..() radio.on = FALSE laws = new /datum/ai_laws/ratvar() braintype = picked_name GLOB.all_clockwork_objects += src -/obj/item/device/mmi/posibrain/soul_vessel/Destroy() +/obj/item/mmi/posibrain/soul_vessel/Destroy() GLOB.all_clockwork_objects -= src return ..() -/obj/item/device/mmi/posibrain/soul_vessel/examine(mob/user) +/obj/item/mmi/posibrain/soul_vessel/examine(mob/user) if((is_servant_of_ratvar(user) || isobserver(user)) && clockwork_desc) desc = clockwork_desc ..() desc = initial(desc) -/obj/item/device/mmi/posibrain/soul_vessel/transfer_personality(mob/candidate) +/obj/item/mmi/posibrain/soul_vessel/transfer_personality(mob/candidate) . = ..() if(.) add_servant_of_ratvar(brainmob, TRUE) -/obj/item/device/mmi/posibrain/soul_vessel/attack_self(mob/living/user) +/obj/item/mmi/posibrain/soul_vessel/attack_self(mob/living/user) if(!is_servant_of_ratvar(user)) to_chat(user, "You fiddle around with [src], to no avail.") return FALSE ..() -/obj/item/device/mmi/posibrain/soul_vessel/attack(mob/living/target, mob/living/carbon/human/user) +/obj/item/mmi/posibrain/soul_vessel/attack(mob/living/target, mob/living/carbon/human/user) if(!is_servant_of_ratvar(user) || !ishuman(target)) ..() return diff --git a/code/modules/antagonists/clockcult/clock_items/wraith_spectacles.dm b/code/modules/antagonists/clockcult/clock_items/wraith_spectacles.dm index c1bf94842d..dab12dc304 100644 --- a/code/modules/antagonists/clockcult/clock_items/wraith_spectacles.dm +++ b/code/modules/antagonists/clockcult/clock_items/wraith_spectacles.dm @@ -74,7 +74,7 @@ /obj/item/clothing/glasses/wraith_spectacles/equipped(mob/living/user, slot) ..() - if(slot != slot_glasses || up) + if(slot != SLOT_GLASSES || up) return if(user.has_trait(TRAIT_BLIND)) to_chat(user, "\"You're blind, idiot. Stop embarrassing yourself.\"" ) diff --git a/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm b/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm index 9a78c64942..4e1a5b42cb 100644 --- a/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm +++ b/code/modules/antagonists/clockcult/clock_scriptures/scripture_scripts.dm @@ -160,18 +160,18 @@ /datum/action/innate/clockwork_armaments/Activate() var/do_message = 0 - var/obj/item/I = owner.get_item_by_slot(slot_wear_suit) + var/obj/item/I = owner.get_item_by_slot(SLOT_WEAR_SUIT) if(remove_item_if_better(I, owner)) - do_message += owner.equip_to_slot_or_del(new/obj/item/clothing/suit/armor/clockwork(null), slot_wear_suit) - I = owner.get_item_by_slot(slot_head) + do_message += owner.equip_to_slot_or_del(new/obj/item/clothing/suit/armor/clockwork(null), SLOT_WEAR_SUIT) + I = owner.get_item_by_slot(SLOT_HEAD) if(remove_item_if_better(I, owner)) - do_message += owner.equip_to_slot_or_del(new/obj/item/clothing/head/helmet/clockwork(null), slot_head) - I = owner.get_item_by_slot(slot_gloves) + do_message += owner.equip_to_slot_or_del(new/obj/item/clothing/head/helmet/clockwork(null), SLOT_HEAD) + I = owner.get_item_by_slot(SLOT_GLOVES) if(remove_item_if_better(I, owner)) - do_message += owner.equip_to_slot_or_del(new/obj/item/clothing/gloves/clockwork(null), slot_gloves) - I = owner.get_item_by_slot(slot_shoes) + do_message += owner.equip_to_slot_or_del(new/obj/item/clothing/gloves/clockwork(null), SLOT_GLOVES) + I = owner.get_item_by_slot(SLOT_SHOES) if(remove_item_if_better(I, owner)) - do_message += owner.equip_to_slot_or_del(new/obj/item/clothing/shoes/clockwork(null), slot_shoes) + do_message += owner.equip_to_slot_or_del(new/obj/item/clothing/shoes/clockwork(null), SLOT_SHOES) if(do_message) owner.visible_message("Strange armor appears on [owner]!", "A bright shimmer runs down your body, equipping you with Ratvarian armor.") playsound(owner, 'sound/magic/clockwork/fellowship_armory.ogg', 15 * do_message, TRUE) //get sound loudness based on how much we equipped diff --git a/code/modules/antagonists/clockcult/clockcult.dm b/code/modules/antagonists/clockcult/clockcult.dm index f921b6b527..f2c0518cc2 100644 --- a/code/modules/antagonists/clockcult/clockcult.dm +++ b/code/modules/antagonists/clockcult/clockcult.dm @@ -159,7 +159,7 @@ SSticker.mode.servants_of_ratvar -= owner SSticker.mode.update_servant_icons_removed(owner) if(!silent) - owner.current.visible_message("[owner] seems to have remembered their true allegiance!", null, null, null, owner.current) + owner.current.visible_message("[owner.current] seems to have remembered [owner.current.p_their()] true allegiance!", null, null, null, owner.current) to_chat(owner, "A cold, cold darkness flows through your mind, extinguishing the Justiciar's light and all of your memories as his servant.") owner.current.log_message("Has renounced the cult of Ratvar!", INDIVIDUAL_ATTACK_LOG) owner.special_role = null diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index bb2ce1db2a..f12beef82f 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -260,7 +260,7 @@ if(!ishuman(target) || iscultist(target)) return var/mob/living/carbon/human/H = target - H.hallucination = max(H.hallucination, 240) + H.hallucination = max(H.hallucination, 120) SEND_SOUND(ranged_ability_user, sound('sound/effects/ghost.ogg',0,1,50)) var/image/C = image('icons/effects/cult_effects.dmi',H,"bloodsparkles", ABOVE_MOB_LAYER) add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/cult, "cult_apoc", C, FALSE) @@ -605,11 +605,11 @@ uses-- var/mob/living/carbon/C = target C.visible_message("Otherworldly armor suddenly appears on [C]!") - C.equip_to_slot_or_del(new /obj/item/clothing/under/color/black,slot_w_uniform) - C.equip_to_slot_or_del(new /obj/item/clothing/head/culthood/alt(user), slot_head) - C.equip_to_slot_or_del(new /obj/item/clothing/suit/cultrobes/alt(user), slot_wear_suit) - C.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult/alt(user), slot_shoes) - C.equip_to_slot_or_del(new /obj/item/storage/backpack/cultpack(user), slot_back) + C.equip_to_slot_or_del(new /obj/item/clothing/under/color/black,SLOT_W_UNIFORM) + C.equip_to_slot_or_del(new /obj/item/clothing/head/culthood/alt(user), SLOT_HEAD) + C.equip_to_slot_or_del(new /obj/item/clothing/suit/cultrobes/alt(user), SLOT_WEAR_SUIT) + C.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult/alt(user), SLOT_SHOES) + C.equip_to_slot_or_del(new /obj/item/storage/backpack/cultpack(user), SLOT_BACK) if(C == user) qdel(src) //Clears the hands C.put_in_hands(new /obj/item/melee/cultblade(user)) diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm index b7f0b002ec..99941501e3 100644 --- a/code/modules/antagonists/cult/cult.dm +++ b/code/modules/antagonists/cult/cult.dm @@ -81,9 +81,9 @@ /datum/antagonist/cult/proc/cult_give_item(obj/item/item_path, mob/living/carbon/human/mob) var/list/slots = list( - "backpack" = slot_in_backpack, - "left pocket" = slot_l_store, - "right pocket" = slot_r_store + "backpack" = SLOT_IN_BACKPACK, + "left pocket" = SLOT_L_STORE, + "right pocket" = SLOT_R_STORE ) var/T = new item_path(mob) @@ -128,7 +128,7 @@ SSticker.mode.cult -= owner SSticker.mode.update_cult_icons_removed(owner) if(!silent) - owner.current.visible_message("[owner.current] looks like [owner.current.p_they()] just reverted to their old faith!", null, null, null, owner.current) + owner.current.visible_message("[owner.current] looks like [owner.current.p_theyve()] just reverted to [owner.current.p_their()] old faith!", null, null, null, owner.current) to_chat(owner.current, "An unfamiliar white light flashes through your mind, cleansing the taint of the Geometer and all your memories as her servant.") owner.current.log_message("Has renounced the cult of Nar'Sie!", INDIVIDUAL_ATTACK_LOG) if(cult_team.blood_target && cult_team.blood_target_image && owner.current.client) diff --git a/code/modules/antagonists/cult/cult_comms.dm b/code/modules/antagonists/cult/cult_comms.dm index 308cd38c80..e929efab2a 100644 --- a/code/modules/antagonists/cult/cult_comms.dm +++ b/code/modules/antagonists/cult/cult_comms.dm @@ -178,8 +178,8 @@ playsound(mobloc, 'sound/magic/exit_blood.ogg', 100, 1) if(B.current != owner) var/turf/final = pick(destinations) - if(istype(B.current.loc, /obj/item/device/soulstone)) - var/obj/item/device/soulstone/S = B.current.loc + if(istype(B.current.loc, /obj/item/soulstone)) + var/obj/item/soulstone/S = B.current.loc S.release_shades(owner) B.current.setDir(SOUTH) new /obj/effect/temp_visual/cult/blood(final) diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index 30d150e3ee..4de5219d7d 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -33,10 +33,8 @@ desc = "A sword humming with unholy energy. It glows with a dim red light." icon_state = "cultblade" item_state = "cultblade" - lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi' - righthand_file = 'icons/mob/inhands/64x64_righthand.dmi' - inhand_x_dimension = 64 - inhand_y_dimension = 64 + lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' flags_1 = CONDUCT_1 sharpness = IS_SHARP w_class = WEIGHT_CLASS_BULKY @@ -73,8 +71,6 @@ if(!iscultist(user)) if(!is_servant_of_ratvar(user)) to_chat(user, "\"I wouldn't advise that.\"") - to_chat(user, "An overwhelming sense of nausea overpowers you!") - user.Dizzy(120) else to_chat(user, "\"One of Ratvar's toys is trying to play with things [user.p_they()] shouldn't. Cute.\"") to_chat(user, "A horrible force yanks at your arm!") @@ -138,10 +134,7 @@ if(!iscultist(user)) if(!is_servant_of_ratvar(user)) to_chat(user, "\"I wouldn't advise that.\"") - to_chat(user, "An overwhelming sense of nausea overpowers you!") - user.Dizzy(80) - user.dropItemToGround(src, TRUE) - user.Knockdown(30) + force = 5 return else to_chat(user, "\"One of Ratvar's toys is trying to play with things [user.p_they()] shouldn't. Cute.\"") @@ -151,6 +144,7 @@ user.dropItemToGround(src, TRUE) user.Knockdown(50) return + force = initial(force) jaunt.Grant(user, src) linked_action.Grant(user, src) user.update_icons() @@ -189,12 +183,12 @@ if(ishuman(target)) var/mob/living/carbon/human/H = target if(H.stat != CONSCIOUS) - var/obj/item/device/soulstone/SS = new /obj/item/device/soulstone(src) + var/obj/item/soulstone/SS = new /obj/item/soulstone(src) SS.attack(H, user) if(!LAZYLEN(SS.contents)) qdel(SS) if(istype(target, /obj/structure/constructshell) && contents.len) - var/obj/item/device/soulstone/SS = contents[1] + var/obj/item/soulstone/SS = contents[1] if(istype(SS)) SS.transfer_soul("CONSTRUCT",target,user) qdel(SS) @@ -484,14 +478,14 @@ color = "#333333" list_reagents = list("unholywater" = 50) -/obj/item/device/shuttle_curse +/obj/item/shuttle_curse name = "cursed orb" desc = "You peer within this smokey orb and glimpse terrible fates befalling the escape shuttle." icon = 'icons/obj/cult.dmi' icon_state ="shuttlecurse" var/global/curselimit = 0 -/obj/item/device/shuttle_curse/attack_self(mob/living/user) +/obj/item/shuttle_curse/attack_self(mob/living/user) if(!iscultist(user)) user.dropItemToGround(src, TRUE) user.Knockdown(100) @@ -538,28 +532,28 @@ priority_announce("[message]", "System Failure", 'sound/misc/notice1.ogg') curselimit++ -/obj/item/device/cult_shift +/obj/item/cult_shift name = "veil shifter" desc = "This relic instantly teleports you, and anything you're pulling, forward by a moderate distance." icon = 'icons/obj/cult.dmi' icon_state ="shifter" var/uses = 4 -/obj/item/device/cult_shift/examine(mob/user) +/obj/item/cult_shift/examine(mob/user) ..() if(uses) to_chat(user, "It has [uses] use\s remaining.") else to_chat(user, "It seems drained.") -/obj/item/device/cult_shift/proc/handle_teleport_grab(turf/T, mob/user) +/obj/item/cult_shift/proc/handle_teleport_grab(turf/T, mob/user) var/mob/living/carbon/C = user if(C.pulling) var/atom/movable/pulled = C.pulling pulled.forceMove(T) . = pulled -/obj/item/device/cult_shift/attack_self(mob/user) +/obj/item/cult_shift/attack_self(mob/user) if(!uses || !iscarbon(user)) to_chat(user, "\The [src] is dull and unmoving in your hands.") return @@ -592,7 +586,7 @@ else to_chat(C, "The veil cannot be torn here!") -/obj/item/device/flashlight/flare/culttorch +/obj/item/flashlight/flare/culttorch name = "void torch" desc = "Used by veteran cultists to instantly transport items to their needful bretheren." w_class = WEIGHT_CLASS_SMALL @@ -605,7 +599,7 @@ on = TRUE var/charges = 5 -/obj/item/device/flashlight/flare/culttorch/afterattack(atom/movable/A, mob/user, proximity) +/obj/item/flashlight/flare/culttorch/afterattack(atom/movable/A, mob/user, proximity) if(!proximity) return if(!iscultist(user)) diff --git a/code/modules/antagonists/cult/cult_structures.dm b/code/modules/antagonists/cult/cult_structures.dm index 3e8fda9d45..ed7213f6e4 100644 --- a/code/modules/antagonists/cult/cult_structures.dm +++ b/code/modules/antagonists/cult/cult_structures.dm @@ -258,10 +258,10 @@ if("Zealot's Blindfold") pickedtype += /obj/item/clothing/glasses/hud/health/night/cultblind if("Shuttle Curse") - pickedtype += /obj/item/device/shuttle_curse + pickedtype += /obj/item/shuttle_curse if("Veil Walker Set") - pickedtype += /obj/item/device/cult_shift - pickedtype += /obj/item/device/flashlight/flare/culttorch + pickedtype += /obj/item/cult_shift + pickedtype += /obj/item/flashlight/flare/culttorch if(src && !QDELETED(src) && anchored && pickedtype.len && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time) cooldowntime = world.time + 2400 for(var/N in pickedtype) diff --git a/code/modules/antagonists/cult/ritual.dm b/code/modules/antagonists/cult/ritual.dm index dd129708a8..ba2ea53ef2 100644 --- a/code/modules/antagonists/cult/ritual.dm +++ b/code/modules/antagonists/cult/ritual.dm @@ -144,7 +144,8 @@ This file contains the cult dagger and rune list code if(locate(/obj/effect/rune) in T) to_chat(user, "There is already a rune here.") return FALSE - if(!is_station_level(T.z) && !is_mining_level(T.z)) + var/area/A = get_area(T) + if((!is_station_level(T.z) && !is_mining_level(T.z)) || (A && !A.blob_allowed)) to_chat(user, "The veil is not weak enough here.") return FALSE return TRUE diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index 763d9adaa8..a1241d5998 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -299,7 +299,7 @@ structure_check() searches for nearby cultist structures required for the invoca else to_chat(M, "\"I accept this meager sacrifice.\"") - var/obj/item/device/soulstone/stone = new /obj/item/device/soulstone(get_turf(src)) + var/obj/item/soulstone/stone = new /obj/item/soulstone(get_turf(src)) if(sacrificial.mind && !sacrificial.suiciding) stone.invisibility = INVISIBILITY_MAXIMUM //so it's not picked up during transfer_soul() stone.transfer_soul("FORCE", sacrificial, usr) @@ -708,6 +708,11 @@ structure_check() searches for nearby cultist structures required for the invoca fail_invoke() log_game("Summon Cultist rune failed - target died") return + if(cultist_to_summon.pulledby || cultist_to_summon.buckled) + to_chat(user, "[cultist_to_summon] is being held in place!") + fail_invoke() + log_game("Summon Cultist rune failed - target restrained") + return if(!iscultist(cultist_to_summon)) to_chat(user, "[cultist_to_summon] is not a follower of the Geometer!") fail_invoke() @@ -1056,7 +1061,7 @@ structure_check() searches for nearby cultist structures required for the invoca /proc/hudFix(mob/living/carbon/human/target) if(!target || !target.client) return - var/obj/O = target.get_item_by_slot(slot_glasses) + var/obj/O = target.get_item_by_slot(SLOT_GLASSES) if(istype(O, /obj/item/clothing/glasses/hud/security)) var/datum/atom_hud/AH = GLOB.huds[DATA_HUD_SECURITY_ADVANCED] AH.add_hud_to(target) diff --git a/code/modules/antagonists/devil/devil.dm b/code/modules/antagonists/devil/devil.dm index 55a33820f0..3852eb6de1 100644 --- a/code/modules/antagonists/devil/devil.dm +++ b/code/modules/antagonists/devil/devil.dm @@ -456,10 +456,10 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", return -1 currentMob.change_mob_type( /mob/living/carbon/human, targetturf, null, 1) var/mob/living/carbon/human/H = owner.current - H.equip_to_slot_or_del(new /obj/item/clothing/under/lawyer/black(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/storage/briefcase(H), slot_hands) - H.equip_to_slot_or_del(new /obj/item/pen(H), slot_l_store) + H.equip_to_slot_or_del(new /obj/item/clothing/under/lawyer/black(H), SLOT_W_UNIFORM) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(H), SLOT_SHOES) + H.equip_to_slot_or_del(new /obj/item/storage/briefcase(H), SLOT_HANDS) + H.equip_to_slot_or_del(new /obj/item/pen(H), SLOT_L_STORE) if(SOULVALUE >= BLOOD_THRESHOLD) H.set_species(/datum/species/lizard, 1) H.underwear = "Nude" diff --git a/code/modules/antagonists/highlander/highlander.dm b/code/modules/antagonists/highlander/highlander.dm index 012527ff7b..c55f177b7a 100644 --- a/code/modules/antagonists/highlander/highlander.dm +++ b/code/modules/antagonists/highlander/highlander.dm @@ -46,11 +46,11 @@ qdel(I) for(var/obj/item/I in H.held_items) qdel(I) - H.equip_to_slot_or_del(new /obj/item/clothing/under/kilt/highlander(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(H), slot_ears) - H.equip_to_slot_or_del(new /obj/item/clothing/head/beret/highlander(H), slot_head) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/pinpointer/nuke(H), slot_l_store) + H.equip_to_slot_or_del(new /obj/item/clothing/under/kilt/highlander(H), SLOT_W_UNIFORM) + H.equip_to_slot_or_del(new /obj/item/radio/headset/heads/captain(H), SLOT_EARS) + H.equip_to_slot_or_del(new /obj/item/clothing/head/beret/highlander(H), SLOT_HEAD) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat(H), SLOT_SHOES) + H.equip_to_slot_or_del(new /obj/item/pinpointer/nuke(H), SLOT_L_STORE) for(var/obj/item/pinpointer/nuke/P in H) P.attack_self(H) var/obj/item/card/id/W = new(H) @@ -61,7 +61,7 @@ W.registered_name = H.real_name W.flags_1 |= NODROP_1 W.update_label(H.real_name) - H.equip_to_slot_or_del(W, slot_wear_id) + H.equip_to_slot_or_del(W, SLOT_WEAR_ID) sword = new(H) if(!GLOB.highlander) diff --git a/code/modules/antagonists/morph/morph.dm b/code/modules/antagonists/morph/morph.dm index 8146ab7fbe..6572584eab 100644 --- a/code/modules/antagonists/morph/morph.dm +++ b/code/modules/antagonists/morph/morph.dm @@ -27,12 +27,14 @@ see_in_dark = 8 lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE vision_range = 1 // Only attack when target is close - wander = 0 + wander = FALSE attacktext = "glomps" attack_sound = 'sound/effects/blobattack.ogg' butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 2) var/morphed = FALSE + var/melee_damage_disguised = 0 + var/eat_while_disguised = FALSE var/atom/movable/form = null var/morph_time = 0 var/static/list/blacklist_typecache = typecacheof(list( @@ -75,11 +77,14 @@ return !is_type_in_typecache(A, blacklist_typecache) && (isobj(A) || ismob(A)) /mob/living/simple_animal/hostile/morph/proc/eat(atom/movable/A) + if(morphed && !eat_while_disguised) + to_chat(src, "You can not eat anything while you are disguised!") + return FALSE if(A && A.loc != src) visible_message("[src] swallows [A] whole!") A.forceMove(src) - return 1 - return 0 + return TRUE + return FALSE /mob/living/simple_animal/hostile/morph/ShiftClickOn(atom/movable/A) if(morph_time <= world.time && !stat) @@ -109,8 +114,8 @@ pixel_x = initial(pixel_x) //Morphed is weaker - melee_damage_lower = 5 - melee_damage_upper = 5 + melee_damage_lower = melee_damage_disguised + melee_damage_upper = melee_damage_disguised speed = 0 morph_time = world.time + MORPH_COOLDOWN @@ -181,10 +186,13 @@ /mob/living/simple_animal/hostile/morph/can_track(mob/living/user) if(morphed) - return 0 + return FALSE return ..() /mob/living/simple_animal/hostile/morph/AttackingTarget() + if(morphed && !melee_damage_disguised) + to_chat(src, "You can not attack while disguised!") + return if(isliving(target)) //Eat Corpses to regen health var/mob/living/L = target if(L.stat == DEAD) diff --git a/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm b/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm index 931c38d7b9..acf90fb256 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm @@ -5,7 +5,7 @@ GLOBAL_LIST_EMPTY(jam_on_wardec) -/obj/item/device/nuclear_challenge +/obj/item/nuclear_challenge name = "Declaration of War (Challenge Mode)" icon_state = "gangtool-red" item_state = "radio" @@ -15,9 +15,9 @@ GLOBAL_LIST_EMPTY(jam_on_wardec) Such a brazen move will attract the attention of powerful benefactors within the Syndicate, who will supply your team with a massive amount of bonus telecrystals. \ Must be used within five minutes, or your benefactors will lose interest." var/declaring_war = FALSE - var/uplink_type = /obj/item/device/radio/uplink/nuclear + var/uplink_type = /obj/item/radio/uplink/nuclear -/obj/item/device/nuclear_challenge/attack_self(mob/living/user) +/obj/item/nuclear_challenge/attack_self(mob/living/user) if(!check_allowed(user)) return @@ -66,7 +66,7 @@ GLOBAL_LIST_EMPTY(jam_on_wardec) qdel(src) -/obj/item/device/nuclear_challenge/proc/check_allowed(mob/living/user) +/obj/item/nuclear_challenge/proc/check_allowed(mob/living/user) if(declaring_war) to_chat(user, "You are already in the process of declaring war! Make your mind up.") return FALSE @@ -86,8 +86,8 @@ GLOBAL_LIST_EMPTY(jam_on_wardec) return FALSE return TRUE -/obj/item/device/nuclear_challenge/clownops - uplink_type = /obj/item/device/radio/uplink/clownop +/obj/item/nuclear_challenge/clownops + uplink_type = /obj/item/radio/uplink/clownop #undef CHALLENGE_TELECRYSTALS #undef CHALLENGE_TIME_LIMIT diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm index 0e588c4380..a9c6a112bd 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -501,16 +501,37 @@ This is here to make the tiles around the station mininuke change when it's arme armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF var/fake = FALSE + var/turf/lastlocation + var/last_disk_move /obj/item/disk/nuclear/Initialize() . = ..() if(!fake) GLOB.poi_list |= src + last_disk_move = world.time + START_PROCESSING(SSobj, src) /obj/item/disk/nuclear/ComponentInitialize() . = ..() AddComponent(/datum/component/stationloving, !fake) +/obj/item/disk/nuclear/process() + if(fake) + STOP_PROCESSING(SSobj, src) + CRASH("A fake nuke disk tried to call process(). Who the fuck and how the fuck") + var/turf/newturf = get_turf(src) + if(newturf && lastlocation == newturf) + if(last_disk_move < world.time - 5000 && prob((world.time - 5000 - last_disk_move)*0.00001)) + var/datum/round_event_control/operative/loneop = locate(/datum/round_event_control/operative) in SSevents.control + if(istype(loneop)) + loneop.weight += 1 + else + lastlocation = newturf + last_disk_move = world.time + var/datum/round_event_control/operative/loneop = locate(/datum/round_event_control/operative) in SSevents.control + if(istype(loneop) && prob(loneop.weight)) + loneop.weight = max(loneop.weight - 1, 0) + /obj/item/disk/nuclear/examine(mob/user) . = ..() if(!fake) diff --git a/code/modules/antagonists/nukeop/nukeop.dm b/code/modules/antagonists/nukeop/nukeop.dm index 648f62c4a5..df7d21e46b 100644 --- a/code/modules/antagonists/nukeop/nukeop.dm +++ b/code/modules/antagonists/nukeop/nukeop.dm @@ -218,7 +218,7 @@ else //Already set by admins/something else? nuke_team.memorized_code = nuke.r_code else - stack_trace("Station self destruct ot found during lone op team creation.") + stack_trace("Station self destruct not found during lone op team creation.") nuke_team.memorized_code = null /datum/antagonist/nukeop/reinforcement diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm index 34d30603d6..03150c0254 100644 --- a/code/modules/antagonists/revenant/revenant.dm +++ b/code/modules/antagonists/revenant/revenant.dm @@ -90,7 +90,7 @@ to_chat(src, "You are invincible and invisible to everyone but other ghosts. Most abilities will reveal you, rendering you vulnerable.") to_chat(src, "To function, you are to drain the life essence from humans. This essence is a resource, as well as your health, and will power all of your abilities.") to_chat(src, "You do not remember anything of your past lives, nor will you remember anything about this one after your death.") - to_chat(src, "Be sure to read the wiki page at https://tgstation13.org/wiki/Revenant to learn more.") + to_chat(src, "Be sure to read the wiki page to learn more.") if(!generated_objectives_and_spells) generated_objectives_and_spells = TRUE mind.assigned_role = ROLE_REVENANT diff --git a/code/modules/antagonists/revenant/revenant_abilities.dm b/code/modules/antagonists/revenant/revenant_abilities.dm index e3a068eed4..95ea189dde 100644 --- a/code/modules/antagonists/revenant/revenant_abilities.dm +++ b/code/modules/antagonists/revenant/revenant_abilities.dm @@ -290,7 +290,7 @@ unlock_amount = 200 action_icon_state = "malfunction" -//A note to future coders: do not replace this with an EMP because it will wreck malf AIs and gang dominators and everyone will hate you. +//A note to future coders: do not replace this with an EMP because it will wreck malf AIs and everyone will hate you. /obj/effect/proc_holder/spell/aoe_turf/revenant/malfunction/cast(list/targets, mob/living/simple_animal/revenant/user = usr) if(attempt_cast(user)) for(var/turf/T in targets) @@ -312,7 +312,7 @@ new /obj/effect/temp_visual/revenant(human.loc) human.emp_act(EMP_HEAVY) for(var/obj/thing in T) - if(istype(thing, /obj/machinery/dominator) || istype(thing, /obj/machinery/power/apc) || istype(thing, /obj/machinery/power/smes)) //Doesn't work on dominators, SMES and APCs, to prevent kekkery + if(istype(thing, /obj/machinery/power/apc) || istype(thing, /obj/machinery/power/smes)) //Doesn't work on SMES and APCs, to prevent kekkery continue if(prob(20)) if(prob(50)) diff --git a/code/modules/antagonists/revolution/revolution.dm b/code/modules/antagonists/revolution/revolution.dm index dae760933e..51acdae894 100644 --- a/code/modules/antagonists/revolution/revolution.dm +++ b/code/modules/antagonists/revolution/revolution.dm @@ -112,7 +112,7 @@ /datum/antagonist/rev/head/proc/admin_take_flash(mob/admin) var/list/L = owner.current.get_contents() - var/obj/item/device/assembly/flash/flash = locate() in L + var/obj/item/assembly/flash/flash = locate() in L if (!flash) to_chat(admin, "Deleting flash failed!") return @@ -133,7 +133,7 @@ /datum/antagonist/rev/head/proc/admin_repair_flash(mob/admin) var/list/L = owner.current.get_contents() - var/obj/item/device/assembly/flash/flash = locate() in L + var/obj/item/assembly/flash/flash = locate() in L if (!flash) to_chat(admin, "Repairing flash failed!") else @@ -201,12 +201,13 @@ /datum/antagonist/rev/farewell() if(ishuman(owner.current)) - owner.current.visible_message("[owner.current] looks like they just remembered their real allegiance!", null, null, null, owner.current) + owner.current.visible_message("[owner.current] looks like [owner.current.p_theyve()] just remembered [owner.current.p_their()] real allegiance!", null, null, null, owner.current) to_chat(owner, "You are no longer a brainwashed revolutionary! Your memory is hazy from the time you were a rebel...the only thing you remember is the name of the one who brainwashed you...") else if(issilicon(owner.current)) owner.current.visible_message("The frame beeps contentedly, purging the hostile memory engram from the MMI before initalizing it.", null, null, null, owner.current) to_chat(owner, "The frame's firmware detects and deletes your neural reprogramming! You remember nothing but the name of the one who flashed you.") +//blunt trauma deconversions call this through species.dm spec_attacked_by() /datum/antagonist/rev/proc/remove_revolutionary(borged, deconverter) log_attack("[owner.current] (Key: [key_name(owner.current)]) has been deconverted from the revolution by [deconverter] (Key: [key_name(deconverter)])!") if(borged) @@ -232,11 +233,11 @@ H.dna.remove_mutation(CLOWNMUT) if(give_flash) - var/obj/item/device/assembly/flash/T = new(H) + var/obj/item/assembly/flash/T = new(H) var/list/slots = list ( - "backpack" = slot_in_backpack, - "left pocket" = slot_l_store, - "right pocket" = slot_r_store + "backpack" = SLOT_IN_BACKPACK, + "left pocket" = SLOT_L_STORE, + "right pocket" = SLOT_R_STORE ) var/where = H.equip_in_one_of_slots(T, slots) if (!where) diff --git a/code/modules/antagonists/slaughter/slaughter.dm b/code/modules/antagonists/slaughter/slaughter.dm index 9457e3a8c8..aea9a1862a 100644 --- a/code/modules/antagonists/slaughter/slaughter.dm +++ b/code/modules/antagonists/slaughter/slaughter.dm @@ -66,7 +66,7 @@ name = "pile of viscera" desc = "A repulsive pile of guts and gore." gender = NEUTER - random_icon_states = list("innards") + icon_state = "innards" /mob/living/simple_animal/slaughter/phasein() . = ..() diff --git a/code/modules/antagonists/swarmer/swarmer.dm b/code/modules/antagonists/swarmer/swarmer.dm index 817cbf75c0..3ea2e1d739 100644 --- a/code/modules/antagonists/swarmer/swarmer.dm +++ b/code/modules/antagonists/swarmer/swarmer.dm @@ -1,5 +1,5 @@ ////Deactivated swarmer shell//// -/obj/item/device/deactivated_swarmer +/obj/item/deactivated_swarmer name = "deactivated swarmer" desc = "A shell of swarmer that was completely powered down. It can no longer activate itself." icon = 'icons/mob/swarmer.dmi' @@ -45,7 +45,7 @@ user.visible_message("[usr.name] deactivates [src].", "After some fiddling, you find a way to disable [src]'s power source.", "You hear clicking.") - new /obj/item/device/deactivated_swarmer(get_turf(src)) + new /obj/item/deactivated_swarmer(get_turf(src)) qdel(src) else ..() @@ -302,10 +302,6 @@ to_chat(S, "This device's destruction would result in the extermination of everything in the area. Aborting.") return FALSE -/obj/machinery/dominator/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - to_chat(S, "This device is attempting to corrupt our entire network; attempting to interact with it is too risky. Aborting.") - return FALSE - /obj/effect/rune/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) to_chat(S, "Searching... sensor malfunction! Target lost. Aborting.") return FALSE @@ -399,7 +395,7 @@ to_chat(S, "Disrupting the power grid would bring no benefit to us. Aborting.") return FALSE -/obj/item/device/deactivated_swarmer/IntegrateAmount() +/obj/item/deactivated_swarmer/IntegrateAmount() return 50 /obj/machinery/hydroponics/soil/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) @@ -497,10 +493,10 @@ D.pixel_z = target.pixel_z if(do_mob(src, target, 100)) to_chat(src, "Dismantling complete.") - var/obj/item/stack/sheet/metal/M = new /obj/item/stack/sheet/metal(target.loc) - M.amount = 5 + var/atom/Tsec = target.drop_location() + new /obj/item/stack/sheet/metal(Tsec, 5) for(var/obj/item/I in target.component_parts) - I.forceMove(M.drop_location()) + I.forceMove(Tsec) var/obj/effect/temp_visual/swarmer/disintegration/N = new /obj/effect/temp_visual/swarmer/disintegration(get_turf(target)) N.pixel_x = target.pixel_x N.pixel_y = target.pixel_y @@ -509,7 +505,7 @@ if(istype(target, /obj/machinery/computer)) var/obj/machinery/computer/C = target if(C.circuit) - C.circuit.forceMove(M.drop_location()) + C.circuit.forceMove(Tsec) qdel(target) diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index e09b92a083..f3ea4ef2ea 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -296,9 +296,9 @@ folder = new/obj/item/folder/syndicate/blue(mob.loc) var/list/slots = list ( - "backpack" = slot_in_backpack, - "left pocket" = slot_l_store, - "right pocket" = slot_r_store + "backpack" = SLOT_IN_BACKPACK, + "left pocket" = SLOT_L_STORE, + "right pocket" = SLOT_R_STORE ) var/where = "At your feet" diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm index a2b885f777..fc933a44cf 100644 --- a/code/modules/antagonists/wizard/equipment/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -138,7 +138,7 @@ /////////////////////////////////////////Necromantic Stone/////////////////// -/obj/item/device/necromantic_stone +/obj/item/necromantic_stone name = "necromantic stone" desc = "A shard capable of resurrecting humans as skeleton thralls." icon = 'icons/obj/wizard.dmi' @@ -150,10 +150,10 @@ var/list/spooky_scaries = list() var/unlimited = 0 -/obj/item/device/necromantic_stone/unlimited +/obj/item/necromantic_stone/unlimited unlimited = 1 -/obj/item/device/necromantic_stone/attack(mob/living/carbon/human/M, mob/living/carbon/human/user) +/obj/item/necromantic_stone/attack(mob/living/carbon/human/M, mob/living/carbon/human/user) if(!istype(M)) return ..() @@ -183,7 +183,7 @@ desc = "A shard capable of resurrecting humans as skeleton thralls[unlimited ? "." : ", [spooky_scaries.len]/3 active thralls."]" -/obj/item/device/necromantic_stone/proc/check_spooky() +/obj/item/necromantic_stone/proc/check_spooky() if(unlimited) //no point, the list isn't used. return @@ -199,17 +199,17 @@ listclearnulls(spooky_scaries) //Funny gimmick, skeletons always seem to wear roman/ancient armour -/obj/item/device/necromantic_stone/proc/equip_roman_skeleton(mob/living/carbon/human/H) +/obj/item/necromantic_stone/proc/equip_roman_skeleton(mob/living/carbon/human/H) for(var/obj/item/I in H) H.dropItemToGround(I) var/hat = pick(/obj/item/clothing/head/helmet/roman, /obj/item/clothing/head/helmet/roman/legionaire) - H.equip_to_slot_or_del(new hat(H), slot_head) - H.equip_to_slot_or_del(new /obj/item/clothing/under/roman(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), slot_shoes) + H.equip_to_slot_or_del(new hat(H), SLOT_HEAD) + H.equip_to_slot_or_del(new /obj/item/clothing/under/roman(H), SLOT_W_UNIFORM) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), SLOT_SHOES) H.put_in_hands(new /obj/item/shield/riot/roman(H), TRUE) H.put_in_hands(new /obj/item/claymore(H), TRUE) - H.equip_to_slot_or_del(new /obj/item/twohanded/spear(H), slot_back) + H.equip_to_slot_or_del(new /obj/item/twohanded/spear(H), SLOT_BACK) /obj/item/voodoo diff --git a/code/modules/antagonists/wizard/equipment/soulstone.dm b/code/modules/antagonists/wizard/equipment/soulstone.dm index bea6d41685..1c63f4a570 100644 --- a/code/modules/antagonists/wizard/equipment/soulstone.dm +++ b/code/modules/antagonists/wizard/equipment/soulstone.dm @@ -1,4 +1,4 @@ -/obj/item/device/soulstone +/obj/item/soulstone name = "soulstone shard" icon = 'icons/obj/wizard.dmi' icon_state = "soulstone" @@ -8,13 +8,13 @@ layer = HIGH_OBJ_LAYER desc = "A fragment of the legendary treasure known simply as the 'Soul Stone'. The shard still flickers with a fraction of the full artefact's power." w_class = WEIGHT_CLASS_TINY - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT var/usability = 0 var/old_shard = FALSE var/spent = FALSE -/obj/item/device/soulstone/proc/was_used() +/obj/item/soulstone/proc/was_used() if(old_shard) spent = TRUE name = "dull [name]" @@ -22,20 +22,19 @@ the 'Soul Stone'. The shard lies still, dull and lifeless; \ whatever spark it once held long extinguished." -/obj/item/device/soulstone/anybody +/obj/item/soulstone/anybody usability = 1 -/obj/item/device/soulstone/anybody/chaplain +/obj/item/soulstone/anybody/chaplain name = "mysterious old shard" old_shard = TRUE -/obj/item/device/soulstone/pickup(mob/living/user) +/obj/item/soulstone/pickup(mob/living/user) ..() if(!iscultist(user) && !iswizard(user) && !usability) to_chat(user, "An overwhelming feeling of dread comes over you as you pick up the soulstone. It would be wise to be rid of this quickly.") - user.Dizzy(120) -/obj/item/device/soulstone/examine(mob/user) +/obj/item/soulstone/examine(mob/user) ..() if(usability || iscultist(user) || iswizard(user) || isobserver(user)) if (old_shard) @@ -46,14 +45,14 @@ if(spent) to_chat(user, "This shard is spent; it is now just a creepy rock.") -/obj/item/device/soulstone/Destroy() //Stops the shade from being qdel'd immediately and their ghost being sent back to the arrival shuttle. +/obj/item/soulstone/Destroy() //Stops the shade from being qdel'd immediately and their ghost being sent back to the arrival shuttle. for(var/mob/living/simple_animal/shade/A in src) A.death() return ..() //////////////////////////////Capturing//////////////////////////////////////////////////////// -/obj/item/device/soulstone/attack(mob/living/carbon/human/M, mob/living/user) +/obj/item/soulstone/attack(mob/living/carbon/human/M, mob/living/user) if(!iscultist(user) && !iswizard(user) && !usability) user.Unconscious(100) to_chat(user, "Your body is wracked with debilitating pain!") @@ -71,7 +70,7 @@ ///////////////////Options for using captured souls/////////////////////////////////////// -/obj/item/device/soulstone/attack_self(mob/living/user) +/obj/item/soulstone/attack_self(mob/living/user) if(!in_range(src, user)) return if(!iscultist(user) && !iswizard(user) && !usability) @@ -80,7 +79,7 @@ return release_shades(user) -/obj/item/device/soulstone/proc/release_shades(mob/user) +/obj/item/soulstone/proc/release_shades(mob/user) for(var/mob/living/simple_animal/shade/A in src) A.status_flags &= ~GODMODE A.canmove = 1 @@ -111,8 +110,8 @@ to_chat(user, "A Juggernaut, which is very hard to kill and can produce temporary walls, but is slow.") /obj/structure/constructshell/attackby(obj/item/O, mob/user, params) - if(istype(O, /obj/item/device/soulstone)) - var/obj/item/device/soulstone/SS = O + if(istype(O, /obj/item/soulstone)) + var/obj/item/soulstone/SS = O if(!iscultist(user) && !iswizard(user) && !SS.usability) to_chat(user, "An overwhelming feeling of dread comes over you as you attempt to place the soulstone into the shell. It would be wise to be rid of this quickly.") user.Dizzy(120) @@ -125,7 +124,7 @@ ////////////////////////////Proc for moving soul in and out off stone////////////////////////////////////// -/obj/item/device/soulstone/proc/transfer_soul(choice as text, target, mob/user) +/obj/item/soulstone/proc/transfer_soul(choice as text, target, mob/user) switch(choice) if("FORCE") if(!iscarbon(target)) //TODO: Add sacrifice stoning for non-organics, just because you have no body doesnt mean you dont have a soul @@ -223,7 +222,7 @@ if(newstruct.mind && ((stoner && iscultist(stoner)) || cultoverride) && SSticker && SSticker.mode) SSticker.mode.add_cultist(newstruct.mind, 0) if(iscultist(stoner) || cultoverride) - to_chat(newstruct, "You are still bound to serve the cult[stoner ? " and [stoner]":""], follow their orders and help them complete their goals at all costs.") + to_chat(newstruct, "You are still bound to serve the cult[stoner ? " and [stoner]":""], follow [stoner ? stoner.p_their() : "their"] orders and help [stoner ? stoner.p_them() : "them"] complete [stoner ? stoner.p_their() : "their"] goals at all costs.") else if(stoner) to_chat(newstruct, "You are still bound to serve your creator, [stoner], follow their orders and help them complete their goals at all costs.") newstruct.clear_alert("bloodsense") @@ -233,7 +232,7 @@ newstruct.cancel_camera() -/obj/item/device/soulstone/proc/init_shade(mob/living/carbon/human/T, mob/U, vic = 0) +/obj/item/soulstone/proc/init_shade(mob/living/carbon/human/T, mob/U, vic = 0) new /obj/effect/decal/remains/human(T.loc) //Spawns a skeleton T.stop_sound_channel(CHANNEL_HEARTBEAT) T.invisibility = INVISIBILITY_ABSTRACT @@ -260,7 +259,7 @@ to_chat(U, "Capture successful!: [T.real_name]'s soul has been ripped from their body and stored within the soul stone.") -/obj/item/device/soulstone/proc/getCultGhost(mob/living/carbon/human/T, mob/U) +/obj/item/soulstone/proc/getCultGhost(mob/living/carbon/human/T, mob/U) var/mob/dead/observer/chosen_ghost for(var/mob/dead/observer/ghost in GLOB.player_list) //We put them back in their body diff --git a/code/modules/antagonists/wizard/equipment/spellbook.dm b/code/modules/antagonists/wizard/equipment/spellbook.dm index 5dc32efd3b..a042b3d08c 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook.dm @@ -337,7 +337,7 @@ /datum/spellbook_entry/item/necrostone name = "A Necromantic Stone" desc = "A Necromantic stone is able to resurrect three dead individuals as skeletal thralls for you to command." - item_path = /obj/item/device/necromantic_stone + item_path = /obj/item/necromantic_stone category = "Assistance" /datum/spellbook_entry/item/wands diff --git a/code/modules/antagonists/wizard/wizard.dm b/code/modules/antagonists/wizard/wizard.dm index 146d79d413..819e51a77a 100644 --- a/code/modules/antagonists/wizard/wizard.dm +++ b/code/modules/antagonists/wizard/wizard.dm @@ -238,17 +238,17 @@ if(!istype(master_mob) || !istype(H)) return if(master_mob.ears) - H.equip_to_slot_or_del(new master_mob.ears.type, slot_ears) + H.equip_to_slot_or_del(new master_mob.ears.type, SLOT_EARS) if(master_mob.w_uniform) - H.equip_to_slot_or_del(new master_mob.w_uniform.type, slot_w_uniform) + H.equip_to_slot_or_del(new master_mob.w_uniform.type, SLOT_W_UNIFORM) if(master_mob.shoes) - H.equip_to_slot_or_del(new master_mob.shoes.type, slot_shoes) + H.equip_to_slot_or_del(new master_mob.shoes.type, SLOT_SHOES) if(master_mob.wear_suit) - H.equip_to_slot_or_del(new master_mob.wear_suit.type, slot_wear_suit) + H.equip_to_slot_or_del(new master_mob.wear_suit.type, SLOT_WEAR_SUIT) if(master_mob.head) - H.equip_to_slot_or_del(new master_mob.head.type, slot_head) + H.equip_to_slot_or_del(new master_mob.head.type, SLOT_HEAD) if(master_mob.back) - H.equip_to_slot_or_del(new master_mob.back.type, slot_back) + H.equip_to_slot_or_del(new master_mob.back.type, SLOT_BACK) //Operation: Fuck off and scare people owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/area_teleport/teleport(null)) diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm index 1e6fdc2fd4..3e291d0eee 100644 --- a/code/modules/assembly/assembly.dm +++ b/code/modules/assembly/assembly.dm @@ -3,8 +3,9 @@ #define WIRE_PULSE_SPECIAL (1<<2) #define WIRE_RADIO_RECEIVE (1<<3) #define WIRE_RADIO_PULSE (1<<4) +#define ASSEMBLY_BEEP_VOLUME 5 -/obj/item/device/assembly +/obj/item/assembly name = "assembly" desc = "A small electronic device that should never exist." icon = 'icons/obj/assemblies/new_assemblies.dmi' @@ -16,30 +17,36 @@ throw_speed = 3 throw_range = 7 + var/is_position_sensitive = FALSE //set to true if the device has different icons for each position. + //This will prevent things such as visible lasers from facing the incorrect direction when transformed by assembly_holder's update_icon() var/secured = TRUE var/list/attached_overlays = null - var/obj/item/device/assembly_holder/holder = null + var/obj/item/assembly_holder/holder = null var/wire_type = WIRE_RECEIVE | WIRE_PULSE var/attachable = FALSE // can this be attached to wires var/datum/wires/connected = null var/next_activate = 0 //When we're next allowed to activate - for spam control -/obj/item/device/assembly/get_part_rating() +/obj/item/assembly/get_part_rating() return 1 -/obj/item/device/assembly/proc/on_attach() +/obj/item/assembly/proc/on_attach() -/obj/item/device/assembly/proc/on_detach() +/obj/item/assembly/proc/on_detach() //call this when detaching it from a device. handles any special functions that need to be updated ex post facto + if(!holder) + return FALSE + forceMove(holder.drop_location()) + holder = null + return TRUE -/obj/item/device/assembly/proc/holder_movement() //Called when the holder is moved - return +/obj/item/assembly/proc/holder_movement() //Called when the holder is moved + if(!holder) + return FALSE + setDir(holder.dir) + return TRUE -/obj/item/device/assembly/proc/describe() // Called by grenades to describe the state of the trigger (time left, etc) - return "The trigger assembly looks broken!" - - -/obj/item/device/assembly/proc/is_secured(mob/user) +/obj/item/assembly/proc/is_secured(mob/user) if(!secured) to_chat(user, "The [name] is unsecured!") return FALSE @@ -47,7 +54,7 @@ //Called when another assembly acts on this one, var/radio will determine where it came from for wire calcs -/obj/item/device/assembly/proc/pulsed(radio = 0) +/obj/item/assembly/proc/pulsed(radio = FALSE) if(wire_type & WIRE_RECEIVE) INVOKE_ASYNC(src, .proc/activate) if(radio && (wire_type & WIRE_RADIO_RECEIVE)) @@ -56,7 +63,7 @@ //Called when this device attempts to act on another device, var/radio determines if it was sent via radio or direct -/obj/item/device/assembly/proc/pulse(radio = 0) +/obj/item/assembly/proc/pulse(radio = FALSE) if(connected && wire_type) connected.pulse_assembly(src) return TRUE @@ -68,52 +75,50 @@ // What the device does when turned on -/obj/item/device/assembly/proc/activate() +/obj/item/assembly/proc/activate() if(QDELETED(src) || !secured || (next_activate > world.time)) return FALSE next_activate = world.time + 30 return TRUE -/obj/item/device/assembly/proc/toggle_secure() +/obj/item/assembly/proc/toggle_secure() secured = !secured update_icon() return secured -/obj/item/device/assembly/attackby(obj/item/W, mob/user, params) +/obj/item/assembly/attackby(obj/item/W, mob/user, params) if(isassembly(W)) - var/obj/item/device/assembly/A = W + var/obj/item/assembly/A = W if((!A.secured) && (!secured)) - holder = new/obj/item/device/assembly_holder(get_turf(src)) + holder = new/obj/item/assembly_holder(get_turf(src)) holder.assemble(src,A,user) to_chat(user, "You attach and secure \the [A] to \the [src]!") else to_chat(user, "Both devices must be in attachable mode to be attached together.") return - if(istype(W, /obj/item/screwdriver)) - if(toggle_secure()) - to_chat(user, "\The [src] is ready!") - else - to_chat(user, "\The [src] can now be attached!") - return ..() - -/obj/item/device/assembly/examine(mob/user) - ..() - if(secured) - to_chat(user, "\The [src] is secured and ready to be used.") +/obj/item/assembly/screwdriver_act(mob/living/user, obj/item/I) + if(toggle_secure()) + to_chat(user, "\The [src] is ready!") else - to_chat(user, "\The [src] can be attached to other things.") + to_chat(user, "\The [src] can now be attached!") + add_fingerprint(user) + return TRUE + +/obj/item/assembly/examine(mob/user) + ..() + to_chat(user, "\The [src] [secured? "is secured and ready to be used!" : "can be attached to other things."]") -/obj/item/device/assembly/attack_self(mob/user) +/obj/item/assembly/attack_self(mob/user) if(!user) return FALSE user.set_machine(src) interact(user) return TRUE -/obj/item/device/assembly/interact(mob/user) +/obj/item/assembly/interact(mob/user) return ui_interact(user) diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm index 18fda04a1b..ca85255bf0 100644 --- a/code/modules/assembly/bomb.dm +++ b/code/modules/assembly/bomb.dm @@ -1,4 +1,4 @@ -/obj/item/device/onetankbomb +/obj/item/onetankbomb name = "bomb" icon = 'icons/obj/tank.dmi' item_state = "assembly" @@ -10,14 +10,17 @@ throw_range = 4 flags_1 = CONDUCT_1 var/status = FALSE //0 - not readied //1 - bomb finished with welder - var/obj/item/device/assembly_holder/bombassembly = null //The first part of the bomb is an assembly holder, holding an igniter+some device + var/obj/item/assembly_holder/bombassembly = null //The first part of the bomb is an assembly holder, holding an igniter+some device var/obj/item/tank/bombtank = null //the second part of the bomb is a plasma tank +/obj/item/onetankbomb/IsSpecialAssembly() + return TRUE -/obj/item/device/onetankbomb/examine(mob/user) +/obj/item/onetankbomb/examine(mob/user) bombtank.examine(user) -/obj/item/device/onetankbomb/update_icon() +/obj/item/onetankbomb/update_icon() + cut_overlays() if(bombtank) icon = bombtank.icon icon_state = bombtank.icon_state @@ -26,62 +29,94 @@ copy_overlays(bombassembly) add_overlay("bomb_assembly") -/obj/item/device/onetankbomb/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/device/analyzer)) +/obj/item/onetankbomb/attackby(obj/item/W, mob/user, params) + if(istype(W, /obj/item/analyzer)) bombtank.attackby(W, user) return - if(istype(W, /obj/item/wrench) && !status) //This is basically bomb assembly code inverted. apparently it works. - - to_chat(user, "You disassemble [src].") - - bombassembly.forceMove(drop_location()) - bombassembly.master = null - bombassembly = null - - bombtank.forceMove(drop_location()) - bombtank.master = null - bombtank = null - - qdel(src) - return - var/obj/item/weldingtool/WT = W - if((istype(WT) && WT.welding)) - if(!status) - status = TRUE - GLOB.bombers += "[key_name(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]" - message_admins("[key_name_admin(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]") - to_chat(user, "A pressure hole has been bored to [bombtank] valve. \The [bombtank] can now be ignited.") add_fingerprint(user) ..() -/obj/item/device/onetankbomb/attack_self(mob/user) //pressing the bomb accesses its assembly +/obj/item/onetankbomb/wrench_act(mob/living/user, obj/item/I) + to_chat(user, "You disassemble [src]!") + if(bombassembly) + bombassembly.forceMove(drop_location()) + bombassembly.master = null + bombassembly = null + if(bombtank) + bombtank.forceMove(drop_location()) + bombtank.master = null + bombtank = null + qdel(src) + return TRUE + +/obj/item/onetankbomb/welder_act(mob/living/user, obj/item/I) + . = FALSE + if(status) + to_chat(user, "[bombtank] already has a pressure hole!") + return + if(!I.tool_start_check(user, amount=0)) + return + if(I.use_tool(src, user, 0, volume=40)) + status = TRUE + GLOB.bombers += "[key_name(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]" + message_admins("[key_name_admin(user)] welded a single tank bomb. Temp: [bombtank.air_contents.temperature-T0C]") + to_chat(user, "A pressure hole has been bored to [bombtank] valve. \The [bombtank] can now be ignited.") + add_fingerprint(user) + return TRUE + + +/obj/item/onetankbomb/attack_self(mob/user) //pressing the bomb accesses its assembly bombassembly.attack_self(user, TRUE) add_fingerprint(user) return -/obj/item/device/onetankbomb/receive_signal() //This is mainly called by the sensor through sense() to the holder, and from the holder to here. - visible_message("[icon2html(src, viewers(src))] *beep* *beep*", "*beep* *beep*") +/obj/item/onetankbomb/receive_signal() //This is mainly called by the sensor through sense() to the holder, and from the holder to here. + audible_message("[icon2html(src, hearers(src))] *beep* *beep* *beep*") + playsound(src, 'sound/machines/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE) sleep(10) - if(!src) + if(QDELETED(src)) return if(status) bombtank.ignite() //if its not a dud, boom (or not boom if you made shitty mix) the ignite proc is below, in this file else bombtank.release() -/obj/item/device/onetankbomb/Crossed(atom/movable/AM as mob|obj) //for mousetraps +//Assembly / attached device memes + +/obj/item/onetankbomb/Crossed(atom/movable/AM as mob|obj) //for mousetraps + . = ..() if(bombassembly) bombassembly.Crossed(AM) -/obj/item/device/onetankbomb/on_found(mob/finder) //for mousetraps +/obj/item/onetankbomb/on_found(mob/finder) //for mousetraps if(bombassembly) bombassembly.on_found(finder) +/obj/item/onetankbomb/attack_hand() //also for mousetraps + . = ..() + if(.) + return + if(bombassembly) + bombassembly.attack_hand() + +/obj/item/onetankbomb/Move() + . = ..() + if(bombassembly) + bombassembly.setDir(dir) + bombassembly.Move() + +/obj/item/onetankbomb/dropped() + . = ..() + if(bombassembly) + bombassembly.dropped() + + + // ---------- Procs below are for tanks that are used exclusively in 1-tank bombs ---------- //Bomb assembly proc. This turns assembly+tank into a bomb -/obj/item/tank/proc/bomb_assemble(obj/item/device/assembly_holder/assembly, mob/living/user) +/obj/item/tank/proc/bomb_assemble(obj/item/assembly_holder/assembly, mob/living/user) //Check if either part of the assembly has an igniter, but if both parts are igniters, then fuck it if(isigniter(assembly.a_left) == isigniter(assembly.a_right)) return @@ -94,7 +129,7 @@ to_chat(user, "[assembly] is stuck to your hand!") return - var/obj/item/device/onetankbomb/bomb = new + var/obj/item/onetankbomb/bomb = new user.transferItemToLoc(src, bomb) user.transferItemToLoc(assembly, bomb) diff --git a/code/modules/assembly/doorcontrol.dm b/code/modules/assembly/doorcontrol.dm index 47d3d9e436..f320872076 100644 --- a/code/modules/assembly/doorcontrol.dm +++ b/code/modules/assembly/doorcontrol.dm @@ -1,30 +1,29 @@ -/obj/item/device/assembly/control +/obj/item/assembly/control name = "blast door controller" desc = "A small electronic device able to control a blast door remotely." icon_state = "control" - attachable = 1 + attachable = TRUE var/id = null var/can_change_id = 0 - var/cooldown = 0//Door cooldowns + var/cooldown = FALSE //Door cooldowns -/obj/item/device/assembly/control/examine(mob/user) +/obj/item/assembly/control/examine(mob/user) ..() if(id) to_chat(user, "Its channel ID is '[id]'.") -/obj/item/device/assembly/control/activate() - cooldown = 1 +/obj/item/assembly/control/activate() + cooldown = TRUE var/openclose for(var/obj/machinery/door/poddoor/M in GLOB.machines) if(M.id == src.id) if(openclose == null) openclose = M.density INVOKE_ASYNC(M, openclose ? /obj/machinery/door/poddoor.proc/open : /obj/machinery/door/poddoor.proc/close) - sleep(10) - cooldown = 0 + addtimer(VARSET_CALLBACK(src, cooldown, FALSE), 10) -/obj/item/device/assembly/control/airlock +/obj/item/assembly/control/airlock name = "airlock controller" desc = "A small electronic device able to control an airlock remotely." id = "badmin" // Set it to null for MEGAFUN. @@ -37,8 +36,8 @@ 16= door safties (SAFE) */ -/obj/item/device/assembly/control/airlock/activate() - cooldown = 1 +/obj/item/assembly/control/airlock/activate() + cooldown = TRUE var/doors_need_closing = FALSE var/list/obj/machinery/door/airlock/open_or_close = list() for(var/obj/machinery/door/airlock/D in GLOB.airlocks) @@ -66,16 +65,15 @@ for(var/D in open_or_close) INVOKE_ASYNC(D, doors_need_closing ? /obj/machinery/door/airlock.proc/close : /obj/machinery/door/airlock.proc/open) - sleep(10) - cooldown = 0 + addtimer(VARSET_CALLBACK(src, cooldown, FALSE), 10) -/obj/item/device/assembly/control/massdriver +/obj/item/assembly/control/massdriver name = "mass driver controller" desc = "A small electronic device able to control a mass driver." -/obj/item/device/assembly/control/massdriver/activate() - cooldown = 1 +/obj/item/assembly/control/massdriver/activate() + cooldown = TRUE for(var/obj/machinery/door/poddoor/M in GLOB.machines) if (M.id == src.id) INVOKE_ASYNC(M, /obj/machinery/door/poddoor.proc/open) @@ -92,16 +90,15 @@ if (M.id == src.id) INVOKE_ASYNC(M, /obj/machinery/door/poddoor.proc/close) - sleep(10) - cooldown = 0 + addtimer(VARSET_CALLBACK(src, cooldown, FALSE), 10) -/obj/item/device/assembly/control/igniter +/obj/item/assembly/control/igniter name = "ignition controller" desc = "A remote controller for a mounted igniter." -/obj/item/device/assembly/control/igniter/activate() - cooldown = 1 +/obj/item/assembly/control/igniter/activate() + cooldown = TRUE for(var/obj/machinery/sparker/M in GLOB.machines) if (M.id == src.id) INVOKE_ASYNC(M, /obj/machinery/sparker.proc/ignite) @@ -112,33 +109,29 @@ M.on = !M.on M.icon_state = "igniter[M.on]" - sleep(30) - cooldown = 0 + addtimer(VARSET_CALLBACK(src, cooldown, FALSE), 30) - -/obj/item/device/assembly/control/flasher +/obj/item/assembly/control/flasher name = "flasher controller" desc = "A remote controller for a mounted flasher." -/obj/item/device/assembly/control/flasher/activate() - cooldown = 1 +/obj/item/assembly/control/flasher/activate() + cooldown = TRUE for(var/obj/machinery/flasher/M in GLOB.machines) if(M.id == src.id) INVOKE_ASYNC(M, /obj/machinery/flasher.proc/flash) - sleep(50) - cooldown = 0 + addtimer(VARSET_CALLBACK(src, cooldown, FALSE), 50) -/obj/item/device/assembly/control/crematorium +/obj/item/assembly/control/crematorium name = "crematorium controller" desc = "An evil-looking remote controller for a crematorium." -/obj/item/device/assembly/control/crematorium/activate() - cooldown = 1 +/obj/item/assembly/control/crematorium/activate() + cooldown = TRUE for (var/obj/structure/bodycontainer/crematorium/C in GLOB.crematoriums) if (C.id == id) C.cremate(usr) - sleep(50) - cooldown = 0 + addtimer(VARSET_CALLBACK(src, cooldown, FALSE), 50) diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm index 2b0e3af514..dceda9ab9d 100644 --- a/code/modules/assembly/flash.dm +++ b/code/modules/assembly/flash.dm @@ -1,6 +1,7 @@ -/obj/item/device/assembly/flash +/obj/item/assembly/flash name = "flash" desc = "A powerful and versatile flashbulb device, with applications ranging from disorienting attackers to acting as visual receptors in robot production." + icon = 'icons/obj/device.dmi' icon_state = "flash" item_state = "flashtool" lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' @@ -15,7 +16,7 @@ var/cooldown = 0 var/last_trigger = 0 //Last time it was successfully triggered. -/obj/item/device/assembly/flash/suicide_act(mob/living/user) +/obj/item/assembly/flash/suicide_act(mob/living/user) if (crit_fail) user.visible_message("[user] raises \the [src] up to [user.p_their()] eyes and activates it ... but its burnt out!") return SHAME @@ -26,7 +27,7 @@ attack(user,user) return FIRELOSS -/obj/item/device/assembly/flash/update_icon(flash = FALSE) +/obj/item/assembly/flash/update_icon(flash = FALSE) cut_overlays() attached_overlays = list() if(crit_fail) @@ -39,13 +40,13 @@ if(holder) holder.update_icon() -/obj/item/device/assembly/flash/proc/clown_check(mob/living/carbon/human/user) +/obj/item/assembly/flash/proc/clown_check(mob/living/carbon/human/user) if(user.has_trait(TRAIT_CLUMSY) && prob(50)) flash_carbon(user, user, 15, 0) return FALSE return TRUE -/obj/item/device/assembly/flash/proc/burn_out() //Made so you can override it if you want to have an invincible flash from R&D or something. +/obj/item/assembly/flash/proc/burn_out() //Made so you can override it if you want to have an invincible flash from R&D or something. if(!crit_fail) crit_fail = TRUE update_icon() @@ -56,7 +57,7 @@ var/turf/T = get_turf(src) T.visible_message("[src] burns out!") -/obj/item/device/assembly/flash/proc/flash_recharge(interval = 10) +/obj/item/assembly/flash/proc/flash_recharge(interval = 10) var/deciseconds_passed = world.time - last_used for(var/seconds = deciseconds_passed / 10, seconds >= interval, seconds -= interval) //get 1 charge every interval times_used-- @@ -68,7 +69,7 @@ return TRUE //BYPASS CHECKS ALSO PREVENTS BURNOUT! -/obj/item/device/assembly/flash/proc/AOE_flash(bypass_checks = FALSE, range = 3, power = 5, targeted = FALSE, mob/user) +/obj/item/assembly/flash/proc/AOE_flash(bypass_checks = FALSE, range = 3, power = 5, targeted = FALSE, mob/user) if(!bypass_checks && !try_use_flash()) return FALSE var/list/mob/targets = get_flash_targets(get_turf(src), range, FALSE) @@ -78,7 +79,7 @@ flash_carbon(C, user, power, targeted, TRUE) return TRUE -/obj/item/device/assembly/flash/proc/get_flash_targets(atom/target_loc, range = 3, override_vision_checks = FALSE) +/obj/item/assembly/flash/proc/get_flash_targets(atom/target_loc, range = 3, override_vision_checks = FALSE) if(!target_loc) target_loc = loc if(override_vision_checks) @@ -88,11 +89,11 @@ else return typecache_filter_list(target_loc.GetAllContents(), typecacheof(list(/mob/living))) -/obj/item/device/assembly/flash/proc/try_use_flash(mob/user = null) +/obj/item/assembly/flash/proc/try_use_flash(mob/user = null) if(crit_fail || (world.time < last_trigger + cooldown)) return FALSE last_trigger = world.time - playsound(src, 'sound/weapons/flash.ogg', 100, 1) + playsound(src, 'sound/weapons/flash.ogg', 100, TRUE) times_used++ flash_recharge() update_icon(TRUE) @@ -100,7 +101,7 @@ return FALSE return TRUE -/obj/item/device/assembly/flash/proc/flash_carbon(mob/living/carbon/M, mob/user, power = 15, targeted = TRUE, generic_message = FALSE) +/obj/item/assembly/flash/proc/flash_carbon(mob/living/carbon/M, mob/user, power = 15, targeted = TRUE, generic_message = FALSE) if(!istype(M)) return add_logs(user, M, "[targeted? "flashed(targeted)" : "flashed(AOE)"]", src) @@ -127,7 +128,7 @@ if(M.flash_act()) M.confused += power -/obj/item/device/assembly/flash/attack(mob/living/M, mob/user) +/obj/item/assembly/flash/attack(mob/living/M, mob/user) if(!try_use_flash(user)) return FALSE if(iscarbon(M)) @@ -145,26 +146,26 @@ user.visible_message("[user] fails to blind [M] with the flash!", "You fail to blind [M] with the flash!") -/obj/item/device/assembly/flash/attack_self(mob/living/carbon/user, flag = 0, emp = 0) +/obj/item/assembly/flash/attack_self(mob/living/carbon/user, flag = 0, emp = 0) if(holder) return FALSE if(!AOE_flash(FALSE, 3, 5, FALSE, user)) return FALSE to_chat(user, "[src] emits a blinding light!") -/obj/item/device/assembly/flash/emp_act(severity) +/obj/item/assembly/flash/emp_act(severity) if(!try_use_flash()) return FALSE AOE_flash() burn_out() . = ..() -/obj/item/device/assembly/flash/activate()//AOE flash on signal recieved +/obj/item/assembly/flash/activate()//AOE flash on signal recieved if(!..()) return AOE_flash() -/obj/item/device/assembly/flash/proc/terrible_conversion_proc(mob/living/carbon/human/H, mob/user) +/obj/item/assembly/flash/proc/terrible_conversion_proc(mob/living/carbon/human/H, mob/user) if(istype(H) && ishuman(user) && H.stat != DEAD) if(user.mind) var/datum/antagonist/rev/head/converter = user.mind.has_antag_datum(/datum/antagonist/rev/head) @@ -182,58 +183,60 @@ to_chat(user, "This mind seems resistant to the flash!") -/obj/item/device/assembly/flash/cyborg +/obj/item/assembly/flash/cyborg -/obj/item/device/assembly/flash/cyborg/attack(mob/living/M, mob/user) +/obj/item/assembly/flash/cyborg/attack(mob/living/M, mob/user) ..() new /obj/effect/temp_visual/borgflash(get_turf(src)) -/obj/item/device/assembly/flash/cyborg/attack_self(mob/user) +/obj/item/assembly/flash/cyborg/attack_self(mob/user) ..() new /obj/effect/temp_visual/borgflash(get_turf(src)) -/obj/item/device/assembly/flash/cyborg/attackby(obj/item/W, mob/user, params) +/obj/item/assembly/flash/cyborg/attackby(obj/item/W, mob/user, params) + return +/obj/item/assembly/flash/cyborg/screwdriver_act(mob/living/user, obj/item/I) return -/obj/item/device/assembly/flash/memorizer +/obj/item/assembly/flash/memorizer name = "memorizer" desc = "If you see this, you're not likely to remember it any time soon." icon = 'icons/obj/device.dmi' icon_state = "memorizer" item_state = "nullrod" -/obj/item/device/assembly/flash/handheld //this is now the regular pocket flashes +/obj/item/assembly/flash/handheld //this is now the regular pocket flashes -/obj/item/device/assembly/flash/armimplant +/obj/item/assembly/flash/armimplant name = "photon projector" desc = "A high-powered photon projector implant normally used for lighting purposes, but also doubles as a flashbulb weapon. Self-repair protocals fix the flashbulb if it ever burns out." var/flashcd = 20 var/overheat = 0 var/obj/item/organ/cyberimp/arm/flash/I = null -/obj/item/device/assembly/flash/armimplant/burn_out() +/obj/item/assembly/flash/armimplant/burn_out() if(I && I.owner) to_chat(I.owner, "Your photon projector implant overheats and deactivates!") I.Retract() overheat = TRUE addtimer(CALLBACK(src, .proc/cooldown), flashcd * 2) -/obj/item/device/assembly/flash/armimplant/try_use_flash(mob/user = null) +/obj/item/assembly/flash/armimplant/try_use_flash(mob/user = null) if(overheat) if(I && I.owner) to_chat(I.owner, "Your photon projector is running too hot to be used again so quickly!") return FALSE overheat = TRUE addtimer(CALLBACK(src, .proc/cooldown), flashcd) - playsound(src, 'sound/weapons/flash.ogg', 100, 1) + playsound(src, 'sound/weapons/flash.ogg', 100, TRUE) update_icon(1) return TRUE -/obj/item/device/assembly/flash/armimplant/proc/cooldown() +/obj/item/assembly/flash/armimplant/proc/cooldown() overheat = FALSE -/obj/item/device/assembly/flash/shield +/obj/item/assembly/flash/shield name = "strobe shield" desc = "A shield with a built in, high intensity light capable of blinding and disorienting suspects. Takes regular handheld flashes as bulbs." icon = 'icons/obj/items_and_weapons.dmi' @@ -241,7 +244,7 @@ item_state = "flashshield" lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' - slot_flags = SLOT_BACK + slot_flags = ITEM_SLOT_BACK force = 10 throwforce = 5 throw_speed = 2 @@ -252,15 +255,15 @@ block_chance = 50 armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 70) -/obj/item/device/assembly/flash/shield/flash_recharge(interval=10) +/obj/item/assembly/flash/shield/flash_recharge(interval=10) if(times_used >= 4) burn_out() return FALSE return TRUE -/obj/item/device/assembly/flash/shield/attackby(obj/item/W, mob/user) - if(istype(W, /obj/item/device/assembly/flash/handheld)) - var/obj/item/device/assembly/flash/handheld/flash = W +/obj/item/assembly/flash/shield/attackby(obj/item/W, mob/user) + if(istype(W, /obj/item/assembly/flash/handheld)) + var/obj/item/assembly/flash/handheld/flash = W if(flash.crit_fail) to_chat(user, "No sense replacing it with a broken bulb.") return @@ -271,14 +274,14 @@ return crit_fail = FALSE times_used = 0 - playsound(src, 'sound/items/deconstruct.ogg', 50, 1) + playsound(src, 'sound/items/deconstruct.ogg', 50, TRUE) update_icon() flash.crit_fail = TRUE flash.update_icon() return ..() -/obj/item/device/assembly/flash/shield/update_icon(flash = FALSE) +/obj/item/assembly/flash/shield/update_icon(flash = FALSE) icon_state = "flashshield" item_state = "flashshield" @@ -293,6 +296,6 @@ if(holder) holder.update_icon() -/obj/item/device/assembly/flash/shield/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) +/obj/item/assembly/flash/shield/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) activate() return ..() diff --git a/code/modules/assembly/health.dm b/code/modules/assembly/health.dm index 25271c4d9b..78d3f686ab 100644 --- a/code/modules/assembly/health.dm +++ b/code/modules/assembly/health.dm @@ -1,48 +1,45 @@ -/obj/item/device/assembly/health +/obj/item/assembly/health name = "health sensor" desc = "Used for scanning and monitoring health." icon_state = "health" materials = list(MAT_METAL=800, MAT_GLASS=200) - attachable = 1 - secured = 0 + attachable = TRUE + secured = FALSE - var/scanning = 0 + var/scanning = FALSE var/health_scan var/alarm_health = 0 -/obj/item/device/assembly/health/examine(mob/user) +/obj/item/assembly/health/examine(mob/user) ..() to_chat(user, "Use a multitool to swap between \"detect death\" mode and \"detect critical state\" mode.") -/obj/item/device/assembly/health/activate() +/obj/item/assembly/health/activate() if(!..()) - return 0//Cooldown check + return FALSE//Cooldown check toggle_scan() - return 0 + return TRUE -/obj/item/device/assembly/health/toggle_secure() +/obj/item/assembly/health/toggle_secure() secured = !secured if(secured && scanning) START_PROCESSING(SSobj, src) else - scanning = 0 + scanning = FALSE STOP_PROCESSING(SSobj, src) update_icon() return secured -/obj/item/device/assembly/health/attackby(obj/item/W as obj, mob/user as mob) - if(istype(W, /obj/item/device/multitool)) - if(alarm_health == 0) - alarm_health = -90 - user.show_message("You toggle [src] to \"detect death\" mode.") - else - alarm_health = 0 - user.show_message("You toggle [src] to \"detect critical state\" mode.") - return +/obj/item/assembly/health/multitool_act(mob/living/user, obj/item/I) + if(alarm_health == 0) + alarm_health = -90 + to_chat(user, "You toggle [src] to \"detect death\" mode.") else - return ..() + alarm_health = 0 + to_chat(user, "You toggle [src] to \"detect critical state\" mode.") + return TRUE -/obj/item/device/assembly/health/process() +/obj/item/assembly/health/process() if(!scanning || !secured) return @@ -58,12 +55,13 @@ health_scan = M.health if(health_scan <= alarm_health) pulse() - audible_message("[icon2html(src, hearers(src))] *beep* *beep*", "*beep* *beep*") + audible_message("[icon2html(src, hearers(src))] *beep* *beep* *beep*") + playsound(src, 'sound/machines/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE) toggle_scan() return return -/obj/item/device/assembly/health/proc/toggle_scan() +/obj/item/assembly/health/proc/toggle_scan() if(!secured) return 0 scanning = !scanning @@ -73,18 +71,19 @@ STOP_PROCESSING(SSobj, src) return -/obj/item/device/assembly/health/ui_interact(mob/user as mob)//TODO: Change this to the wires thingy +/obj/item/assembly/health/ui_interact(mob/user as mob)//TODO: Change this to the wires thingy . = ..() if(!secured) user.show_message("The [name] is unsecured!") - return 0 - var/dat = "Health Sensor [scanning?"On":"Off"]" + return FALSE + var/dat = "Health Sensor" + dat += "
    [scanning?"On":"Off"]" if(scanning && health_scan) dat += "
    Health: [health_scan]" user << browse(dat, "window=hscan") onclose(user, "hscan") -/obj/item/device/assembly/health/Topic(href, href_list) +/obj/item/assembly/health/Topic(href, href_list) ..() if(!ismob(usr)) return diff --git a/code/modules/assembly/helpers.dm b/code/modules/assembly/helpers.dm index cb7bd59bb5..f1dc93b446 100644 --- a/code/modules/assembly/helpers.dm +++ b/code/modules/assembly/helpers.dm @@ -1,16 +1,16 @@ -// See _DEFINES/is_helpers.dm for type helpers - -/* -Name: IsSpecialAssembly -Desc: If true is an object that can be attached to an assembly holder but is a special thing like a plasma can or door -*/ - -/obj/proc/IsSpecialAssembly() - return 0 - -/* -Name: IsAssemblyHolder -Desc: If true is an object that can hold an assemblyholder object -*/ -/obj/proc/IsAssemblyHolder() - return 0 \ No newline at end of file +// See _DEFINES/is_helpers.dm for type helpers + +/* +Name: IsSpecialAssembly +Desc: If true is an object that can be attached to an assembly holder but is a special thing like a plasma can or door +*/ + +/obj/proc/IsSpecialAssembly() + return FALSE + +/* +Name: IsAssemblyHolder +Desc: If true is an object that can hold an assemblyholder object +*/ +/obj/proc/IsAssemblyHolder() + return FALSE diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index 79a92af527..031ce866ba 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -1,4 +1,4 @@ -/obj/item/device/assembly_holder +/obj/item/assembly_holder name = "Assembly" icon = 'icons/obj/assemblies/new_assemblies.dmi' icon_state = "holder" @@ -11,21 +11,21 @@ throw_speed = 2 throw_range = 7 - var/obj/item/device/assembly/a_left = null - var/obj/item/device/assembly/a_right = null + var/obj/item/assembly/a_left = null + var/obj/item/assembly/a_right = null -/obj/item/device/assembly_holder/IsAssemblyHolder() - return 1 +/obj/item/assembly_holder/IsAssemblyHolder() + return TRUE -/obj/item/device/assembly_holder/proc/assemble(obj/item/device/assembly/A, obj/item/device/assembly/A2, mob/user) +/obj/item/assembly_holder/proc/assemble(obj/item/assembly/A, obj/item/assembly/A2, mob/user) attach(A,user) attach(A2,user) name = "[A.name]-[A2.name] assembly" update_icon() SSblackbox.record_feedback("tally", "assembly_made", 1, "[initial(A.name)]-[initial(A2.name)]") -/obj/item/device/assembly_holder/proc/attach(obj/item/device/assembly/A, mob/user) +/obj/item/assembly_holder/proc/attach(obj/item/assembly/A, mob/user) if(!A.remove_item_from_storage(src)) if(user) user.transferItemToLoc(A, src) @@ -37,8 +37,9 @@ a_left = A else a_right = A + A.holder_movement() -/obj/item/device/assembly_holder/update_icon() +/obj/item/assembly_holder/update_icon() cut_overlays() if(a_left) add_overlay("[a_left.icon_state]_left") @@ -46,57 +47,67 @@ add_overlay("[O]_l") if(a_right) - var/mutable_appearance/right = mutable_appearance(icon, "[a_right.icon_state]_left") - right.transform = matrix(-1, 0, 0, 0, 1, 0) - for(var/O in a_right.attached_overlays) - right.add_overlay("[O]_l") - add_overlay(right) + if(a_right.is_position_sensitive) + add_overlay("[a_right.icon_state]_right") + for(var/O in a_right.attached_overlays) + add_overlay("[O]_r") + else + var/mutable_appearance/right = mutable_appearance(icon, "[a_right.icon_state]_left") + right.transform = matrix(-1, 0, 0, 0, 1, 0) + for(var/O in a_right.attached_overlays) + right.add_overlay("[O]_l") + add_overlay(right) if(master) master.update_icon() -/obj/item/device/assembly_holder/Crossed(atom/movable/AM as mob|obj) +/obj/item/assembly_holder/Crossed(atom/movable/AM as mob|obj) if(a_left) a_left.Crossed(AM) if(a_right) a_right.Crossed(AM) -/obj/item/device/assembly_holder/on_found(mob/finder) +/obj/item/assembly_holder/on_found(mob/finder) if(a_left) a_left.on_found(finder) if(a_right) a_right.on_found(finder) -/obj/item/device/assembly_holder/Move() +/obj/item/assembly_holder/Move() . = ..() - if(a_left && a_right) + if(a_left) a_left.holder_movement() + if(a_right) a_right.holder_movement() -/obj/item/device/assembly_holder/attack_hand()//Perhapse this should be a holder_pickup proc instead, can add if needbe I guess +/obj/item/assembly_holder/dropped(mob/user) + . = ..() + if(a_left) + a_left.dropped() + if(a_right) + a_right.dropped() + +/obj/item/assembly_holder/attack_hand()//Perhapse this should be a holder_pickup proc instead, can add if needbe I guess . = ..() if(.) return - if(a_left && a_right) - a_left.holder_movement() - a_right.holder_movement() + if(a_left) + a_left.attack_hand() + if(a_right) + a_right.attack_hand() -/obj/item/device/assembly_holder/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/screwdriver)) - var/turf/T = get_turf(src) - if(!T) - return 0 - if(a_left) - a_left.holder = null - a_left.forceMove(T) - if(a_right) - a_right.holder = null - a_right.forceMove(T) - qdel(src) - else - ..() +/obj/item/assembly_holder/screwdriver_act(mob/user, obj/item/tool) + to_chat(user, "You disassemble [src]!") + if(a_left) + a_left.on_detach() + a_left = null + if(a_right) + a_right.on_detach() + a_right = null + qdel(src) + return TRUE -/obj/item/device/assembly_holder/attack_self(mob/user) +/obj/item/assembly_holder/attack_self(mob/user) src.add_fingerprint(user) if(!a_left || !a_right) to_chat(user, "Assembly part missing!") @@ -113,14 +124,14 @@ a_right.attack_self(user) -/obj/item/device/assembly_holder/proc/process_activation(obj/D, normal = 1, special = 1) +/obj/item/assembly_holder/proc/process_activation(obj/D, normal = 1, special = 1) if(!D) - return 0 + return FALSE if((normal) && (a_right) && (a_left)) if(a_right != D) - a_right.pulsed(0) + a_right.pulsed(FALSE) if(a_left != D) - a_left.pulsed(0) + a_left.pulsed(FALSE) if(master) master.receive_signal() - return 1 + return TRUE diff --git a/code/modules/assembly/igniter.dm b/code/modules/assembly/igniter.dm index 1a0f439820..2aae7db5e2 100644 --- a/code/modules/assembly/igniter.dm +++ b/code/modules/assembly/igniter.dm @@ -1,4 +1,4 @@ -/obj/item/device/assembly/igniter +/obj/item/assembly/igniter name = "igniter" desc = "A small electronic device able to ignite combustible substances." icon_state = "igniter" @@ -6,35 +6,35 @@ var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread heat = 1000 -/obj/item/device/assembly/igniter/suicide_act(mob/living/carbon/user) +/obj/item/assembly/igniter/suicide_act(mob/living/carbon/user) user.visible_message("[user] is trying to ignite [user.p_them()]self with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") user.IgniteMob() return FIRELOSS -/obj/item/device/assembly/igniter/New() +/obj/item/assembly/igniter/New() ..() sparks.set_up(2, 0, src) sparks.attach(src) -/obj/item/device/assembly/igniter/Destroy() +/obj/item/assembly/igniter/Destroy() qdel(sparks) sparks = null . = ..() -/obj/item/device/assembly/igniter/activate() +/obj/item/assembly/igniter/activate() if(!..()) - return 0//Cooldown check + return FALSE//Cooldown check var/turf/location = get_turf(loc) if(location) location.hotspot_expose(1000,1000) sparks.start() - return 1 + return TRUE -/obj/item/device/assembly/igniter/attack_self(mob/user) +/obj/item/assembly/igniter/attack_self(mob/user) activate() add_fingerprint(user) -/obj/item/device/assembly/igniter/ignition_effect(atom/A, mob/user) +/obj/item/assembly/igniter/ignition_effect(atom/A, mob/user) . = "[user] fiddles with [src], and manages to \ light [A]." activate() diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index d18b41c68b..4a6c9d2db3 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -1,8 +1,9 @@ -/obj/item/device/assembly/infra +/obj/item/assembly/infra name = "infrared emitter" - desc = "Emits a visible or invisible beam and is triggered when the beam is interrupted.\nAlt-click to rotate it clockwise." + desc = "Emits a visible or invisible beam and is triggered when the beam is interrupted." icon_state = "infrared" materials = list(MAT_METAL=1000, MAT_GLASS=500) + is_position_sensitive = TRUE var/on = FALSE var/visible = FALSE @@ -10,58 +11,91 @@ var/list/obj/effect/beam/i_beam/beams var/olddir = 0 var/datum/component/redirect/listener + var/hearing_range = 3 -/obj/item/device/assembly/infra/Initialize() +/obj/item/assembly/infra/Initialize() . = ..() beams = list() START_PROCESSING(SSobj, src) -/obj/item/device/assembly/infra/Destroy() +/obj/item/assembly/infra/ComponentInitialize() + . = ..() + AddComponent( + /datum/component/simple_rotation, + ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_FLIP | ROTATION_VERBS, + null, + null, + CALLBACK(src,.proc/after_rotation) + ) + +/obj/item/assembly/infra/proc/after_rotation() + refreshBeam() + +/obj/item/assembly/infra/Destroy() + STOP_PROCESSING(SSobj, src) QDEL_LIST(beams) - return ..() + . = ..() -/obj/item/device/assembly/infra/describe() - return "The infrared trigger is [on?"on":"off"]." +/obj/item/assembly/infra/examine(mob/user) + ..() + to_chat(user, "The infrared trigger is [on?"on":"off"].") -/obj/item/device/assembly/infra/activate() +/obj/item/assembly/infra/activate() if(!..()) - return 0//Cooldown check + return FALSE//Cooldown check on = !on + refreshBeam() update_icon() - return 1 + return TRUE -/obj/item/device/assembly/infra/toggle_secure() +/obj/item/assembly/infra/toggle_secure() secured = !secured if(secured) START_PROCESSING(SSobj, src) + refreshBeam() else QDEL_LIST(beams) STOP_PROCESSING(SSobj, src) update_icon() return secured -/obj/item/device/assembly/infra/update_icon() +/obj/item/assembly/infra/update_icon() cut_overlays() attached_overlays = list() if(on) add_overlay("infrared_on") attached_overlays += "infrared_on" + if(visible && secured) + add_overlay("infrared_visible") + attached_overlays += "infrared_visible" if(holder) holder.update_icon() return -/obj/item/device/assembly/infra/dropped() - refreshBeam() +/obj/item/assembly/infra/dropped() + . = ..() + if(holder) + holder_movement() //sync the dir of the device as well if it's contained in a TTV or an assembly holder + else + refreshBeam() -/obj/item/device/assembly/infra/process() +/obj/item/assembly/infra/process() if(!on || !secured) refreshBeam() return -/obj/item/device/assembly/infra/proc/refreshBeam() +/obj/item/assembly/infra/proc/refreshBeam() QDEL_LIST(beams) - if(throwing || !on || !secured || !(isturf(loc) || holder && isturf(holder.loc))) + if(throwing || !on || !secured) + return + if(holder) + if(holder.master) //incase the sensor is part of an assembly that's contained in another item, such as a single tank bomb + if(!holder.master.IsSpecialAssembly() || !isturf(holder.master.loc)) + return + else if(!isturf(holder.loc)) //else just check where the holder is + return + else if(!isturf(loc)) //or just where the fuck we are in general return var/turf/T = get_turf(src) var/_dir = dir @@ -69,6 +103,11 @@ if(_T) for(var/i in 1 to maxlength) var/obj/effect/beam/i_beam/I = new(T) + if(istype(holder, /obj/item/assembly_holder)) + var/obj/item/assembly_holder/assembly_holder = holder + I.icon_state = "[initial(I.icon_state)]_[(assembly_holder.a_left == src) ? "l":"r"]" //Sync the offset of the beam with the position of the sensor. + else if(istype(holder, /obj/item/transfer_valve)) + I.icon_state = "[initial(I.icon_state)]_ttv" I.density = TRUE if(!I.Move(_T)) qdel(I) @@ -83,62 +122,68 @@ _T = get_step(_T, _dir) CHECK_TICK -/obj/item/device/assembly/infra/attack_hand() +/obj/item/assembly/infra/on_detach() + . = ..() + if(!.) + return + refreshBeam() + +/obj/item/assembly/infra/attack_hand() . = ..() refreshBeam() -/obj/item/device/assembly/infra/Moved() +/obj/item/assembly/infra/Moved() var/t = dir . = ..() setDir(t) -/obj/item/device/assembly/infra/throw_at() +/obj/item/assembly/infra/throw_at() . = ..() olddir = dir -/obj/item/device/assembly/infra/throw_impact() +/obj/item/assembly/infra/throw_impact() . = ..() if(!olddir) return setDir(olddir) olddir = null -/obj/item/device/assembly/infra/holder_movement() - if(!holder) - return 0 - refreshBeam() - return 1 - -/obj/item/device/assembly/infra/proc/trigger_beam(atom/movable/AM, turf/location) +/obj/item/assembly/infra/proc/trigger_beam(atom/movable/AM, turf/location) refreshBeam() switchListener(location) if(!secured || !on || next_activate > world.time) return FALSE - pulse(0) - audible_message("[icon2html(src, hearers(src))] *beep* *beep*", null, 3) + pulse(FALSE) + audible_message("[icon2html(src, hearers(src))] *beep* *beep* *beep*", null, hearing_range) + for(var/CHM in get_hearers_in_view(hearing_range, src)) + if(ismob(CHM)) + var/mob/LM = CHM + LM.playsound_local(get_turf(src), 'sound/machines/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE) next_activate = world.time + 30 -/obj/item/device/assembly/infra/proc/switchListener(turf/newloc) +/obj/item/assembly/infra/proc/switchListener(turf/newloc) QDEL_NULL(listener) listener = newloc.AddComponent(/datum/component/redirect, COMSIG_ATOM_EXITED, CALLBACK(src, .proc/check_exit)) -/obj/item/device/assembly/infra/proc/check_exit(atom/movable/offender) +/obj/item/assembly/infra/proc/check_exit(atom/movable/offender) if(offender && ((offender.flags_1 & ABSTRACT_1) || offender == src)) return return refreshBeam() -/obj/item/device/assembly/infra/ui_interact(mob/user)//TODO: change this this to the wire control panel +/obj/item/assembly/infra/ui_interact(mob/user)//TODO: change this this to the wire control panel . = ..() if(is_secured(user)) user.set_machine(src) - var/dat = "Infrared Laser\nStatus: [on ? "On" : "Off"]
    \nVisibility: [visible ? "Visible" : "Invisible"]
    \n
    " + var/dat = "Infrared Laser" + dat += "
    Status: [on ? "On" : "Off"]" + dat += "
    Visibility: [visible ? "Visible" : "Invisible"]" dat += "

    Refresh" dat += "

    Close" user << browse(dat, "window=infra") onclose(user, "infra") return -/obj/item/device/assembly/infra/Topic(href, href_list) +/obj/item/assembly/infra/Topic(href, href_list) ..() if(usr.incapacitated() || !in_range(loc, usr)) usr << browse(null, "window=infra") @@ -150,6 +195,7 @@ refreshBeam() if(href_list["visible"]) visible = !(visible) + update_icon() refreshBeam() if(href_list["close"]) usr << browse(null, "window=infra") @@ -157,24 +203,7 @@ if(usr) attack_self(usr) -/obj/item/device/assembly/infra/verb/rotate()//This could likely be better - set name = "Rotate Infrared Laser" - set category = "Object" - set src in usr - - if(!usr.canUseTopic(src, BE_CLOSE, NO_DEXTERY)) - return - - setDir(turn(dir, -90)) - -/obj/item/device/assembly/infra/AltClick(mob/user) - ..() - if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERY)) - return - else - rotate() - -/obj/item/device/assembly/infra/setDir() +/obj/item/assembly/infra/setDir() . = ..() refreshBeam() @@ -184,7 +213,7 @@ name = "infrared beam" icon = 'icons/obj/projectiles.dmi' icon_state = "ibeam" - var/obj/item/device/assembly/infra/master + var/obj/item/assembly/infra/master anchored = TRUE density = FALSE flags_1 = ABSTRACT_1 diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm index 97d03aa12d..58a3a5349a 100644 --- a/code/modules/assembly/mousetrap.dm +++ b/code/modules/assembly/mousetrap.dm @@ -1,20 +1,18 @@ -/obj/item/device/assembly/mousetrap +/obj/item/assembly/mousetrap name = "mousetrap" desc = "A handy little spring-loaded trap for catching pesty rodents." icon_state = "mousetrap" + item_state = "mousetrap" materials = list(MAT_METAL=100) - attachable = 1 - var/armed = 0 + attachable = TRUE + var/armed = FALSE -/obj/item/device/assembly/mousetrap/examine(mob/user) +/obj/item/assembly/mousetrap/examine(mob/user) ..() - if(armed) - to_chat(user, "The mousetrap is armed!") - else - to_chat(user, "The mousetrap is not armed.") + to_chat(user, "The pressure plate is [armed?"primed":"safe"].") -/obj/item/device/assembly/mousetrap/activate() +/obj/item/assembly/mousetrap/activate() if(..()) armed = !armed if(!armed) @@ -22,15 +20,11 @@ var/mob/living/carbon/human/user = usr if((user.has_trait(TRAIT_DUMB) || user.has_trait(TRAIT_CLUMSY)) && prob(50)) to_chat(user, "Your hand slips, setting off the trigger!") - pulse(0) + pulse(FALSE) update_icon() - if(usr) - playsound(usr.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -3) + playsound(src, 'sound/weapons/handcuffs.ogg', 30, TRUE, -3) -/obj/item/device/assembly/mousetrap/describe() - return "The pressure switch is [armed?"primed":"safe"]." - -/obj/item/device/assembly/mousetrap/update_icon() +/obj/item/assembly/mousetrap/update_icon() if(armed) icon_state = "mousetraparmed" else @@ -38,18 +32,18 @@ if(holder) holder.update_icon() -/obj/item/device/assembly/mousetrap/proc/triggered(mob/target, type = "feet") +/obj/item/assembly/mousetrap/proc/triggered(mob/target, type = "feet") if(!armed) return var/obj/item/bodypart/affecting = null if(ishuman(target)) var/mob/living/carbon/human/H = target if(H.has_trait(TRAIT_PIERCEIMMUNE)) - playsound(src.loc, 'sound/effects/snap.ogg', 50, 1) - armed = 0 + playsound(src, 'sound/effects/snap.ogg', 50, TRUE) + armed = FALSE update_icon() - pulse(0) - return 0 + pulse(FALSE) + return FALSE switch(type) if("feet") if(!H.shoes) @@ -66,13 +60,13 @@ var/mob/living/simple_animal/mouse/M = target visible_message("SPLAT!") M.splat() - playsound(src.loc, 'sound/effects/snap.ogg', 50, 1) - armed = 0 + playsound(src, 'sound/effects/snap.ogg', 50, TRUE) + armed = FALSE update_icon() - pulse(0) + pulse(FALSE) -/obj/item/device/assembly/mousetrap/attack_self(mob/living/carbon/human/user) +/obj/item/assembly/mousetrap/attack_self(mob/living/carbon/human/user) if(!armed) to_chat(user, "You arm [src].") else @@ -87,11 +81,11 @@ to_chat(user, "You disarm [src].") armed = !armed update_icon() - playsound(user.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -3) + playsound(src, 'sound/weapons/handcuffs.ogg', 30, TRUE, -3) //ATTACK HAND IGNORING PARENT RETURN VALUE -/obj/item/device/assembly/mousetrap/attack_hand(mob/living/carbon/human/user) +/obj/item/assembly/mousetrap/attack_hand(mob/living/carbon/human/user) if(armed) if((user.has_trait(TRAIT_DUMB) || user.has_trait(TRAIT_CLUMSY)) && prob(50)) var/which_hand = BODY_ZONE_PRECISE_L_HAND @@ -104,7 +98,7 @@ return ..() -/obj/item/device/assembly/mousetrap/Crossed(atom/movable/AM as mob|obj) +/obj/item/assembly/mousetrap/Crossed(atom/movable/AM as mob|obj) if(armed) if(ismob(AM)) var/mob/MM = AM @@ -122,22 +116,27 @@ ..() -/obj/item/device/assembly/mousetrap/on_found(mob/finder) +/obj/item/assembly/mousetrap/on_found(mob/finder) if(armed) - finder.visible_message("[finder] accidentally sets off [src], breaking their fingers.", \ + if(finder) + finder.visible_message("[finder] accidentally sets off [src], breaking their fingers.", \ "You accidentally trigger [src]!") - triggered(finder, (finder.active_hand_index % 2 == 0) ? BODY_ZONE_PRECISE_R_HAND : BODY_ZONE_PRECISE_L_HAND) - return 1 //end the search! - return 0 + triggered(finder, (finder.active_hand_index % 2 == 0) ? BODY_ZONE_PRECISE_R_HAND : BODY_ZONE_PRECISE_L_HAND) + return TRUE //end the search! + else + visible_message("[src] snaps shut!") + triggered(loc) + return FALSE + return FALSE -/obj/item/device/assembly/mousetrap/hitby(A as mob|obj) +/obj/item/assembly/mousetrap/hitby(A as mob|obj) if(!armed) return ..() visible_message("[src] is triggered by [A].") triggered(null) -/obj/item/device/assembly/mousetrap/armed +/obj/item/assembly/mousetrap/armed icon_state = "mousetraparmed" - armed = 1 + armed = TRUE diff --git a/code/modules/assembly/proximity.dm b/code/modules/assembly/proximity.dm index df852fc135..7f6a1fab12 100644 --- a/code/modules/assembly/proximity.dm +++ b/code/modules/assembly/proximity.dm @@ -1,86 +1,96 @@ -/obj/item/device/assembly/prox_sensor +/obj/item/assembly/prox_sensor name = "proximity sensor" desc = "Used for scanning and alerting when someone enters a certain proximity." icon_state = "prox" materials = list(MAT_METAL=800, MAT_GLASS=200) - attachable = 1 + attachable = TRUE - var/scanning = 0 - var/timing = 0 + var/scanning = FALSE + var/timing = FALSE var/time = 10 var/sensitivity = 1 + var/hearing_range = 3 -/obj/item/device/assembly/prox_sensor/proc/toggle_scan() - - -/obj/item/device/assembly/prox_sensor/proc/sense() - - -/obj/item/device/assembly/prox_sensor/Initialize() +/obj/item/assembly/prox_sensor/Initialize() . = ..() proximity_monitor = new(src, 0) + START_PROCESSING(SSobj, src) -/obj/item/device/assembly/prox_sensor/describe() - if(timing) - return "The proximity sensor is arming." - return "The proximity sensor is [scanning?"armed":"disarmed"]." +/obj/item/assembly/prox_sensor/Destroy() + STOP_PROCESSING(SSobj, src) + . = ..() -/obj/item/device/assembly/prox_sensor/activate() +/obj/item/assembly/prox_sensor/examine(mob/user) + ..() + to_chat(user, "The proximity sensor is [timing ? "arming" : (scanning ? "armed" : "disarmed")].") + +/obj/item/assembly/prox_sensor/activate() if(!..()) - return 0//Cooldown check - timing = !timing + return FALSE//Cooldown check + if(!scanning) + timing = !timing + else + scanning = FALSE update_icon() - return 1 + return TRUE -/obj/item/device/assembly/prox_sensor/toggle_secure() +/obj/item/assembly/prox_sensor/toggle_secure() secured = !secured if(!secured) if(scanning) toggle_scan() proximity_monitor.host = src - timing = 0 + timing = FALSE + STOP_PROCESSING(SSobj, src) else + START_PROCESSING(SSobj, src) proximity_monitor.host = loc update_icon() return secured -/obj/item/device/assembly/prox_sensor/HasProximity(atom/movable/AM as mob|obj) +/obj/item/assembly/prox_sensor/HasProximity(atom/movable/AM as mob|obj) if (istype(AM, /obj/effect/beam)) return sense() -/obj/item/device/assembly/prox_sensor/sense() +/obj/item/assembly/prox_sensor/proc/sense() if(!scanning || !secured || next_activate > world.time) - return 0 - pulse(0) - audible_message("[icon2html(src, hearers(src))] *beep* *beep*", null, 3) + return FALSE + pulse(FALSE) + audible_message("[icon2html(src, hearers(src))] *beep* *beep* *beep*", null, hearing_range) + for(var/CHM in get_hearers_in_view(hearing_range, src)) + if(ismob(CHM)) + var/mob/LM = CHM + LM.playsound_local(get_turf(src), 'sound/machines/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE) next_activate = world.time + 30 + return TRUE -/obj/item/device/assembly/prox_sensor/process() - if(timing) - time-- - if(time <= 0) - timing = 0 - toggle_scan(1) - time = initial(time) +/obj/item/assembly/prox_sensor/process() + if(!timing) + return + time-- + if(time <= 0) + timing = FALSE + toggle_scan(TRUE) + time = initial(time) -/obj/item/device/assembly/prox_sensor/toggle_scan(scan) +/obj/item/assembly/prox_sensor/proc/toggle_scan(scan) if(!secured) - return 0 + return FALSE scanning = scan proximity_monitor.SetRange(scanning ? sensitivity : 0) update_icon() -/obj/item/device/assembly/prox_sensor/proc/sensitivity_change(value) +/obj/item/assembly/prox_sensor/proc/sensitivity_change(value) var/sense = min(max(sensitivity + value, 0), 5) sensitivity = sense if(scanning && proximity_monitor.SetRange(sense)) sense() -/obj/item/device/assembly/prox_sensor/update_icon() +/obj/item/assembly/prox_sensor/update_icon() cut_overlays() attached_overlays = list() if(timing) @@ -93,13 +103,16 @@ holder.update_icon() return -/obj/item/device/assembly/prox_sensor/ui_interact(mob/user)//TODO: Change this to the wires thingy +/obj/item/assembly/prox_sensor/ui_interact(mob/user)//TODO: Change this to the wires thingy . = ..() if(is_secured(user)) var/second = time % 60 var/minute = (time - second) / 60 - var/dat = "Proximity Sensor\n[(timing ? "Arming" : "Not Arming")] [minute]:[second]\n- - + +\n" - dat += "
    Armed":"1'>Unarmed"] (Movement sensor active when armed!)" + var/dat = "Proximity Sensor" + if(!scanning) + dat += "
    [(timing ? "Arming" : "Not Arming")] [minute]:[second]" + dat += "
    - - + +" + dat += "
    Armed":"1'>Unarmed (Movement sensor active when armed!)"]" dat += "
    Detection range: - [sensitivity] +" dat += "

    Refresh" dat += "

    Close" @@ -108,7 +121,7 @@ return -/obj/item/device/assembly/prox_sensor/Topic(href, href_list) +/obj/item/assembly/prox_sensor/Topic(href, href_list) ..() if(usr.incapacitated() || !in_range(loc, usr)) usr << browse(null, "window=prox") diff --git a/code/modules/assembly/shock_kit.dm b/code/modules/assembly/shock_kit.dm index 174312df1e..8d9ba9880c 100644 --- a/code/modules/assembly/shock_kit.dm +++ b/code/modules/assembly/shock_kit.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/assemblies.dmi' icon_state = "shock_kit" var/obj/item/clothing/head/helmet/part1 = null - var/obj/item/device/electropack/part2 = null + var/obj/item/electropack/part2 = null w_class = WEIGHT_CLASS_HUGE flags_1 = CONDUCT_1 @@ -13,18 +13,18 @@ qdel(part2) return ..() -/obj/item/assembly/shock_kit/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/wrench)) +/obj/item/assembly/shock_kit/wrench_act(mob/living/user, obj/item/I) + to_chat(user, "You disassemble [src].") + if(part1) part1.forceMove(drop_location()) - part2.forceMove(drop_location()) part1.master = null - part2.master = null part1 = null + if(part2) + part2.forceMove(drop_location()) + part2.master = null part2 = null - qdel(src) - return - add_fingerprint(user) - return + qdel(src) + return TRUE /obj/item/assembly/shock_kit/attack_self(mob/user) part1.attack_self(user) diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm index e7a21ad1cd..c293439431 100644 --- a/code/modules/assembly/signaler.dm +++ b/code/modules/assembly/signaler.dm @@ -1,4 +1,4 @@ -/obj/item/device/assembly/signaler +/obj/item/assembly/signaler name = "remote signaling device" desc = "Used to remotely activate devices. Allows for syncing when using a secure signaler on another." icon_state = "signaller" @@ -7,48 +7,48 @@ righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' materials = list(MAT_METAL=400, MAT_GLASS=120) wires = WIRE_RECEIVE | WIRE_PULSE | WIRE_RADIO_PULSE | WIRE_RADIO_RECEIVE - attachable = 1 + attachable = TRUE var/code = DEFAULT_SIGNALER_CODE var/frequency = FREQ_SIGNALER var/delay = 0 var/datum/radio_frequency/radio_connection var/suicider = null + var/hearing_range = 1 -/obj/item/device/assembly/signaler/suicide_act(mob/living/carbon/user) +/obj/item/assembly/signaler/suicide_act(mob/living/carbon/user) user.visible_message("[user] eats \the [src]! If it is signaled, [user.p_they()] will die!") - playsound(src, 'sound/items/eatfood.ogg', 50, 1) + playsound(src, 'sound/items/eatfood.ogg', 50, TRUE) user.transferItemToLoc(src, user, TRUE) suicider = user return MANUAL_SUICIDE -/obj/item/device/assembly/signaler/proc/manual_suicide(mob/living/carbon/user) +/obj/item/assembly/signaler/proc/manual_suicide(mob/living/carbon/user) user.visible_message("[user]'s \the [src] recieves a signal, killing them instantly!") user.adjustOxyLoss(200)//it sends an electrical pulse to their heart, killing them. or something. user.death(0) -/obj/item/device/assembly/signaler/New() - ..() - spawn(40) - set_frequency(frequency) +/obj/item/assembly/signaler/Initialize() + . = ..() + set_frequency(frequency) -/obj/item/device/assembly/signaler/Destroy() +/obj/item/assembly/signaler/Destroy() SSradio.remove_object(src,frequency) - return ..() + . = ..() -/obj/item/device/assembly/signaler/activate() +/obj/item/assembly/signaler/activate() if(!..())//cooldown processing return FALSE signal() return TRUE -/obj/item/device/assembly/signaler/update_icon() +/obj/item/assembly/signaler/update_icon() if(holder) holder.update_icon() return -/obj/item/device/assembly/signaler/ui_interact(mob/user, flag1) +/obj/item/assembly/signaler/ui_interact(mob/user, flag1) . = ..() if(is_secured(user)) var/t1 = "-------" @@ -77,10 +77,10 @@ Code: return -/obj/item/device/assembly/signaler/Topic(href, href_list) +/obj/item/assembly/signaler/Topic(href, href_list) ..() - if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr)) + if(!usr.canUseTopic(src, BE_CLOSE)) usr << browse(null, "window=radio") onclose(usr, "radio") return @@ -106,16 +106,16 @@ Code: return -/obj/item/device/assembly/signaler/attackby(obj/item/W, mob/user, params) +/obj/item/assembly/signaler/attackby(obj/item/W, mob/user, params) if(issignaler(W)) - var/obj/item/device/assembly/signaler/signaler2 = W + var/obj/item/assembly/signaler/signaler2 = W if(secured && signaler2.secured) code = signaler2.code - frequency = signaler2.frequency + set_frequency(signaler2.frequency) to_chat(user, "You transfer the frequency and code of \the [signaler2.name] to \the [name]") ..() -/obj/item/device/assembly/signaler/proc/signal() +/obj/item/assembly/signaler/proc/signal() if(!radio_connection) return @@ -130,21 +130,26 @@ Code: return -/obj/item/device/assembly/signaler/receive_signal(datum/signal/signal) +/obj/item/assembly/signaler/receive_signal(datum/signal/signal) + . = FALSE if(!signal) - return 0 + return if(signal.data["code"] != code) - return 0 + return if(!(src.wires & WIRE_RADIO_RECEIVE)) - return 0 + return if(suicider) manual_suicide(suicider) - pulse(1) - audible_message("[icon2html(src, hearers(src))] *beep* *beep*", null, 1) - return + pulse(TRUE) + audible_message("[icon2html(src, hearers(src))] *beep* *beep* *beep*", null, hearing_range) + for(var/CHM in get_hearers_in_view(hearing_range, src)) + if(ismob(CHM)) + var/mob/LM = CHM + LM.playsound_local(get_turf(src), 'sound/machines/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE) + return TRUE -/obj/item/device/assembly/signaler/proc/set_frequency(new_frequency) +/obj/item/assembly/signaler/proc/set_frequency(new_frequency) SSradio.remove_object(src, frequency) frequency = new_frequency radio_connection = SSradio.add_object(src, frequency, RADIO_SIGNALER) @@ -153,46 +158,51 @@ Code: // Embedded signaller used in grenade construction. // It's necessary because the signaler doens't have an off state. // Generated during grenade construction. -Sayu -/obj/item/device/assembly/signaler/reciever +/obj/item/assembly/signaler/reciever var/on = FALSE -/obj/item/device/assembly/signaler/reciever/proc/toggle_safety() +/obj/item/assembly/signaler/reciever/proc/toggle_safety() on = !on -/obj/item/device/assembly/signaler/reciever/activate() +/obj/item/assembly/signaler/reciever/activate() toggle_safety() - return 1 + return TRUE -/obj/item/device/assembly/signaler/reciever/describe() - return "The radio receiver is [on?"on":"off"]." +/obj/item/assembly/signaler/reciever/examine(mob/user) + ..() + to_chat(user, "The radio receiver is [on?"on":"off"].") -/obj/item/device/assembly/signaler/reciever/receive_signal(datum/signal/signal) +/obj/item/assembly/signaler/reciever/receive_signal(datum/signal/signal) if(!on) return return ..(signal) // Embedded signaller used in anomalies. -/obj/item/device/assembly/signaler/anomaly +/obj/item/assembly/signaler/anomaly name = "anomaly core" desc = "The neutralized core of an anomaly. It'd probably be valuable for research." icon_state = "anomaly core" item_state = "electronic" lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' + var/anomaly_type = /obj/effect/anomaly -/obj/item/device/assembly/signaler/anomaly/receive_signal(datum/signal/signal) +/obj/item/assembly/signaler/anomaly/receive_signal(datum/signal/signal) if(!signal) - return 0 + return FALSE if(signal.data["code"] != code) - return 0 + return FALSE for(var/obj/effect/anomaly/A in get_turf(src)) A.anomalyNeutralize() + return TRUE -/obj/item/device/assembly/signaler/anomaly/attack_self() +/obj/item/assembly/signaler/anomaly/attack_self() return -/obj/item/device/assembly/signaler/cyborg +/obj/item/assembly/signaler/cyborg -/obj/item/device/assembly/signaler/cyborg/attackby(obj/item/W, mob/user, params) +/obj/item/assembly/signaler/cyborg/attackby(obj/item/W, mob/user, params) + return +/obj/item/assembly/signaler/cyborg/screwdriver_act(mob/living/user, obj/item/I) return diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm index 3d9d782a16..993bf134e6 100644 --- a/code/modules/assembly/timer.dm +++ b/code/modules/assembly/timer.dm @@ -1,75 +1,83 @@ -/obj/item/device/assembly/timer +/obj/item/assembly/timer name = "timer" desc = "Used to time things. Works well with contraptions which has to count down. Tick tock." icon_state = "timer" materials = list(MAT_METAL=500, MAT_GLASS=50) - attachable = 1 + attachable = TRUE - var/timing = 0 + var/timing = FALSE var/time = 5 var/saved_time = 5 - var/loop = 0 + var/loop = FALSE + var/hearing_range = 3 -/obj/item/device/assembly/timer/suicide_act(mob/living/user) +/obj/item/assembly/timer/suicide_act(mob/living/user) user.visible_message("[user] looks at the timer and decides [user.p_their()] fate! It looks like [user.p_theyre()] going to commit suicide!") activate()//doesnt rely on timer_end to prevent weird metas where one person can control the timer and therefore someone's life. (maybe that should be how it works...) addtimer(CALLBACK(src, .proc/manual_suicide, user), time*10)//kill yourself once the time runs out return MANUAL_SUICIDE -/obj/item/device/assembly/timer/proc/manual_suicide(mob/living/user) +/obj/item/assembly/timer/proc/manual_suicide(mob/living/user) user.visible_message("[user]'s time is up!") user.adjustOxyLoss(200) user.death(0) -/obj/item/device/assembly/timer/New() - ..() +/obj/item/assembly/timer/Initialize() + . = ..() START_PROCESSING(SSobj, src) -/obj/item/device/assembly/timer/describe() - if(timing) - return "The timer is counting down from [time]!" - return "The timer is set for [time] seconds." +/obj/item/assembly/timer/Destroy() + STOP_PROCESSING(SSobj, src) + . = ..() +/obj/item/assembly/timer/examine(mob/user) + ..() + to_chat(user, "The timer is [timing ? "counting down from [time]":"set for [time] seconds"].") -/obj/item/device/assembly/timer/activate() +/obj/item/assembly/timer/activate() if(!..()) - return 0//Cooldown check + return FALSE//Cooldown check timing = !timing update_icon() - return 1 + return TRUE -/obj/item/device/assembly/timer/toggle_secure() +/obj/item/assembly/timer/toggle_secure() secured = !secured if(secured) START_PROCESSING(SSobj, src) else - timing = 0 + timing = FALSE STOP_PROCESSING(SSobj, src) update_icon() return secured -/obj/item/device/assembly/timer/proc/timer_end() +/obj/item/assembly/timer/proc/timer_end() if(!secured || next_activate > world.time) return FALSE - pulse(0) - audible_message("[icon2html(src, hearers(src))] *beep* *beep*", null, 3) + pulse(FALSE) + audible_message("[icon2html(src, hearers(src))] *beep* *beep* *beep*", null, hearing_range) + for(var/CHM in get_hearers_in_view(hearing_range, src)) + if(ismob(CHM)) + var/mob/LM = CHM + LM.playsound_local(get_turf(src), 'sound/machines/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE) if(loop) - timing = 1 + timing = TRUE update_icon() -/obj/item/device/assembly/timer/process() - if(timing) - time-- - if(time <= 0) - timing = 0 - timer_end() - time = saved_time +/obj/item/assembly/timer/process() + if(!timing) + return + time-- + if(time <= 0) + timing = FALSE + timer_end() + time = saved_time -/obj/item/device/assembly/timer/update_icon() +/obj/item/assembly/timer/update_icon() cut_overlays() attached_overlays = list() if(timing) @@ -79,12 +87,14 @@ holder.update_icon() -/obj/item/device/assembly/timer/ui_interact(mob/user)//TODO: Have this use the wires +/obj/item/assembly/timer/ui_interact(mob/user)//TODO: Have this use the wires . = ..() if(is_secured(user)) var/second = time % 60 var/minute = (time - second) / 60 - var/dat = "Timing Unit\n[(timing ? "Timing" : "Not Timing")] [minute]:[second]\n- - + +\n" + var/dat = "Timing Unit" + dat += "
    [(timing ? "Timing" : "Not Timing")] [minute]:[second]" + dat += "
    - - + +" dat += "

    Stop repeating" : "1'>Set to repeat")]" dat += "

    Refresh" dat += "

    Close" @@ -93,16 +103,16 @@ popup.open() -/obj/item/device/assembly/timer/Topic(href, href_list) +/obj/item/assembly/timer/Topic(href, href_list) ..() - if(usr.incapacitated() || !in_range(loc, usr)) + if(!usr.canUseTopic(src, BE_CLOSE)) usr << browse(null, "window=timer") onclose(usr, "timer") return if(href_list["time"]) timing = text2num(href_list["time"]) - if(timing && istype(holder, /obj/item/device/transfer_valve)) + if(timing && istype(holder, /obj/item/transfer_valve)) var/timer_message = "[ADMIN_LOOKUPFLW(usr)] activated [src] attachment on [holder]." message_admins(timer_message) GLOB.bombers += timer_message diff --git a/code/modules/assembly/voice.dm b/code/modules/assembly/voice.dm index 913176b662..ca97752d90 100644 --- a/code/modules/assembly/voice.dm +++ b/code/modules/assembly/voice.dm @@ -1,14 +1,19 @@ -/obj/item/device/assembly/voice +#define INCLUSIVE_MODE 1 +#define EXCLUSIVE_MODE 2 +#define RECOGNIZER_MODE 3 +#define VOICE_SENSOR_MODE 4 + +/obj/item/assembly/voice name = "voice analyzer" desc = "A small electronic device able to record a voice sample, and send a signal when that sample is repeated." icon_state = "voice" materials = list(MAT_METAL=500, MAT_GLASS=50) flags_1 = HEAR_1 - attachable = 1 + attachable = TRUE verb_say = "beeps" verb_ask = "beeps" verb_exclaim = "beeps" - var/listening = 0 + var/listening = FALSE var/recorded = "" //the activation message var/mode = 1 var/static/list/modes = list("inclusive", @@ -16,11 +21,11 @@ "recognizer", "voice sensor") -/obj/item/device/assembly/voice/examine(mob/user) +/obj/item/assembly/voice/examine(mob/user) ..() to_chat(user, "Use a multitool to swap between \"inclusive\", \"exclusive\", \"recognizer\", and \"voice sensor\" mode.") -/obj/item/device/assembly/voice/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) +/obj/item/assembly/voice/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode) if(speaker == src) return @@ -30,62 +35,66 @@ if(check_activation(speaker, raw_message)) addtimer(CALLBACK(src, .proc/pulse, 0), 10) -/obj/item/device/assembly/voice/proc/record_speech(atom/movable/speaker, raw_message, datum/language/message_language) +/obj/item/assembly/voice/proc/record_speech(atom/movable/speaker, raw_message, datum/language/message_language) switch(mode) - if(1) + if(INCLUSIVE_MODE) recorded = raw_message - listening = 0 + listening = FALSE say("Activation message is '[recorded]'.", message_language) - if(2) + if(EXCLUSIVE_MODE) recorded = raw_message - listening = 0 + listening = FALSE say("Activation message is '[recorded]'.", message_language) - if(3) + if(RECOGNIZER_MODE) recorded = speaker.GetVoice() - listening = 0 + listening = FALSE say("Your voice pattern is saved.", message_language) - if(4) + if(VOICE_SENSOR_MODE) if(length(raw_message)) addtimer(CALLBACK(src, .proc/pulse, 0), 10) -/obj/item/device/assembly/voice/proc/check_activation(atom/movable/speaker, raw_message) - . = 0 +/obj/item/assembly/voice/proc/check_activation(atom/movable/speaker, raw_message) + . = FALSE switch(mode) - if(1) + if(INCLUSIVE_MODE) if(findtext(raw_message, recorded)) - . = 1 - if(2) + . = TRUE + if(EXCLUSIVE_MODE) if(raw_message == recorded) - . = 1 - if(3) + . = TRUE + if(RECOGNIZER_MODE) if(speaker.GetVoice() == recorded) - . = 1 - if(4) + . = TRUE + if(VOICE_SENSOR_MODE) if(length(raw_message)) - . = 1 + . = TRUE -/obj/item/device/assembly/voice/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/device/multitool)) - mode %= modes.len - mode++ - to_chat(user, "You set [src] into a [modes[mode]] mode.") - listening = 0 - recorded = "" - else - return ..() +/obj/item/assembly/voice/multitool_act(mob/living/user, obj/item/I) + mode %= modes.len + mode++ + to_chat(user, "You set [src] into [modes[mode]] mode.") + listening = FALSE + recorded = "" + return TRUE -/obj/item/device/assembly/voice/activate() - if(secured) - if(!holder) - listening = !listening - say("[listening ? "Now" : "No longer"] recording input.") +/obj/item/assembly/voice/activate() + if(!secured || holder) + return FALSE + listening = !listening + say("[listening ? "Now" : "No longer"] recording input.") + return TRUE -/obj/item/device/assembly/voice/attack_self(mob/user) +/obj/item/assembly/voice/attack_self(mob/user) if(!user) - return 0 + return FALSE activate() - return 1 + return TRUE -/obj/item/device/assembly/voice/toggle_secure() +/obj/item/assembly/voice/toggle_secure() . = ..() - listening = 0 + listening = FALSE + +#undef INCLUSIVE_MODE +#undef EXCLUSIVE_MODE +#undef RECOGNIZER_MODE +#undef VOICE_SENSOR_MODE diff --git a/code/modules/atmospherics/environmental/LINDA_fire.dm b/code/modules/atmospherics/environmental/LINDA_fire.dm index c58d14f4d4..a3c9c68d55 100644 --- a/code/modules/atmospherics/environmental/LINDA_fire.dm +++ b/code/modules/atmospherics/environmental/LINDA_fire.dm @@ -94,7 +94,7 @@ for(var/A in location) var/atom/AT = A - if(AT && AT != src) // It's possible that the item is deleted in temperature_expose + if(!QDELETED(AT) && AT != src) // It's possible that the item is deleted in temperature_expose AT.fire_act(temperature, volume) return diff --git a/code/modules/atmospherics/gasmixtures/gas_mixture.dm b/code/modules/atmospherics/gasmixtures/gas_mixture.dm index 75b744e597..6e78256c87 100644 --- a/code/modules/atmospherics/gasmixtures/gas_mixture.dm +++ b/code/modules/atmospherics/gasmixtures/gas_mixture.dm @@ -4,11 +4,11 @@ What are the archived variables for? This prevents race conditions that arise based on the order of tile processing. */ #define MINIMUM_HEAT_CAPACITY 0.0003 +#define MINIMUM_MOLE_COUNT 0.01 #define QUANTIZE(variable) (round(variable,0.0000001))/*I feel the need to document what happens here. Basically this is used to catch most rounding errors, however it's previous value made it so that once gases got hot enough, most procedures wouldnt occur due to the fact that the mole counts would get rounded away. Thus, we lowered it a few orders of magnititude */ GLOBAL_LIST_INIT(meta_gas_info, meta_gas_list()) //see ATMOSPHERICS/gas_types.dm GLOBAL_LIST_INIT(gaslist_cache, init_gaslist_cache()) -GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/gas/nitrogen, /datum/gas/carbon_dioxide))) // These gasses cannot react amongst themselves /proc/init_gaslist_cache() . = list() diff --git a/code/modules/atmospherics/gasmixtures/gas_types.dm b/code/modules/atmospherics/gasmixtures/gas_types.dm index 0f1a21e1ce..12ad70a9e3 100644 --- a/code/modules/atmospherics/gasmixtures/gas_types.dm +++ b/code/modules/atmospherics/gasmixtures/gas_types.dm @@ -1,4 +1,5 @@ GLOBAL_LIST_INIT(hardcoded_gases, list(/datum/gas/oxygen, /datum/gas/nitrogen, /datum/gas/carbon_dioxide, /datum/gas/plasma)) //the main four gases, which were at one time hardcoded +GLOBAL_LIST_INIT(nonreactive_gases, typecacheof(list(/datum/gas/oxygen, /datum/gas/nitrogen, /datum/gas/carbon_dioxide, /datum/gas/pluoxium, /datum/gas/stimulum, /datum/gas/nitryl))) //unable to react amongst themselves /proc/meta_gas_list() . = subtypesof(/datum/gas) @@ -124,6 +125,7 @@ GLOBAL_LIST_INIT(hardcoded_gases, list(/datum/gas/oxygen, /datum/gas/nitrogen, / specific_heat = 80 name = "Pluoxium" fusion_power = 10 + /obj/effect/overlay/gas icon = 'icons/effects/tile_effects.dmi' mouse_opacity = MOUSE_OPACITY_TRANSPARENT diff --git a/code/modules/atmospherics/gasmixtures/reactions.dm b/code/modules/atmospherics/gasmixtures/reactions.dm index 689abbc388..dd953dcb11 100644 --- a/code/modules/atmospherics/gasmixtures/reactions.dm +++ b/code/modules/atmospherics/gasmixtures/reactions.dm @@ -1,10 +1,8 @@ //Plasma fire properties #define OXYGEN_BURN_RATE_BASE 1.4 #define PLASMA_BURN_RATE_DELTA 9 -#define PLASMA_UPPER_TEMPERATURE (1370+T0C) #define PLASMA_MINIMUM_OXYGEN_NEEDED 2 #define PLASMA_MINIMUM_OXYGEN_PLASMA_RATIO 30 -#define PLASMA_OXYGEN_FULLBURN 10 #define FIRE_CARBON_ENERGY_RELEASED 100000 //Amount of heat released per mole of burnt carbon into the tile #define FIRE_HYDROGEN_ENERGY_RELEASED 280000 // Amount of heat released per mole of burnt hydrogen and/or tritium(hydrogen isotope) #define FIRE_PLASMA_ENERGY_RELEASED 3000000 //Amount of heat released per mole of burnt plasma into the tile @@ -30,7 +28,6 @@ #define FUSION_PURITY_THRESHOLD 0.95 #define FUSION_HEAT_DROPOFF (20000+T0C) #define NOBLIUM_FORMATION_ENERGY 2e9 //1 Mole of Noblium takes the planck energy to condense. -/datum/controller/subsystem/air/var/list/gas_reactions //this is our singleton of all reactions /proc/init_gas_reactions() var/list/reaction_types = list() @@ -49,7 +46,7 @@ /datum/gas_reaction //regarding the requirements lists: the minimum or maximum requirements must be non-zero. - //when in doubt, use MINIMUM_HEAT_CAPACITY. + //when in doubt, use MINIMUM_MOLE_COUNT. var/list/min_requirements var/list/max_requirements var/exclude = FALSE //do it this way to allow for addition/removal of reactions midmatch in the future @@ -61,6 +58,7 @@ init_reqs() /datum/gas_reaction/proc/init_reqs() + /datum/gas_reaction/proc/react(datum/gas_mixture/air, atom/location) return NO_REACTION @@ -94,16 +92,20 @@ air.gases[/datum/gas/water_vapor][MOLES] -= MOLES_GAS_VISIBLE . = REACTING -//fire: combustion of plasma and volatile fuel (treated as hydrocarbons). creates hotspots. exothermic -/datum/gas_reaction/fire - priority = -1 //fire should ALWAYS be last - name = "Hydrocarbon Combustion" - id = "fire" +//tritium combustion: combustion of oxygen and tritium (treated as hydrocarbons). creates hotspots. exothermic +/datum/gas_reaction/tritfire + priority = -1 //fire should ALWAYS be last, but tritium fires happen before plasma fires + name = "Tritium Combustion" + id = "tritfire" -/datum/gas_reaction/fire/init_reqs() - min_requirements = list("TEMP" = FIRE_MINIMUM_TEMPERATURE_TO_EXIST) //doesn't include plasma reqs b/c of other, rarer, burning gases. +/datum/gas_reaction/tritfire/init_reqs() + min_requirements = list( + "TEMP" = FIRE_MINIMUM_TEMPERATURE_TO_EXIST, + /datum/gas/tritium = MINIMUM_MOLE_COUNT, + /datum/gas/oxygen = MINIMUM_MOLE_COUNT + ) -/datum/gas_reaction/fire/react(datum/gas_mixture/air, datum/holder) +/datum/gas_reaction/tritfire/react(datum/gas_mixture/air, datum/holder) var/energy_released = 0 var/old_heat_capacity = air.heat_capacity() var/list/cached_gases = air.gases //this speeds things up because accessing datum vars is slow @@ -112,65 +114,99 @@ cached_results[id] = 0 var/turf/open/location = isturf(holder) ? holder : null - //General volatile gas burn - if(cached_gases[/datum/gas/tritium] && cached_gases[/datum/gas/tritium][MOLES]) - var/burned_fuel - if(!cached_gases[/datum/gas/oxygen]) - burned_fuel = 0 - else if(cached_gases[/datum/gas/oxygen][MOLES] < cached_gases[/datum/gas/tritium][MOLES]) - burned_fuel = cached_gases[/datum/gas/oxygen][MOLES]/TRITIUM_BURN_OXY_FACTOR - cached_gases[/datum/gas/tritium][MOLES] -= burned_fuel - else - burned_fuel = cached_gases[/datum/gas/tritium][MOLES]*TRITIUM_BURN_TRIT_FACTOR - cached_gases[/datum/gas/tritium][MOLES] -= cached_gases[/datum/gas/tritium][MOLES]/TRITIUM_BURN_TRIT_FACTOR - cached_gases[/datum/gas/oxygen][MOLES] -= cached_gases[/datum/gas/tritium][MOLES] + var/burned_fuel = 0 + if(cached_gases[/datum/gas/oxygen][MOLES] < cached_gases[/datum/gas/tritium][MOLES]) + burned_fuel = cached_gases[/datum/gas/oxygen][MOLES]/TRITIUM_BURN_OXY_FACTOR + cached_gases[/datum/gas/tritium][MOLES] -= burned_fuel + else + burned_fuel = cached_gases[/datum/gas/tritium][MOLES]*TRITIUM_BURN_TRIT_FACTOR + cached_gases[/datum/gas/tritium][MOLES] -= cached_gases[/datum/gas/tritium][MOLES]/TRITIUM_BURN_TRIT_FACTOR + cached_gases[/datum/gas/oxygen][MOLES] -= cached_gases[/datum/gas/tritium][MOLES] - if(burned_fuel) - energy_released += FIRE_HYDROGEN_ENERGY_RELEASED * burned_fuel - if(location && prob(10) && burned_fuel > TRITIUM_MINIMUM_RADIATION_ENERGY) //woah there let's not crash the server - radiation_pulse(location, energy_released/TRITIUM_BURN_RADIOACTIVITY_FACTOR) + if(burned_fuel) + energy_released += FIRE_HYDROGEN_ENERGY_RELEASED * burned_fuel + if(location && prob(10) && burned_fuel > TRITIUM_MINIMUM_RADIATION_ENERGY) //woah there let's not crash the server + radiation_pulse(location, energy_released/TRITIUM_BURN_RADIOACTIVITY_FACTOR) - ASSERT_GAS(/datum/gas/water_vapor, air) //oxygen+more-or-less hydrogen=H2O - cached_gases[/datum/gas/water_vapor][MOLES] += burned_fuel/TRITIUM_BURN_OXY_FACTOR + ASSERT_GAS(/datum/gas/water_vapor, air) //oxygen+more-or-less hydrogen=H2O + cached_gases[/datum/gas/water_vapor][MOLES] += burned_fuel/TRITIUM_BURN_OXY_FACTOR - cached_results[id] += burned_fuel + cached_results[id] += burned_fuel + + if(energy_released > 0) + var/new_heat_capacity = air.heat_capacity() + if(new_heat_capacity > MINIMUM_HEAT_CAPACITY) + air.temperature = (temperature*old_heat_capacity + energy_released)/new_heat_capacity + + //let the floor know a fire is happening + if(istype(location)) + temperature = air.temperature + if(temperature > FIRE_MINIMUM_TEMPERATURE_TO_EXIST) + location.hotspot_expose(temperature, CELL_VOLUME) + for(var/I in location) + var/atom/movable/item = I + item.temperature_expose(air, temperature, CELL_VOLUME) + location.temperature_expose(air, temperature, CELL_VOLUME) + + return cached_results[id] ? REACTING : NO_REACTION + +//plasma combustion: combustion of oxygen and plasma (treated as hydrocarbons). creates hotspots. exothermic +/datum/gas_reaction/plasmafire + priority = -2 //fire should ALWAYS be last, but plasma fires happen after tritium fires + name = "Plasma Combustion" + id = "plasmafire" + +/datum/gas_reaction/plasmafire/init_reqs() + min_requirements = list( + "TEMP" = FIRE_MINIMUM_TEMPERATURE_TO_EXIST, + /datum/gas/plasma = MINIMUM_MOLE_COUNT, + /datum/gas/oxygen = MINIMUM_MOLE_COUNT + ) + +/datum/gas_reaction/plasmafire/react(datum/gas_mixture/air, datum/holder) + var/energy_released = 0 + var/old_heat_capacity = air.heat_capacity() + var/list/cached_gases = air.gases //this speeds things up because accessing datum vars is slow + var/temperature = air.temperature + var/list/cached_results = air.reaction_results + cached_results[id] = 0 + var/turf/open/location = isturf(holder) ? holder : null //Handle plasma burning - if(cached_gases[/datum/gas/plasma] && cached_gases[/datum/gas/plasma][MOLES] > MINIMUM_HEAT_CAPACITY) - var/plasma_burn_rate = 0 - var/oxygen_burn_rate = 0 - //more plasma released at higher temperatures - var/temperature_scale - var/super_saturation - if(temperature > PLASMA_UPPER_TEMPERATURE) - temperature_scale = 1 + var/plasma_burn_rate = 0 + var/oxygen_burn_rate = 0 + //more plasma released at higher temperatures + var/temperature_scale = 0 + //to make tritium + var/super_saturation = FALSE + + if(temperature > PLASMA_UPPER_TEMPERATURE) + temperature_scale = 1 + else + temperature_scale = (temperature-PLASMA_MINIMUM_BURN_TEMPERATURE)/(PLASMA_UPPER_TEMPERATURE-PLASMA_MINIMUM_BURN_TEMPERATURE) + if(temperature_scale > 0) + oxygen_burn_rate = OXYGEN_BURN_RATE_BASE - temperature_scale + if(cached_gases[/datum/gas/oxygen][MOLES] / cached_gases[/datum/gas/plasma][MOLES] > SUPER_SATURATION_THRESHOLD) //supersaturation. Form Tritium. + super_saturation = TRUE + if(cached_gases[/datum/gas/oxygen][MOLES] > cached_gases[/datum/gas/plasma][MOLES]*PLASMA_OXYGEN_FULLBURN) + plasma_burn_rate = (cached_gases[/datum/gas/plasma][MOLES]*temperature_scale)/PLASMA_BURN_RATE_DELTA else - temperature_scale = (temperature-PLASMA_MINIMUM_BURN_TEMPERATURE)/(PLASMA_UPPER_TEMPERATURE-PLASMA_MINIMUM_BURN_TEMPERATURE) - if(temperature_scale > 0) - var/o2 = cached_gases[/datum/gas/oxygen] ? cached_gases[/datum/gas/oxygen][MOLES] : 0 - oxygen_burn_rate = OXYGEN_BURN_RATE_BASE - temperature_scale - if(o2 / cached_gases[/datum/gas/plasma][MOLES] > SUPER_SATURATION_THRESHOLD) //supersaturation. Form Tritium. - super_saturation = TRUE - if(o2 > cached_gases[/datum/gas/plasma][MOLES]*PLASMA_OXYGEN_FULLBURN) - plasma_burn_rate = (cached_gases[/datum/gas/plasma][MOLES]*temperature_scale)/PLASMA_BURN_RATE_DELTA + plasma_burn_rate = (temperature_scale*(cached_gases[/datum/gas/oxygen][MOLES]/PLASMA_OXYGEN_FULLBURN))/PLASMA_BURN_RATE_DELTA + + if(plasma_burn_rate > MINIMUM_HEAT_CAPACITY) + plasma_burn_rate = min(plasma_burn_rate,cached_gases[/datum/gas/plasma][MOLES],cached_gases[/datum/gas/oxygen][MOLES]/oxygen_burn_rate) //Ensures matter is conserved properly + cached_gases[/datum/gas/plasma][MOLES] = QUANTIZE(cached_gases[/datum/gas/plasma][MOLES] - plasma_burn_rate) + cached_gases[/datum/gas/oxygen][MOLES] = QUANTIZE(cached_gases[/datum/gas/oxygen][MOLES] - (plasma_burn_rate * oxygen_burn_rate)) + if (super_saturation) + ASSERT_GAS(/datum/gas/tritium,air) + cached_gases[/datum/gas/tritium][MOLES] += plasma_burn_rate else - plasma_burn_rate = (temperature_scale*(o2/PLASMA_OXYGEN_FULLBURN))/PLASMA_BURN_RATE_DELTA + ASSERT_GAS(/datum/gas/carbon_dioxide,air) + cached_gases[/datum/gas/carbon_dioxide][MOLES] += plasma_burn_rate - if(plasma_burn_rate > MINIMUM_HEAT_CAPACITY) - ASSERT_GAS(/datum/gas/carbon_dioxide, air) //don't need to assert o2, since if it isn't present we'll never reach this point anyway - plasma_burn_rate = min(plasma_burn_rate,cached_gases[/datum/gas/plasma][MOLES],cached_gases[/datum/gas/oxygen][MOLES]/oxygen_burn_rate) //Ensures matter is conserved properly - cached_gases[/datum/gas/plasma][MOLES] = QUANTIZE(cached_gases[/datum/gas/plasma][MOLES] - plasma_burn_rate) - cached_gases[/datum/gas/oxygen][MOLES] = QUANTIZE(cached_gases[/datum/gas/oxygen][MOLES] - (plasma_burn_rate * oxygen_burn_rate)) - if (super_saturation) - ASSERT_GAS(/datum/gas/tritium,air) - cached_gases[/datum/gas/tritium][MOLES] += plasma_burn_rate - else - ASSERT_GAS(/datum/gas/carbon_dioxide,air) - cached_gases[/datum/gas/carbon_dioxide][MOLES] += plasma_burn_rate + energy_released += FIRE_PLASMA_ENERGY_RELEASED * (plasma_burn_rate) - energy_released += FIRE_PLASMA_ENERGY_RELEASED * (plasma_burn_rate) - - cached_results[id] += (plasma_burn_rate)*(1+oxygen_burn_rate) + cached_results[id] += (plasma_burn_rate)*(1+oxygen_burn_rate) if(energy_released > 0) var/new_heat_capacity = air.heat_capacity() @@ -191,12 +227,11 @@ //fusion: a terrible idea that was fun but broken. Now reworked to be less broken and more interesting. Again. /datum/gas_reaction/fusion - exclude = FALSE + exclude = TRUE priority = 2 name = "Plasmic Fusion" id = "fusion" - /datum/gas_reaction/fusion/init_reqs() min_requirements = list( "ENER" = PLASMA_BINDING_ENERGY * 1000, @@ -361,7 +396,7 @@ air.temperature = max(((air.temperature*old_heat_capacity + stim_energy_change)/new_heat_capacity),TCMB) return REACTING -/datum/gas_reaction/nobliumformation //Hyper-Nobelium formation is extrememly endothermic, but requires high temperatures to start. Due to its high mass, hyper-nobelium uses large amounts of nitrogen and tritium. BZ can be used as a catalyst to make it less endothermic. +/datum/gas_reaction/nobliumformation //Hyper-Noblium formation is extrememly endothermic, but requires high temperatures to start. Due to its high mass, hyper-nobelium uses large amounts of nitrogen and tritium. BZ can be used as a catalyst to make it less endothermic. priority = 6 name = "Hyper-Noblium condensation" id = "nobformation" @@ -380,8 +415,8 @@ var/energy_taken = nob_formed*(NOBLIUM_FORMATION_ENERGY/(max(cached_gases[/datum/gas/bz][MOLES],1))) if ((cached_gases[/datum/gas/tritium][MOLES] - 10*nob_formed < 0) || (cached_gases[/datum/gas/nitrogen][MOLES] - 20*nob_formed < 0)) return NO_REACTION - cached_gases[/datum/gas/tritium][MOLES] = max(cached_gases[/datum/gas/tritium][MOLES]- 10*nob_formed,0) - cached_gases[/datum/gas/nitrogen][MOLES] = max(cached_gases[/datum/gas/nitrogen][MOLES]- 20*nob_formed,0) + cached_gases[/datum/gas/tritium][MOLES] -= 10*nob_formed + cached_gases[/datum/gas/nitrogen][MOLES] -= 20*nob_formed cached_gases[/datum/gas/hypernoblium][MOLES]+= nob_formed @@ -392,10 +427,8 @@ #undef OXYGEN_BURN_RATE_BASE #undef PLASMA_BURN_RATE_DELTA -#undef PLASMA_UPPER_TEMPERATURE #undef PLASMA_MINIMUM_OXYGEN_NEEDED #undef PLASMA_MINIMUM_OXYGEN_PLASMA_RATIO -#undef PLASMA_OXYGEN_FULLBURN #undef FIRE_CARBON_ENERGY_RELEASED #undef FIRE_PLASMA_ENERGY_RELEASED #undef WATER_VAPOR_FREEZE diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index a62a448a70..7bfacbee26 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -153,6 +153,9 @@ req_access = null req_one_access = null +/obj/machinery/airalarm/syndicate //general syndicate access + req_access = list(ACCESS_SYNDICATE) + //all air alarms in area are connected via magic /area var/list/air_vent_names = list() @@ -667,7 +670,7 @@ to_chat(user, "The wires have been [panel_open ? "exposed" : "unexposed"].") update_icon() return - else if(istype(W, /obj/item/card/id) || istype(W, /obj/item/device/pda))// trying to unlock the interface with an ID card + else if(istype(W, /obj/item/card/id) || istype(W, /obj/item/pda))// trying to unlock the interface with an ID card togglelock(user) else if(panel_open && is_wire_tool(W)) wires.interact(user) @@ -715,8 +718,8 @@ qdel(W) return - if(istype(W, /obj/item/device/electroadaptive_pseudocircuit)) - var/obj/item/device/electroadaptive_pseudocircuit/P = W + if(istype(W, /obj/item/electroadaptive_pseudocircuit)) + var/obj/item/electroadaptive_pseudocircuit/P = W if(!P.adapt_circuit(user, 25)) return user.visible_message("[user] fabricates a circuit and places it into [src].", \ diff --git a/code/modules/atmospherics/machinery/components/components_base.dm b/code/modules/atmospherics/machinery/components/components_base.dm index 28148c0364..5dcf95f3cf 100644 --- a/code/modules/atmospherics/machinery/components/components_base.dm +++ b/code/modules/atmospherics/machinery/components/components_base.dm @@ -34,8 +34,10 @@ Iconnery var/turf/T = loc if(level == 2 || !T.intact) showpipe = TRUE + plane = GAME_PLANE else showpipe = FALSE + plane = FLOOR_PLANE if(!showpipe) return //no need to update the pipes if they aren't showing diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index d3dde7a18e..90c5641002 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -27,8 +27,8 @@ var/obj/item/reagent_containers/glass/beaker = null var/reagent_transfer = 0 - var/obj/item/device/radio/radio - var/radio_key = /obj/item/device/encryptionkey/headset_med + var/obj/item/radio/radio + var/radio_key = /obj/item/encryptionkey/headset_med var/radio_channel = "Medical" var/running_anim = FALSE @@ -298,7 +298,7 @@ var/reagentlist = pretty_string_from_reagent_list(I.reagents.reagent_list) log_game("[key_name(user)] added an [I] to cyro containing [reagentlist]") return - if(!on && !occupant && !state_open && (default_deconstruction_screwdriver(user, "pod-off", "pod-off", I) || exchange_parts(user, I)) \ + if(!on && !occupant && !state_open && (default_deconstruction_screwdriver(user, "pod-off", "pod-off", I)) \ || default_change_direction_wrench(user, I) \ || default_pry_open(I) \ || default_deconstruction_crowbar(I)) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm index ce365bdab8..2ff19218f5 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm @@ -80,8 +80,6 @@ return if(default_deconstruction_crowbar(I)) return - if(exchange_parts(user, I)) - return return ..() /obj/machinery/atmospherics/components/unary/thermomachine/default_change_direction_wrench(mob/user, obj/item/I) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/unary_devices.dm b/code/modules/atmospherics/machinery/components/unary_devices/unary_devices.dm index 129f615ffd..b4af871f76 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/unary_devices.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/unary_devices.dm @@ -20,7 +20,7 @@ ..(intact) /obj/machinery/atmospherics/components/unary/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/device/analyzer)) + if(istype(W, /obj/item/analyzer)) atmosanalyzer_scan(airs[1], user) else return ..() diff --git a/code/modules/atmospherics/machinery/pipes/pipes.dm b/code/modules/atmospherics/machinery/pipes/pipes.dm index 477cbbc76d..73317c05ef 100644 --- a/code/modules/atmospherics/machinery/pipes/pipes.dm +++ b/code/modules/atmospherics/machinery/pipes/pipes.dm @@ -63,7 +63,7 @@ return parent.air.remove(amount) /obj/machinery/atmospherics/pipe/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/device/analyzer)) + if(istype(W, /obj/item/analyzer)) atmosanalyzer_scan(parent.air, user) if(istype(W, /obj/item/pipe_meter)) var/obj/item/pipe_meter/meter = W diff --git a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm index 75cf52a677..5bf9f5b8c0 100644 --- a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm +++ b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm @@ -138,7 +138,7 @@ "You fasten [src] to the port.", \ "You hear a ratchet.") update_icon() - else if(istype(W, /obj/item/device/analyzer) && Adjacent(user)) + else if(istype(W, /obj/item/analyzer) && Adjacent(user)) atmosanalyzer_scan(air_contents, user) else return ..() diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm index c864469783..cc6344cf06 100644 --- a/code/modules/awaymissions/capture_the_flag.dm +++ b/code/modules/awaymissions/capture_the_flag.dm @@ -474,7 +474,7 @@ /datum/outfit/ctf name = "CTF" - ears = /obj/item/device/radio/headset + ears = /obj/item/radio/headset uniform = /obj/item/clothing/under/syndicate suit = /obj/item/clothing/suit/space/hardsuit/shielded/ctf toggle_helmet = FALSE // see the whites of their eyes @@ -496,10 +496,10 @@ W.update_label(W.registered_name, W.assignment) // The shielded hardsuit is already NODROP_1 - no_drops += H.get_item_by_slot(slot_gloves) - no_drops += H.get_item_by_slot(slot_shoes) - no_drops += H.get_item_by_slot(slot_w_uniform) - no_drops += H.get_item_by_slot(slot_ears) + no_drops += H.get_item_by_slot(SLOT_GLOVES) + no_drops += H.get_item_by_slot(SLOT_SHOES) + no_drops += H.get_item_by_slot(SLOT_W_UNIFORM) + no_drops += H.get_item_by_slot(SLOT_EARS) for(var/i in no_drops) var/obj/item/I = i I.flags_1 |= NODROP_1 @@ -530,7 +530,7 @@ /datum/outfit/ctf/red/post_equip(mob/living/carbon/human/H) ..() - var/obj/item/device/radio/R = H.ears + var/obj/item/radio/R = H.ears R.set_frequency(FREQ_CTF_RED) R.freqlock = TRUE R.independent = TRUE @@ -538,7 +538,7 @@ /datum/outfit/ctf/blue/post_equip(mob/living/carbon/human/H) ..() - var/obj/item/device/radio/R = H.ears + var/obj/item/radio/R = H.ears R.set_frequency(FREQ_CTF_BLUE) R.freqlock = TRUE R.independent = TRUE diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 21a613845d..889e6f628b 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -56,7 +56,7 @@ var/list/spawners = GLOB.mob_spawners[name] LAZYREMOVE(spawners, src) if(!LAZYLEN(spawners)) - LAZYREMOVE(GLOB.mob_spawners,name) + GLOB.mob_spawners -= name return ..() /obj/effect/mob_spawn/proc/special(mob/M) @@ -182,7 +182,7 @@ H.equipOutfit(outfit) if(disable_pda) // We don't want corpse PDAs to show up in the messenger list. - var/obj/item/device/pda/PDA = locate(/obj/item/device/pda) in H + var/obj/item/pda/PDA = locate(/obj/item/pda) in H if(PDA) PDA.toff = TRUE if(disable_sensors) @@ -312,7 +312,7 @@ /obj/effect/mob_spawn/human/doctor/alive/equip(mob/living/carbon/human/H) ..() // Remove radio and PDA so they wouldn't annoy station crew. - var/list/del_types = list(/obj/item/device/pda, /obj/item/device/radio/headset) + var/list/del_types = list(/obj/item/pda, /obj/item/radio/headset) for(var/del_type in del_types) var/obj/item/I = locate(del_type) in H qdel(I) @@ -410,7 +410,7 @@ /datum/outfit/nanotrasenbridgeofficercorpse name = "Bridge Officer Corpse" - ears = /obj/item/device/radio/headset/heads/hop + ears = /obj/item/radio/headset/heads/hop uniform = /obj/item/clothing/under/rank/centcom_officer suit = /obj/item/clothing/suit/armor/bulletproof shoes = /obj/item/clothing/shoes/sneakers/black @@ -428,7 +428,7 @@ name = "Nanotrasen Private Security Commander" uniform = /obj/item/clothing/under/rank/centcom_commander suit = /obj/item/clothing/suit/armor/bulletproof - ears = /obj/item/device/radio/headset/heads/captain + ears = /obj/item/radio/headset/heads/captain glasses = /obj/item/clothing/glasses/eyepatch mask = /obj/item/clothing/mask/cigarette/cigar/cohiba head = /obj/item/clothing/head/centhat diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm index bba2b0558c..2293ac8098 100644 --- a/code/modules/awaymissions/gateway.dm +++ b/code/modules/awaymissions/gateway.dm @@ -159,8 +159,8 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation) use_power(5000) return -/obj/machinery/gateway/centeraway/attackby(obj/item/device/W, mob/user, params) - if(istype(W, /obj/item/device/multitool)) +/obj/machinery/gateway/centeraway/attackby(obj/item/W, mob/user, params) + if(istype(W, /obj/item/multitool)) if(calibrated) to_chat(user, "\black The gate is already calibrated, there is no work for you to do here.") return diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index 52fa9454ff..e19382b1ec 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -529,7 +529,7 @@ /obj/item/gun/ballistic/automatic/c20r/unrestricted = 16, /obj/item/gun/magic/wand/resurrection/inert = 15, /obj/item/gun/magic/wand/resurrection = 10, - /obj/item/device/radio/uplink/old = 2, + /obj/item/radio/uplink/old = 2, /obj/item/book/granter/spell/charge = 12, /obj/item/grenade/clusterbuster/spawner_manhacks = 15, /obj/item/book/granter/spell/fireball = 10, @@ -601,7 +601,7 @@ name = "Syndicate Snow Operative" uniform = /obj/item/clothing/under/syndicate/coldres shoes = /obj/item/clothing/shoes/combat/coldres - ears = /obj/item/device/radio/headset/syndicate/alt + ears = /obj/item/radio/headset/syndicate/alt r_pocket = /obj/item/gun/ballistic/automatic/pistol id = /obj/item/card/id/syndicate implants = list(/obj/item/implant/exile) diff --git a/code/modules/awaymissions/mission_code/stationCollision.dm b/code/modules/awaymissions/mission_code/stationCollision.dm index 3b865492ef..e9c2b993fa 100644 --- a/code/modules/awaymissions/mission_code/stationCollision.dm +++ b/code/modules/awaymissions/mission_code/stationCollision.dm @@ -128,7 +128,7 @@ GLOBAL_VAR_INIT(sc_safecode5, "[rand(0,9)]") l_code = "[GLOB.sc_safecode1][GLOB.sc_safecode2][GLOB.sc_safecode3][GLOB.sc_safecode4][GLOB.sc_safecode5]" l_set = 1 new /obj/item/gun/energy/mindflayer(src) - new /obj/item/device/soulstone(src) + new /obj/item/soulstone(src) new /obj/item/clothing/suit/space/hardsuit/cult(src) //new /obj/item/teleportation_scroll(src) new /obj/item/stack/ore/diamond(src) diff --git a/code/modules/cargo/export_scanner.dm b/code/modules/cargo/export_scanner.dm index f98bf355f4..37c2915bea 100644 --- a/code/modules/cargo/export_scanner.dm +++ b/code/modules/cargo/export_scanner.dm @@ -1,4 +1,4 @@ -/obj/item/device/export_scanner +/obj/item/export_scanner name = "export scanner" desc = "A device used to check objects against Nanotrasen exports database." icon = 'icons/obj/device.dmi' @@ -11,12 +11,12 @@ siemens_coefficient = 1 var/obj/machinery/computer/cargo/cargo_console = null -/obj/item/device/export_scanner/examine(user) +/obj/item/export_scanner/examine(user) ..() if(!cargo_console) to_chat(user, "[src] is not currently linked to a cargo console.") -/obj/item/device/export_scanner/afterattack(obj/O, mob/user, proximity) +/obj/item/export_scanner/afterattack(obj/O, mob/user, proximity) if(!istype(O) || !proximity) return diff --git a/code/modules/cargo/exports/large_objects.dm b/code/modules/cargo/exports/large_objects.dm index 37afb31a6b..9eec36f53a 100644 --- a/code/modules/cargo/exports/large_objects.dm +++ b/code/modules/cargo/exports/large_objects.dm @@ -101,7 +101,7 @@ export_types = list(/obj/machinery/iv_drip) /datum/export/large/barrier - cost = 325 + cost = 100 unit_name = "security barrier" export_types = list(/obj/item/grenade/barrier, /obj/structure/barricade/security) diff --git a/code/modules/cargo/exports/parts.dm b/code/modules/cargo/exports/parts.dm index f56f1e5b81..e6fda5f6b1 100644 --- a/code/modules/cargo/exports/parts.dm +++ b/code/modules/cargo/exports/parts.dm @@ -18,4 +18,4 @@ /datum/export/swarmer cost = 2000 unit_name = "deactivated alien deconstruction drone" - export_types = list(/obj/item/device/deactivated_swarmer) + export_types = list(/obj/item/deactivated_swarmer) diff --git a/code/modules/cargo/exports/tools.dm b/code/modules/cargo/exports/tools.dm index c1a0c2fe8d..72514a6a89 100644 --- a/code/modules/cargo/exports/tools.dm +++ b/code/modules/cargo/exports/tools.dm @@ -69,37 +69,37 @@ /datum/export/flashlight cost = 5 unit_name = "flashlight" - export_types = list(/obj/item/device/flashlight) + export_types = list(/obj/item/flashlight) include_subtypes = FALSE /datum/export/flashlight/flare cost = 2 unit_name = "flare" - export_types = list(/obj/item/device/flashlight/flare) + export_types = list(/obj/item/flashlight/flare) /datum/export/flashlight/seclite cost = 10 unit_name = "seclite" - export_types = list(/obj/item/device/flashlight/seclite) + export_types = list(/obj/item/flashlight/seclite) // Analyzers and Scanners /datum/export/analyzer cost = 5 unit_name = "analyzer" - export_types = list(/obj/item/device/analyzer) + export_types = list(/obj/item/analyzer) /datum/export/analyzer/t_scanner cost = 10 unit_name = "t-ray scanner" - export_types = list(/obj/item/device/t_scanner) + export_types = list(/obj/item/t_scanner) /datum/export/radio cost = 5 unit_name = "radio" - export_types = list(/obj/item/device/radio) - exclude_types = list(/obj/item/device/radio/mech) + export_types = list(/obj/item/radio) + exclude_types = list(/obj/item/radio/mech) // High-tech tools. diff --git a/code/modules/cargo/exports/weapons.dm b/code/modules/cargo/exports/weapons.dm index 9bd8c0a6e7..ea326beacf 100644 --- a/code/modules/cargo/exports/weapons.dm +++ b/code/modules/cargo/exports/weapons.dm @@ -62,7 +62,7 @@ /datum/export/weapon/flash cost = 10 unit_name = "handheld flash" - export_types = list(/obj/item/device/assembly/flash) + export_types = list(/obj/item/assembly/flash) include_subtypes = TRUE /datum/export/weapon/handcuffs @@ -103,7 +103,7 @@ /datum/export/weapon/immortality_talisman cost = 10000 unit_name = "Immortality Talisman" - export_types = list(/obj/item/device/immortality_talisman) + export_types = list(/obj/item/immortality_talisman) /datum/export/weapon/babel cost = 10000 @@ -128,17 +128,17 @@ /datum/export/weapon/red //second half of telecube cost = 5000 unit_name = "Red Cube" - export_types = list(/obj/item/device/warp_cube/red) + export_types = list(/obj/item/warp_cube/red) /datum/export/weapon/blue //first half of telecube cost = 5000 unit_name = "Blue Cube" - export_types = list(/obj/item/device/warp_cube) + export_types = list(/obj/item/warp_cube) /datum/export/weapon/wisplantern //thermals on lavaland cost = 10000 unit_name = "Wisp Lantern" - export_types = list(/obj/item/device/wisp_lantern) + export_types = list(/obj/item/wisp_lantern) /datum/export/weapon/flight //if xenobiology ever reaches the point to get these without shuttle being called they deserve it cost = 10000 diff --git a/code/modules/cargo/expressconsole.dm b/code/modules/cargo/expressconsole.dm index 00e35458d3..c2cf51ede6 100644 --- a/code/modules/cargo/expressconsole.dm +++ b/code/modules/cargo/expressconsole.dm @@ -20,7 +20,7 @@ /obj/machinery/computer/cargo/express/attackby(obj/item/W, mob/living/user, params) - if((istype(W, /obj/item/card/id) || istype(W, /obj/item/device/pda)) && allowed(user)) + if((istype(W, /obj/item/card/id) || istype(W, /obj/item/pda)) && allowed(user)) locked = !locked to_chat(user, "You [locked ? "lock" : "unlock"] the interface.") return diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index 8ba650241f..2d3ed07505 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -97,8 +97,8 @@ /obj/item/clothing/suit/fire/firefighter, /obj/item/clothing/mask/gas, /obj/item/clothing/mask/gas, - /obj/item/device/flashlight, - /obj/item/device/flashlight, + /obj/item/flashlight, + /obj/item/flashlight, /obj/item/tank/internals/oxygen/red, /obj/item/tank/internals/oxygen/red, /obj/item/extinguisher, @@ -186,8 +186,8 @@ /obj/item/clothing/head/radiation, /obj/item/clothing/suit/radiation, /obj/item/clothing/suit/radiation, - /obj/item/device/geiger_counter, - /obj/item/device/geiger_counter, + /obj/item/geiger_counter, + /obj/item/geiger_counter, /obj/item/reagent_containers/food/drinks/bottle/vodka, /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass) @@ -265,10 +265,10 @@ name = "Forensics Crate" desc = "Stay hot on the criminal's heels with Nanotrasen's Detective Essentials(tm). Contains a forensics scanner, six evidence bags, camera, tape recorder, white crayon, and of course, a fedora. Requires Security access to open." cost = 2000 - contains = list(/obj/item/device/detective_scanner, + contains = list(/obj/item/detective_scanner, /obj/item/storage/box/evidence, - /obj/item/device/camera, - /obj/item/device/taperecorder, + /obj/item/camera, + /obj/item/taperecorder, /obj/item/toy/crayon/white, /obj/item/clothing/head/fedora/det_hat) crate_name = "forensics crate" @@ -554,6 +554,20 @@ /obj/machinery/shieldgen) crate_name = "anti-breach shield projector crate" +/datum/supply_pack/engineering/conveyor + name = "Conveyor Assembly Crate" + desc = "Keep production moving along with six conveyor belts. Conveyor switch included. If you have any questions, check out the enclosed instruction book." + cost = 1500 + contains = list(/obj/item/conveyor_construct, + /obj/item/conveyor_construct, + /obj/item/conveyor_construct, + /obj/item/conveyor_construct, + /obj/item/conveyor_construct, + /obj/item/conveyor_construct, + /obj/item/conveyor_switch_construct, + /obj/item/paper/guides/conveyor) + crate_name = "conveyor assembly crate" + /datum/supply_pack/engineering/engiequipment name = "Engineering Gear Crate" desc = "Gear up with three toolbelts, high-visibility vests, welding helmets, hardhats, and two pairs of meson goggles!" @@ -582,8 +596,9 @@ /obj/item/clothing/gloves/color/yellow, /obj/item/clothing/gloves/color/yellow) crate_name = "insulated gloves crate" + crate_type = /obj/structure/closet/crate/engineering/electrical -/obj/item/stock_parts/cell/inducer_supply//what is this doing here +/obj/item/stock_parts/cell/inducer_supply maxcharge = 5000 charge = 5000 @@ -635,7 +650,78 @@ cost = 1000 crate_name = "toolbox crate" -/datum/supply_pack/engineering/engine/am_jar +/datum/supply_pack/engineering/bsa + name = "Bluespace Artillery Parts" + desc = "The pride of Nanotrasen Naval Command. The legendary Bluespace Artillery Cannon is a devastating feat of human engineering and testament to wartime determination. Highly advanced research is required for proper construction. " + cost = 15000 + special = TRUE + contains = list(/obj/item/circuitboard/machine/bsa/front, + /obj/item/circuitboard/machine/bsa/middle, + /obj/item/circuitboard/machine/bsa/back, + /obj/item/circuitboard/computer/bsa_control + ) + crate_name= "bluespace artillery parts crate" + +/datum/supply_pack/engineering/dna_vault + name = "DNA Vault Parts" + desc = "Secure the longevity of the current state of humanity within this massive library of scientific knowledge, capable of granting superhuman powers and abilities. Highly advanced research is required for proper construction. Also contains five DNA probes." + cost = 12000 + special = TRUE + contains = list( + /obj/item/circuitboard/machine/dna_vault, + /obj/item/dna_probe, + /obj/item/dna_probe, + /obj/item/dna_probe, + /obj/item/dna_probe, + /obj/item/dna_probe + ) + crate_name= "dna vault parts crate" + +/datum/supply_pack/engineering/dna_probes + name = "DNA Vault Samplers" + desc = "Contains five DNA probes for use in the DNA vault." + cost = 3000 + special = TRUE + contains = list(/obj/item/dna_probe, + /obj/item/dna_probe, + /obj/item/dna_probe, + /obj/item/dna_probe, + /obj/item/dna_probe + ) + crate_name= "dna samplers crate" + + +/datum/supply_pack/engineering/shield_sat + name = "Shield Generator Satellite" + desc = "Protect the very existence of this station with these Anti-Meteor defenses. Contains three Shield Generator Satellites." + cost = 3000 + special = TRUE + contains = list( + /obj/machinery/satellite/meteor_shield, + /obj/machinery/satellite/meteor_shield, + /obj/machinery/satellite/meteor_shield + ) + crate_name= "shield sat crate" + + +/datum/supply_pack/engineering/shield_sat_control + name = "Shield System Control Board" + desc = "A control system for the Shield Generator Satellite system." + cost = 5000 + special = TRUE + contains = list(/obj/item/circuitboard/computer/sat_control) + crate_name= "shield control board crate" + + +////////////////////////////////////////////////////////////////////////////// +//////////////////////// Engine Construction ///////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/engine + group = "Engine Construction" + crate_type = /obj/structure/closet/crate/engineering + +/datum/supply_pack/engine/am_jar name = "Antimatter Containment Jar Crate" desc = "Two Antimatter containment jars stuffed into a single crate." cost = 2000 @@ -643,30 +729,30 @@ /obj/item/am_containment) crate_name = "antimatter jar crate" -/datum/supply_pack/engineering/engine/am_core +/datum/supply_pack/engine/am_core name = "Antimatter Control Crate" desc = "The brains of the Antimatter engine, this device is sure to teach the station's powergrid the true meaning of real power." cost = 5000 contains = list(/obj/machinery/power/am_control_unit) crate_name = "antimatter control crate" -/datum/supply_pack/engineering/engine/am_shielding +/datum/supply_pack/engine/am_shielding name = "Antimatter Shielding Crate" desc = "Contains ten Antimatter shields, somehow crammed into a crate." cost = 2000 - contains = list(/obj/item/device/am_shielding_container, - /obj/item/device/am_shielding_container, - /obj/item/device/am_shielding_container, - /obj/item/device/am_shielding_container, - /obj/item/device/am_shielding_container, - /obj/item/device/am_shielding_container, - /obj/item/device/am_shielding_container, - /obj/item/device/am_shielding_container, - /obj/item/device/am_shielding_container, - /obj/item/device/am_shielding_container) //10 shields: 3x3 containment and a core + contains = list(/obj/item/am_shielding_container, + /obj/item/am_shielding_container, + /obj/item/am_shielding_container, + /obj/item/am_shielding_container, + /obj/item/am_shielding_container, + /obj/item/am_shielding_container, + /obj/item/am_shielding_container, + /obj/item/am_shielding_container, + /obj/item/am_shielding_container, + /obj/item/am_shielding_container) //10 shields: 3x3 containment and a core crate_name = "antimatter shielding crate" -/datum/supply_pack/engineering/engine +/datum/supply_pack/engine/emitter name = "Emitter Crate" desc = "Useful for powering forcefield generators while destroying locked crates and intruders alike. Contains two high-powered energy emitters. Requires CE access to open." cost = 1500 @@ -677,7 +763,7 @@ crate_type = /obj/structure/closet/crate/secure/engineering dangerous = TRUE -/datum/supply_pack/engineering/engine/field_gen +/datum/supply_pack/engine/field_gen name = "Field Generator Crate" desc = "Typically the only thing standing between the station and a messy death. Powered by emitters. Contains two field generators." cost = 1500 @@ -685,7 +771,7 @@ /obj/machinery/field/generator) crate_name = "field generator crate" -/datum/supply_pack/engineering/grounding_rods +/datum/supply_pack/engine/grounding_rods name = "Grounding Rod Crate" desc = "Four grounding rods guaranteed to keep any uppity tesla's lightning under control." cost = 1700 @@ -696,7 +782,7 @@ crate_name = "grounding rod crate" crate_type = /obj/structure/closet/crate/engineering/electrical -/datum/supply_pack/engineering/engine/PA +/datum/supply_pack/engine/PA name = "Particle Accelerator Crate" desc = "A supermassive black hole or hyper-powered teslaball are the perfect way to spice up any party! This \"My First Apocalypse\" kit contains everything you need to build your own Particle Accelerator! Ages 10 and up." cost = 3000 @@ -709,7 +795,7 @@ /obj/structure/particle_accelerator/end_cap) crate_name = "particle accelerator crate" -/datum/supply_pack/engineering/engine/collector +/datum/supply_pack/engine/collector name = "Radiation Collector Crate" desc = "Contains three radiation collectors. Useful for collecting energy off nearby Supermatter Crystals, Singularities or Teslas!" cost = 2500 @@ -718,14 +804,14 @@ /obj/machinery/power/rad_collector) crate_name = "collector crate" -/datum/supply_pack/engineering/engine/sing_gen +/datum/supply_pack/engine/sing_gen name = "Singularity Generator Crate" desc = "The key to unlocking the power of Lord Singuloth. Particle Accelerator not included." cost = 5000 contains = list(/obj/machinery/the_singularitygen) crate_name = "singularity generator crate" -/datum/supply_pack/engineering/solar +/datum/supply_pack/engine/solar name = "Solar Panel Crate" desc = "Go green with this DIY advanced solar array. Contains twenty one solar assemblies, a solar-control circuit board, and tracker. If you have any questions, please check out the enclosed instruction book." cost = 2000 @@ -756,7 +842,7 @@ crate_name = "solar panel crate" crate_type = /obj/structure/closet/crate/engineering/electrical -/datum/supply_pack/engineering/engine/supermatter_crystal +/datum/supply_pack/engine/supermatter_shard name = "Supermatter Shard Crate" desc = "The power of the heavens condensed into a single crystal. Requires CE access to open." cost = 10000 @@ -766,7 +852,7 @@ crate_type = /obj/structure/closet/crate/secure/engineering dangerous = TRUE -/datum/supply_pack/engineering/engine/tesla_coils +/datum/supply_pack/engine/tesla_coils name = "Tesla Coil Crate" desc = "Whether it's high-voltage executions, creating research points, or just plain old power generation: This pack of four Tesla coils can do it all!" cost = 2500 @@ -777,77 +863,15 @@ crate_name = "tesla coil crate" crate_type = /obj/structure/closet/crate/engineering/electrical -/datum/supply_pack/engineering/engine/tesla_gen +/datum/supply_pack/engine/tesla_gen name = "Tesla Generator Crate" desc = "The key to unlocking the power of the Tesla energy ball. Particle Accelerator not included." cost = 5000 contains = list(/obj/machinery/the_singularitygen/tesla) crate_name = "tesla generator crate" -/datum/supply_pack/engineering/bsa - name = "Bluespace Artillery Parts" - desc = "The pride of Nanotrasen Naval Command. The legendary Bluespace Artillery Cannon is a devastating feat of human engineering and testament to wartime determination. Highly advanced research is required for proper construction. " - cost = 15000 - special = TRUE - contains = list(/obj/item/circuitboard/machine/bsa/front, - /obj/item/circuitboard/machine/bsa/middle, - /obj/item/circuitboard/machine/bsa/back, - /obj/item/circuitboard/computer/bsa_control - ) - crate_name= "bluespace artillery parts crate" - -/datum/supply_pack/engineering/dna_vault - name = "DNA Vault Parts" - desc = "Secure the longevity of the current state of humanity within this massive library of scientific knowledge, capable of granting superhuman powers and abilities. Highly advanced research is required for proper construction. Also contains five DNA probes." - cost = 12000 - special = TRUE - contains = list( - /obj/item/circuitboard/machine/dna_vault, - /obj/item/device/dna_probe, - /obj/item/device/dna_probe, - /obj/item/device/dna_probe, - /obj/item/device/dna_probe, - /obj/item/device/dna_probe - ) - crate_name= "dna vault parts crate" - -/datum/supply_pack/engineering/dna_probes - name = "DNA Vault Samplers" - desc = "Contains five DNA probes for use in the DNA vault." - cost = 3000 - special = TRUE - contains = list(/obj/item/device/dna_probe, - /obj/item/device/dna_probe, - /obj/item/device/dna_probe, - /obj/item/device/dna_probe, - /obj/item/device/dna_probe - ) - crate_name= "dna samplers crate" - - -/datum/supply_pack/engineering/shield_sat - name = "Shield Generator Satellite" - desc = "Protect the very existence of this station with these Anti-Meteor defenses. Contains three Shield Generator Satellites." - cost = 3000 - special = TRUE - contains = list( - /obj/machinery/satellite/meteor_shield, - /obj/machinery/satellite/meteor_shield, - /obj/machinery/satellite/meteor_shield - ) - crate_name= "shield sat crate" - - -/datum/supply_pack/engineering/shield_sat_control - name = "Shield System Control Board" - desc = "A control system for the Shield Generator Satellite system." - cost = 5000 - special = TRUE - contains = list(/obj/item/circuitboard/computer/sat_control) - crate_name= "shield control board crate" - ////////////////////////////////////////////////////////////////////////////// -//////////////////////// Canisters & Materials//////////////////////////////// +/////////////////////// Canisters & Materials //////////////////////////////// ////////////////////////////////////////////////////////////////////////////// /datum/supply_pack/materials @@ -991,7 +1015,6 @@ group = "Medical" crate_type = /obj/structure/closet/crate/medical - /datum/supply_pack/medical/firstaidbruises name = "Bruise Treatment Kit Crate" desc = "Contains three first aid kits focused on healing bruises and broken bones." @@ -1166,15 +1189,15 @@ contains = list(/obj/item/tank/internals/plasma, /obj/item/tank/internals/plasma, /obj/item/tank/internals/plasma, - /obj/item/device/assembly/igniter, - /obj/item/device/assembly/igniter, - /obj/item/device/assembly/igniter, - /obj/item/device/assembly/prox_sensor, - /obj/item/device/assembly/prox_sensor, - /obj/item/device/assembly/prox_sensor, - /obj/item/device/assembly/timer, - /obj/item/device/assembly/timer, - /obj/item/device/assembly/timer) + /obj/item/assembly/igniter, + /obj/item/assembly/igniter, + /obj/item/assembly/igniter, + /obj/item/assembly/prox_sensor, + /obj/item/assembly/prox_sensor, + /obj/item/assembly/prox_sensor, + /obj/item/assembly/timer, + /obj/item/assembly/timer, + /obj/item/assembly/timer) crate_name = "plasma assembly crate" crate_type = /obj/structure/closet/crate/secure/plasma @@ -1183,9 +1206,9 @@ desc = "The tools you need to replace those finicky humans with a loyal robot army! Contains three proximity sensors, two high-powered cells, six flashes, and an electrical toolbox. Requires Robotics access to open." cost = 1000 access = ACCESS_ROBOTICS - contains = list(/obj/item/device/assembly/prox_sensor, - /obj/item/device/assembly/prox_sensor, - /obj/item/device/assembly/prox_sensor, + contains = list(/obj/item/assembly/prox_sensor, + /obj/item/assembly/prox_sensor, + /obj/item/assembly/prox_sensor, /obj/item/storage/toolbox/electrical, /obj/item/storage/box/flashes, /obj/item/stock_parts/cell/high, @@ -1209,11 +1232,11 @@ name = "Tablet Crate" desc = "What's a computer? Contains five cargo tablets." cost = 5000 - contains = list(/obj/item/device/modular_computer/tablet/preset/cargo, - /obj/item/device/modular_computer/tablet/preset/cargo, - /obj/item/device/modular_computer/tablet/preset/cargo, - /obj/item/device/modular_computer/tablet/preset/cargo, - /obj/item/device/modular_computer/tablet/preset/cargo) + contains = list(/obj/item/modular_computer/tablet/preset/cargo, + /obj/item/modular_computer/tablet/preset/cargo, + /obj/item/modular_computer/tablet/preset/cargo, + /obj/item/modular_computer/tablet/preset/cargo, + /obj/item/modular_computer/tablet/preset/cargo) crate_name = "tablet crate" /datum/supply_pack/science/transfer_valves @@ -1221,18 +1244,175 @@ desc = "The key ingredient for making a lot of people very angry very fast. Contains two tank transfer valves. Requires RD access to open." cost = 6000 access = ACCESS_RD - contains = list(/obj/item/device/transfer_valve, - /obj/item/device/transfer_valve) + contains = list(/obj/item/transfer_valve, + /obj/item/transfer_valve) crate_name = "tank transfer valves crate" crate_type = /obj/structure/closet/crate/secure/science dangerous = TRUE +////////////////////////////////////////////////////////////////////////////// +/////////////////////////////// Service ////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/service + group = "Service" + +/datum/supply_pack/service/noslipfloor + name = "High-traction Floor Tiles" + desc = "Make slipping a thing of the past with thirty industrial-grade anti-slip floortiles!" + cost = 2000 + contains = list(/obj/item/stack/tile/noslip/thirty) + crate_name = "high-traction floor tiles crate" + +/datum/supply_pack/service/janitor + name = "Janitorial Supplies Crate" + desc = "Fight back against dirt and grime with Nanotrasen's Janitorial Essentials(tm)! Contains three buckets, caution signs, and cleaner grenades. Also has a single mop, spray cleaner, rag, and trash bag." + cost = 1000 + contains = list(/obj/item/reagent_containers/glass/bucket, + /obj/item/reagent_containers/glass/bucket, + /obj/item/reagent_containers/glass/bucket, + /obj/item/mop, + /obj/item/caution, + /obj/item/caution, + /obj/item/caution, + /obj/item/storage/bag/trash, + /obj/item/reagent_containers/spray/cleaner, + /obj/item/reagent_containers/glass/rag, + /obj/item/grenade/chem_grenade/cleaner, + /obj/item/grenade/chem_grenade/cleaner, + /obj/item/grenade/chem_grenade/cleaner) + crate_name = "janitorial supplies crate" + +/datum/supply_pack/service/janitor/janicart + name = "Janitorial Cart and Galoshes Crate" + desc = "The keystone to any successful janitor. As long as you have feet, this pair of galoshes will keep them firmly planted on the ground. Also contains a janitorial cart." + cost = 2000 + contains = list(/obj/structure/janitorialcart, + /obj/item/clothing/shoes/galoshes) + crate_name = "janitorial cart crate" + crate_type = /obj/structure/closet/crate/large + +/datum/supply_pack/service/janitor/janitank + name = "Janitor Backpack Crate" + desc = "Call forth divine judgement upon dirt and grime with this high capacity janitor backpack. Contains 500 units of station-cleansing cleaner. Requires janitor access to open." + cost = 1000 + access = ACCESS_JANITOR + contains = list(/obj/item/watertank/janitor) + crate_name = "janitor backpack crate" + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/service/mule + name = "MULEbot Crate" + desc = "Pink-haired Quartermaster not doing her job? Replace her with this tireless worker, today!" + cost = 2000 + contains = list(/mob/living/simple_animal/bot/mulebot) + crate_name = "\improper MULEbot Crate" + crate_type = /obj/structure/closet/crate/large + +/datum/supply_pack/service/party + name = "Party Equipment" + desc = "Celebrate both life and death on the station with Nanotrasen's Party Essentials(tm)! Contains seven colored glowsticks, four beers, two ales, and a bottle of patron, goldschlager, and shaker!" + cost = 2000 + contains = list(/obj/item/storage/box/drinkingglasses, + /obj/item/reagent_containers/food/drinks/shaker, + /obj/item/reagent_containers/food/drinks/bottle/patron, + /obj/item/reagent_containers/food/drinks/bottle/goldschlager, + /obj/item/reagent_containers/food/drinks/ale, + /obj/item/reagent_containers/food/drinks/ale, + /obj/item/reagent_containers/food/drinks/beer, + /obj/item/reagent_containers/food/drinks/beer, + /obj/item/reagent_containers/food/drinks/beer, + /obj/item/reagent_containers/food/drinks/beer, + /obj/item/flashlight/glowstick, + /obj/item/flashlight/glowstick/red, + /obj/item/flashlight/glowstick/blue, + /obj/item/flashlight/glowstick/cyan, + /obj/item/flashlight/glowstick/orange, + /obj/item/flashlight/glowstick/yellow, + /obj/item/flashlight/glowstick/pink) + crate_name = "party equipment crate" + +/datum/supply_pack/service/lightbulbs + name = "Replacement Lights" + desc = "May the light of Aether shine upon this station! Or at least, the light of forty two light tubes and twenty one light bulbs." + cost = 1000 + contains = list(/obj/item/storage/box/lights/mixed, + /obj/item/storage/box/lights/mixed, + /obj/item/storage/box/lights/mixed) + crate_name = "replacement lights" + +/datum/supply_pack/service/minerkit + name = "Shaft Miner Starter Kit" + desc = "All the miners died too fast? Assistant wants to get a taste of life off-station? Either way, this kit is the best way to turn a regular crewman into an ore-producing, monster-slaying machine. Contains meson goggles, a pickaxe, advanced mining scanner, cargo headset, ore bag, gasmask, and explorer suit. Requires QM access to open." + cost = 2500 + access = ACCESS_QM + contains = list(/obj/item/pickaxe/mini, + /obj/item/clothing/glasses/meson, + /obj/item/t_scanner/adv_mining_scanner/lesser, + /obj/item/radio/headset/headset_cargo/mining, + /obj/item/storage/bag/ore, + /obj/item/clothing/suit/hooded/explorer, + /obj/item/clothing/mask/gas/explorer) + crate_name = "shaft miner starter kit" + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/service/vending/bartending + name = "Bartending Supply Crate" + desc = "Bring on the booze with six vending machine refills, as well as a free book containing the well-kept secrets to the bartending trade!" + cost = 2000 + contains = list(/obj/item/vending_refill/boozeomat, + /obj/item/vending_refill/boozeomat, + /obj/item/vending_refill/boozeomat, + /obj/item/vending_refill/coffee, + /obj/item/vending_refill/coffee, + /obj/item/vending_refill/coffee, + /obj/item/book/granter/action/drink_fling) + crate_name = "bartending supply crate" + +/datum/supply_pack/service/vending/cigarette + name = "Cigarette Supply Crate" + desc = "Don't believe the reports - smoke today! Contains cigarette vending machine refills." + cost = 1500 + contains = list(/obj/item/vending_refill/cigarette, + /obj/item/vending_refill/cigarette, + /obj/item/vending_refill/cigarette) + crate_name = "cigarette supply crate" + crate_type = /obj/structure/closet/crate + +/datum/supply_pack/service/vending/games + name = "Games Supply Crate" + desc = "Get your game on with these three game vending machine refills." + cost = 1000 + contains = list(/obj/item/vending_refill/games, + /obj/item/vending_refill/games, + /obj/item/vending_refill/games) + crate_name = "games supply crate" + crate_type = /obj/structure/closet/crate + +/datum/supply_pack/service/vending/snack + name = "Snack Supply Crate" + desc = "Three vending machine refills of cavity-bringin' goodness! The number one dentist recommended order!" + cost = 1500 + contains = list(/obj/item/vending_refill/snack, + /obj/item/vending_refill/snack, + /obj/item/vending_refill/snack) + crate_name = "snacks supply crate" + +/datum/supply_pack/service/vending/cola + name = "Softdrinks Supply Crate" + desc = "Got whacked by a toolbox, but you still have those pesky teeth? Get rid of those pearly whites with these three soda machine refills, today!" + cost = 1500 + contains = list(/obj/item/vending_refill/cola, + /obj/item/vending_refill/cola, + /obj/item/vending_refill/cola) + crate_name = "soft drinks supply crate" + ////////////////////////////////////////////////////////////////////////////// //////////////////////////// Organic ///////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// /datum/supply_pack/organic - group = "Food & Livestock" + group = "Food & Hydroponics" crate_type = /obj/structure/closet/crate/freezer /datum/supply_pack/organic/hydroponics/beekeeping_suits @@ -1244,6 +1424,22 @@ /obj/item/clothing/head/beekeeper_head, /obj/item/clothing/suit/beekeeper_suit) crate_name = "beekeeper suits" + crate_type = /obj/structure/closet/crate/hydroponics + +/datum/supply_pack/organic/hydroponics/beekeeping_fullkit + name = "Beekeeping Starter Crate" + desc = "BEES BEES BEES. Contains three honey frames, a beekeeper suit and helmet, flyswatter, bee house, and, of course, a pure-bred Nanotrasen-Standardized Queen Bee!" + cost = 1500 + contains = list(/obj/structure/beebox, + /obj/item/honey_frame, + /obj/item/honey_frame, + /obj/item/honey_frame, + /obj/item/queen_bee/bought, + /obj/item/clothing/head/beekeeper_head, + /obj/item/clothing/suit/beekeeper_suit, + /obj/item/melee/flyswatter) + crate_name = "beekeeping starter crate" + crate_type = /obj/structure/closet/crate/hydroponics /datum/supply_pack/organic/food name = "Food Crate" @@ -1264,20 +1460,6 @@ /obj/item/reagent_containers/food/snacks/grown/banana) crate_name = "food crate" -/datum/supply_pack/organic/hydroponics/beekeeping_fullkit - name = "Beekeeping Starter Crate" - desc = "BEES BEES BEES. Contains three honey frames, a beekeeper suit and helmet, flyswatter, bee house, and, of course, a pure-bred Nanotrasen-Standardized Queen Bee!" - cost = 1500 - contains = list(/obj/structure/beebox, - /obj/item/honey_frame, - /obj/item/honey_frame, - /obj/item/honey_frame, - /obj/item/queen_bee/bought, - /obj/item/clothing/head/beekeeper_head, - /obj/item/clothing/suit/beekeeper_suit, - /obj/item/melee/flyswatter) - crate_name = "beekeeping starter crate" - /datum/supply_pack/organic/cream_piee name = "High-yield Clown-grade Cream Pie Crate" desc = "Designed by Aussec's Advanced Warfare Research Division, these high-yield, Clown-grade cream pies are powered by a synergy of performance and efficiency. Guaranteed to provide maximum results." @@ -1298,7 +1480,7 @@ /obj/item/reagent_containers/glass/bottle/ammonia, /obj/item/hatchet, /obj/item/cultivator, - /obj/item/device/plant_analyzer, + /obj/item/plant_analyzer, /obj/item/clothing/gloves/botanic_leather, /obj/item/clothing/suit/apron) crate_name = "hydroponics crate" @@ -1313,36 +1495,6 @@ crate_name = "hydroponics backpack crate" crate_type = /obj/structure/closet/crate/secure -/datum/supply_pack/organic/monkey - name = "Monkey Cube Crate" - desc = "Stop monkeying around! Contains seven monkey cubes. Just add water!" - cost = 2000 - contains = list (/obj/item/storage/box/monkeycubes) - crate_name = "monkey cube crate" - -/datum/supply_pack/organic/party - name = "Party Equipment" - desc = "Celebrate both life and death on the station with Nanotrasen's Party Essentials(tm)! Contains seven colored glowsticks, four beers, two ales, and a bottle of patron, goldschlager, and shaker!" - cost = 2000 - contains = list(/obj/item/storage/box/drinkingglasses, - /obj/item/reagent_containers/food/drinks/shaker, - /obj/item/reagent_containers/food/drinks/bottle/patron, - /obj/item/reagent_containers/food/drinks/bottle/goldschlager, - /obj/item/reagent_containers/food/drinks/ale, - /obj/item/reagent_containers/food/drinks/ale, - /obj/item/reagent_containers/food/drinks/beer, - /obj/item/reagent_containers/food/drinks/beer, - /obj/item/reagent_containers/food/drinks/beer, - /obj/item/reagent_containers/food/drinks/beer, - /obj/item/device/flashlight/glowstick, - /obj/item/device/flashlight/glowstick/red, - /obj/item/device/flashlight/glowstick/blue, - /obj/item/device/flashlight/glowstick/cyan, - /obj/item/device/flashlight/glowstick/orange, - /obj/item/device/flashlight/glowstick/yellow, - /obj/item/device/flashlight/glowstick/pink) - crate_name = "party equipment crate" - /datum/supply_pack/organic/pizza name = "Pizza Crate" desc = "Best prices on this side of the galaxy. All deliveries are guaranteed to be 99% anomaly-free!" @@ -1389,7 +1541,7 @@ crate_name = "potted plants crate" crate_type = /obj/structure/closet/crate/hydroponics -/datum/supply_pack/organic/hydroponics/seeds +/datum/supply_pack/organic/seeds name = "Seeds Crate" desc = "Big things have small beginnings. Contains thirteen different seeds." cost = 1000 @@ -1407,8 +1559,9 @@ /obj/item/seeds/potato, /obj/item/seeds/sugarcane) crate_name = "seeds crate" + crate_type = /obj/structure/closet/crate/hydroponics -/datum/supply_pack/organic/hydroponics/exoticseeds +/datum/supply_pack/organic/exoticseeds name = "Exotic Seeds Crate" desc = "Any entrepreneuring botanist's dream. Contains twelve different seeds, including three replica-pod seeds and two mystery seeds!" cost = 1500 @@ -1425,11 +1578,17 @@ /obj/item/seeds/random, /obj/item/seeds/random) crate_name = "exotic seeds crate" + crate_type = /obj/structure/closet/crate/hydroponics -/datum/supply_pack/organic/critter +////////////////////////////////////////////////////////////////////////////// +////////////////////////////// Livestock ///////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/critter + group = "Livestock" crate_type = /obj/structure/closet/crate/critter -/datum/supply_pack/organic/critter/butterfly +/datum/supply_pack/critter/butterfly name = "Butterflies Crate" desc = "Not a very dangerous insect, but they do give off a better image than, say, flies or cockroaches."//is that a motherfucking worm reference contraband = TRUE @@ -1437,12 +1596,12 @@ contains = list(/mob/living/simple_animal/butterfly) crate_name = "entomology samples crate" -/datum/supply_pack/organic/critter/butterfly/generate() +/datum/supply_pack/critter/butterfly/generate() . = ..() for(var/i in 1 to 49) new /mob/living/simple_animal/butterfly(.) -/datum/supply_pack/organic/critter/cat +/datum/supply_pack/critter/cat name = "Cat Crate" desc = "The cat goes meow! Comes with a collar and a nice cat toy! Cheeseburger not included."//i can't believe im making this reference cost = 5000 //Cats are worth as much as corgis. @@ -1451,21 +1610,21 @@ /obj/item/toy/cattoy) crate_name = "cat crate" -/datum/supply_pack/organic/critter/cat/generate() +/datum/supply_pack/critter/cat/generate() . = ..() if(prob(50)) var/mob/living/simple_animal/pet/cat/C = locate() in . qdel(C) new /mob/living/simple_animal/pet/cat/Proc(.) -/datum/supply_pack/organic/critter/chick +/datum/supply_pack/critter/chick name = "Chicken Crate" desc = "The chicken goes bwaak!" cost = 2000 contains = list( /mob/living/simple_animal/chick) crate_name = "chicken crate" -/datum/supply_pack/organic/critter/crab +/datum/supply_pack/critter/crab name = "Crab Rocket" desc = "CRAAAAAAB ROCKET. CRAB ROCKET. CRAB ROCKET. CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB ROCKET. CRAFT. ROCKET. BUY. CRAFT ROCKET. CRAB ROOOCKET. CRAB ROOOOCKET. CRAB CRAB CRAB CRAB CRAB CRAB CRAB CRAB ROOOOOOOOOOOOOOOOOOOOOOCK EEEEEEEEEEEEEEEEEEEEEEEEE EEEETTTTTTTTTTTTAAAAAAAAA AAAHHHHHHHHHHHHH. CRAB ROCKET. CRAAAB ROCKEEEEEEEEEGGGGHHHHTT CRAB CRAB CRAABROCKET CRAB ROCKEEEET."//fun fact: i actually spent like 10 minutes and transcribed the entire video. cost = 5000 @@ -1473,12 +1632,12 @@ crate_name = "look sir free crabs" DropPodOnly = TRUE -/datum/supply_pack/organic/critter/crab/generate() +/datum/supply_pack/critter/crab/generate() . = ..() for(var/i in 1 to 49) new /mob/living/simple_animal/crab(.) -/datum/supply_pack/organic/critter/corgi +/datum/supply_pack/critter/corgi name = "Corgi Crate" desc = "Considered the optimal dog breed by thousands of research scientists, this Corgi is but one dog from the millions of Ian's noble bloodline. Comes with a cute collar!" cost = 5000 @@ -1486,21 +1645,22 @@ /obj/item/clothing/neck/petcollar) crate_name = "corgi crate" -/datum/supply_pack/organic/critter/corgi/generate() +/datum/supply_pack/critter/corgi/generate() . = ..() if(prob(50)) var/mob/living/simple_animal/pet/dog/corgi/D = locate() in . - qdel(D) - new /mob/living/simple_animal/pet/dog/corgi/Lisa(.) + if(D.gender == FEMALE) + qdel(D) + new /mob/living/simple_animal/pet/dog/corgi/Lisa(.) -/datum/supply_pack/organic/critter/cow +/datum/supply_pack/critter/cow name = "Cow Crate" desc = "The cow goes moo!" cost = 3000 contains = list(/mob/living/simple_animal/cow) crate_name = "cow crate" -/datum/supply_pack/organic/critter/fox +/datum/supply_pack/critter/fox name = "Fox Crate" desc = "The fox goes...? Comes with a collar!"//what does the fox say cost = 5000 @@ -1508,14 +1668,21 @@ /obj/item/clothing/neck/petcollar) crate_name = "fox crate" -/datum/supply_pack/organic/critter/goat +/datum/supply_pack/critter/goat name = "Goat Crate" desc = "The goat goes baa! Warranty void if used as a replacement for Pete." cost = 2500 contains = list(/mob/living/simple_animal/hostile/retaliate/goat) crate_name = "goat crate" -/datum/supply_pack/organic/critter/pug +/datum/supply_pack/critter/monkey + name = "Monkey Cube Crate" + desc = "Stop monkeying around! Contains seven monkey cubes. Just add water!" + cost = 2000 + contains = list (/obj/item/storage/box/monkeycubes) + crate_name = "monkey cube crate" + +/datum/supply_pack/critter/pug name = "Pug Crate" desc = "Like a normal dog, but... squished. Comes with a nice collar!" cost = 5000 @@ -1523,7 +1690,7 @@ /obj/item/clothing/neck/petcollar) crate_name = "pug crate" -/datum/supply_pack/organic/critter/snake +/datum/supply_pack/critter/snake name = "Snake Crate" desc = "Tired of these MOTHER FUCKING snakes on this MOTHER FUCKING space station? Then this isn't the crate for you. Contains three poisonous snakes." cost = 3000 @@ -1532,144 +1699,51 @@ /mob/living/simple_animal/hostile/retaliate/poison/snake) crate_name = "snake crate" -/datum/supply_pack/organic/vending - name = "Bartending Supply Crate" - desc = "Bring on the booze with six vending machine refills, as well as a free book containing the well-kept secrets to the bartending trade!" - cost = 2000 - contains = list(/obj/item/vending_refill/boozeomat, - /obj/item/vending_refill/boozeomat, - /obj/item/vending_refill/boozeomat, - /obj/item/vending_refill/coffee, - /obj/item/vending_refill/coffee, - /obj/item/vending_refill/coffee, - /obj/item/book/granter/action/drink_fling) - crate_name = "bartending supply crate" - -/datum/supply_pack/organic/vending/cigarette - name = "Cigarette Supply Crate" - desc = "Don't believe the reports - smoke today! Contains cigarette vending machine refills." - cost = 1500 - contains = list(/obj/item/vending_refill/cigarette, - /obj/item/vending_refill/cigarette, - /obj/item/vending_refill/cigarette) - crate_name = "cigarette supply crate" - -/datum/supply_pack/organic/vending/games - name = "Games Supply Crate" - desc = "Get your game on with these three game vending machine refills." - cost = 1000 - contains = list(/obj/item/vending_refill/games, - /obj/item/vending_refill/games, - /obj/item/vending_refill/games) - crate_name = "games supply crate" - -/datum/supply_pack/organic/vending/snack - name = "Snack Supply Crate" - desc = "Three vending machine refills of cavity-bringin' goodness! The number one dentist recommended order!" - cost = 1500 - contains = list(/obj/item/vending_refill/snack, - /obj/item/vending_refill/snack, - /obj/item/vending_refill/snack) - crate_name = "snacks supply crate" - -/datum/supply_pack/organic/vending/cola - name = "Softdrinks Supply Crate" - desc = "Got whacked by a toolbox, but you still have those pesky teeth? Get rid of those pearly whites with these three soda machine refills, today!" - cost = 1500 - contains = list(/obj/item/vending_refill/cola, - /obj/item/vending_refill/cola, - /obj/item/vending_refill/cola) - crate_name = "soft drinks supply crate" - ////////////////////////////////////////////////////////////////////////////// -//////////////////////////// Miscellaneous /////////////////////////////////// +//////////////////////////// Costumes & Toys ///////////////////////////////// ////////////////////////////////////////////////////////////////////////////// -/datum/supply_pack/misc - group = "Miscellaneous Supplies" +/datum/supply_pack/costumes_toys + group = "Costumes & Toys" -/datum/supply_pack/misc/artsupply - name = "Art Supplies" - desc = "Make some happy little accidents with six canvasses, two easels, and two rainbow crayons!" - cost = 800 - contains = list(/obj/structure/easel, - /obj/structure/easel, - /obj/item/canvas/nineteenXnineteen, - /obj/item/canvas/nineteenXnineteen, - /obj/item/canvas/twentythreeXnineteen, - /obj/item/canvas/twentythreeXnineteen, - /obj/item/canvas/twentythreeXtwentythree, - /obj/item/canvas/twentythreeXtwentythree, - /obj/item/toy/crayon/rainbow, - /obj/item/toy/crayon/rainbow) - crate_name = "art supply crate" - -/datum/supply_pack/misc/bicycle - name = "Bicycle" - desc = "Nanotrasen reminds all employees to never toy with powers outside their control." - cost = 1000000 - contains = list(/obj/vehicle/ridden/bicycle) - crate_name = "Bicycle Crate" - crate_type = /obj/structure/closet/crate/large - -/datum/supply_pack/misc/bigband - name = "Big Band Instrument Collection" - desc = "Get your sad station movin' and groovin' with this fine collection! Contains nine different instruments!" - cost = 5000 - crate_name = "Big band musical instruments collection" - contains = list(/obj/item/device/instrument/violin, - /obj/item/device/instrument/guitar, - /obj/item/device/instrument/glockenspiel, - /obj/item/device/instrument/accordion, - /obj/item/device/instrument/saxophone, - /obj/item/device/instrument/trombone, - /obj/item/device/instrument/recorder, - /obj/item/device/instrument/harmonica, - /obj/structure/piano/unanchored) - -/datum/supply_pack/misc/book_crate - name = "Book Crate" - desc = "Surplus from the Nanotrasen Archives, these five books are sure to be good reads." +/datum/supply_pack/costumes_toys/autodrobe + name = "Autodrobe Supply Crate" + desc = "Autodrobe missing your favorite dress? Solve that issue today with these two autodrobe refills." cost = 1500 - contains = list(/obj/item/book/codex_gigas, - /obj/item/book/manual/random/, - /obj/item/book/manual/random/, - /obj/item/book/manual/random/, - /obj/item/book/random/triple) + contains = list(/obj/item/vending_refill/autodrobe, + /obj/item/vending_refill/autodrobe) + crate_name = "autodrobe supply crate" -/datum/supply_pack/misc/paper - name = "Bureaucracy Crate" - desc = "High stacks of papers on your desk Are a big problem - make it Pea-sized with these bureacratic supplies! Contains six pens, some camera film, hand labeler supplies, a paper bin, three folders, two clipboards and two stamps."//that was too forced - cost = 1500 - contains = list(/obj/structure/filingcabinet/chestdrawer/wheeled, - /obj/item/device/camera_film, - /obj/item/hand_labeler, - /obj/item/hand_labeler_refill, - /obj/item/hand_labeler_refill, - /obj/item/paper_bin, - /obj/item/pen/fourcolor, - /obj/item/pen/fourcolor, - /obj/item/pen, - /obj/item/pen/fountain, - /obj/item/pen/blue, - /obj/item/pen/red, - /obj/item/folder/blue, - /obj/item/folder/red, - /obj/item/folder/yellow, - /obj/item/clipboard, - /obj/item/clipboard, - /obj/item/stamp, - /obj/item/stamp/denied) - crate_name = "bureaucracy crate" - -/datum/supply_pack/misc/fountainpens - name = "Calligraphy Crate" - desc = "Sign death warrents in style with these seven executive fountain pens." - cost = 700 - contains = list(/obj/item/storage/box/fountainpens) +/datum/supply_pack/costumes_toys/randomised + name = "Collectable Hats Crate" + desc = "Flaunt your status with three unique, highly-collectable hats!" + cost = 20000 + var/num_contained = 3 //number of items picked to be contained in a randomised crate + contains = list(/obj/item/clothing/head/collectable/chef, + /obj/item/clothing/head/collectable/paper, + /obj/item/clothing/head/collectable/tophat, + /obj/item/clothing/head/collectable/captain, + /obj/item/clothing/head/collectable/beret, + /obj/item/clothing/head/collectable/welding, + /obj/item/clothing/head/collectable/flatcap, + /obj/item/clothing/head/collectable/pirate, + /obj/item/clothing/head/collectable/kitty, + /obj/item/clothing/head/collectable/rabbitears, + /obj/item/clothing/head/collectable/wizard, + /obj/item/clothing/head/collectable/hardhat, + /obj/item/clothing/head/collectable/HoS, + /obj/item/clothing/head/collectable/HoP, + /obj/item/clothing/head/collectable/thunderdome, + /obj/item/clothing/head/collectable/swat, + /obj/item/clothing/head/collectable/slime, + /obj/item/clothing/head/collectable/police, + /obj/item/clothing/head/collectable/slime, + /obj/item/clothing/head/collectable/xenom, + /obj/item/clothing/head/collectable/petehat) + crate_name = "collectable hats crate" crate_type = /obj/structure/closet/crate/wooden -/datum/supply_pack/misc/randomised/contraband +/datum/supply_pack/costumes_toys/randomised/contraband name = "Contraband Crate" desc = "Psst.. bud... want some contraband? I can get you a poster, some nice cigs, bling, even some ambrosia deus...you know, the good stuff. Just keep it away from the cops, kay?" contraband = TRUE @@ -1682,21 +1756,7 @@ /obj/item/clothing/neck/necklace/dope) crate_name = "crate" -/datum/supply_pack/misc/conveyor - name = "Conveyor Assembly Crate" - desc = "Keep production moving along with six conveyor belts. Conveyor switch included. If you have any questions, check out the enclosed instruction book." - cost = 1500 - contains = list(/obj/item/conveyor_construct, - /obj/item/conveyor_construct, - /obj/item/conveyor_construct, - /obj/item/conveyor_construct, - /obj/item/conveyor_construct, - /obj/item/conveyor_construct, - /obj/item/conveyor_switch_construct, - /obj/item/paper/guides/conveyor) - crate_name = "conveyor assembly crate" - -/datum/supply_pack/misc/foamforce +/datum/supply_pack/costumes_toys/foamforce name = "Foam Force Crate" desc = "Break out the big guns with eight Foam Force shotguns!" cost = 1000 @@ -1710,7 +1770,7 @@ /obj/item/gun/ballistic/shotgun/toy) crate_name = "foam force crate" -/datum/supply_pack/misc/foamforce/bonus +/datum/supply_pack/costumes_toys/foamforce/bonus name = "Foam Force Pistols Crate" desc = "Psst.. hey bud... remember those old foam force pistols that got discontinued for being too cool? Well I got two of those right here with your name on em. I'll even throw in a spare mag for each, waddya say?" contraband = TRUE @@ -1721,198 +1781,7 @@ /obj/item/ammo_box/magazine/toy/pistol) crate_name = "foam force crate" -/datum/supply_pack/misc/noslipfloor - name = "High-traction Floor Tiles" - desc = "Make slipping a thing of the past with thirty industrial-grade anti-slip floortiles!" - cost = 2000 - contains = list(/obj/item/stack/tile/noslip/thirty) - crate_name = "high-traction floor tiles crate" - -/datum/supply_pack/misc/clownpin - name = "Hilarious Firing Pin Crate" - desc = "i uh... im not really sure what this does. wanna buy it?" - cost = 5000 - contraband = TRUE - contains = list(/obj/item/device/firing_pin/clown) - // It's /technically/ a toy. For the clown, at least. - crate_name = "toy crate" - -/datum/supply_pack/misc/janitor - name = "Janitorial Supplies Crate" - desc = "Fight back against dirt and grime with Nanotrasen's Janitorial Essentials(tm)! Contains three buckets, caution signs, and cleaner grenades. Also has a single mop, spray cleaner, rag, and trash bag." - cost = 1000 - contains = list(/obj/item/reagent_containers/glass/bucket, - /obj/item/reagent_containers/glass/bucket, - /obj/item/reagent_containers/glass/bucket, - /obj/item/mop, - /obj/item/caution, - /obj/item/caution, - /obj/item/caution, - /obj/item/storage/bag/trash, - /obj/item/reagent_containers/spray/cleaner, - /obj/item/reagent_containers/glass/rag, - /obj/item/grenade/chem_grenade/cleaner, - /obj/item/grenade/chem_grenade/cleaner, - /obj/item/grenade/chem_grenade/cleaner) - crate_name = "janitorial supplies crate" - -/datum/supply_pack/misc/janitor/janicart - name = "Janitorial Cart and Galoshes Crate" - desc = "The keystone to any successful janitor. As long as you have feet, this pair of galoshes will keep them firmly planted on the ground. Also contains a janitorial cart." - cost = 2000 - contains = list(/obj/structure/janitorialcart, - /obj/item/clothing/shoes/galoshes) - crate_name = "janitorial cart crate" - crate_type = /obj/structure/closet/crate/large - -/datum/supply_pack/misc/janitor/janitank - name = "Janitor Backpack Crate" - desc = "Call forth divine judgement upon dirt and grime with this high capacity janitor backpack. Contains 500 units of station-cleansing cleaner. Requires janitor access to open." - cost = 1000 - access = ACCESS_JANITOR - contains = list(/obj/item/watertank/janitor) - crate_name = "janitor backpack crate" - crate_type = /obj/structure/closet/crate/secure - -/datum/supply_pack/misc/lasertag - name = "Laser Tag Crate" - desc = "Foam Force is for boys. Laser Tag is for men. Contains three sets of red suits, blue suits, matching helmets, and matching laser tag guns." - cost = 1500 - contains = list(/obj/item/gun/energy/laser/redtag, - /obj/item/gun/energy/laser/redtag, - /obj/item/gun/energy/laser/redtag, - /obj/item/gun/energy/laser/bluetag, - /obj/item/gun/energy/laser/bluetag, - /obj/item/gun/energy/laser/bluetag, - /obj/item/clothing/suit/redtag, - /obj/item/clothing/suit/redtag, - /obj/item/clothing/suit/redtag, - /obj/item/clothing/suit/bluetag, - /obj/item/clothing/suit/bluetag, - /obj/item/clothing/suit/bluetag, - /obj/item/clothing/head/helmet/redtaghelm, - /obj/item/clothing/head/helmet/redtaghelm, - /obj/item/clothing/head/helmet/redtaghelm, - /obj/item/clothing/head/helmet/bluetaghelm, - /obj/item/clothing/head/helmet/bluetaghelm, - /obj/item/clothing/head/helmet/bluetaghelm) - crate_name = "laser tag crate" - -/datum/supply_pack/misc/lasertag/pins - name = "Laser Tag Firing Pins Crate" - desc = "Three laser tag firing pins used in laser-tag units to ensure users are wearing their vests." - cost = 3000 - contraband = TRUE - contains = list(/obj/item/storage/box/lasertagpins) - crate_name = "laser tag crate" - -/datum/supply_pack/misc/mule - name = "MULEbot Crate" - desc = "Pink-haired Quartermaster not doing her job? Replace her with this tireless worker, today!" - cost = 2000 - contains = list(/mob/living/simple_animal/bot/mulebot) - crate_name = "\improper MULEbot Crate" - crate_type = /obj/structure/closet/crate/large - -/datum/supply_pack/misc/religious_supplies - name = "Religious Supplies Crate" - desc = "Keep your local chaplain happy and well-supplied, lest they call down judgement upon your cargo bay. Contains two bottles of holywater, bibles, chaplain robes, and burial garmets." - cost = 4000 // it costs so much because the Space Church is ran by Space Jews - contains = list(/obj/item/reagent_containers/food/drinks/bottle/holywater, - /obj/item/reagent_containers/food/drinks/bottle/holywater, - /obj/item/storage/book/bible/booze, - /obj/item/storage/book/bible/booze, - /obj/item/clothing/suit/hooded/chaplain_hoodie, - /obj/item/clothing/suit/hooded/chaplain_hoodie, - /obj/item/clothing/under/burial, - /obj/item/clothing/under/burial) - crate_name = "religious supplies crate" - -/datum/supply_pack/misc/janitor/lightbulbs - name = "Replacement Lights" - desc = "May the light of Aether shine upon this station! Or at least, the light of forty two light tubes and twenty one light bulbs." - cost = 1000 - contains = list(/obj/item/storage/box/lights/mixed, - /obj/item/storage/box/lights/mixed, - /obj/item/storage/box/lights/mixed) - crate_name = "replacement lights" - -/datum/supply_pack/misc/minerkit - name = "Shaft Miner Starter Kit" - desc = "All the miners died too fast? Assistant wants to get a taste of life off-station? Either way, this kit is the best way to turn a regular crewman into an ore-producing, monster-slaying machine. Contains meson goggles, a pickaxe, advanced mining scanner, cargo headset, ore bag, gasmask, and explorer suit. Requires QM access to open." - cost = 2500 - access = ACCESS_QM - contains = list(/obj/item/pickaxe/mini, - /obj/item/clothing/glasses/meson, - /obj/item/device/t_scanner/adv_mining_scanner/lesser, - /obj/item/device/radio/headset/headset_cargo/mining, - /obj/item/storage/bag/ore, - /obj/item/clothing/suit/hooded/explorer, - /obj/item/clothing/mask/gas/explorer) - crate_name = "shaft miner starter kit" - crate_type = /obj/structure/closet/crate/secure - -/datum/supply_pack/misc/toner - name = "Toner Crate" - desc = "Spent too much ink printing butt pictures? Fret not, with these six toner refills, you'll be printing butts 'till the cows come home!'" - cost = 1000 - contains = list(/obj/item/device/toner, - /obj/item/device/toner, - /obj/item/device/toner, - /obj/item/device/toner, - /obj/item/device/toner, - /obj/item/device/toner) - crate_name = "toner crate" - -/datum/supply_pack/misc/autodrobe - name = "Autodrobe Supply Crate" - desc = "Autodrobe missing your favorite dress? Solve that issue today with these two autodrobe refills." - cost = 1500 - contains = list(/obj/item/vending_refill/autodrobe, - /obj/item/vending_refill/autodrobe) - crate_name = "autodrobe supply crate" - -/datum/supply_pack/misc/costume - name = "Standard Costume Crate" - desc = "Supply the station's entertainers with the equipment of their trade with these Nanotrasen-approved costumes! Contains a full clown and mime outfit, along with a bike horn and a bottle of nothing." - cost = 1000 - access = ACCESS_THEATRE - contains = list(/obj/item/storage/backpack/clown, - /obj/item/clothing/shoes/clown_shoes, - /obj/item/clothing/mask/gas/clown_hat, - /obj/item/clothing/under/rank/clown, - /obj/item/bikehorn, - /obj/item/clothing/under/rank/mime, - /obj/item/clothing/shoes/sneakers/black, - /obj/item/clothing/gloves/color/white, - /obj/item/clothing/mask/gas/mime, - /obj/item/clothing/head/beret, - /obj/item/clothing/suit/suspenders, - /obj/item/reagent_containers/food/drinks/bottle/bottleofnothing, - /obj/item/storage/backpack/mime) - crate_name = "standard costume crate" - crate_type = /obj/structure/closet/crate/secure - -/datum/supply_pack/misc/costume_original - name = "Original Costume Crate" - desc = "Reenact Shakespearean plays with this assortment of outfits. Contains eight different costumes!" - cost = 1000 - contains = list(/obj/item/clothing/head/snowman, - /obj/item/clothing/suit/snowman, - /obj/item/clothing/head/chicken, - /obj/item/clothing/suit/chickensuit, - /obj/item/clothing/mask/gas/monkeymask, - /obj/item/clothing/suit/monkeysuit, - /obj/item/clothing/head/cardborg, - /obj/item/clothing/suit/cardborg, - /obj/item/clothing/head/xenos, - /obj/item/clothing/suit/xenos, - /obj/item/clothing/suit/hooded/ian_costume, - /obj/item/clothing/suit/hooded/carp_costume, - /obj/item/clothing/suit/hooded/bee_costume) - crate_name = "original costume crate" - -/datum/supply_pack/misc/formalwear +/datum/supply_pack/costumes_toys/formalwear name = "Formalwear Crate" desc = "You're gonna like the way you look, I guaranteed it. Contains an asston of fancy clothing." cost = 3000 //Lots of very expensive items. You gotta pay up to look good! @@ -1944,52 +1813,91 @@ /obj/item/clothing/under/suit_jacket/tan, /obj/item/lipstick/random) crate_name = "formalwear crate" + crate_type = /obj/structure/closet/crate/wooden -/datum/supply_pack/misc/wizard - name = "Wizard Costume Crate" - desc = "Pretend to join the Wizard Federation with this full wizard outfit! Nanotrasen would like to remind its employees that actually joining the Wizard Federation is subject to termination of job and life." - cost = 2000 - contains = list(/obj/item/staff, - /obj/item/clothing/suit/wizrobe/fake, - /obj/item/clothing/shoes/sandal, - /obj/item/clothing/head/wizard/fake) - crate_name = "wizard costume crate" +/datum/supply_pack/costumes_toys/clownpin + name = "Hilarious Firing Pin Crate" + desc = "I uh... I'm not really sure what this does. Wanna buy it?" + cost = 5000 + contraband = TRUE + contains = list(/obj/item/firing_pin/clown) + crate_name = "toy crate" // It's /technically/ a toy. For the clown, at least. + crate_type = /obj/structure/closet/crate/wooden -/datum/supply_pack/misc/randomised/fill(obj/structure/closet/crate/C) - var/list/L = contains.Copy() - for(var/i in 1 to num_contained) - var/item = pick_n_take(L) - new item(C) +/datum/supply_pack/costumes_toys/lasertag + name = "Laser Tag Crate" + desc = "Foam Force is for boys. Laser Tag is for men. Contains three sets of red suits, blue suits, matching helmets, and matching laser tag guns." + cost = 1500 + contains = list(/obj/item/gun/energy/laser/redtag, + /obj/item/gun/energy/laser/redtag, + /obj/item/gun/energy/laser/redtag, + /obj/item/gun/energy/laser/bluetag, + /obj/item/gun/energy/laser/bluetag, + /obj/item/gun/energy/laser/bluetag, + /obj/item/clothing/suit/redtag, + /obj/item/clothing/suit/redtag, + /obj/item/clothing/suit/redtag, + /obj/item/clothing/suit/bluetag, + /obj/item/clothing/suit/bluetag, + /obj/item/clothing/suit/bluetag, + /obj/item/clothing/head/helmet/redtaghelm, + /obj/item/clothing/head/helmet/redtaghelm, + /obj/item/clothing/head/helmet/redtaghelm, + /obj/item/clothing/head/helmet/bluetaghelm, + /obj/item/clothing/head/helmet/bluetaghelm, + /obj/item/clothing/head/helmet/bluetaghelm) + crate_name = "laser tag crate" -/datum/supply_pack/misc/randomised - name = "Collectable Hats Crate" - desc = "Flaunt your status with three unique, highly-collectable hats!" - cost = 20000 - var/num_contained = 3 //number of items picked to be contained in a randomised crate - contains = list(/obj/item/clothing/head/collectable/chef, - /obj/item/clothing/head/collectable/paper, - /obj/item/clothing/head/collectable/tophat, - /obj/item/clothing/head/collectable/captain, - /obj/item/clothing/head/collectable/beret, - /obj/item/clothing/head/collectable/welding, - /obj/item/clothing/head/collectable/flatcap, - /obj/item/clothing/head/collectable/pirate, - /obj/item/clothing/head/collectable/kitty, - /obj/item/clothing/head/collectable/rabbitears, - /obj/item/clothing/head/collectable/wizard, - /obj/item/clothing/head/collectable/hardhat, - /obj/item/clothing/head/collectable/HoS, - /obj/item/clothing/head/collectable/HoP, - /obj/item/clothing/head/collectable/thunderdome, - /obj/item/clothing/head/collectable/swat, - /obj/item/clothing/head/collectable/slime, - /obj/item/clothing/head/collectable/police, - /obj/item/clothing/head/collectable/slime, - /obj/item/clothing/head/collectable/xenom, - /obj/item/clothing/head/collectable/petehat) - crate_name = "collectable hats crate" +/datum/supply_pack/costumes_toys/lasertag/pins + name = "Laser Tag Firing Pins Crate" + desc = "Three laser tag firing pins used in laser-tag units to ensure users are wearing their vests." + cost = 3000 + contraband = TRUE + contains = list(/obj/item/storage/box/lasertagpins) + crate_name = "laser tag crate" -/datum/supply_pack/misc/randomised/toys +/datum/supply_pack/costumes_toys/costume_original + name = "Original Costume Crate" + desc = "Reenact Shakespearean plays with this assortment of outfits. Contains eight different costumes!" + cost = 1000 + contains = list(/obj/item/clothing/head/snowman, + /obj/item/clothing/suit/snowman, + /obj/item/clothing/head/chicken, + /obj/item/clothing/suit/chickensuit, + /obj/item/clothing/mask/gas/monkeymask, + /obj/item/clothing/suit/monkeysuit, + /obj/item/clothing/head/cardborg, + /obj/item/clothing/suit/cardborg, + /obj/item/clothing/head/xenos, + /obj/item/clothing/suit/xenos, + /obj/item/clothing/suit/hooded/ian_costume, + /obj/item/clothing/suit/hooded/carp_costume, + /obj/item/clothing/suit/hooded/bee_costume) + crate_name = "original costume crate" + crate_type = /obj/structure/closet/crate/wooden + +/datum/supply_pack/costumes_toys/costume + name = "Standard Costume Crate" + desc = "Supply the station's entertainers with the equipment of their trade with these Nanotrasen-approved costumes! Contains a full clown and mime outfit, along with a bike horn and a bottle of nothing." + cost = 1000 + access = ACCESS_THEATRE + contains = list(/obj/item/storage/backpack/clown, + /obj/item/clothing/shoes/clown_shoes, + /obj/item/clothing/mask/gas/clown_hat, + /obj/item/clothing/under/rank/clown, + /obj/item/bikehorn, + /obj/item/clothing/under/rank/mime, + /obj/item/clothing/shoes/sneakers/black, + /obj/item/clothing/gloves/color/white, + /obj/item/clothing/mask/gas/mime, + /obj/item/clothing/head/beret, + /obj/item/clothing/suit/suspenders, + /obj/item/reagent_containers/food/drinks/bottle/bottleofnothing, + /obj/item/storage/backpack/mime) + crate_name = "standard costume crate" + crate_type = /obj/structure/closet/crate/wooden + +/datum/supply_pack/costumes_toys/randomised/toys name = "Toy Crate" desc = "Who cares about pride and accomplishment? Skip the gaming and get straight to the sweet rewards with this product! Contains five random toys. Warranty void if used to prank research directors." cost = 5000 // or play the arcade machines ya lazy bum @@ -2015,3 +1923,138 @@ /obj/item/toy/eightball, /obj/item/vending_refill/donksoft) crate_name = "toy crate" + crate_type = /obj/structure/closet/crate/wooden + +/datum/supply_pack/costumes_toys/wizard + name = "Wizard Costume Crate" + desc = "Pretend to join the Wizard Federation with this full wizard outfit! Nanotrasen would like to remind its employees that actually joining the Wizard Federation is subject to termination of job and life." + cost = 2000 + contains = list(/obj/item/staff, + /obj/item/clothing/suit/wizrobe/fake, + /obj/item/clothing/shoes/sandal, + /obj/item/clothing/head/wizard/fake) + crate_name = "wizard costume crate" + crate_type = /obj/structure/closet/crate/wooden + +/datum/supply_pack/costumes_toys/randomised/fill(obj/structure/closet/crate/C) + var/list/L = contains.Copy() + for(var/i in 1 to num_contained) + var/item = pick_n_take(L) + new item(C) + +////////////////////////////////////////////////////////////////////////////// +//////////////////////////// Miscellaneous /////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/misc + group = "Miscellaneous Supplies" + +/datum/supply_pack/misc/artsupply + name = "Art Supplies" + desc = "Make some happy little accidents with six canvasses, two easels, and two rainbow crayons!" + cost = 800 + contains = list(/obj/structure/easel, + /obj/structure/easel, + /obj/item/canvas/nineteenXnineteen, + /obj/item/canvas/nineteenXnineteen, + /obj/item/canvas/twentythreeXnineteen, + /obj/item/canvas/twentythreeXnineteen, + /obj/item/canvas/twentythreeXtwentythree, + /obj/item/canvas/twentythreeXtwentythree, + /obj/item/toy/crayon/rainbow, + /obj/item/toy/crayon/rainbow) + crate_name = "art supply crate" + crate_type = /obj/structure/closet/crate/wooden + +/datum/supply_pack/misc/bicycle + name = "Bicycle" + desc = "Nanotrasen reminds all employees to never toy with powers outside their control." + cost = 1000000 + contains = list(/obj/vehicle/ridden/bicycle) + crate_name = "Bicycle Crate" + crate_type = /obj/structure/closet/crate/large + +/datum/supply_pack/misc/bigband + name = "Big Band Instrument Collection" + desc = "Get your sad station movin' and groovin' with this fine collection! Contains nine different instruments!" + cost = 5000 + crate_name = "Big band musical instruments collection" + contains = list(/obj/item/instrument/violin, + /obj/item/instrument/guitar, + /obj/item/instrument/glockenspiel, + /obj/item/instrument/accordion, + /obj/item/instrument/saxophone, + /obj/item/instrument/trombone, + /obj/item/instrument/recorder, + /obj/item/instrument/harmonica, + /obj/structure/piano/unanchored) + crate_type = /obj/structure/closet/crate/wooden + +/datum/supply_pack/misc/book_crate + name = "Book Crate" + desc = "Surplus from the Nanotrasen Archives, these five books are sure to be good reads." + cost = 1500 + contains = list(/obj/item/book/codex_gigas, + /obj/item/book/manual/random/, + /obj/item/book/manual/random/, + /obj/item/book/manual/random/, + /obj/item/book/random/triple) + crate_type = /obj/structure/closet/crate/wooden + +/datum/supply_pack/misc/paper + name = "Bureaucracy Crate" + desc = "High stacks of papers on your desk Are a big problem - make it Pea-sized with these bureacratic supplies! Contains six pens, some camera film, hand labeler supplies, a paper bin, three folders, two clipboards and two stamps."//that was too forced + cost = 1500 + contains = list(/obj/structure/filingcabinet/chestdrawer/wheeled, + /obj/item/camera_film, + /obj/item/hand_labeler, + /obj/item/hand_labeler_refill, + /obj/item/hand_labeler_refill, + /obj/item/paper_bin, + /obj/item/pen/fourcolor, + /obj/item/pen/fourcolor, + /obj/item/pen, + /obj/item/pen/fountain, + /obj/item/pen/blue, + /obj/item/pen/red, + /obj/item/folder/blue, + /obj/item/folder/red, + /obj/item/folder/yellow, + /obj/item/clipboard, + /obj/item/clipboard, + /obj/item/stamp, + /obj/item/stamp/denied) + crate_name = "bureaucracy crate" + +/datum/supply_pack/misc/fountainpens + name = "Calligraphy Crate" + desc = "Sign death warrants in style with these seven executive fountain pens." + cost = 700 + contains = list(/obj/item/storage/box/fountainpens) + crate_type = /obj/structure/closet/crate/wooden + +/datum/supply_pack/misc/religious_supplies + name = "Religious Supplies Crate" + desc = "Keep your local chaplain happy and well-supplied, lest they call down judgement upon your cargo bay. Contains two bottles of holywater, bibles, chaplain robes, and burial garmets." + cost = 4000 // it costs so much because the Space Church is ran by Space Jews + contains = list(/obj/item/reagent_containers/food/drinks/bottle/holywater, + /obj/item/reagent_containers/food/drinks/bottle/holywater, + /obj/item/storage/book/bible/booze, + /obj/item/storage/book/bible/booze, + /obj/item/clothing/suit/hooded/chaplain_hoodie, + /obj/item/clothing/suit/hooded/chaplain_hoodie, + /obj/item/clothing/under/burial, + /obj/item/clothing/under/burial) + crate_name = "religious supplies crate" + +/datum/supply_pack/misc/toner + name = "Toner Crate" + desc = "Spent too much ink printing butt pictures? Fret not, with these six toner refills, you'll be printing butts 'till the cows come home!'" + cost = 1000 + contains = list(/obj/item/toner, + /obj/item/toner, + /obj/item/toner, + /obj/item/toner, + /obj/item/toner, + /obj/item/toner) + crate_name = "toner crate" diff --git a/code/modules/client/asset_cache.dm b/code/modules/client/asset_cache.dm index c821204993..28a3ec23b9 100644 --- a/code/modules/client/asset_cache.dm +++ b/code/modules/client/asset_cache.dm @@ -157,12 +157,14 @@ GLOBAL_LIST_EMPTY(asset_datums) //get an assetdatum or make a new one /proc/get_asset_datum(var/type) - if (!(type in GLOB.asset_datums)) - return new type() - return GLOB.asset_datums[type] + return GLOB.asset_datums[type] || new type() + +/datum/asset + var/_abstract = /datum/asset /datum/asset/New() GLOB.asset_datums[type] = src + register() /datum/asset/proc/register() return @@ -170,20 +172,173 @@ GLOBAL_LIST_EMPTY(asset_datums) /datum/asset/proc/send(client) return + //If you don't need anything complicated. /datum/asset/simple + _abstract = /datum/asset/simple var/assets = list() var/verify = FALSE /datum/asset/simple/register() for(var/asset_name in assets) register_asset(asset_name, assets[asset_name]) + /datum/asset/simple/send(client) send_asset_list(client,assets,verify) +// For registering or sending multiple others at once +/datum/asset/group + _abstract = /datum/asset/group + var/list/children + +/datum/asset/group/register() + for(var/type in children) + get_asset_datum(type) + +/datum/asset/group/send(client/C) + for(var/type in children) + var/datum/asset/A = get_asset_datum(type) + A.send(C) + + +// spritesheet implementation - coalesces various icons into a single .png file +// and uses CSS to select icons out of that file - saves on transferring some +// 1400-odd individual PNG files +#define SPR_SIZE 1 +#define SPR_IDX 2 +#define SPRSZ_COUNT 1 +#define SPRSZ_ICON 2 +#define SPRSZ_STRIPPED 3 + +/datum/asset/spritesheet + _abstract = /datum/asset/spritesheet + var/name + var/list/sizes = list() // "32x32" -> list(10, icon/normal, icon/stripped) + var/list/sprites = list() // "foo_bar" -> list("32x32", 5) + var/verify = FALSE + +/datum/asset/spritesheet/register() + if (!name) + CRASH("spritesheet [type] cannot register without a name") + ensure_stripped() + + var/res_name = "spritesheet_[name].css" + var/fname = "data/spritesheets/[res_name]" + call("rust_g", "file_write")(generate_css(), fname) + register_asset(res_name, file(fname)) + + for(var/size_id in sizes) + var/size = sizes[size_id] + register_asset("[name]_[size_id].png", size[SPRSZ_STRIPPED]) + +/datum/asset/spritesheet/send(client/C) + if (!name) + return + var/all = list("spritesheet_[name].css") + for(var/size_id in sizes) + all += "[name]_[size_id].png" + send_asset_list(C, all, verify) + +/datum/asset/spritesheet/proc/ensure_stripped(sizes_to_strip = sizes) + for(var/size_id in sizes_to_strip) + var/size = sizes[size_id] + if (size[SPRSZ_STRIPPED]) + continue + + // save flattened version + var/fname = "data/spritesheets/[name]_[size_id].png" + fcopy(size[SPRSZ_ICON], fname) + var/error = call("rust_g", "dmi_strip_metadata")(fname) + if(length(error)) + stack_trace("Failed to strip [name]_[size_id].png: [error]") + size[SPRSZ_STRIPPED] = icon(fname) + +/datum/asset/spritesheet/proc/generate_css() + var/list/out = list() + + for (var/size_id in sizes) + var/size = sizes[size_id] + var/icon/tiny = size[SPRSZ_ICON] + out += ".[name][size_id]{display:inline-block;width:[tiny.Width()]px;height:[tiny.Height()]px;background:url('[name]_[size_id].png') no-repeat;}" + + for (var/sprite_id in sprites) + var/sprite = sprites[sprite_id] + var/size_id = sprite[SPR_SIZE] + var/idx = sprite[SPR_IDX] + var/size = sizes[size_id] + + var/icon/tiny = size[SPRSZ_ICON] + var/icon/big = size[SPRSZ_STRIPPED] + var/per_line = big.Width() / tiny.Width() + var/x = (idx % per_line) * tiny.Width() + var/y = round(idx / per_line) * tiny.Height() + + out += ".[name][size_id].[sprite_id]{background-position:-[x]px -[y]px;}" + + return out.Join("\n") + +/datum/asset/spritesheet/proc/Insert(sprite_name, icon/I, icon_state="", dir=SOUTH, frame=1, moving=FALSE) + I = icon(I, icon_state=icon_state, dir=dir, frame=frame, moving=moving) + if (!I || !length(icon_states(I))) // that direction or state doesn't exist + return + var/size_id = "[I.Width()]x[I.Height()]" + var/size = sizes[size_id] + + if (sprites[sprite_name]) + CRASH("duplicate sprite \"[sprite_name]\" in sheet [name] ([type])") + + if (size) + var/position = size[SPRSZ_COUNT]++ + var/icon/sheet = size[SPRSZ_ICON] + size[SPRSZ_STRIPPED] = null + sheet.Insert(I, icon_state=sprite_name) + sprites[sprite_name] = list(size_id, position) + else + sizes[size_id] = size = list(1, I, null) + sprites[sprite_name] = list(size_id, 0) + +/datum/asset/spritesheet/proc/InsertAll(prefix, icon/I, list/directions) + if (length(prefix)) + prefix = "[prefix]-" + + if (!directions) + directions = list(SOUTH) + + for (var/icon_state_name in icon_states(I)) + for (var/direction in directions) + var/prefix2 = (directions.len > 1) ? "[dir2text(direction)]-" : "" + Insert("[prefix][prefix2][icon_state_name]", I, icon_state=icon_state_name, dir=direction) + +/datum/asset/spritesheet/proc/css_tag() + return {""} + +/datum/asset/spritesheet/proc/icon_tag(sprite_name) + var/sprite = sprites[sprite_name] + if (!sprite) + return null + var/size_id = sprite[SPR_SIZE] + return {""} + +#undef SPR_SIZE +#undef SPR_IDX +#undef SPRSZ_COUNT +#undef SPRSZ_ICON +#undef SPRSZ_STRIPPED + + +/datum/asset/spritesheet/simple + _abstract = /datum/asset/spritesheet/simple + var/list/assets + +/datum/asset/spritesheet/simple/register() + for (var/key in assets) + Insert(key, assets[key]) + ..() + //Generates assets based on iconstates of a single icon /datum/asset/simple/icon_states + _abstract = /datum/asset/simple/icon_states var/icon var/list/directions = list(SOUTH) var/frame = 1 @@ -209,6 +364,7 @@ GLOBAL_LIST_EMPTY(asset_datums) register_asset(asset_name, asset) /datum/asset/simple/icon_states/multiple_icons + _abstract = /datum/asset/simple/icon_states/multiple_icons var/list/icons /datum/asset/simple/icon_states/multiple_icons/register() @@ -260,56 +416,63 @@ GLOBAL_LIST_EMPTY(asset_datums) "smmon_6.gif" = 'icons/program_icons/smmon_6.gif' ) -/datum/asset/simple/pda +/datum/asset/spritesheet/simple/pda + name = "pda" assets = list( - "pda_atmos.png" = 'icons/pda_icons/pda_atmos.png', - "pda_back.png" = 'icons/pda_icons/pda_back.png', - "pda_bell.png" = 'icons/pda_icons/pda_bell.png', - "pda_blank.png" = 'icons/pda_icons/pda_blank.png', - "pda_boom.png" = 'icons/pda_icons/pda_boom.png', - "pda_bucket.png" = 'icons/pda_icons/pda_bucket.png', - "pda_medbot.png" = 'icons/pda_icons/pda_medbot.png', - "pda_floorbot.png" = 'icons/pda_icons/pda_floorbot.png', - "pda_cleanbot.png" = 'icons/pda_icons/pda_cleanbot.png', - "pda_crate.png" = 'icons/pda_icons/pda_crate.png', - "pda_cuffs.png" = 'icons/pda_icons/pda_cuffs.png', - "pda_eject.png" = 'icons/pda_icons/pda_eject.png', - "pda_flashlight.png" = 'icons/pda_icons/pda_flashlight.png', - "pda_honk.png" = 'icons/pda_icons/pda_honk.png', - "pda_mail.png" = 'icons/pda_icons/pda_mail.png', - "pda_medical.png" = 'icons/pda_icons/pda_medical.png', - "pda_menu.png" = 'icons/pda_icons/pda_menu.png', - "pda_mule.png" = 'icons/pda_icons/pda_mule.png', - "pda_notes.png" = 'icons/pda_icons/pda_notes.png', - "pda_power.png" = 'icons/pda_icons/pda_power.png', - "pda_rdoor.png" = 'icons/pda_icons/pda_rdoor.png', - "pda_reagent.png" = 'icons/pda_icons/pda_reagent.png', - "pda_refresh.png" = 'icons/pda_icons/pda_refresh.png', - "pda_scanner.png" = 'icons/pda_icons/pda_scanner.png', - "pda_signaler.png" = 'icons/pda_icons/pda_signaler.png', - "pda_status.png" = 'icons/pda_icons/pda_status.png', - "pda_dronephone.png" = 'icons/pda_icons/pda_dronephone.png' + "atmos" = 'icons/pda_icons/pda_atmos.png', + "back" = 'icons/pda_icons/pda_back.png', + "bell" = 'icons/pda_icons/pda_bell.png', + "blank" = 'icons/pda_icons/pda_blank.png', + "boom" = 'icons/pda_icons/pda_boom.png', + "bucket" = 'icons/pda_icons/pda_bucket.png', + "medbot" = 'icons/pda_icons/pda_medbot.png', + "floorbot" = 'icons/pda_icons/pda_floorbot.png', + "cleanbot" = 'icons/pda_icons/pda_cleanbot.png', + "crate" = 'icons/pda_icons/pda_crate.png', + "cuffs" = 'icons/pda_icons/pda_cuffs.png', + "eject" = 'icons/pda_icons/pda_eject.png', + "flashlight" = 'icons/pda_icons/pda_flashlight.png', + "honk" = 'icons/pda_icons/pda_honk.png', + "mail" = 'icons/pda_icons/pda_mail.png', + "medical" = 'icons/pda_icons/pda_medical.png', + "menu" = 'icons/pda_icons/pda_menu.png', + "mule" = 'icons/pda_icons/pda_mule.png', + "notes" = 'icons/pda_icons/pda_notes.png', + "power" = 'icons/pda_icons/pda_power.png', + "rdoor" = 'icons/pda_icons/pda_rdoor.png', + "reagent" = 'icons/pda_icons/pda_reagent.png', + "refresh" = 'icons/pda_icons/pda_refresh.png', + "scanner" = 'icons/pda_icons/pda_scanner.png', + "signaler" = 'icons/pda_icons/pda_signaler.png', + "status" = 'icons/pda_icons/pda_status.png', + "dronephone" = 'icons/pda_icons/pda_dronephone.png' ) -/datum/asset/simple/paper +/datum/asset/spritesheet/simple/paper + name = "paper" assets = list( - "large_stamp-clown.png" = 'icons/stamp_icons/large_stamp-clown.png', - "large_stamp-deny.png" = 'icons/stamp_icons/large_stamp-deny.png', - "large_stamp-ok.png" = 'icons/stamp_icons/large_stamp-ok.png', - "large_stamp-hop.png" = 'icons/stamp_icons/large_stamp-hop.png', - "large_stamp-cmo.png" = 'icons/stamp_icons/large_stamp-cmo.png', - "large_stamp-ce.png" = 'icons/stamp_icons/large_stamp-ce.png', - "large_stamp-hos.png" = 'icons/stamp_icons/large_stamp-hos.png', - "large_stamp-rd.png" = 'icons/stamp_icons/large_stamp-rd.png', - "large_stamp-cap.png" = 'icons/stamp_icons/large_stamp-cap.png', - "large_stamp-qm.png" = 'icons/stamp_icons/large_stamp-qm.png', - "large_stamp-law.png" = 'icons/stamp_icons/large_stamp-law.png' + "stamp-clown" = 'icons/stamp_icons/large_stamp-clown.png', + "stamp-deny" = 'icons/stamp_icons/large_stamp-deny.png', + "stamp-ok" = 'icons/stamp_icons/large_stamp-ok.png', + "stamp-hop" = 'icons/stamp_icons/large_stamp-hop.png', + "stamp-cmo" = 'icons/stamp_icons/large_stamp-cmo.png', + "stamp-ce" = 'icons/stamp_icons/large_stamp-ce.png', + "stamp-hos" = 'icons/stamp_icons/large_stamp-hos.png', + "stamp-rd" = 'icons/stamp_icons/large_stamp-rd.png', + "stamp-cap" = 'icons/stamp_icons/large_stamp-cap.png', + "stamp-qm" = 'icons/stamp_icons/large_stamp-qm.png', + "stamp-law" = 'icons/stamp_icons/large_stamp-law.png' ) /datum/asset/simple/IRV assets = list( "jquery-ui.custom-core-widgit-mouse-sortable-min.js" = 'html/IRV/jquery-ui.custom-core-widgit-mouse-sortable-min.js', - "jquery-1.10.2.min.js" = 'html/IRV/jquery-1.10.2.min.js' + ) + +/datum/asset/group/IRV + children = list( + /datum/asset/simple/jquery, + /datum/asset/simple/IRV ) /datum/asset/simple/changelog @@ -335,10 +498,22 @@ GLOBAL_LIST_EMPTY(asset_datums) "changelog.css" = 'html/changelog.css' ) -/datum/asset/simple/goonchat +/datum/asset/group/goonchat + children = list( + /datum/asset/simple/jquery, + /datum/asset/simple/goonchat, + /datum/asset/spritesheet/goonchat + ) + +/datum/asset/simple/jquery verify = FALSE assets = list( "jquery.min.js" = 'code/modules/goonchat/browserassets/js/jquery.min.js', + ) + +/datum/asset/simple/goonchat + verify = FALSE + assets = list( "json2.min.js" = 'code/modules/goonchat/browserassets/js/json2.min.js', "errorHandler.js" = 'code/modules/goonchat/browserassets/js/errorHandler.js', "browserOutput.js" = 'code/modules/goonchat/browserassets/js/browserOutput.js', @@ -350,6 +525,24 @@ GLOBAL_LIST_EMPTY(asset_datums) "browserOutput.css" = 'code/modules/goonchat/browserassets/css/browserOutput.css', ) +/datum/asset/spritesheet/goonchat + name = "chat" + +/datum/asset/spritesheet/goonchat/register() + InsertAll("emoji", 'icons/emoji.dmi') + + // pre-loading all lanugage icons also helps to avoid meta + InsertAll("language", 'icons/misc/language.dmi') + // catch languages which are pulling icons from another file + for(var/path in typesof(/datum/language)) + var/datum/language/L = path + var/icon = initial(L.icon) + if (icon != 'icons/misc/language.dmi') + var/icon_state = initial(L.icon_state) + Insert("language-[icon_state]", icon, icon_state=icon_state) + + ..() + /datum/asset/simple/permissions assets = list( "padlock.png" = 'html/padlock.png' @@ -362,26 +555,19 @@ GLOBAL_LIST_EMPTY(asset_datums) var/datum/language/L = new path () L.get_icon() -/datum/asset/simple/icon_states/emojis - icon = 'icons/emoji.dmi' - generic_icon_names = TRUE +/datum/asset/spritesheet/pipes + name = "pipes" -/datum/asset/simple/icon_states/multiple_icons/pipes - icons = list('icons/obj/atmospherics/pipes/pipe_item.dmi', 'icons/obj/atmospherics/pipes/disposal.dmi', 'icons/obj/atmospherics/pipes/transit_tube.dmi') - prefix = "pipe" - -/datum/asset/simple/icon_states/multiple_icons/pipes/New() - directions = GLOB.alldirs +/datum/asset/spritesheet/pipes/register() + for (var/each in list('icons/obj/atmospherics/pipes/pipe_item.dmi', 'icons/obj/atmospherics/pipes/disposal.dmi', 'icons/obj/atmospherics/pipes/transit_tube.dmi')) + InsertAll("", each, GLOB.alldirs) ..() -/datum/asset/simple/icon_states/multiple_icons/pipes/register() - ..() - var/meter = icon('icons/obj/atmospherics/pipes/simple.dmi', "meterX", SOUTH, frame, movement_states) - if(meter) - register_asset(sanitize_filename("[prefix].south.meterX.png"), fcopy_rsc(meter)) - // Representative icons for each research design -/datum/asset/simple/research_designs/register() +/datum/asset/spritesheet/research_designs + name = "design" + +/datum/asset/spritesheet/research_designs/register() for (var/path in subtypesof(/datum/design)) var/datum/design/D = path @@ -401,7 +587,6 @@ GLOBAL_LIST_EMPTY(asset_datums) if (machine) item = machine var/icon_file = initial(item.icon) - var/all_states = icon_states(icon_file) var/icon/I = icon(icon_file, initial(item.icon_state), SOUTH) // computers (and snowflakes) get their screen and keyboard sprites @@ -409,10 +594,11 @@ GLOBAL_LIST_EMPTY(asset_datums) var/obj/machinery/computer/C = item var/screen = initial(C.icon_screen) var/keyboard = initial(C.icon_keyboard) + var/all_states = icon_states(icon_file) if (screen && (screen in all_states)) I.Blend(icon(icon_file, screen, SOUTH), ICON_OVERLAY) if (keyboard && (keyboard in all_states)) I.Blend(icon(icon_file, keyboard, SOUTH), ICON_OVERLAY) - assets["design_[initial(D.id)].png"] = I + Insert(initial(D.id), I) return ..() diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 49d6c4b04a..dfecc6f633 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -92,7 +92,7 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( if (citadel_client_procs(href_list)) return // CITADEL End - + switch(href_list["_src_"]) if("holder") hsrc = holder @@ -115,16 +115,16 @@ GLOBAL_LIST_INIT(blacklisted_builds, list( switch(href_list["action"]) if("openLink") src << link(href_list["link"]) - - var/datum/real_src = hsrc - if(QDELETED(real_src)) - return + if (hsrc) + var/datum/real_src = hsrc + if(QDELETED(real_src)) + return ..() //redirect to hsrc.Topic() /client/proc/is_content_unlocked() if(!prefs.unlock_content) - to_chat(src, "Become a BYOND member to access member-perks and features, as well as support the engine that makes this game possible. Only 10 bucks for 3 months! Click Here to find out more.") + to_chat(src, "Become a BYOND member to access member-perks and features, as well as support the engine that makes this game possible. Only 10 bucks for 3 months! Click Here to find out more.") return 0 return 1 @@ -165,6 +165,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) return var_name != NAMEOF(src, holder) && ..() /client/New(TopicData) + world.SetConfig("APP/admin", ckey, "role=admin") //CITADEL EDIT - Allows admins to reboot in OOM situations var/tdata = TopicData //save this for later use chatOutput = new /datum/chatOutput(src) TopicData = null //Prevent calls to client.Topic from connect @@ -179,10 +180,15 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) var/connecting_admin = FALSE //because de-admined admins connecting should be treated like admins. //Admin Authorisation holder = GLOB.admin_datums[ckey] + var/debug_tools_allowed = FALSE //CITADEL EDIT if(holder) GLOB.admins |= src holder.owner = src connecting_admin = TRUE + //CITADEL EDIT + if(check_rights_for(src, R_DEBUG)) + debug_tools_allowed = TRUE + //END CITADEL EDIT else if(GLOB.deadmins[ckey]) verbs += /client/proc/readmin connecting_admin = TRUE @@ -197,6 +203,12 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) to_chat(world, "Autoadmin rank not found") else new /datum/admins(autorank, ckey) + //CITADEL EDIT + if(check_rights_for(src, R_DEBUG)) //check if autoadmin gave us it + debug_tools_allowed = TRUE + if(!debug_tools_allowed) + world.SetConfig("APP/admin", ckey, null) + //END CITADEL EDIT if(CONFIG_GET(flag/enable_localhost_rank) && !connecting_admin) var/localhost_addresses = list("127.0.0.1", "::1") if(isnull(address) || (address in localhost_addresses)) @@ -211,6 +223,9 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) prefs.last_id = computer_id //these are gonna be used for banning fps = prefs.clientfps + if(fexists(roundend_report_file())) + verbs += /client/proc/show_previous_roundend_report + log_access("Login: [key_name(src)] from [address ? address : "localhost"]-[computer_id] || BYOND v[byond_version]") var/alert_mob_dupe_login = FALSE if(CONFIG_GET(flag/log_access)) @@ -255,7 +270,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) log_access("Failed login: [key] - blacklisted byond version") to_chat(src, "Your version of byond is blacklisted.") to_chat(src, "Byond build [byond_build] ([byond_version].[byond_build]) has been blacklisted for the following reason: [GLOB.blacklisted_builds[num2text(byond_build)]].") - to_chat(src, "Please download a new version of byond. if [byond_build] is the latest, you can go to http://www.byond.com/download/build/ to download other versions.") + to_chat(src, "Please download a new version of byond. If [byond_build] is the latest, you can go to BYOND's website to download other versions.") if(connecting_admin) to_chat(src, "As an admin, you are being allowed to continue using this version, but please consider changing byond versions") else @@ -278,11 +293,11 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) var/cev = CONFIG_GET(number/client_error_version) var/cwv = CONFIG_GET(number/client_warn_version) if (byond_version < cev) //Out of date client. - to_chat(src, "Your version of byond is too old:") + to_chat(src, "Your version of BYOND is too old:") to_chat(src, CONFIG_GET(string/client_error_message)) to_chat(src, "Your version: [byond_version]") to_chat(src, "Required version: [cev] or later") - to_chat(src, "Visit http://www.byond.com/download/ to get the latest version of byond.") + to_chat(src, "Visit BYOND's website to get the latest version of BYOND.") if (connecting_admin) to_chat(src, "Because you are an admin, you are being allowed to walk past this limitation, But it is still STRONGLY suggested you upgrade") else @@ -294,14 +309,14 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) msg += CONFIG_GET(string/client_warn_message) + "

    " msg += "Your version: [byond_version]
    " msg += "Required version to remove this message: [cwv] or later
    " - msg += "Visit http://www.byond.com/download/ to get the latest version of byond.
    " + msg += "Visit BYOND's website to get the latest version of BYOND.
    " src << browse(msg, "window=warning_popup") else to_chat(src, "Your version of byond may be getting out of date:") to_chat(src, CONFIG_GET(string/client_warn_message)) to_chat(src, "Your version: [byond_version]") to_chat(src, "Required version to remove this message: [cwv] or later") - to_chat(src, "Visit http://www.byond.com/download/ to get the latest version of byond.") + to_chat(src, "Visit BYOND's website to get the latest version of BYOND.") if (connection == "web" && !connecting_admin) if (!CONFIG_GET(flag/allow_webclient)) @@ -381,7 +396,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) winset(src, "[topmenu.type]", "parent=menu;name=[url_encode(topmenuname)]") var/list/entries = topmenu.Generate_list(src) for (var/child in entries) - winset(src, "[url_encode(child)]", "[entries[child]]") + winset(src, "[child]", "[entries[child]]") if (!ispath(child, /datum/verbs/menu)) var/atom/verb/verbpath = child if (copytext(verbpath.name,1,2) != "@") @@ -391,9 +406,9 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) var/datum/verbs/menu/menuitem = GLOB.menulist[thing] if (menuitem) menuitem.Load_checked(src) - + hook_vr("client_new",list(src)) // CIT CHANGE - hook for client/New() changes - + Master.UpdateTickRate() ////////////// @@ -472,7 +487,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) if (CONFIG_GET(flag/panic_bunker) && !holder && !GLOB.deadmins[ckey]) log_access("Failed Login: [key] - New account attempting to connect during panic bunker") message_admins("Failed Login: [key] - New account attempting to connect during panic bunker") - to_chat(src, "Sorry but the server is currently not accepting connections from never before seen players.") + to_chat(src, "You must first join the Discord to verify your account before joining this server. Please ping an admin once you've joined and read the rules. https://discord.gg/E6SQuhz") //CIT CHANGE - makes the panic bunker disconnect message point to the discord var/list/connectiontopic_a = params2list(connectiontopic) var/list/panic_addr = CONFIG_GET(string/panic_server_address) if(panic_addr && !connectiontopic_a["redirect"]) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 7558380a36..7eb1c25455 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -83,12 +83,12 @@ GLOBAL_LIST_EMPTY(preferences_datums) //Mob preview var/icon/preview_icon = null - //Trait list - var/list/positive_traits = list() - var/list/negative_traits = list() - var/list/neutral_traits = list() - var/list/all_traits = list() - var/list/character_traits = list() + //Quirk list + var/list/positive_quirks = list() + var/list/negative_quirks = list() + var/list/neutral_quirks = list() + var/list/all_quirks = list() + var/list/character_quirks = list() //Jobs, uses bitflags var/job_civilian_high = 0 @@ -120,6 +120,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/parallax + var/ambientocclusion = TRUE + var/uplink_spawn_loc = UPLINK_PDA var/list/exp = list() @@ -193,9 +195,9 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "

    Occupation Choices

    " dat += "Set Occupation Preferences
    " if(CONFIG_GET(flag/roundstart_traits)) - dat += "

    Trait Setup

    " - dat += "Configure Traits
    " - dat += "
    Current traits: [all_traits.len ? all_traits.Join(", ") : "None"]
    " + dat += "

    Quirk Setup

    " + dat += "Configure Quirks
    " + dat += "
    Current Quirks: [all_quirks.len ? all_quirks.Join(", ") : "None"]
    " dat += "

    Identity

    " dat += "
    " if(jobban_isbanned(user, "appearance")) @@ -490,6 +492,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "High" dat += "
    " + dat += "Ambient Occlusion: [ambientocclusion ? "Enabled" : "Disabled"]
    " + dat += "
    " dat += "

    Special Role Settings

    " @@ -855,72 +859,72 @@ GLOBAL_LIST_EMPTY(preferences_datums) return job_engsec_low return 0 -/datum/preferences/proc/SetTraits(mob/user) - if(!SStraits) - to_chat(user, "The trait subsystem is still initializing! Try again in a minute.") +/datum/preferences/proc/SetQuirks(mob/user) + if(!SSquirks) + to_chat(user, "The quirk subsystem is still initializing! Try again in a minute.") return var/list/dat = list() - if(!SStraits.traits.len) - dat += "The trait subsystem hasn't finished initializing, please hold..." + if(!SSquirks.quirks.len) + dat += "The quirk subsystem hasn't finished initializing, please hold..." dat += "
    Done

    " else - dat += "
    Choose trait setup

    " - dat += "
    Left-click to add or remove traits. You need one negative trait for every positive trait.
    \ - Traits are applied at roundstart and cannot normally be removed.
    " + dat += "
    Choose quirk setup

    " + dat += "
    Left-click to add or remove quirks. You need negative quirks to have positive ones.
    \ + Quirks are applied at roundstart and cannot normally be removed.
    " dat += "
    Done
    " dat += "
    " - dat += "
    Current traits: [all_traits.len ? all_traits.Join(", ") : "None"]
    " - dat += "
    [all_traits.len] / [MAX_TRAITS] max traits
    \ - Trait balance remaining: [GetTraitBalance()]

    " - for(var/V in SStraits.traits) - var/datum/trait/T = SStraits.traits[V] - var/trait_name = initial(T.name) - var/has_trait - var/trait_cost = initial(T.value) * -1 + dat += "
    Current quirks: [all_quirks.len ? all_quirks.Join(", ") : "None"]
    " + dat += "
    [positive_quirks.len] / [MAX_QUIRKS] max positive quirks
    \ + Quirk balance remaining: [GetQuirkBalance()]

    " + for(var/V in SSquirks.quirks) + var/datum/quirk/T = SSquirks.quirks[V] + var/quirk_name = initial(T.name) + var/has_quirk + var/quirk_cost = initial(T.value) * -1 var/lock_reason = "This trait is unavailable." - var/trait_conflict = FALSE - for(var/_V in all_traits) - if(_V == trait_name) - has_trait = TRUE - if(initial(T.mood_trait) && CONFIG_GET(flag/disable_human_mood)) + var/quirk_conflict = FALSE + for(var/_V in all_quirks) + if(_V == quirk_name) + has_quirk = TRUE + if(initial(T.mood_quirk) && CONFIG_GET(flag/disable_human_mood)) lock_reason = "Mood is disabled." - trait_conflict = TRUE - if(has_trait) - if(trait_conflict) - all_traits -= trait_name - has_trait = FALSE + quirk_conflict = TRUE + if(has_quirk) + if(quirk_conflict) + all_quirks -= quirk_name + has_quirk = FALSE else - trait_cost *= -1 //invert it back, since we'd be regaining this amount - if(trait_cost > 0) - trait_cost = "+[trait_cost]" + quirk_cost *= -1 //invert it back, since we'd be regaining this amount + if(quirk_cost > 0) + quirk_cost = "+[quirk_cost]" var/font_color = "#AAAAFF" if(initial(T.value) != 0) font_color = initial(T.value) > 0 ? "#AAFFAA" : "#FFAAAA" - if(trait_conflict) - dat += "[trait_name] - [initial(T.desc)] \ + if(quirk_conflict) + dat += "[quirk_name] - [initial(T.desc)] \ LOCKED: [lock_reason]
    " else - if(has_trait) - dat += "[trait_name] - [initial(T.desc)] \ - [has_trait ? "Lose" : "Take"] ([trait_cost] pts.)
    " + if(has_quirk) + dat += "[quirk_name] - [initial(T.desc)] \ + [has_quirk ? "Lose" : "Take"] ([quirk_cost] pts.)
    " else - dat += "[trait_name] - [initial(T.desc)] \ - [has_trait ? "Lose" : "Take"] ([trait_cost] pts.)
    " + dat += "[quirk_name] - [initial(T.desc)] \ + [has_quirk ? "Lose" : "Take"] ([quirk_cost] pts.)
    " dat += "
    Reset Traits
    " user << browse(null, "window=preferences") - var/datum/browser/popup = new(user, "mob_occupation", "
    Trait Preferences
    ", 900, 600) //no reason not to reuse the occupation window, as it's cleaner that way + var/datum/browser/popup = new(user, "mob_occupation", "
    Quirk Preferences
    ", 900, 600) //no reason not to reuse the occupation window, as it's cleaner that way popup.set_window_options("can_close=0") popup.set_content(dat.Join()) popup.open(0) return -/datum/preferences/proc/GetTraitBalance() +/datum/preferences/proc/GetQuirkBalance() var/bal = 0 - for(var/V in all_traits) - var/datum/trait/T = SStraits.traits[V] + for(var/V in all_quirks) + var/datum/quirk/T = SSquirks.quirks[V] bal -= initial(T.value) return bal @@ -977,55 +981,49 @@ GLOBAL_LIST_EMPTY(preferences_datums) user << browse(null, "window=mob_occupation") ShowChoices(user) if("update") - var/trait = href_list["trait"] - if(!SStraits.traits[trait]) + var/quirk = href_list["trait"] + if(!SSquirks.quirks[quirk]) return - var/value = SStraits.trait_points[trait] + var/value = SSquirks.quirk_points[quirk] if(value == 0) - if(trait in neutral_traits) - neutral_traits -= trait - all_traits -= trait + if(quirk in neutral_quirks) + neutral_quirks -= quirk + all_quirks -= quirk else - if(all_traits.len >= MAX_TRAITS) - to_chat(user, "You can't have more than [MAX_TRAITS] traits!") - return - neutral_traits += trait - all_traits += trait + neutral_quirks += quirk + all_quirks += quirk else - var/balance = GetTraitBalance() - if(trait in positive_traits) - positive_traits -= trait - all_traits -= trait - else if(trait in negative_traits) + var/balance = GetQuirkBalance() + if(quirk in positive_quirks) + positive_quirks -= quirk + all_quirks -= quirk + else if(quirk in negative_quirks) if(balance + value < 0) to_chat(user, "Refunding this would cause you to go below your balance!") return - negative_traits -= trait - all_traits -= trait + negative_quirks -= quirk + all_quirks -= quirk else if(value > 0) - if(all_traits.len >= MAX_TRAITS) - to_chat(user, "You can't have more than [MAX_TRAITS] traits!") + if(positive_quirks.len >= MAX_QUIRKS) + to_chat(user, "You can't have more than [MAX_QUIRKS] positive quirks!") return if(balance - value < 0) - to_chat(user, "You don't have enough balance to gain this trait!") + to_chat(user, "You don't have enough balance to gain this quirk!") return - positive_traits += trait - all_traits += trait + positive_quirks += quirk + all_quirks += quirk else - if(all_traits.len >= MAX_TRAITS) - to_chat(user, "You can't have more than [MAX_TRAITS] traits!") - return - negative_traits += trait - all_traits += trait - SetTraits(user) + negative_quirks += quirk + all_quirks += quirk + SetQuirks(user) if("reset") - all_traits = list() - positive_traits = list() - negative_traits = list() - neutral_traits = list() - SetTraits(user) + all_quirks = list() + positive_quirks = list() + negative_quirks = list() + neutral_quirks = list() + SetQuirks(user) else - SetTraits(user) + SetQuirks(user) return TRUE switch(href_list["task"]) @@ -1535,6 +1533,12 @@ GLOBAL_LIST_EMPTY(preferences_datums) cit_toggles ^= DIGESTION_NOISES //END CITADEL EDIT + if("ambientocclusion") + ambientocclusion = !ambientocclusion + if(parent && parent.screen && parent.screen.len) + var/obj/screen/plane_master/game_world/PM = locate(/obj/screen/plane_master/game_world) in parent.screen + PM.backdrop(parent.mob) + if("save") save_preferences() save_character() @@ -1642,4 +1646,4 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(icon_updates) character.update_body() character.update_hair() - character.update_body_parts() \ No newline at end of file + character.update_body_parts() diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index d2efc477c6..f17ddf8b7c 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -130,6 +130,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["uses_glasses_colour"]>> uses_glasses_colour S["clientfps"] >> clientfps S["parallax"] >> parallax + S["ambientocclusion"] >> ambientocclusion S["menuoptions"] >> menuoptions S["enable_tips"] >> enable_tips S["tip_delay"] >> tip_delay @@ -160,6 +161,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car toggles = sanitize_integer(toggles, 0, 65535, initial(toggles)) clientfps = sanitize_integer(clientfps, 0, 1000, 0) parallax = sanitize_integer(parallax, PARALLAX_INSANE, PARALLAX_DISABLE, null) + ambientocclusion = sanitize_integer(ambientocclusion, 0, 1, initial(ambientocclusion)) ghost_form = sanitize_inlist(ghost_form, GLOB.ghost_forms, initial(ghost_form)) ghost_orbit = sanitize_inlist(ghost_orbit, GLOB.ghost_orbits, initial(ghost_orbit)) ghost_accs = sanitize_inlist(ghost_accs, GLOB.ghost_accs_options, GHOST_ACCS_DEFAULT_OPTION) @@ -210,6 +212,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["uses_glasses_colour"], uses_glasses_colour) WRITE_FILE(S["clientfps"], clientfps) WRITE_FILE(S["parallax"], parallax) + WRITE_FILE(S["ambientocclusion"], ambientocclusion) WRITE_FILE(S["menuoptions"], menuoptions) WRITE_FILE(S["enable_tips"], enable_tips) WRITE_FILE(S["tip_delay"], tip_delay) @@ -310,11 +313,11 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["job_engsec_med"] >> job_engsec_med S["job_engsec_low"] >> job_engsec_low - //Traits - S["all_traits"] >> all_traits - S["positive_traits"] >> positive_traits - S["negative_traits"] >> negative_traits - S["neutral_traits"] >> neutral_traits + //Quirks + S["all_quirks"] >> all_quirks + S["positive_quirks"] >> positive_quirks + S["negative_quirks"] >> negative_quirks + S["neutral_quirks"] >> neutral_quirks //Citadel code S["feature_genitals_use_skintone"] >> features["genitals_use_skintone"] @@ -421,10 +424,10 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car job_engsec_med = sanitize_integer(job_engsec_med, 0, 65535, initial(job_engsec_med)) job_engsec_low = sanitize_integer(job_engsec_low, 0, 65535, initial(job_engsec_low)) - all_traits = SANITIZE_LIST(all_traits) - positive_traits = SANITIZE_LIST(positive_traits) - negative_traits = SANITIZE_LIST(negative_traits) - neutral_traits = SANITIZE_LIST(neutral_traits) + all_quirks = SANITIZE_LIST(all_quirks) + positive_quirks = SANITIZE_LIST(positive_quirks) + negative_quirks = SANITIZE_LIST(negative_quirks) + neutral_quirks = SANITIZE_LIST(neutral_quirks) cit_character_pref_load(S) @@ -491,11 +494,11 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["job_engsec_med"] , job_engsec_med) WRITE_FILE(S["job_engsec_low"] , job_engsec_low) - //Traits - WRITE_FILE(S["all_traits"] , all_traits) - WRITE_FILE(S["positive_traits"] , positive_traits) - WRITE_FILE(S["negative_traits"] , negative_traits) - WRITE_FILE(S["neutral_traits"] , neutral_traits) + //Quirks + WRITE_FILE(S["all_quirks"] , all_quirks) + WRITE_FILE(S["positive_quirks"] , positive_quirks) + WRITE_FILE(S["negative_quirks"] , negative_quirks) + WRITE_FILE(S["neutral_quirks"] , neutral_quirks) cit_character_pref_save(S) diff --git a/code/modules/client/verbs/ooc.dm b/code/modules/client/verbs/ooc.dm index e9c4c29a5e..ccf99b5b7e 100644 --- a/code/modules/client/verbs/ooc.dm +++ b/code/modules/client/verbs/ooc.dm @@ -294,3 +294,10 @@ GLOBAL_VAR_INIT(normal_ooc_colour, OOC_COLOR) to_chat(src, "You can't ignore yourself.") return ignore_key(selection) + +/client/proc/show_previous_roundend_report() + set name = "Your Last Round" + set category = "OOC" + set desc = "View the last round end report you've seen" + + SSticker.show_roundend_report(src, TRUE) diff --git a/code/modules/client/verbs/suicide.dm b/code/modules/client/verbs/suicide.dm index 2b5602833a..c968cc9c76 100644 --- a/code/modules/client/verbs/suicide.dm +++ b/code/modules/client/verbs/suicide.dm @@ -12,8 +12,6 @@ return if(confirm == "Yes") suiciding = TRUE - log_game("[key_name(src)] (job: [job ? "[job]" : "None"]) committed suicide at [get_area(src)].") - message_admins("[key_name(src)] (job: [job ? "[job]" : "None"]) committed suicide at [get_area(src)].") var/obj/item/held_item = get_active_held_item() if(held_item) var/damagetype = held_item.suicide_act(src) @@ -23,6 +21,9 @@ suiciding = FALSE SendSignal(COMSIG_ADD_MOOD_EVENT, "shameful_suicide", /datum/mood_event/shameful_suicide) return + + suicide_log() + var/damage_mod = 0 for(var/T in list(BRUTELOSS, FIRELOSS, TOXLOSS, OXYLOSS)) damage_mod += (T & damagetype) ? 1 : 0 @@ -49,6 +50,7 @@ adjustOxyLoss(max(200 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0)) death(FALSE) + return var/suicide_message @@ -73,6 +75,8 @@ visible_message("[suicide_message]", "[suicide_message]") + suicide_log() + adjustOxyLoss(max(200 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0)) death(0) @@ -87,6 +91,9 @@ suiciding = 1 visible_message("[src]'s brain is growing dull and lifeless. [p_they(TRUE)] look[p_s()] like [p_theyve()] lost the will to live.", \ "[src]'s brain is growing dull and lifeless. [p_they(TRUE)] look[p_s()] like [p_theyve()] lost the will to live.") + + suicide_log() + death(0) /mob/living/carbon/monkey/verb/suicide() @@ -100,6 +107,9 @@ suiciding = 1 visible_message("[src] is attempting to bite [p_their()] tongue. It looks like [p_theyre()] trying to commit suicide.", \ "[src] is attempting to bite [p_their()] tongue. It looks like [p_theyre()] trying to commit suicide.") + + suicide_log() + adjustOxyLoss(max(200- getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0)) death(0) @@ -114,6 +124,9 @@ suiciding = 1 visible_message("[src] is powering down. It looks like [p_theyre()] trying to commit suicide.", \ "[src] is powering down. It looks like [p_theyre()] trying to commit suicide.") + + suicide_log() + //put em at -175 adjustOxyLoss(max(maxHealth * 2 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0)) death(0) @@ -129,6 +142,9 @@ suiciding = 1 visible_message("[src] is powering down. It looks like [p_theyre()] trying to commit suicide.", \ "[src] is powering down. It looks like [p_theyre()] trying to commit suicide.") + + suicide_log() + //put em at -175 adjustOxyLoss(max(maxHealth * 2 - getToxLoss() - getFireLoss() - getBruteLoss() - getOxyLoss(), 0)) death(0) @@ -140,6 +156,9 @@ var/turf/T = get_turf(src.loc) T.visible_message("[src] flashes a message across its screen, \"Wiping core files. Please acquire a new personality to continue using pAI device functions.\"", null, \ "[src] bleeps electronically.") + + suicide_log() + death(0) else to_chat(src, "Aborting suicide attempt.") @@ -156,6 +175,9 @@ visible_message("[src] is thrashing wildly! It looks like [p_theyre()] trying to commit suicide.", \ "[src] is thrashing wildly! It looks like [p_theyre()] trying to commit suicide.", \ "You hear thrashing.") + + suicide_log() + //put em at -175 adjustOxyLoss(max(200 - getFireLoss() - getBruteLoss() - getOxyLoss(), 0)) death(0) @@ -171,8 +193,22 @@ suiciding = 1 visible_message("[src] begins to fall down. It looks like [p_theyve()] lost the will to live.", \ "[src] begins to fall down. It looks like [p_theyve()] lost the will to live.") + + suicide_log() + death(0) +/mob/living/proc/suicide_log() + var/turf/T = get_turf(src) + + log_game("[key_name(src)] committed suicide at [get_area(src)][COORD(T)] as [src.type].") + message_admins("[key_name(src)] committed suicide at [get_area(src)] as [src.type].") + +/mob/living/carbon/human/suicide_log() + var/turf/T = get_turf(src) + + log_game("[key_name(src)] (job: [src.job ? "[src.job]" : "None"]) committed suicide at [get_area(src)][COORD(T)].") + message_admins("[key_name(src)] (job: [job ? "[job]" : "None"]) committed suicide at [get_area(src)].") /mob/living/proc/canSuicide() if(stat == CONSCIOUS) diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index 03bb1eeb13..4be9df8298 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -63,8 +63,8 @@ // it's NODROP_1 D.dropItemToGround(target, TRUE) qdel(old_headgear) - // where is `slot_head` defined? WHO KNOWS - D.equip_to_slot(new_headgear, slot_head) + // where is `SLOT_HEAD` defined? WHO KNOWS + D.equip_to_slot(new_headgear, SLOT_HEAD) return 1 @@ -331,8 +331,7 @@ item_state = "gas_alt" resistance_flags = NONE armor = list("melee" = 5, "bullet" = 5, "laser" = 5, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) - - flags_1 = BLOCK_GAS_SMOKE_EFFECT_1 | MASKINTERNALS_1 + clothing_flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEFACIALHAIR gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 @@ -408,7 +407,7 @@ icon_state = "black" item_color = "black" desc = "A pair of black shoes." - flags_1 = NOSLIP_1 + clothing_flags = NOSLIP /obj/item/clothing/shoes/chameleon/noslip/broken/Initialize() . = ..() @@ -420,7 +419,7 @@ ammo_type = list(/obj/item/ammo_casing/energy/chameleon) clumsy_check = 0 item_flags = NONE - pin = /obj/item/device/firing_pin + pin = /obj/item/firing_pin cell_type = /obj/item/stock_parts/cell/bluespace var/datum/action/item_action/chameleon/change/chameleon_action @@ -601,40 +600,39 @@ . = ..() chameleon_action.emp_randomise(INFINITY) -/obj/item/device/radio/headset/chameleon +/obj/item/radio/headset/chameleon name = "radio headset" var/datum/action/item_action/chameleon/change/chameleon_action -/obj/item/device/radio/headset/chameleon/Initialize() +/obj/item/radio/headset/chameleon/Initialize() . = ..() chameleon_action = new(src) - chameleon_action.chameleon_type = /obj/item/device/radio/headset + chameleon_action.chameleon_type = /obj/item/radio/headset chameleon_action.chameleon_name = "Headset" chameleon_action.initialize_disguises() -/obj/item/device/radio/headset/chameleon/emp_act(severity) +/obj/item/radio/headset/chameleon/emp_act(severity) chameleon_action.emp_randomise() -/obj/item/device/radio/headset/chameleon/broken/Initialize() +/obj/item/radio/headset/chameleon/broken/Initialize() . = ..() chameleon_action.emp_randomise(INFINITY) -/obj/item/device/pda/chameleon +/obj/item/pda/chameleon name = "PDA" var/datum/action/item_action/chameleon/change/chameleon_action -/obj/item/device/pda/chameleon/Initialize() +/obj/item/pda/chameleon/Initialize() . = ..() chameleon_action = new(src) - chameleon_action.chameleon_type = /obj/item/device/pda + chameleon_action.chameleon_type = /obj/item/pda chameleon_action.chameleon_name = "PDA" - chameleon_action.chameleon_blacklist = typecacheof(list(/obj/item/device/pda/heads, /obj/item/device/pda/ai, /obj/item/device/pda/ai/pai), only_root_path = TRUE) + chameleon_action.chameleon_blacklist = typecacheof(list(/obj/item/pda/heads, /obj/item/pda/ai, /obj/item/pda/ai/pai), only_root_path = TRUE) chameleon_action.initialize_disguises() -/obj/item/device/pda/chameleon/emp_act(severity) +/obj/item/pda/chameleon/emp_act(severity) chameleon_action.emp_randomise() -/obj/item/device/pda/chameleon/broken/Initialize() +/obj/item/pda/chameleon/broken/Initialize() . = ..() chameleon_action.emp_randomise(INFINITY) - diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 9c7a86cfc2..e303e3c1c2 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -20,13 +20,15 @@ var/active_sound = null var/toggle_cooldown = null var/cooldown = 0 - var/obj/item/device/flashlight/F = null + var/obj/item/flashlight/F = null var/can_flashlight = 0 var/scan_reagents = 0 //Can the wearer see reagents while it's equipped? + var/clothing_flags = NONE + //Var modification - PLEASE be careful with this I know who you are and where you live - var/list/user_vars_to_edit = list() //VARNAME = VARVALUE eg: "name" = "butts" - var/list/user_vars_remembered = list() //Auto built by the above + dropped() + equipped() + var/list/user_vars_to_edit //VARNAME = VARVALUE eg: "name" = "butts" + var/list/user_vars_remembered //Auto built by the above + dropped() + equipped() var/pocket_storage_component_path @@ -72,21 +74,23 @@ ..() if(!istype(user)) return - if(user_vars_remembered && user_vars_remembered.len) + if(LAZYLEN(user_vars_remembered)) for(var/variable in user_vars_remembered) if(variable in user.vars) if(user.vars[variable] == user_vars_to_edit[variable]) //Is it still what we set it to? (if not we best not change it) user.vars[variable] = user_vars_remembered[variable] - user_vars_remembered = list() + user_vars_remembered = initial(user_vars_remembered) // Effectively this sets it to null. /obj/item/clothing/equipped(mob/user, slot) ..() - + if (!istype(user)) + return if(slot_flags & slotdefine2slotbit(slot)) //Was equipped to a valid slot for this item? - for(var/variable in user_vars_to_edit) - if(variable in user.vars) - user_vars_remembered[variable] = user.vars[variable] - user.vars[variable] = user_vars_to_edit[variable] + if (LAZYLEN(user_vars_to_edit)) + for(var/variable in user_vars_to_edit) + if(variable in user.vars) + LAZYSET(user_vars_remembered, variable, user.vars[variable]) + user.vars[variable] = user_vars_to_edit[variable] /obj/item/clothing/examine(mob/user) ..() @@ -260,7 +264,7 @@ BLIND // can't see anything /obj/item/clothing/proc/visor_toggling() //handles all the actual toggling of flags up = !up - flags_1 ^= visor_flags + clothing_flags ^= visor_flags flags_inv ^= visor_flags_inv flags_cover ^= initial(flags_cover) icon_state = "[initial(icon_state)][up ? "up" : ""]" @@ -285,4 +289,4 @@ BLIND // can't see anything Shreds.desc = "The sad remains of what used to be [name]." deconstruct(FALSE) else - ..() \ No newline at end of file + ..() diff --git a/code/modules/clothing/ears/_ears.dm b/code/modules/clothing/ears/_ears.dm index 10da082503..bb2a489030 100644 --- a/code/modules/clothing/ears/_ears.dm +++ b/code/modules/clothing/ears/_ears.dm @@ -1,3 +1,4 @@ + //Ears: currently only used for headsets and earmuffs /obj/item/clothing/ears name = "ears" @@ -14,11 +15,11 @@ strip_delay = 15 equip_delay_other = 25 resistance_flags = FLAMMABLE - flags_2 = BANG_PROTECT_2 /obj/item/clothing/ears/earmuffs/ComponentInitialize() . = ..() AddComponent(/datum/component/earhealing) + AddComponent(/datum/component/wearertargeting/earprotection, list(SLOT_EARS)) /obj/item/clothing/ears/headphones name = "headphones" diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index eaeedee36c..44bba64d2f 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/clothing/glasses.dmi' w_class = WEIGHT_CLASS_SMALL flags_cover = GLASSESCOVERSEYES - slot_flags = SLOT_EYES + slot_flags = ITEM_SLOT_EYES strip_delay = 20 equip_delay_other = 25 resistance_flags = NONE @@ -100,7 +100,7 @@ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100) /obj/item/clothing/glasses/science/item_action_slot_check(slot) - if(slot == slot_glasses) + if(slot == SLOT_GLASSES) return 1 /obj/item/clothing/glasses/night @@ -263,7 +263,7 @@ /obj/item/clothing/glasses/sunglasses/blindfold/equipped(mob/living/carbon/human/user, slot) . = ..() - if(slot == slot_glasses) + if(slot == SLOT_GLASSES) user.become_blind("blindfold_[REF(src)]") /obj/item/clothing/glasses/sunglasses/blindfold/dropped(mob/living/carbon/human/user) @@ -365,6 +365,7 @@ scan_reagents = 1 flags_1 = NODROP_1 lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE + resistance_flags = LAVA_PROOF | FIRE_PROOF /obj/item/clothing/glasses/godeye/attackby(obj/item/W as obj, mob/user as mob, params) if(istype(W, src) && W != src && W.loc == user) diff --git a/code/modules/clothing/glasses/engine_goggles.dm b/code/modules/clothing/glasses/engine_goggles.dm index 439197f285..336881106e 100644 --- a/code/modules/clothing/glasses/engine_goggles.dm +++ b/code/modules/clothing/glasses/engine_goggles.dm @@ -93,7 +93,7 @@ MA.alpha = 180 MA.maptext = "[strength]k" MA.color = "#64C864" - MA.layer = AREA_LAYER + MA.layer = FLY_LAYER pic.appearance = MA flick_overlay(pic, list(user.client), 8) @@ -123,7 +123,7 @@ item_state = icon_state if(isliving(loc)) var/mob/living/user = loc - if(user.get_item_by_slot(slot_glasses) == src) + if(user.get_item_by_slot(SLOT_GLASSES) == src) user.update_inv_glasses() else user.update_inv_hands() diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index 626bf4f542..6364826942 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -6,7 +6,7 @@ /obj/item/clothing/glasses/hud/equipped(mob/living/carbon/human/user, slot) ..() - if(hud_type && slot == slot_glasses) + if(hud_type && slot == SLOT_GLASSES) var/datum/atom_hud/H = GLOB.huds[hud_type] H.add_hud_to(user) diff --git a/code/modules/clothing/gloves/_gloves.dm b/code/modules/clothing/gloves/_gloves.dm index ca534f5a58..0e9be23aed 100644 --- a/code/modules/clothing/gloves/_gloves.dm +++ b/code/modules/clothing/gloves/_gloves.dm @@ -5,7 +5,7 @@ icon = 'icons/obj/clothing/gloves.dmi' siemens_coefficient = 0.5 body_parts_covered = HANDS - slot_flags = SLOT_GLOVES + slot_flags = ITEM_SLOT_GLOVES attack_verb = list("challenged") var/transfer_prints = FALSE strip_delay = 20 diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm index 09f5993cb4..1b20501f21 100644 --- a/code/modules/clothing/gloves/color.dm +++ b/code/modules/clothing/gloves/color.dm @@ -209,7 +209,7 @@ var/obj/item/clothing/gloves/color/selected = pick(gloves) if(ishuman(loc)) var/mob/living/carbon/human/H = loc - H.equip_to_slot_or_del(new selected(H), slot_gloves) + H.equip_to_slot_or_del(new selected(H), SLOT_GLOVES) else new selected(loc) return INITIALIZE_HINT_QDEL diff --git a/code/modules/clothing/head/_head.dm b/code/modules/clothing/head/_head.dm index d3dfa189d8..6a3082b558 100644 --- a/code/modules/clothing/head/_head.dm +++ b/code/modules/clothing/head/_head.dm @@ -4,7 +4,7 @@ icon_state = "top_hat" item_state = "that" body_parts_covered = HEAD - slot_flags = SLOT_HEAD + slot_flags = ITEM_SLOT_HEAD var/blockTracking = 0 //For AI tracking var/can_toggle = null dynamic_hair_suffix = "+generic" diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index db3dda1dd2..ae4d80a0e4 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -46,7 +46,7 @@ item_color = "red" dog_fashion = null name = "firefighter helmet" - flags_1 = STOPSPRESSUREDMAGE_1 + clothing_flags = STOPSPRESSUREDAMAGE heat_protection = HEAD max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT cold_protection = HEAD @@ -56,7 +56,7 @@ icon_state = "hardhat0_white" item_state = "hardhat0_white" item_color = "white" - flags_1 = STOPSPRESSUREDMAGE_1 + clothing_flags = STOPSPRESSUREDAMAGE heat_protection = HEAD max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT cold_protection = HEAD @@ -76,7 +76,7 @@ dog_fashion = null name = "atmospheric technician's firefighting helmet" desc = "A firefighter's helmet, able to keep the user cool in any situation." - flags_1 = STOPSPRESSUREDMAGE_1 | THICKMATERIAL_1 + clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | BLOCK_GAS_SMOKE_EFFECT flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR heat_protection = HEAD max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index b231ac9df6..4aea3d8056 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -22,7 +22,7 @@ /obj/item/clothing/head/helmet/sec/attackby(obj/item/I, mob/user, params) if(issignaler(I)) - var/obj/item/device/assembly/signaler/S = I + var/obj/item/assembly/signaler/S = I if(F) //Has a flashlight. Player must remove it, else it will be lost forever. to_chat(user, "The mounted flashlight is in the way, remove it first!") return @@ -122,7 +122,7 @@ min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT heat_protection = HEAD max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT - flags_1 = STOPSPRESSUREDMAGE_1 + clothing_flags = STOPSPRESSUREDAMAGE strip_delay = 80 dog_fashion = null @@ -158,12 +158,20 @@ strip_delay = 100 dog_fashion = null +/obj/item/clothing/head/helmet/roman/fake + desc = "An ancient helmet made of plastic and leather." + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + /obj/item/clothing/head/helmet/roman/legionaire name = "roman legionaire helmet" desc = "An ancient helmet made of bronze and leather. Has a red crest on top of it." icon_state = "roman_c" item_state = "roman_c" +/obj/item/clothing/head/helmet/roman/legionaire/fake + desc = "An ancient helmet made of plastic and leather. Has a red crest on top of it." + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + /obj/item/clothing/head/helmet/gladiator name = "gladiator helmet" desc = "Ave, Imperator, morituri te salutant." @@ -260,8 +268,8 @@ ..() /obj/item/clothing/head/helmet/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/device/flashlight/seclite)) - var/obj/item/device/flashlight/seclite/S = I + if(istype(I, /obj/item/flashlight/seclite)) + var/obj/item/flashlight/seclite/S = I if(can_flashlight) if(!F) if(!user.transferItemToLoc(S, src)) @@ -280,7 +288,7 @@ if(istype(I, /obj/item/screwdriver)) if(F) - for(var/obj/item/device/flashlight/seclite/S in src) + for(var/obj/item/flashlight/seclite/S in src) to_chat(user, "You unscrew the seclite from [src].") F = null S.forceMove(user.drop_location()) diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 74d8a43347..2c03997a4a 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -321,4 +321,27 @@ name = "headress of Nemes" desc = "Lavish space tomb not included." icon_state = "nemes_headdress" - icon_state = "nemes_headdress" \ No newline at end of file + icon_state = "nemes_headdress" + +/obj/item/clothing/head/frenchberet + name = "french beret" + desc = "A quality beret, infused with the aroma of chain-smoking, wine-swilling Parisians. You feel less inclined to engage military conflict, for some reason." + icon_state = "beretblack" + +/obj/item/clothing/head/frenchberet/speechModification(M) + if(copytext(M, 1, 2) != "*") + M = " [M]" + var/list/french_words = strings("french_replacement.json", "french") + + for(var/key in french_words) + var/value = french_words[key] + if(islist(value)) + value = pick(value) + + M = replacetextEx(M, " [uppertext(key)]", " [uppertext(value)]") + M = replacetextEx(M, " [capitalize(key)]", " [capitalize(value)]") + M = replacetextEx(M, " [key]", " [value]") + + if(prob(3)) + M += pick(" Honh honh honh!"," Honh!"," Zut Alors!") + return trim(M) \ No newline at end of file diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index b58c9fc414..86763e060b 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -131,7 +131,7 @@ dog_fashion = /datum/dog_fashion/head/kitty /obj/item/clothing/head/kitty/equipped(mob/living/carbon/human/user, slot) - if(ishuman(user) && slot == slot_head) + if(ishuman(user) && slot == SLOT_HEAD) update_icon(user) user.update_inv_head() //Color might have been changed by update_icon. ..() @@ -169,7 +169,7 @@ /obj/item/clothing/head/cardborg/equipped(mob/living/user, slot) ..() - if(ishuman(user) && slot == slot_head) + if(ishuman(user) && slot == SLOT_HEAD) var/mob/living/carbon/human/H = user if(istype(H.wear_suit, /obj/item/clothing/suit/cardborg)) var/obj/item/clothing/suit/cardborg/CB = H.wear_suit @@ -240,7 +240,7 @@ /obj/item/clothing/head/foilhat/equipped(mob/living/carbon/human/user, slot) ..() - if(slot == slot_head) + if(slot == SLOT_HEAD) if(paranoia) QDEL_NULL(paranoia) paranoia = new() diff --git a/code/modules/clothing/head/vg_hats.dm b/code/modules/clothing/head/vg_hats.dm index 56844193c6..be57619a7a 100644 --- a/code/modules/clothing/head/vg_hats.dm +++ b/code/modules/clothing/head/vg_hats.dm @@ -10,7 +10,6 @@ min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT heat_protection = HEAD max_heat_protection_temperature = SPACE_HELM_MAX_TEMP_PROTECT - flags_1 = STOPSPRESSUREDMAGE_1 strip_delay = 80 dog_fashion = null icon_override = 'modular_citadel/icons/mob/citadel/head.dmi' diff --git a/code/modules/clothing/masks/_masks.dm b/code/modules/clothing/masks/_masks.dm index 562375e897..da3e114edd 100644 --- a/code/modules/clothing/masks/_masks.dm +++ b/code/modules/clothing/masks/_masks.dm @@ -2,7 +2,7 @@ name = "mask" icon = 'icons/obj/clothing/masks.dmi' body_parts_covered = HEAD - slot_flags = SLOT_MASK + slot_flags = ITEM_SLOT_MASK strip_delay = 40 equip_delay_other = 40 var/mask_adjusted = 0 @@ -33,7 +33,7 @@ src.icon_state = initial(icon_state) gas_transfer_coefficient = initial(gas_transfer_coefficient) permeability_coefficient = initial(permeability_coefficient) - flags_1 |= visor_flags + clothing_flags |= visor_flags flags_inv |= visor_flags_inv flags_cover |= visor_flags_cover to_chat(user, "You push \the [src] back into place.") @@ -43,11 +43,11 @@ to_chat(user, "You push \the [src] out of the way.") gas_transfer_coefficient = null permeability_coefficient = null - flags_1 &= ~visor_flags + clothing_flags &= ~visor_flags flags_inv &= ~visor_flags_inv flags_cover &= ~visor_flags_cover if(adjusted_flags) slot_flags = adjusted_flags if(user) user.wear_mask_update(src, toggle_off = mask_adjusted) - user.update_action_buttons_icon() //when mask is adjusted out, we update all buttons icon so the user's potential internal tank correctly shows as off. \ No newline at end of file + user.update_action_buttons_icon() //when mask is adjusted out, we update all buttons icon so the user's potential internal tank correctly shows as off. diff --git a/code/modules/clothing/masks/breath.dm b/code/modules/clothing/masks/breath.dm index f7c99a24d3..29aab0c1a2 100644 --- a/code/modules/clothing/masks/breath.dm +++ b/code/modules/clothing/masks/breath.dm @@ -4,8 +4,8 @@ icon_state = "breath" item_state = "m_mask" body_parts_covered = 0 - flags_1 = MASKINTERNALS_1 - visor_flags = MASKINTERNALS_1 + clothing_flags = MASKINTERNALS + visor_flags = MASKINTERNALS w_class = WEIGHT_CLASS_SMALL gas_transfer_coefficient = 0.1 permeability_coefficient = 0.5 diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index 694c290f4b..726670762e 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -2,7 +2,7 @@ name = "gas mask" desc = "A face-covering mask that can be connected to an air supply. While good for concealing your identity, it isn't good for blocking gas flow." //More accurate icon_state = "gas_alt" - flags_1 = BLOCK_GAS_SMOKE_EFFECT_1 | MASKINTERNALS_1 + clothing_flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS flags_inv = HIDEEARS|HIDEEYES|HIDEFACE|HIDEFACIALHAIR w_class = WEIGHT_CLASS_NORMAL item_state = "gas_alt" @@ -51,7 +51,7 @@ /obj/item/clothing/mask/gas/clown_hat name = "clown wig and mask" desc = "A true prankster's facial attire. A clown is incomplete without his wig and mask." - flags_1 = MASKINTERNALS_1 + clothing_flags = MASKINTERNALS icon_state = "clown" item_state = "clown_hat" flags_cover = MASKCOVERSEYES @@ -83,7 +83,7 @@ /obj/item/clothing/mask/gas/sexyclown name = "sexy-clown wig and mask" desc = "A feminine clown mask for the dabbling crossdressers or female entertainers." - flags_1 = MASKINTERNALS_1 + clothing_flags = MASKINTERNALS icon_state = "sexyclown" item_state = "sexyclown" flags_cover = MASKCOVERSEYES @@ -92,7 +92,7 @@ /obj/item/clothing/mask/gas/mime name = "mime mask" desc = "The traditional mime's mask. It has an eerie facial posture." - flags_1 = MASKINTERNALS_1 + clothing_flags = MASKINTERNALS icon_state = "mime" item_state = "mime" flags_cover = MASKCOVERSEYES @@ -124,7 +124,7 @@ /obj/item/clothing/mask/gas/monkeymask name = "monkey mask" desc = "A mask used when acting as a monkey." - flags_1 = MASKINTERNALS_1 + clothing_flags = MASKINTERNALS icon_state = "monkeymask" item_state = "monkeymask" flags_cover = MASKCOVERSEYES @@ -133,7 +133,7 @@ /obj/item/clothing/mask/gas/sexymime name = "sexy mime mask" desc = "A traditional female mime's mask." - flags_1 = MASKINTERNALS_1 + clothing_flags = MASKINTERNALS icon_state = "sexymime" item_state = "sexymime" flags_cover = MASKCOVERSEYES @@ -154,7 +154,7 @@ name = "owl mask" desc = "Twoooo!" icon_state = "owl" - flags_1 = MASKINTERNALS_1 + clothing_flags = MASKINTERNALS flags_cover = MASKCOVERSEYES resistance_flags = FLAMMABLE diff --git a/code/modules/clothing/masks/hailer.dm b/code/modules/clothing/masks/hailer.dm index 51caf8335e..0d78e11874 100644 --- a/code/modules/clothing/masks/hailer.dm +++ b/code/modules/clothing/masks/hailer.dm @@ -7,10 +7,10 @@ actions_types = list(/datum/action/item_action/halt, /datum/action/item_action/adjust) icon_state = "sechailer" item_state = "sechailer" - flags_1 = BLOCK_GAS_SMOKE_EFFECT_1 | MASKINTERNALS_1 + clothing_flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS flags_inv = HIDEFACIALHAIR|HIDEFACE w_class = WEIGHT_CLASS_SMALL - visor_flags = BLOCK_GAS_SMOKE_EFFECT_1 | MASKINTERNALS_1 + visor_flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS visor_flags_inv = HIDEFACE flags_cover = MASKCOVERSMOUTH visor_flags_cover = MASKCOVERSMOUTH diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 53bd5f32a4..ad77f1d350 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -47,7 +47,7 @@ /obj/item/clothing/mask/fakemoustache/italian/speechModification(M) if(copytext(M, 1, 2) != "*") M = " [M]" - var/list/italian_words = strings("word_replacement.json", "italian") + var/list/italian_words = strings("italian_replacement.json", "italian") for(var/key in italian_words) var/value = italian_words[key] @@ -222,8 +222,8 @@ obj/item/clothing/mask/frog/cursed flags_inv = HIDEFACE|HIDEFACIALHAIR visor_flags_inv = HIDEFACE|HIDEFACIALHAIR visor_flags_cover = MASKCOVERSMOUTH - slot_flags = SLOT_MASK - adjusted_flags = SLOT_HEAD + slot_flags = ITEM_SLOT_MASK + adjusted_flags = ITEM_SLOT_HEAD icon_state = "bandbotany" /obj/item/clothing/mask/bandana/attack_self(mob/user) diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm index 1d92ab6e62..cb797c34d4 100644 --- a/code/modules/clothing/neck/_neck.dm +++ b/code/modules/clothing/neck/_neck.dm @@ -2,7 +2,7 @@ name = "necklace" icon = 'icons/obj/clothing/neck.dmi' body_parts_covered = NECK - slot_flags = SLOT_NECK + slot_flags = ITEM_SLOT_NECK strip_delay = 40 equip_delay_other = 40 diff --git a/code/modules/clothing/outfits/ert.dm b/code/modules/clothing/outfits/ert.dm index 97d4632130..c6d657b271 100644 --- a/code/modules/clothing/outfits/ert.dm +++ b/code/modules/clothing/outfits/ert.dm @@ -4,7 +4,7 @@ uniform = /obj/item/clothing/under/rank/centcom_officer shoes = /obj/item/clothing/shoes/combat/swat gloves = /obj/item/clothing/gloves/combat - ears = /obj/item/device/radio/headset/headset_cent/alt + ears = /obj/item/radio/headset/headset_cent/alt /datum/outfit/ert/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) if(visualsOnly) @@ -13,7 +13,7 @@ var/obj/item/implant/mindshield/L = new/obj/item/implant/mindshield(H) L.implant(H, null, 1) - var/obj/item/device/radio/R = H.ears + var/obj/item/radio/R = H.ears R.set_frequency(FREQ_CENTCOM) R.freqlock = TRUE @@ -40,8 +40,8 @@ if(visualsOnly) return - var/obj/item/device/radio/R = H.ears - R.keyslot = new /obj/item/device/encryptionkey/heads/captain + var/obj/item/radio/R = H.ears + R.keyslot = new /obj/item/encryptionkey/heads/captain R.recalculateChannels() /datum/outfit/ert/commander/alert @@ -74,8 +74,8 @@ if(visualsOnly) return - var/obj/item/device/radio/R = H.ears - R.keyslot = new /obj/item/device/encryptionkey/heads/hos + var/obj/item/radio/R = H.ears + R.keyslot = new /obj/item/encryptionkey/heads/hos R.recalculateChannels() /datum/outfit/ert/security/alert @@ -110,8 +110,8 @@ if(visualsOnly) return - var/obj/item/device/radio/R = H.ears - R.keyslot = new /obj/item/device/encryptionkey/heads/cmo + var/obj/item/radio/R = H.ears + R.keyslot = new /obj/item/encryptionkey/heads/cmo R.recalculateChannels() /datum/outfit/ert/medic/alert @@ -146,8 +146,8 @@ if(visualsOnly) return - var/obj/item/device/radio/R = H.ears - R.keyslot = new /obj/item/device/encryptionkey/heads/ce + var/obj/item/radio/R = H.ears + R.keyslot = new /obj/item/encryptionkey/heads/ce R.recalculateChannels() /datum/outfit/ert/engineer/alert @@ -166,12 +166,12 @@ uniform = /obj/item/clothing/under/rank/centcom_officer shoes = /obj/item/clothing/shoes/sneakers/black gloves = /obj/item/clothing/gloves/color/black - ears = /obj/item/device/radio/headset/headset_cent + ears = /obj/item/radio/headset/headset_cent glasses = /obj/item/clothing/glasses/sunglasses belt = /obj/item/gun/energy/e_gun l_pocket = /obj/item/pen back = /obj/item/storage/backpack/satchel - r_pocket = /obj/item/device/pda/heads + r_pocket = /obj/item/pda/heads l_hand = /obj/item/clipboard id = /obj/item/card/id @@ -179,7 +179,7 @@ if(visualsOnly) return - var/obj/item/device/pda/heads/pda = H.r_store + var/obj/item/pda/heads/pda = H.r_store pda.owner = H.real_name pda.ownjob = "CentCom Official" pda.update_label() @@ -231,8 +231,8 @@ if(visualsOnly) return - var/obj/item/device/radio/R = H.ears - R.keyslot = new /obj/item/device/encryptionkey/heads/hop + var/obj/item/radio/R = H.ears + R.keyslot = new /obj/item/encryptionkey/heads/hop R.recalculateChannels() /datum/outfit/ert/chaplain diff --git a/code/modules/clothing/outfits/event.dm b/code/modules/clothing/outfits/event.dm index caa473f6dc..37a06046b5 100644 --- a/code/modules/clothing/outfits/event.dm +++ b/code/modules/clothing/outfits/event.dm @@ -7,7 +7,7 @@ head = /obj/item/clothing/head/santa back = /obj/item/storage/backpack/santabag mask = /obj/item/clothing/mask/breath - r_pocket = /obj/item/device/flashlight + r_pocket = /obj/item/flashlight gloves = /obj/item/clothing/gloves/color/red belt = /obj/item/tank/internals/emergency_oxygen/double id = /obj/item/card/id/gold diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index 6fdbb183a3..6375f7986f 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -62,7 +62,7 @@ shoes = /obj/item/clothing/shoes/sneakers/red head = /obj/item/clothing/head/helmet/redtaghelm gloves = /obj/item/clothing/gloves/color/red - ears = /obj/item/device/radio/headset + ears = /obj/item/radio/headset suit = /obj/item/clothing/suit/redtag back = /obj/item/storage/backpack suit_store = /obj/item/gun/energy/laser/redtag @@ -91,7 +91,7 @@ head = /obj/item/clothing/head/helmet/space/pirate/bandana mask = /obj/item/clothing/mask/breath suit_store = /obj/item/tank/internals/oxygen - ears = /obj/item/device/radio/headset/syndicate + ears = /obj/item/radio/headset/syndicate id = /obj/item/card/id /datum/outfit/pirate/space/captain @@ -100,7 +100,7 @@ /datum/outfit/pirate/post_equip(mob/living/carbon/human/H) H.faction |= "pirate" - var/obj/item/device/radio/R = H.ears + var/obj/item/radio/R = H.ears if(R) R.set_frequency(FREQ_SYNDICATE) R.freqlock = TRUE @@ -117,7 +117,7 @@ shoes = /obj/item/clothing/shoes/clown_shoes gloves = /obj/item/clothing/gloves/color/black mask = /obj/item/clothing/mask/gas/clown_hat - ears = /obj/item/device/radio/headset + ears = /obj/item/radio/headset glasses = /obj/item/clothing/glasses/thermal/monocle suit = /obj/item/clothing/suit/hooded/chaplain_hoodie l_pocket = /obj/item/reagent_containers/food/snacks/grown/banana @@ -143,7 +143,7 @@ gloves = /obj/item/clothing/gloves/color/latex mask = /obj/item/clothing/mask/surgical head = /obj/item/clothing/head/welding - ears = /obj/item/device/radio/headset + ears = /obj/item/radio/headset glasses = /obj/item/clothing/glasses/thermal/monocle suit = /obj/item/clothing/suit/apron l_pocket = /obj/item/kitchen/knife @@ -163,12 +163,12 @@ uniform = /obj/item/clothing/under/suit_jacket shoes = /obj/item/clothing/shoes/sneakers/black gloves = /obj/item/clothing/gloves/color/black - ears = /obj/item/device/radio/headset + ears = /obj/item/radio/headset glasses = /obj/item/clothing/glasses/sunglasses l_pocket = /obj/item/melee/transforming/energy/sword/saber l_hand = /obj/item/storage/secure/briefcase id = /obj/item/card/id/syndicate - belt = /obj/item/device/pda/heads + belt = /obj/item/pda/heads /datum/outfit/assassin/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) var/obj/item/clothing/under/U = H.w_uniform @@ -188,7 +188,7 @@ sec_briefcase.SendSignal(COMSIG_TRY_STORAGE_INSERT, new /obj/item/ammo_box/a357, null, TRUE, TRUE) sec_briefcase.SendSignal(COMSIG_TRY_STORAGE_INSERT, new /obj/item/grenade/plastic/x4, null, TRUE, TRUE) - var/obj/item/device/pda/heads/pda = H.belt + var/obj/item/pda/heads/pda = H.belt pda.owner = H.real_name pda.ownjob = "Reaper" pda.update_label() @@ -206,7 +206,7 @@ suit = /obj/item/clothing/suit/armor/bulletproof shoes = /obj/item/clothing/shoes/combat/swat gloves = /obj/item/clothing/gloves/combat - ears = /obj/item/device/radio/headset/headset_cent/commander + ears = /obj/item/radio/headset/headset_cent/commander glasses = /obj/item/clothing/glasses/eyepatch mask = /obj/item/clothing/mask/cigarette/cigar/cohiba head = /obj/item/clothing/head/centhat @@ -236,7 +236,7 @@ shoes = /obj/item/clothing/shoes/combat/swat gloves = /obj/item/clothing/gloves/combat glasses = /obj/item/clothing/glasses/thermal/eyepatch - ears = /obj/item/device/radio/headset/headset_cent/commander + ears = /obj/item/radio/headset/headset_cent/commander mask = /obj/item/clothing/mask/cigarette/cigar/havana head = /obj/item/clothing/head/helmet/space/beret belt = /obj/item/gun/energy/pulse/pistol/m1911 @@ -256,7 +256,7 @@ W.registered_name = H.real_name W.update_label() - var/obj/item/device/radio/headset/R = H.ears + var/obj/item/radio/headset/R = H.ears R.set_frequency(FREQ_CENTCOM) R.freqlock = TRUE @@ -275,7 +275,7 @@ uniform = /obj/item/clothing/under/color/lightpurple suit = /obj/item/clothing/suit/wizrobe shoes = /obj/item/clothing/shoes/sandal/magic - ears = /obj/item/device/radio/headset + ears = /obj/item/radio/headset head = /obj/item/clothing/head/wizard r_pocket = /obj/item/teleportation_scroll r_hand = /obj/item/spellbook @@ -317,7 +317,7 @@ head = /obj/item/clothing/head/pirate/captain shoes = /obj/item/clothing/shoes/combat gloves = /obj/item/clothing/gloves/combat - ears = /obj/item/device/radio/headset/headset_cent + ears = /obj/item/radio/headset/headset_cent glasses = /obj/item/clothing/glasses/thermal/eyepatch suit = /obj/item/clothing/suit/pirate/captain back = /obj/item/storage/backpack/satchel/leather @@ -344,7 +344,7 @@ head = /obj/item/clothing/head/fedora shoes = /obj/item/clothing/shoes/laceup gloves = /obj/item/clothing/gloves/color/black - ears = /obj/item/device/radio/headset + ears = /obj/item/radio/headset glasses = /obj/item/clothing/glasses/sunglasses r_hand = /obj/item/gun/ballistic/automatic/tommygun id = /obj/item/card/id @@ -382,20 +382,20 @@ belt = /obj/item/gun/ballistic/revolver/mateba r_hand = /obj/item/gun/energy/pulse/loyalpin id = /obj/item/card/id - ears = /obj/item/device/radio/headset/headset_cent/alt + ears = /obj/item/radio/headset/headset_cent/alt backpack_contents = list(/obj/item/storage/box=1,\ /obj/item/ammo_box/a357=1,\ /obj/item/storage/firstaid/regular=1,\ /obj/item/storage/box/flashbangs=1,\ - /obj/item/device/flashlight=1,\ + /obj/item/flashlight=1,\ /obj/item/grenade/plastic/x4=1) /datum/outfit/death_commando/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) if(visualsOnly) return - var/obj/item/device/radio/R = H.ears + var/obj/item/radio/R = H.ears R.set_frequency(FREQ_CENTCOM) R.freqlock = TRUE diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index 0758013698..e3c32cd26c 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -6,7 +6,7 @@ var/chained = 0 body_parts_covered = FEET - slot_flags = SLOT_FEET + slot_flags = ITEM_SLOT_FEET permeability_coefficient = 0.5 slowdown = SHOES_SLOWDOWN diff --git a/code/modules/clothing/shoes/bananashoes.dm b/code/modules/clothing/shoes/bananashoes.dm index 7ffd9c1f40..3dc80e0ded 100644 --- a/code/modules/clothing/shoes/bananashoes.dm +++ b/code/modules/clothing/shoes/bananashoes.dm @@ -10,10 +10,10 @@ /obj/item/clothing/shoes/clown_shoes/banana_shoes/Initialize() . = ..() - AddComponent(/datum/component/material_container, list(MAT_BANANIUM), 200000, TRUE) + AddComponent(/datum/component/material_container, list(MAT_BANANIUM), 200000, TRUE, list(/obj/item/stack)) AddComponent(/datum/component/squeak, list('sound/items/bikehorn.ogg'=1), 75) if(always_noslip) - flags_1 |= NOSLIP_1 + clothing_flags |= NOSLIP /obj/item/clothing/shoes/clown_shoes/banana_shoes/step_action() . = ..() @@ -22,7 +22,7 @@ if(bananium.amount(MAT_BANANIUM) < 100) on = !on if(!always_noslip) - flags_1 &= ~NOSLIP_1 + clothing_flags &= ~NOSLIP update_icon() to_chat(loc, "You ran out of bananium!") else @@ -49,9 +49,9 @@ to_chat(user, "You [on ? "activate" : "deactivate"] the prototype shoes.") if(!always_noslip) if(on) - flags_1 |= NOSLIP_1 + clothing_flags |= NOSLIP else - flags_1 &= ~NOSLIP_1 + clothing_flags &= ~NOSLIP else to_chat(user, "You need bananium to turn the prototype shoes on!") diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm index e669ce3826..0f5b381326 100644 --- a/code/modules/clothing/shoes/magboots.dm +++ b/code/modules/clothing/shoes/magboots.dm @@ -21,12 +21,12 @@ /obj/item/clothing/shoes/magboots/attack_self(mob/user) - if(src.magpulse) - src.flags_1 &= ~NOSLIP_1 - src.slowdown = SHOES_SLOWDOWN + if(magpulse) + clothing_flags &= ~NOSLIP + slowdown = SHOES_SLOWDOWN else - src.flags_1 |= NOSLIP_1 - src.slowdown = slowdown_active + clothing_flags |= NOSLIP + slowdown = slowdown_active magpulse = !magpulse icon_state = "[magboot_state][magpulse]" to_chat(user, "You [magpulse ? "enable" : "disable"] the mag-pulse traction system.") @@ -37,7 +37,7 @@ A.UpdateButtonIcon() /obj/item/clothing/shoes/magboots/negates_gravity() - return flags_1 & NOSLIP_1 + return clothing_flags & NOSLIP /obj/item/clothing/shoes/magboots/examine(mob/user) ..() diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 3dad0d464e..9f0d8358ac 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -23,7 +23,7 @@ name = "\improper SWAT boots" desc = "High speed, no drag combat boots." permeability_coefficient = 0.01 - flags_1 = NOSLIP_1 + clothing_flags = NOSLIP armor = list("melee" = 40, "bullet" = 30, "laser" = 25, "energy" = 25, "bomb" = 50, "bio" = 30, "rad" = 30, "fire" = 90, "acid" = 50) /obj/item/clothing/shoes/sandal @@ -50,7 +50,7 @@ name = "galoshes" icon_state = "galoshes" permeability_coefficient = 0.01 - flags_1 = NOSLIP_1 + clothing_flags = NOSLIP slowdown = SHOES_SLOWDOWN+1 strip_delay = 50 equip_delay_other = 50 @@ -264,7 +264,7 @@ /obj/item/clothing/shoes/wheelys/ui_action_click(mob/user, action) if(!isliving(user)) return - if(!istype(user.get_item_by_slot(slot_shoes), /obj/item/clothing/shoes/wheelys)) + if(!istype(user.get_item_by_slot(SLOT_SHOES), /obj/item/clothing/shoes/wheelys)) to_chat(user, "You must be wearing the wheely-heels to use them!") return if(!(W.is_occupant(user))) @@ -311,4 +311,4 @@ else set_light(0) lightCycle = 0 - active = FALSE \ No newline at end of file + active = FALSE diff --git a/code/modules/clothing/spacesuits/_spacesuits.dm b/code/modules/clothing/spacesuits/_spacesuits.dm index a2cd5bce75..6224e2a3d9 100644 --- a/code/modules/clothing/spacesuits/_spacesuits.dm +++ b/code/modules/clothing/spacesuits/_spacesuits.dm @@ -4,7 +4,7 @@ name = "space helmet" icon_state = "spaceold" desc = "A special helmet with solar UV shielding to protect your eyes from harmful rays." - flags_1 = STOPSPRESSUREDMAGE_1 | THICKMATERIAL_1 + clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL item_state = "spaceold" permeability_coefficient = 0.01 armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 50, "fire" = 80, "acid" = 70) @@ -30,9 +30,9 @@ w_class = WEIGHT_CLASS_BULKY gas_transfer_coefficient = 0.01 permeability_coefficient = 0.02 - flags_1 = STOPSPRESSUREDMAGE_1 | THICKMATERIAL_1 + clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals) slowdown = 1 armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 50, "fire" = 80, "acid" = 70) flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT @@ -42,4 +42,4 @@ max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT strip_delay = 80 equip_delay_other = 80 - resistance_flags = NONE \ No newline at end of file + resistance_flags = NONE diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm index 94553b3964..3040af756e 100644 --- a/code/modules/clothing/spacesuits/chronosuit.dm +++ b/code/modules/clothing/spacesuits/chronosuit.dm @@ -115,7 +115,7 @@ teleport_now.UpdateButtonIcon() - var/list/nonsafe_slots = list(slot_belt, slot_back) + var/list/nonsafe_slots = list(SLOT_BELT, SLOT_BACK) var/list/exposed = list() for(var/slot in nonsafe_slots) var/obj/item/slot_item = user.get_item_by_slot(slot) diff --git a/code/modules/clothing/spacesuits/flightsuit.dm b/code/modules/clothing/spacesuits/flightsuit.dm index 3a5198080f..170b1e98f0 100644 --- a/code/modules/clothing/spacesuits/flightsuit.dm +++ b/code/modules/clothing/spacesuits/flightsuit.dm @@ -13,15 +13,16 @@ //Also, I should probably add in some kind of limiting mechanic but I really don't like having to refill this all the time, expecially as it will be NODROP_1. //Apparently due to code limitations you have to detect mob movement with.. shoes. //The object that handles the flying itself - FLIGHT PACK -------------------------------------------------------------------------------------- -/obj/item/device/flightpack +/obj/item/flightpack name = "flight pack" desc = "An advanced back-worn system that has dual ion engines powerful enough to grant a humanoid flight. Contains an internal self-recharging high-current capacitor for short, powerful boosts." + icon = 'icons/obj/device.dmi' icon_state = FLIGHTPACK_SPRITE_BASE item_state = FLIGHTPACK_SPRITE_BASE actions_types = list(/datum/action/item_action/flightpack/toggle_flight, /datum/action/item_action/flightpack/engage_boosters, /datum/action/item_action/flightpack/toggle_stabilizers, /datum/action/item_action/flightpack/change_power, /datum/action/item_action/flightpack/toggle_airbrake) armor = list("melee" = 20, "bullet" = 20, "laser" = 20, "energy" = 10, "bomb" = 30, "bio" = 100, "rad" = 75, "fire" = 100, "acid" = 75) w_class = WEIGHT_CLASS_BULKY - slot_flags = SLOT_BACK + slot_flags = ITEM_SLOT_BACK resistance_flags = FIRE_PROOF var/processing_mode = FLIGHTSUIT_PROCESSING_FULL @@ -99,7 +100,7 @@ var/afterForceMove = FALSE var/datum/component/mobhook -/obj/item/device/flightpack/proc/changeWearer(mob/changeto) +/obj/item/flightpack/proc/changeWearer(mob/changeto) if(wearer) LAZYREMOVE(wearer.user_movement_hooks, src) wearer = null @@ -111,7 +112,7 @@ cached_pull = changeto.pulling mobhook = changeto.AddComponent(/datum/component/redirect, list(COMSIG_MOVABLE_MOVED), CALLBACK(src, .proc/on_mob_move, changeto)) -/obj/item/device/flightpack/Initialize() +/obj/item/flightpack/Initialize() ion_trail = new ion_trail.set_up(src) START_PROCESSING(SSflightpacks, src) @@ -120,7 +121,7 @@ update_icon() ..() -/obj/item/device/flightpack/full/Initialize() +/obj/item/flightpack/full/Initialize() part_manip = new /obj/item/stock_parts/manipulator/pico(src) part_scan = new /obj/item/stock_parts/scanning_module/phasic(src) part_cap = new /obj/item/stock_parts/capacitor/super(src) @@ -128,7 +129,7 @@ part_bin = new /obj/item/stock_parts/matter_bin/super(src) ..() -/obj/item/device/flightpack/proc/usermessage(message, span = "boldnotice", mob/mob_override = null) +/obj/item/flightpack/proc/usermessage(message, span = "boldnotice", mob/mob_override = null) var/mob/targ = wearer if(ismob(loc)) targ = loc @@ -138,7 +139,7 @@ return to_chat(targ, "[icon2html(src, targ)]|[message]") -/obj/item/device/flightpack/proc/sync_processing(datum/controller/subsystem/processing/flightpacks/FPS) +/obj/item/flightpack/proc/sync_processing(datum/controller/subsystem/processing/flightpacks/FPS) processing_mode = FPS.flightsuit_processing if(processing_mode == FLIGHTSUIT_PROCESSING_NONE) momentum_x = 0 @@ -150,7 +151,7 @@ boost = FALSE update_slowdown() -/obj/item/device/flightpack/proc/update_parts() +/obj/item/flightpack/proc/update_parts() boost_chargerate = initial(boost_chargerate) boost_drain = initial(boost_drain) powersetting_high = initial(powersetting_high) @@ -172,7 +173,7 @@ stabilizer_decay_amount = scan*3.5 airbrake_decay_amount = manip*8 -/obj/item/device/flightpack/Destroy() +/obj/item/flightpack/Destroy() if(suit) delink_suit() changeWearer() @@ -187,7 +188,7 @@ STOP_PROCESSING(SSflightpacks, src) . = ..() -/obj/item/device/flightpack/emp_act(severity) +/obj/item/flightpack/emp_act(severity) var/damage = severity == 1 ? emp_strong_damage : emp_weak_damage if(emp_damage <= (emp_disable_threshold * 1.5)) emp_damage += damage @@ -195,7 +196,7 @@ return ..() //Proc to change amount of momentum the wearer has, or dampen all momentum by a certain amount. -/obj/item/device/flightpack/proc/adjust_momentum(amountx, amounty, reduce_amount_total = 0) +/obj/item/flightpack/proc/adjust_momentum(amountx, amounty, reduce_amount_total = 0) if(reduce_amount_total != 0) if(momentum_x > 0) momentum_x = CLAMP(momentum_x - reduce_amount_total, 0, momentum_max) @@ -210,7 +211,7 @@ calculate_momentum_speed() //The wearer has momentum left. Move them and take some away, while negating the momentum that moving the wearer would gain. Or force the wearer to lose control if they are incapacitated. -/obj/item/device/flightpack/proc/momentum_drift() +/obj/item/flightpack/proc/momentum_drift() if(!flight || !wearer || (momentum_speed == 0)) return FALSE else if(!wearer.canmove) @@ -235,7 +236,7 @@ if(prob(emp_damage * 15)) step(wearer, pick(GLOB.alldirs)) -/obj/item/device/flightpack/proc/on_mob_move(mob/mob, turf/oldLoc, dir, forced) +/obj/item/flightpack/proc/on_mob_move(mob/mob, turf/oldLoc, dir, forced) if(forced) if(cached_pull && istype(oldLoc) && (get_dist(oldLoc, loc) <= 1) && !oldLoc.density) cached_pull.forceMove(oldLoc) @@ -254,7 +255,7 @@ if(flight) ion_trail.generate_effect() -/obj/item/device/flightpack/intercept_user_move(dir, mob, newLoc, oldLoc) +/obj/item/flightpack/intercept_user_move(dir, mob, newLoc, oldLoc) if(!flight) return var/momentum_increment = momentum_gain @@ -275,7 +276,7 @@ adjust_momentum(-momentum_increment, 0) //Make the wearer lose some momentum. -/obj/item/device/flightpack/proc/momentum_decay() +/obj/item/flightpack/proc/momentum_decay() var/amt = momentum_passive_loss brake? (amt += airbrake_decay_amount) : 0 gravity? (amt += gravity_decay_amount) : 0 @@ -284,7 +285,7 @@ adjust_momentum(0, 0, amt) //Check for gravity, air pressure, and whether this is still linked to a suit. Also, resync the flightpack/flight suit every minute. -/obj/item/device/flightpack/proc/check_conditions() +/obj/item/flightpack/proc/check_conditions() if(flight && (!assembled || !wearer || (!suit && requires_suit))) disable_flight(TRUE) var/turf/T = get_turf(src) @@ -302,7 +303,7 @@ usermessage("Warning: Sensor data is not being recieved from flight shoes. Stabilizers and airbrake modules deactivated!", "boldwarning") -/obj/item/device/flightpack/process() +/obj/item/flightpack/process() if(processing_mode == FLIGHTSUIT_PROCESSING_NONE) return FALSE check_conditions() @@ -311,10 +312,10 @@ handle_boost() handle_damage() -/obj/item/device/flightpack/proc/update_slowdown() +/obj/item/flightpack/proc/update_slowdown() flight? (slowdown = slowdown_air) : (slowdown = slowdown_ground) -/obj/item/device/flightpack/proc/handle_damage() +/obj/item/flightpack/proc/handle_damage() if(emp_damage) emp_damage = CLAMP(emp_damage-emp_heal_amount, 0, emp_disable_threshold * 10) if(emp_damage >= emp_disable_threshold) @@ -332,7 +333,7 @@ if(flight) disable_flight(TRUE) -/obj/item/device/flightpack/update_icon() +/obj/item/flightpack/update_icon() if(!flight) icon_state = "[FLIGHTPACK_SPRITE_BASE][FLIGHTPACK_SPRITE_OFF_APPEND]" item_state = "[FLIGHTPACK_SPRITE_BASE][FLIGHTPACK_SPRITE_OFF_APPEND]" @@ -347,7 +348,7 @@ wearer.update_inv_wear_suit() wearer.update_inv_back() -/obj/item/device/flightpack/proc/handle_boost() +/obj/item/flightpack/proc/handle_boost() if(boost) boost_charge = CLAMP(boost_charge-boost_drain, 0, boost_maxcharge) if(boost_charge < 1) @@ -355,13 +356,13 @@ if(boost_charge < boost_maxcharge) boost_charge = CLAMP(boost_charge+boost_chargerate, 0, boost_maxcharge) -/obj/item/device/flightpack/proc/cycle_power() +/obj/item/flightpack/proc/cycle_power() powersetting < powersetting_high? (powersetting++) : (powersetting = 1) momentum_gain = powersetting * 10 usermessage("Engine output set to [momentum_gain].") momentum_drift_coeff = ((momentum_gain)*(drift_tolerance*1.1))/momentum_max -/obj/item/device/flightpack/proc/crash_damage(density, anchored, speed, victim_name) +/obj/item/flightpack/proc/crash_damage(density, anchored, speed, victim_name) var/crashmessagesrc = "[wearer] violently crashes into [victim_name], " var/userdamage = 10 - stabilizer * 3 - part_bin.rating - part_scan.rating * part_manip.rating + anchored * 2 + boost * 2 + speed * 2 if(userdamage > 0) @@ -371,13 +372,13 @@ crashmessagesrc += "but luckily [wearer]'s impact was absorbed by their suit's stabilizers!" wearer.visible_message(crashmessagesrc) -/obj/item/device/flightpack/proc/userknockback(density, anchored, speed, dir) +/obj/item/flightpack/proc/userknockback(density, anchored, speed, dir) dir = turn(dir, 180) var/turf/target = get_edge_target_turf(get_turf(wearer), dir) wearer.visible_message("[wearer] is knocked flying by the impact!") wearer.throw_at(target, speed * 2 + density * 2 + anchored * 2, 2, wearer) -/obj/item/device/flightpack/proc/flight_impact(atom/impacted_atom, crashdir) //Yes, victim. +/obj/item/flightpack/proc/flight_impact(atom/impacted_atom, crashdir) //Yes, victim. if(!flight || (impacted_atom == wearer) || crashing || (processing_mode == FLIGHTSUIT_PROCESSING_NONE)) return FALSE crashing = TRUE @@ -421,19 +422,19 @@ losecontrol(knockdown = FALSE, move = FALSE) crashing = FALSE -/obj/item/device/flightpack/proc/door_pass(obj/structure/mineral_door/door) +/obj/item/flightpack/proc/door_pass(obj/structure/mineral_door/door) INVOKE_ASYNC(door, /obj/structure/mineral_door.proc/Open) var/turf/T = get_turf(door) wearer.forceMove(T) wearer.visible_message("[wearer] rolls to their sides and slips past [door]!") -/obj/item/device/flightpack/proc/crash_grille(obj/structure/grille/target) +/obj/item/flightpack/proc/crash_grille(obj/structure/grille/target) target.hitby(wearer) target.take_damage(60, BRUTE, "melee", 1) if(wearer.Move(target.loc)) wearer.visible_message("[wearer] smashes straight past [target]!") -/obj/item/device/flightpack/proc/airlock_pass(obj/machinery/door/A) +/obj/item/flightpack/proc/airlock_pass(obj/machinery/door/A) var/nopass = FALSE if(!A.density) return TRUE @@ -450,7 +451,7 @@ wearer.forceMove(target) return !nopass -/obj/item/device/flightpack/proc/atom_impact(atom/movable/victim, power, direction) +/obj/item/flightpack/proc/atom_impact(atom/movable/victim, power, direction) if(!victim) return FALSE if(!victim.anchored) @@ -466,7 +467,7 @@ var/obj/O = victim O.take_damage(power * 14) -/obj/item/device/flightpack/proc/losecontrol(knockdown = FALSE, move = TRUE) +/obj/item/flightpack/proc/losecontrol(knockdown = FALSE, move = TRUE) usermessage("Warning: Control system not responding. Deactivating!", "boldwarning") if(wearer) wearer.visible_message("[wearer]'s flight suit abruptly shuts off and they lose control!") @@ -485,7 +486,7 @@ if(flight) disable_flight(FALSE) -/obj/item/device/flightpack/proc/enable_flight(forced = FALSE) +/obj/item/flightpack/proc/enable_flight(forced = FALSE) if(!forced) if(disabled) usermessage("Internal systems recalibrating. Unable to safely proceed.", "boldwarning") @@ -505,7 +506,7 @@ update_icon() ion_trail.start() -/obj/item/device/flightpack/proc/disable_flight(forced = FALSE) +/obj/item/flightpack/proc/disable_flight(forced = FALSE) if(forced) losecontrol(knockdown = TRUE) return TRUE @@ -536,23 +537,23 @@ addtimer(CALLBACK(src, .proc/enable_safe), 50) return FALSE -/obj/item/device/flightpack/proc/enable_safe() +/obj/item/flightpack/proc/enable_safe() if(override_safe) override_safe = FALSE -/obj/item/device/flightpack/dropped(mob/wearer) +/obj/item/flightpack/dropped(mob/wearer) changeWearer() ..() -/obj/item/device/flightpack/item_action_slot_check(slot) - if(slot == SLOT_BACK) +/obj/item/flightpack/item_action_slot_check(slot) + if(slot == ITEM_SLOT_BACK) return TRUE -/obj/item/device/flightpack/equipped(mob/user, slot) +/obj/item/flightpack/equipped(mob/user, slot) changeWearer(user) ..() -/obj/item/device/flightpack/proc/calculate_momentum_speed() +/obj/item/flightpack/proc/calculate_momentum_speed() if(abs(momentum_x) >= (momentum_crash_coeff*momentum_max)) //Calculate X momentum_speed_x = 3 else if(abs(momentum_x) >= (momentum_impact_coeff*momentum_max)) @@ -571,10 +572,10 @@ momentum_speed_y = 0 momentum_speed = max(momentum_speed_x, momentum_speed_y) -/obj/item/device/flightpack/item_action_slot_check(slot) - return slot == slot_back +/obj/item/flightpack/item_action_slot_check(slot) + return slot == SLOT_BACK -/obj/item/device/flightpack/proc/enable_stabilizers() +/obj/item/flightpack/proc/enable_stabilizers() if(requires_suit && suit && !suit.deployedshoes) usermessage("Stabilizers requires flight shoes to be attached and deployed!", "boldwarning") return FALSE @@ -582,14 +583,14 @@ stabilizer = TRUE return TRUE -/obj/item/device/flightpack/proc/disable_stabilizers() +/obj/item/flightpack/proc/disable_stabilizers() if(wearer) if(brake) disable_airbrake() usermessage("Deactivating stabilization controllers!", "boldwarning") stabilizer = FALSE -/obj/item/device/flightpack/proc/activate_booster() +/obj/item/flightpack/proc/activate_booster() if(!flight) usermessage("Error: Engines offline!", "boldwarning") return FALSE @@ -601,13 +602,13 @@ update_slowdown() update_icon() -/obj/item/device/flightpack/proc/deactivate_booster() +/obj/item/flightpack/proc/deactivate_booster() usermessage("Boosters disengaged!") boost = FALSE update_slowdown() update_icon() -/obj/item/device/flightpack/proc/enable_airbrake() +/obj/item/flightpack/proc/enable_airbrake() if(wearer) if(!stabilizer && !enable_stabilizers()) usermessage("Airbrake deployment: Stabilizer Errored.", "boldwarning") @@ -616,13 +617,13 @@ brake = TRUE update_slowdown() -/obj/item/device/flightpack/proc/disable_airbrake() +/obj/item/flightpack/proc/disable_airbrake() if(wearer) usermessage("Airbrakes retracted!", "boldwarning") brake = FALSE update_slowdown() -/obj/item/device/flightpack/proc/relink_suit(obj/item/clothing/suit/space/hardsuit/flightsuit/F) +/obj/item/flightpack/proc/relink_suit(obj/item/clothing/suit/space/hardsuit/flightsuit/F) if(suit && suit == F) return FALSE else @@ -633,13 +634,13 @@ else suit = null -/obj/item/device/flightpack/proc/delink_suit() +/obj/item/flightpack/proc/delink_suit() if(suit) if(suit.pack && suit.pack == src) suit.pack = null suit = null -/obj/item/device/flightpack/attackby(obj/item/I, mob/user, params) +/obj/item/flightpack/attackby(obj/item/I, mob/user, params) var/const/SuccessMessage = " has been successfully installed into systems." var/changed = FALSE if(istype(I, /obj/item/stock_parts)) @@ -689,13 +690,13 @@ return /mob/living/carbon/get_flightpack() - var/obj/item/device/flightpack/F = back + var/obj/item/flightpack/F = back if(istype(F)) return F else return FALSE -/obj/item/device/flightpack/proc/allow_thrust(amount) +/obj/item/flightpack/proc/allow_thrust(amount) if(flight) return TRUE @@ -707,7 +708,7 @@ icon_state = "flightshoes" item_state = "flightshoes_mob" var/obj/item/clothing/suit/space/hardsuit/flightsuit/suit = null - var/obj/item/device/flightpack/pack = null + var/obj/item/flightpack/pack = null var/mob/living/carbon/human/wearer = null var/active = FALSE permeability_coefficient = 0.01 @@ -723,12 +724,12 @@ if(suit) active = toggle if(active) - src.flags_1 |= NOSLIP_1 + clothing_flags |= NOSLIP if(!active) - src.flags_1 &= ~NOSLIP_1 + clothing_flags &= ~NOSLIP /obj/item/clothing/shoes/flightshoes/item_action_slot_check(slot) - return slot == slot_shoes + return slot == SLOT_SHOES /obj/item/clothing/shoes/flightshoes/proc/delink_suit() if(suit) @@ -764,7 +765,7 @@ armor = list("melee" = 20, "bullet" = 20, "laser" = 20, "energy" = 10, "bomb" = 30, "bio" = 100, "rad" = 75, "fire" = 100, "acid" = 100) max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT var/locked_strip_delay = 80 - var/obj/item/device/flightpack/pack = null + var/obj/item/flightpack/pack = null var/obj/item/clothing/shoes/flightshoes/shoes = null var/mob/living/carbon/human/user = null var/deployedpack = FALSE @@ -893,7 +894,7 @@ if(user.back) usermessage("You're already wearing something on your back!", "boldwarning") return FALSE - user.equip_to_slot_if_possible(pack,slot_back,0,0,1) + user.equip_to_slot_if_possible(pack,SLOT_BACK,0,0,1) pack.flags_1 |= NODROP_1 resync() user.visible_message("A [pack.name] extends from [user]'s [name] and clamps to their back!") @@ -931,7 +932,7 @@ if(user.shoes) usermessage("You're already wearing something on your feet!", "boldwarning") return FALSE - user.equip_to_slot_if_possible(shoes,slot_shoes,0,0,1) + user.equip_to_slot_if_possible(shoes,SLOT_SHOES,0,0,1) shoes.flags_1 |= NODROP_1 user.visible_message("[user]'s [name] extends a pair of [shoes.name] over their feet!") user.update_inv_wear_suit() @@ -950,7 +951,7 @@ /obj/item/clothing/suit/space/hardsuit/flightsuit/proc/makepack() if(!pack) - pack = new /obj/item/device/flightpack/full(src) + pack = new /obj/item/flightpack/full(src) pack.relink_suit(src) /obj/item/clothing/suit/space/hardsuit/flightsuit/proc/makeshoes() @@ -962,7 +963,7 @@ /obj/item/clothing/suit/space/hardsuit/flightsuit/equipped(mob/M, slot) if(ishuman(M)) user = M - if(slot != slot_wear_suit) + if(slot != SLOT_WEAR_SUIT) if(deployedpack) retract_flightpack(TRUE) if(deployedshoes) @@ -977,7 +978,7 @@ pack = null usermessage("You detach the flightpack.") -/obj/item/clothing/suit/space/hardsuit/flightsuit/proc/attach_pack(obj/item/device/flightpack/F) +/obj/item/clothing/suit/space/hardsuit/flightsuit/proc/attach_pack(obj/item/flightpack/F) F.forceMove(src) pack = F pack.relink_suit(src) @@ -997,7 +998,7 @@ /obj/item/clothing/suit/space/hardsuit/flightsuit/attackby(obj/item/I, mob/wearer, params) user = wearer - if(src == user.get_item_by_slot(slot_wear_suit)) + if(src == user.get_item_by_slot(SLOT_WEAR_SUIT)) usermessage("You can not perform any service without taking the suit off!", "boldwarning") return FALSE else if(locked) @@ -1037,8 +1038,8 @@ return FALSE detach_shoes() return TRUE - else if(istype(I, /obj/item/device/flightpack)) - var/obj/item/device/flightpack/F = I + else if(istype(I, /obj/item/flightpack)) + var/obj/item/flightpack/F = I if(pack) usermessage("[src] already has a flightpack installed!", "boldwarning") return FALSE diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 41b2334f94..4a8e368208 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -48,12 +48,12 @@ soundloop.stop(user) /obj/item/clothing/head/helmet/space/hardsuit/item_action_slot_check(slot) - if(slot == slot_head) + if(slot == SLOT_HEAD) return 1 /obj/item/clothing/head/helmet/space/hardsuit/equipped(mob/user, slot) ..() - if(slot != slot_head) + if(slot != SLOT_HEAD) if(suit) suit.RemoveHelmet() soundloop.stop(user) @@ -97,7 +97,7 @@ item_state = "eng_hardsuit" max_integrity = 300 armor = list("melee" = 10, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 75, "fire" = 50, "acid" = 75) - allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals, /obj/item/device/t_scanner, /obj/item/construction/rcd, /obj/item/pipe_dispenser) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/t_scanner, /obj/item/construction/rcd, /obj/item/pipe_dispenser) siemens_coefficient = 0 var/obj/item/clothing/head/helmet/space/hardsuit/helmet actions_types = list(/datum/action/item_action/toggle_helmet) @@ -119,19 +119,19 @@ if(jetpack) to_chat(user, "[src] already has a jetpack installed.") return - if(src == user.get_item_by_slot(slot_wear_suit)) //Make sure the player is not wearing the suit before applying the upgrade. + if(src == user.get_item_by_slot(SLOT_WEAR_SUIT)) //Make sure the player is not wearing the suit before applying the upgrade. to_chat(user, "You cannot install the upgrade to [src] while wearing it.") return if(user.transferItemToLoc(I, src)) jetpack = I to_chat(user, "You successfully install the jetpack into [src].") - + return else if(istype(I, /obj/item/screwdriver)) if(!jetpack) to_chat(user, "[src] has no jetpack installed.") return - if(src == user.get_item_by_slot(slot_wear_suit)) + if(src == user.get_item_by_slot(SLOT_WEAR_SUIT)) to_chat(user, "You cannot remove the jetpack from [src] while wearing it.") return @@ -139,12 +139,14 @@ jetpack.forceMove(drop_location()) jetpack = null to_chat(user, "You successfully remove the jetpack from [src].") + return + return ..() /obj/item/clothing/suit/space/hardsuit/equipped(mob/user, slot) ..() if(jetpack) - if(slot == slot_wear_suit) + if(slot == SLOT_WEAR_SUIT) for(var/X in jetpack.actions) var/datum/action/A = X A.Grant(user) @@ -157,7 +159,7 @@ A.Remove(user) /obj/item/clothing/suit/space/hardsuit/item_action_slot_check(slot) - if(slot == slot_wear_suit) //we only give the mob the ability to toggle the helmet if he's wearing the hardsuit. + if(slot == SLOT_WEAR_SUIT) //we only give the mob the ability to toggle the helmet if he's wearing the hardsuit. return 1 //Engineering @@ -235,8 +237,11 @@ heat_protection = HEAD armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 75) brightness_on = 7 - allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/device/mining_scanner, /obj/item/device/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator) +/obj/item/clothing/head/helmet/space/hardsuit/mining/Initialize() + . = ..() + AddComponent(/datum/component/armor_plate) /obj/item/clothing/suit/space/hardsuit/mining icon_state = "hardsuit-mining" @@ -246,10 +251,14 @@ max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 75) - allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals, /obj/item/storage/bag/ore, /obj/item/pickaxe) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/storage/bag/ore, /obj/item/pickaxe) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/mining heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS +/obj/item/clothing/suit/space/hardsuit/mining/Initialize() + . = ..() + AddComponent(/datum/component/armor_plate) + //Syndicate hardsuit /obj/item/clothing/head/helmet/space/hardsuit/syndi name = "blood-red hardsuit helmet" @@ -263,7 +272,7 @@ var/obj/item/clothing/suit/space/hardsuit/syndi/linkedsuit = null actions_types = list(/datum/action/item_action/toggle_helmet_mode) visor_flags_inv = HIDEMASK|HIDEEYES|HIDEFACE|HIDEFACIALHAIR - visor_flags = STOPSPRESSUREDMAGE_1 + visor_flags = STOPSPRESSUREDAMAGE /obj/item/clothing/head/helmet/space/hardsuit/syndi/update_icon() icon_state = "hardsuit[on]-[item_color]" @@ -283,7 +292,7 @@ name = initial(name) desc = initial(desc) set_light(brightness_on) - flags_1 |= visor_flags + clothing_flags |= visor_flags flags_cover |= HEADCOVERSEYES | HEADCOVERSMOUTH flags_inv |= visor_flags_inv cold_protection |= HEAD @@ -292,7 +301,7 @@ name += " (combat)" desc = alt_desc set_light(0) - flags_1 &= ~visor_flags + clothing_flags &= ~visor_flags flags_cover &= ~(HEADCOVERSEYES | HEADCOVERSMOUTH) flags_inv &= ~visor_flags_inv cold_protection &= ~HEAD @@ -313,13 +322,13 @@ linkedsuit.name = initial(linkedsuit.name) linkedsuit.desc = initial(linkedsuit.desc) linkedsuit.slowdown = 1 - linkedsuit.flags_1 |= STOPSPRESSUREDMAGE_1 + linkedsuit.clothing_flags |= STOPSPRESSUREDAMAGE linkedsuit.cold_protection |= CHEST | GROIN | LEGS | FEET | ARMS | HANDS else linkedsuit.name += " (combat)" linkedsuit.desc = linkedsuit.alt_desc linkedsuit.slowdown = 0 - linkedsuit.flags_1 &= ~(STOPSPRESSUREDMAGE_1) + linkedsuit.clothing_flags &= ~STOPSPRESSUREDAMAGE linkedsuit.cold_protection &= ~(CHEST | GROIN | LEGS | FEET | ARMS | HANDS) linkedsuit.icon_state = "hardsuit[on]-[item_color]" @@ -437,7 +446,7 @@ name = "medical hardsuit" desc = "A special suit that protects against hazardous, low pressure environments. Built with lightweight materials for easier movement." item_state = "medical_hardsuit" - allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals, /obj/item/storage/firstaid, /obj/item/device/healthanalyzer, /obj/item/stack/medical) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/storage/firstaid, /obj/item/healthanalyzer, /obj/item/stack/medical) armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/medical @@ -460,7 +469,7 @@ /obj/item/clothing/head/helmet/space/hardsuit/rd/equipped(mob/living/carbon/human/user, slot) ..() - if (slot == slot_head) + if (slot == SLOT_HEAD) var/datum/atom_hud/DHUD = GLOB.huds[DATA_HUD_DIAGNOSTIC_BASIC] DHUD.add_hud_to(user) @@ -477,8 +486,8 @@ item_state = "hardsuit-rd" resistance_flags = ACID_PROOF | FIRE_PROOF max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT //Same as an emergency firesuit. Not ideal for extended exposure. - allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals, /obj/item/gun/energy/wormhole_projector, - /obj/item/hand_tele, /obj/item/device/aicard) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/gun/energy/wormhole_projector, + /obj/item/hand_tele, /obj/item/aicard) armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 100, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 80) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/rd @@ -615,7 +624,7 @@ /obj/item/clothing/suit/space/hardsuit/ancient/equipped(mob/user, slot) . = ..() - if (slot == slot_wear_suit) + if (slot == SLOT_WEAR_SUIT) if (mobhook && mobhook.parent != user) QDEL_NULL(mobhook) if (!mobhook) @@ -704,7 +713,7 @@ icon_state = "ert_medical" item_state = "ert_medical" item_color = "ert_medical" - flags_1 = STOPSPRESSUREDMAGE_1 | THICKMATERIAL_1 | NODROP_1 //Dont want people changing into the other teams gear + flags_1 = NODROP_1 //Dont want people changing into the other teams gear helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/ctf armor = list("melee" = 0, "bullet" = 30, "laser" = 30, "energy" = 30, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 95, "acid" = 95) slowdown = 0 diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 738d298f72..f3975d1f81 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -59,7 +59,6 @@ Contains: icon_state = "beret_badge" dynamic_hair_suffix = "+generic" dynamic_fhair_suffix = "+generic" - flags_1 = STOPSPRESSUREDMAGE_1 flags_inv = 0 armor = list("melee" = 80, "bullet" = 80, "laser" = 50, "energy" = 50, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) strip_delay = 130 @@ -93,7 +92,7 @@ Contains: icon_state = "void" item_state = "void" desc = "An old, NASA CentCom branch designed, dark red space suit." - allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals, /obj/item/device/multitool) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/multitool) /obj/item/clothing/head/helmet/space/nasavoid/old name = "Engineering Void Helmet" @@ -107,14 +106,13 @@ Contains: item_state = "void" desc = "A CentCom engineering dark red space suit. Age has degraded the suit making is difficult to move around in." slowdown = 4 - allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals, /obj/item/device/multitool) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/multitool) //Space santa outfit suit /obj/item/clothing/head/helmet/space/santahat name = "Santa's hat" desc = "Ho ho ho. Merrry X-mas!" icon_state = "santahat" - flags_1 = STOPSPRESSUREDMAGE_1 flags_cover = HEADCOVERSEYES dog_fashion = /datum/dog_fashion/head/santa @@ -125,7 +123,6 @@ Contains: icon_state = "santa" item_state = "santa" slowdown = 0 - flags_1 = STOPSPRESSUREDMAGE_1 allowed = list(/obj/item) //for stuffing exta special presents @@ -136,7 +133,6 @@ Contains: icon_state = "pirate" item_state = "pirate" armor = list("melee" = 30, "bullet" = 50, "laser" = 30,"energy" = 15, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 60, "acid" = 75) - flags_1 = STOPSPRESSUREDMAGE_1 flags_inv = HIDEHAIR strip_delay = 40 equip_delay_other = 20 @@ -169,7 +165,7 @@ Contains: item_color = "ert_commander" armor = list("melee" = 65, "bullet" = 50, "laser" = 50, "energy" = 50, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 80) strip_delay = 130 - flags_1 = STOPSPRESSUREDMAGE_1 | THICKMATERIAL_1 | NODROP_1 + flags_1 = NODROP_1 brightness_on = 7 /obj/item/clothing/suit/space/hardsuit/ert @@ -269,7 +265,7 @@ Contains: armor = list("melee" = -20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 75, "fire" = 60, "acid" = 75) //As whimpy as a space carp brightness_on = 0 //luminosity when on actions_types = list() - flags_1 = STOPSPRESSUREDMAGE_1 | THICKMATERIAL_1 | NODROP_1 + flags_1 = NODROP_1 /obj/item/clothing/suit/space/hardsuit/carp @@ -351,11 +347,9 @@ Contains: /obj/item/clothing/suit/space/fragile/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) if(!torn && prob(50)) to_chat(owner, "[src] tears from the damage, breaking the air-tight seal!") - src.flags_1 &= ~STOPSPRESSUREDMAGE_1 - src.name = "torn [src]." - src.desc = "A bulky suit meant to protect the user during emergency situations, at least until someone tore a hole in the suit." - src.torn = TRUE + clothing_flags &= ~STOPSPRESSUREDAMAGE + name = "torn [src]." + desc = "A bulky suit meant to protect the user during emergency situations, at least until someone tore a hole in the suit." + torn = TRUE playsound(loc, 'sound/weapons/slashmiss.ogg', 50, 1) playsound(loc, 'sound/effects/refill.ogg', 50, 1) - - diff --git a/code/modules/clothing/spacesuits/vg_spess.dm b/code/modules/clothing/spacesuits/vg_spess.dm index 237e5ebfa6..9970cfc5bd 100644 --- a/code/modules/clothing/spacesuits/vg_spess.dm +++ b/code/modules/clothing/spacesuits/vg_spess.dm @@ -16,7 +16,7 @@ icon_state = "hardsuit-nazi" slowdown = 1 armor = list(melee = 40, bullet = 30, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 20) - allowed = list(/obj/item/gun,/obj/item/device/flashlight,/obj/item/tank,/obj/item/melee/) + allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/melee/) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/nazi icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' @@ -36,7 +36,7 @@ icon_state = "hardsuit-soviet" slowdown = 1 armor = list(melee = 40, bullet = 30, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 20) - allowed = list(/obj/item/gun,/obj/item/device/flashlight,/obj/item/tank,/obj/item/melee/) + allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/melee/) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/soviet icon = 'modular_citadel/icons/obj/clothing/vg_clothes.dmi' diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm index 1cf1d4640d..6aabee0c81 100644 --- a/code/modules/clothing/suits/_suits.dm +++ b/code/modules/clothing/suits/_suits.dm @@ -4,7 +4,7 @@ var/fire_resist = T0C+100 allowed = list(/obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) - slot_flags = SLOT_OCLOTHING + slot_flags = ITEM_SLOT_OCLOTHING var/blood_overlay_type = "suit" var/togglename = null var/suittoggled = FALSE diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 37d48b484e..49b4fb7766 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -165,186 +165,6 @@ . = ..() allowed = GLOB.detective_vest_allowed -//Reactive armor -/obj/item/clothing/suit/armor/reactive - name = "reactive armor" - desc = "Doesn't seem to do much for some reason." - var/active = 0 - var/reactivearmor_cooldown_duration = 0 //cooldown specific to reactive armor - var/reactivearmor_cooldown = 0 - icon_state = "reactiveoff" - item_state = "reactiveoff" - blood_overlay_type = "armor" - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) - actions_types = list(/datum/action/item_action/toggle) - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF - hit_reaction_chance = 50 - - -/obj/item/clothing/suit/armor/reactive/attack_self(mob/user) - src.active = !( src.active ) - if (src.active) - to_chat(user, "[src] is now active.") - src.icon_state = "reactive" - src.item_state = "reactive" - else - to_chat(user, "[src] is now inactive.") - src.icon_state = "reactiveoff" - src.item_state = "reactiveoff" - src.add_fingerprint(user) - return - -/obj/item/clothing/suit/armor/reactive/emp_act(severity) - active = 0 - src.icon_state = "reactiveoff" - src.item_state = "reactiveoff" - reactivearmor_cooldown = world.time + 200 - ..() - -//When the wearer gets hit, this armor will teleport the user a short distance away (to safety or to more danger, no one knows. That's the fun of it!) -/obj/item/clothing/suit/armor/reactive/teleport - name = "reactive teleport armor" - desc = "Someone separated our Research Director from his own head!" - var/tele_range = 6 - var/rad_amount= 15 - reactivearmor_cooldown_duration = 100 - -/obj/item/clothing/suit/armor/reactive/teleport/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(!active) - return 0 - if(prob(hit_reaction_chance)) - var/mob/living/carbon/human/H = owner - if(world.time < reactivearmor_cooldown) - owner.visible_message("The reactive teleport system is still recharging! It fails to teleport [H]!") - return - owner.visible_message("The reactive teleport system flings [H] clear of [attack_text], shutting itself off in the process!") - var/list/turfs = new/list() - for(var/turf/T in orange(tele_range, H)) - if(T.density) - continue - if(T.x>world.maxx-tele_range || T.xworld.maxy-tele_range || T.yThe reactive incendiary armor on [owner] activates, but fails to send out flames as it is still recharging its flame jets!") - return - owner.visible_message("[src] blocks [attack_text], sending out jets of flame!") - for(var/mob/living/carbon/C in range(6, owner)) - if(C != owner) - C.fire_stacks += 8 - C.IgniteMob() - owner.fire_stacks = -20 - reactivearmor_cooldown = world.time + reactivearmor_cooldown_duration - return 1 - return 0 - - -/obj/item/clothing/suit/armor/reactive/stealth - name = "reactive stealth armor" - desc = "An experimental suit of armor that renders the wearer invisible on detection of imminent harm, and creates a decoy that runs away from the owner. You can't fight what you can't see." - -/obj/item/clothing/suit/armor/reactive/stealth/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(!active) - return 0 - if(prob(hit_reaction_chance)) - if(world.time < reactivearmor_cooldown) - owner.visible_message("The reactive stealth system on [owner] activates, but is still recharging its holographic emitters!") - return - var/mob/living/simple_animal/hostile/illusion/escape/E = new(owner.loc) - E.Copy_Parent(owner, 50) - E.GiveTarget(owner) //so it starts running right away - E.Goto(owner, E.move_to_delay, E.minimum_distance) - owner.alpha = 0 - owner.visible_message("[owner] is hit by [attack_text] in the chest!") //We pretend to be hit, since blocking it would stop the message otherwise - spawn(40) - owner.alpha = initial(owner.alpha) - reactivearmor_cooldown = world.time + reactivearmor_cooldown_duration - return 1 - -/obj/item/clothing/suit/armor/reactive/tesla - name = "reactive tesla armor" - desc = "An experimental suit of armor with sensitive detectors hooked up to a huge capacitor grid, with emitters strutting out of it. Zap." - siemens_coefficient = -1 - var/tesla_power = 25000 - var/tesla_range = 20 - var/tesla_boom = FALSE - var/tesla_stun = FALSE - -/obj/item/clothing/suit/armor/reactive/tesla/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(!active) - return 0 - if(prob(hit_reaction_chance)) - if(world.time < reactivearmor_cooldown) - var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread - sparks.set_up(1, 1, src) - sparks.start() - owner.visible_message("The tesla capacitors on [owner]'s reactive tesla armor are still recharging! The armor merely emits some sparks.") - return - owner.visible_message("[src] blocks [attack_text], sending out arcs of lightning!") - tesla_zap(owner,tesla_range,tesla_power,tesla_boom, tesla_stun) - reactivearmor_cooldown = world.time + reactivearmor_cooldown_duration - return 1 - -/obj/item/clothing/suit/armor/reactive/table - name = "reactive table armor" - desc = "If you can't beat the memes, embrace them." - var/tele_range = 10 - -/obj/item/clothing/suit/armor/reactive/table/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(!active) - return 0 - if(prob(hit_reaction_chance)) - var/mob/living/carbon/human/H = owner - if(world.time < reactivearmor_cooldown) - owner.visible_message("The reactive table armor's fabricators are still on cooldown!") - return - owner.visible_message("The reactive teleport system flings [H] clear of [attack_text] and slams them into a fabricated table!") - owner.visible_message("[H] GOES ON THE TABLE!!!") - owner.Knockdown(40) - var/list/turfs = new/list() - for(var/turf/T in orange(tele_range, H)) - if(T.density) - continue - if(T.x>world.maxx-tele_range || T.xworld.maxy-tele_range || T.y[src] is now active.") + icon_state = "reactive" + item_state = "reactive" + else + to_chat(user, "[src] is now inactive.") + icon_state = "reactiveoff" + item_state = "reactiveoff" + add_fingerprint(user) + return + +/obj/item/clothing/suit/armor/reactive/emp_act(severity) + active = 0 + icon_state = "reactiveoff" + item_state = "reactiveoff" + reactivearmor_cooldown = world.time + 200 + ..() + +//When the wearer gets hit, this armor will teleport the user a short distance away (to safety or to more danger, no one knows. That's the fun of it!) +/obj/item/clothing/suit/armor/reactive/teleport + name = "reactive teleport armor" + desc = "Someone separated our Research Director from his own head!" + var/tele_range = 6 + var/rad_amount= 15 + reactivearmor_cooldown_duration = 100 + +/obj/item/clothing/suit/armor/reactive/teleport/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(!active) + return 0 + if(prob(hit_reaction_chance)) + var/mob/living/carbon/human/H = owner + if(world.time < reactivearmor_cooldown) + owner.visible_message("The reactive teleport system is still recharging! It fails to teleport [H]!") + return + owner.visible_message("The reactive teleport system flings [H] clear of [attack_text], shutting itself off in the process!") + var/list/turfs = new/list() + for(var/turf/T in orange(tele_range, H)) + if(T.density) + continue + if(T.x>world.maxx-tele_range || T.xworld.maxy-tele_range || T.yThe reactive incendiary armor on [owner] activates, but fails to send out flames as it is still recharging its flame jets!") + return + owner.visible_message("[src] blocks [attack_text], sending out jets of flame!") + for(var/mob/living/carbon/C in range(6, owner)) + if(C != owner) + C.fire_stacks += 8 + C.IgniteMob() + owner.fire_stacks = -20 + reactivearmor_cooldown = world.time + reactivearmor_cooldown_duration + return 1 + return 0 + +//Stealth + +/obj/item/clothing/suit/armor/reactive/stealth + name = "reactive stealth armor" + desc = "An experimental suit of armor that renders the wearer invisible on detection of imminent harm, and creates a decoy that runs away from the owner. You can't fight what you can't see." + +/obj/item/clothing/suit/armor/reactive/stealth/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(!active) + return 0 + if(prob(hit_reaction_chance)) + if(world.time < reactivearmor_cooldown) + owner.visible_message("The reactive stealth system on [owner] activates, but is still recharging its holographic emitters!") + return + var/mob/living/simple_animal/hostile/illusion/escape/E = new(owner.loc) + E.Copy_Parent(owner, 50) + E.GiveTarget(owner) //so it starts running right away + E.Goto(owner, E.move_to_delay, E.minimum_distance) + owner.alpha = 0 + owner.visible_message("[owner] is hit by [attack_text] in the chest!") //We pretend to be hit, since blocking it would stop the message otherwise + spawn(40) + owner.alpha = initial(owner.alpha) + reactivearmor_cooldown = world.time + reactivearmor_cooldown_duration + return 1 + +//Tesla + +/obj/item/clothing/suit/armor/reactive/tesla + name = "reactive tesla armor" + desc = "An experimental suit of armor with sensitive detectors hooked up to a huge capacitor grid, with emitters strutting out of it. Zap." + siemens_coefficient = -1 + var/tesla_power = 25000 + var/tesla_range = 20 + var/tesla_boom = FALSE + var/tesla_stun = FALSE + +/obj/item/clothing/suit/armor/reactive/tesla/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(!active) + return 0 + if(prob(hit_reaction_chance)) + if(world.time < reactivearmor_cooldown) + var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread + sparks.set_up(1, 1, src) + sparks.start() + owner.visible_message("The tesla capacitors on [owner]'s reactive tesla armor are still recharging! The armor merely emits some sparks.") + return + owner.visible_message("[src] blocks [attack_text], sending out arcs of lightning!") + tesla_zap(owner,tesla_range,tesla_power,tesla_boom, tesla_stun) + reactivearmor_cooldown = world.time + reactivearmor_cooldown_duration + return 1 + + +//Repulse + +/obj/item/clothing/suit/armor/reactive/repulse + name = "reactive repulse armor" + desc = "An experimental suit of armor that violently throws back attackers." + +/obj/item/clothing/suit/armor/reactive/repulse/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(!active) + return 0 + if(prob(hit_reaction_chance)) + if(world.time < reactivearmor_cooldown) + owner.visible_message("The repulse generator is still recharging!") + return 0 + owner.visible_message("[src] blocks [attack_text], converting the attack into a wave of force!") + var/turf/T = get_turf(owner) + var/list/thrown_items = list() + for(var/atom/movable/A in range(T, 7)) + if(A == owner || A.anchored || thrown_items[A]) + continue + var/throwtarget = get_edge_target_turf(src, get_dir(src, get_step_away(A, src))) + A.throw_at(throwtarget,10,1) + thrown_items[A] = A + + reactivearmor_cooldown = world.time + reactivearmor_cooldown_duration + return 1 + +/obj/item/clothing/suit/armor/reactive/table + name = "reactive table armor" + desc = "If you can't beat the memes, embrace them." + var/tele_range = 10 + +/obj/item/clothing/suit/armor/reactive/table/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(!active) + return 0 + if(prob(hit_reaction_chance)) + var/mob/living/carbon/human/H = owner + if(world.time < reactivearmor_cooldown) + owner.visible_message("The reactive table armor's fabricators are still on cooldown!") + return + owner.visible_message("The reactive teleport system flings [H] clear of [attack_text] and slams them into a fabricated table!") + owner.visible_message("[H] GOES ON THE TABLE!!!") + owner.Knockdown(40) + var/list/turfs = new/list() + for(var/turf/T in orange(tele_range, H)) + if(T.density) + continue + if(T.x>world.maxx-tele_range || T.xworld.maxy-tele_range || T.yYou're already wearing something on your head!") return - else if(H.equip_to_slot_if_possible(hood,slot_head,0,0,1)) + else if(H.equip_to_slot_if_possible(hood,SLOT_HEAD,0,0,1)) suittoggled = TRUE src.icon_state = "[initial(icon_state)]_t" H.update_inv_wear_suit() @@ -83,7 +83,7 @@ /obj/item/clothing/head/hooded/equipped(mob/user, slot) ..() - if(slot != slot_head) + if(slot != SLOT_HEAD) if(suit) suit.RemoveHood() else @@ -155,7 +155,7 @@ /obj/item/clothing/suit/space/hardsuit/equipped(mob/user, slot) if(!helmettype) return - if(slot != slot_wear_suit) + if(slot != SLOT_WEAR_SUIT) RemoveHelmet() ..() @@ -192,7 +192,7 @@ if(H.head) to_chat(H, "You're already wearing something on your head!") return - else if(H.equip_to_slot_if_possible(helmet,slot_head,0,0,1)) + else if(H.equip_to_slot_if_possible(helmet,SLOT_HEAD,0,0,1)) to_chat(H, "You engage the helmet on the hardsuit.") suittoggled = TRUE H.update_inv_wear_suit() diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm index 9fce4145b7..3a9a72a543 100644 --- a/code/modules/clothing/suits/utility.dm +++ b/code/modules/clothing/suits/utility.dm @@ -18,10 +18,10 @@ gas_transfer_coefficient = 0.9 permeability_coefficient = 0.5 body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/extinguisher, /obj/item/crowbar) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/extinguisher, /obj/item/crowbar) slowdown = 1 flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - flags_1 = STOPSPRESSUREDMAGE_1 | THICKMATERIAL_1 + clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS @@ -56,7 +56,7 @@ name = "bomb hood" desc = "Use in case of bomb." icon_state = "bombsuit" - flags_1 = THICKMATERIAL_1 + clothing_flags = THICKMATERIAL armor = list("melee" = 20, "bullet" = 0, "laser" = 20,"energy" = 10, "bomb" = 100, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 50) flags_inv = HIDEFACE|HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR dynamic_hair_suffix = "" @@ -79,7 +79,7 @@ w_class = WEIGHT_CLASS_BULKY gas_transfer_coefficient = 0.01 permeability_coefficient = 0.01 - flags_1 = THICKMATERIAL_1 + clothing_flags = THICKMATERIAL body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS slowdown = 2 armor = list("melee" = 20, "bullet" = 0, "laser" = 20,"energy" = 10, "bomb" = 100, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 50) @@ -119,7 +119,7 @@ name = "radiation hood" icon_state = "rad" desc = "A hood with radiation protective properties. The label reads, 'Made with lead. Please do not consume insulation.'" - flags_1 = THICKMATERIAL_1 + clothing_flags = THICKMATERIAL flags_inv = HIDEMASK|HIDEEARS|HIDEFACE|HIDEEYES|HIDEHAIR|HIDEFACIALHAIR armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 60, "rad" = 100, "fire" = 30, "acid" = 30) strip_delay = 60 @@ -139,9 +139,9 @@ w_class = WEIGHT_CLASS_BULKY gas_transfer_coefficient = 0.9 permeability_coefficient = 0.5 - flags_1 = THICKMATERIAL_1 + clothing_flags = THICKMATERIAL body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/device/geiger_counter) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/geiger_counter) slowdown = 1.5 armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 60, "rad" = 100, "fire" = 30, "acid" = 30) strip_delay = 60 @@ -153,4 +153,4 @@ . = ..() AddComponent(/datum/component/rad_insulation, RAD_NO_INSULATION, TRUE, FALSE) // Just don't want things to be irradiated inside this - // Except things on the mob aren't even inside the suit so ehhhhhh \ No newline at end of file + // Except things on the mob aren't even inside the suit so ehhhhhh diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index dd290fdaa2..4d037d652b 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -3,7 +3,7 @@ name = "under" body_parts_covered = CHEST|GROIN|LEGS|ARMS permeability_coefficient = 0.9 - slot_flags = SLOT_ICLOTHING + slot_flags = ITEM_SLOT_ICLOTHING armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) var/fitted = FEMALE_UNIFORM_FULL // For use in alternate clothing styles for women var/has_sensor = HAS_SENSORS // For the crew computer @@ -65,7 +65,7 @@ adjusted = DIGITIGRADE_STYLE H.update_inv_w_uniform() - if(attached_accessory && slot != slot_hands && ishuman(user)) + if(attached_accessory && slot != SLOT_HANDS && ishuman(user)) var/mob/living/carbon/human/H = user attached_accessory.on_uniform_equip(src, user) if(attached_accessory.above_suit) diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm index 3a12f00a05..afb9bff1c1 100644 --- a/code/modules/clothing/under/color.dm +++ b/code/modules/clothing/under/color.dm @@ -9,7 +9,7 @@ var/obj/item/clothing/under/color/C = pick(subtypesof(/obj/item/clothing/under/color) - /obj/item/clothing/under/color/random - /obj/item/clothing/under/color/grey/glorf - /obj/item/clothing/under/color/black/ghost) if(ishuman(loc)) var/mob/living/carbon/human/H = loc - H.equip_to_slot_or_del(new C(H), slot_w_uniform) //or else you end up with naked assistants running around everywhere... + H.equip_to_slot_or_del(new C(H), SLOT_W_UNIFORM) //or else you end up with naked assistants running around everywhere... else new C(loc) return INITIALIZE_HINT_QDEL diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm index be8a113f22..e2be42e014 100644 --- a/code/modules/clothing/under/jobs/security.dm +++ b/code/modules/clothing/under/jobs/security.dm @@ -28,6 +28,14 @@ item_state = "gy_suit" item_color = "security" +/obj/item/clothing/under/rank/security/skirt + name = "security jumpskirt" + desc = "A \"tactical\" security jumpsuit with the legs replaced by a skirt." + icon_state = "secskirt" + item_state = "r_suit" + item_color = "secskirt" + can_adjust = FALSE //you know now that i think of it if you adjust the skirt and the sprite disappears isn't that just like flashing everyone + /obj/item/clothing/under/rank/warden name = "security suit" diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 18ec26a9a5..9849769a07 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -614,6 +614,7 @@ /obj/item/clothing/under/plasmaman name = "plasma envirosuit" desc = "A special containment suit that allows plasma-based lifeforms to exist safely in an oxygenated environment, and automatically extinguishes them in a crisis. Despite being airtight, it's not spaceworthy." + icon = 'icons/obj/device.dmi' icon_state = "plasmaman" item_state = "plasmaman" item_color = "plasmaman" @@ -648,7 +649,7 @@ /obj/item/clothing/under/plasmaman/attackby(obj/item/E, mob/user, params) ..() - if (istype(E, /obj/item/device/extinguisher_refill)) + if (istype(E, /obj/item/extinguisher_refill)) if (extinguishes_left == 5) to_chat(user, "The inbuilt extinguisher is full.") return @@ -660,10 +661,11 @@ return return -/obj/item/device/extinguisher_refill +/obj/item/extinguisher_refill name = "envirosuit extinguisher cartridge" desc = "A cartridge loaded with a compressed extinguisher mix, used to refill the automatic extinguisher on plasma envirosuits." icon_state = "plasmarefill" + icon = 'icons/obj/device.dmi' /obj/item/clothing/under/rank/security/navyblue/russian name = "russian officer's uniform" diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index 72d138da25..5122574e58 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -26,7 +26,7 @@ result = /obj/item/grenade/iedcasing reqs = list(/datum/reagent/fuel = 50, /obj/item/stack/cable_coil = 1, - /obj/item/device/assembly/igniter = 1, + /obj/item/assembly/igniter = 1, /obj/item/reagent_containers/food/drinks/soda_cans = 1) parts = list(/obj/item/reagent_containers/food/drinks/soda_cans = 1) time = 15 @@ -46,9 +46,9 @@ /datum/crafting_recipe/strobeshield name = "Strobe Shield" - result = /obj/item/device/assembly/flash/shield + result = /obj/item/assembly/flash/shield reqs = list(/obj/item/wallframe/flasher = 1, - /obj/item/device/assembly/flash/handheld = 1, + /obj/item/assembly/flash/handheld = 1, /obj/item/shield/riot = 1) time = 40 category = CAT_WEAPONRY @@ -69,7 +69,7 @@ result = /obj/item/melee/baton/cattleprod reqs = list(/obj/item/restraints/handcuffs/cable = 1, /obj/item/stack/rods = 1, - /obj/item/device/assembly/igniter = 1) + /obj/item/assembly/igniter = 1) time = 40 category = CAT_WEAPONRY subcategory = CAT_WEAPON @@ -79,7 +79,7 @@ result = /obj/item/melee/baton/cattleprod/teleprod reqs = list(/obj/item/restraints/handcuffs/cable = 1, /obj/item/stack/rods = 1, - /obj/item/device/assembly/igniter = 1, + /obj/item/assembly/igniter = 1, /obj/item/stack/ore/bluespace_crystal = 1) time = 40 category = CAT_WEAPONRY @@ -133,7 +133,7 @@ /obj/item/stack/cable_coil = 1, /obj/item/gun/energy/e_gun/advtaser = 1, /obj/item/stock_parts/cell = 1, - /obj/item/device/assembly/prox_sensor = 1) + /obj/item/assembly/prox_sensor = 1) tools = list(TOOL_WELDER, TOOL_SCREWDRIVER) time = 60 category = CAT_ROBOT @@ -141,10 +141,10 @@ /datum/crafting_recipe/secbot name = "Secbot" result = /mob/living/simple_animal/bot/secbot - reqs = list(/obj/item/device/assembly/signaler = 1, + reqs = list(/obj/item/assembly/signaler = 1, /obj/item/clothing/head/helmet/sec = 1, /obj/item/melee/baton = 1, - /obj/item/device/assembly/prox_sensor = 1, + /obj/item/assembly/prox_sensor = 1, /obj/item/bodypart/r_arm/robot = 1) tools = list(TOOL_WELDER) time = 60 @@ -154,7 +154,7 @@ name = "Cleanbot" result = /mob/living/simple_animal/bot/cleanbot reqs = list(/obj/item/reagent_containers/glass/bucket = 1, - /obj/item/device/assembly/prox_sensor = 1, + /obj/item/assembly/prox_sensor = 1, /obj/item/bodypart/r_arm/robot = 1) time = 40 category = CAT_ROBOT @@ -164,7 +164,7 @@ result = /mob/living/simple_animal/bot/floorbot reqs = list(/obj/item/storage/toolbox/mechanical = 1, /obj/item/stack/tile/plasteel = 1, - /obj/item/device/assembly/prox_sensor = 1, + /obj/item/assembly/prox_sensor = 1, /obj/item/bodypart/r_arm/robot = 1) time = 40 category = CAT_ROBOT @@ -172,9 +172,9 @@ /datum/crafting_recipe/medbot name = "Medbot" result = /mob/living/simple_animal/bot/medbot - reqs = list(/obj/item/device/healthanalyzer = 1, + reqs = list(/obj/item/healthanalyzer = 1, /obj/item/storage/firstaid = 1, - /obj/item/device/assembly/prox_sensor = 1, + /obj/item/assembly/prox_sensor = 1, /obj/item/bodypart/r_arm/robot = 1) time = 40 category = CAT_ROBOT @@ -184,7 +184,7 @@ result = /mob/living/simple_animal/bot/honkbot reqs = list(/obj/item/storage/box/clown = 1, /obj/item/bodypart/r_arm/robot = 1, - /obj/item/device/assembly/prox_sensor = 1, + /obj/item/assembly/prox_sensor = 1, /obj/item/bikehorn/ = 1) time = 40 category = CAT_ROBOT @@ -204,9 +204,9 @@ name = "Flamethrower" result = /obj/item/flamethrower reqs = list(/obj/item/weldingtool = 1, - /obj/item/device/assembly/igniter = 1, + /obj/item/assembly/igniter = 1, /obj/item/stack/rods = 1) - parts = list(/obj/item/device/assembly/igniter = 1, + parts = list(/obj/item/assembly/igniter = 1, /obj/item/weldingtool = 1) tools = list(TOOL_SCREWDRIVER) time = 10 @@ -325,11 +325,11 @@ /datum/crafting_recipe/spooky_camera name = "Camera Obscura" - result = /obj/item/device/camera/spooky + result = /obj/item/camera/spooky time = 15 - reqs = list(/obj/item/device/camera = 1, + reqs = list(/obj/item/camera = 1, /datum/reagent/water/holywater = 10) - parts = list(/obj/item/device/camera = 1) + parts = list(/obj/item/camera = 1) category = CAT_MISC /datum/crafting_recipe/lizardhat @@ -383,7 +383,7 @@ result = /obj/item/organ/eyes/robotic/flashlight time = 10 reqs = list( - /obj/item/device/flashlight = 2, + /obj/item/flashlight = 2, /obj/item/restraints/handcuffs/cable = 1 ) category = CAT_MISC @@ -576,12 +576,12 @@ /datum/crafting_recipe/pressureplate name = "Pressure Plate" - result = /obj/item/device/pressure_plate + result = /obj/item/pressure_plate time = 5 reqs = list(/obj/item/stack/sheet/metal = 1, /obj/item/stack/tile/plasteel = 1, /obj/item/stack/cable_coil = 2, - /obj/item/device/assembly/igniter = 1) + /obj/item/assembly/igniter = 1) category = CAT_MISC @@ -601,7 +601,6 @@ reqs = list(/obj/item/stack/sheet/cloth = 2) category = CAT_CLOTHING - /datum/crafting_recipe/mummy/body name = "Mummification Bandages (Body)" result = /obj/item/clothing/under/mummy @@ -615,4 +614,58 @@ /obj/item/stack/sheet/mineral/wood = 20, /obj/item/stack/cable_coil = 10) tools = list(TOOL_SCREWDRIVER, TOOL_WRENCH, TOOL_WELDER) - category = CAT_MISC \ No newline at end of file + category = CAT_MISC + +/datum/crafting_recipe/hudsunsec + name = "Security HUDsunglasses" + result = /obj/item/clothing/glasses/hud/security/sunglasses + time = 20 + tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + reqs = list(/obj/item/clothing/glasses/hud/security = 1, + /obj/item/clothing/glasses/sunglasses = 1, + /obj/item/stack/cable_coil = 5) + category = CAT_CLOTHING + +/datum/crafting_recipe/hudsunsecremoval + name = "Security HUD removal" + result = /obj/item/clothing/glasses/sunglasses + time = 20 + tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + reqs = list(/obj/item/clothing/glasses/hud/security/sunglasses = 1) + category = CAT_CLOTHING + +/datum/crafting_recipe/hudsunmed + name = "Medical HUDsunglasses" + result = /obj/item/clothing/glasses/hud/health/sunglasses + time = 20 + tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + reqs = list(/obj/item/clothing/glasses/hud/health = 1, + /obj/item/clothing/glasses/sunglasses = 1, + /obj/item/stack/cable_coil = 5) + category = CAT_CLOTHING + +/datum/crafting_recipe/hudsunmedremoval + name = "Medical HUD removal" + result = /obj/item/clothing/glasses/sunglasses + time = 20 + tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + reqs = list(/obj/item/clothing/glasses/hud/health/sunglasses = 1) + category = CAT_CLOTHING + +/datum/crafting_recipe/beergoggles + name = "Beer Goggles" + result = /obj/item/clothing/glasses/sunglasses/reagent + time = 20 + tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + reqs = list(/obj/item/clothing/glasses/science = 1, + /obj/item/clothing/glasses/sunglasses = 1, + /obj/item/stack/cable_coil = 5) + category = CAT_CLOTHING + +/datum/crafting_recipe/beergogglesremoval + name = "Beer Goggles removal" + result = /obj/item/clothing/glasses/sunglasses + time = 20 + tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER) + reqs = list(/obj/item/clothing/glasses/sunglasses/reagent = 1) + category = CAT_CLOTHING diff --git a/code/modules/detectivework/scanner.dm b/code/modules/detectivework/scanner.dm index e7589aa15f..c323f1edf2 100644 --- a/code/modules/detectivework/scanner.dm +++ b/code/modules/detectivework/scanner.dm @@ -2,16 +2,17 @@ // TODO: Split everything into easy to manage procs. -/obj/item/device/detective_scanner +/obj/item/detective_scanner name = "forensic scanner" desc = "Used to remotely scan objects and biomass for DNA and fingerprints. Can print a report of the findings." + icon = 'icons/obj/device.dmi' icon_state = "forensicnew" w_class = WEIGHT_CLASS_SMALL item_state = "electronic" lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' flags_1 = CONDUCT_1 | NOBLUDGEON_1 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT var/scanning = 0 var/list/log = list() var/range = 8 @@ -22,11 +23,11 @@ name = "Display Forensic Scanner Results" /datum/action/item_action/displayDetectiveScanResults/Trigger() - var/obj/item/device/detective_scanner/scanner = target + var/obj/item/detective_scanner/scanner = target if(istype(scanner)) scanner.displayDetectiveScanResults(usr) -/obj/item/device/detective_scanner/attack_self(mob/user) +/obj/item/detective_scanner/attack_self(mob/user) if(log.len && !scanning) scanning = 1 to_chat(user, "Printing report, please wait...") @@ -34,10 +35,10 @@ else to_chat(user, "The scanner has no logs or is in use.") -/obj/item/device/detective_scanner/attack(mob/living/M, mob/user) +/obj/item/detective_scanner/attack(mob/living/M, mob/user) return -/obj/item/device/detective_scanner/proc/PrintReport() +/obj/item/detective_scanner/proc/PrintReport() // Create our paper var/obj/item/paper/P = new(get_turf(src)) P.name = "paper- 'Scanner Report'" @@ -56,11 +57,11 @@ log = list() scanning = 0 -/obj/item/device/detective_scanner/afterattack(atom/A, mob/user, params) +/obj/item/detective_scanner/afterattack(atom/A, mob/user, params) scan(A, user) return FALSE -/obj/item/device/detective_scanner/proc/scan(atom/A, mob/user) +/obj/item/detective_scanner/proc/scan(atom/A, mob/user) set waitfor = 0 if(!scanning) // Can remotely scan objects and mobs. @@ -164,7 +165,7 @@ scanning = 0 return -/obj/item/device/detective_scanner/proc/add_log(msg, broadcast = 1) +/obj/item/detective_scanner/proc/add_log(msg, broadcast = 1) if(scanning) if(broadcast && ismob(loc)) var/mob/M = loc @@ -175,8 +176,8 @@ /proc/get_timestamp() return time2text(world.time + 432000, ":ss") - -/obj/item/device/detective_scanner/AltClick(mob/living/user) + +/obj/item/detective_scanner/AltClick(mob/living/user) // Best way for checking if a player can use while not incapacitated, etc if(!user.canUseTopic(src, be_close=TRUE)) return @@ -189,7 +190,7 @@ to_chat(user, "The scanner logs are cleared.") log = list() -/obj/item/device/detective_scanner/proc/displayDetectiveScanResults(mob/living/user) +/obj/item/detective_scanner/proc/displayDetectiveScanResults(mob/living/user) // No need for can-use checks since the action button should do proper checks if(!LAZYLEN(log)) to_chat(user, "Cannot display logs, the scanner has no logs.") diff --git a/code/modules/emoji/emoji_parse.dm b/code/modules/emoji/emoji_parse.dm index 7d1953738f..2f4a84c646 100644 --- a/code/modules/emoji/emoji_parse.dm +++ b/code/modules/emoji/emoji_parse.dm @@ -15,8 +15,10 @@ search = findtext(text, ":", pos+1) if(search) emoji = lowertext(copytext(text, pos+1, search)) - if(emoji in emojis) - parsed += icon2html('icons/emoji.dmi', world, emoji) + var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/goonchat) + var/tag = sheet.icon_tag("emoji-[emoji]") + if(tag) + parsed += tag pos = search + 1 else parsed += copytext(text, pos, search) diff --git a/code/modules/events/mass_hallucination.dm b/code/modules/events/mass_hallucination.dm index 33b9462e40..2b0c16ebfc 100644 --- a/code/modules/events/mass_hallucination.dm +++ b/code/modules/events/mass_hallucination.dm @@ -11,22 +11,27 @@ /datum/round_event/mass_hallucination/start() switch(rand(1,4)) if(1) //same sound for everyone - var/sound = pick("explosion","far_explosion","phone","alarm","hallelujah","creepy","ratvar","shuttle_dock", - "wall_decon","door_hack","blob_alert","tesla","malf_ai","meteors") + var/sound = pick("airlock","airlock_pry","console","explosion","far_explosion","mech","glass","alarm","beepsky","mech","wall_decon","door_hack","tesla") for(var/mob/living/carbon/C in GLOB.alive_mob_list) new /datum/hallucination/sounds(C, TRUE, sound) - if(2 to 4) + if(2) + var/weirdsound = pick("phone","hallelujah","highlander","hyperspace","game_over","creepy","tesla") + for(var/mob/living/carbon/C in GLOB.alive_mob_list) + new /datum/hallucination/weird_sounds(C, TRUE, weirdsound) + if(3) + var/stationmessage = pick("ratvar","shuttle_dock","blob_alert","malf_ai","meteors","supermatter") + for(var/mob/living/carbon/C in GLOB.alive_mob_list) + new /datum/hallucination/stationmessage(C, TRUE, stationmessage) + if(4 to 6) var/picked_hallucination = pick( /datum/hallucination/bolts, - /datum/hallucination/whispers, + /datum/hallucination/chat, /datum/hallucination/message, /datum/hallucination/bolts, /datum/hallucination/fake_flood, /datum/hallucination/battle, /datum/hallucination/fire, /datum/hallucination/self_delusion, - /datum/hallucination/fakeattacker, /datum/hallucination/death, - /datum/hallucination/xeno_attack, /datum/hallucination/delusion, /datum/hallucination/oh_yeah) for(var/mob/living/carbon/C in GLOB.alive_mob_list) diff --git a/code/modules/events/pirates.dm b/code/modules/events/pirates.dm index 09ae59503e..47dafc11db 100644 --- a/code/modules/events/pirates.dm +++ b/code/modules/events/pirates.dm @@ -94,13 +94,13 @@ density = TRUE anchored = TRUE var/active = FALSE - var/obj/item/device/gps/gps + var/obj/item/gps/gps var/credits_stored = 0 var/siphon_per_tick = 5 /obj/machinery/shuttle_scrambler/Initialize(mapload) . = ..() - gps = new/obj/item/device/gps/internal/pirate(src) + gps = new/obj/item/gps/internal/pirate(src) gps.tracking = FALSE update_icon() @@ -174,7 +174,7 @@ QDEL_NULL(gps) return ..() -/obj/item/device/gps/internal/pirate +/obj/item/gps/internal/pirate gpstag = "Nautical Signal" desc = "You can hear shanties over the static." diff --git a/code/modules/events/shuttle_loan.dm b/code/modules/events/shuttle_loan.dm index 768be52a63..b46419e68a 100644 --- a/code/modules/events/shuttle_loan.dm +++ b/code/modules/events/shuttle_loan.dm @@ -157,7 +157,7 @@ shuttle_spawns.Add(/mob/living/simple_animal/hostile/syndicate) if(RUSKY_PARTY) - var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/organic/party] + var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/service/party] pack.generate(pick_n_take(empty_shuttle_turfs)) shuttle_spawns.Add(/mob/living/simple_animal/hostile/russian) diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index d1bcfa350e..ba7b87150b 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -15,7 +15,8 @@ var/reagentsAmount = 100 var/list/saferChems = list("water","carbon","flour","cleaner","nutriment","condensedcapsaicin","mushroomhallucinogen","lube","pink_glitter", "plantbgone","blood","charcoal","space_drugs","morphine","holywater","ethanol","hot_coco","sacid","mindbreaker","rotatium", - "pax","laughter","concentrated_barbers_aid","colorful_reagent","dizzysolution","tiresolution") + "pax","laughter","concentrated_barbers_aid","colorful_reagent","dizzysolution","tiresolution","sodiumchloride","beer","hair_dye","sugar","white_glitter","growthserum") + //needs to be chemid unit checked at some point /datum/round_event/vent_clog/announce() priority_announce("The scrubbers network is experiencing a backpressure surge. Some ejection of contents may occur.", "Atmospherics alert") diff --git a/code/modules/events/wizard/curseditems.dm b/code/modules/events/wizard/curseditems.dm index 9de5a93292..180589b4f1 100644 --- a/code/modules/events/wizard/curseditems.dm +++ b/code/modules/events/wizard/curseditems.dm @@ -11,29 +11,29 @@ /datum/round_event/wizard/cursed_items/start() var/item_set = pick("wizardmimic", "swords", "bigfatdoobie", "boxing", "voicemodulators", "catgirls2015") - var/list/loadout[slots_amt] + var/list/loadout[SLOTS_AMT] var/ruins_spaceworthiness var/ruins_wizard_loadout switch(item_set) if("wizardmimic") - loadout[slot_wear_suit] = /obj/item/clothing/suit/wizrobe - loadout[slot_shoes] = /obj/item/clothing/shoes/sandal/magic - loadout[slot_head] = /obj/item/clothing/head/wizard + loadout[SLOT_WEAR_SUIT] = /obj/item/clothing/suit/wizrobe + loadout[SLOT_SHOES] = /obj/item/clothing/shoes/sandal/magic + loadout[SLOT_HEAD] = /obj/item/clothing/head/wizard ruins_spaceworthiness = 1 if("swords") - loadout[slot_hands] = /obj/item/katana/cursed + loadout[SLOT_HANDS] = /obj/item/katana/cursed if("bigfatdoobie") - loadout[slot_wear_mask] = /obj/item/clothing/mask/cigarette/rollie/trippy + loadout[SLOT_WEAR_MASK] = /obj/item/clothing/mask/cigarette/rollie/trippy ruins_spaceworthiness = 1 if("boxing") - loadout[slot_wear_mask] = /obj/item/clothing/mask/luchador - loadout[slot_gloves] = /obj/item/clothing/gloves/boxing + loadout[SLOT_WEAR_MASK] = /obj/item/clothing/mask/luchador + loadout[SLOT_GLOVES] = /obj/item/clothing/gloves/boxing ruins_spaceworthiness = 1 if("voicemodulators") - loadout[slot_wear_mask] = /obj/item/clothing/mask/chameleon + loadout[SLOT_WEAR_MASK] = /obj/item/clothing/mask/chameleon if("catgirls2015") - loadout[slot_head] = /obj/item/clothing/head/kitty + loadout[SLOT_HEAD] = /obj/item/clothing/head/kitty ruins_spaceworthiness = 1 ruins_wizard_loadout = 1 diff --git a/code/modules/fields/fields.dm b/code/modules/fields/fields.dm index e07844c4b4..0fdd2699d6 100644 --- a/code/modules/fields/fields.dm +++ b/code/modules/fields/fields.dm @@ -276,7 +276,7 @@ ..() //DEBUG FIELD ITEM -/obj/item/device/multitool/field_debug +/obj/item/multitool/field_debug name = "strange multitool" desc = "Seems to project a colored field!" var/list/field_params = list("field_shape" = FIELD_SHAPE_RADIUS_SQUARE, "current_range" = 5, "set_fieldturf_color" = "#aaffff", "set_edgeturf_color" = "#ffaaff") @@ -285,22 +285,22 @@ var/datum/proximity_monitor/advanced/current = null var/datum/component/mobhook -/obj/item/device/multitool/field_debug/Initialize() +/obj/item/multitool/field_debug/Initialize() . = ..() START_PROCESSING(SSobj, src) -/obj/item/device/multitool/field_debug/Destroy() +/obj/item/multitool/field_debug/Destroy() STOP_PROCESSING(SSobj, src) QDEL_NULL(current) QDEL_NULL(mobhook) return ..() -/obj/item/device/multitool/field_debug/proc/setup_debug_field() +/obj/item/multitool/field_debug/proc/setup_debug_field() var/list/new_params = field_params.Copy() new_params["host"] = src current = make_field(field_type, new_params) -/obj/item/device/multitool/field_debug/attack_self(mob/user) +/obj/item/multitool/field_debug/attack_self(mob/user) operating = !operating to_chat(user, "You turn [src] [operating? "on":"off"].") QDEL_NULL(mobhook) @@ -310,15 +310,15 @@ else if(!operating) QDEL_NULL(current) -/obj/item/device/multitool/field_debug/dropped() +/obj/item/multitool/field_debug/dropped() . = ..() QDEL_NULL(mobhook) -/obj/item/device/multitool/field_debug/proc/on_mob_move() +/obj/item/multitool/field_debug/proc/on_mob_move() check_turf(get_turf(src)) -/obj/item/device/multitool/field_debug/process() +/obj/item/multitool/field_debug/process() check_turf(get_turf(src)) -/obj/item/device/multitool/field_debug/proc/check_turf(turf/T) +/obj/item/multitool/field_debug/proc/check_turf(turf/T) current.HandleMove() diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 621bca26ff..1ade5070a7 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -1,84 +1,83 @@ -/* -Ideas for the subtle effects of hallucination: - -Light up oxygen/plasma indicators (done) -Cause health to look critical/dead, even when standing (done) -Characters silently watching you -Brief flashes of fire/space/bombs/c4/dangerous shit (done) -Items that are rare/traitorous/don't exist appearing in your inventory slots (done) -Strange audio (should be rare) (done) -Gunshots/explosions/opening doors/less rare audio (done) - -*/ - #define HAL_LINES_FILE "hallucination.json" -GLOBAL_LIST_INIT(hallucinations_minor, list( - /datum/hallucination/sounds, - /datum/hallucination/bolts, - /datum/hallucination/whispers, - /datum/hallucination/message, - /datum/hallucination/hudscrew)) +GLOBAL_LIST_INIT(hallucination_list, list( + /datum/hallucination/chat = 100, + /datum/hallucination/message = 60, + /datum/hallucination/sounds = 50, + /datum/hallucination/battle = 20, + /datum/hallucination/dangerflash = 15, + /datum/hallucination/hudscrew = 12, + /datum/hallucination/fake_alert = 12, + /datum/hallucination/weird_sounds = 8, + /datum/hallucination/stationmessage = 7, + /datum/hallucination/fake_flood = 7, + /datum/hallucination/stray_bullet = 7, + /datum/hallucination/bolts = 7, + /datum/hallucination/items_other = 7, + /datum/hallucination/husks = 7, + /datum/hallucination/items = 4, + /datum/hallucination/fire = 3, + /datum/hallucination/self_delusion = 2, + /datum/hallucination/delusion = 2, + /datum/hallucination/shock = 1, + /datum/hallucination/death = 1, + /datum/hallucination/oh_yeah = 1 + )) -GLOBAL_LIST_INIT(hallucinations_medium, list( - /datum/hallucination/fake_alert, - /datum/hallucination/items, - /datum/hallucination/items_other, - /datum/hallucination/dangerflash, - /datum/hallucination/bolts, - /datum/hallucination/fake_flood, - /datum/hallucination/husks, - /datum/hallucination/battle, - /datum/hallucination/fire, - /datum/hallucination/self_delusion, - /datum/hallucination/stray_bullet)) - -GLOBAL_LIST_INIT(hallucinations_major, list( - /datum/hallucination/fakeattacker, - /datum/hallucination/death, - /datum/hallucination/xeno_attack, - /datum/hallucination/singularity_scare, - /datum/hallucination/delusion, - /datum/hallucination/oh_yeah)) /mob/living/carbon/proc/handle_hallucinations() + if(!hallucination) + return + + hallucination-- + if(world.time < next_hallucination) return - if(hallucination) - var/list/current = GLOB.hallucinations_minor - if(prob(25) && hallucination > 100) - current = GLOB.hallucinations_medium - else if(prob(10) && hallucination > 200) - current = GLOB.hallucinations_major - var/halpick = pick(current) - new halpick(src, FALSE) + var/halpick = pickweight(GLOB.hallucination_list) + new halpick(src, FALSE) + + next_hallucination = world.time + rand(100, 600) /mob/living/carbon/proc/set_screwyhud(hud_type) hal_screwyhud = hud_type update_health_hud() /datum/hallucination + var/natural = TRUE var/mob/living/carbon/target - var/cost = 5 //affects the amount of hallucination reduced, and cooldown until the next hallucination var/feedback_details //extra info for investigate -/datum/hallucination/New(mob/living/carbon/T, forced = TRUE) +/datum/hallucination/New(mob/living/carbon/C, forced = TRUE) set waitfor = FALSE - target = T - if(!forced) - target.hallucination = max(0, target.hallucination - cost) - target.next_hallucination = world.time + (rand(cost * 0.5, cost * 3) * 10) + target = C + natural = !forced /datum/hallucination/proc/wake_and_restore() target.set_screwyhud(SCREWYHUD_NONE) target.SetSleeping(0) /datum/hallucination/Destroy() - target.investigate_log("was afflicted with a hallucination of type [type]. [feedback_details]", INVESTIGATE_HALLUCINATIONS) + target.investigate_log("was afflicted with a hallucination of type [type] by [natural?"hallucination status":"an external source"]. [feedback_details]", INVESTIGATE_HALLUCINATIONS) target = null return ..() +//Returns a random turf in a ring around the target mob, useful for sound hallucinations +/datum/hallucination/proc/random_far_turf() + var/x_based = prob(50) + var/first_offset = pick(-8,-7,-6,-5,5,6,7,8) + var/second_offset = rand(-8,8) + var/x_off + var/y_off + if(x_based) + x_off = first_offset + y_off = second_offset + else + y_off = first_offset + x_off = second_offset + var/turf/T = locate(target.x + x_off, target.y + y_off, target.z) + return T + /obj/effect/hallucination invisibility = INVISIBILITY_OBSERVER anchored = TRUE @@ -155,9 +154,8 @@ GLOBAL_LIST_INIT(hallucinations_major, list( var/image_state = "plasma" var/radius = 0 var/next_expand = 0 - cost = 25 -/datum/hallucination/fake_flood/New(mob/living/carbon/T, forced = TRUE) +/datum/hallucination/fake_flood/New(mob/living/carbon/C, forced = TRUE) set waitfor = FALSE ..() for(var/obj/machinery/atmospherics/components/unary/vent_pump/U in orange(7,target)) @@ -225,9 +223,8 @@ GLOBAL_LIST_INIT(hallucinations_major, list( //Xeno crawls from nearby vent,jumps at you, and goes back in var/obj/machinery/atmospherics/components/unary/vent_pump/pump = null var/obj/effect/hallucination/simple/xeno/xeno = null - cost = 25 -/datum/hallucination/xeno_attack/New(mob/living/carbon/T, forced = TRUE) +/datum/hallucination/xeno_attack/New(mob/living/carbon/C, forced = TRUE) set waitfor = FALSE ..() for(var/obj/machinery/atmospherics/components/unary/vent_pump/U in orange(7,target)) @@ -273,9 +270,8 @@ GLOBAL_LIST_INIT(hallucinations_major, list( var/obj/effect/hallucination/simple/bubblegum/bubblegum var/image/fakebroken var/image/fakerune - cost = 75 -/datum/hallucination/oh_yeah/New(mob/living/carbon/T, forced = TRUE) +/datum/hallucination/oh_yeah/New(mob/living/carbon/C, forced = TRUE) set waitfor = FALSE . = ..() var/turf/closed/wall/wall @@ -325,151 +321,192 @@ GLOBAL_LIST_INIT(hallucinations_major, list( QDEL_NULL(bubblegum) return ..() -/datum/hallucination/singularity_scare - //Singularity moving towards you. - //todo Hide where it moved with fake space images - var/obj/effect/hallucination/simple/singularity/s = null - cost = 75 - -/datum/hallucination/singularity_scare/New(mob/living/carbon/T, forced = TRUE) - set waitfor = FALSE - ..() - var/turf/start = get_turf(T) - var/screen_border = pick(SOUTH,EAST,WEST,NORTH) - for(var/i in 1 to 13) - start = get_step(start,screen_border) - feedback_details += "Source: [start.x],[start.y],[start.z]" - s = new(start,target) - s.parent = src - for(var/i in 1 to 13) - sleep(10) - s.forceMove(get_step(get_turf(s),get_dir(s,target))) - s.Show() - s.Eat() - qdel(s) - -/obj/effect/hallucination/simple/singularity - image_icon = 'icons/effects/224x224.dmi' - image_state = "singularity_s7" - image_layer = MASSIVE_OBJ_LAYER - px = -96 - py = -96 - var/datum/hallucination/singularity_scare/parent - -/obj/effect/hallucination/simple/singularity/proc/Eat(atom/OldLoc, Dir) - var/target_dist = get_dist(src,target) - if(target_dist<=3) //"Eaten" - target.set_screwyhud(SCREWYHUD_DEAD) - target.SetUnconscious(160) - addtimer(CALLBACK(parent, /datum/hallucination/.proc/wake_and_restore), rand(30, 50)) - /datum/hallucination/battle - cost = 15 -/datum/hallucination/battle/New(mob/living/carbon/T, forced = TRUE, battle_type) +/datum/hallucination/battle/New(mob/living/carbon/C, forced = TRUE, battle_type) set waitfor = FALSE ..() - var/hits = rand(3,6) + var/turf/source = random_far_turf() if(!battle_type) - battle_type = pick("laser","esword","gun","stunprod","bomb") + battle_type = pick("laser","disabler","esword","gun","stunprod","harmbaton","bomb") feedback_details += "Type: [battle_type]" switch(battle_type) - if("laser") //Laser fight - for(var/i in 1 to hits) - target.playsound_local(null, 'sound/weapons/laser.ogg', 25, 1) + if("laser") + var/hits = 0 + for(var/i in 1 to rand(5, 10)) + target.playsound_local(source, 'sound/weapons/laser.ogg', 25, 1) if(prob(50)) - addtimer(CALLBACK(target, /mob/.proc/playsound_local, null, 'sound/weapons/sear.ogg', 25, 1), rand(10,20)) + addtimer(CALLBACK(target, /mob/.proc/playsound_local, source, 'sound/weapons/sear.ogg', 25, 1), rand(5,10)) + hits++ else - addtimer(CALLBACK(target, /mob/.proc/playsound_local, null, 'sound/weapons/effects/searwall.ogg', 25, 1), rand(10,20)) - sleep(rand(CLICK_CD_RANGE, CLICK_CD_RANGE + 8)) - target.playsound_local(null, get_sfx("bodyfall"), 25, 1) - if("esword") //Esword fight - target.playsound_local(null, 'sound/weapons/saberon.ogg',15, 1) - for(var/i=0,i= 4 && prob(70)) + target.playsound_local(source, get_sfx("bodyfall"), 25, 1) + break + if("disabler") + var/hits = 0 + for(var/i in 1 to rand(5, 10)) + target.playsound_local(source, 'sound/weapons/taser2.ogg', 25, 1) + if(prob(50)) + addtimer(CALLBACK(target, /mob/.proc/playsound_local, source, 'sound/weapons/tap.ogg', 25, 1), rand(5,10)) + hits++ + else + addtimer(CALLBACK(target, /mob/.proc/playsound_local, source, 'sound/weapons/effects/searwall.ogg', 25, 1), rand(5,10)) + sleep(rand(CLICK_CD_RANGE, CLICK_CD_RANGE + 6)) + if(hits >= 3 && prob(70)) + target.playsound_local(source, get_sfx("bodyfall"), 25, 1) + break + if("esword") + target.playsound_local(source, 'sound/weapons/saberon.ogg',15, 1) + for(var/i in 1 to rand(4, 8)) + target.playsound_local(source, 'sound/weapons/blade1.ogg', 50, 1) + if(i == 4) + target.playsound_local(source, get_sfx("bodyfall"), 25, 1) + sleep(rand(CLICK_CD_MELEE, CLICK_CD_MELEE + 6)) + target.playsound_local(source, 'sound/weapons/saberoff.ogg', 15, 1) + if("gun") + var/hits = 0 + for(var/i in 1 to rand(3, 6)) + target.playsound_local(source, get_sfx("gunshot"), 25) if(prob(60)) - addtimer(CALLBACK(target, /mob/.proc/playsound_local, null, 'sound/weapons/pierce.ogg', 25, 1), rand(10,20)) + addtimer(CALLBACK(target, /mob/.proc/playsound_local, source, 'sound/weapons/pierce.ogg', 25, 1), rand(5,10)) + hits++ else - addtimer(CALLBACK(target, /mob/.proc/playsound_local, null, "ricochet", 25, 1), rand(10,20)) - sleep(rand(CLICK_CD_RANGE, CLICK_CD_RANGE + 8)) - target.playsound_local(null, get_sfx("bodyfall"), 25, 1) + addtimer(CALLBACK(target, /mob/.proc/playsound_local, source, "ricochet", 25, 1), rand(5,10)) + sleep(rand(CLICK_CD_RANGE, CLICK_CD_RANGE + 6)) + if(hits >= 2 && prob(80)) + target.playsound_local(source, get_sfx("bodyfall"), 25, 1) + break if("stunprod") //Stunprod + cablecuff - target.playsound_local(null, 'sound/weapons/egloves.ogg', 40, 1) - target.playsound_local(null, get_sfx("bodyfall"), 25, 1) + target.playsound_local(source, 'sound/weapons/egloves.ogg', 40, 1) + target.playsound_local(source, get_sfx("bodyfall"), 25, 1) sleep(20) - target.playsound_local(null, 'sound/weapons/cablecuff.ogg', 15, 1) + target.playsound_local(source, 'sound/weapons/cablecuff.ogg', 15, 1) + if("harmbaton") //zap n slap + target.playsound_local(source, 'sound/weapons/egloves.ogg', 40, 1) + target.playsound_local(source, get_sfx("bodyfall"), 25, 1) + sleep(20) + for(var/i in 1 to rand(5, 12)) + target.playsound_local(source, "swing_hit", 50, 1) + sleep(rand(CLICK_CD_MELEE, CLICK_CD_MELEE + 4)) if("bomb") // Tick Tock - for(var/i in 1 to hits) - target.playsound_local(null, 'sound/items/timer.ogg', 25, 0) + for(var/i in 1 to rand(3, 11)) + target.playsound_local(source, 'sound/items/timer.ogg', 25, 0) sleep(15) qdel(src) /datum/hallucination/items_other - cost = 10 -/datum/hallucination/items_other/New(mob/living/carbon/T, forced = TRUE, item_type) +/datum/hallucination/items_other/New(mob/living/carbon/C, forced = TRUE, item_type) set waitfor = FALSE ..() var/item if(!item_type) - item = pick(list("esword","dual_esword","stunpaper","clockspear","ttv","flash","armblade")) + item = pick(list("esword","taser","ebow","baton","dual_esword","clockspear","ttv","flash","armblade")) else item = item_type feedback_details += "Item: [item]" + var/side var/image_file var/image/A = null - for(var/mob/living/carbon/human/H in view(7,target)) - if(H != target) - var/free_hand = H.get_empty_held_index_for_side(side = "left") - if(free_hand) - image_file = 'icons/mob/inhands/items_lefthand.dmi' - else - free_hand = H.get_empty_held_index_for_side(side = "right") - if(free_hand) - image_file = 'icons/mob/inhands/items_righthand.dmi' - if(image_file) - switch(item) - if("esword") - target.playsound_local(H, 'sound/weapons/saberon.ogg',35,1) - A = image(image_file,H,"swordred", layer=ABOVE_MOB_LAYER) - if("dual_esword") - target.playsound_local(H, 'sound/weapons/saberon.ogg',35,1) - A = image(image_file,H,"dualsaberred1", layer=ABOVE_MOB_LAYER) - if("stunpaper") - A = image(image_file,H,"paper", layer=ABOVE_MOB_LAYER) - A.color = rgb(255,0,0) - if("clockspear") - A = image(image_file,H,"ratvarian_spear", layer=ABOVE_MOB_LAYER) - if("ttv") - A = image(image_file,H,"ttv", layer=ABOVE_MOB_LAYER) - if("flash") - A = image(image_file,H,"flashtool", layer=ABOVE_MOB_LAYER) - if("armblade") - A = image(image_file,H,"arm_blade", layer=ABOVE_MOB_LAYER) - if(target.client) - target.client.images |= A - sleep(rand(150,250)) - if(item == "esword" || item == "dual_esword") - target.playsound_local(H, 'sound/weapons/saberoff.ogg',35,1) - target.client.images.Remove(A) - break + var/list/mob_pool = list() + + for(var/mob/living/carbon/human/M in view(7,target)) + if(M != target) + mob_pool += M + if(!mob_pool.len) + return + + var/mob/living/carbon/human/H = pick(mob_pool) + feedback_details += " Mob: [H.real_name]" + + var/free_hand = H.get_empty_held_index_for_side(side = "left") + if(free_hand) + side = "left" + else + free_hand = H.get_empty_held_index_for_side(side = "right") + if(free_hand) + side = "right" + + if(side) + switch(item) + if("esword") + if(side == "right") + image_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' + else + image_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' + target.playsound_local(H, 'sound/weapons/saberon.ogg',35,1) + A = image(image_file,H,"swordred", layer=ABOVE_MOB_LAYER) + if("dual_esword") + if(side == "right") + image_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' + else + image_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' + target.playsound_local(H, 'sound/weapons/saberon.ogg',35,1) + A = image(image_file,H,"dualsaberred1", layer=ABOVE_MOB_LAYER) + if("taser") + if(side == "right") + image_file = 'icons/mob/inhands/weapons/guns_righthand.dmi' + else + image_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi' + A = image(image_file,H,"advtaserstun4", layer=ABOVE_MOB_LAYER) + if("ebow") + if(side == "right") + image_file = 'icons/mob/inhands/weapons/guns_righthand.dmi' + else + image_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi' + A = image(image_file,H,"crossbow", layer=ABOVE_MOB_LAYER) + if("baton") + if(side == "right") + image_file = 'icons/mob/inhands/equipment/security_righthand.dmi' + else + image_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' + target.playsound_local(H, "sparks",75,1,-1) + A = image(image_file,H,"baton", layer=ABOVE_MOB_LAYER) + if("clockspear") + if(side == "right") + image_file = 'icons/mob/inhands/antag/clockwork_righthand.dmi' + else + image_file = 'icons/mob/inhands/antag/clockwork_lefthand.dmi' + A = image(image_file,H,"ratvarian_spear", layer=ABOVE_MOB_LAYER) + if("ttv") + if(side == "right") + image_file = 'icons/mob/inhands/weapons/bombs_righthand.dmi' + else + image_file = 'icons/mob/inhands/weapons/bombs_lefthand.dmi' + A = image(image_file,H,"ttv", layer=ABOVE_MOB_LAYER) + if("flash") + if(side == "right") + image_file = 'icons/mob/inhands/equipment/security_righthand.dmi' + else + image_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' + A = image(image_file,H,"flashtool", layer=ABOVE_MOB_LAYER) + if("armblade") + if(side == "right") + image_file = 'icons/mob/inhands/antag/changeling_righthand.dmi' + else + image_file = 'icons/mob/inhands/antag/changeling_lefthand.dmi' + target.playsound_local(H, 'sound/effects/blobattack.ogg',30,1) + A = image(image_file,H,"arm_blade", layer=ABOVE_MOB_LAYER) + if(target.client) + target.client.images |= A + sleep(rand(150,250)) + if(item == "esword" || item == "dual_esword") + target.playsound_local(H, 'sound/weapons/saberoff.ogg',35,1) + if(item == "armblade") + target.playsound_local(H, 'sound/effects/blobattack.ogg',30,1) + target.client.images.Remove(A) qdel(src) /datum/hallucination/delusion var/list/image/delusions = list() - cost = 50 -/datum/hallucination/delusion/New(mob/living/carbon/T, forced, force_kind = null , duration = 300,skip_nearby = 1, custom_icon = null, custom_icon_file = null, custom_name = null) +/datum/hallucination/delusion/New(mob/living/carbon/C, forced, force_kind = null , duration = 300,skip_nearby = TRUE, custom_icon = null, custom_icon_file = null, custom_name = null) set waitfor = FALSE . = ..() var/image/A = null - var/kind = force_kind ? force_kind : pick("monkey","corgi","carp","skeleton","demon","zombie") + var/kind = force_kind ? force_kind : pick("nothing","monkey","corgi","carp","skeleton","demon","zombie") feedback_details += "Type: [kind]" var/list/nearby if(skip_nearby) @@ -480,6 +517,9 @@ GLOBAL_LIST_INIT(hallucinations_major, list( if(skip_nearby && (H in nearby)) continue switch(kind) + if("nothing") + A = image('icons/effects/effects.dmi',H,"nothing") + A.name = "..." if("monkey")//Monkey A = image('icons/mob/monkey.dmi',H,"monkey1") A.name = "Monkey ([rand(1,999)])" @@ -516,9 +556,8 @@ GLOBAL_LIST_INIT(hallucinations_major, list( /datum/hallucination/self_delusion var/image/delusion - cost = 40 -/datum/hallucination/self_delusion/New(mob/living/carbon/T, forced, force_kind = null , duration = 300, custom_icon = null, custom_icon_file = null, wabbajack = TRUE) //set wabbajack to false if you want to use another fake source +/datum/hallucination/self_delusion/New(mob/living/carbon/C, forced, force_kind = null , duration = 300, custom_icon = null, custom_icon_file = null, wabbajack = TRUE) //set wabbajack to false if you want to use another fake source set waitfor = FALSE ..() var/image/A = null @@ -556,176 +595,14 @@ GLOBAL_LIST_INIT(hallucinations_major, list( target.client.images.Remove(delusion) return ..() -/datum/hallucination/fakeattacker/New(mob/living/carbon/T, forced = TRUE) - set waitfor = FALSE - ..() - var/mob/living/carbon/human/clone = null - var/clone_weapon = null - - for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) - if(H.stat || H.lying) - continue - clone = H - feedback_details += "Clone of: [H.real_name]" - break - - if(!clone) - return - - var/static/list/non_fakeattack_weapons = list(/obj/item/gun/ballistic, /obj/item/ammo_box/a357,\ - /obj/item/gun/energy/kinetic_accelerator/crossbow, /obj/item/melee/transforming/energy/sword/saber,\ - /obj/item/storage/box/syndicate, /obj/item/storage/box/emps,\ - /obj/item/cartridge/virus/syndicate, /obj/item/clothing/under/chameleon,\ - /obj/item/clothing/shoes/chameleon/noslip, /obj/item/card/id/syndicate,\ - /obj/item/clothing/mask/chameleon, /obj/item/clothing/glasses/thermal,\ - /obj/item/device/chameleon, /obj/item/card/emag, /obj/item/grenade/plastic/x4,\ - /obj/item/storage/toolbox/syndicate, /obj/item/aiModule,\ - /obj/item/device/radio/headset/syndicate, /obj/item/grenade/plastic/c4,\ - /obj/item/device/powersink, /obj/item/storage/box/syndie_kit,\ - /obj/item/toy/syndicateballoon, /obj/item/gun/energy/laser/captain,\ - /obj/item/hand_tele, /obj/item/construction/rcd, /obj/item/tank/jetpack,\ - /obj/item/clothing/under/rank/captain, /obj/item/device/aicard,\ - /obj/item/clothing/shoes/magboots, /obj/item/areaeditor/blueprints, /obj/item/disk/nuclear,\ - /obj/item/clothing/suit/space/nasavoid, /obj/item/tank) - - var/obj/effect/fake_attacker/F = new/obj/effect/fake_attacker(get_turf(target),target) - - for(var/obj/item/I in clone.held_items) - if(!(locate(I) in non_fakeattack_weapons)) - clone_weapon = I.name - F.weap = I - - F.name = clone.name - F.my_target = target - F.weapon_name = clone_weapon - - F.left = image(clone,dir = WEST) - F.right = image(clone,dir = EAST) - F.up = image(clone,dir = NORTH) - F.down = image(clone,dir = SOUTH) - - F.updateimage() - qdel(src) - -/obj/effect/fake_attacker - icon = null - icon_state = null - name = "" - desc = "" - density = FALSE - anchored = TRUE - opacity = 0 - var/mob/living/carbon/human/my_target = null - var/weapon_name = null - var/obj/item/weap = null - var/image/stand_icon = null - var/image/currentimage = null - var/icon/base = null - var/skin_tone - var/mob/living/clone = null - var/image/left - var/image/right - var/image/up - var/collapse - var/image/down - - max_integrity = 100 - -/obj/effect/fake_attacker/attackby(obj/item/P, mob/living/user, params) - step_away(src,my_target,2) - user.changeNext_move(CLICK_CD_MELEE) - user.do_attack_animation(src) - my_target.playsound_local(src, P.hitsound, 1) - my_target.visible_message("[my_target] flails around wildly.", \ - "[my_target] has attacked [src]!") - - obj_integrity -= P.force - -/obj/effect/fake_attacker/Crossed(mob/M, somenumber) - if(M == my_target) - step_away(src,my_target,2) - if(prob(30)) - for(var/mob/O in oviewers(world.view , my_target)) - to_chat(O, "[my_target] stumbles around.") - -/obj/effect/fake_attacker/Initialize(mapload, mob/living/carbon/T) - ..() - my_target = T - QDEL_IN(src, 300) - step_away(src,my_target,2) - INVOKE_ASYNC(src, .proc/attack_loop) - - -/obj/effect/fake_attacker/proc/updateimage() -// del src.currentimage - if(src.dir == NORTH) - del src.currentimage - src.currentimage = new /image(up,src) - else if(src.dir == SOUTH) - del src.currentimage - src.currentimage = new /image(down,src) - else if(src.dir == EAST) - del src.currentimage - src.currentimage = new /image(right,src) - else if(src.dir == WEST) - del src.currentimage - src.currentimage = new /image(left,src) - SEND_IMAGE(my_target, currentimage) - - -/obj/effect/fake_attacker/proc/attack_loop() - while(1) - sleep(rand(5,10)) - if(obj_integrity < 0 || my_target.stat) - collapse() - continue - if(get_dist(src,my_target) > 1) - src.setDir(get_dir(src,my_target)) - step_towards(src,my_target) - updateimage() - else - if(prob(15)) - if(weapon_name) - my_target.playsound_local(my_target, weap.hitsound, weap.get_clamped_volume(), 1) - my_target.show_message("[src.name] has attacked [my_target] with [weapon_name]!", 1) - my_target.staminaloss += 30 - if(prob(20)) - my_target.blur_eyes(3) - if(prob(33)) - if(!locate(/obj/effect/overlay) in my_target.loc) - fake_blood(my_target) - else - my_target.playsound_local(my_target, pick('sound/weapons/punch1.ogg','sound/weapons/punch2.ogg','sound/weapons/punch3.ogg','sound/weapons/punch4.ogg'), 25, 1) - my_target.show_message("[src.name] has punched [my_target]!", 1) - my_target.staminaloss += 30 - if(prob(33)) - if(!locate(/obj/effect/overlay) in my_target.loc) - fake_blood(my_target) - - if(prob(15)) - step_away(src,my_target,2) - -/obj/effect/fake_attacker/proc/collapse() - collapse = 1 - updateimage() - qdel(src) - -/obj/effect/fake_attacker/proc/fake_blood(mob/target) - var/obj/effect/overlay/O = new/obj/effect/overlay(target.loc) - O.name = "blood" - var/image/I = image('icons/effects/blood.dmi',O,"floor[rand(1,7)]",O.dir,1) - SEND_IMAGE(target, I) - QDEL_IN(O, 300) - - /datum/hallucination/bolts - var/list/doors = list() - cost = 25 + var/list/locks = list() -/datum/hallucination/bolts/New(mob/living/carbon/T, forced, door_number=-1) //-1 for severe, 1-2 for subtle +/datum/hallucination/bolts/New(mob/living/carbon/C, forced, door_number) set waitfor = FALSE ..() - var/image/I = null + if(!door_number) + door_number = rand(0,4) //if 0 bolts all visible doors var/count = 0 feedback_details += "Door amount: [door_number]" for(var/obj/machinery/door/airlock/A in range(7, target)) @@ -734,46 +611,65 @@ GLOBAL_LIST_INIT(hallucinations_major, list( if(!A.density) continue count++ - I = image(A.overlays_file, get_turf(A), "lights_bolts",layer=A.layer+0.1) - doors += I - if(target.client) - target.client.images |= I - target.playsound_local(get_turf(A), 'sound/machines/boltsdown.ogg',30,0,3) - sleep(rand(6,12)) + var/obj/effect/hallucination/fake_door_lock/lock = new(get_turf(A)) + lock.target = target + lock.airlock = A + locks += lock + lock.lock() + sleep(rand(4,12)) sleep(100) - for(var/image/B in doors) - if(target.client) - target.client.images.Remove(B) - target.playsound_local(get_turf(B), 'sound/machines/boltsup.ogg',30,0,3) - sleep(rand(6,12)) + for(var/obj/effect/hallucination/fake_door_lock/lock in locks) + locks -= lock + lock.unlock() + sleep(rand(4,12)) qdel(src) -/datum/hallucination/whispers - cost = 15 +/obj/effect/hallucination/fake_door_lock + layer = CLOSED_DOOR_LAYER + 1 //for Collide priority + var/image/bolt_light + var/obj/machinery/door/airlock/airlock -/datum/hallucination/whispers/New(mob/living/carbon/T, forced = TRUE) +/obj/effect/hallucination/fake_door_lock/proc/lock() + bolt_light = image(airlock.overlays_file, get_turf(airlock), "lights_bolts",layer=airlock.layer+0.1) + if(target.client) + target.client.images |= bolt_light + target.playsound_local(get_turf(airlock), 'sound/machines/boltsdown.ogg',30,0,3) + +/obj/effect/hallucination/fake_door_lock/proc/unlock() + if(target.client) + target.client.images.Remove(bolt_light) + target.playsound_local(get_turf(airlock), 'sound/machines/boltsup.ogg',30,0,3) + qdel(src) + +/obj/effect/hallucination/fake_door_lock/CanPass(atom/movable/mover, turf/_target) + if(mover == target && airlock.density) + return FALSE + return TRUE + +/datum/hallucination/chat + +/datum/hallucination/chat/New(mob/living/carbon/C, forced = TRUE, force_radio, specific_message) set waitfor = FALSE ..() var/target_name = target.first_name() var/speak_messages = list("[pick_list_replacements(HAL_LINES_FILE, "suspicion")]",\ - "[pick_list_replacements(HAL_LINES_FILE, "greetings")][target.first_name()]!",\ - "[pick_list_replacements(HAL_LINES_FILE, "getout")]",\ - "[pick_list_replacements(HAL_LINES_FILE, "weird")]",\ - "[pick_list_replacements(HAL_LINES_FILE, "didyouhearthat")]",\ - "[pick_list_replacements(HAL_LINES_FILE, "imatraitor")]",\ - "[pick_list_replacements(HAL_LINES_FILE, "doubt")]",\ - "[pick_list_replacements(HAL_LINES_FILE, "aggressive")]",\ - "[pick_list_replacements(HAL_LINES_FILE, "help")]!!",\ - "[pick_list_replacements(HAL_LINES_FILE, "escape")]",\ - "I'm infected, [pick_list_replacements(HAL_LINES_FILE, "infection_advice")]!") + "[pick_list_replacements(HAL_LINES_FILE, "conversation")]",\ + "[pick_list_replacements(HAL_LINES_FILE, "greetings")][target.first_name()]!",\ + "[pick_list_replacements(HAL_LINES_FILE, "getout")]",\ + "[pick_list_replacements(HAL_LINES_FILE, "weird")]",\ + "[pick_list_replacements(HAL_LINES_FILE, "didyouhearthat")]",\ + "[pick_list_replacements(HAL_LINES_FILE, "doubt")]",\ + "[pick_list_replacements(HAL_LINES_FILE, "aggressive")]",\ + "[pick_list_replacements(HAL_LINES_FILE, "help")]!!",\ + "[pick_list_replacements(HAL_LINES_FILE, "escape")]",\ + "I'm infected, [pick_list_replacements(HAL_LINES_FILE, "infection_advice")]!") - var/radio_messages = list("Set [target.first_name()] to arrest!",\ - "[pick_list_replacements(HAL_LINES_FILE, "people")] is [pick_list_replacements(HAL_LINES_FILE, "accusations")]!",\ - "Help!",\ - "[pick_list_replacements(HAL_LINES_FILE, "threat")] in [pick_list_replacements(HAL_LINES_FILE, "location")][prob(50)?"!":"!!"]",\ - "Where's [target.first_name()]?"\ - ,"[pick("C","Ai, c","Someone c","Rec")]all the shuttle!"\ - ,"AI [pick("rogue", "is dead")]!!") + var/radio_messages = list("[pick_list_replacements(HAL_LINES_FILE, "people")] is [pick_list_replacements(HAL_LINES_FILE, "accusations")]!",\ + "Help!",\ + "[pick_list_replacements(HAL_LINES_FILE, "threat")] in [pick_list_replacements(HAL_LINES_FILE, "location")][prob(50)?"!":"!!"]",\ + "[pick("Where's [target.first_name()]?", "Set [target.first_name()] to arrest!")]",\ + "[pick("C","Ai, c","Someone c","Rec")]all the shuttle!",\ + "AI [pick("rogue", "is dead")]!!") var/list/mob/living/carbon/people = list() var/list/mob/living/carbon/person = null @@ -787,8 +683,10 @@ GLOBAL_LIST_INIT(hallucinations_major, list( if(get_dist(target,H)The light burns you!", \ - "You don't feel like yourself.", \ - "You hear something squeezing through the ducts...", \ - "You hear a distant scream.", \ - "You feel invincible, nothing can hurt you!", \ - "You feel a tiny prick!", \ - "[target] sneezes.", \ - //The truth, revealed - "You're hallucinating.", \ - //Direct advice - "[pick_list_replacements(HAL_LINES_FILE, "advice")]") + var/list/mobpool = list() + var/mob/living/carbon/human/other + var/close_other = FALSE + for(var/mob/living/carbon/human/H in oview(target, 7)) + if(get_dist(H, target) <= 1) + other = H + close_other = TRUE + break + mobpool += H + if(!other && mobpool.len) + other = pick(mobpool) + + var/list/message_pool = list() + if(other) + if(close_other) //increase the odds + for(var/i in 1 to 5) + message_pool.Add("You feel a tiny prick!") + var/obj/item/storage/equipped_backpack = other.get_item_by_slot(SLOT_BACK) + if(istype(equipped_backpack)) + for(var/i in 1 to 5) //increase the odds + message_pool.Add("[other] puts the [pick(\ + "revolver","energy sword","cryptographic sequencer","power sink","energy bow",\ + "hybrid taser","stun baton","flash","syringe gun","circular saw","tank transfer valve",\ + "ritual dagger","clockwork slab","spellbook",\ + "pulse rifle","captain's spare ID","hand teleporter","hypospray","antique laser gun","X-01 MultiPhase Energy Gun","station's blueprints"\ + )] into [equipped_backpack].") + + message_pool.Add("[other] [pick("sneezes","coughs")].") + + message_pool.Add("You hear something squeezing through the ducts...", \ + "Your [pick("arm", "leg", "back", "head")] itches.",\ + "You feel [pick("hot","cold","dry","wet","woozy","faint")].", + "Your stomach rumbles.", + "Your head hurts.", + "You hear a faint buzz in your head.", + "[target] sneezes.") + if(prob(10)) + message_pool.Add("Behind you.",\ + "You hear a faint laughter.", + "You see something move.", + "You hear skittering on the ceiling.", + "You see an inhumanly tall silhouette moving in the distance.") + if(prob(10)) + message_pool.Add("[pick_list_replacements(HAL_LINES_FILE, "advice")]") + var/chosen = pick(message_pool) feedback_details += "Message: [chosen]" to_chat(target, chosen) qdel(src) /datum/hallucination/sounds - cost = 15 -/datum/hallucination/sounds/New(mob/living/carbon/T, forced = TRUE, sound_type) +/datum/hallucination/sounds/New(mob/living/carbon/C, forced = TRUE, sound_type) set waitfor = FALSE ..() + var/turf/source = random_far_turf() if(!sound_type) - sound_type = pick("airlock","explosion","far_explosion","glass","phone","summon_guns","alarm","beepsky","hallelujah","creepy","ratvar","shuttle_dock", - "wall_decon","door_hack","esword","blob_alert","tesla","malf_ai","meteors") + sound_type = pick("airlock","airlock_pry","console","explosion","far_explosion","mech","glass","alarm","beepsky","mech","wall_decon","door_hack","tesla") feedback_details += "Type: [sound_type]" //Strange audio switch(sound_type) if("airlock") - target.playsound_local(null,'sound/machines/airlock.ogg', 15, 1) + target.playsound_local(source,'sound/machines/airlock.ogg', 30, 1) + if("airlock_pry") + target.playsound_local(source,'sound/machines/airlock_alien_prying.ogg', 100, 1) + sleep(50) + target.playsound_local(source, 'sound/machines/airlockforced.ogg', 30, 1) + if("console") + target.playsound_local(source,'sound/machines/terminal_prompt.ogg', 25, 1) if("explosion") if(prob(50)) - target.playsound_local(null,'sound/effects/explosion1.ogg', 50, 1) + target.playsound_local(source,'sound/effects/explosion1.ogg', 50, 1) else - target.playsound_local(null, 'sound/effects/explosion2.ogg', 50, 1) + target.playsound_local(source, 'sound/effects/explosion2.ogg', 50, 1) if("far_explosion") - target.playsound_local(null, 'sound/effects/explosionfar.ogg', 50, 1) + target.playsound_local(source, 'sound/effects/explosionfar.ogg', 50, 1) if("glass") - target.playsound_local(null, pick('sound/effects/glassbr1.ogg','sound/effects/glassbr2.ogg','sound/effects/glassbr3.ogg'), 50, 1) - if("phone") - target.playsound_local(null, 'sound/weapons/ring.ogg', 15) - sleep(25) - target.playsound_local(null, 'sound/weapons/ring.ogg', 25) - sleep(25) - target.playsound_local(null, 'sound/weapons/ring.ogg', 35) - sleep(25) - target.playsound_local(null, 'sound/weapons/ring.ogg', 45) - if("summon_guns") - target.playsound_local(null, 'sound/magic/summon_guns.ogg', 50, 1) + target.playsound_local(source, pick('sound/effects/glassbr1.ogg','sound/effects/glassbr2.ogg','sound/effects/glassbr3.ogg'), 50, 1) if("alarm") - target.playsound_local(null, 'sound/machines/alarm.ogg', 100, 0) + target.playsound_local(source, 'sound/machines/alarm.ogg', 100, 0) if("beepsky") - target.playsound_local(null, 'sound/voice/bfreeze.ogg', 35, 0) - if("hallelujah") - target.playsound_local(null, 'sound/effects/pray_chaplain.ogg', 50) - //Rare audio - if("creepy") - //These sounds are (mostly) taken from Hidden: Source - target.playsound_local(null, pick(CREEPY_SOUNDS), 50, 1) - if("ratvar") - target.playsound_local(null, 'sound/effects/ratvar_rises.ogg', 100) - sleep(150) - target.playsound_local(null, 'sound/effects/ratvar_reveal.ogg', 100) - if("shuttle_dock") - to_chat(target, "

    Priority Announcement

    ") - to_chat(target, "

    The Emergency Shuttle has docked with the station. You have 3 minutes to board the Emergency Shuttle.

    ") - target.playsound_local(null, 'sound/ai/shuttledock.ogg', 100) + target.playsound_local(source, 'sound/voice/bfreeze.ogg', 35, 0) + if("mech") + var/mech_dir = pick(GLOB.cardinals) + for(var/i in 1 to rand(4,9)) + if(prob(75)) + target.playsound_local(source, 'sound/mecha/mechstep.ogg', 40, 1) + source = get_step(source, mech_dir) + else + target.playsound_local(source, 'sound/mecha/mechturn.ogg', 40, 1) + mech_dir = pick(GLOB.cardinals) + sleep(10) //Deconstructing a wall if("wall_decon") - target.playsound_local(null, 'sound/items/welder.ogg', 15, 1) + target.playsound_local(source, 'sound/items/welder.ogg', 50, 1) sleep(105) - target.playsound_local(null, 'sound/items/welder2.ogg', 15, 1) + target.playsound_local(source, 'sound/items/welder2.ogg', 50, 1) sleep(15) - target.playsound_local(null, 'sound/items/ratchet.ogg', 15, 1) + target.playsound_local(source, 'sound/items/ratchet.ogg', 50, 1) //Hacking a door if("door_hack") - target.playsound_local(null, 'sound/items/screwdriver.ogg', 15, 1) - sleep(rand(10,30)) - for(var/i = rand(1,3), i>0, i--) - target.playsound_local(null, 'sound/weapons/empty.ogg', 15, 1) - sleep(rand(10,30)) - target.playsound_local(null, 'sound/machines/airlockforced.ogg', 15, 1) - if("esword") - target.playsound_local(null, 'sound/weapons/saberon.ogg',35,1) + target.playsound_local(source, 'sound/items/screwdriver.ogg', 50, 1) + sleep(rand(40,80)) + target.playsound_local(source, 'sound/machines/airlockforced.ogg', 30, 1) + qdel(src) + +/datum/hallucination/weird_sounds + +/datum/hallucination/weird_sounds/New(mob/living/carbon/C, forced = TRUE, sound_type) + set waitfor = FALSE + ..() + var/turf/source = random_far_turf() + if(!sound_type) + sound_type = pick("phone","hallelujah","highlander","hyperspace","game_over","creepy","tesla") + feedback_details += "Type: [sound_type]" + //Strange audio + switch(sound_type) + if("phone") + target.playsound_local(source, 'sound/weapons/ring.ogg', 15) + sleep(25) + target.playsound_local(source, 'sound/weapons/ring.ogg', 15) + sleep(25) + target.playsound_local(source, 'sound/weapons/ring.ogg', 15) + sleep(25) + target.playsound_local(source, 'sound/weapons/ring.ogg', 15) + if("hyperspace") + target.playsound_local(null, 'sound/effects/hyperspace_begin.ogg', 50) + if("hallelujah") + target.playsound_local(source, 'sound/effects/pray_chaplain.ogg', 50) + if("highlander") + target.playsound_local(null, 'sound/misc/highlander.ogg', 50) + if("game_over") + target.playsound_local(source, 'sound/misc/compiler-failure.ogg', 50) + if("laughter") + if(prob(50)) + target.playsound_local(source, 'sound/voice/human/womanlaugh.ogg', 50, 1) + else + target.playsound_local(source, pick('sound/voice/human/manlaugh1.ogg', 'sound/voice/human/manlaugh2.ogg'), 50, 1) + if("creepy") + //These sounds are (mostly) taken from Hidden: Source + target.playsound_local(source, pick(CREEPY_SOUNDS), 50, 1) + if("tesla") //Tesla loose! + target.playsound_local(source, 'sound/magic/lightningbolt.ogg', 35, 1) + sleep(30) + target.playsound_local(source, 'sound/magic/lightningbolt.ogg', 65, 1) + sleep(30) + target.playsound_local(source, 'sound/magic/lightningbolt.ogg', 100, 1) + + qdel(src) + +/datum/hallucination/stationmessage + +/datum/hallucination/stationmessage/New(mob/living/carbon/C, forced = TRUE, message) + set waitfor = FALSE + ..() + if(!message) + message = pick("ratvar","shuttle_dock","blob_alert","malf_ai","meteors","supermatter") + feedback_details += "Type: [message]" + switch(message) if("blob_alert") to_chat(target, "

    Biohazard Alert

    ") to_chat(target, "

    Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.

    ") - target.playsound_local(null, 'sound/ai/outbreak5.ogg', 100, 0) - if("tesla") //Tesla loose! - target.playsound_local(null, 'sound/magic/lightningbolt.ogg', 35, 1) - sleep(30) - target.playsound_local(null, 'sound/magic/lightningbolt.ogg', 65, 1) - sleep(30) - target.playsound_local(null, 'sound/magic/lightningbolt.ogg', 100, 1) + SEND_SOUND(target, 'sound/ai/outbreak5.ogg') + if("ratvar") + target.playsound_local(target, 'sound/machines/clockcult/ark_deathrattle.ogg', 50, FALSE, pressure_affected = FALSE) + target.playsound_local(target, 'sound/effects/clockcult_gateway_disrupted.ogg', 50, FALSE, pressure_affected = FALSE) + sleep(27) + target.playsound_local(target, 'sound/effects/explosion_distant.ogg', 50, FALSE, pressure_affected = FALSE) + if("shuttle_dock") + to_chat(target, "

    Priority Announcement

    ") + to_chat(target, "

    The Emergency Shuttle has docked with the station. You have 3 minutes to board the Emergency Shuttle.

    ") + SEND_SOUND(target, 'sound/ai/shuttledock.ogg') if("malf_ai") //AI is doomsdaying! to_chat(target, "

    Anomaly Alert

    ") to_chat(target, "

    Hostile runtimes detected in all station systems, please deactivate your AI to prevent possible damage to its morality core.

    ") - target.playsound_local(null, 'sound/ai/aimalf.ogg', 100, 0) + SEND_SOUND(target, 'sound/ai/aimalf.ogg') if("meteors") //Meteors inbound! to_chat(target, "

    Meteor Alert

    ") to_chat(target, "

    Meteors have been detected on collision course with the station.

    ") - target.playsound_local(null, 'sound/ai/meteors.ogg', 100, 0) - qdel(src) + SEND_SOUND(target, 'sound/ai/meteors.ogg') + if("supermatter") + SEND_SOUND(target, 'sound/magic/charge.ogg') + to_chat(target, "You feel reality distort for a moment...") /datum/hallucination/hudscrew - cost = 10 -/datum/hallucination/hudscrew/New(mob/living/carbon/T, forced = TRUE) +/datum/hallucination/hudscrew/New(mob/living/carbon/C, forced = TRUE) set waitfor = FALSE ..() //Screwy HUD @@ -933,9 +911,8 @@ GLOBAL_LIST_INIT(hallucinations_major, list( qdel(src) /datum/hallucination/fake_alert - cost = 15 -/datum/hallucination/fake_alert/New(mob/living/carbon/T, forced = TRUE, specific, duration = 150) +/datum/hallucination/fake_alert/New(mob/living/carbon/C, forced = TRUE, specific, duration = 150) set waitfor = FALSE ..() var/alert_type = pick("not_enough_oxy","not_enough_tox","not_enough_co2","too_much_oxy","too_much_co2","too_much_tox","newlaw","nutrition","charge","weightless","fire","locked","hacked","temphot","tempcold","pressure") @@ -983,15 +960,14 @@ GLOBAL_LIST_INIT(hallucinations_major, list( if("hacked") target.throw_alert(alert_type, /obj/screen/alert/hacked, override = TRUE) if("charge") - target.throw_alert(alert_type,/obj/screen/alert/emptycell, override = TRUE) + target.throw_alert(alert_type, /obj/screen/alert/emptycell, override = TRUE) sleep(duration) target.clear_alert(alert_type, clear_override = TRUE) qdel(src) /datum/hallucination/items - cost = 15 -/datum/hallucination/items/New(mob/living/carbon/T, forced = TRUE) +/datum/hallucination/items/New(mob/living/carbon/C, forced = TRUE) set waitfor = FALSE ..() //Strange items @@ -1052,9 +1028,8 @@ GLOBAL_LIST_INIT(hallucinations_major, list( qdel(src) /datum/hallucination/dangerflash - cost = 15 -/datum/hallucination/dangerflash/New(mob/living/carbon/T, forced = TRUE) +/datum/hallucination/dangerflash/New(mob/living/carbon/C, forced = TRUE, danger_type) set waitfor = FALSE ..() //Flashes of danger @@ -1064,32 +1039,92 @@ GLOBAL_LIST_INIT(hallucinations_major, list( possible_points += F if(possible_points.len) var/turf/open/floor/danger_point = pick(possible_points) - - switch(rand(1,5)) - if(1) - target.halimage = image('icons/turf/space.dmi',danger_point,"[rand(1,25)]",TURF_LAYER) - if(2) - target.halimage = image('icons/turf/floors/lava.dmi',danger_point,"smooth",TURF_LAYER) - if(3) - target.halimage = image('icons/turf/floors/Chasms.dmi',danger_point,"smooth",TURF_LAYER) - if(4) - target.halimage = image('icons/effects/effects.dmi',danger_point,"anom",OBJ_LAYER+0.01) - if(5) - target.halimage = image('icons/effects/effects.dmi',danger_point,"electricity2",OBJ_LAYER+0.01) - - - if(target.client) - target.client.images += target.halimage - sleep(rand(200,450)) - if(target.client) - target.client.images -= target.halimage - QDEL_NULL(target.halimage) + if(!danger_type) + danger_type = pick("lava","chasm","anomaly") + switch(danger_type) + if("lava") + new /obj/effect/hallucination/danger/lava(danger_point, target) + if("chasm") + new /obj/effect/hallucination/danger/chasm(danger_point, target) + if("anomaly") + new /obj/effect/hallucination/danger/anomaly(danger_point, target) qdel(src) -/datum/hallucination/death - cost = 40 +/obj/effect/hallucination/danger + var/image/image -/datum/hallucination/death/New(mob/living/carbon/T, forced = TRUE) +/obj/effect/hallucination/danger/proc/show_icon() + return + +/obj/effect/hallucination/danger/proc/clear_icon() + if(image && target.client) + target.client.images -= image + +/obj/effect/hallucination/danger/Initialize(mapload, _target) + . = ..() + target = _target + show_icon() + QDEL_IN(src, rand(200, 450)) + +/obj/effect/hallucination/danger/Destroy() + clear_icon() + . = ..() + +/obj/effect/hallucination/danger/lava + name = "lava" + +/obj/effect/hallucination/danger/lava/show_icon() + image = image('icons/turf/floors/lava.dmi',src,"smooth",TURF_LAYER) + if(target.client) + target.client.images += image + +/obj/effect/hallucination/danger/lava/Crossed(atom/movable/AM) + if(AM == target) + target.adjustStaminaLoss(20) + new /datum/hallucination/fire(target) + +/obj/effect/hallucination/danger/chasm + name = "chasm" + +/obj/effect/hallucination/danger/chasm/show_icon() + image = image('icons/turf/floors/Chasms.dmi',src,"smooth",TURF_LAYER) + if(target.client) + target.client.images += image + +/obj/effect/hallucination/danger/chasm/Crossed(atom/movable/AM) + if(AM == target) + to_chat(target, "You fall into the chasm!") + target.Knockdown(40) + addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, target, "It's surprisingly shallow."), 15) + QDEL_IN(src, 30) + +/obj/effect/hallucination/danger/anomaly + name = "flux wave anomaly" + +/obj/effect/hallucination/danger/anomaly/Initialize() + . = ..() + START_PROCESSING(SSobj, src) + +/obj/effect/hallucination/danger/anomaly/process() + if(prob(70)) + step(src,pick(GLOB.alldirs)) + +/obj/effect/hallucination/danger/anomaly/Destroy() + STOP_PROCESSING(SSobj, src) + return ..() + +/obj/effect/hallucination/danger/anomaly/show_icon() + image = image('icons/effects/effects.dmi',src,"electricity2",OBJ_LAYER+0.01) + if(target.client) + target.client.images += image + +/obj/effect/hallucination/danger/anomaly/Crossed(atom/movable/AM) + if(AM == target) + new /datum/hallucination/shock(target) + +/datum/hallucination/death + +/datum/hallucination/death/New(mob/living/carbon/C, forced = TRUE) set waitfor = FALSE ..() target.set_screwyhud(SCREWYHUD_DEAD) @@ -1107,8 +1142,8 @@ GLOBAL_LIST_INIT(hallucinations_major, list( fakemob = target //ever been so lonely you had to haunt yourself? if(fakemob) sleep(rand(20, 50)) - to_chat(target, "DEAD: [fakemob.name] says, \"[pick("rip","hey [target.first_name()]","you too?","is the AI rogue?",\ - "i[prob(50)?" fucking":""] hate [pick("blood cult", "clock cult", "revenants", "abductors","double agents","viruses","badmins","you")]")]\"") + to_chat(target, "DEAD: [fakemob.name] says, \"[pick("rip","why did i just drop dead?","hey [target.first_name()]","git gud","you too?","is the AI rogue?",\ + "i[prob(50)?" fucking":""] hate [pick("blood cult", "clock cult", "revenants", "this round","this","myself","admins","you")]")]\"") sleep(rand(70,90)) target.set_screwyhud(SCREWYHUD_NONE) target.SetKnockdown(0) @@ -1116,38 +1151,93 @@ GLOBAL_LIST_INIT(hallucinations_major, list( qdel(src) /datum/hallucination/fire - cost = 25 + var/active = TRUE + var/stage = 0 + var/image/fire_overlay -/datum/hallucination/fire/New(mob/living/carbon/T, forced = TRUE) +/datum/hallucination/fire/New(mob/living/carbon/C, forced = TRUE) set waitfor = FALSE ..() - var/image/fire_overlay = image('icons/mob/OnFire.dmi', target, "Standing", ABOVE_MOB_LAYER) + target.fire_stacks = max(target.fire_stacks, 0.1) //Placebo flammability + fire_overlay = image('icons/mob/OnFire.dmi', target, "Standing", ABOVE_MOB_LAYER) if(target.client) target.client.images += fire_overlay to_chat(target, "You're set on fire!") target.throw_alert("fire", /obj/screen/alert/fire, override = TRUE) sleep(20) - target.throw_alert("temp", /obj/screen/alert/hot, 1, override = TRUE) - sleep(30) - target.clear_alert("temp", clear_override = TRUE) - target.throw_alert("temp", /obj/screen/alert/hot, 2, override = TRUE) - sleep(30) - target.clear_alert("temp", clear_override = TRUE) - target.throw_alert("temp", /obj/screen/alert/hot, 3, override = TRUE) + for(var/i in 1 to 3) + if(target.fire_stacks <= 0) + clear_fire() + return + stage++ + update_temp() + sleep(30) for(var/i in 1 to rand(5, 10)) + if(target.fire_stacks <= 0) + clear_fire() + return target.adjustStaminaLoss(15) - sleep(25) + sleep(20) + clear_fire() + +/datum/hallucination/fire/proc/update_temp() + if(stage <= 0) + target.clear_alert("temp", clear_override = TRUE) + else + target.clear_alert("temp", clear_override = TRUE) + target.throw_alert("temp", /obj/screen/alert/hot, stage, override = TRUE) + +/datum/hallucination/fire/proc/clear_fire() + if(!active) + return + active = FALSE target.clear_alert("fire", clear_override = TRUE) - target.clear_alert("temp", clear_override = TRUE) if(target.client) target.client.images -= fire_overlay QDEL_NULL(fire_overlay) + while(stage > 0) + stage-- + update_temp() + sleep(30) qdel(src) -/datum/hallucination/husks - cost = 20 +/datum/hallucination/shock + var/image/shock_image + var/image/electrocution_skeleton_anim -/datum/hallucination/husks/New(mob/living/carbon/T, forced = TRUE) +/datum/hallucination/shock/New(mob/living/carbon/C, forced = TRUE) + set waitfor = FALSE + ..() + shock_image = image(target, target, dir = target.dir) + shock_image.appearance_flags |= KEEP_APART + shock_image.color = rgb(0,0,0) + shock_image.override = TRUE + electrocution_skeleton_anim = image('icons/mob/human.dmi', target, icon_state = "electrocuted_base", layer=ABOVE_MOB_LAYER) + electrocution_skeleton_anim.appearance_flags |= RESET_COLOR|KEEP_APART + to_chat(target, "You feel a powerful shock course through your body!") + if(target.client) + target.client.images |= shock_image + target.client.images |= electrocution_skeleton_anim + addtimer(CALLBACK(src, .proc/reset_shock_animation), 40) + target.playsound_local(get_turf(src), "sparks", 100, 1) + target.staminaloss += 50 + target.Stun(40) + target.jitteriness += 1000 + target.do_jitter_animation(target.jitteriness) + addtimer(CALLBACK(src, .proc/shock_drop), 20) + +/datum/hallucination/shock/proc/reset_shock_animation() + if(target.client) + target.client.images.Remove(shock_image) + target.client.images.Remove(electrocution_skeleton_anim) + +/datum/hallucination/shock/proc/shock_drop() + target.jitteriness = max(target.jitteriness - 990, 10) //Still jittery, but vastly less + target.Knockdown(60) + +/datum/hallucination/husks + +/datum/hallucination/husks/New(mob/living/carbon/C, forced = TRUE) set waitfor = FALSE ..() if(!target.halbody) @@ -1178,7 +1268,6 @@ GLOBAL_LIST_INIT(hallucinations_major, list( //hallucination projectile code in code/modules/projectiles/projectile/special.dm /datum/hallucination/stray_bullet - cost = 15 /datum/hallucination/stray_bullet/New(mob/living/carbon/C, forced = TRUE) set waitfor = FALSE @@ -1194,29 +1283,4 @@ GLOBAL_LIST_INIT(hallucinations_major, list( H.hal_target = target H.preparePixelProjectile(target, start) H.fire() - qdel(src) - -//Reality Dissociation Syndrome hallucinations only trigger in special cases and have no cost -/datum/hallucination/rds - cost = 0 - -/datum/hallucination/rds/fourth_wall/New(mob/living/carbon/C, forced = TRUE) - ..() - to_chat(C, "[pick("Leave the server" , "Close the game window")] [pick("immediately", "right now")].") - -/datum/hallucination/rds/supermatter/New(mob/living/carbon/C, forced = TRUE) - ..() - SEND_SOUND(C, 'sound/magic/charge.ogg') - to_chat(C, "You feel reality distort for a moment...") - -/datum/hallucination/rds/narsie/New(mob/living/carbon/C, forced = TRUE) - C.playsound_local(C, 'sound/creatures/narsie_rises.ogg', 50, FALSE, pressure_affected = FALSE) - to_chat(C, "NAR-SIE HAS RISEN") - -/datum/hallucination/rds/ark/New(mob/living/carbon/C, forced = TRUE) - set waitfor = FALSE - ..() - C.playsound_local(C, 'sound/machines/clockcult/ark_deathrattle.ogg', 50, FALSE, pressure_affected = FALSE) - C.playsound_local(C, 'sound/effects/clockcult_gateway_disrupted.ogg', 50, FALSE, pressure_affected = FALSE) - sleep(27) - C.playsound_local(C, 'sound/effects/explosion_distant.ogg', 50, FALSE, pressure_affected = FALSE) + qdel(src) \ No newline at end of file diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index ee5dc7e328..8972ceba12 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -298,6 +298,29 @@ icon_state = "grappabottle" list_reagents = list("grappa" = 100) +/obj/item/reagent_containers/food/drinks/bottle/sake + name = "Ryo's traditional sake" + desc = "Sweet as can be, and burns like fire going down." + icon_state = "sakebottle" + list_reagents = list("sake" = 100) + +/obj/item/reagent_containers/food/drinks/bottle/sake/Initialize() + . = ..() + if(prob(10)) + name = "Fluffy Tail Sake" + desc += " On the bottle is a picture of a kitsune with nine touchable tails." + icon_state = "sakebottle_k" + else if(prob(10)) + name = "Inubashiri's Home Brew" + desc += " Awoo." + icon_state = "sakebottle_i" + +/obj/item/reagent_containers/food/drinks/bottle/fernet + name = "Fernet Bronca" + desc = "A bottle of pure Fernet Bronca, produced in Cordoba Space Station" + icon_state = "fernetbottle" + list_reagents = list("fernet" = 100) + //////////////////////////JUICES AND STUFF /////////////////////// /obj/item/reagent_containers/food/drinks/bottle/orangejuice @@ -344,6 +367,15 @@ list_reagents = list("limejuice" = 100) foodtype = FRUIT +/obj/item/reagent_containers/food/drinks/bottle/menthol + name = "menthol" + desc = "Tastes naturally minty, and imparts a very mild numbing sensation." + icon_state = "mentholbox" + item_state = "carton" + lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' + isGlass = FALSE + list_reagents = list("menthol" = 100) ////////////////////////// MOLOTOV /////////////////////// /obj/item/reagent_containers/food/drinks/bottle/molotov diff --git a/code/modules/food_and_drinks/food/customizables.dm b/code/modules/food_and_drinks/food/customizables.dm index 353bfc6538..3df4ca4bd0 100644 --- a/code/modules/food_and_drinks/food/customizables.dm +++ b/code/modules/food_and_drinks/food/customizables.dm @@ -158,7 +158,7 @@ desc = "A timeless classic." ingredients_placement = INGREDIENTS_STACKPLUSTOP icon = 'icons/obj/food/burgerbread.dmi' - icon_state = "bun" + icon_state = "custburg" foodtype = GRAIN diff --git a/code/modules/food_and_drinks/food/snacks_bread.dm b/code/modules/food_and_drinks/food/snacks_bread.dm index c29ed30b22..4282015eb5 100644 --- a/code/modules/food_and_drinks/food/snacks_bread.dm +++ b/code/modules/food_and_drinks/food/snacks_bread.dm @@ -13,7 +13,7 @@ custom_food_type = /obj/item/reagent_containers/food/snacks/customizable/sandwich filling_color = "#FFA500" list_reagents = list("nutriment" = 2) - slot_flags = SLOT_HEAD + slot_flags = ITEM_SLOT_HEAD customfoodfilling = 0 //to avoid infinite bread-ception foodtype = GRAIN @@ -192,6 +192,15 @@ overlays = fried.copy_overlays() icon_state = fried.icon_state desc = fried.desc + w_class = fried.w_class + slowdown = fried.slowdown + equip_delay_self = fried.equip_delay_self + equip_delay_other = fried.equip_delay_other + strip_delay = fried.strip_delay + species_exception = fried.species_exception + item_flags = fried.item_flags + obj_flags = fried.obj_flags + if(istype(fried, /obj/item/reagent_containers/food/snacks)) fried.reagents.trans_to(src, fried.reagents.total_volume) qdel(fried) diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm index 4645993758..ecb3cfb2ba 100644 --- a/code/modules/food_and_drinks/food/snacks_other.dm +++ b/code/modules/food_and_drinks/food/snacks_other.dm @@ -559,7 +559,7 @@ icon_state = "pineapple_slice" filling_color = "#F6CB0B" tastes = list("pineapple" = 1) - foodtype = FRUIT + foodtype = FRUIT | PINEAPPLE /obj/item/reagent_containers/food/snacks/tinychocolate name = "chocolate" diff --git a/code/modules/food_and_drinks/food/snacks_pizza.dm b/code/modules/food_and_drinks/food/snacks_pizza.dm index 2f49c00371..a94c1a25c7 100644 --- a/code/modules/food_and_drinks/food/snacks_pizza.dm +++ b/code/modules/food_and_drinks/food/snacks_pizza.dm @@ -146,7 +146,7 @@ slice_path = /obj/item/reagent_containers/food/snacks/pizzaslice/pineapple bonus_reagents = list("nutriment" = 6, "vitamin" = 6) tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "pineapple" = 2, "ham" = 2) - foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | FRUIT + foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | FRUIT | PINEAPPLE /obj/item/reagent_containers/food/snacks/pizzaslice/pineapple name = "\improper Hawaiian pizza slice" @@ -154,7 +154,7 @@ icon_state = "pineapplepizzaslice" filling_color = "#FF4500" tastes = list("crust" = 1, "tomato" = 1, "cheese" = 1, "pineapple" = 2, "ham" = 2) - foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | FRUIT + foodtype = GRAIN | VEGETABLES | DAIRY | MEAT | FRUIT | PINEAPPLE /obj/item/reagent_containers/food/snacks/pizzaslice/custom name = "pizza slice" diff --git a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm index 3e5554b783..ebea393397 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm @@ -41,7 +41,7 @@ God bless America. /obj/item/crowbar, /obj/item/wrench, /obj/item/wirecutters, - /obj/item/device/multitool, + /obj/item/multitool, /obj/item/weldingtool, /obj/item/reagent_containers/glass, /obj/item/reagent_containers/syringe, @@ -89,8 +89,6 @@ God bless America. return if(default_unfasten_wrench(user, I)) return - else if(exchange_parts(user, I)) - return else if(default_deconstruction_screwdriver(user, "fryer_off", "fryer_off" ,I)) //where's the open maint panel icon?! return else diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm index 5da7975a05..784cf22ccd 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm @@ -99,10 +99,7 @@ /obj/machinery/gibber/attackby(obj/item/P, mob/user, params) if(default_deconstruction_screwdriver(user, "grinder_open", "grinder", P)) return - - else if(exchange_parts(user, P)) - return - + else if(default_pry_open(P)) return diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm index 8330c9feed..7363f262b4 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm @@ -50,8 +50,6 @@ return if(default_unfasten_wrench(user, O)) return - if(exchange_parts(user, O)) - return if(default_deconstruction_crowbar(O)) return diff --git a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm index 23466305f1..397f5c7a6d 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm @@ -29,9 +29,6 @@ if(default_deconstruction_screwdriver(user, "grinder_open", "grinder", O)) return - if(exchange_parts(user, O)) - return - if(default_pry_open(O)) return diff --git a/code/modules/food_and_drinks/kitchen_machinery/processor.dm b/code/modules/food_and_drinks/kitchen_machinery/processor.dm index e07a957cfb..91a73eecec 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/processor.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/processor.dm @@ -46,9 +46,6 @@ if(default_deconstruction_screwdriver(user, "processor", "processor1", O)) return - if(exchange_parts(user, O)) - return - if(default_pry_open(O)) return diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index 1149d917dd..edc2305261 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -55,9 +55,6 @@ if(default_deconstruction_screwdriver(user, "smartfridge_open", "smartfridge", O)) return - if(exchange_parts(user, O)) - return - if(default_pry_open(O)) return @@ -302,8 +299,7 @@ qdel(S) return TRUE for(var/obj/item/stack/sheet/wetleather/WL in src) - var/obj/item/stack/sheet/leather/L = new(drop_location()) - L.amount = WL.amount + new /obj/item/stack/sheet/leather(drop_location(), WL.amount) qdel(WL) return TRUE return FALSE @@ -347,12 +343,12 @@ /obj/machinery/smartfridge/extract/accept_check(obj/item/O) if(istype(O, /obj/item/slime_extract)) return TRUE - if(istype(O, /obj/item/device/slime_scanner)) + if(istype(O, /obj/item/slime_scanner)) return TRUE return FALSE /obj/machinery/smartfridge/extract/preloaded - initial_contents = list(/obj/item/device/slime_scanner = 2) + initial_contents = list(/obj/item/slime_scanner = 2) // ----------------------------- // Chemistry Medical Smartfridge diff --git a/code/modules/food_and_drinks/recipes/drinks_recipes.dm b/code/modules/food_and_drinks/recipes/drinks_recipes.dm index 43b3ba07ab..0ee01ae9e2 100644 --- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm +++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm @@ -139,7 +139,7 @@ required_reagents = list("tequila" = 2, "kahlua" = 1) /datum/chemical_reaction/tequila_sunrise - name = "tequila Sunrise" + name = "Tequila Sunrise" id = "tequilasunrise" results = list("tequilasunrise" = 3) required_reagents = list("tequila" = 2, "orangejuice" = 1) @@ -623,4 +623,61 @@ id = "crevice_spike" results = list("crevice_spike" = 6) required_reagents = list("limejuice" = 2, "capsaicin" = 4) //2 powdered delta (sour), 4 flanergide (spicy) - mix_message = "The mixture stings your eyes as it settles." \ No newline at end of file + mix_message = "The mixture stings your eyes as it settles." + +/datum/chemical_reaction/sake + name = "sake" + id = "sake" + results = list("sake" = 10) + required_reagents = list("rice" = 10) + required_catalysts = list("enzyme" = 5) + mix_message = "The rice grains ferment into a clear, sweet-smelling liquid." + +/datum/chemical_reaction/alexander + name = "Alexander" + id = "alexander" + results = list("alexander" = 3) + required_reagents = list("cognac" = 1, "creme_de_cacao" = 1, "cream" = 1) + +/datum/chemical_reaction/sidecar + name = "Sidecar" + id = "sidecar" + results = list("sidecar" = 4) + required_reagents = list("cognac" = 2, "triple_sec" = 1, "lemonjuice" = 1) + +/datum/chemical_reaction/between_the_sheets + name = "Between the Sheets" + id = "between_the_sheets" + results = list("between_the_sheets" = 5) + required_reagents = list("rum" = 1, "sidecar" = 4) + +/datum/chemical_reaction/kamikaze + name = "Kamikaze" + id = "kamikaze" + results = list("kamikaze" = 3) + required_reagents = list("vodka" = 1, "triple_sec" = 1, "limejuice" = 1) + +/datum/chemical_reaction/mojito + name = "Mojito" + id = "mojito" + results = list("mojito" = 5) + required_reagents = list("rum" = 1, "sugar" = 1, "limejuice" = 1, "sodawater" = 1, "menthol" = 1) + +/datum/chemical_reaction/fernet_cola + name = "Fernet Cola" + id = "fernet_cola" + results = list("fernet_cola" = 2) + required_reagents = list("fernet" = 1, "cola" = 1) + + +/datum/chemical_reaction/fanciulli + name = "Fanciulli" + id = "fanciulli" + results = list("fanciulli" = 2) + required_reagents = list("manhattan" = 1, "fernet" = 1) + +/datum/chemical_reaction/branca_menta + name = "Branca Menta" + id = "branca_menta" + results = list("branca_menta" = 3) + required_reagents = list("fernet" = 1, "creme_de_menthe" = 1, "ice" = 1) diff --git a/code/modules/goonchat/browserOutput.dm b/code/modules/goonchat/browserOutput.dm index 401e55c9e5..be06f99d61 100644 --- a/code/modules/goonchat/browserOutput.dm +++ b/code/modules/goonchat/browserOutput.dm @@ -46,8 +46,7 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic if(!owner) return - var/datum/asset/stuff = get_asset_datum(/datum/asset/simple/goonchat) - stuff.register() + var/datum/asset/stuff = get_asset_datum(/datum/asset/group/goonchat) stuff.send(owner) owner << browse(file('code/modules/goonchat/browserassets/html/browserOutput.html'), "window=browseroutput") @@ -106,19 +105,10 @@ GLOBAL_DATUM_INIT(iconCache, /savefile, new("data/iconCache.sav")) //Cache of ic //do not convert to to_chat() SEND_TEXT(owner, "Failed to load fancy chat, reverting to old chat. Certain features won't work.") - pingLoop() - /datum/chatOutput/proc/showChat() winset(owner, "output", "is-visible=false") winset(owner, "browseroutput", "is-disabled=false;is-visible=true") -/datum/chatOutput/proc/pingLoop() - set waitfor = FALSE - - while (owner) - ehjax_send(data = owner.is_afk(29) ? "softPang" : "pang") // SoftPang isn't handled anywhere but it'll always reset the opts.lastPang. - sleep(30) - /datum/chatOutput/proc/ehjax_send(client/C = owner, window = "browseroutput", data) if(islist(data)) data = json_encode(data) diff --git a/code/modules/goonchat/browserassets/html/browserOutput.html b/code/modules/goonchat/browserassets/html/browserOutput.html index d40fd75f39..fe3be9486c 100644 --- a/code/modules/goonchat/browserassets/html/browserOutput.html +++ b/code/modules/goonchat/browserassets/html/browserOutput.html @@ -6,6 +6,7 @@ + diff --git a/code/modules/holiday/holidays.dm b/code/modules/holiday/holidays.dm index 4f740f4e61..701167c853 100644 --- a/code/modules/holiday/holidays.dm +++ b/code/modules/holiday/holidays.dm @@ -70,6 +70,7 @@ begin_month = DECEMBER end_day = 2 end_month = JANUARY + drone_hat = /obj/item/clothing/head/festive /datum/holiday/new_year/getStationPrefix() return pick("Party","New","Hangover","Resolution") @@ -78,6 +79,7 @@ name = "Groundhog Day" begin_day = 2 begin_month = FEBRUARY + drone_hat = /obj/item/clothing/head/helmet/space/chronos /datum/holiday/valentines name = VALENTINES @@ -92,6 +94,7 @@ name = "Birthday of Space Station 13" begin_day = 16 begin_month = FEBRUARY + drone_hat = /obj/item/clothing/head/festive /datum/holiday/birthday/greet() var/game_age = text2num(time2text(world.timeofday, "YY")) - 3 @@ -202,6 +205,7 @@ name = "UFO Day" begin_day = 2 begin_month = JULY + drone_hat = /obj/item/clothing/mask/facehugger/dead /datum/holiday/UFO/getStationPrefix() //Is such a thing even possible? return pick("Ayy","Truth","Tsoukalos","Mulder") //Yes it is! @@ -272,11 +276,13 @@ name = "Smiling Day" begin_day = 7 begin_month = OCTOBER + drone_hat = /obj/item/clothing/head/papersack/smiley /datum/holiday/boss name = "Boss' Day" begin_day = 16 begin_month = OCTOBER + drone_hat = /obj/item/clothing/head/that /datum/holiday/halloween name = HALLOWEEN @@ -305,6 +311,7 @@ name = "Flowers Day" begin_day = 19 begin_month = NOVEMBER + drone_hat = /obj/item/reagent_containers/food/snacks/grown/moonflower /datum/holiday/hello name = "Saying-'Hello' Day" @@ -312,7 +319,7 @@ begin_month = NOVEMBER /datum/holiday/hello/greet() - return "[pick(list("Aloha", "Bonjour", "Hello", "Hi", "Greetings", "Salutations", "Bienvenidos", "Hola", "Howdy"))]! " + ..() + return "[pick(list("Aloha", "Bonjour", "Hello", "Hi", "Greetings", "Salutations", "Bienvenidos", "Hola", "Howdy", "Ni hao", "Guten Tag", "Konnichiwa", "G'day cunt"))]! " + ..() /datum/holiday/human_rights name = "Human-Rights Day" @@ -323,6 +330,7 @@ name = "Monkey Day" begin_day = 14 begin_month = DECEMBER + drone_hat = /obj/item/clothing/mask/gas/monkeymask /datum/holiday/thanksgiving name = "Thanksgiving in the United States" diff --git a/code/modules/holodeck/turfs.dm b/code/modules/holodeck/turfs.dm index a9ec1ac9f1..878026f843 100644 --- a/code/modules/holodeck/turfs.dm +++ b/code/modules/holodeck/turfs.dm @@ -27,11 +27,13 @@ gender = PLURAL name = "lush grass" icon_state = "grass" + bullet_bounce_sound = null /turf/open/floor/holofloor/beach name = "sand" icon = 'icons/misc/beach.dmi' icon_state = "sand" + bullet_bounce_sound = null /turf/open/floor/holofloor/beach/coast_t name = "coastline" @@ -44,6 +46,7 @@ /turf/open/floor/holofloor/beach/water name = "water" icon_state = "water" + bullet_sizzle = TRUE /turf/open/floor/holofloor/asteroid name = "asteroid" @@ -76,6 +79,7 @@ name = "hyperspace" icon = 'icons/turf/space.dmi' icon_state = "speedspace_ns_1" + bullet_bounce_sound = null /turf/open/floor/holofloor/hyperspace/Initialize() icon_state = "speedspace_ns_[(x + 5*y + (y%2+1)*7)%15+1]" @@ -93,6 +97,7 @@ floor_tile = /obj/item/stack/tile/carpet smooth = SMOOTH_TRUE canSmoothWith = null + bullet_bounce_sound = null /turf/open/floor/holofloor/carpet/Initialize() . = ..() @@ -110,6 +115,8 @@ icon = 'icons/turf/snow.dmi' icon_state = "snow" slowdown = 2 + bullet_sizzle = TRUE + bullet_bounce_sound = null /turf/open/floor/holofloor/snow/cold initial_gas_mix = "nob=7500;TEMP=2.7" diff --git a/code/modules/hydroponics/beekeeping/beebox.dm b/code/modules/hydroponics/beekeeping/beebox.dm index 7075b8502e..5a35597a34 100644 --- a/code/modules/hydroponics/beekeeping/beebox.dm +++ b/code/modules/hydroponics/beekeeping/beebox.dm @@ -18,8 +18,11 @@ /mob/living/carbon/human/bee_friendly() if(dna && dna.species && dna.species.id == "pod") //bees pollinate plants, duh. return 1 - if((wear_suit && (wear_suit.flags_1 & THICKMATERIAL_1)) && (head && (head.flags_1 & THICKMATERIAL_1))) - return 1 + if (wear_suit && head && is_type_in_typecache(wear_suit, GLOB.typecache_clothing) && is_type_in_typecache(wear_suit, GLOB.typecache_clothing)) + var/obj/item/clothing/CS = wear_suit + var/obj/item/clothing/CH = head + if (CS.clothing_flags & CH.clothing_flags & THICKMATERIAL) + return 1 return 0 diff --git a/code/modules/hydroponics/beekeeping/beekeeper_suit.dm b/code/modules/hydroponics/beekeeping/beekeeper_suit.dm index b871951b0f..7fa1a0dd2c 100644 --- a/code/modules/hydroponics/beekeeping/beekeeper_suit.dm +++ b/code/modules/hydroponics/beekeeping/beekeeper_suit.dm @@ -4,7 +4,7 @@ desc = "Keeps the lil buzzing buggers out of your eyes." icon_state = "beekeeper" item_state = "beekeeper" - flags_1 = THICKMATERIAL_1 + clothing_flags = THICKMATERIAL /obj/item/clothing/suit/beekeeper_suit @@ -12,5 +12,4 @@ desc = "Keeps the lil buzzing buggers away from your squishy bits." icon_state = "beekeeper" item_state = "beekeeper" - flags_1 = THICKMATERIAL_1 - + clothing_flags = THICKMATERIAL diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index 65aaba95e7..6da117da88 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -83,9 +83,6 @@ update_icon() return - if(exchange_parts(user, O)) - return - if(default_deconstruction_crowbar(O)) return @@ -265,8 +262,7 @@ if(!check_cost(D.materials, amount)) return FALSE - var/obj/item/stack/product = new D.build_path(loc) - product.amount = amount + new D.build_path(drop_location(), amount) for(var/R in D.make_reagents) beaker.reagents.add_reagent(R, D.make_reagents[R]*amount) else diff --git a/code/modules/hydroponics/gene_modder.dm b/code/modules/hydroponics/gene_modder.dm index 6bb000ebe2..f0c7bba885 100644 --- a/code/modules/hydroponics/gene_modder.dm +++ b/code/modules/hydroponics/gene_modder.dm @@ -69,8 +69,6 @@ if(default_deconstruction_screwdriver(user, "dnamod", "dnamod", I)) update_icon() return - if(exchange_parts(user, I)) - return if(default_deconstruction_crowbar(I)) return if(iscyborg(user)) @@ -87,14 +85,15 @@ interact(user) return else if(istype(I, /obj/item/disk/plantgene)) - if(disk) - to_chat(user, "A data disk is already loaded into the machine!") - else - if(!user.transferItemToLoc(I, src)) - return - disk = I - to_chat(user, "You add [I] to the machine.") - interact(user) + if (operation) + to_chat(user, "Please complete current operation.") + return + eject_disk() + if(!user.transferItemToLoc(I, src)) + return + disk = I + to_chat(user, "You add [I] to the machine.") + interact(user) else ..() @@ -268,18 +267,13 @@ to_chat(usr, "You add [I] to the machine.") update_icon() else if(href_list["eject_disk"] && !operation) - if (disk) - disk.forceMove(drop_location()) - disk.verb_pickup() - disk = null - update_genes() - else - var/obj/item/I = usr.get_active_held_item() - if(istype(I, /obj/item/disk/plantgene)) - if(!usr.transferItemToLoc(I, src)) - return - disk = I - to_chat(usr, "You add [I] to the machine.") + var/obj/item/I = usr.get_active_held_item() + eject_disk() + if(istype(I, /obj/item/disk/plantgene)) + if(!usr.transferItemToLoc(I, src)) + return + disk = I + to_chat(usr, "You add [I] to the machine.") else if(href_list["op"] == "insert" && disk && disk.gene && seed) if(!operation) // Wait for confirmation operation = "insert" @@ -367,6 +361,16 @@ update_genes() update_icon() +/obj/machinery/plantgenes/proc/eject_disk() + if (disk && !operation) + if(Adjacent(usr) && !issilicon(usr)) + if (!usr.put_in_hands(disk)) + disk.forceMove(drop_location()) + else + disk.forceMove(drop_location()) + disk = null + update_genes() + /obj/machinery/plantgenes/proc/update_genes() core_genes = list() reagent_genes = list() diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index c102c03873..5b9c1f4e70 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -60,7 +60,7 @@ /obj/item/reagent_containers/food/snacks/grown/attackby(obj/item/O, mob/user, params) ..() - if (istype(O, /obj/item/device/plant_analyzer)) + if (istype(O, /obj/item/plant_analyzer)) var/msg = "*---------*\n This is \a [src].\n" if(seed) msg += seed.get_analyzer_text() diff --git a/code/modules/hydroponics/grown/ambrosia.dm b/code/modules/hydroponics/grown/ambrosia.dm index 05cd54a9f0..5883b4dd64 100644 --- a/code/modules/hydroponics/grown/ambrosia.dm +++ b/code/modules/hydroponics/grown/ambrosia.dm @@ -4,7 +4,7 @@ name = "ambrosia branch" desc = "This is a plant." icon_state = "ambrosiavulgaris" - slot_flags = SLOT_HEAD + slot_flags = ITEM_SLOT_HEAD filling_color = "#008000" bitesize_mod = 2 foodtype = VEGETABLES diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm index 18eae2f4fd..8455df887e 100644 --- a/code/modules/hydroponics/grown/flowers.dm +++ b/code/modules/hydroponics/grown/flowers.dm @@ -22,7 +22,7 @@ name = "poppy" desc = "Long-used as a symbol of rest, peace, and death." icon_state = "poppy" - slot_flags = SLOT_HEAD + slot_flags = ITEM_SLOT_HEAD filling_color = "#FF6347" bitesize_mod = 3 foodtype = VEGETABLES | GROSS @@ -86,7 +86,7 @@ name = "harebell" desc = "\"I'll sweeten thy sad grave: thou shalt not lack the flower that's like thy face, pale primrose, nor the azured hare-bell, like thy veins; no, nor the leaf of eglantine, whom not to slander, out-sweeten'd not thy breath.\"" icon_state = "harebell" - slot_flags = SLOT_HEAD + slot_flags = ITEM_SLOT_HEAD filling_color = "#E6E6FA" bitesize_mod = 3 @@ -118,7 +118,7 @@ righthand_file = 'icons/mob/inhands/weapons/plants_righthand.dmi' damtype = "fire" force = 0 - slot_flags = SLOT_HEAD + slot_flags = ITEM_SLOT_HEAD throwforce = 0 w_class = WEIGHT_CLASS_TINY throw_speed = 1 @@ -149,7 +149,7 @@ name = "moonflower" desc = "Store in a location at least 50 yards away from werewolves." icon_state = "moonflower" - slot_flags = SLOT_HEAD + slot_flags = ITEM_SLOT_HEAD filling_color = "#E6E6FA" bitesize_mod = 2 @@ -176,7 +176,7 @@ righthand_file = 'icons/mob/inhands/weapons/plants_righthand.dmi' damtype = "fire" force = 0 - slot_flags = SLOT_HEAD + slot_flags = ITEM_SLOT_HEAD throwforce = 0 w_class = WEIGHT_CLASS_TINY throw_speed = 1 diff --git a/code/modules/hydroponics/grown/grass_carpet.dm b/code/modules/hydroponics/grown/grass_carpet.dm index 630c072edb..8e55f8a15d 100644 --- a/code/modules/hydroponics/grown/grass_carpet.dm +++ b/code/modules/hydroponics/grown/grass_carpet.dm @@ -36,19 +36,8 @@ continue grassAmt += 1 + round(G.seed.potency * tile_coefficient) qdel(G) - var/obj/item/stack/tile/GT = new stacktype(user.loc) - while(grassAmt > GT.max_amount) - GT.amount = GT.max_amount - grassAmt -= GT.max_amount - GT = new stacktype(user.loc) - GT.amount = grassAmt - for(var/obj/item/stack/tile/T in user.loc) - if((T.type == stacktype) && (T.amount < T.max_amount)) - GT.merge(T) - if(GT.amount <= 0) - break + new stacktype(user.drop_location(), grassAmt) qdel(src) - return // Carpet /obj/item/seeds/grass/carpet diff --git a/code/modules/hydroponics/grown/pineapple.dm b/code/modules/hydroponics/grown/pineapple.dm index 443190942a..7b58c7553d 100644 --- a/code/modules/hydroponics/grown/pineapple.dm +++ b/code/modules/hydroponics/grown/pineapple.dm @@ -29,5 +29,5 @@ slices_num = 3 filling_color = "#F6CB0B" w_class = WEIGHT_CLASS_NORMAL - foodtype = FRUIT + foodtype = FRUIT | PINEAPPLE tastes = list("pineapple" = 1) diff --git a/code/modules/hydroponics/grown/replicapod.dm b/code/modules/hydroponics/grown/replicapod.dm index 9eaa8747b9..55c0da91f2 100644 --- a/code/modules/hydroponics/grown/replicapod.dm +++ b/code/modules/hydroponics/grown/replicapod.dm @@ -22,7 +22,7 @@ var/blood_type = null var/list/features = null var/factions = null - var/list/traits = null + var/list/quirks = null var/contains_sample = 0 /obj/item/seeds/replicapod/Initialize() @@ -42,7 +42,7 @@ blood_type = B.data["blood_type"] features = B.data["features"] factions = B.data["factions"] - factions = B.data["traits"] + factions = B.data["quirks"] contains_sample = TRUE visible_message("The [src] is injected with a fresh blood sample.") else @@ -114,7 +114,7 @@ podman.faction |= factions if(!features["mcolor"]) features["mcolor"] = "#59CE00" - for(var/V in traits) + for(var/V in quirks) new V(podman) podman.hardset_dna(null,null,podman.real_name,blood_type, new /datum/species/pod,features)//Discard SE's and UI's, podman cloning is inaccurate, and always make them a podman podman.set_cloned_appearance() diff --git a/code/modules/hydroponics/grown/towercap.dm b/code/modules/hydroponics/grown/towercap.dm index 73a2ba14f3..89206342b1 100644 --- a/code/modules/hydroponics/grown/towercap.dm +++ b/code/modules/hydroponics/grown/towercap.dm @@ -68,7 +68,7 @@ var/obj/item/reagent_containers/food/snacks/grown/leaf = W if(leaf.dry) user.show_message("You wrap \the [W] around the log, turning it into a torch!") - var/obj/item/device/flashlight/flare/torch/T = new /obj/item/device/flashlight/flare/torch(user.loc) + var/obj/item/flashlight/flare/torch/T = new /obj/item/flashlight/flare/torch(user.loc) usr.dropItemToGround(W) usr.put_in_active_hand(T) qdel(leaf) diff --git a/code/modules/hydroponics/growninedible.dm b/code/modules/hydroponics/growninedible.dm index 76e42c722b..5aeef19b1a 100644 --- a/code/modules/hydroponics/growninedible.dm +++ b/code/modules/hydroponics/growninedible.dm @@ -34,7 +34,7 @@ /obj/item/grown/attackby(obj/item/O, mob/user, params) ..() - if (istype(O, /obj/item/device/plant_analyzer)) + if (istype(O, /obj/item/plant_analyzer)) var/msg = "*---------*\n This is \a [src]\n" if(seed) msg += seed.get_analyzer_text() diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 1c3509fa4e..591fdfd535 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -1,5 +1,5 @@ // Plant analyzer -/obj/item/device/plant_analyzer +/obj/item/plant_analyzer name = "plant analyzer" desc = "A scanner used to evaluate a plant's various areas of growth." icon = 'icons/obj/device.dmi' @@ -8,7 +8,7 @@ lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' w_class = WEIGHT_CLASS_TINY - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT materials = list(MAT_METAL=30, MAT_GLASS=20) // ************************************* @@ -112,7 +112,7 @@ w_class = WEIGHT_CLASS_BULKY flags_1 = CONDUCT_1 armour_penetration = 20 - slot_flags = SLOT_BACK + slot_flags = ITEM_SLOT_BACK attack_verb = list("chopped", "sliced", "cut", "reaped") hitsound = 'sound/weapons/bladeslice.ogg' var/swiping = FALSE diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index 44ec4d56ee..fb6915aef9 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -56,25 +56,19 @@ return ..() /obj/machinery/hydroponics/constructable/attackby(obj/item/I, mob/user, params) - if(default_deconstruction_screwdriver(user, "hydrotray3", "hydrotray3", I)) - return - - if(exchange_parts(user, I)) - return - - if(default_pry_open(I)) - return - - if(default_unfasten_wrench(user, I)) - return - - if(istype(I, /obj/item/crowbar)) - if(using_irrigation) - to_chat(user, "Disconnect the hoses first!") - else if(default_deconstruction_crowbar(I, 1)) + if (user.a_intent != INTENT_HARM) + // handle opening the panel + if(default_deconstruction_screwdriver(user, icon_state, icon_state, I)) return - else - return ..() + + // handle deconstructing the machine, if permissible + if (I.tool_behaviour == TOOL_CROWBAR && using_irrigation) + to_chat(user, "Disconnect the hoses first!") + return + else if(default_deconstruction_crowbar(I)) + return + + return ..() /obj/machinery/hydroponics/proc/FindConnected() var/list/connected = list() @@ -761,7 +755,7 @@ else to_chat(user, "[src] already has seeds in it!") - else if(istype(O, /obj/item/device/plant_analyzer)) + else if(istype(O, /obj/item/plant_analyzer)) if(myseed) to_chat(user, "*** [myseed.plantname] ***" ) to_chat(user, "- Plant Age: [age]") @@ -790,31 +784,13 @@ for(var/obj/item/reagent_containers/food/snacks/grown/G in locate(user.x,user.y,user.z)) O.SendSignal(COMSIG_TRY_STORAGE_INSERT, G, user, TRUE) - else if(istype(O, /obj/item/wrench) && unwrenchable) - if(using_irrigation) - to_chat(user, "Disconnect the hoses first!") - return - - if(!anchored && !isinspace()) - user.visible_message("[user] begins to wrench [src] into place.", \ - "You begin to wrench [src] in place...") - if (O.use_tool(src, user, 20, volume=50)) - if(anchored) - return - anchored = TRUE - user.visible_message("[user] wrenches [src] into place.", \ - "You wrench [src] in place.") - else if(anchored) - user.visible_message("[user] begins to unwrench [src].", \ - "You begin to unwrench [src]...") - if (O.use_tool(src, user, 20, volume=50)) - if(!anchored) - return - anchored = FALSE - user.visible_message("[user] unwrenches [src].", \ - "You unwrench [src].") + else if(default_unfasten_wrench(user, O)) + return else if(istype(O, /obj/item/wirecutters) && unwrenchable) + if (!anchored) + to_chat(user, "Anchor the tray first!") + return using_irrigation = !using_irrigation O.play_tool_sound(src) user.visible_message("[user] [using_irrigation ? "" : "dis"]connects [src]'s irrigation hoses.", \ @@ -843,6 +819,17 @@ else return ..() +/obj/machinery/hydroponics/can_be_unfasten_wrench(mob/user, silent) + if (!unwrenchable) // case also covered by NODECONSTRUCT checks in default_unfasten_wrench + return CANT_UNFASTEN + + if (using_irrigation) + if (!silent) + to_chat(user, "Disconnect the hoses first!") + return FAILED_UNFASTEN + + return ..() + /obj/machinery/hydroponics/attack_hand(mob/user) . = ..() if(.) diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm index f188466434..3d0ffdfd53 100644 --- a/code/modules/hydroponics/seed_extractor.dm +++ b/code/modules/hydroponics/seed_extractor.dm @@ -62,9 +62,6 @@ if(default_deconstruction_screwdriver(user, "sextractor_open", "sextractor", O)) return - if(exchange_parts(user, O)) - return - if(default_pry_open(O)) return diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index f0c3e18cd9..4ba1aa0c33 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -311,7 +311,7 @@ return /obj/item/seeds/attackby(obj/item/O, mob/user, params) - if (istype(O, /obj/item/device/plant_analyzer)) + if (istype(O, /obj/item/plant_analyzer)) to_chat(user, "*---------*\n This is \a [src].") var/text = get_analyzer_text() if(text) diff --git a/code/modules/integrated_electronics/core/analyzer.dm b/code/modules/integrated_electronics/core/analyzer.dm index bd7804bf45..89b990f352 100644 --- a/code/modules/integrated_electronics/core/analyzer.dm +++ b/code/modules/integrated_electronics/core/analyzer.dm @@ -1,4 +1,4 @@ -/obj/item/device/integrated_electronics/analyzer +/obj/item/integrated_electronics/analyzer name = "circuit analyzer" desc = "This tool can scan an assembly and generate code necessary to recreate it in a circuit printer." icon = 'icons/obj/assemblies/electronic_tools.dmi' @@ -6,8 +6,8 @@ flags_1 = CONDUCT_1 w_class = WEIGHT_CLASS_SMALL -/obj/item/device/integrated_electronics/analyzer/afterattack(var/atom/A, var/mob/living/user) - if(istype(A, /obj/item/device/electronic_assembly)) +/obj/item/integrated_electronics/analyzer/afterattack(var/atom/A, var/mob/living/user) + if(istype(A, /obj/item/electronic_assembly)) var/saved = "[A.name] analyzed! On circuit printers with cloning enabled, you may use the code below to clone the circuit:

    [SScircuit.save_electronic_assembly(A)]" if(saved) to_chat(user, "You scan [A].") diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm index df1ea857ac..72c34b90cc 100644 --- a/code/modules/integrated_electronics/core/assemblies.dm +++ b/code/modules/integrated_electronics/core/assemblies.dm @@ -1,9 +1,9 @@ #define IC_MAX_SIZE_BASE 25 #define IC_COMPLEXITY_BASE 75 -/obj/item/device/electronic_assembly +/obj/item/electronic_assembly name = "electronic assembly" - obj_flags = CAN_BE_HIT + obj_flags = CAN_BE_HIT | UNIQUE_RENAME desc = "It's a case, for building small electronics with." w_class = WEIGHT_CLASS_SMALL icon = 'icons/obj/assemblies/electronic_setups.dmi' @@ -17,6 +17,7 @@ var/obj/item/stock_parts/cell/battery // Internal cell which most circuits need to work. var/cell_type = /obj/item/stock_parts/cell var/can_charge = TRUE //Can it be charged in a recharger? + var/can_fire_equipped = FALSE //Can it fire/throw weapons when the assembly is being held? var/charge_sections = 4 var/charge_tick = FALSE var/charge_delay = 4 @@ -54,17 +55,17 @@ COLOR_ASSEMBLY_PURPLE ) -/obj/item/device/electronic_assembly/examine(mob/user) +/obj/item/electronic_assembly/examine(mob/user) . = ..() if(can_anchor) to_chat(user, "The anchoring bolts [anchored ? "are" : "can be"] wrenched in place and the maintainence panel [opened ? "can be" : "is"] screwed in place.") else to_chat(user, "The maintainence panel [opened ? "can be" : "is"] screwed in place.") -/obj/item/device/electronic_assembly/proc/check_interactivity(mob/user) +/obj/item/electronic_assembly/proc/check_interactivity(mob/user) return user.canUseTopic(src, BE_CLOSE) -/obj/item/device/electronic_assembly/Collide(atom/AM) +/obj/item/electronic_assembly/Collide(atom/AM) collw = AM .=..() if((istype(collw, /obj/machinery/door/airlock) || istype(collw, /obj/machinery/door/window)) && (!isnull(access_card))) @@ -72,7 +73,7 @@ if(D.check_access(access_card)) D.open() -/obj/item/device/electronic_assembly/Initialize() +/obj/item/electronic_assembly/Initialize() .=..() START_PROCESSING(SScircuit, src) materials[MAT_METAL] = round((max_complexity + max_components) / 4) * SScircuit.cost_multiplier @@ -88,14 +89,14 @@ access_card = new /obj/item/card/id(src) -/obj/item/device/electronic_assembly/Destroy() +/obj/item/electronic_assembly/Destroy() STOP_PROCESSING(SScircuit, src) for(var/datum/atom_hud/data/diagnostic/diag_hud in GLOB.huds) diag_hud.remove_from_hud(src) QDEL_NULL(access_card) return ..() -/obj/item/device/electronic_assembly/process() +/obj/item/electronic_assembly/process() handle_idle_power() check_pulling() @@ -103,7 +104,7 @@ diag_hud_set_circuithealth() diag_hud_set_circuitcell() -/obj/item/device/electronic_assembly/proc/handle_idle_power() +/obj/item/electronic_assembly/proc/handle_idle_power() // First we generate power. for(var/obj/item/integrated_circuit/passive/power/P in assembly_components) P.make_energy() @@ -115,10 +116,10 @@ if(!draw_power(IC.power_draw_idle)) IC.power_fail() -/obj/item/device/electronic_assembly/interact(mob/user) +/obj/item/electronic_assembly/interact(mob/user) ui_interact(user) -/obj/item/device/electronic_assembly/ui_interact(mob/user) +/obj/item/electronic_assembly/ui_interact(mob/user) . = ..() if(!check_interactivity(user)) return @@ -176,7 +177,7 @@ HTML += "" user << browse(HTML, "window=assembly-[REF(src)];size=655x350;border=1;can_resize=1;can_close=1;can_minimize=1") -/obj/item/device/electronic_assembly/Topic(href, href_list) +/obj/item/electronic_assembly/Topic(href, href_list) if(..()) return 1 @@ -235,7 +236,7 @@ interact(usr) // To refresh the UI. -/obj/item/device/electronic_assembly/pickup(mob/living/user) +/obj/item/electronic_assembly/pickup(mob/living/user) . = ..() //update diagnostic hud when picked up, true is used to force the hud to be hidden diag_hud_set_circuithealth(TRUE) @@ -243,7 +244,7 @@ diag_hud_set_circuitstat(TRUE) diag_hud_set_circuittracking(TRUE) -/obj/item/device/electronic_assembly/dropped(mob/user) +/obj/item/electronic_assembly/dropped(mob/user) . = ..() //update diagnostic hud when dropped diag_hud_set_circuithealth() @@ -251,7 +252,7 @@ diag_hud_set_circuitstat() diag_hud_set_circuittracking() -/obj/item/device/electronic_assembly/proc/rename() +/obj/item/electronic_assembly/proc/rename() var/mob/M = usr if(!check_interactivity(M)) return @@ -263,10 +264,10 @@ to_chat(M, "The machine now has a label reading '[input]'.") name = input -/obj/item/device/electronic_assembly/proc/can_move() +/obj/item/electronic_assembly/proc/can_move() return FALSE -/obj/item/device/electronic_assembly/update_icon() +/obj/item/electronic_assembly/update_icon() if(opened) icon_state = initial(icon_state) + "-open" else @@ -278,7 +279,7 @@ detail_overlay.color = detail_color add_overlay(detail_overlay) -/obj/item/device/electronic_assembly/examine(mob/user) +/obj/item/electronic_assembly/examine(mob/user) ..() for(var/I in assembly_components) var/obj/item/integrated_circuit/IC = I @@ -286,14 +287,14 @@ if(opened) interact(user) -/obj/item/device/electronic_assembly/proc/return_total_complexity() +/obj/item/electronic_assembly/proc/return_total_complexity() . = 0 var/obj/item/integrated_circuit/part for(var/p in assembly_components) part = p . += part.complexity -/obj/item/device/electronic_assembly/proc/return_total_size() +/obj/item/electronic_assembly/proc/return_total_size() . = 0 var/obj/item/integrated_circuit/part for(var/p in assembly_components) @@ -301,7 +302,7 @@ . += part.size // Returns true if the circuit made it inside. -/obj/item/device/electronic_assembly/proc/try_add_component(obj/item/integrated_circuit/IC, mob/user) +/obj/item/electronic_assembly/proc/try_add_component(obj/item/integrated_circuit/IC, mob/user) if(!opened) to_chat(user, "\The [src]'s hatch is closed, you can't put anything inside.") return FALSE @@ -334,7 +335,7 @@ // Actually puts the circuit inside, doesn't perform any checks. -/obj/item/device/electronic_assembly/proc/add_component(obj/item/integrated_circuit/component) +/obj/item/electronic_assembly/proc/add_component(obj/item/integrated_circuit/component) component.forceMove(get_object()) component.assembly = src assembly_components |= component @@ -350,7 +351,7 @@ diag_hud_set_circuittracking() -/obj/item/device/electronic_assembly/proc/try_remove_component(obj/item/integrated_circuit/IC, mob/user, silent) +/obj/item/electronic_assembly/proc/try_remove_component(obj/item/integrated_circuit/IC, mob/user, silent) if(!opened) if(!silent) to_chat(user, "[src]'s hatch is closed, so you can't fiddle with the internal components.") @@ -370,7 +371,7 @@ return TRUE // Actually removes the component, doesn't perform any checks. -/obj/item/device/electronic_assembly/proc/remove_component(obj/item/integrated_circuit/component) +/obj/item/electronic_assembly/proc/remove_component(obj/item/integrated_circuit/component) component.disconnect_all() component.forceMove(drop_location()) component.assembly = null @@ -387,20 +388,20 @@ diag_hud_set_circuittracking() -/obj/item/device/electronic_assembly/afterattack(atom/target, mob/user, proximity) +/obj/item/electronic_assembly/afterattack(atom/target, mob/user, proximity) for(var/obj/item/integrated_circuit/input/S in assembly_components) if(S.sense(target,user,proximity)) visible_message(" [user] waves [src] around [target].") -/obj/item/device/electronic_assembly/screwdriver_act(mob/living/user, obj/item/I) +/obj/item/electronic_assembly/screwdriver_act(mob/living/user, obj/item/I) I.play_tool_sound(src) opened = !opened to_chat(user, "You [opened ? "open" : "close"] the maintenance hatch of [src].") update_icon() return TRUE -/obj/item/device/electronic_assembly/attackby(obj/item/I, mob/living/user) +/obj/item/electronic_assembly/attackby(obj/item/I, mob/living/user) if(can_anchor && default_unfasten_wrench(user, I, 20)) return if(istype(I, /obj/item/integrated_circuit)) @@ -413,7 +414,7 @@ for(var/obj/item/integrated_circuit/input/S in assembly_components) S.attackby_react(I,user,user.a_intent) return ..() - else if(istype(I, /obj/item/device/multitool) || istype(I, /obj/item/device/integrated_electronics/wirer) || istype(I, /obj/item/device/integrated_electronics/debugger)) + else if(istype(I, /obj/item/multitool) || istype(I, /obj/item/integrated_electronics/wirer) || istype(I, /obj/item/integrated_electronics/debugger)) if(opened) interact(user) return TRUE @@ -442,8 +443,8 @@ to_chat(user, "You slot \the [cell] inside \the [src]'s power supplier.") interact(user) return TRUE - else if(istype(I, /obj/item/device/integrated_electronics/detailer)) - var/obj/item/device/integrated_electronics/detailer/D = I + else if(istype(I, /obj/item/integrated_electronics/detailer)) + var/obj/item/integrated_electronics/detailer/D = I detail_color = D.detail_color update_icon() else @@ -452,7 +453,7 @@ return ..() -/obj/item/device/electronic_assembly/attack_self(mob/user) +/obj/item/electronic_assembly/attack_self(mob/user) if(!check_interactivity(user)) return if(opened) @@ -487,32 +488,32 @@ if(choice) choice.ask_for_input(user) -/obj/item/device/electronic_assembly/emp_act(severity) +/obj/item/electronic_assembly/emp_act(severity) ..() for(var/i in 1 to contents.len) var/atom/movable/AM = contents[i] AM.emp_act(severity) // Returns true if power was successfully drawn. -/obj/item/device/electronic_assembly/proc/draw_power(amount) +/obj/item/electronic_assembly/proc/draw_power(amount) if(battery && battery.use(amount * GLOB.CELLRATE)) return TRUE return FALSE // Ditto for giving. -/obj/item/device/electronic_assembly/proc/give_power(amount) +/obj/item/electronic_assembly/proc/give_power(amount) if(battery && battery.give(amount * GLOB.CELLRATE)) return TRUE return FALSE -/obj/item/device/electronic_assembly/Moved(oldLoc, dir) +/obj/item/electronic_assembly/Moved(oldLoc, dir) for(var/I in assembly_components) var/obj/item/integrated_circuit/IC = I IC.ext_moved(oldLoc, dir) if(light) //Update lighting objects (From light circuits). update_light() -/obj/item/device/electronic_assembly/stop_pulling() +/obj/item/electronic_assembly/stop_pulling() for(var/I in assembly_components) var/obj/item/integrated_circuit/IC = I IC.stop_pulling() @@ -521,7 +522,7 @@ // Returns the object that is supposed to be used in attack messages, location checks, etc. // Override in children for special behavior. -/obj/item/device/electronic_assembly/proc/get_object() +/obj/item/electronic_assembly/proc/get_object() return src // Returns the location to be used for dropping items. @@ -535,46 +536,46 @@ return acting_object.drop_location() -/obj/item/device/electronic_assembly/attack_tk(mob/user) +/obj/item/electronic_assembly/attack_tk(mob/user) if(anchored) return ..() -/obj/item/device/electronic_assembly/attack_hand(mob/user) +/obj/item/electronic_assembly/attack_hand(mob/user) if(anchored) attack_self(user) return ..() -/obj/item/device/electronic_assembly/default //The /default electronic_assemblys are to allow the introduction of the new naming scheme without breaking old saves. +/obj/item/electronic_assembly/default //The /default electronic_assemblys are to allow the introduction of the new naming scheme without breaking old saves. name = "type-a electronic assembly" -/obj/item/device/electronic_assembly/calc +/obj/item/electronic_assembly/calc name = "type-b electronic assembly" icon_state = "setup_small_calc" desc = "It's a case, for building small electronics with. This one resembles a pocket calculator." -/obj/item/device/electronic_assembly/clam +/obj/item/electronic_assembly/clam name = "type-c electronic assembly" icon_state = "setup_small_clam" desc = "It's a case, for building small electronics with. This one has a clamshell design." -/obj/item/device/electronic_assembly/simple +/obj/item/electronic_assembly/simple name = "type-d electronic assembly" icon_state = "setup_small_simple" desc = "It's a case, for building small electronics with. This one has a simple design." -/obj/item/device/electronic_assembly/hook +/obj/item/electronic_assembly/hook name = "type-e electronic assembly" icon_state = "setup_small_hook" desc = "It's a case, for building small electronics with. This one looks like it has a belt clip, but it's purely decorative." -/obj/item/device/electronic_assembly/pda +/obj/item/electronic_assembly/pda name = "type-f electronic assembly" icon_state = "setup_small_pda" desc = "It's a case, for building small electronics with. This one resembles a PDA." -/obj/item/device/electronic_assembly/medium +/obj/item/electronic_assembly/medium name = "electronic mechanism" icon_state = "setup_medium" desc = "It's a case, for building medium-sized electronics with." @@ -582,35 +583,39 @@ max_components = IC_MAX_SIZE_BASE * 2 max_complexity = IC_COMPLEXITY_BASE * 2 -/obj/item/device/electronic_assembly/medium/default +/obj/item/electronic_assembly/medium/default name = "type-a electronic mechanism" -/obj/item/device/electronic_assembly/medium/box +/obj/item/electronic_assembly/medium/box name = "type-b electronic mechanism" icon_state = "setup_medium_box" desc = "It's a case, for building medium-sized electronics with. This one has a boxy design." -/obj/item/device/electronic_assembly/medium/clam +/obj/item/electronic_assembly/medium/clam name = "type-c electronic mechanism" icon_state = "setup_medium_clam" desc = "It's a case, for building medium-sized electronics with. This one has a clamshell design." -/obj/item/device/electronic_assembly/medium/medical +/obj/item/electronic_assembly/medium/medical name = "type-d electronic mechanism" icon_state = "setup_medium_med" desc = "It's a case, for building medium-sized electronics with. This one resembles some type of medical apparatus." -/obj/item/device/electronic_assembly/medium/gun +/obj/item/electronic_assembly/medium/gun name = "type-e electronic mechanism" icon_state = "setup_medium_gun" - desc = "It's a case, for building medium-sized electronics with. This one resembles a gun, or some type of tool, if you're feeling optimistic." + item_state = "circuitgun" + desc = "It's a case, for building medium-sized electronics with. This one resembles a gun, or some type of tool, if you're feeling optimistic. It can fire guns and throw items while the user is holding it." + lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi' + righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi' + can_fire_equipped = TRUE -/obj/item/device/electronic_assembly/medium/radio +/obj/item/electronic_assembly/medium/radio name = "type-f electronic mechanism" icon_state = "setup_medium_radio" desc = "It's a case, for building medium-sized electronics with. This one resembles an old radio." -/obj/item/device/electronic_assembly/large +/obj/item/electronic_assembly/large name = "electronic machine" icon_state = "setup_large" desc = "It's a case, for building large electronics with." @@ -618,35 +623,35 @@ max_components = IC_MAX_SIZE_BASE * 4 max_complexity = IC_COMPLEXITY_BASE * 4 -/obj/item/device/electronic_assembly/large/default +/obj/item/electronic_assembly/large/default name = "type-a electronic machine" -/obj/item/device/electronic_assembly/large/scope +/obj/item/electronic_assembly/large/scope name = "type-b electronic machine" icon_state = "setup_large_scope" desc = "It's a case, for building large electronics with. This one resembles an oscilloscope." -/obj/item/device/electronic_assembly/large/terminal +/obj/item/electronic_assembly/large/terminal name = "type-c electronic machine" icon_state = "setup_large_terminal" desc = "It's a case, for building large electronics with. This one resembles a computer terminal." -/obj/item/device/electronic_assembly/large/arm +/obj/item/electronic_assembly/large/arm name = "type-d electronic machine" icon_state = "setup_large_arm" desc = "It's a case, for building large electronics with. This one resembles a robotic arm." -/obj/item/device/electronic_assembly/large/tall +/obj/item/electronic_assembly/large/tall name = "type-e electronic machine" icon_state = "setup_large_tall" desc = "It's a case, for building large electronics with. This one has a tall design." -/obj/item/device/electronic_assembly/large/industrial +/obj/item/electronic_assembly/large/industrial name = "type-f electronic machine" icon_state = "setup_large_industrial" desc = "It's a case, for building large electronics with. This one resembles some kind of industrial machinery." -/obj/item/device/electronic_assembly/drone +/obj/item/electronic_assembly/drone name = "electronic drone" icon_state = "setup_drone" desc = "It's a case, for building mobile electronics with." @@ -656,38 +661,38 @@ allowed_circuit_action_flags = IC_ACTION_MOVEMENT | IC_ACTION_COMBAT | IC_ACTION_LONG_RANGE can_anchor = FALSE -/obj/item/device/electronic_assembly/drone/can_move() +/obj/item/electronic_assembly/drone/can_move() return TRUE -/obj/item/device/electronic_assembly/drone/default +/obj/item/electronic_assembly/drone/default name = "type-a electronic drone" -/obj/item/device/electronic_assembly/drone/arms +/obj/item/electronic_assembly/drone/arms name = "type-b electronic drone" icon_state = "setup_drone_arms" desc = "It's a case, for building mobile electronics with. This one is armed and dangerous." -/obj/item/device/electronic_assembly/drone/secbot +/obj/item/electronic_assembly/drone/secbot name = "type-c electronic drone" icon_state = "setup_drone_secbot" desc = "It's a case, for building mobile electronics with. This one resembles a Securitron." -/obj/item/device/electronic_assembly/drone/medbot +/obj/item/electronic_assembly/drone/medbot name = "type-d electronic drone" icon_state = "setup_drone_medbot" desc = "It's a case, for building mobile electronics with. This one resembles a Medibot." -/obj/item/device/electronic_assembly/drone/genbot +/obj/item/electronic_assembly/drone/genbot name = "type-e electronic drone" icon_state = "setup_drone_genbot" desc = "It's a case, for building mobile electronics with. This one has a generic bot design." -/obj/item/device/electronic_assembly/drone/android +/obj/item/electronic_assembly/drone/android name = "type-f electronic drone" icon_state = "setup_drone_android" desc = "It's a case, for building mobile electronics with. This one has a hominoid design." -/obj/item/device/electronic_assembly/wallmount +/obj/item/electronic_assembly/wallmount name = "wall-mounted electronic assembly" icon_state = "setup_wallmount_medium" desc = "It's a case, for building medium-sized electronics with. It has a magnetized backing to allow it to stick to walls, but you'll still need to wrench the anchoring bolts in place to keep it on." @@ -695,7 +700,7 @@ max_components = IC_MAX_SIZE_BASE * 2 max_complexity = IC_COMPLEXITY_BASE * 2 -/obj/item/device/electronic_assembly/wallmount/heavy +/obj/item/electronic_assembly/wallmount/heavy name = "heavy wall-mounted electronic assembly" icon_state = "setup_wallmount_large" desc = "It's a case, for building large electronics with. It has a magnetized backing to allow it to stick to walls, but you'll still need to wrench the anchoring bolts in place to keep it on." @@ -703,7 +708,7 @@ max_components = IC_MAX_SIZE_BASE * 4 max_complexity = IC_COMPLEXITY_BASE * 4 -/obj/item/device/electronic_assembly/wallmount/light +/obj/item/electronic_assembly/wallmount/light name = "light wall-mounted electronic assembly" icon_state = "setup_wallmount_small" desc = "It's a case, for building small electronics with. It has a magnetized backing to allow it to stick to walls, but you'll still need to wrench the anchoring bolts in place to keep it on." @@ -711,7 +716,7 @@ max_components = IC_MAX_SIZE_BASE max_complexity = IC_COMPLEXITY_BASE -/obj/item/device/electronic_assembly/wallmount/proc/mount_assembly(turf/on_wall, mob/user) //Yeah, this is admittedly just an abridged and kitbashed version of the wallframe attach procs. +/obj/item/electronic_assembly/wallmount/proc/mount_assembly(turf/on_wall, mob/user) //Yeah, this is admittedly just an abridged and kitbashed version of the wallframe attach procs. if(get_dist(on_wall,user)>1) return var/ndir = get_dir(on_wall, user) diff --git a/code/modules/integrated_electronics/core/debugger.dm b/code/modules/integrated_electronics/core/debugger.dm index 666fcf00d6..6abaf316da 100644 --- a/code/modules/integrated_electronics/core/debugger.dm +++ b/code/modules/integrated_electronics/core/debugger.dm @@ -1,4 +1,4 @@ -/obj/item/device/integrated_electronics/debugger +/obj/item/integrated_electronics/debugger name = "circuit debugger" desc = "This small tool allows one working with custom machinery to directly set data to a specific pin, useful for writing \ settings to specific circuits, or for debugging purposes. It can also pulse activation pins." @@ -9,7 +9,7 @@ var/data_to_write = null var/accepting_refs = FALSE -/obj/item/device/integrated_electronics/debugger/attack_self(mob/user) +/obj/item/integrated_electronics/debugger/attack_self(mob/user) var/type_to_use = input("Please choose a type to use.","[src] type setting") as null|anything in list("string","number","ref", "null") if(!user.IsAdvancedToolUser()) return @@ -36,7 +36,7 @@ data_to_write = null to_chat(user, "You set \the [src]'s memory to absolutely nothing.") -/obj/item/device/integrated_electronics/debugger/afterattack(atom/target, mob/living/user, proximity) +/obj/item/integrated_electronics/debugger/afterattack(atom/target, mob/living/user, proximity) if(accepting_refs && proximity) data_to_write = WEAKREF(target) visible_message("[user] slides \a [src]'s over \the [target].") @@ -46,7 +46,7 @@ else return ..() -/obj/item/device/integrated_electronics/debugger/proc/write_data(var/datum/integrated_io/io, mob/user) +/obj/item/integrated_electronics/debugger/proc/write_data(var/datum/integrated_io/io, mob/user) if(io.io_type == DATA_CHANNEL) io.write_data_to_pin(data_to_write) var/data_to_show = data_to_write diff --git a/code/modules/integrated_electronics/core/detailer.dm b/code/modules/integrated_electronics/core/detailer.dm index ef2cd3a138..9a718df73e 100644 --- a/code/modules/integrated_electronics/core/detailer.dm +++ b/code/modules/integrated_electronics/core/detailer.dm @@ -1,4 +1,4 @@ -/obj/item/device/integrated_electronics/detailer +/obj/item/integrated_electronics/detailer name = "assembly detailer" desc = "A combination autopainter and flash anodizer designed to give electronic assemblies a colorful, wear-resistant finish." icon = 'icons/obj/assemblies/electronic_tools.dmi' @@ -27,17 +27,17 @@ "purple" = COLOR_ASSEMBLY_PURPLE ) -/obj/item/device/integrated_electronics/detailer/Initialize() +/obj/item/integrated_electronics/detailer/Initialize() .=..() update_icon() -/obj/item/device/integrated_electronics/detailer/update_icon() +/obj/item/integrated_electronics/detailer/update_icon() cut_overlays() var/mutable_appearance/detail_overlay = mutable_appearance('icons/obj/assemblies/electronic_tools.dmi', "detailer-color") detail_overlay.color = detail_color add_overlay(detail_overlay) -/obj/item/device/integrated_electronics/detailer/attack_self(mob/user) +/obj/item/integrated_electronics/detailer/attack_self(mob/user) var/color_choice = input(user, "Select color.", "Assembly Detailer") as null|anything in color_list if(!color_list[color_choice]) return diff --git a/code/modules/integrated_electronics/core/helpers.dm b/code/modules/integrated_electronics/core/helpers.dm index 4393170c01..5567683006 100644 --- a/code/modules/integrated_electronics/core/helpers.dm +++ b/code/modules/integrated_electronics/core/helpers.dm @@ -99,7 +99,7 @@ // Locates a pin in the assembly when given component number, pin type and pin number // Components list can be supplied from the outside, for use in savefiles -/obj/item/device/electronic_assembly/proc/get_pin_ref(component_number, pin_type, pin_number, list/components) +/obj/item/electronic_assembly/proc/get_pin_ref(component_number, pin_type, pin_number, list/components) if(!components) components = assembly_components @@ -112,7 +112,7 @@ // Same as get_pin_ref, but takes in a list of 3 parameters (same format as get_pin_parameters) // and performs extra sanity checks on parameters list and index numbers -/obj/item/device/electronic_assembly/proc/get_pin_ref_list(list/parameters, list/components) +/obj/item/electronic_assembly/proc/get_pin_ref_list(list/parameters, list/components) if(!components) components = assembly_components diff --git a/code/modules/integrated_electronics/core/integrated_circuit.dm b/code/modules/integrated_electronics/core/integrated_circuit.dm index 2f309956f9..60fe6fd9cd 100644 --- a/code/modules/integrated_electronics/core/integrated_circuit.dm +++ b/code/modules/integrated_electronics/core/integrated_circuit.dm @@ -5,7 +5,7 @@ icon_state = "template" w_class = WEIGHT_CLASS_TINY materials = list() // To be filled later - var/obj/item/device/electronic_assembly/assembly // Reference to the assembly holding this circuit, if any. + var/obj/item/electronic_assembly/assembly // Reference to the assembly holding this circuit, if any. var/extended_desc var/list/inputs = list() var/list/inputs_default = list()// Assoc list which will fill a pin with data upon creation. e.g. "2" = 0 will set input pin 2 to equal 0 instead of null. @@ -255,14 +255,14 @@ a creative player the means to solve many problems. Circuits are held inside an if(href_list["link"]) linked = locate(href_list["link"]) in pin.linked - if(istype(held_item, /obj/item/device/integrated_electronics) || istype(held_item, /obj/item/device/multitool)) + if(istype(held_item, /obj/item/integrated_electronics) || istype(held_item, /obj/item/multitool)) pin.handle_wire(linked, held_item, href_list["act"], usr) else to_chat(usr, "You can't do a whole lot without the proper tools.") if(href_list["scan"]) - if(istype(held_item, /obj/item/device/integrated_electronics/debugger)) - var/obj/item/device/integrated_electronics/debugger/D = held_item + if(istype(held_item, /obj/item/integrated_electronics/debugger)) + var/obj/item/integrated_electronics/debugger/D = held_item if(D.accepting_refs) D.afterattack(src, usr, TRUE) else diff --git a/code/modules/integrated_electronics/core/pins.dm b/code/modules/integrated_electronics/core/pins.dm index ca04cc2f3a..cc81c20081 100644 --- a/code/modules/integrated_electronics/core/pins.dm +++ b/code/modules/integrated_electronics/core/pins.dm @@ -105,8 +105,8 @@ D [1]/ || push_data() /datum/integrated_io/proc/handle_wire(datum/integrated_io/linked_pin, obj/item/tool, action, mob/living/user) - if(istype(tool, /obj/item/device/multitool)) - var/obj/item/device/multitool/multitool = tool + if(istype(tool, /obj/item/multitool)) + var/obj/item/multitool/multitool = tool switch(action) if("wire") multitool.wire(src, user) @@ -119,15 +119,15 @@ D [1]/ || ask_for_pin_data(user) return TRUE - else if(istype(tool, /obj/item/device/integrated_electronics/wirer)) - var/obj/item/device/integrated_electronics/wirer/wirer = tool + else if(istype(tool, /obj/item/integrated_electronics/wirer)) + var/obj/item/integrated_electronics/wirer/wirer = tool if(linked_pin) wirer.wire(linked_pin, user) else wirer.wire(src, user) - else if(istype(tool, /obj/item/device/integrated_electronics/debugger)) - var/obj/item/device/integrated_electronics/debugger/debugger = tool + else if(istype(tool, /obj/item/integrated_electronics/debugger)) + var/obj/item/integrated_electronics/debugger/debugger = tool debugger.write_data(src, user) return TRUE diff --git a/code/modules/integrated_electronics/core/printer.dm b/code/modules/integrated_electronics/core/printer.dm index a1de125d6a..b43ec3b34e 100644 --- a/code/modules/integrated_electronics/core/printer.dm +++ b/code/modules/integrated_electronics/core/printer.dm @@ -1,6 +1,6 @@ #define MAX_CIRCUIT_CLONE_TIME 3 MINUTES //circuit slow-clones can only take up this amount of time to complete -/obj/item/device/integrated_circuit_printer +/obj/item/integrated_circuit_printer name = "integrated circuit printer" desc = "A portable(ish) machine made to print tiny modular circuitry out of metal." icon = 'icons/obj/assemblies/electronic_tools.dmi' @@ -16,30 +16,30 @@ var/recycling = FALSE // If an assembly is being emptied into this printer var/list/program // Currently loaded save, in form of list -/obj/item/device/integrated_circuit_printer/proc/check_interactivity(mob/user) +/obj/item/integrated_circuit_printer/proc/check_interactivity(mob/user) return user.canUseTopic(src, BE_CLOSE) -/obj/item/device/integrated_circuit_printer/upgraded +/obj/item/integrated_circuit_printer/upgraded upgraded = TRUE can_clone = TRUE fast_clone = TRUE -/obj/item/device/integrated_circuit_printer/debug //translation: "integrated_circuit_printer/local_server" +/obj/item/integrated_circuit_printer/debug //translation: "integrated_circuit_printer/local_server" name = "debug circuit printer" debug = TRUE upgraded = TRUE can_clone = TRUE w_class = WEIGHT_CLASS_TINY -/obj/item/device/integrated_circuit_printer/Initialize() +/obj/item/integrated_circuit_printer/Initialize() . = ..() - AddComponent(/datum/component/material_container, list(MAT_METAL), MINERAL_MATERIAL_AMOUNT * 25, TRUE, list(/obj/item/stack, /obj/item/integrated_circuit, /obj/item/device/electronic_assembly)) + AddComponent(/datum/component/material_container, list(MAT_METAL), MINERAL_MATERIAL_AMOUNT * 25, TRUE, list(/obj/item/stack, /obj/item/integrated_circuit, /obj/item/electronic_assembly)) -/obj/item/device/integrated_circuit_printer/Destroy() +/obj/item/integrated_circuit_printer/Destroy() STOP_PROCESSING(SSprocessing, src) return ..() -/obj/item/device/integrated_circuit_printer/process() +/obj/item/integrated_circuit_printer/process() if(!cloning) STOP_PROCESSING(SSprocessing, src) if(world.time >= clone_countdown || fast_clone) @@ -50,7 +50,7 @@ cloning = FALSE STOP_PROCESSING(SSprocessing, src) -/obj/item/device/integrated_circuit_printer/attackby(obj/item/O, mob/user) +/obj/item/integrated_circuit_printer/attackby(obj/item/O, mob/user) if(istype(O, /obj/item/disk/integrated_circuit/upgrade/advanced)) if(upgraded) to_chat(user, "[src] already has this upgrade. ") @@ -69,8 +69,8 @@ interact(user) return TRUE - if(istype(O, /obj/item/device/electronic_assembly)) - var/obj/item/device/electronic_assembly/EA = O //microtransactions not included + if(istype(O, /obj/item/electronic_assembly)) + var/obj/item/electronic_assembly/EA = O //microtransactions not included if(EA.assembly_components.len) if(recycling) return @@ -109,10 +109,10 @@ return ..() -/obj/item/device/integrated_circuit_printer/attack_self(mob/user) +/obj/item/integrated_circuit_printer/attack_self(mob/user) interact(user) -/obj/item/device/integrated_circuit_printer/interact(mob/user) +/obj/item/integrated_circuit_printer/interact(mob/user) if(isnull(current_category)) current_category = SScircuit.circuit_fabricator_recipe_list[1] @@ -170,7 +170,7 @@ user << browse(HTML, "window=integrated_printer;size=600x500;border=1;can_resize=1;can_close=1;can_minimize=1") -/obj/item/device/integrated_circuit_printer/Topic(href, href_list) +/obj/item/integrated_circuit_printer/Topic(href, href_list) if(!check_interactivity(usr)) return if(..()) @@ -186,8 +186,8 @@ return TRUE var/cost = 400 - if(ispath(build_type, /obj/item/device/electronic_assembly)) - var/obj/item/device/electronic_assembly/E = SScircuit.cached_assemblies[build_type] + if(ispath(build_type, /obj/item/electronic_assembly)) + var/obj/item/electronic_assembly/E = SScircuit.cached_assemblies[build_type] cost = E.materials[MAT_METAL] else if(ispath(build_type, /obj/item/integrated_circuit)) var/obj/item/integrated_circuit/IC = SScircuit.cached_components[build_type] @@ -204,8 +204,8 @@ var/obj/item/built = new build_type(drop_location()) usr.put_in_hands(built) - if(istype(built, /obj/item/device/electronic_assembly)) - var/obj/item/device/electronic_assembly/E = built + if(istype(built, /obj/item/electronic_assembly)) + var/obj/item/electronic_assembly/E = built E.opened = TRUE E.update_icon() //reupdate diagnostic hud because it was put_in_hands() and not pickup()'ed diff --git a/code/modules/integrated_electronics/core/saved_circuits.dm b/code/modules/integrated_electronics/core/saved_circuits.dm index abb183dfaf..f58378cf6d 100644 --- a/code/modules/integrated_electronics/core/saved_circuits.dm +++ b/code/modules/integrated_electronics/core/saved_circuits.dm @@ -115,7 +115,7 @@ // Saves type and modified name (if any) to a list // The list is converted to JSON down the line. -/obj/item/device/electronic_assembly/proc/save() +/obj/item/electronic_assembly/proc/save() var/list/assembly_params = list() // Save initial name used for differentiating assemblies @@ -124,6 +124,10 @@ // Save modified name if(initial(name) != name) assembly_params["name"] = name + + // Save modified description + if(initial(desc) != desc) + assembly_params["desc"] = desc // Save panel status if(opened) @@ -138,19 +142,25 @@ // Verifies a list of assembly parameters // Returns null on success, error name on failure -/obj/item/device/electronic_assembly/proc/verify_save(list/assembly_params) +/obj/item/electronic_assembly/proc/verify_save(list/assembly_params) // Validate name and color if(assembly_params["name"] && !reject_bad_name(assembly_params["name"], TRUE)) return "Bad assembly name." + if(assembly_params["desc"] && !reject_bad_text(assembly_params["desc"])) + return "Bad assembly description." if(assembly_params["detail_color"] && !(assembly_params["detail_color"] in color_whitelist)) return "Bad assembly color." // Loads assembly parameters from a list // Doesn't verify any of the parameters it loads, this is the job of verify_save() -/obj/item/device/electronic_assembly/proc/load(list/assembly_params) +/obj/item/electronic_assembly/proc/load(list/assembly_params) // Load modified name, if any. if(assembly_params["name"]) name = assembly_params["name"] + + // Load modified description, if any. + if(assembly_params["desc"]) + desc = assembly_params["desc"] // Load panel status if(assembly_params["opened"]) @@ -165,7 +175,7 @@ // Attempts to save an assembly into a save file format. // Returns null if assembly is not complete enough to be saved. -/datum/controller/subsystem/processing/circuit/proc/save_electronic_assembly(obj/item/device/electronic_assembly/assembly) +/datum/controller/subsystem/processing/circuit/proc/save_electronic_assembly(obj/item/electronic_assembly/assembly) // No components? Don't even try to save it. if(!length(assembly.assembly_components)) return @@ -241,7 +251,7 @@ // Validate type, get a temporary component var/assembly_path = all_assemblies[assembly_params["type"]] - var/obj/item/device/electronic_assembly/assembly = cached_assemblies[assembly_path] + var/obj/item/electronic_assembly/assembly = cached_assemblies[assembly_path] if(!assembly) return "Invalid assembly type." @@ -335,8 +345,8 @@ // Block 1. Assembly. var/list/assembly_params = blocks["assembly"] - var/obj/item/device/electronic_assembly/assembly_path = all_assemblies[assembly_params["type"]] - var/obj/item/device/electronic_assembly/assembly = new assembly_path(null) + var/obj/item/electronic_assembly/assembly_path = all_assemblies[assembly_params["type"]] + var/obj/item/electronic_assembly/assembly = new assembly_path(null) assembly.load(assembly_params) diff --git a/code/modules/integrated_electronics/core/wirer.dm b/code/modules/integrated_electronics/core/wirer.dm index bd54a7d8e6..c68a61c175 100644 --- a/code/modules/integrated_electronics/core/wirer.dm +++ b/code/modules/integrated_electronics/core/wirer.dm @@ -3,7 +3,7 @@ #define UNWIRE "unwire" #define UNWIRING "unwiring" -/obj/item/device/integrated_electronics/wirer +/obj/item/integrated_electronics/wirer name = "circuit wirer" desc = "It's a small wiring tool, with a wire roll, electric soldering iron, wire cutter, and more in one package. \ The wires used are generally useful for small electronics, such as circuitboards and breadboards, as opposed to larger wires \ @@ -15,10 +15,10 @@ var/datum/integrated_io/selected_io = null var/mode = WIRE -/obj/item/device/integrated_electronics/wirer/update_icon() +/obj/item/integrated_electronics/wirer/update_icon() icon_state = "wirer-[mode]" -/obj/item/device/integrated_electronics/wirer/proc/wire(var/datum/integrated_io/io, mob/user) +/obj/item/integrated_electronics/wirer/proc/wire(var/datum/integrated_io/io, mob/user) if(!io.holder.assembly) to_chat(user, "\The [io.holder] needs to be secured inside an assembly first.") return @@ -76,7 +76,7 @@ [io.name] are not connected.
    ") return -/obj/item/device/integrated_electronics/wirer/attack_self(mob/user) +/obj/item/integrated_electronics/wirer/attack_self(mob/user) switch(mode) if(WIRE) mode = UNWIRE diff --git a/code/modules/integrated_electronics/passive/power.dm b/code/modules/integrated_electronics/passive/power.dm index 859c8910f3..244b4cb71b 100644 --- a/code/modules/integrated_electronics/passive/power.dm +++ b/code/modules/integrated_electronics/passive/power.dm @@ -73,7 +73,7 @@ // For really fat machines. /obj/item/integrated_circuit/passive/power/relay/large name = "large tesla power relay" - desc = "A seemingly enigmatic device which connects to nearby APCs wirelessly and draws power from them, now in industiral size!" + desc = "A seemingly enigmatic device which connects to nearby APCs wirelessly and draws power from them, now in industrial size!" w_class = WEIGHT_CLASS_BULKY extended_desc = "The siphon drains 2 kW of power from an APC in the same room as it as long as it has charge remaining. It will always drain \ from the 'equipment' power channel." @@ -89,7 +89,7 @@ desc = "Produces electricity from chemicals." icon_state = "chemical_cell" extended_desc = "This is effectively an internal beaker. It will consume and produce power from plasma, slime jelly, welding fuel, carbon,\ - ethanol, nutriments, and blood in order of decreasing efficiency. It will consume fuel only if the battery can take more energy." + ethanol, nutriment, and blood in order of decreasing efficiency. It will consume fuel only if the battery can take more energy." container_type = OPENCONTAINER complexity = 4 inputs = list() diff --git a/code/modules/integrated_electronics/subtypes/access.dm b/code/modules/integrated_electronics/subtypes/access.dm index 63b258d782..bf710be0e2 100644 --- a/code/modules/integrated_electronics/subtypes/access.dm +++ b/code/modules/integrated_electronics/subtypes/access.dm @@ -1,6 +1,6 @@ /obj/item/integrated_circuit/input/card_reader name = "card reader" - desc = "A circuit that can read registred name, assignment and a PassKey string from an ID card." + desc = "A circuit that can read the registred name, assignment, and PassKey string from an ID card." icon_state = "card_reader" complexity = 4 diff --git a/code/modules/integrated_electronics/subtypes/arithmetic.dm b/code/modules/integrated_electronics/subtypes/arithmetic.dm index 3a28c7b051..d4b854268b 100644 --- a/code/modules/integrated_electronics/subtypes/arithmetic.dm +++ b/code/modules/integrated_electronics/subtypes/arithmetic.dm @@ -94,7 +94,7 @@ /obj/item/integrated_circuit/arithmetic/division name = "division circuit" - desc = "This circuit can divide numbers, just don't think about trying to divide by zero!" + desc = "This circuit can divide numbers. Don't even think about trying to divide by zero!" extended_desc = "The order that the calculation goes is;
    \ result = ((((A / B) / C) / D) ... ) and so on, until all pins have been divided. \ Null pins, and pins containing 0, are ignored. Pin A must be a number or the circuit will not function." @@ -142,8 +142,8 @@ /obj/item/integrated_circuit/arithmetic/sign name = "sign circuit" - desc = "This will say if a number is positive, negative, or zero." - extended_desc = "Will output 1, -1, or 0, depending on if A is a postive number, a negative number, or zero, respectively." + desc = "This circuit can tell if a number is positive, negative, or zero." + extended_desc = "Will output 1, -1, or 0, depending on if A is a positive number, a negative number, or zero, respectively." icon_state = "sign" inputs = list("A" = IC_PINTYPE_NUMBER) spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH @@ -212,8 +212,8 @@ /obj/item/integrated_circuit/arithmetic/average name = "average circuit" - desc = "This circuit is of average quality, however it will compute the average for numbers you give it." - extended_desc = "Note that null pins are ignored, where as a pin containing 0 is included in the averaging calculation." + desc = "This circuit is of average quality. It will compute the average of the numbers you give it." + extended_desc = "Note that null pins are ignored, whereas a pin containing 0 is included in the averaging calculation." icon_state = "average" spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH @@ -240,7 +240,7 @@ icon_state = "pi" inputs = list() spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH - + /obj/item/integrated_circuit/arithmetic/pi/Initialize() . = ..() desc = "Not recommended for cooking. Outputs '[PI]' when it receives a pulse." @@ -276,7 +276,7 @@ /obj/item/integrated_circuit/arithmetic/square_root name = "square root circuit" - desc = "This outputs the square root of a number you input." + desc = "This outputs the square root of the number you input." icon_state = "square_root" inputs = list("A" = IC_PINTYPE_NUMBER) spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH diff --git a/code/modules/integrated_electronics/subtypes/converters.dm b/code/modules/integrated_electronics/subtypes/converters.dm index 5f7dd24ad9..9382f70066 100644 --- a/code/modules/integrated_electronics/subtypes/converters.dm +++ b/code/modules/integrated_electronics/subtypes/converters.dm @@ -69,7 +69,7 @@ /obj/item/integrated_circuit/converter/refcode name = "reference encoder" - desc = "This circuit can encode a reference into a string, which can then be read by an EPV2 circuit." + desc = "This circuit can encode a reference into a string, which can then be read by a reference decoder circuit." icon_state = "ref-string" inputs = list("input" = IC_PINTYPE_REF) outputs = list("output" = IC_PINTYPE_STRING) @@ -88,7 +88,7 @@ /obj/item/integrated_circuit/converter/refdecode name = "reference decoder" - desc = "This circuit can convert an encoded reference to actual reference." + desc = "This circuit can convert an encoded reference to an actual reference." icon_state = "ref-string" inputs = list("input" = IC_PINTYPE_STRING) outputs = list("output" = IC_PINTYPE_REF) @@ -142,21 +142,18 @@ /obj/item/integrated_circuit/converter/concatenator name = "concatenator" - desc = "This joins many strings together to get one big string." + desc = "This can join up to 8 strings together to get one big string." complexity = 4 - inputs = list( - "A" = IC_PINTYPE_STRING, - "B" = IC_PINTYPE_STRING, - "C" = IC_PINTYPE_STRING, - "D" = IC_PINTYPE_STRING, - "E" = IC_PINTYPE_STRING, - "F" = IC_PINTYPE_STRING, - "G" = IC_PINTYPE_STRING, - "H" = IC_PINTYPE_STRING - ) + inputs = list() outputs = list("result" = IC_PINTYPE_STRING) activators = list("concatenate" = IC_PINTYPE_PULSE_IN, "on concatenated" = IC_PINTYPE_PULSE_OUT) spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH + var/number_of_pins = 8 + +/obj/item/integrated_circuit/converter/concatenator/Initialize() + for(var/i = 1 to number_of_pins) + inputs["input [i]"] = IC_PINTYPE_STRING + . = ..() /obj/item/integrated_circuit/converter/concatenator/do_work() var/result = null @@ -169,10 +166,22 @@ push_data() activate_pin(2) +/obj/item/integrated_circuit/converter/concatenator/small + name = "small concatenator" + desc = "This can join up to 4 strings together to get one big string." + complexity = 2 + number_of_pins = 4 + +/obj/item/integrated_circuit/converter/concatenator/large + name = "large concatenator" + desc = "This can join up to 16 strings together to get one very big string." + complexity = 6 + number_of_pins = 16 + /obj/item/integrated_circuit/converter/separator name = "separator" - desc = "This splits as single string into two at the relative split point." - extended_desc = "This circuits splits a given string into two, based on the string, and the index value. \ + desc = "This splits a single string into two at the relative split point." + extended_desc = "This circuit splits a given string into two, based on the string and the index value. \ The index splits the string after the given index, including spaces. So 'a person' with an index of '3' \ will split into 'a p' and 'erson'." icon_state = "split" @@ -203,11 +212,38 @@ activate_pin(2) +/obj/item/integrated_circuit/converter/indexer + name = "indexer" + desc = "This circuit takes a string and an index value, then returns the character found at in the string at the given index." + extended_desc = "Make sure the index is not longer or shorter than the string length. If you don't, the circuit will return empty." + icon_state = "split" + complexity = 4 + inputs = list( + "string to index" = IC_PINTYPE_STRING, + "index" = IC_PINTYPE_NUMBER, + ) + outputs = list( + "found character" = IC_PINTYPE_STRING + ) + activators = list("index" = IC_PINTYPE_PULSE_IN, "on indexed" = IC_PINTYPE_PULSE_OUT) + spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH + +/obj/item/integrated_circuit/converter/indexer/do_work() + var/strin = get_pin_data(IC_INPUT, 1) + var/ind = get_pin_data(IC_INPUT, 2) + if(ind > 0 && ind <= length(strin)) + set_pin_data(IC_OUTPUT, 1, strin[ind]) + else + set_pin_data(IC_OUTPUT, 1, "") + push_data() + activate_pin(2) + /obj/item/integrated_circuit/converter/findstring name = "find text" - desc = "This gives position of sample in the string. Or returns 0." + desc = "This outputs the position of the sample in the string, or returns 0." extended_desc = "The first pin is the string to be examined. The second pin is the sample to be found. \ - For example, 'eat this burger' will give you position 4. This circuit isn't case sensitive." + For example, inputting 'my wife has caught on fire' with 'has' as the sample will give you position 9. \ + This circuit isn't case sensitive, and it does not ignore spaces." complexity = 4 inputs = list( "string" = IC_PINTYPE_STRING, @@ -216,14 +252,38 @@ outputs = list( "position" = IC_PINTYPE_NUMBER ) - activators = list("search" = IC_PINTYPE_PULSE_IN, "after search" = IC_PINTYPE_PULSE_OUT) + activators = list("search" = IC_PINTYPE_PULSE_IN, "after search" = IC_PINTYPE_PULSE_OUT, "found" = IC_PINTYPE_PULSE_OUT, "not found" = IC_PINTYPE_PULSE_OUT) spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH /obj/item/integrated_circuit/converter/findstring/do_work() + var/position = findtext(get_pin_data(IC_INPUT, 1),get_pin_data(IC_INPUT, 2)) - set_pin_data(IC_OUTPUT, 1, findtext(get_pin_data(IC_INPUT, 1),get_pin_data(IC_INPUT, 2)) ) + set_pin_data(IC_OUTPUT, 1, position) + push_data() + + activate_pin(2) + if(position) + activate_pin(3) + else + activate_pin(4) + +/obj/item/integrated_circuit/converter/stringlength + name = "get length" + desc = "This circuit will return the number of characters in a string." + complexity = 1 + inputs = list( + "string" = IC_PINTYPE_STRING + ) + outputs = list( + "length" = IC_PINTYPE_NUMBER + ) + activators = list("get length" = IC_PINTYPE_PULSE_IN, "on acquisition" = IC_PINTYPE_PULSE_OUT) + spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH + +/obj/item/integrated_circuit/converter/stringlength/do_work() + set_pin_data(IC_OUTPUT, 1, length(get_pin_data(IC_INPUT, 1))) push_data() activate_pin(2) @@ -232,7 +292,8 @@ name = "string exploder" desc = "This splits a single string into a list of strings." extended_desc = "This circuit splits a given string into a list of strings based on the string and given delimiter. \ - For example, 'eat this burger' will be converted to list('eat','this','burger')." + For example, 'eat this burger' will be converted to list('eat','this','burger'). Leave the delimiter null to get a list \ + of every individual character." icon_state = "split" complexity = 4 inputs = list( @@ -248,7 +309,10 @@ /obj/item/integrated_circuit/converter/exploders/do_work() var/strin = get_pin_data(IC_INPUT, 1) var/delimiter = get_pin_data(IC_INPUT, 2) - set_pin_data(IC_OUTPUT, 1, splittext(strin, delimiter)) + if(delimiter == null) + set_pin_data(IC_OUTPUT, 1, string2charlist(strin)) + else + set_pin_data(IC_OUTPUT, 1, splittext(strin, delimiter)) push_data() activate_pin(2) @@ -350,7 +414,7 @@ /obj/item/integrated_circuit/converter/rgb2hex name = "rgb to hexadecimal" desc = "This circuit can convert a RGB (Red, Green, Blue) color to a Hexadecimal RGB color." - extended_desc = "The first pin controls red amount, the second pin controls green amount, and the third controls blue amount. All go from 0-255." + extended_desc = "The first pin controls red amount, the second pin controls green amount, and the third controls blue amount. They all go from 0-255." icon_state = "rgb-hex" inputs = list( "red" = IC_PINTYPE_NUMBER, diff --git a/code/modules/integrated_electronics/subtypes/data_transfer.dm b/code/modules/integrated_electronics/subtypes/data_transfer.dm index 481360f6cf..682d982373 100644 --- a/code/modules/integrated_electronics/subtypes/data_transfer.dm +++ b/code/modules/integrated_electronics/subtypes/data_transfer.dm @@ -4,7 +4,7 @@ /obj/item/integrated_circuit/transfer/multiplexer name = "two multiplexer" - desc = "This is what those in the business tend to refer to as a 'mux' or data selector. It moves data from one of the selected inputs to the output." + desc = "This is what those in the business tend to refer to as a 'mux', or data selector. It moves data from one of the selected inputs to the output." extended_desc = "The first input pin is used to select which of the other input pins which has its data moved to the output. \ If the input selection is outside the valid range then no output is given." complexity = 2 @@ -147,7 +147,7 @@ /obj/item/integrated_circuit/transfer/wire_node name = "wire node" - desc = "Just wire node to make wiring more easy.Transfer pulse from in to out." + desc = "Just a wire node to make wiring easier. Transfers the pulse from in to out." icon_state = "wire_node" activators = list("pulse in" = IC_PINTYPE_PULSE_IN, "pulse out" = IC_PINTYPE_PULSE_OUT) spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm index a61dc18d34..70e3bed5a7 100644 --- a/code/modules/integrated_electronics/subtypes/input.dm +++ b/code/modules/integrated_electronics/subtypes/input.dm @@ -150,7 +150,7 @@ /obj/item/integrated_circuit/input/slime_scanner name = "slime_scanner" - desc = "A very small version of the xenobio analyser. This allows the machine to know every needed properties of slime." + desc = "A very small version of the xenobio analyser. This allows the machine to know every needed properties of slime. Output mutation list is non-associative." icon_state = "medscan_adv" complexity = 12 inputs = list("target" = IC_PINTYPE_REF) @@ -193,8 +193,8 @@ /obj/item/integrated_circuit/input/plant_scanner name = "integrated plant analyzer" - desc = "A very small version of the plant analyser. This allows the machine to know all valuable params of plants in trays. \ - It cannot scan seeds nor fruits, only plants." + desc = "A very small version of the plant analyser. This allows the machine to know all valuable parameters of plants in trays. \ + It can only scan plants, not seeds or fruits." icon_state = "medscan_adv" complexity = 12 inputs = list("target" = IC_PINTYPE_REF) @@ -259,9 +259,9 @@ /obj/item/integrated_circuit/input/gene_scanner name = "gene scanner" - desc = "This circuit will scan plant for traits and reagent genes." + desc = "This circuit will scan the target plant for traits and reagent genes. Output is non-associative." extended_desc = "This allows the machine to scan plants in trays for reagent and trait genes. \ - It cannot scan seeds nor fruits, only plants." + It can only scan plants, not seeds or fruits." inputs = list( "target" = IC_PINTYPE_REF ) @@ -358,9 +358,9 @@ /obj/item/integrated_circuit/input/turfpoint name = "Tile pointer" - desc = "This circuit will get tile ref with given absolute coordinates." + desc = "This circuit will get a tile ref with the provided absolute coordinates." extended_desc = "If the machine cannot see the target, it will not be able to calculate the correct direction.\ - This circuit works only inside an assembly." + This circuit only works while inside an assembly." icon_state = "numberpad" complexity = 5 inputs = list("X" = IC_PINTYPE_NUMBER,"Y" = IC_PINTYPE_NUMBER) @@ -461,7 +461,7 @@ /obj/item/integrated_circuit/input/adjacent_locator name = "adjacent locator" desc = "This is needed for certain devices that demand a reference for a target to act upon. This type only locates something \ - that is standing a meter away from the machine." + that is standing up to a meter away from the machine." extended_desc = "The first pin requires a ref to the kind of object that you want the locator to acquire. This means that it will \ give refs to nearby objects that are similar. If more than one valid object is found nearby, it will choose one of them at \ random." @@ -500,9 +500,9 @@ /obj/item/integrated_circuit/input/advanced_locator_list complexity = 6 name = "list advanced locator" - desc = "This is needed for certain devices that demand list of names for a targets to act upon. This type locates something \ - that is standing in given radius up to 8 meters" - extended_desc = "The first pin requires a list of kinds of objects that you want the locator to acquire. It will locate nearby objects by name and description, \ + desc = "This is needed for certain devices that demand list of names for a target to act upon. This type locates something \ + that is standing in given radius of up to 8 meters. Output is non-associative. Input will only consider keys if associative." + extended_desc = "The first pin requires a list of the kinds of objects that you want the locator to acquire. It will locate nearby objects by name and description, \ and will then provide a list of all found objects which are similar. \ The second pin is a radius." inputs = list("desired type ref" = IC_PINTYPE_LIST, "radius" = IC_PINTYPE_NUMBER) @@ -524,28 +524,38 @@ var/datum/integrated_io/I = inputs[1] var/datum/integrated_io/O = outputs[1] O.data = null - var/turf/T = get_turf(src) - var/list/nearby_things = view(radius,T) - var/list/valid_things = list() var/list/input_list = list() input_list = I.data - for(var/item in input_list) - if(!isnull(item) && !isnum(item)) - if(istext(item)) - for(var/atom/thing in nearby_things) - if(findtext(addtext(thing.name," ",thing.desc), item, 1, 0) ) + if(length(input_list)) //if there is no input don't do anything. + var/turf/T = get_turf(src) + var/list/nearby_things = view(radius,T) + var/list/valid_things = list() + for(var/item in input_list) + if(!isnull(item) && !isnum(item)) + if(istext(item)) + for(var/i in nearby_things) + var/atom/thing = i + if(ismob(thing) && !isliving(thing)) + continue + if(findtext(addtext(thing.name," ",thing.desc), item, 1, 0) ) + valid_things.Add(WEAKREF(thing)) + else + var/atom/A = item + var/desired_type = A.type + for(var/i in nearby_things) + var/atom/thing = i + if(thing.type != desired_type) + continue + if(ismob(thing) && !isliving(thing)) + continue valid_things.Add(WEAKREF(thing)) - else - var/atom/A = item - var/desired_type = A.type - for(var/atom/thing in nearby_things) - if(thing.type != desired_type) - continue - valid_things.Add(WEAKREF(thing)) - if(valid_things.len) - O.data = valid_things - O.push_data() - activate_pin(2) + if(valid_things.len) + O.data = valid_things + O.push_data() + activate_pin(2) + else + O.push_data() + activate_pin(3) else O.push_data() activate_pin(3) @@ -554,10 +564,10 @@ complexity = 6 name = "advanced locator" desc = "This is needed for certain devices that demand a reference for a target to act upon. This type locates something \ - that is standing in given radius up to 8 meters" - extended_desc = "The first pin requires a ref to a kind of object that you want the locator to acquire. This means that it will \ - give refs to nearby objects which are similar. If this pin is string, this locator will search for an \ - item by matching desired text in it's name and description. If more than one valid object is found nearby, it will choose one of them at \ + that is standing in given radius of up to 8 meters" + extended_desc = "The first pin requires a ref to the kind of object that you want the locator to acquire. This means that it will \ + give refs to nearby objects which are similar. If this pin is a string, the locator will search for an \ + item matching the desired text in its name and description. If more than one valid object is found nearby, it will choose one of them at \ random. The second pin is a radius." inputs = list("desired type" = IC_PINTYPE_ANY, "radius" = IC_PINTYPE_NUMBER) outputs = list("located ref" = IC_PINTYPE_REF) @@ -583,12 +593,18 @@ var/atom/A = I.data.resolve() var/desired_type = A.type if(desired_type) - for(var/atom/thing in nearby_things) + for(var/i in nearby_things) + var/atom/thing = i + if(ismob(thing) && !isliving(thing)) + continue if(thing.type == desired_type) valid_things.Add(thing) else if(istext(I.data)) var/DT = I.data - for(var/atom/thing in nearby_things) + for(var/i in nearby_things) + var/atom/thing = i + if(ismob(thing) && !isliving(thing)) + continue if(findtext(addtext(thing.name," ",thing.desc), DT, 1, 0) ) valid_things.Add(thing) if(valid_things.len) @@ -599,13 +615,9 @@ O.push_data() activate_pin(3) - - - - /obj/item/integrated_circuit/input/signaler name = "integrated signaler" - desc = "Signals from a signaler can be received with this, allowing for remote control. Additionally, it can send signals as well." + desc = "Signals from a signaler can be received with this, allowing for remote control. It can also send signals." extended_desc = "When a signal is received from another signaler, the 'on signal received' activator pin will be pulsed. \ The two input pins are to configure the integrated signaler's settings. Note that the frequency should not have a decimal in it, \ meaning the default frequency is expressed as 1457, not 145.7. To send a signal, pulse the 'send signal' activator pin." @@ -625,6 +637,7 @@ var/frequency = FREQ_SIGNALER var/code = DEFAULT_SIGNALER_CODE var/datum/radio_frequency/radio_connection + var/hearing_range = 1 /obj/item/integrated_circuit/input/signaler/Initialize() . = ..() @@ -678,18 +691,22 @@ return 0 activate_pin(3) - audible_message("[icon2html(src, hearers(src))] *beep* *beep*", null, 1) + audible_message("[icon2html(src, hearers(src))] *beep* *beep* *beep*", null, hearing_range) + for(var/CHM in get_hearers_in_view(hearing_range, src)) + if(ismob(CHM)) + var/mob/LM = CHM + LM.playsound_local(get_turf(src), 'sound/machines/triple_beep.ogg', ASSEMBLY_BEEP_VOLUME, TRUE) /obj/item/integrated_circuit/input/ntnet_packet name = "NTNet networking circuit" - desc = "Enables the sending and receiving of messages on NTNet via packet data protocol." - extended_desc = "Data can be send or received using the second pin on each side, \ + desc = "Enables the sending and receiving of messages over NTNet via packet data protocol." + extended_desc = "Data can be sent or received using the second pin on each side, \ with additonal data reserved for the third pin. When a message is received, the second activation pin \ - will pulse whatever's connected to it. Pulsing the first activation pin will send a message. Message \ - can be send to multiple recepients. Addresses must be separated with ; symbol." + will pulse whatever is connected to it. Pulsing the first activation pin will send a message. Messages \ + can be sent to multiple recepients. Addresses must be separated with a semicolon, like this: Address1;Address2;Etc." icon_state = "signal" - complexity = 4 - cooldown_per_use = 5 + complexity = 2 + cooldown_per_use = 1 inputs = list( "target NTNet addresses"= IC_PINTYPE_STRING, "data to send" = IC_PINTYPE_STRING, @@ -700,19 +717,20 @@ "address received" = IC_PINTYPE_STRING, "data received" = IC_PINTYPE_STRING, "secondary text received" = IC_PINTYPE_STRING, - "passkey" = IC_PINTYPE_STRING + "passkey" = IC_PINTYPE_STRING, + "is_broadcast" = IC_PINTYPE_BOOLEAN ) activators = list("send data" = IC_PINTYPE_PULSE_IN, "on data received" = IC_PINTYPE_PULSE_OUT) spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH action_flags = IC_ACTION_LONG_RANGE power_draw_per_use = 50 - var/datum/ntnet_connection/exonet = null var/address /obj/item/integrated_circuit/input/ntnet_packet/Initialize() . = ..() var/datum/component/ntnet_interface/net = LoadComponent(/datum/component/ntnet_interface) address = net.hardware_id + net.differentiate_broadcast = FALSE desc += "
    This circuit's NTNet hardware address is: [address]" /obj/item/integrated_circuit/input/ntnet_packet/do_work() @@ -723,25 +741,68 @@ var/datum/netdata/data = new data.recipient_ids = splittext(target_address, ";") - data.plaintext_data = message - data.plaintext_data_secondary = text - data.encrypted_passkey = key + data.standard_format_data(message, text, key) ntnet_send(data) /obj/item/integrated_circuit/input/ntnet_recieve(datum/netdata/data) set_pin_data(IC_OUTPUT, 1, data.sender_id) - set_pin_data(IC_OUTPUT, 2, data.plaintext_data) - set_pin_data(IC_OUTPUT, 3, data.plaintext_data_secondary) - set_pin_data(IC_OUTPUT, 4, data.encrypted_passkey) + set_pin_data(IC_OUTPUT, 2, data.data["data"]) + set_pin_data(IC_OUTPUT, 3, data.data["data_secondary"]) + set_pin_data(IC_OUTPUT, 4, data.data["encrypted_passkey"]) + set_pin_data(IC_OUTPUT, 5, data.broadcast) push_data() activate_pin(2) +/obj/item/integrated_circuit/input/ntnet_advanced + name = "Low level NTNet transreciever" + desc = "Enables the sending and receiving of messages over NTNet via packet data protocol. Allows advanced control of message contents and signalling. Must use associative lists. Outputs associative list. Has a slower transmission rate than normal NTNet circuits, due to increased data processing complexity." + extended_desc = "Data can be sent or received using the second pin on each side, \ + with additonal data reserved for the third pin. When a message is received, the second activation pin \ + will pulse whatever is connected to it. Pulsing the first activation pin will send a message. Messages \ + can be sent to multiple recepients. Addresses must be separated with a semicolon, like this: Address1;Address2;Etc." + icon_state = "signal" + complexity = 4 + cooldown_per_use = 10 + inputs = list( + "target NTNet addresses"= IC_PINTYPE_STRING, + "data" = IC_PINTYPE_LIST, + ) + outputs = list("recieved data" = IC_PINTYPE_LIST, "is_broadcast" = IC_PINTYPE_BOOLEAN) + activators = list("send data" = IC_PINTYPE_PULSE_IN, "on data received" = IC_PINTYPE_PULSE_OUT) + spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH + action_flags = IC_ACTION_LONG_RANGE + power_draw_per_use = 50 + var/address + +/obj/item/integrated_circuit/input/ntnet_advanced/Initialize() + . = ..() + var/datum/component/ntnet_interface/net = LoadComponent(/datum/component/ntnet_interface) + address = net.hardware_id + net.differentiate_broadcast = FALSE + desc += "
    This circuit's NTNet hardware address is: [address]" + +/obj/item/integrated_circuit/input/ntnet_advanced/do_work() + var/target_address = get_pin_data(IC_INPUT, 1) + var/list/message = get_pin_data(IC_INPUT, 2) + if(!islist(message)) + message = list() + var/datum/netdata/data = new + data.recipient_ids = splittext(target_address, ";") + data.data = message + ntnet_send(data) + +/obj/item/integrated_circuit/input/ntnet_advanced/ntnet_recieve(datum/netdata/data) + set_pin_data(IC_OUTPUT, 1, data.data) + set_pin_data(IC_OUTPUT, 2, data.broadcast) + push_data() + activate_pin(2) + //This circuit gives information on where the machine is. /obj/item/integrated_circuit/input/gps name = "global positioning system" desc = "This allows you to easily know the position of a machine containing this device." - extended_desc = "The GPS's coordinates it gives is absolute, not relative." + extended_desc = "The coordinates that the GPS outputs are absolute, not relative." icon_state = "gps" complexity = 4 inputs = list() @@ -768,7 +829,7 @@ /obj/item/integrated_circuit/input/microphone name = "microphone" - desc = "Useful for spying on people or for voice activated machines." + desc = "Useful for spying on people, or for voice-activated machines." extended_desc = "This will automatically translate most languages it hears to Galactic Common. \ The first activation pin is always pulsed when the circuit hears someone talk, while the second one \ is only triggered if it hears someone speaking a language other than Galactic Common." @@ -810,8 +871,8 @@ spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH power_draw_per_use = 120 -/obj/item/integrated_circuit/input/sensor/sense(var/atom/A,mob/user,prox) - if(!prox) +/obj/item/integrated_circuit/input/sensor/sense(atom/A, mob/user, prox) + if(!prox || !A || (ismob(A) && !isliving(A))) return FALSE if(!check_then_do_work()) return FALSE @@ -837,8 +898,8 @@ spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH power_draw_per_use = 120 -/obj/item/integrated_circuit/input/sensor/ranged/sense(var/atom/A,mob/user) - if(!user) +/obj/item/integrated_circuit/input/sensor/ranged/sense(atom/A, mob/user) + if(!user || !A || (ismob(A) && !isliving(A))) return FALSE if(user.client) if(!(A in view(user.client))) @@ -860,7 +921,7 @@ /obj/item/integrated_circuit/input/obj_scanner name = "scanner" desc = "Scans and obtains a reference for any objects you use on the assembly." - extended_desc = "If the 'put down' pin is set to true, the assembly will take the scanned object from your hands to it's location. \ + extended_desc = "If the 'put down' pin is set to true, the assembly will take the scanned object from your hands to its location. \ Useful for interaction with the grabber. The scanner only works using the help intent." icon_state = "recorder" complexity = 4 @@ -887,7 +948,7 @@ name = "internal battery monitor" desc = "This monitors the charge level of an internal battery." icon_state = "internalbm" - extended_desc = "This circuit will give you values of charge, max charge, and percentage of the internal battery on demand." + extended_desc = "This circuit will give you the values of charge, max charge, and the current percentage of the internal battery on demand." w_class = WEIGHT_CLASS_TINY complexity = 1 inputs = list() @@ -920,9 +981,9 @@ /obj/item/integrated_circuit/input/externalbm name = "external battery monitor" - desc = "This can help to watch battery state of any device in view" + desc = "This can read the battery state of any device in view." icon_state = "externalbm" - extended_desc = "This circuit will give you values of charge, max charge, and percentage of any device or battery in view" + extended_desc = "This circuit will give you the charge, max charge, and the current percentage values of any device or battery in view." w_class = WEIGHT_CLASS_TINY complexity = 2 inputs = list("target" = IC_PINTYPE_REF) @@ -955,7 +1016,7 @@ /obj/item/integrated_circuit/input/ntnetsc name = "NTNet scanner" - desc = "This can return NTNet IDs of a component inside the given object, if there are any." + desc = "This can return the NTNet IDs of a component inside the given object, if there are any." icon_state = "signalsc" w_class = WEIGHT_CLASS_TINY complexity = 2 diff --git a/code/modules/integrated_electronics/subtypes/lists.dm b/code/modules/integrated_electronics/subtypes/lists.dm index c9744cc41c..a5c482c7de 100644 --- a/code/modules/integrated_electronics/subtypes/lists.dm +++ b/code/modules/integrated_electronics/subtypes/lists.dm @@ -17,8 +17,8 @@ /obj/item/integrated_circuit/lists/pick name = "pick circuit" - desc = "This circuit will pick a random element from the input list, and output said element." - extended_desc = "Input list is unmodified." + desc = "This circuit will pick a random element from the input list, and output that element." + extended_desc = "The input list is not modified." icon_state = "addition" outputs = list( "result" = IC_PINTYPE_ANY @@ -70,7 +70,7 @@ /obj/item/integrated_circuit/lists/search name = "search circuit" desc = "This circuit will get the index location of the desired element in a list." - extended_desc = "Search will start at 1 position and will return first matching position." + extended_desc = "Search will start at position 1 and will return the first matching position." inputs = list( "list" = IC_PINTYPE_LIST, "item" = IC_PINTYPE_ANY @@ -104,8 +104,8 @@ /obj/item/integrated_circuit/lists/filter name = "filter circuit" desc = "This circuit will search through a list for anything matching the desired element(s) and outputs two lists: \ - one containing just matching elements, and one with matching elements filtered out." - extended_desc = "Sample accepts lists. If no match is found, original list is sent to output 1." + one containing only the matching elements, and one with the matching elements filtered out." + extended_desc = "Sample accepts lists. If no match is found, the original list is sent to output 1." inputs = list( "input list" = IC_PINTYPE_LIST, "sample" = IC_PINTYPE_ANY @@ -168,7 +168,7 @@ /obj/item/integrated_circuit/lists/listset name = "list set circuit" desc = "This circuit will remove any duplicate entries from a list." - extended_desc = "If there are no duplicate entries, result list will be unchanged." + extended_desc = "If there are no duplicate entries, the output list will be unchanged." inputs = list( "list" = IC_PINTYPE_LIST ) @@ -189,7 +189,7 @@ /obj/item/integrated_circuit/lists/at name = "at circuit" desc = "This circuit will pick an element from a list by the input index." - extended_desc = "If there is no element with such index, result will be null." + extended_desc = "If there is no element at the given index, the result will be null." inputs = list( "list" = IC_PINTYPE_LIST, "index" = IC_PINTYPE_INDEX @@ -225,7 +225,7 @@ /obj/item/integrated_circuit/lists/delete name = "delete circuit" desc = "This circuit will remove an element from a list by the index." - extended_desc = "If there is no element with such index, result list will be unchanged." + extended_desc = "If there is no element at the given index, the result list will be unchanged." inputs = list( "list" = IC_PINTYPE_LIST, "index" = IC_PINTYPE_INDEX @@ -254,7 +254,7 @@ /obj/item/integrated_circuit/lists/write name = "write circuit" desc = "This circuit will write an element to a list at the given index location." - extended_desc = "If there is no element with such index, it will give the same list as before." + extended_desc = "If there is no element at the given index, it will output the same list as before." inputs = list( "list" = IC_PINTYPE_LIST, "index" = IC_PINTYPE_INDEX, @@ -313,7 +313,7 @@ /obj/item/integrated_circuit/lists/jointext name = "join text circuit" - desc = "This circuit will combine two lists into one and output it as a string." + desc = "This circuit will combine two lists into one, and output it as a string." extended_desc = "Default settings will encode the entire list into a string." icon_state = "join" inputs = list( @@ -351,7 +351,7 @@ /obj/item/integrated_circuit/lists/constructor name = "large list constructor" - desc = "This circuit will build a list out of sixteen input values." + desc = "This circuit will build a list out of up to sixteen input values." icon_state = "constr8" inputs = list() outputs = list( @@ -383,20 +383,20 @@ /obj/item/integrated_circuit/lists/constructor/small name = "list constructor" - desc = "This circuit will build a list out of four input values." + desc = "This circuit will build a list out of up to four input values." icon_state = "constr" number_of_pins = 4 /obj/item/integrated_circuit/lists/constructor/medium name = "medium list constructor" - desc = "This circuit will build a list out of eight input values." + desc = "This circuit will build a list out of up to eight input values." icon_state = "constr8" number_of_pins = 8 /obj/item/integrated_circuit/lists/deconstructor name = "large list deconstructor" - desc = "This circuit will write first sixteen entries of input list, starting with index, into the output values." + desc = "This circuit will write the first sixteen entries of its input list, starting with the index, into the output values." icon_state = "deconstr8" inputs = list( "input" = IC_PINTYPE_LIST, @@ -428,11 +428,11 @@ /obj/item/integrated_circuit/lists/deconstructor/small name = "list deconstructor" - desc = "This circuit will write first four entries of input list, starting with index, into the output values." + desc = "This circuit will write the first four entries of its input list, starting with the index, into the output values." icon_state = "deconstr" number_of_pins = 4 /obj/item/integrated_circuit/lists/deconstructor/medium name = "medium list deconstructor" - desc = "This circuit will write first eight entries of input list, starting with index, into the output values." + desc = "This circuit will write the first eight entries of its input list, starting with the index, into the output values." number_of_pins = 8 diff --git a/code/modules/integrated_electronics/subtypes/logic.dm b/code/modules/integrated_electronics/subtypes/logic.dm index 41917f2a44..e9dca8c330 100644 --- a/code/modules/integrated_electronics/subtypes/logic.dm +++ b/code/modules/integrated_electronics/subtypes/logic.dm @@ -89,7 +89,7 @@ /obj/item/integrated_circuit/logic/binary/rslatch name = "RS latch" - desc = "This gate is a synchronized RS latch. If both R and S are true, state will not change." + desc = "This gate is a synchronized RS latch. If both R and S are true, its state will not change." icon_state = "sr_nor" inputs = list("S" = IC_PINTYPE_ANY,"R" = IC_PINTYPE_ANY) outputs = list("Q" = IC_PINTYPE_BOOLEAN,"!Q" = IC_PINTYPE_BOOLEAN) diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm index 7e45902fe1..f4cc363afb 100644 --- a/code/modules/integrated_electronics/subtypes/manipulation.dm +++ b/code/modules/integrated_electronics/subtypes/manipulation.dm @@ -6,8 +6,9 @@ desc = "This somewhat complicated system allows one to slot in a gun, direct it towards a position, and remotely fire it." extended_desc = "The firing mechanism can slot in any energy weapon. \ The first and second inputs need to be numbers which correspond to coordinates for the gun to fire at relative to the machine itself. \ - The 'fire' activator will cause the mechanism to attempt to fire the weapon at the coordinates, if possible. Mode is switch between \ - lethal (TRUE) or stun (FALSE) modes. It uses the internal battery of the weapon." + The 'fire' activator will cause the mechanism to attempt to fire the weapon at the coordinates, if possible. Mode will switch between \ + lethal (TRUE) or stun (FALSE) modes. It uses the internal battery of the weapon itself, not the assembly. If you wish to fire the gun while the circuit is in \ + hand, you will need to use an assembly that is a gun." complexity = 20 w_class = WEIGHT_CLASS_SMALL size = 3 @@ -45,7 +46,6 @@ if(installed_gun) to_chat(user, "There's already a weapon installed.") return - user.transferItemToLoc(gun,src) installed_gun = gun var/list/gun_properties = gun.get_turret_properties() @@ -79,7 +79,9 @@ to_chat(user, "There's no weapon to remove from the mechanism.") /obj/item/integrated_circuit/manipulation/weapon_firing/do_work() - if(!installed_gun) + if(!installed_gun || !installed_gun.handle_pins()) + return + if(!isturf(assembly.loc) && !(assembly.can_fire_equipped && ishuman(assembly.loc))) return set_pin_data(IC_OUTPUT, 1, WEAKREF(installed_gun)) push_data() @@ -98,6 +100,7 @@ var/target_x = CLAMP(T.x + xo.data, 0, world.maxx) var/target_y = CLAMP(T.y + yo.data, 0, world.maxy) + assembly.visible_message("[assembly] fires [installed_gun]!") shootAt(locate(target_x, target_y, T.z)) /obj/item/integrated_circuit/manipulation/weapon_firing/proc/shootAt(turf/target) @@ -133,8 +136,8 @@ desc = "This allows a machine to move in a given direction." icon_state = "locomotion" extended_desc = "The circuit accepts a 'dir' number as a direction to move towards.
    \ - Pulsing the 'step towards dir' activator pin will cause the machine to move a meter in that direction, assuming it is not \ - being held, or anchored in some way. It should be noted that the ability to move is dependant on the type of assembly that this circuit inhabits." + Pulsing the 'step towards dir' activator pin will cause the machine to move one step in that direction, assuming it is not \ + being held, or anchored in some way. It should be noted that the ability to move is dependant on the type of assembly that this circuit inhabits; only drone assemblies can move." w_class = WEIGHT_CLASS_SMALL complexity = 10 cooldown_per_use = 1 @@ -168,9 +171,9 @@ /obj/item/integrated_circuit/manipulation/grenade name = "grenade primer" desc = "This circuit comes with the ability to attach most types of grenades and prime them at will." - extended_desc = "Time between priming and detonation is limited to between 1 to 12 seconds but is optional. \ - If unset, not a number, or a number less than 1 then the grenade's built-in timing will be used. \ - Beware: Once primed there is no aborting the process!" + extended_desc = "The time between priming and detonation is limited to between 1 to 12 seconds, but is optional. \ + If the input is not set, not a number, or a number less than 1, the grenade's built-in timing will be used. \ + Beware: Once primed, there is no aborting the process!" icon_state = "grenade" complexity = 30 cooldown_per_use = 10 @@ -242,9 +245,9 @@ name = "plant manipulation module" desc = "Used to uproot weeds and harvest/plant trays." icon_state = "plant_m" - extended_desc = "The circuit accepts a reference to a hydroponic tray or an item in an adjacent tile. \ - Mode input(0-harvest, 1-uproot weeds, 2-uproot plant, 3-plant seed) determines action. \ - Harvesting returns a list of the harvested plants." + extended_desc = "The circuit accepts a reference to a hydroponic tray or an item on an adjacent tile. \ + Mode input (0-harvest, 1-uproot weeds, 2-uproot plant, 3-plant seed) determines action. \ + Harvesting outputs a list of the harvested plants." w_class = WEIGHT_CLASS_TINY complexity = 10 inputs = list("tray" = IC_PINTYPE_REF,"mode" = IC_PINTYPE_NUMBER,"item" = IC_PINTYPE_REF) @@ -344,9 +347,9 @@ /obj/item/integrated_circuit/manipulation/grabber name = "grabber" - desc = "A circuit with it's own inventory for items, used to grab and store things." + desc = "A circuit with its own inventory for items. Used to grab and store things." icon_state = "grabber" - extended_desc = "The circuit accepts a reference to an object to be grabbed and can store up to 10 objects. Modes: 1 to grab, 0 to eject the first object, and -1 to eject all objects." + extended_desc = "This circuit accepts a reference to an object to be grabbed, and can store up to 10 objects. Modes: 1 to grab, 0 to eject the first object, and -1 to eject all objects. If you throw something from a grabber's inventory with a thrower, the grabber will update its outputs accordingly." w_class = WEIGHT_CLASS_SMALL size = 3 cooldown_per_use = 5 @@ -383,6 +386,10 @@ var/obj/item/U for(U in contents) U.forceMove(T) + update_outputs() + activate_pin(2) + +/obj/item/integrated_circuit/manipulation/grabber/proc/update_outputs() if(contents.len) set_pin_data(IC_OUTPUT, 1, WEAKREF(contents[1])) set_pin_data(IC_OUTPUT, 2, WEAKREF(contents[contents.len])) @@ -392,7 +399,6 @@ set_pin_data(IC_OUTPUT, 3, contents.len) set_pin_data(IC_OUTPUT, 4, contents) push_data() - activate_pin(2) /obj/item/integrated_circuit/manipulation/grabber/attack_self(var/mob/user) if(contents.len) @@ -400,16 +406,14 @@ var/obj/item/U for(U in contents) U.forceMove(T) - set_pin_data(IC_OUTPUT, 1, null) - set_pin_data(IC_OUTPUT, 2, null) - set_pin_data(IC_OUTPUT, 3, contents.len) + update_outputs() push_data() /obj/item/integrated_circuit/manipulation/claw name = "pulling claw" desc = "Circuit which can pull things.." icon_state = "pull_claw" - extended_desc = "The circuit accepts a reference to thing to be pulled. Modes: 0 for release. 1 for pull." + extended_desc = "This circuit accepts a reference to a thing to be pulled. Modes: 0 for release. 1 for pull." w_class = WEIGHT_CLASS_SMALL size = 3 cooldown_per_use = 5 @@ -463,9 +467,10 @@ /obj/item/integrated_circuit/manipulation/thrower name = "thrower" desc = "A compact launcher to throw things from inside or nearby tiles." - extended_desc = "The first and second inputs need to be numbers which correspond to coordinates to throw objects at relative to the machine itself. \ + extended_desc = "The first and second inputs need to be numbers which correspond to the coordinates to throw objects at relative to the machine itself. \ The 'fire' activator will cause the mechanism to attempt to throw objects at the coordinates, if possible. Note that the \ - projectile need to be inside the machine, or to be on an adjacent tile, and must be medium sized or smaller." + projectile needs to be inside the machine, or on an adjacent tile, and must be medium sized or smaller. The assembly \ + must also be a gun if you wish to throw something while the assembly is in hand." complexity = 25 w_class = WEIGHT_CLASS_SMALL size = 2 @@ -490,12 +495,15 @@ var/target_y_rel = round(get_pin_data(IC_INPUT, 2)) var/obj/item/A = get_pin_data_as_type(IC_INPUT, 3, /obj/item) - if(!A || A.anchored || A.throwing) + if(!A || A.anchored || A.throwing || A == assembly) return if(max_w_class && (A.w_class > max_w_class)) return + if(!assembly.can_fire_equipped && ishuman(assembly.loc)) + return + // Is the target inside the assembly or close to it? if(!check_target(A, exclude_components = TRUE)) return @@ -510,13 +518,21 @@ if(!M.temporarilyRemoveItemFromInventory(A)) return + // If the item is in a grabber circuit we'll update the grabber's outputs after we've thrown it. + var/obj/item/integrated_circuit/manipulation/grabber/G = A.loc + var/x_abs = CLAMP(T.x + target_x_rel, 0, world.maxx) var/y_abs = CLAMP(T.y + target_y_rel, 0, world.maxy) var/range = round(CLAMP(sqrt(target_x_rel*target_x_rel+target_y_rel*target_y_rel),0,8),1) + assembly.visible_message("[assembly] has thrown [A]!") A.forceMove(drop_location()) A.throw_at(locate(x_abs, y_abs, T.z), range, 3) + // If the item came from a grabber now we can update the outputs since we've thrown it. + if(G) + G.update_outputs() + /obj/item/integrated_circuit/manipulation/matman name = "material manager" desc = "This circuit is designed for automatic storage and distribution of materials." @@ -572,7 +588,7 @@ /obj/item/integrated_circuit/manipulation/matman/Initialize() var/datum/component/material_container/materials = AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE), 0, - FALSE, list(/obj/item/stack, /obj/item/stack/ore/bluespace_crystal), CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert)) + FALSE, list(/obj/item/stack), CALLBACK(src, .proc/is_insertion_ready), CALLBACK(src, .proc/AfterMaterialInsert)) materials.max_amount =100000 materials.precise_insertion = TRUE .=..() diff --git a/code/modules/integrated_electronics/subtypes/memory.dm b/code/modules/integrated_electronics/subtypes/memory.dm index b54c433d35..fe74657532 100644 --- a/code/modules/integrated_electronics/subtypes/memory.dm +++ b/code/modules/integrated_electronics/subtypes/memory.dm @@ -56,14 +56,14 @@ /obj/item/integrated_circuit/memory/large name = "large memory circuit" - desc = "This big circuit can hold eight pieces of data." + desc = "This big circuit can store eight pieces of data." icon_state = "memory8" power_draw_per_use = 4 number_of_pins = 8 /obj/item/integrated_circuit/memory/huge name = "large memory stick" - desc = "This stick of memory can hold up up to sixteen pieces of data." + desc = "This stick of memory can store up up to sixteen pieces of data." icon_state = "memory16" w_class = WEIGHT_CLASS_SMALL spawn_flags = IC_SPAWN_RESEARCH @@ -79,6 +79,7 @@ activators = list("push data" = IC_PINTYPE_PULSE_IN) var/accepting_refs = FALSE spawn_flags = IC_SPAWN_DEFAULT|IC_SPAWN_RESEARCH + number_of_pins = 0 /obj/item/integrated_circuit/memory/constant/do_work() var/datum/integrated_io/O = outputs[1] diff --git a/code/modules/integrated_electronics/subtypes/output.dm b/code/modules/integrated_electronics/subtypes/output.dm index 6f7fd6eef5..2d820b016e 100644 --- a/code/modules/integrated_electronics/subtypes/output.dm +++ b/code/modules/integrated_electronics/subtypes/output.dm @@ -92,7 +92,7 @@ /obj/item/integrated_circuit/output/light/advanced name = "advanced light" - desc = "A light that takes a hexadecimal color value and a brightness value, and can be toggled on/off with a pulse." + desc = "A light that takes a hexadecimal color value and a brightness value, and can be toggled on/off by pulsing it." icon_state = "light_adv" complexity = 8 inputs = list( diff --git a/code/modules/integrated_electronics/subtypes/power.dm b/code/modules/integrated_electronics/subtypes/power.dm index 018cd71006..e760b21f72 100644 --- a/code/modules/integrated_electronics/subtypes/power.dm +++ b/code/modules/integrated_electronics/subtypes/power.dm @@ -28,8 +28,8 @@ extended_desc = "This circuit transmits 20 kJ of electricity every time the activator pin is pulsed. The input pin must be \ a reference to a machine to send electricity to. This can be a battery, or anything containing a battery. The machine can exist \ inside the assembly, or adjacent to it. The power is sourced from the assembly's power cell. If the target is outside of the assembly, \ - some power is lost due to ineffiency.Warning!Don't stack more than 1 power transmittors.it becomes less efficient for every other \ - transmission circuit in its own assembly and other nearby ones. " + some power is lost due to ineffiency. Warning! Don't stack more than 1 power transmitter, as it becomes less efficient for every other \ + transmission circuit in its own assembly and other nearby ones." w_class = WEIGHT_CLASS_BULKY complexity = 32 power_draw_per_use = 2000 diff --git a/code/modules/integrated_electronics/subtypes/reagents.dm b/code/modules/integrated_electronics/subtypes/reagents.dm index 9f57dd6f43..73d162ff3a 100644 --- a/code/modules/integrated_electronics/subtypes/reagents.dm +++ b/code/modules/integrated_electronics/subtypes/reagents.dm @@ -21,7 +21,7 @@ desc = "Unlike most electronics, creating smoke is completely intentional." icon_state = "smoke" extended_desc = "This smoke generator creates clouds of smoke on command. It can also hold liquids inside, which will go \ - into the smoke clouds when activated. The reagents are consumed when smoke is made." + into the smoke clouds when activated. The reagents are consumed when the smoke is made." ext_cooldown = 1 container_type = OPENCONTAINER volume = 100 @@ -99,10 +99,10 @@ /obj/item/integrated_circuit/reagent/injector name = "integrated hypo-injector" - desc = "This scary looking thing is able to pump liquids into whatever it's pointed at." + desc = "This scary looking thing is able to pump liquids into, or suck liquids out of, whatever it's pointed at." icon_state = "injector" - extended_desc = "This autoinjector can push reagents into another container or someone else outside of the machine. The target \ - must be adjacent to the machine, and if it is a person, they cannot be wearing thick clothing. Negative given amount makes injector suck out reagents." + extended_desc = "This autoinjector can push up to 30 units of reagents into another container or someone else outside of the machine. The target \ + must be adjacent to the machine, and if it is a person, they cannot be wearing thick clothing. Negative given amounts makes the injector suck out reagents instead." container_type = OPENCONTAINER volume = 30 @@ -252,7 +252,7 @@ icon_state = "reagent_pump" extended_desc = "This is a pump which will move liquids from the source ref to the target ref. The third pin determines \ how much liquid is moved per pulse, between 0 and 50. The pump can move reagents to any open container inside the machine, or \ - outside the machine if it is next to the machine." + outside the machine if it is adjacent to the machine." complexity = 8 inputs = list("source" = IC_PINTYPE_REF, "target" = IC_PINTYPE_REF, "injection amount" = IC_PINTYPE_NUMBER) @@ -346,7 +346,7 @@ /obj/item/integrated_circuit/reagent/storage/cryo name = "cryo reagent storage" - desc = "Stores liquid inside the device away from electrical components. It can store up to 60u. This will also suppress reactions." + desc = "Stores liquid inside the device away from electrical components. It can store up to 60u. This will also prevent reactions." icon_state = "reagent_storage_cryo" extended_desc = "This is effectively an internal cryo beaker." @@ -359,7 +359,7 @@ /obj/item/integrated_circuit/reagent/storage/grinder name = "reagent grinder" - desc = "This is reagent grinder. It accepts a ref to something and refines it into reagents. It can store up to 100u." + desc = "This is a reagent grinder. It accepts a ref to something, and refines it into reagents. It can store up to 100u." icon_state = "blender" extended_desc = "" inputs = list( @@ -406,7 +406,7 @@ obj/item/integrated_circuit/reagent/storage/juicer name = "reagent juicer" - desc = "This is reagent juicer. It accepts a ref to something and refines it into reagents. It can store up to 100u." + desc = "This is a reagent juicer. It accepts a ref to something and refines it into reagents. It can store up to 100u." icon_state = "blender" extended_desc = "" inputs = list( @@ -454,7 +454,7 @@ obj/item/integrated_circuit/reagent/storage/juicer name = "reagent scanner" desc = "Stores liquid inside the device away from electrical components. It can store up to 60u. On pulse this beaker will send list of contained reagents." icon_state = "reagent_scan" - extended_desc = "Mostly useful for reagent filter." + extended_desc = "Mostly useful for filtering reagents." complexity = 8 outputs = list( @@ -482,12 +482,12 @@ obj/item/integrated_circuit/reagent/storage/juicer /obj/item/integrated_circuit/reagent/filter name = "reagent filter" - desc = "Filtering liquids by list of desired or unwanted reagents." + desc = "Filters liquids by list of desired or unwanted reagents." icon_state = "reagent_filter" - extended_desc = "This is a filter which will move liquids from the source to the target. \ - It will move all reagents, except those in the unwanted list, given the fourth pin if amount value is positive, \ - or it will move only desired reagents if amount is negative. The third pin determines \ - how much reagent is moved per pulse, between 0 and 50. Amount is given for each separate reagent." + extended_desc = "This is a filter which will move liquids from the source to its target. \ + If the amount in the fourth pin is positive, it will move all reagents except those in the unwanted list. \ + If the amount in the fourth pin is negative, it will only move the reagents in the wanted list. \ + The third pin determines how many reagents are moved per pulse, between 0 and 50. Amount is given for each separate reagent." complexity = 8 inputs = list( diff --git a/code/modules/integrated_electronics/subtypes/smart.dm b/code/modules/integrated_electronics/subtypes/smart.dm index e0775f1a23..4445c1e1f3 100644 --- a/code/modules/integrated_electronics/subtypes/smart.dm +++ b/code/modules/integrated_electronics/subtypes/smart.dm @@ -37,10 +37,11 @@ activate_pin(2) /obj/item/integrated_circuit/smart/coord_basic_pathfinder - name = "coordinte pathfinder" + name = "coordinate pathfinder" desc = "This complex circuit is able to determine what direction a given target is." - extended_desc = "This circuit uses absolute coordintes to determine where the target is. If the machine \ - cannot see the target, it will not be able to calculate the correct direction.This circuit is working only in assembly." + extended_desc = "This circuit uses absolute coordinates to determine where the target is. If the machine \ + cannot see the target, it will not be able to calculate the correct direction. \ + This circuit will only work while inside an assembly." icon_state = "numberpad" complexity = 5 inputs = list("X" = IC_PINTYPE_NUMBER,"Y" = IC_PINTYPE_NUMBER,"ignore obstacles" = IC_PINTYPE_BOOLEAN) @@ -74,8 +75,8 @@ /obj/item/integrated_circuit/smart/advanced_pathfinder name = "advanced pathfinder" desc = "This circuit uses a complex processor for long-range pathfinding." - extended_desc = "This circuit uses absolute coordinates for target. A path will be generated taking obstacle input into account, \ - pathing around any instances of said input. The passkey provided from a card reader is used to create a valid path through doorways." + extended_desc = "This circuit uses absolute coordinates to find its target. A path will be generated to the target, taking obstacles into account, \ + and pathing around any instances of said input. The passkey provided from a card reader is used to calculate a valid path through airlocks." icon_state = "numberpad" complexity = 40 cooldown_per_use = 50 @@ -117,4 +118,4 @@ set_pin_data(IC_OUTPUT, 1, Xn) set_pin_data(IC_OUTPUT, 2, Yn) push_data() - activate_pin(2) \ No newline at end of file + activate_pin(2) diff --git a/code/modules/integrated_electronics/subtypes/time.dm b/code/modules/integrated_electronics/subtypes/time.dm index 26bd1fc1d6..f72f5dbd74 100644 --- a/code/modules/integrated_electronics/subtypes/time.dm +++ b/code/modules/integrated_electronics/subtypes/time.dm @@ -53,8 +53,10 @@ /obj/item/integrated_circuit/time/delay/custom name = "custom delay circuit" - desc = "This sends a pulse signal out after a delay, critical for ensuring proper control flow in a complex machine. \ - This circuit's delay can be customized, between 1/10th of a second to one hour. The delay is updated upon receiving a pulse." + desc = "This sends a pulse signal out after a delay defined in tenths of a second, critical for ensuring proper control \ + flow in a complex machine. This circuit's delay can be customized, between 1/10th of a second to one hour. \ + The delay is updated upon receiving a pulse." + extended_desc = "The delay is defined in tenths of a second. For instance, 4 will be a delay of 0.4 seconds, or 15 for 1.5 seconds." icon_state = "delay" inputs = list("delay time" = IC_PINTYPE_NUMBER) spawn_flags = IC_SPAWN_RESEARCH @@ -104,7 +106,9 @@ /obj/item/integrated_circuit/time/ticker/custom name = "custom ticker" - desc = "This advanced circuit sends an automatic pulse every given interval." + desc = "This advanced circuit sends an automatic pulse every given interval, defined in tenths of a second." + extended_desc ="This advanced circuit sends an automatic pulse every given interval, defined in tenths of a second. \ + For example, setting the time pin to 4 will send a pulse every 0.4 seconds, or 15 for every 1.5 seconds." icon_state = "tick-f" complexity = 8 delay = 2 SECONDS @@ -115,7 +119,7 @@ /obj/item/integrated_circuit/time/ticker/custom/on_data_written() var/delay_input = get_pin_data(IC_INPUT, 2) if(delay_input && isnum(delay_input) ) - var/new_delay = CLAMP(delay_input ,1 ,1 HOURS) + var/new_delay = CLAMP(delay_input ,1 ,1 HOURS) delay = new_delay ..() diff --git a/code/modules/jobs/job_exp.dm b/code/modules/jobs/job_exp.dm index 3aad52e596..b4679ae479 100644 --- a/code/modules/jobs/job_exp.dm +++ b/code/modules/jobs/job_exp.dm @@ -226,9 +226,14 @@ GLOBAL_PROTECT(exp_to_update) if(!rolefound) play_records["Unknown"] += minutes else - play_records[EXP_TYPE_GHOST] += minutes - if(announce_changes) - to_chat(src,"You got: [minutes] Ghost EXP!") + if(holder && !holder.deadmined) + play_records[EXP_TYPE_ADMIN] += minutes + if(announce_changes) + to_chat(src,"You got: [minutes] Admin EXP!") + else + play_records[EXP_TYPE_GHOST] += minutes + if(announce_changes) + to_chat(src,"You got: [minutes] Ghost EXP!") else if(isobserver(mob)) play_records[EXP_TYPE_GHOST] += minutes if(announce_changes) diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index 799cc91ba9..458015db5e 100755 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -34,9 +34,9 @@ Captain jobtype = /datum/job/captain id = /obj/item/card/id/gold - belt = /obj/item/device/pda/captain + belt = /obj/item/pda/captain glasses = /obj/item/clothing/glasses/sunglasses - ears = /obj/item/device/radio/headset/heads/captain/alt + ears = /obj/item/radio/headset/heads/captain/alt gloves = /obj/item/clothing/gloves/color/captain uniform = /obj/item/clothing/under/rank/captain suit = /obj/item/clothing/suit/armor/vest/capcarapace @@ -93,10 +93,10 @@ Head of Personnel jobtype = /datum/job/hop id = /obj/item/card/id/silver - belt = /obj/item/device/pda/heads/hop - ears = /obj/item/device/radio/headset/heads/hop + belt = /obj/item/pda/heads/hop + ears = /obj/item/radio/headset/heads/hop uniform = /obj/item/clothing/under/rank/head_of_personnel shoes = /obj/item/clothing/shoes/sneakers/brown head = /obj/item/clothing/head/hopcap backpack_contents = list(/obj/item/storage/box/ids=1,\ - /obj/item/melee/classic_baton/telescopic=1, /obj/item/device/modular_computer/tablet/preset/advanced = 1) + /obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced = 1) diff --git a/code/modules/jobs/job_types/cargo_service.dm b/code/modules/jobs/job_types/cargo_service.dm index 5c761cec25..1351d2beeb 100644 --- a/code/modules/jobs/job_types/cargo_service.dm +++ b/code/modules/jobs/job_types/cargo_service.dm @@ -22,8 +22,8 @@ Quartermaster name = "Quartermaster" jobtype = /datum/job/qm - belt = /obj/item/device/pda/quartermaster - ears = /obj/item/device/radio/headset/headset_cargo + belt = /obj/item/pda/quartermaster + ears = /obj/item/radio/headset/headset_cargo uniform = /obj/item/clothing/under/rank/cargo shoes = /obj/item/clothing/shoes/sneakers/brown glasses = /obj/item/clothing/glasses/sunglasses @@ -53,10 +53,10 @@ Cargo Technician name = "Cargo Technician" jobtype = /datum/job/cargo_tech - belt = /obj/item/device/pda/cargo - ears = /obj/item/device/radio/headset/headset_cargo + belt = /obj/item/pda/cargo + ears = /obj/item/radio/headset/headset_cargo uniform = /obj/item/clothing/under/rank/cargotech - l_hand = /obj/item/device/export_scanner + l_hand = /obj/item/export_scanner /* Shaft Miner @@ -82,13 +82,13 @@ Shaft Miner name = "Shaft Miner (Lavaland)" jobtype = /datum/job/mining - belt = /obj/item/device/pda/shaftminer - ears = /obj/item/device/radio/headset/headset_cargo/mining + belt = /obj/item/pda/shaftminer + ears = /obj/item/radio/headset/headset_cargo/mining shoes = /obj/item/clothing/shoes/workboots/mining gloves = /obj/item/clothing/gloves/color/black uniform = /obj/item/clothing/under/rank/miner/lavaland l_pocket = /obj/item/reagent_containers/hypospray/medipen/survival - r_pocket = /obj/item/device/flashlight/seclite + r_pocket = /obj/item/flashlight/seclite backpack_contents = list( /obj/item/storage/bag/ore=1,\ /obj/item/kitchen/knife/combat/survival=1,\ @@ -111,12 +111,12 @@ Shaft Miner mask = /obj/item/clothing/mask/gas/explorer glasses = /obj/item/clothing/glasses/meson suit_store = /obj/item/tank/internals/oxygen - internals_slot = slot_s_store + internals_slot = SLOT_S_STORE backpack_contents = list( /obj/item/storage/bag/ore=1, /obj/item/kitchen/knife/combat/survival=1, /obj/item/mining_voucher=1, - /obj/item/device/t_scanner/adv_mining_scanner/lesser=1, + /obj/item/t_scanner/adv_mining_scanner/lesser=1, /obj/item/gun/energy/kinetic_accelerator=1,\ /obj/item/stack/marker_beacon/ten=1) @@ -163,8 +163,8 @@ Bartender jobtype = /datum/job/bartender glasses = /obj/item/clothing/glasses/sunglasses/reagent - belt = /obj/item/device/pda/bar - ears = /obj/item/device/radio/headset/headset_srv + belt = /obj/item/pda/bar + ears = /obj/item/radio/headset/headset_srv uniform = /obj/item/clothing/under/rank/bartender suit = /obj/item/clothing/suit/armor/vest backpack_contents = list(/obj/item/storage/box/beanbag=1,/obj/item/book/granter/action/drink_fling=1) @@ -195,8 +195,8 @@ Cook name = "Cook" jobtype = /datum/job/cook - belt = /obj/item/device/pda/cook - ears = /obj/item/device/radio/headset/headset_srv + belt = /obj/item/pda/cook + ears = /obj/item/radio/headset/headset_srv uniform = /obj/item/clothing/under/rank/chef suit = /obj/item/clothing/suit/toggle/chef head = /obj/item/clothing/head/chefhat @@ -220,7 +220,7 @@ Cook var/list/possible_boxes = subtypesof(/obj/item/storage/box/ingredients) var/chosen_box = pick(possible_boxes) var/obj/item/storage/box/I = new chosen_box(src) - H.equip_to_slot_or_del(I,slot_in_backpack) + H.equip_to_slot_or_del(I,SLOT_IN_BACKPACK) var/datum/martial_art/cqc/under_siege/justacook = new justacook.teach(H) @@ -252,12 +252,12 @@ Botanist name = "Botanist" jobtype = /datum/job/hydro - belt = /obj/item/device/pda/botanist - ears = /obj/item/device/radio/headset/headset_srv + belt = /obj/item/pda/botanist + ears = /obj/item/radio/headset/headset_srv uniform = /obj/item/clothing/under/rank/hydroponics suit = /obj/item/clothing/suit/apron gloves =/obj/item/clothing/gloves/botanic_leather - suit_store = /obj/item/device/plant_analyzer + suit_store = /obj/item/plant_analyzer backpack = /obj/item/storage/backpack/botany satchel = /obj/item/storage/backpack/satchel/hyd @@ -288,7 +288,7 @@ Janitor name = "Janitor" jobtype = /datum/job/janitor - belt = /obj/item/device/pda/janitor - ears = /obj/item/device/radio/headset/headset_srv + belt = /obj/item/pda/janitor + ears = /obj/item/radio/headset/headset_srv uniform = /obj/item/clothing/under/rank/janitor - backpack_contents = list(/obj/item/device/modular_computer/tablet/preset/advanced=1) + backpack_contents = list(/obj/item/modular_computer/tablet/preset/advanced=1) diff --git a/code/modules/jobs/job_types/civilian.dm b/code/modules/jobs/job_types/civilian.dm index f4b0c47ba0..e0202db132 100644 --- a/code/modules/jobs/job_types/civilian.dm +++ b/code/modules/jobs/job_types/civilian.dm @@ -25,7 +25,7 @@ Clown name = "Clown" jobtype = /datum/job/clown - belt = /obj/item/device/pda/clown + belt = /obj/item/pda/clown uniform = /obj/item/clothing/under/rank/clown shoes = /obj/item/clothing/shoes/clown_shoes mask = /obj/item/clothing/mask/gas/clown_hat @@ -34,7 +34,7 @@ Clown /obj/item/stamp/clown = 1, /obj/item/reagent_containers/spray/waterflower = 1, /obj/item/reagent_containers/food/snacks/grown/banana = 1, - /obj/item/device/instrument/bikehorn = 1, + /obj/item/instrument/bikehorn = 1, ) implants = list(/obj/item/implant/sad_trombone) @@ -87,11 +87,11 @@ Mime name = "Mime" jobtype = /datum/job/mime - belt = /obj/item/device/pda/mime + belt = /obj/item/pda/mime uniform = /obj/item/clothing/under/rank/mime mask = /obj/item/clothing/mask/gas/mime gloves = /obj/item/clothing/gloves/color/white - head = /obj/item/clothing/head/beret + head = /obj/item/clothing/head/frenchberet suit = /obj/item/clothing/suit/suspenders backpack_contents = list(/obj/item/reagent_containers/food/drinks/bottle/bottleofnothing=1) @@ -135,11 +135,11 @@ Curator name = "Curator" jobtype = /datum/job/curator - belt = /obj/item/device/pda/curator + belt = /obj/item/pda/curator uniform = /obj/item/clothing/under/rank/curator l_hand = /obj/item/storage/bag/books r_pocket = /obj/item/key/displaycase - l_pocket = /obj/item/device/laser_pointer + l_pocket = /obj/item/laser_pointer //CITADEL EDIT removes runtimes from this pocket protector backpack_contents = list( /obj/item/melee/curator_whip = 1, @@ -181,13 +181,13 @@ Lawyer name = "Lawyer" jobtype = /datum/job/lawyer - belt = /obj/item/device/pda/lawyer - ears = /obj/item/device/radio/headset/headset_sec + belt = /obj/item/pda/lawyer + ears = /obj/item/radio/headset/headset_sec uniform = /obj/item/clothing/under/lawyer/bluesuit suit = /obj/item/clothing/suit/toggle/lawyer shoes = /obj/item/clothing/shoes/laceup l_hand = /obj/item/storage/briefcase/lawyer - l_pocket = /obj/item/device/laser_pointer + l_pocket = /obj/item/laser_pointer r_pocket = /obj/item/clothing/accessory/lawyers_badge diff --git a/code/modules/jobs/job_types/civilian_chaplain.dm b/code/modules/jobs/job_types/civilian_chaplain.dm index 5e56fe5b4f..1ef6be2e60 100644 --- a/code/modules/jobs/job_types/civilian_chaplain.dm +++ b/code/modules/jobs/job_types/civilian_chaplain.dm @@ -31,7 +31,7 @@ Chaplain B.icon_state = SSreligion.bible_icon_state B.item_state = SSreligion.bible_item_state to_chat(H, "There is already an established religion onboard the station. You are an acolyte of [SSreligion.deity]. Defer to the Chaplain.") - H.equip_to_slot_or_del(B, slot_in_backpack) + H.equip_to_slot_or_del(B, SLOT_IN_BACKPACK) var/nrt = SSreligion.holy_weapon_type || /obj/item/nullrod var/obj/item/nullrod/N = new nrt(H) H.put_in_hands(N) @@ -79,7 +79,7 @@ Chaplain SSreligion.bible_name = B.name SSreligion.deity = B.deity_name - H.equip_to_slot_or_del(B, slot_in_backpack) + H.equip_to_slot_or_del(B, SLOT_IN_BACKPACK) SSblackbox.record_feedback("text", "religion_name", 1, "[new_religion]", 1) SSblackbox.record_feedback("text", "religion_deity", 1, "[new_deity]", 1) @@ -88,8 +88,8 @@ Chaplain name = "Chaplain" jobtype = /datum/job/chaplain - belt = /obj/item/device/pda/chaplain + belt = /obj/item/pda/chaplain uniform = /obj/item/clothing/under/rank/chaplain - backpack_contents = list(/obj/item/device/camera/spooky = 1) + backpack_contents = list(/obj/item/camera/spooky = 1) backpack = /obj/item/storage/backpack/cultpack satchel = /obj/item/storage/backpack/cultpack diff --git a/code/modules/jobs/job_types/engineering.dm b/code/modules/jobs/job_types/engineering.dm index 82a6fe1382..d7f23f48c9 100644 --- a/code/modules/jobs/job_types/engineering.dm +++ b/code/modules/jobs/job_types/engineering.dm @@ -36,19 +36,19 @@ Chief Engineer id = /obj/item/card/id/silver belt = /obj/item/storage/belt/utility/chief/full - l_pocket = /obj/item/device/pda/heads/ce - ears = /obj/item/device/radio/headset/heads/ce + l_pocket = /obj/item/pda/heads/ce + ears = /obj/item/radio/headset/heads/ce uniform = /obj/item/clothing/under/rank/chief_engineer shoes = /obj/item/clothing/shoes/sneakers/brown head = /obj/item/clothing/head/hardhat/white gloves = /obj/item/clothing/gloves/color/black/ce - backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/device/modular_computer/tablet/preset/advanced=1) + backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced=1) backpack = /obj/item/storage/backpack/industrial satchel = /obj/item/storage/backpack/satchel/eng duffelbag = /obj/item/storage/backpack/duffelbag/engineering box = /obj/item/storage/box/engineer - pda_slot = slot_l_store + pda_slot = SLOT_L_STORE /datum/outfit/job/ce/rig name = "Chief Engineer (Hardsuit)" @@ -59,7 +59,7 @@ Chief Engineer suit_store = /obj/item/tank/internals/oxygen gloves = /obj/item/clothing/gloves/color/yellow head = null - internals_slot = slot_s_store + internals_slot = SLOT_S_STORE /* @@ -91,19 +91,19 @@ Station Engineer jobtype = /datum/job/engineer belt = /obj/item/storage/belt/utility/full/engi - l_pocket = /obj/item/device/pda/engineering - ears = /obj/item/device/radio/headset/headset_eng + l_pocket = /obj/item/pda/engineering + ears = /obj/item/radio/headset/headset_eng uniform = /obj/item/clothing/under/rank/engineer shoes = /obj/item/clothing/shoes/workboots head = /obj/item/clothing/head/hardhat - r_pocket = /obj/item/device/t_scanner + r_pocket = /obj/item/t_scanner backpack = /obj/item/storage/backpack/industrial satchel = /obj/item/storage/backpack/satchel/eng duffelbag = /obj/item/storage/backpack/duffelbag/engineering box = /obj/item/storage/box/engineer - pda_slot = slot_l_store - backpack_contents = list(/obj/item/device/modular_computer/tablet/preset/advanced=1) + pda_slot = SLOT_L_STORE + backpack_contents = list(/obj/item/modular_computer/tablet/preset/advanced=1) /datum/outfit/job/engineer/gloved name = "Station Engineer (Gloves)" @@ -116,7 +116,7 @@ Station Engineer suit = /obj/item/clothing/suit/space/hardsuit/engine suit_store = /obj/item/tank/internals/oxygen head = null - internals_slot = slot_s_store + internals_slot = SLOT_S_STORE /* @@ -147,17 +147,17 @@ Atmospheric Technician jobtype = /datum/job/atmos belt = /obj/item/storage/belt/utility/atmostech - l_pocket = /obj/item/device/pda/atmos - ears = /obj/item/device/radio/headset/headset_eng + l_pocket = /obj/item/pda/atmos + ears = /obj/item/radio/headset/headset_eng uniform = /obj/item/clothing/under/rank/atmospheric_technician - r_pocket = /obj/item/device/analyzer + r_pocket = /obj/item/analyzer backpack = /obj/item/storage/backpack/industrial satchel = /obj/item/storage/backpack/satchel/eng duffelbag = /obj/item/storage/backpack/duffelbag/engineering box = /obj/item/storage/box/engineer - pda_slot = slot_l_store - backpack_contents = list(/obj/item/device/modular_computer/tablet/preset/advanced=1) + pda_slot = SLOT_L_STORE + backpack_contents = list(/obj/item/modular_computer/tablet/preset/advanced=1) /datum/outfit/job/atmos/rig name = "Atmospheric Technician (Hardsuit)" @@ -165,4 +165,4 @@ Atmospheric Technician mask = /obj/item/clothing/mask/gas suit = /obj/item/clothing/suit/space/hardsuit/engine/atmos suit_store = /obj/item/tank/internals/oxygen - internals_slot = slot_s_store + internals_slot = SLOT_S_STORE diff --git a/code/modules/jobs/job_types/job.dm b/code/modules/jobs/job_types/job.dm index c384d21e97..156e975a65 100644 --- a/code/modules/jobs/job_types/job.dm +++ b/code/modules/jobs/job_types/job.dm @@ -141,8 +141,8 @@ uniform = /obj/item/clothing/under/color/grey id = /obj/item/card/id - ears = /obj/item/device/radio/headset - belt = /obj/item/device/pda + ears = /obj/item/radio/headset + belt = /obj/item/pda back = /obj/item/storage/backpack shoes = /obj/item/clothing/shoes/sneakers/black @@ -151,7 +151,7 @@ var/duffelbag = /obj/item/storage/backpack/duffelbag var/box = /obj/item/storage/box/survival - var/pda_slot = slot_belt + var/pda_slot = SLOT_BELT /datum/outfit/job/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) switch(H.backbag) @@ -193,7 +193,7 @@ C.update_label() H.sec_hud_set_ID() - var/obj/item/device/pda/PDA = H.get_item_by_slot(pda_slot) + var/obj/item/pda/PDA = H.get_item_by_slot(pda_slot) if(istype(PDA)) PDA.owner = H.real_name PDA.ownjob = J.title diff --git a/code/modules/jobs/job_types/medical.dm b/code/modules/jobs/job_types/medical.dm index 4997b3a7f3..4108cb8e75 100644 --- a/code/modules/jobs/job_types/medical.dm +++ b/code/modules/jobs/job_types/medical.dm @@ -33,14 +33,14 @@ Chief Medical Officer jobtype = /datum/job/cmo id = /obj/item/card/id/silver - belt = /obj/item/device/pda/heads/cmo + belt = /obj/item/pda/heads/cmo l_pocket = /obj/item/pinpointer/crew - ears = /obj/item/device/radio/headset/heads/cmo + ears = /obj/item/radio/headset/heads/cmo uniform = /obj/item/clothing/under/rank/chief_medical_officer shoes = /obj/item/clothing/shoes/sneakers/brown suit = /obj/item/clothing/suit/toggle/labcoat/cmo l_hand = /obj/item/storage/firstaid/regular - suit_store = /obj/item/device/flashlight/pen + suit_store = /obj/item/flashlight/pen backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1) backpack = /obj/item/storage/backpack/medic @@ -71,13 +71,13 @@ Medical Doctor name = "Medical Doctor" jobtype = /datum/job/doctor - belt = /obj/item/device/pda/medical - ears = /obj/item/device/radio/headset/headset_med + belt = /obj/item/pda/medical + ears = /obj/item/radio/headset/headset_med uniform = /obj/item/clothing/under/rank/medical shoes = /obj/item/clothing/shoes/sneakers/white suit = /obj/item/clothing/suit/toggle/labcoat l_hand = /obj/item/storage/firstaid/regular - suit_store = /obj/item/device/flashlight/pen + suit_store = /obj/item/flashlight/pen backpack = /obj/item/storage/backpack/medic satchel = /obj/item/storage/backpack/satchel/med @@ -110,8 +110,8 @@ Chemist jobtype = /datum/job/chemist glasses = /obj/item/clothing/glasses/science - belt = /obj/item/device/pda/chemist - ears = /obj/item/device/radio/headset/headset_med + belt = /obj/item/pda/chemist + ears = /obj/item/radio/headset/headset_med uniform = /obj/item/clothing/under/rank/chemist shoes = /obj/item/clothing/shoes/sneakers/white suit = /obj/item/clothing/suit/toggle/labcoat/chemist @@ -145,12 +145,12 @@ Geneticist name = "Geneticist" jobtype = /datum/job/geneticist - belt = /obj/item/device/pda/geneticist - ears = /obj/item/device/radio/headset/headset_medsci + belt = /obj/item/pda/geneticist + ears = /obj/item/radio/headset/headset_medsci uniform = /obj/item/clothing/under/rank/geneticist shoes = /obj/item/clothing/shoes/sneakers/white suit = /obj/item/clothing/suit/toggle/labcoat/genetics - suit_store = /obj/item/device/flashlight/pen + suit_store = /obj/item/flashlight/pen backpack = /obj/item/storage/backpack/genetics satchel = /obj/item/storage/backpack/satchel/gen @@ -182,13 +182,13 @@ Virologist name = "Virologist" jobtype = /datum/job/virologist - belt = /obj/item/device/pda/viro - ears = /obj/item/device/radio/headset/headset_med + belt = /obj/item/pda/viro + ears = /obj/item/radio/headset/headset_med uniform = /obj/item/clothing/under/rank/virologist mask = /obj/item/clothing/mask/surgical shoes = /obj/item/clothing/shoes/sneakers/white suit = /obj/item/clothing/suit/toggle/labcoat/virologist - suit_store = /obj/item/device/flashlight/pen + suit_store = /obj/item/flashlight/pen backpack = /obj/item/storage/backpack/virology satchel = /obj/item/storage/backpack/satchel/vir diff --git a/code/modules/jobs/job_types/science.dm b/code/modules/jobs/job_types/science.dm index 2648bd2516..b82a5d85d2 100644 --- a/code/modules/jobs/job_types/science.dm +++ b/code/modules/jobs/job_types/science.dm @@ -37,14 +37,14 @@ Research Director jobtype = /datum/job/rd id = /obj/item/card/id/silver - belt = /obj/item/device/pda/heads/rd - ears = /obj/item/device/radio/headset/heads/rd + belt = /obj/item/pda/heads/rd + ears = /obj/item/radio/headset/heads/rd uniform = /obj/item/clothing/under/rank/research_director shoes = /obj/item/clothing/shoes/sneakers/brown suit = /obj/item/clothing/suit/toggle/labcoat l_hand = /obj/item/clipboard - l_pocket = /obj/item/device/laser_pointer - backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/device/modular_computer/tablet/preset/advanced=1) + l_pocket = /obj/item/laser_pointer + backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced=1) backpack = /obj/item/storage/backpack/science satchel = /obj/item/storage/backpack/satchel/tox @@ -56,7 +56,7 @@ Research Director mask = /obj/item/clothing/mask/breath suit = /obj/item/clothing/suit/space/hardsuit/rd suit_store = /obj/item/tank/internals/oxygen - internals_slot = slot_s_store + internals_slot = SLOT_S_STORE /* Scientist @@ -84,8 +84,8 @@ Scientist name = "Scientist" jobtype = /datum/job/scientist - belt = /obj/item/device/pda/toxins - ears = /obj/item/device/radio/headset/headset_sci + belt = /obj/item/pda/toxins + ears = /obj/item/radio/headset/headset_sci uniform = /obj/item/clothing/under/rank/scientist shoes = /obj/item/clothing/shoes/sneakers/white suit = /obj/item/clothing/suit/toggle/labcoat/science @@ -120,12 +120,12 @@ Roboticist jobtype = /datum/job/roboticist belt = /obj/item/storage/belt/utility/full - l_pocket = /obj/item/device/pda/roboticist - ears = /obj/item/device/radio/headset/headset_sci + l_pocket = /obj/item/pda/roboticist + ears = /obj/item/radio/headset/headset_sci uniform = /obj/item/clothing/under/rank/roboticist suit = /obj/item/clothing/suit/toggle/labcoat backpack = /obj/item/storage/backpack/science satchel = /obj/item/storage/backpack/satchel/tox - pda_slot = slot_l_store + pda_slot = SLOT_L_STORE diff --git a/code/modules/jobs/job_types/security.dm b/code/modules/jobs/job_types/security.dm index 3cfd5ef73d..6295e9964e 100644 --- a/code/modules/jobs/job_types/security.dm +++ b/code/modules/jobs/job_types/security.dm @@ -41,8 +41,8 @@ Head of Security jobtype = /datum/job/hos id = /obj/item/card/id/silver - belt = /obj/item/device/pda/heads/hos - ears = /obj/item/device/radio/headset/heads/hos/alt + belt = /obj/item/pda/heads/hos + ears = /obj/item/radio/headset/heads/hos/alt uniform = /obj/item/clothing/under/rank/head_of_security shoes = /obj/item/clothing/shoes/jackboots suit = /obj/item/clothing/suit/armor/hos/trenchcoat @@ -50,7 +50,7 @@ Head of Security head = /obj/item/clothing/head/HoS/beret glasses = /obj/item/clothing/glasses/hud/security/sunglasses suit_store = /obj/item/gun/energy/e_gun - r_pocket = /obj/item/device/assembly/flash/handheld + r_pocket = /obj/item/assembly/flash/handheld l_pocket = /obj/item/restraints/handcuffs backpack_contents = list(/obj/item/melee/baton/loaded=1) @@ -93,15 +93,15 @@ Warden name = "Warden" jobtype = /datum/job/warden - belt = /obj/item/device/pda/warden - ears = /obj/item/device/radio/headset/headset_sec/alt + belt = /obj/item/pda/warden + ears = /obj/item/radio/headset/headset_sec/alt uniform = /obj/item/clothing/under/rank/warden shoes = /obj/item/clothing/shoes/jackboots suit = /obj/item/clothing/suit/armor/vest/warden/alt gloves = /obj/item/clothing/gloves/color/black head = /obj/item/clothing/head/warden glasses = /obj/item/clothing/glasses/hud/security/sunglasses - r_pocket = /obj/item/device/assembly/flash/handheld + r_pocket = /obj/item/assembly/flash/handheld l_pocket = /obj/item/restraints/handcuffs suit_store = /obj/item/gun/energy/e_gun/advtaser backpack_contents = list(/obj/item/melee/baton/loaded=1) @@ -141,8 +141,8 @@ Detective name = "Detective" jobtype = /datum/job/detective - belt = /obj/item/device/pda/detective - ears = /obj/item/device/radio/headset/headset_sec/alt + belt = /obj/item/pda/detective + ears = /obj/item/radio/headset/headset_sec/alt uniform = /obj/item/clothing/under/rank/det shoes = /obj/item/clothing/shoes/sneakers/brown suit = /obj/item/clothing/suit/det_suit @@ -151,7 +151,7 @@ Detective l_pocket = /obj/item/toy/crayon/white r_pocket = /obj/item/lighter backpack_contents = list(/obj/item/storage/box/evidence=1,\ - /obj/item/device/detective_scanner=1,\ + /obj/item/detective_scanner=1,\ /obj/item/melee/classic_baton=1) mask = /obj/item/clothing/mask/cigarette @@ -214,25 +214,25 @@ GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, S var/spawn_point = null switch(department) if(SEC_DEPT_SUPPLY) - ears = /obj/item/device/radio/headset/headset_sec/alt/department/supply + ears = /obj/item/radio/headset/headset_sec/alt/department/supply dep_access = list(ACCESS_MAILSORTING, ACCESS_MINING, ACCESS_MINING_STATION) destination = /area/security/checkpoint/supply spawn_point = locate(/obj/effect/landmark/start/depsec/supply) in GLOB.department_security_spawns accessory = /obj/item/clothing/accessory/armband/cargo if(SEC_DEPT_ENGINEERING) - ears = /obj/item/device/radio/headset/headset_sec/alt/department/engi + ears = /obj/item/radio/headset/headset_sec/alt/department/engi dep_access = list(ACCESS_CONSTRUCTION, ACCESS_ENGINE) destination = /area/security/checkpoint/engineering spawn_point = locate(/obj/effect/landmark/start/depsec/engineering) in GLOB.department_security_spawns accessory = /obj/item/clothing/accessory/armband/engine if(SEC_DEPT_MEDICAL) - ears = /obj/item/device/radio/headset/headset_sec/alt/department/med + ears = /obj/item/radio/headset/headset_sec/alt/department/med dep_access = list(ACCESS_MEDICAL) destination = /area/security/checkpoint/medical spawn_point = locate(/obj/effect/landmark/start/depsec/medical) in GLOB.department_security_spawns accessory = /obj/item/clothing/accessory/armband/medblue if(SEC_DEPT_SCIENCE) - ears = /obj/item/device/radio/headset/headset_sec/alt/department/sci + ears = /obj/item/radio/headset/headset_sec/alt/department/sci dep_access = list(ACCESS_RESEARCH) destination = /area/security/checkpoint/science spawn_point = locate(/obj/effect/landmark/start/depsec/science) in GLOB.department_security_spawns @@ -244,7 +244,7 @@ GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, S if(ears) if(H.ears) qdel(H.ears) - H.equip_to_slot_or_del(new ears(H),slot_ears) + H.equip_to_slot_or_del(new ears(H),SLOT_EARS) var/obj/item/card/id/W = H.wear_id W.access |= dep_access @@ -278,15 +278,15 @@ GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, S name = "Security Officer" jobtype = /datum/job/officer - belt = /obj/item/device/pda/security - ears = /obj/item/device/radio/headset/headset_sec/alt + belt = /obj/item/pda/security + ears = /obj/item/radio/headset/headset_sec/alt uniform = /obj/item/clothing/under/rank/security gloves = /obj/item/clothing/gloves/color/black head = /obj/item/clothing/head/helmet/sec suit = /obj/item/clothing/suit/armor/vest/alt shoes = /obj/item/clothing/shoes/jackboots l_pocket = /obj/item/restraints/handcuffs - r_pocket = /obj/item/device/assembly/flash/handheld + r_pocket = /obj/item/assembly/flash/handheld suit_store = /obj/item/gun/energy/e_gun/advtaser backpack_contents = list(/obj/item/melee/baton/loaded=1) @@ -298,24 +298,24 @@ GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, S implants = list(/obj/item/implant/mindshield) -/obj/item/device/radio/headset/headset_sec/alt/department/Initialize() +/obj/item/radio/headset/headset_sec/alt/department/Initialize() . = ..() wires = new/datum/wires/radio(src) secure_radio_connections = new recalculateChannels() -/obj/item/device/radio/headset/headset_sec/alt/department/engi - keyslot = new /obj/item/device/encryptionkey/headset_sec - keyslot2 = new /obj/item/device/encryptionkey/headset_eng +/obj/item/radio/headset/headset_sec/alt/department/engi + keyslot = new /obj/item/encryptionkey/headset_sec + keyslot2 = new /obj/item/encryptionkey/headset_eng -/obj/item/device/radio/headset/headset_sec/alt/department/supply - keyslot = new /obj/item/device/encryptionkey/headset_sec - keyslot2 = new /obj/item/device/encryptionkey/headset_cargo +/obj/item/radio/headset/headset_sec/alt/department/supply + keyslot = new /obj/item/encryptionkey/headset_sec + keyslot2 = new /obj/item/encryptionkey/headset_cargo -/obj/item/device/radio/headset/headset_sec/alt/department/med - keyslot = new /obj/item/device/encryptionkey/headset_sec - keyslot2 = new /obj/item/device/encryptionkey/headset_med +/obj/item/radio/headset/headset_sec/alt/department/med + keyslot = new /obj/item/encryptionkey/headset_sec + keyslot2 = new /obj/item/encryptionkey/headset_med -/obj/item/device/radio/headset/headset_sec/alt/department/sci - keyslot = new /obj/item/device/encryptionkey/headset_sec - keyslot2 = new /obj/item/device/encryptionkey/headset_sci +/obj/item/radio/headset/headset_sec/alt/department/sci + keyslot = new /obj/item/encryptionkey/headset_sec + keyslot2 = new /obj/item/encryptionkey/headset_sci diff --git a/code/modules/keybindings/bindings_human.dm b/code/modules/keybindings/bindings_human.dm index 7c52917386..14890cc7e2 100644 --- a/code/modules/keybindings/bindings_human.dm +++ b/code/modules/keybindings/bindings_human.dm @@ -3,12 +3,12 @@ switch(_key) if("E") // Put held thing in belt or take out most recent thing from belt var/obj/item/thing = get_active_held_item() - var/obj/item/storage/equipped_belt = get_item_by_slot(slot_belt) + var/obj/item/storage/equipped_belt = get_item_by_slot(SLOT_BELT) if(!equipped_belt) // We also let you equip a belt like this if(!thing) to_chat(user, "You have no belt to take something out of.") return - equip_to_slot_if_possible(thing, slot_belt) + equip_to_slot_if_possible(thing, SLOT_BELT) return if(!istype(equipped_belt)) // not a storage item if(!thing) @@ -31,12 +31,12 @@ if("B") // Put held thing in backpack or take out most recent thing from backpack var/obj/item/thing = get_active_held_item() - var/obj/item/storage/equipped_backpack = get_item_by_slot(slot_back) + var/obj/item/storage/equipped_backpack = get_item_by_slot(SLOT_BACK) if(!equipped_backpack) // We also let you equip a backpack like this if(!thing) to_chat(user, "You have no backpack to take something out of.") return - equip_to_slot_if_possible(thing, slot_back) + equip_to_slot_if_possible(thing, SLOT_BACK) return if(!istype(equipped_backpack)) // not a storage item if(!thing) diff --git a/code/modules/keybindings/readme.md b/code/modules/keybindings/readme.md index 1170804436..6c0369d7c7 100644 --- a/code/modules/keybindings/readme.md +++ b/code/modules/keybindings/readme.md @@ -1,7 +1,7 @@ # In-code keypress handling system This whole system is heavily based off of forum_account's keyboard library. -Thanks to forum_account for saving the day, the library can be found [here](http://www.byond.com/developer/Forum_account/Keyboard)! +Thanks to forum_account for saving the day, the library can be found [here](https://secure.byond.com/developer/Forum_account/Keyboard)! .dmf macros have some very serious shortcomings. For example, they do not allow reusing parts of one macro in another, so giving cyborgs their own shortcuts to swap active module couldn't diff --git a/code/modules/language/language.dm b/code/modules/language/language.dm index 5f2e9963e7..8b9cc09dff 100644 --- a/code/modules/language/language.dm +++ b/code/modules/language/language.dm @@ -35,7 +35,8 @@ return TRUE /datum/language/proc/get_icon() - return "[icon2html(icon, world, icon_state)]" + var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/goonchat) + return sheet.icon_tag("language-[icon_state]") /datum/language/proc/get_random_name(gender, name_count=2, syllable_count=4, syllable_divisor=2) if(!syllables || !syllables.len) diff --git a/code/modules/mapping/reader.dm b/code/modules/mapping/reader.dm index c0d9e65653..381ce4bffe 100644 --- a/code/modules/mapping/reader.dm +++ b/code/modules/mapping/reader.dm @@ -474,3 +474,4 @@ GLOBAL_DATUM_INIT(_preloader, /dmm_suite/preloader, new) /turf/template_noop name = "Turf Passthrough" icon_state = "noop" + bullet_bounce_sound = null diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm index 3afbb42420..86499e694b 100644 --- a/code/modules/mining/abandoned_crates.dm +++ b/code/modules/mining/abandoned_crates.dm @@ -112,7 +112,7 @@ if(90) new /obj/item/organ/heart(src) if(91) - new /obj/item/device/soulstone/anybody(src) + new /obj/item/soulstone/anybody(src) if(92) new /obj/item/katana(src) if(93) @@ -121,7 +121,7 @@ new /obj/item/storage/backpack/clown(src) new /obj/item/clothing/under/rank/clown(src) new /obj/item/clothing/shoes/clown_shoes(src) - new /obj/item/device/pda/clown(src) + new /obj/item/pda/clown(src) new /obj/item/clothing/mask/gas/clown_hat(src) new /obj/item/bikehorn(src) new /obj/item/toy/crayon/rainbow(src) @@ -129,7 +129,7 @@ if(95) new /obj/item/clothing/under/rank/mime(src) new /obj/item/clothing/shoes/sneakers/black(src) - new /obj/item/device/pda/mime(src) + new /obj/item/pda/mime(src) new /obj/item/clothing/gloves/color/white(src) new /obj/item/clothing/mask/gas/mime(src) new /obj/item/clothing/head/beret(src) @@ -187,7 +187,7 @@ /obj/structure/closet/crate/secure/loot/attackby(obj/item/W, mob/user) if(locked) - if(istype(W, /obj/item/device/multitool)) + if(istype(W, /obj/item/multitool)) to_chat(user, "DECA-CODE LOCK REPORT:") if(attempts == 1) to_chat(user, "* Anti-Tamper Bomb will activate on next failed access attempt.") diff --git a/code/modules/mining/aux_base.dm b/code/modules/mining/aux_base.dm index 8acaf2e495..e80941c405 100644 --- a/code/modules/mining/aux_base.dm +++ b/code/modules/mining/aux_base.dm @@ -24,7 +24,7 @@ interface with the mining shuttle at the landing site if a mobile beacon is also req_one_access = list(ACCESS_CARGO, ACCESS_CONSTRUCTION, ACCESS_HEADS, ACCESS_RESEARCH) var/possible_destinations clockwork = TRUE - var/obj/item/device/gps/internal/base/locator + var/obj/item/gps/internal/base/locator circuit = /obj/item/circuitboard/computer/auxillary_base /obj/machinery/computer/auxillary_base/Initialize() @@ -184,20 +184,19 @@ interface with the mining shuttle at the landing site if a mobile beacon is also return ZONE_SET -/obj/item/device/assault_pod/mining +/obj/item/assault_pod/mining name = "Landing Field Designator" icon_state = "gangtool-purple" item_state = "electronic" lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - icon = 'icons/obj/device.dmi' desc = "Deploy to designate the landing zone of the auxillary base." w_class = WEIGHT_CLASS_SMALL shuttle_id = "colony_drop" var/setting = FALSE var/no_restrictions = FALSE //Badmin variable to let you drop the colony ANYWHERE. -/obj/item/device/assault_pod/mining/attack_self(mob/living/user) +/obj/item/assault_pod/mining/attack_self(mob/living/user) if(setting) return @@ -231,7 +230,7 @@ interface with the mining shuttle at the landing site if a mobile beacon is also if(BAD_TURF) to_chat(user, "The landing zone contains turfs unsuitable for a base. Make sure you've removed all walls and dangerous terrain from the landing zone.") -/obj/item/device/assault_pod/mining/unrestricted +/obj/item/assault_pod/mining/unrestricted name = "omni-locational landing field designator" desc = "Allows the deployment of the mining base ANYWHERE. Use with caution." no_restrictions = TRUE diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm index fc26fac0bc..61d439667d 100644 --- a/code/modules/mining/equipment/explorer_gear.dm +++ b/code/modules/mining/equipment/explorer_gear.dm @@ -11,7 +11,7 @@ heat_protection = CHEST|GROIN|LEGS|ARMS hoodtype = /obj/item/clothing/head/hooded/explorer armor = list("melee" = 30, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 50) - allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/device/mining_scanner, /obj/item/device/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe) resistance_flags = FIRE_PROOF /obj/item/clothing/head/hooded/explorer @@ -25,11 +25,19 @@ armor = list("melee" = 30, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 50) resistance_flags = FIRE_PROOF +/obj/item/clothing/suit/hooded/explorer/Initialize() + . = ..() + AddComponent(/datum/component/armor_plate) + +/obj/item/clothing/head/hooded/explorer/Initialize() + . = ..() + AddComponent(/datum/component/armor_plate) + /obj/item/clothing/mask/gas/explorer name = "explorer gas mask" desc = "A military-grade gas mask that can be connected to an air supply." icon_state = "gas_mining" - visor_flags = BLOCK_GAS_SMOKE_EFFECT_1 | MASKINTERNALS_1 + visor_flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS visor_flags_inv = HIDEFACIALHAIR visor_flags_cover = MASKCOVERSMOUTH actions_types = list(/datum/action/item_action/adjust) @@ -52,12 +60,12 @@ desc = "Hostile Environment Cross-Kinetic Suit: A suit designed to withstand the wide variety of hazards from Lavaland. It wasn't enough for its last owner." icon_state = "hostile_env" item_state = "hostile_env" - flags_1 = THICKMATERIAL_1 //not spaceproof + clothing_flags = THICKMATERIAL //not spaceproof max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | LAVA_PROOF slowdown = 0 armor = list("melee" = 70, "bullet" = 40, "laser" = 10, "energy" = 10, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) - allowed = list(/obj/item/device/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/device/mining_scanner, /obj/item/device/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe) /obj/item/clothing/suit/space/hostile_environment/Initialize() . = ..() @@ -84,7 +92,7 @@ item_state = "hostile_env" w_class = WEIGHT_CLASS_NORMAL max_heat_protection_temperature = FIRE_IMMUNITY_HELM_MAX_TEMP_PROTECT - flags_1 = THICKMATERIAL_1 // no space protection + clothing_flags = THICKMATERIAL // no space protection armor = list("melee" = 70, "bullet" = 40, "laser" = 10, "energy" = 10, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) resistance_flags = FIRE_PROOF | LAVA_PROOF @@ -106,4 +114,3 @@ var/mutable_appearance/M = mutable_appearance('icons/mob/head.dmi', "hostile_env_glass") M.appearance_flags = RESET_COLOR . += M - diff --git a/code/modules/mining/equipment/goliath_hide.dm b/code/modules/mining/equipment/goliath_hide.dm index b266b92584..85feaecf73 100644 --- a/code/modules/mining/equipment/goliath_hide.dm +++ b/code/modules/mining/equipment/goliath_hide.dm @@ -9,38 +9,4 @@ novariants = FALSE flags_1 = NOBLUDGEON_1 w_class = WEIGHT_CLASS_NORMAL - layer = MOB_LAYER - var/static/list/goliath_platable_armor_typecache = typecacheof(list( - /obj/item/clothing/head/helmet/space/hardsuit/mining, - /obj/item/clothing/suit/space/hardsuit/mining, - /obj/item/clothing/head/hooded/explorer, - /obj/item/clothing/suit/hooded/explorer)) - -/obj/item/stack/sheet/animalhide/goliath_hide/afterattack(atom/target, mob/user, proximity_flag) - if(!proximity_flag) - return - if(is_type_in_typecache(target, goliath_platable_armor_typecache)) - var/obj/item/clothing/C = target - if(C.armor.melee < 60) - C.armor = C.armor.setRating(melee = min(C.armor.melee + 10, 60)) - to_chat(user, "You strengthen [target], improving its resistance against melee attacks.") - use(1) - else - to_chat(user, "You can't improve [C] any further!") - else if(istype(target, /obj/mecha/working/ripley)) - var/obj/mecha/working/ripley/D = target - if(D.hides < 3) - D.hides++ - D.armor = D.armor.setRating(\ - melee = min(D.armor.melee + 10, 70),\ - bullet = min(D.armor.bullet + 5, 50),\ - laser = min(D.armor.laser + 5, 50)) - to_chat(user, "You strengthen [target], improving its resistance against melee attacks.") - D.update_icon() - if(D.hides == 3) - D.desc = "Autonomous Power Loader Unit. It's wearing a fearsome carapace entirely composed of goliath hide plates - its pilot must be an experienced monster hunter." - else - D.desc = "Autonomous Power Loader Unit. Its armour is enhanced with some goliath hide plates." - use(1) - else - to_chat(user, "You can't improve [D] any further!") + layer = MOB_LAYER \ No newline at end of file diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm index 5b86a2d340..558147af23 100644 --- a/code/modules/mining/equipment/kinetic_crusher.dm +++ b/code/modules/mining/equipment/kinetic_crusher.dm @@ -10,7 +10,7 @@ While it is an effective mining tool, it did little to aid any but the most skilled and/or suicidal miners against local fauna." force = 20 //As much as a bone spear, but this is significantly more annoying to carry around due to requiring the use of both hands at all times w_class = WEIGHT_CLASS_BULKY - slot_flags = SLOT_BACK + slot_flags = ITEM_SLOT_BACK force_unwielded = 20 //It's never not wielded so these are the same force_wielded = 20 throwforce = 5 diff --git a/code/modules/mining/equipment/mineral_scanner.dm b/code/modules/mining/equipment/mineral_scanner.dm index ec3dda28a0..d7cdba8f7b 100644 --- a/code/modules/mining/equipment/mineral_scanner.dm +++ b/code/modules/mining/equipment/mineral_scanner.dm @@ -1,5 +1,5 @@ /**********************Mining Scanners**********************/ -/obj/item/device/mining_scanner +/obj/item/mining_scanner desc = "A scanner that checks surrounding rock for useful minerals; it can also be used to stop gibtonite detonations." name = "manual mining scanner" icon_state = "mining1" @@ -8,11 +8,11 @@ righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' w_class = WEIGHT_CLASS_SMALL flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT var/cooldown = 35 var/current_cooldown = 0 -/obj/item/device/mining_scanner/attack_self(mob/user) +/obj/item/mining_scanner/attack_self(mob/user) if(!user.client) return if(current_cooldown <= world.time) @@ -20,15 +20,15 @@ mineral_scan_pulse(get_turf(user)) //Debug item to identify all ore spread quickly -/obj/item/device/mining_scanner/admin +/obj/item/mining_scanner/admin -/obj/item/device/mining_scanner/admin/attack_self(mob/user) +/obj/item/mining_scanner/admin/attack_self(mob/user) for(var/turf/closed/mineral/M in world) if(M.scan_state) M.icon_state = M.scan_state qdel(src) -/obj/item/device/t_scanner/adv_mining_scanner +/obj/item/t_scanner/adv_mining_scanner desc = "A scanner that automatically checks surrounding rock for useful minerals; it can also be used to stop gibtonite detonations. This one has an extended range." name = "advanced automatic mining scanner" icon_state = "mining0" @@ -37,18 +37,18 @@ righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' w_class = WEIGHT_CLASS_SMALL flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT var/cooldown = 35 var/current_cooldown = 0 var/range = 7 -/obj/item/device/t_scanner/adv_mining_scanner/lesser +/obj/item/t_scanner/adv_mining_scanner/lesser name = "automatic mining scanner" desc = "A scanner that automatically checks surrounding rock for useful minerals; it can also be used to stop gibtonite detonations." range = 4 cooldown = 50 -/obj/item/device/t_scanner/adv_mining_scanner/scan() +/obj/item/t_scanner/adv_mining_scanner/scan() if(current_cooldown <= world.time) current_cooldown = world.time + cooldown var/turf/t = get_turf(src) diff --git a/code/modules/mining/equipment/mining_tools.dm b/code/modules/mining/equipment/mining_tools.dm index e73349198b..cbd8717869 100644 --- a/code/modules/mining/equipment/mining_tools.dm +++ b/code/modules/mining/equipment/mining_tools.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/mining.dmi' icon_state = "pickaxe" flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT | SLOT_BACK + slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK force = 15 throwforce = 10 item_state = "pickaxe" @@ -30,7 +30,7 @@ icon_state = "minipick" force = 10 throwforce = 7 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_NORMAL materials = list(MAT_METAL=1000) @@ -54,7 +54,7 @@ name = "mining drill" icon_state = "handdrill" item_state = "jackhammer" - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT toolspeed = 0.6 //available from roundstart, faster than a pickaxe. usesound = 'sound/weapons/drill.ogg' hitsound = 'sound/weapons/drill.ogg' @@ -93,7 +93,7 @@ lefthand_file = 'icons/mob/inhands/equipment/mining_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/mining_righthand.dmi' flags_1 = CONDUCT_1 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT force = 8 tool_behaviour = TOOL_SHOVEL toolspeed = 1 diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm index 1c3655507e..8ad4053f6a 100644 --- a/code/modules/mining/equipment/survival_pod.dm +++ b/code/modules/mining/equipment/survival_pod.dm @@ -139,7 +139,7 @@ add_overlay("sleeper_cover") //Computer -/obj/item/device/gps/computer +/obj/item/gps/computer name = "pod computer" icon_state = "pod_computer" icon = 'icons/obj/lavaland/pod_computer.dmi' @@ -147,18 +147,18 @@ density = TRUE pixel_y = -32 -/obj/item/device/gps/computer/wrench_act(mob/living/user, obj/item/I) +/obj/item/gps/computer/wrench_act(mob/living/user, obj/item/I) if(flags_1 & NODECONSTRUCT_1) return TRUE user.visible_message("[user] disassembles [src].", "You start to disassemble [src]...", "You hear clanking and banging noises.") if(I.use_tool(src, user, 20, volume=50)) - new /obj/item/device/gps(loc) + new /obj/item/gps(loc) qdel(src) return TRUE -/obj/item/device/gps/computer/attack_hand(mob/user) +/obj/item/gps/computer/attack_hand(mob/user) . = ..() if(.) return @@ -196,7 +196,7 @@ var/obj/item/storage/pill_bottle/dice/D = new(src) load(D) else - var/obj/item/device/instrument/guitar/G = new(src) + var/obj/item/instrument/guitar/G = new(src) load(G) /obj/machinery/smartfridge/survival_pod/accept_check(obj/item/O) diff --git a/code/modules/mining/equipment/wormhole_jaunter.dm b/code/modules/mining/equipment/wormhole_jaunter.dm index 42e69f8fb2..b8ae25a87a 100644 --- a/code/modules/mining/equipment/wormhole_jaunter.dm +++ b/code/modules/mining/equipment/wormhole_jaunter.dm @@ -1,5 +1,5 @@ /**********************Jaunter**********************/ -/obj/item/device/wormhole_jaunter +/obj/item/wormhole_jaunter name = "wormhole jaunter" desc = "A single use device harnessing outdated wormhole technology, Nanotrasen has since turned its eyes to blue space for more accurate teleportation. The wormholes it creates are unpleasant to travel through, to say the least.\nThanks to modifications provided by the Free Golems, this jaunter can be worn on the belt to provide protection from chasms." icon = 'icons/obj/mining.dmi' @@ -11,31 +11,31 @@ w_class = WEIGHT_CLASS_SMALL throw_speed = 3 throw_range = 5 - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT -/obj/item/device/wormhole_jaunter/attack_self(mob/user) +/obj/item/wormhole_jaunter/attack_self(mob/user) user.visible_message("[user.name] activates the [src.name]!") SSblackbox.record_feedback("tally", "jaunter", 1, "User") // user activated activate(user, TRUE) -/obj/item/device/wormhole_jaunter/proc/turf_check(mob/user) +/obj/item/wormhole_jaunter/proc/turf_check(mob/user) var/turf/device_turf = get_turf(user) if(!device_turf || is_centcom_level(device_turf.z) || is_transit_level(device_turf.z)) to_chat(user, "You're having difficulties getting the [src.name] to work.") return FALSE return TRUE -/obj/item/device/wormhole_jaunter/proc/get_destinations(mob/user) +/obj/item/wormhole_jaunter/proc/get_destinations(mob/user) var/list/destinations = list() - for(var/obj/item/device/beacon/B in GLOB.teleportbeacons) + for(var/obj/item/beacon/B in GLOB.teleportbeacons) var/turf/T = get_turf(B) if(is_station_level(T.z)) destinations += B return destinations -/obj/item/device/wormhole_jaunter/proc/activate(mob/user, adjacent) +/obj/item/wormhole_jaunter/proc/activate(mob/user, adjacent) if(!turf_check(user)) return @@ -50,10 +50,10 @@ playsound(src,'sound/effects/sparks4.ogg',50,1) qdel(src) -/obj/item/device/wormhole_jaunter/emp_act(power) +/obj/item/wormhole_jaunter/emp_act(power) var/triggered = FALSE - if(usr.get_item_by_slot(slot_belt) == src) + if(usr.get_item_by_slot(SLOT_BELT) == src) if(power == 1) triggered = TRUE else if(power == 2 && prob(50)) @@ -64,9 +64,9 @@ SSblackbox.record_feedback("tally", "jaunter", 1, "EMP") // EMP accidental activation activate(usr) -/obj/item/device/wormhole_jaunter/proc/chasm_react(mob/user) - if(user.get_item_by_slot(slot_belt) == src) - to_chat(user, "Your [src] activates, saving you from the chasm!
    ") +/obj/item/wormhole_jaunter/proc/chasm_react(mob/user) + if(user.get_item_by_slot(SLOT_BELT) == src) + to_chat(user, "Your [name] activates, saving you from the chasm!") SSblackbox.record_feedback("tally", "jaunter", 1, "Chasm") // chasm automatic activation activate(user, FALSE) else diff --git a/code/modules/mining/laborcamp/laborstacker.dm b/code/modules/mining/laborcamp/laborstacker.dm index a5b69b1856..43faa48337 100644 --- a/code/modules/mining/laborcamp/laborstacker.dm +++ b/code/modules/mining/laborcamp/laborstacker.dm @@ -12,12 +12,12 @@ var/obj/item/card/id/prisoner/inserted_id var/obj/machinery/door/airlock/release_door var/door_tag = "prisonshuttle" - var/obj/item/device/radio/Radio //needed to send messages to sec radio + var/obj/item/radio/Radio //needed to send messages to sec radio /obj/machinery/mineral/labor_claim_console/Initialize() . = ..() - Radio = new/obj/item/device/radio(src) + Radio = new/obj/item/radio(src) Radio.listening = FALSE locate_stacking_machine() diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 45ede2d337..272a66766e 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -14,11 +14,11 @@ var/loot = rand(1,27) switch(loot) if(1) - new /obj/item/device/shared_storage/red(src) + new /obj/item/shared_storage/red(src) if(2) new /obj/item/clothing/suit/space/hardsuit/cult(src) if(3) - new /obj/item/device/soulstone/anybody(src) + new /obj/item/soulstone/anybody(src) if(4) new /obj/item/katana/cursed(src) if(5) @@ -54,11 +54,11 @@ else new /obj/item/disk/design_disk/modkit_disc/bounty(src) if(18) - new /obj/item/device/warp_cube/red(src) + new /obj/item/warp_cube/red(src) if(19) - new /obj/item/device/wisp_lantern(src) + new /obj/item/wisp_lantern(src) if(20) - new /obj/item/device/immortality_talisman(src) + new /obj/item/immortality_talisman(src) if(21) new /obj/item/gun/magic/hook(src) if(22) @@ -193,7 +193,7 @@ activated = TRUE //Wisp Lantern -/obj/item/device/wisp_lantern +/obj/item/wisp_lantern name = "spooky lantern" desc = "This lantern gives off no light, but is home to a friendly wisp." icon = 'icons/obj/lighting.dmi' @@ -203,7 +203,7 @@ righthand_file = 'icons/mob/inhands/equipment/mining_righthand.dmi' var/obj/effect/wisp/wisp -/obj/item/device/wisp_lantern/attack_self(mob/user) +/obj/item/wisp_lantern/attack_self(mob/user) if(!wisp) to_chat(user, "The wisp has gone missing!") return @@ -229,11 +229,11 @@ icon_state = "lantern-blue" SSblackbox.record_feedback("tally", "wisp_lantern", 1, "Returned") -/obj/item/device/wisp_lantern/Initialize() +/obj/item/wisp_lantern/Initialize() . = ..() wisp = new(src) -/obj/item/device/wisp_lantern/Destroy() +/obj/item/wisp_lantern/Destroy() if(wisp) if(wisp.loc == src) qdel(wisp) @@ -250,16 +250,16 @@ layer = ABOVE_ALL_MOB_LAYER //Red/Blue Cubes -/obj/item/device/warp_cube +/obj/item/warp_cube name = "blue cube" desc = "A mysterious blue cube." icon = 'icons/obj/lavaland/artefacts.dmi' icon_state = "blue_cube" var/teleport_color = "#3FBAFD" - var/obj/item/device/warp_cube/linked + var/obj/item/warp_cube/linked var/teleporting = FALSE -/obj/item/device/warp_cube/attack_self(mob/user) +/obj/item/warp_cube/attack_self(mob/user) if(!linked) to_chat(user, "[src] fizzles uselessly.") return @@ -292,16 +292,16 @@ user.forceMove(get_turf(link_holder)) qdel(link_holder) -/obj/item/device/warp_cube/red +/obj/item/warp_cube/red name = "red cube" desc = "A mysterious red cube." icon_state = "red_cube" teleport_color = "#FD3F48" -/obj/item/device/warp_cube/red/Initialize() +/obj/item/warp_cube/red/Initialize() . = ..() if(!linked) - var/obj/item/device/warp_cube/blue = new(src.loc) + var/obj/item/warp_cube/blue = new(src.loc) linked = blue blue.linked = src @@ -367,7 +367,7 @@ //Immortality Talisman -/obj/item/device/immortality_talisman +/obj/item/immortality_talisman name = "Immortality Talisman" desc = "A dread talisman that can render you completely invulnerable." icon = 'icons/obj/lavaland/artefacts.dmi' @@ -375,20 +375,20 @@ actions_types = list(/datum/action/item_action/immortality) var/cooldown = 0 -/obj/item/device/immortality_talisman/Initialize() +/obj/item/immortality_talisman/Initialize() . = ..() AddComponent(/datum/component/anti_magic, TRUE, TRUE) /datum/action/item_action/immortality name = "Immortality" -/obj/item/device/immortality_talisman/Destroy(force) +/obj/item/immortality_talisman/Destroy(force) if(force) . = ..() else return QDEL_HINT_LETMELIVE -/obj/item/device/immortality_talisman/attack_self(mob/user) +/obj/item/immortality_talisman/attack_self(mob/user) if(cooldown < world.time) SSblackbox.record_feedback("amount", "immortality_talisman_uses", 1) cooldown = world.time + 600 @@ -402,7 +402,7 @@ user.status_flags |= GODMODE addtimer(CALLBACK(src, .proc/return_to_reality, user, Z), 100) -/obj/item/device/immortality_talisman/proc/return_to_reality(mob/user, obj/effect/immortality_talisman/Z) +/obj/item/immortality_talisman/proc/return_to_reality(mob/user, obj/effect/immortality_talisman/Z) user.status_flags &= ~GODMODE user.notransform = 0 user.forceMove(get_turf(Z)) @@ -433,27 +433,27 @@ //Shared Bag -/obj/item/device/shared_storage +/obj/item/shared_storage name = "paradox bag" desc = "Somehow, it's in two places at once." icon = 'icons/obj/storage.dmi' icon_state = "cultpack" - slot_flags = SLOT_BACK + slot_flags = ITEM_SLOT_BACK resistance_flags = INDESTRUCTIBLE -/obj/item/device/shared_storage/red +/obj/item/shared_storage/red name = "paradox bag" desc = "Somehow, it's in two places at once." -/obj/item/device/shared_storage/red/Initialize() +/obj/item/shared_storage/red/Initialize() . = ..() var/datum/component/storage/STR = AddComponent(/datum/component/storage/concrete) STR.max_w_class = WEIGHT_CLASS_NORMAL STR.max_combined_w_class = 60 STR.max_items = 21 - new /obj/item/device/shared_storage/blue(drop_location(), STR) + new /obj/item/shared_storage/blue(drop_location(), STR) -/obj/item/device/shared_storage/blue/Initialize(mapload, datum/component/storage/concrete/master) +/obj/item/shared_storage/blue/Initialize(mapload, datum/component/storage/concrete/master) . = ..() if(!istype(master)) return INITIALIZE_HINT_QDEL @@ -558,7 +558,7 @@ inhand_y_dimension = 64 icon_state = "cleaving_saw" icon_state_on = "cleaving_saw_open" - slot_flags = SLOT_BELT + slot_flags = ITEM_SLOT_BELT attack_verb_off = list("attacked", "sawed", "sliced", "torn", "ripped", "diced", "cut") attack_verb_on = list("cleaved", "swiped", "slashed", "chopped") hitsound = 'sound/weapons/bladeslice.ogg' @@ -816,7 +816,7 @@ lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' icon = 'icons/obj/guns/magic.dmi' - slot_flags = SLOT_BACK + slot_flags = ITEM_SLOT_BACK w_class = WEIGHT_CLASS_BULKY force = 25 damtype = BURN @@ -993,7 +993,7 @@ righthand_file = 'icons/mob/inhands/64x64_righthand.dmi' inhand_x_dimension = 64 inhand_y_dimension = 64 - slot_flags = SLOT_BACK + slot_flags = ITEM_SLOT_BACK w_class = WEIGHT_CLASS_BULKY force = 15 attack_verb = list("clubbed", "beat", "pummeled") diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index bb5347a152..c7ba9ad6f4 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -84,7 +84,7 @@ /obj/machinery/mineral/processing_unit/Initialize() . = ..() proximity_monitor = new(src, 1) - AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE), INFINITY) + AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE), INFINITY, FALSE, list(/obj/item/stack)) stored_research = new /datum/techweb/specialized/autounlocking/smelter /obj/machinery/mineral/processing_unit/Destroy() diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index b3b7bd29d3..d4735d1c75 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -28,7 +28,7 @@ /obj/machinery/mineral/ore_redemption/Initialize() . = ..() - AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE),INFINITY) + AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE),INFINITY, FALSE, list(/obj/item/stack)) stored_research = new /datum/techweb/specialized/autounlocking/smelter /obj/machinery/mineral/ore_redemption/Destroy() @@ -148,8 +148,6 @@ send_console_message() /obj/machinery/mineral/ore_redemption/attackby(obj/item/W, mob/user, params) - if(exchange_parts(user, W)) - return GET_COMPONENT(materials, /datum/component/material_container) if(default_pry_open(W)) materials.retrieve_all() @@ -173,7 +171,7 @@ interact(user) return - if(istype(W, /obj/item/device/multitool) && panel_open) + if(istype(W, /obj/item/multitool) && panel_open) input_dir = turn(input_dir, -90) output_dir = turn(output_dir, -90) to_chat(user, "You change [src]'s I/O settings, setting the input to [dir2text(input_dir)] and the output to [dir2text(output_dir)].") @@ -305,13 +303,12 @@ desired = input("How many sheets?", "How many sheets would you like to smelt?", 1) as null|num var/amount = round(min(desired,50,smelt_amount)) materials.use_amount(alloy.materials, amount) - var/output = new alloy.build_path(src) - if(istype(output, /obj/item/stack/sheet)) - var/obj/item/stack/sheet/produced_alloy = output - produced_alloy.amount = amount - unload_mineral(produced_alloy) + var/output + if(ispath(alloy.build_path, /obj/item/stack/sheet)) + output = new alloy.build_path(src, amount) else - unload_mineral(output) + output = new alloy.build_path(src) + unload_mineral(output) else to_chat(usr, "Required access not found.") return TRUE diff --git a/code/modules/mining/machine_stacking.dm b/code/modules/mining/machine_stacking.dm index e658f69395..0f84d11082 100644 --- a/code/modules/mining/machine_stacking.dm +++ b/code/modules/mining/machine_stacking.dm @@ -7,20 +7,23 @@ desc = "Controls a stacking machine... in theory." density = FALSE anchored = TRUE - var/obj/machinery/mineral/stacking_machine/machine = null + circuit = /obj/item/circuitboard/machine/stacking_unit_console + var/obj/machinery/mineral/stacking_machine/machine var/machinedir = SOUTHEAST - speed_process = TRUE /obj/machinery/mineral/stacking_unit_console/Initialize() . = ..() machine = locate(/obj/machinery/mineral/stacking_machine, get_step(src, machinedir)) if (machine) machine.CONSOLE = src - else - qdel(src) /obj/machinery/mineral/stacking_unit_console/ui_interact(mob/user) . = ..() + + if(!machine) + to_chat(user, "[src] is not linked to a machine!") + return + var/obj/item/stack/sheet/s var/dat @@ -35,6 +38,13 @@ user << browse(dat, "window=console_stacking_machine") +/obj/machinery/mineral/stacking_unit_console/multitool_act(mob/living/user, obj/item/I) + if(istype(I, /obj/item/multitool)) + var/obj/item/multitool/M = I + M.buffer = src + to_chat(user, "You store linkage information in [I]'s buffer.") + return TRUE + /obj/machinery/mineral/stacking_unit_console/Topic(href, href_list) if(..()) return @@ -44,8 +54,7 @@ if(!(text2path(href_list["release"]) in machine.stack_list)) return //someone tried to spawn materials by spoofing hrefs var/obj/item/stack/sheet/inp = machine.stack_list[text2path(href_list["release"])] - var/obj/item/stack/sheet/out = new inp.type() - out.amount = inp.amount + var/obj/item/stack/sheet/out = new inp.type(null, inp.amount) inp.amount = 0 machine.unload_mineral(out) @@ -63,6 +72,7 @@ desc = "A machine that automatically stacks acquired materials. Controlled by a nearby console." density = TRUE anchored = TRUE + circuit = /obj/item/circuitboard/machine/stacking_machine var/obj/machinery/mineral/stacking_unit_console/CONSOLE var/stk_types = list() var/stk_amt = list() @@ -79,16 +89,26 @@ if(istype(AM, /obj/item/stack/sheet) && AM.loc == get_step(src, input_dir)) process_sheet(AM) +/obj/machinery/mineral/stacking_machine/multitool_act(mob/living/user, obj/item/I) + if(istype(I, /obj/item/multitool)) + var/obj/item/multitool/M = I + if(!istype(M.buffer, /obj/machinery/mineral/stacking_unit_console)) + to_chat(user, "The [I] has no linkage data in its buffer.") + return FALSE + else + CONSOLE = M.buffer + CONSOLE.machine = src + to_chat(user, "You link [src] to the console in [I]'s buffer.") + return TRUE + /obj/machinery/mineral/stacking_machine/proc/process_sheet(obj/item/stack/sheet/inp) if(!(inp.type in stack_list)) //It's the first of this sheet added - var/obj/item/stack/sheet/s = new inp.type(src,0) - s.amount = 0 + var/obj/item/stack/sheet/s = new inp.type(src, 0) stack_list[inp.type] = s var/obj/item/stack/sheet/storage = stack_list[inp.type] storage.amount += inp.amount //Stack the sheets qdel(inp) //Let the old sheet garbage collect while(storage.amount > stack_amt) //Get rid of excessive stackage - var/obj/item/stack/sheet/out = new inp.type() - out.amount = stack_amt + var/obj/item/stack/sheet/out = new inp.type(null, stack_amt) unload_mineral(out) storage.amount -= stack_amt diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index 1fd1ff3e38..3a188b7ab2 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -18,9 +18,9 @@ new /datum/data/mining_equipment("Absinthe", /obj/item/reagent_containers/food/drinks/bottle/absinthe/premium, 100), new /datum/data/mining_equipment("Cigar", /obj/item/clothing/mask/cigarette/cigar/havana, 150), new /datum/data/mining_equipment("Soap", /obj/item/soap/nanotrasen, 200), - new /datum/data/mining_equipment("Laser Pointer", /obj/item/device/laser_pointer, 300), + new /datum/data/mining_equipment("Laser Pointer", /obj/item/laser_pointer, 300), new /datum/data/mining_equipment("Alien Toy", /obj/item/clothing/mask/facehugger/toy, 300), - new /datum/data/mining_equipment("Advanced Scanner", /obj/item/device/t_scanner/adv_mining_scanner, 800), + new /datum/data/mining_equipment("Advanced Scanner", /obj/item/t_scanner/adv_mining_scanner, 800), new /datum/data/mining_equipment("Stabilizing Serum", /obj/item/hivelordstabilizer, 400), new /datum/data/mining_equipment("Fulton Beacon", /obj/item/fulton_core, 400), new /datum/data/mining_equipment("Shelter Capsule", /obj/item/survivalcapsule, 400), @@ -30,7 +30,7 @@ new /datum/data/mining_equipment("Survival Medipen", /obj/item/reagent_containers/hypospray/medipen/survival, 500), new /datum/data/mining_equipment("Brute First-Aid Kit", /obj/item/storage/firstaid/brute, 600), new /datum/data/mining_equipment("Tracking Implant Kit", /obj/item/storage/box/minertracker, 600), - new /datum/data/mining_equipment("Jaunter", /obj/item/device/wormhole_jaunter, 750), + new /datum/data/mining_equipment("Jaunter", /obj/item/wormhole_jaunter, 750), new /datum/data/mining_equipment("Kinetic Crusher", /obj/item/twohanded/required/kinetic_crusher, 750), new /datum/data/mining_equipment("Kinetic Accelerator", /obj/item/gun/energy/kinetic_accelerator, 750), new /datum/data/mining_equipment("Resonator", /obj/item/resonator, 800), @@ -46,8 +46,8 @@ new /datum/data/mining_equipment("Jump Boots", /obj/item/clothing/shoes/bhop, 2500), new /datum/data/mining_equipment("Luxury Shelter Capsule", /obj/item/survivalcapsule/luxury, 3000), new /datum/data/mining_equipment("Nanotrasen Minebot", /mob/living/simple_animal/hostile/mining_drone, 800), - new /datum/data/mining_equipment("Minebot Melee Upgrade", /obj/item/device/mine_bot_upgrade, 400), - new /datum/data/mining_equipment("Minebot Armor Upgrade", /obj/item/device/mine_bot_upgrade/health, 400), + new /datum/data/mining_equipment("Minebot Melee Upgrade", /obj/item/mine_bot_upgrade, 400), + new /datum/data/mining_equipment("Minebot Armor Upgrade", /obj/item/mine_bot_upgrade/health, 400), new /datum/data/mining_equipment("Minebot Cooldown Upgrade", /obj/item/borg/upgrade/modkit/cooldown/minebot, 600), new /datum/data/mining_equipment("Minebot AI Upgrade", /obj/item/slimepotion/slime/sentience/mining, 1000), new /datum/data/mining_equipment("KA Minebot Passthrough", /obj/item/borg/upgrade/modkit/minebot_passthrough, 100), @@ -173,7 +173,7 @@ new /obj/item/storage/belt/mining/vendor(drop_location) if("Resonator Kit") new /obj/item/storage/belt/mining/alt(drop_location) - new /obj/item/device/t_scanner/adv_mining_scanner(drop_location) + new /obj/item/t_scanner/adv_mining_scanner(drop_location) new /obj/item/extinguisher/mini(drop_location) new /obj/item/resonator(drop_location) if("Minebot Kit") @@ -187,7 +187,7 @@ new /obj/item/stack/marker_beacon/thirty(drop_location) if("Crusher Kit") new /obj/item/storage/belt/mining/alt(drop_location) - new /obj/item/device/t_scanner/adv_mining_scanner(drop_location) + new /obj/item/t_scanner/adv_mining_scanner(drop_location) new /obj/item/extinguisher/mini(drop_location) new /obj/item/twohanded/required/kinetic_crusher(drop_location) if("Mining Conscription Kit") @@ -281,9 +281,9 @@ /obj/item/storage/backpack/duffelbag/mining_conscript/PopulateContents() new /obj/item/pickaxe/mini(src) new /obj/item/clothing/glasses/meson(src) - new /obj/item/device/t_scanner/adv_mining_scanner/lesser(src) + new /obj/item/t_scanner/adv_mining_scanner/lesser(src) new /obj/item/storage/bag/ore(src) new /obj/item/clothing/suit/hooded/explorer(src) - new /obj/item/device/encryptionkey/headset_cargo(src) + new /obj/item/encryptionkey/headset_cargo(src) new /obj/item/clothing/mask/gas/explorer(src) new /obj/item/card/mining_access_card(src) diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index d188ce26aa..a1ba493d46 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -52,15 +52,15 @@ new /obj/item/storage/box/emptysandbags(src) new /obj/item/shovel(src) new /obj/item/pickaxe/mini(src) - new /obj/item/device/radio/headset/headset_cargo/mining(src) - new /obj/item/device/flashlight/seclite(src) + new /obj/item/radio/headset/headset_cargo/mining(src) + new /obj/item/flashlight/seclite(src) new /obj/item/storage/bag/plants(src) new /obj/item/storage/bag/ore(src) - new /obj/item/device/t_scanner/adv_mining_scanner/lesser(src) + new /obj/item/t_scanner/adv_mining_scanner/lesser(src) new /obj/item/gun/energy/kinetic_accelerator(src) new /obj/item/clothing/glasses/meson(src) new /obj/item/survivalcapsule(src) - new /obj/item/device/assault_pod/mining(src) + new /obj/item/assault_pod/mining(src) /**********************Shuttle Computer**************************/ diff --git a/code/modules/mining/minebot.dm b/code/modules/mining/minebot.dm index c73b9fad01..23d8d816d4 100644 --- a/code/modules/mining/minebot.dm +++ b/code/modules/mining/minebot.dm @@ -100,7 +100,7 @@ to_chat(user, "You repair some of the armor on [src].") /mob/living/simple_animal/hostile/mining_drone/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/device/mining_scanner) || istype(I, /obj/item/device/t_scanner/adv_mining_scanner)) + if(istype(I, /obj/item/mining_scanner) || istype(I, /obj/item/t_scanner/adv_mining_scanner)) to_chat(user, "You instruct [src] to drop any collected ore.") DropOre() return @@ -263,18 +263,18 @@ //Melee -/obj/item/device/mine_bot_upgrade +/obj/item/mine_bot_upgrade name = "minebot melee upgrade" desc = "A minebot upgrade." icon_state = "door_electronics" icon = 'icons/obj/module.dmi' -/obj/item/device/mine_bot_upgrade/afterattack(mob/living/simple_animal/hostile/mining_drone/M, mob/user, proximity) +/obj/item/mine_bot_upgrade/afterattack(mob/living/simple_animal/hostile/mining_drone/M, mob/user, proximity) if(!istype(M) || !proximity) return upgrade_bot(M, user) -/obj/item/device/mine_bot_upgrade/proc/upgrade_bot(mob/living/simple_animal/hostile/mining_drone/M, mob/user) +/obj/item/mine_bot_upgrade/proc/upgrade_bot(mob/living/simple_animal/hostile/mining_drone/M, mob/user) if(M.melee_damage_upper != initial(M.melee_damage_upper)) to_chat(user, "[src] already has a combat upgrade installed!") return @@ -284,10 +284,10 @@ //Health -/obj/item/device/mine_bot_upgrade/health +/obj/item/mine_bot_upgrade/health name = "minebot armor upgrade" -/obj/item/device/mine_bot_upgrade/health/upgrade_bot(mob/living/simple_animal/hostile/mining_drone/M, mob/user) +/obj/item/mine_bot_upgrade/health/upgrade_bot(mob/living/simple_animal/hostile/mining_drone/M, mob/user) if(M.maxHealth != initial(M.maxHealth)) to_chat(user, "[src] already has reinforced armor!") return diff --git a/code/modules/mining/mint.dm b/code/modules/mining/mint.dm index ec4c9bd714..b7cc0db43f 100644 --- a/code/modules/mining/mint.dm +++ b/code/modules/mining/mint.dm @@ -16,7 +16,7 @@ /obj/machinery/mineral/mint/Initialize() . = ..() - AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_PLASMA, MAT_SILVER, MAT_GOLD, MAT_URANIUM, MAT_DIAMOND, MAT_BANANIUM), MINERAL_MATERIAL_AMOUNT * 50) + AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_PLASMA, MAT_SILVER, MAT_GOLD, MAT_URANIUM, MAT_DIAMOND, MAT_BANANIUM), MINERAL_MATERIAL_AMOUNT * 50, FALSE, list(/obj/item/stack)) /obj/machinery/mineral/mint/process() var/turf/T = get_step(src, input_dir) diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index cc43c0f408..62ef7bde65 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -118,6 +118,11 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ to_chat(C, "\The [src] gets into your eyes! The pain, it burns!") qdel(src) +/obj/item/stack/ore/glass/ex_act(severity, target) + if (severity == EXPLODE_NONE) + return + qdel(src) + /obj/item/stack/ore/glass/basalt name = "volcanic ash" icon_state = "volcanic_sand" @@ -210,7 +215,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ return ..() /obj/item/twohanded/required/gibtonite/attackby(obj/item/I, mob/user, params) - if(!wires && istype(I, /obj/item/device/assembly/igniter)) + if(!wires && istype(I, /obj/item/assembly/igniter)) user.visible_message("[user] attaches [I] to [src].", "You attach [I] to [src].") wires = new /datum/wires/explosive/gibtonite(src) attacher = key_name(user) @@ -227,7 +232,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ GibtoniteReaction(user) return if(primed) - if(istype(I, /obj/item/device/mining_scanner) || istype(I, /obj/item/device/t_scanner/adv_mining_scanner) || istype(I, /obj/item/device/multitool)) + if(istype(I, /obj/item/mining_scanner) || istype(I, /obj/item/t_scanner/adv_mining_scanner) || istype(I, /obj/item/multitool)) primed = FALSE if(det_timer) deltimer(det_timer) @@ -300,10 +305,6 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ return qdel(src) -/obj/item/ore/stack/glass/ex_act(severity, target) - if (severity == EXPLODE_NONE) - return - qdel(src) /*****************************Coin********************************/ @@ -368,7 +369,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ value = 20 materials = list(MAT_SILVER = MINERAL_MATERIAL_AMOUNT*0.2) grind_results = list("silver" = 4) - + /obj/item/coin/diamond name = "diamond coin" cmineral = "diamond" diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 01ac36c57a..9de78d307d 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -234,6 +234,7 @@ if(POLLTYPE_IRV) if (!href_list["IRVdata"]) to_chat(src, "No ordering data found. Please try again or contact an administrator.") + return var/list/votelist = splittext(href_list["IRVdata"], ",") if (!vote_on_irv_poll(pollid, votelist)) to_chat(src, "Vote failed, please try again or contact an administrator.") @@ -400,7 +401,7 @@ SSticker.mode.make_antag_chance(humanc) if(humanc && CONFIG_GET(flag/roundstart_traits)) - SStraits.AssignTraits(humanc, humanc.client, TRUE) + SSquirks.AssignQuirks(humanc, humanc.client, TRUE) log_manifest(character.mind.key,character.mind,character,latejoin = TRUE) diff --git a/code/modules/mob/dead/new_player/poll.dm b/code/modules/mob/dead/new_player/poll.dm index d10e32a887..ce710e5186 100644 --- a/code/modules/mob/dead/new_player/poll.dm +++ b/code/modules/mob/dead/new_player/poll.dm @@ -211,7 +211,7 @@ src << browse(null ,"window=playerpolllist") src << browse(output,"window=playerpoll;size=500x250") if(POLLTYPE_IRV) - var/datum/asset/irv_assets = get_asset_datum(/datum/asset/simple/IRV) + var/datum/asset/irv_assets = get_asset_datum(/datum/asset/group/IRV) irv_assets.send(src) var/datum/DBQuery/query_irv_get_votes = SSdbcore.NewQuery("SELECT optionid FROM [format_table_name("poll_vote")] WHERE pollid = [pollid] AND ckey = '[ckey]'") @@ -267,7 +267,7 @@ - + "} - var/dat = "[station_name()] Stock Exchange[css]" - - dat += "Welcome, [station_name()] Cargo Department
    Credits: [balance()]
    " - for (var/datum/stock/S in GLOB.stockExchange.last_read) - var/list/LR = GLOB.stockExchange.last_read[S] - if (!(logged_in in LR)) - LR[logged_in] = 0 - dat += "View mode: [vmode ? "Compact" : "Full"] " - dat += "Stock Transaction Log: Check
    " - - dat += "This is a work in progress. Certain features may not be available." - - dat += "

    Listed stocks

    " - - if (vmode == 0) - for (var/datum/stock/S in GLOB.stockExchange.stocks) - var/mystocks = 0 - if (logged_in && (logged_in in S.shareholders)) - mystocks = S.shareholders[logged_in] - dat += "
    [S.name] ([S.short_name])[S.bankrupt ? " BANKRUPT" : null]
    " - if (S.last_unification) - dat += "Unified shares [DisplayTimeText(world.time - S.last_unification)] ago.
    " - dat += "Current value per share: [S.current_value] | View history

    " - dat += "You currently own [mystocks] shares in this company. There are [S.available_shares] purchasable shares on the market currently.
    " - if (S.bankrupt) - dat += "You cannot buy or sell shares in a bankrupt company!

    " - else - dat += "Buy shares | Sell shares

    " - dat += "Prominent products:
    " - for (var/prod in S.products) - dat += "[prod]
    " - var/news = 0 - if (logged_in) - var/list/LR = GLOB.stockExchange.last_read[S] - var/lrt = LR[logged_in] - for (var/datum/article/A in S.articles) - if (A.ticks > lrt) - news = 1 - break - if (!news) - for (var/datum/stockEvent/E in S.events) - if (E.last_change > lrt && !E.hidden) - news = 1 - break - dat += "View news archives[news ? " (updated)" : null]
    " - else if (vmode == 1) - dat += "Actions: + Buy, - Sell, (A)rchives, (H)istory

    " - dat += "" - dat += "" - - for (var/datum/stock/S in GLOB.stockExchange.stocks) - var/mystocks = 0 - if (logged_in && (logged_in in S.shareholders)) - mystocks = S.shareholders[logged_in] - - if(S.bankrupt) - dat += "" - else - dat += "" - - if(S.disp_value_change > 0) - dat += "" - else if(S.disp_value_change < 0) - dat += "" - else - dat += "" - - dat += "" - dat += "" - - if(!S.bankrupt) - dat += "" - else - dat += "" - - if(mystocks) - dat += "" - else - dat += "" - - dat += "" - var/news = 0 - if (logged_in) - var/list/LR = GLOB.stockExchange.last_read[S] - var/lrt = LR[logged_in] - for (var/datum/article/A in S.articles) - if (A.ticks > lrt) - news = 1 - break - if (!news) - for (var/datum/stockEvent/E in S.events) - if (E.last_change > lrt && !E.hidden) - news = 1 - break - dat += "" - - dat += "" - - dat += "
     IDNameValueOwnedAvailActions
    +-=[S.short_name][S.name][S.current_value]0[mystocks]0[S.available_shares]" - if (S.bankrupt) - dat += "+ - " - else - dat += "+ - " - dat += "(A) (H)
    " - - dat += "" - var/datum/browser/popup = new(user, "computer", "Stock Exchange", 600, 600) - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - -/obj/machinery/computer/stockexchange/proc/sell_some_shares(var/datum/stock/S, var/mob/user) - if (!user || !S) - return - var/li = logged_in - if (!li) - to_chat(user, "No active account on the console!") - return - var/b = SSshuttle.points - var/avail = S.shareholders[logged_in] - if (!avail) - to_chat(user, "This account does not own any shares of [S.name]!") - return - var/price = S.current_value - var/amt = round(input(user, "How many shares? \n(Have: [avail], unit price: [price])", "Sell shares in [S.name]", 0) as num|null) - amt = min(amt, S.shareholders[logged_in]) - - if (!user || (!(user in range(1, src)) && iscarbon(user))) - return - if (!amt) - return - if (li != logged_in) - return - b = SSshuttle.points - if (!isnum(b)) - to_chat(user, "No active account on the console!") - return - - var/total = amt * S.current_value - if (!S.sellShares(logged_in, amt)) - to_chat(user, "Could not complete transaction.") - return - to_chat(user, "Sold [amt] shares of [S.name] at [S.current_value] a share for [total] credits.") - GLOB.stockExchange.add_log(/datum/stock_log/sell, user.name, S.name, amt, S.current_value, total) - -/obj/machinery/computer/stockexchange/proc/buy_some_shares(var/datum/stock/S, var/mob/user) - if (!user || !S) - return - var/li = logged_in - if (!li) - to_chat(user, "No active account on the console!") - return - var/b = balance() - if (!isnum(b)) - to_chat(user, "No active account on the console!") - return - var/avail = S.available_shares - var/price = S.current_value - var/canbuy = round(b / price) - var/amt = round(input(user, "How many shares? \n(Available: [avail], unit price: [price], can buy: [canbuy])", "Buy shares in [S.name]", 0) as num|null) - if (!user || (!(user in range(1, src)) && iscarbon(user))) - return - if (li != logged_in) - return - b = balance() - if (!isnum(b)) - to_chat(user, "No active account on the console!") - return - - amt = min(amt, S.available_shares, round(b / S.current_value)) - if (!amt) - return - if (!S.buyShares(logged_in, amt)) - to_chat(user, "Could not complete transaction.") - return - - var/total = amt * S.current_value - to_chat(user, "Bought [amt] shares of [S.name] at [S.current_value] a share for [total] credits.") - GLOB.stockExchange.add_log(/datum/stock_log/buy, user.name, S.name, amt, S.current_value, total) - -/obj/machinery/computer/stockexchange/proc/do_borrowing_deal(var/datum/borrow/B, var/mob/user) - if (B.stock.borrow(B, logged_in)) - to_chat(user, "You successfully borrowed [B.share_amount] shares. Deposit: [B.deposit].") - GLOB.stockExchange.add_log(/datum/stock_log/borrow, user.name, B.stock.name, B.share_amount, B.deposit) - else - to_chat(user, "Could not complete transaction. Check your account balance.") - -/obj/machinery/computer/stockexchange/Topic(href, href_list) - if (..()) - return 1 - - if (!usr || (!(usr in range(1, src)) && iscarbon(usr))) - usr.machine = src - - if (href_list["viewhistory"]) - var/datum/stock/S = locate(href_list["viewhistory"]) in GLOB.stockExchange.stocks - if (S) - S.displayValues(usr) - - if (href_list["logout"]) - logged_in = null - - if (href_list["buyshares"]) - var/datum/stock/S = locate(href_list["buyshares"]) in GLOB.stockExchange.stocks - if (S) - buy_some_shares(S, usr) - - if (href_list["sellshares"]) - var/datum/stock/S = locate(href_list["sellshares"]) in GLOB.stockExchange.stocks - if (S) - sell_some_shares(S, usr) - - if (href_list["show_logs"]) - var/dat = "Stock Transaction Logs

    Stock Transaction Logs


    " - for(var/D in GLOB.stockExchange.logs) - var/datum/stock_log/L = D - if(istype(L, /datum/stock_log/buy)) - dat += "[L.time] | [L.user_name] bought [L.stocks] stocks at [L.shareprice] a share for [L.money] total credits in [L.company_name].
    " - continue - if(istype(L, /datum/stock_log/sell)) - dat += "[L.time] | [L.user_name] sold [L.stocks] stocks at [L.shareprice] a share for [L.money] total credits from [L.company_name].
    " - continue - if(istype(L, /datum/stock_log/borrow)) - dat += "[L.time] | [L.user_name] borrowed [L.stocks] stocks with a deposit of [L.money] credits in [L.company_name].
    " - continue - var/datum/browser/popup = new(usr, "stock_logs", "Stock Transaction Logs", 600, 400) - popup.set_content(dat) - popup.set_title_image(usr.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - - if (href_list["archive"]) - var/datum/stock/S = locate(href_list["archive"]) - if (logged_in && logged_in != "") - var/list/LR = GLOB.stockExchange.last_read[S] - LR[logged_in] = world.time - var/dat = "News feed for [S.name]

    News feed for [S.name]

    " - dat += "

    Events

    " - var/p = 0 - for (var/datum/stockEvent/E in S.events) - if (E.hidden) - continue - if (p > 0) - dat += "
    " - dat += "
    [E.current_title]
    [E.current_desc]
    " - p++ - dat += "

    Articles

    " - p = 0 - for (var/datum/article/A in S.articles) - if (p > 0) - dat += "
    " - dat += "
    [A.headline]
    [A.subtitle]

    [A.article]
    - [A.author], [A.spacetime] (via [A.outlet])
    " - p++ - dat += "
    " - var/datum/browser/popup = new(usr, "archive_[S.name]", "Stock News", 600, 400) - popup.set_content(dat) - popup.set_title_image(usr.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - - if (href_list["cycleview"]) - vmode++ - if (vmode > 1) - vmode = 0 - - src.add_fingerprint(usr) - src.updateUsrDialog() diff --git a/code/modules/stock_market/events.dm b/code/modules/stock_market/events.dm deleted file mode 100644 index a3d9023f7a..0000000000 --- a/code/modules/stock_market/events.dm +++ /dev/null @@ -1,228 +0,0 @@ -#define TIME_MULTIPLIER 0.7 // so I can speed up/slow down shit - -/datum/stockEvent - var/name = "event" - var/next_phase = 0 - var/datum/stock/company = null - var/current_title = "A company holding a pangalactic conference in the Seattle Conference Center, Seattle, Earth" - var/current_desc = "We will continue to monitor their stocks as the situation unfolds." - var/phase_id = 0 - var/hidden = 0 - var/finished = 0 - var/last_change = 0 - -/datum/stockEvent/process() - if (finished) - return - if (world.time > next_phase) - transition() - -/datum/stockEvent/proc/transition() - return - -/datum/stockEvent/proc/spacetime(var/ticks) - var/seconds = round(ticks / 10) - var/minutes = round(seconds / 60) - seconds -= minutes * 60 - return "[minutes] minute(s) and [seconds] second(s)" - -/datum/stockEvent/product - name = "product" - var/product_name = "" - var/datum/article/product_article = null - var/effect = 0 - -/datum/stockEvent/product/New(var/datum/stock/S) - company = S - var/mins = rand(5*TIME_MULTIPLIER,20*TIME_MULTIPLIER) - next_phase = mins * (600*TIME_MULTIPLIER) + world.time - current_title = "Product demo" - current_desc = S.industry.detokenize("[S.name] will unveil a new product on an upcoming %industrial% conference held at spacetime [spacetime(next_phase)]") - S.addEvent(src) - - -/datum/stockEvent/product/transition() - last_change = world.time - switch (phase_id) - if (0) - next_phase = world.time + rand(300*TIME_MULTIPLIER, 600*TIME_MULTIPLIER) * (10*TIME_MULTIPLIER) - product_name = company.industry.generateProductName(company.name) - current_title = "Product release: [product_name]" - current_desc = "[company.name] unveiled their newest product, [product_name], at a conference. Product release is expected to happen at spacetime [spacetime(next_phase)]." - var/datum/article/A = company.industry.generateInCharacterProductArticle(product_name, company) - product_article = A - effect = A.opinion + rand(-1, 1) - company.affectPublicOpinion(effect) - phase_id = 1 - if (1) - finished = 1 - hidden = 1 - company.addArticle(product_article) - effect += product_article.opinion * 5 - company.affectPublicOpinion(effect) - phase_id = 2 - company.generateEvent(type) - -/datum/stockEvent/bankruptcy - name = "bankruptcy" - var/effect = 0 - var/bailout_millions = 0 - -/datum/stockEvent/bankruptcy/New(var/datum/stock/S) - hidden = 1 - company = S - var/mins = rand(9*TIME_MULTIPLIER,60*TIME_MULTIPLIER) - bailout_millions = rand(70, 190) - next_phase = mins * 300*TIME_MULTIPLIER + world.time - current_title = "" - current_desc = "" - S.addEvent(src) - -/datum/stockEvent/bankruptcy/transition() - switch (phase_id) - if (0) - next_phase = world.time + rand(300*TIME_MULTIPLIER, 600*TIME_MULTIPLIER) * (10*TIME_MULTIPLIER) - var/datum/article/A = generateBankruptcyArticle() - if (!A.opinion) - effect = rand(5) * (prob(50) ? -1 : 1) - else - effect = prob(25) ? -A.opinion * rand(8) : A.opinion * rand(4) - company.addArticle(A) - company.affectPublicOpinion(rand(-6, -3)) - hidden = 0 - current_title = "Bailout pending due to bankruptcy" - current_desc = "The government prepared a press release, which will occur at spacetime [spacetime(next_phase)]." - phase_id = 1 - if (1) - next_phase = world.time + rand(300*TIME_MULTIPLIER, 600*TIME_MULTIPLIER) * (10*TIME_MULTIPLIER) - finished = 1 - if (effect <= -5 && prob(10)) - current_title = "[company.name]: Complete crash" - current_desc = "The company had gone bankrupt, was not bailed out and could not recover. No further stock trade will take place. All shares in the company are effectively worthless." - company.bankrupt = 1 - for (var/X in company.shareholders) - var/amt = company.shareholders[X] - GLOB.stockExchange.balanceLog(X, -amt * company.current_value) - company.shareholders = list() - company.current_value = 0 - company.borrow_brokers = list() - GLOB.stockExchange.generateStocks(1) - - var/bailout = (effect > 0 && prob(80)) || (effect < 0 && prob(20)) - current_title = "[company.name] [bailout ? "bailed out" : "on a painful rebound"]" - if (bailout) - current_desc = "The company has been bailed out by the government. Investors are highly optimistic." - company.affectPublicOpinion(abs(effect) * 2) - else - current_desc = "The company was not bailed out, but managed to crawl out of bankruptcy. Stockholder trust is severely dented." - company.affectPublicOpinion(-abs(effect) / 2) - company.generateEvent(type) - -/datum/stockEvent/bankruptcy/proc/generateBankruptcyArticle() - var/datum/article/A = new - var/list/bankrupt_reason = list("investor pessimism", "failure of product lines", "economic recession", "overblown inflation", "overblown deflation", "collapsed pyramid schemes", "a Ponzi scheme", "economic terrorism", "extreme hedonism", "unfavourable economic climate", "rampant government corruption", "divine conspiracy", "some total bullshit", "volatile plans") - A.about = company - A.headline = pick( "[company.name] filing for bankruptcy", \ - "[company.name] unable to pay, investors run", \ - "[company.name] crashes, in foreclosure", \ - "[company.name] in dire need of credits") - A.subtitle = "Investors panic, bailout pending" - if (prob(15)) - A.opinion = rand(-1, 1) - var/article = "Another one might bite the dust: [company.current_trend > 0 ? "despite their positive trend" : "in line with their failing model"], [company.name] files for bankruptcy citing [pick(bankrupt_reason)]. The president of %country% has been asked to bail the company out, " - if (!A.opinion) - article += "but no answer has been given by the government to date. Our tip to stay safe is: %sell%" - else if (A.opinion > 0) - article += "and the government responded positively. When the share value hits its lowest, it is a safe bet to %buy%" - else - article += "but the outlook is not good. For investors, now would be an ideal time to %sell%" - A.article = A.detokenize(article, company.industry.tokens) - return A - -/datum/stockEvent/arrest - name = "arrest" - var/female = 0 - var/tname = "Elvis Presley" - var/position = "CEO" - var/offenses = "murder" - var/effect = 0 - -/datum/stockEvent/arrest/New(var/datum/stock/S) - hidden = 1 - company = S - var/mins = rand(10*TIME_MULTIPLIER, 35*TIME_MULTIPLIER) - next_phase = mins * 600*TIME_MULTIPLIER + world.time - current_title = "" - current_desc = "" - female = prob(50) - if (prob(50)) - position = "C[prob(20) ? vowel() : consonant()]O" - else - position = ucfirsts(company.industry.detokenize("Lead %industrial% Engineer")) - offenses = "" - var/list/O = list("corruption", "murder", "grand theft", "assault", "battery", "drug possession", "burglary", "theft", "grand sabotage", "bribery", - "disorderly conduct", "treason", "sedition", "shoplifting", "tax evasion", "tax fraud", "insurance fraud", "perjury", "kidnapping", "manslaughter", "vandalism", "forgery", "extortion", "embezzlement", - "public indecency", "public intoxication", "trespassing", "loitering", "littering", "vigilantism", "squatting", "panhandling", "arson", "spacepodjacking", "shuttlejacking", "carjacking", "singularityjacking", - "dereliction of duty", "spacecraft piracy", "music piracy", "tabletop game piracy", "software piracy", "escaping from space prison", "seniornapping", "clownnapping", "corginapping", "catnapping", - "sleeping on the job", "terrorism", "counterterrorism", "drug distribution", "insubordination", "jaywalking", "owning a computer", "owning a cellphone", "owning a PDA", "owning a pAI", "adultery", - "committing an unnatural act with another person", "corrupting public morals", "skateboarding without a license", "shitcurity", "bestiality", "erotic roleplay", "accidentally strangling a prostitute") - while (prob(60) && O.len > 2) - var/offense = pick(O) - O -= offense - offense = "[prob(20) ? "attempted " : (prob(20) ? "being accessory to " : null)][offense][prob(5) ? " of the [pick("first", "second", "third", "fourth", "fifth", "sixth")] degree" : null]" - if (offenses == "") - offenses = offense - else - offenses += ", [offense]" - offenses += " and [prob(20) ? "attempted " : null][pick(O)]" // lazy - S.addEvent(src) - -/datum/stockEvent/arrest/transition() - switch (phase_id) - if (0) - tname = "[female ? pick(GLOB.first_names_female) : pick(GLOB.first_names_male)] [pick(GLOB.last_names)]" - next_phase = world.time + rand(300*TIME_MULTIPLIER, 600*TIME_MULTIPLIER) * (10*TIME_MULTIPLIER) - var/datum/article/A = generateArrestArticle() - if (!A.opinion) - effect = rand(5) * (prob(50) ? -1 : 1) - else - effect = prob(25) ? -A.opinion * rand(5) : A.opinion * rand(3) - company.addArticle(A) - company.affectPublicOpinion(rand(-3, -1)) - hidden = 0 - current_title = "Trial of [tname] ([position]) scheduled" - current_desc = "[female ? "She": "He"] has been charged with [offenses]; the trial is scheduled to occur at spacetime [spacetime(next_phase)]." - phase_id = 1 - if (1) - next_phase = world.time + rand(300*TIME_MULTIPLIER, 600*TIME_MULTIPLIER) * (10*TIME_MULTIPLIER) - finished = 1 - current_title = "[tname] [effect > 0 ? "acquitted" : "found guilty"]" - if (effect > 0) - current_desc = "The accused has been acquitted of all charges. Investors optimistic." - else - current_desc = "The accused has been found guilty of all charges. Investor trust takes massive hit." - company.affectPublicOpinion(effect) - company.generateEvent(type) - -/datum/stockEvent/arrest/proc/generateArrestArticle() - var/datum/article/A = new - A.about = company - A.headline = company.industry.detokenize(pick( \ - "[tname], [position] of [company.name] arrested", \ - "[position] of [company.name] facing jail time", \ - "[tname] behind bars", \ - "[position] of %industrial% company before trial", \ - "Police arrest [tname] in daring raid", \ - "Job vacancy ahead: [company.name]'s [position] in serious trouble")) - A.subtitle = "[A.author] reporting directly from the courtroom" - if (prob(15)) - A.opinion = rand(-1, 1) - var/article = "[pick("Security", "Law enforcement")] forces issued a statement that [tname], the [position] of [company.name], the %famous% %industrial% %company% was arrested %this_time%. The trial has been scheduled and the statement reports that the arrested individual is being charged with [offenses]. " - if (!A.opinion) - article += "While we cannot predict the outcome of this trial, our tip to stay safe is: %sell%" - else if (A.opinion > 0) - article += "Our own investigation shows that these charges are baseless and the arrest is most likely a publicity stunt. Our advice? You should %buy%" - else - article += "[tname] has a prior history of similar misdeeds and we're confident the charges will stand. For investors, now would be an ideal time to %sell%" - A.article = A.detokenize(article, company.industry.tokens) - return A diff --git a/code/modules/stock_market/industries.dm b/code/modules/stock_market/industries.dm deleted file mode 100644 index d9f1e72594..0000000000 --- a/code/modules/stock_market/industries.dm +++ /dev/null @@ -1,233 +0,0 @@ -/datum/industry - var/name = "Industry" - var/list/tokens = list() - - var/list/title_templates = list("The brand new %product_name% by %company_name% will revolutionize %industry%", \ - "%jobs% rejoice as %product_name% hits shelves", \ - "Does %product_name% threaten to reorganize the %industrial% status quo?", \ - "%company_name% headed toward corporate renaissance with %product_name%") - - var/list/title_templates_neutral = list("%product_name%: as if nothing happened", \ - "Nothing new but the name: %product_name% not quite exciting %jobs%", \ - "Same old %company_name%, same old product", \ - "%product_name% underwhelms, but sells") - - var/list/title_templates_bad = list("%product_name% shaping up to be the disappointment of the century", \ - "Recipe for disaster: %company_name% releases %product_name%", \ - "Atrocious quality - %jobs% boycott %product_name%", \ - "%product_name%: Inside the worst product launch in recent history") - - var/list/title_templates_ooc = list("%company_name% is looking to enter the %industry% playing field with %product_name%", \ - "%company_name% broadens spectrum, %product_name% is their latest and greatest") - var/list/subtitle_templates = list( "%author% investigates whether or not you should invest!", \ - "%outlet%'s very own %author% takes it to the magnifying glass", \ - "%outlet% lets you know if you should use it", \ - "Read our top tips for investors", \ - "%author% wants you to know if it's a safe bet to buy") - -/datum/industry/proc/generateProductName(var/company_name) - return - -/datum/industry/proc/generateInCharacterProductArticle(var/product_name, var/datum/stock/S) - var/datum/article/A = new - var/list/add_tokens = list("company_name" = S.name, "product_name" = product_name, "outlet" = A.outlet, "author" = A.author) - A.about = S - A.opinion = rand(-1, 1) - - A.subtitle = A.detokenize(pick(subtitle_templates), tokens, add_tokens) - var/article = {"%company_name% %expand_influence% %industry%. [ucfirst(product_name)] %hit_shelves% %this_time% "} - if (A.opinion > 0) - A.headline = A.detokenize(pick(title_templates), tokens, add_tokens) - article += "but %positive_outcome%, %signifying% the %resounding% %success% the product is. The %stock_market% is %excited% over this %development%, and %stockholder% optimism is expected to %rise% as well as the stock value. Our advice: %buy%." - else if (A.opinion == 0) - A.headline = A.detokenize(pick(title_templates_neutral), tokens, add_tokens) - article += "but %neutral_outcome%. For the average %stockholder%, no significant change on the market will be apparent over this %development%. Our advice is to continue investing as if this product was never released." - else - A.headline = A.detokenize(pick(title_templates_bad), tokens, add_tokens) - article += "but %negative_outcome%. Following this %complete% %failure%, %stockholder% optimism and stock value are projected to %dip%. Our advice: %sell%." - A.article = A.detokenize(article, tokens, add_tokens) - return A - -/datum/industry/proc/detokenize(var/str) - for (var/T in tokens) - str = replacetext(str, "%[T]%", pick(tokens[T])) - return str - -/datum/industry/agriculture - name = "Agriculture" - tokens = list( \ - "industry" = list("agriculture", "farming", "botany", "horticulture", "hydroponics"), \ - "industrial" = list("agricultural", "horticultural", "botanical"), \ - "jobs" = list("farmers", "agricultural experts", "botanists", "assistant gardeners") - ) - title_templates = list( "The brand new %product_name% by %company_name% will revolutionize %industry%", \ - "%jobs% rejoice as %product_name% hits shelves", \ - "Does %product name% threaten to reorganize the %industrial% status quo?", \ - "Took it for a field trip: our first %sneak_peek% of %product_name%.", \ - "Reaping the fruits of %product_name% - %sneak_peek% by %author%", \ - "Cultivating a new %industrial% future with %product_name%", \ - "%company_name% grows and thrives: %product_name% now on the farmer's market", \ - "It's almost harvest season: %product_name% promises to ease your life", \ - "Become the best on the farmer's market with %product_name%", \ - "%product_name%: a gene-modified reimagination of an age-old classic") - - title_templates_ooc = list( "%company_name% is looking to enter the %industry% playing field with %product_name%", \ - "A questionable decision: %product_name% grown on the soil of %company_name%", \ - "%company_name% broadens spectrum, %product_name% is their latest and greatest", \ - "Will %company_name% grow on %industrial% wasteland? Owners of %product_name% may decide", \ - "%company_name% looking to reap profits off the %industrial% sector with %product_name%") - -/datum/industry/agriculture/generateProductName(var/company_name) - var/list/products = list("water tank", "cattle prod", "scythe", "plough", "sickle", "cultivator", "loy", "spade", "hoe", "daisy grubber", "cotton gin") - var/list/prefix = list("[company_name]'s ", "the [company_name] ", "the fully automatic ", "the full-duplex ", "the semi-automatic ", "the drone-mounted ", "the industry-leading ", "the world-class ") - var/list/suffix = list(" of farming", " multiplex", " +[rand(1,15)]", " [consonant()][rand(1000, 9999)]", " hybrid", " maximus", " extreme") - return "[pick(prefix)][pick(products)][pick(suffix)]" - - - -/datum/industry/it - name = "Information Technology" - tokens = list( \ - "industry" = list("information technology", "computing", "computer industry"), \ - "industrial" = list("information technological", "computing", "computer industrial"), \ - "jobs" = list("coders", "electricians", "engineers", "programmers", "devops experts", "developers") - ) - -/datum/industry/it/proc/latin_number(n) - if (n < 20 || !(n % 10)) - switch(n) - if (0) - return "Nihil" - if (1) - return "Unus" - if (2) - return "Duo" - if (3) - return "Tres" - if (4) - return "Quattour" - if (5) - return "Quinque" - if (6) - return "Sex" - if (7) - return "Septem" - if (8) - return "Octo" - if (9) - return "Novem" - if (10) - return "Decim" - if (11) - return "Undecim" - if (12) - return "Duodecim" - if (13) - return "Tredecim" - if (14) - return "Quattourdecim" - if (15) - return "Quindecim" - if (16) - return "Sedecim" - if (17) - return "Septdecim" - if (18) - return "Duodeviginti" - if (19) - return "Undeviginti" - if (20) - return "Viginti" - if (30) - return "Triginta" - if (40) - return "Quadriginta" - if (50) - return "Quinquaginta" - if (60) - return "Sexaginta" - if (70) - return "Septuaginta" - if (80) - return "Octoginta" - if (90) - return "Nonaginta" - else - return "[latin_number(n - (n % 10))] [lowertext(latin_number(n % 10))]" - -/datum/industry/it/generateProductName(var/company_name) - var/list/products = list("generator", "laptop", "keyboard", "memory card", "display", "operating system", "processor", "graphics card", "nanobots", "power supply", "pAI", "mech", "capacitor", "cell") - var/list/prefix = list("the [company_name] ", "the high performance ", "the mobile ", "the portable ", "the professional ", "the extreme ", "the incredible ", "the blazing fast ", "the bleeding edge ", "the bluespace-powered ", null) - var/L = pick(consonant(), "Seed ", "Radiant ", "Robust ", "Pentathon ", "Athlete ", "Phantom ", "Semper Fi ") - var/N = rand(1, 99) - var/prefix2 = "[L][N][prob(5) ? " " + latin_number(N) : null]" - return "[pick(prefix)][prefix2] [pick(products)]" - -/datum/industry/communications - name = "Communications" - tokens = list( \ - "industry" = list("telecommunications", "telecomms"), \ - "industrial" = list("telecommunicational"), \ - "jobs" = list("electrical engineers", "microengineers", "developers") - ) - -/datum/industry/communications/generateProductName(var/company_name) - var/list/products = list("mobile phone", "PDA", "tablet computer", "newscaster", "social network") - var/list/prefix = list("the [company_name] ", "the high performance ", "the mobile ", "the portable ", "the professional ", "the extreme ", "the incredible ", "the blazing fast ", "the bleeding edge ", null) - var/L = pick("[lowertext(consonant())]Phone ", "Universe ", "Xperience ", "Next ", "Engin Y ", "Cyborg ", "[consonant()]") - var/N = rand(1,99) - var/prefix2 = "[L][N][prob(25) ? pick(" Tiny", " Mini", " Micro", " Slim", " Water", " Air", " Fire", " Earth", " Nano", " Pico", " Femto", " Planck") : null]" - return "[pick(prefix)][prefix2] [pick(products)]" - -/datum/industry/health - name = "Medicine" - tokens = list( \ - "industry" = list("medicine"), \ - "industrial" = list("medicinal"), \ - "jobs" = list("medical doctors", "nurses", "paramedics", "psychologists", "psychiatrists", "chemists") - ) - -/datum/industry/health/generateProductName(var/company_name) - var/list/prefix = list("amino", "nucleo", "nitro", "panto", "meth", "eth", "as", "algo", "coca", "hero", "lotsu", "opiod", "morph", "trinitro", "prop", "but", "acet", "acyclo", "lansop", "dyclo", "hydro", "oxycod", "vicod", "cannabi", "cryo", "dex", "chloro") - var/list/suffix = list("phen", "pirin", "pyrine", "ane", "amphetamine", "prazoline", "ine", "yl", "amine", "aminophen", "one", "ide", "phenate", "anol", "toulene", "glycerine", "vir", "tol", "trinic", "oxide") - var/list/uses = list("antidepressant", "analgesic", "anesthetic", "antiretroviral", "antiviral", "antibiotic", "cough drop", "depressant", "hangover cure", "homeopathic", "fertility drug", "hypnotic", "narcotic", "laxative", "multivitamin", "patch", "purgative", "relaxant", "steroid", "sleeping pill", "suppository", "tranquilizer") - return "[pick(prefix)][pick(suffix)], the [pick(uses)]" - -/datum/industry/consumer - name = "Consumer" - tokens = list( \ - "industry" = list("shops", "stores"), \ - "industrial" = list("consumer industrial"), \ - "jobs" = list("shopkeepers", "assistants", "manual daytime hygiene engineers", "janitors", "chefs", "cooks") - ) - -/datum/industry/consumer/generateProductName(var/company) - var/list/meat = list("chicken", "lizard", "corgi", "monkey", "goat", "fly", "xenomorph", "human", "walrus", "wendigo", "bear", "clown", "turkey", "pork", "carp", "crab", "mimic", "mystery") - var/list/qualifier = list("synthetic", "organic", "bio", "diet", "sugar-free", "paleolithic", "homeopathic", "recycled", "reclaimed", "vat-grown") - return "the [pick(qualifier)] [pick(meat)] meat product line" - -/datum/industry/mining - name = "Mining" - tokens = list( \ - "industry" = list("mines", "large scale mining operations"), \ - "industrial" = list("resource acquisitional"), \ - "jobs" = list("shaft miners", "drill operators", "mining foremen", "gibtonite handlers") - ) - -/datum/industry/mining/generateProductName(var/company) - var/list/equipment = list("drill", "pickaxe", "shovel", "jackhammer", "mini-pickaxe", "power hammer", "power gloves", "power armor", "hardsuit", "kinetic accelerator", "resonator", "oxygen tank", "emergency bike horn") - var/list/material = list("mauxite", "pharosium", "molitz", "adamantium", "mithril", "cobryl", "bohrum", "claretine", "viscerite", "syreline", "cerenkite", "plasmastone", "gold", "koshmarite", "phoron", "carbon dioxide") - return "the [pick(material)] [pick(equipment)]" - -/datum/industry/defense - name = "Defense" - tokens = list ( \ - "industry" = list("defense", "warfare", "security", "law enforcement"), \ - "industrial" = list("defense"), \ - "jobs" = list("security officers", "government officials", "soldiers", "weapons engineers") - ) - -/datum/industry/defense/generateProductName(var/company) - var/list/equipment = list("energy gun", "laser gun", "machine gun", "grenade", "stun baton", "artillery", "bomb", "attack drone", "missile", "chem sprayer") - var/list/material = list("bluespace", "stealth", "heat-seeking", "crime-seeking", "wide-range", "bioterror", "auto-reloading", "smart", "sentient", "rapid-fire", "species-targeting", "gibtonite", "mass-market", "perpetual-motion", "nuclear", "fission", "fusion") - return "the [pick(material)] [pick(equipment)]" diff --git a/code/modules/stock_market/logs.dm b/code/modules/stock_market/logs.dm deleted file mode 100644 index e76831032a..0000000000 --- a/code/modules/stock_market/logs.dm +++ /dev/null @@ -1,14 +0,0 @@ -/datum/stock_log - var/user_name = "" - var/company_name = "" - var/shareprice - var/money - var/stocks - var/time - - -/datum/stock_log/buy - -/datum/stock_log/sell - -/datum/stock_log/borrow \ No newline at end of file diff --git a/code/modules/stock_market/stocks.dm b/code/modules/stock_market/stocks.dm deleted file mode 100644 index 563e76c0a9..0000000000 --- a/code/modules/stock_market/stocks.dm +++ /dev/null @@ -1,312 +0,0 @@ -/datum/borrow - var/broker = "" - var/borrower = "" - var/datum/stock/stock = null - var/lease_expires = 0 - var/lease_time = 0 - var/grace_time = 0 - var/grace_expires = 0 - var/share_amount = 0 - var/share_debt = 0 - var/deposit = 0 - var/offer_expires = 0 - -/datum/stock - var/name = "Stock" - var/short_name = "STK" - var/desc = "A company that does not exist." - var/list/values = list() - var/current_value = 10 - var/last_value = 10 - var/list/products = list() - - var/performance = 0 // The current performance of the company. Tends itself to 0 when no events happen. - - // These variables determine standard fluctuational patterns for this stock. - var/fluctuational_coefficient = 1 // How much the price fluctuates on an average daily basis - var/average_optimism = 0 // The history of shareholder optimism of this stock - var/current_trend = 0 - var/last_trend = 0 - var/speculation = 0 - var/bankrupt = 0 - - var/disp_value_change = 0 - var/optimism = 0 - var/last_unification = 0 - var/average_shares = 100 - var/outside_shareholders = 10000 // The amount of offstation people holding shares in this company. The higher it is, the more fluctuation it causes. - var/available_shares = 500000 - - var/list/borrow_brokers = list() - var/list/shareholders = list() - var/list/borrows = list() - var/list/events = list() - var/list/articles = list() - var/fluctuation_rate = 15 - var/fluctuation_counter = 0 - var/datum/industry/industry = null - -/datum/stock/proc/addEvent(var/datum/stockEvent/E) - events |= E - -/datum/stock/proc/addArticle(var/datum/article/A) - if (!(A in articles)) - articles.Insert(1, A) - A.ticks = world.time - -/datum/stock/proc/generateEvents() - var/list/types = typesof(/datum/stockEvent) - /datum/stockEvent - for (var/T in types) - generateEvent(T) - -/datum/stock/proc/generateEvent(var/T) - var/datum/stockEvent/E = new T(src) - addEvent(E) - -/datum/stock/proc/affectPublicOpinion(var/boost) - optimism += rand(0, 500) / 500 * boost - average_optimism += rand(0, 150) / 5000 * boost - speculation += rand(-1, 50) / 10 * boost - performance += rand(0, 150) / 100 * boost - -/datum/stock/proc/generateIndustry() - if (findtext(name, "Farms")) - industry = new /datum/industry/agriculture - else if (findtext(name, "Software") || findtext(name, "Programming") || findtext(name, "IT Group") || findtext(name, "Electronics") || findtext(name, "Electric") || findtext(name, "Nanotechnology")) - industry = new /datum/industry/it - else if (findtext(name, "Mobile") || findtext(name, "Communications")) - industry = new /datum/industry/communications - else if (findtext(name, "Pharmaceuticals") || findtext(name, "Health")) - industry = new /datum/industry/health - else if (findtext(name, "Wholesale") || findtext(name, "Stores")) - industry = new /datum/industry/consumer - else - var/ts = typesof(/datum/industry) - /datum/industry - var/in_t = pick(ts) - industry = new in_t - for (var/i = 0, i < rand(2, 5), i++) - products += industry.generateProductName(name) - -/datum/stock/proc/frc(amt) - var/shares = available_shares + outside_shareholders * average_shares - var/fr = amt / 100 / shares * fluctuational_coefficient * fluctuation_rate * max(-(current_trend / 100), 1) - if ((fr < 0 && speculation < 0) || (fr > 0 && speculation > 0)) - fr *= max(abs(speculation) / 5, 1) - else - fr /= max(abs(speculation) / 5, 1) - return fr - -/datum/stock/proc/supplyGrowth(amt) - var/fr = frc(amt) - available_shares += amt - if (abs(fr) < 0.0001) - return - current_value -= fr * current_value - -/datum/stock/proc/supplyDrop(amt) - supplyGrowth(-amt) - -/datum/stock/proc/fluctuate() - var/change = rand(-100, 100) / 10 + optimism * rand(200) / 10 - optimism -= (optimism - average_optimism) * (rand(10,80) / 1000) - var/shift_score = change + current_trend - var/as_score = abs(shift_score) - var/sh_change_dev = rand(-10, 10) / 10 - var/sh_change = shift_score / (as_score + 100) + sh_change_dev - var/shareholder_change = round(sh_change) - outside_shareholders += shareholder_change - var/share_change = shareholder_change * average_shares - if (as_score > 20 && prob(as_score / 4)) - var/avg_change_dev = rand(-10, 10) / 10 - var/avg_change = shift_score / (as_score + 100) + avg_change_dev - average_shares += avg_change - share_change += outside_shareholders * avg_change - - var/cv = last_value - supplyDrop(share_change) - available_shares += share_change // temporary - - if (prob(25)) - average_optimism = max(min(average_optimism + (rand(-3, 3) - current_trend * 0.15) / 100, 1), -1) - - var/aspec = abs(speculation) - if (prob((aspec - 75) * 2)) - speculation += rand(-4, 4) - else - if (prob(50)) - speculation += rand(-4, 4) - else - speculation += rand(-400, 0) / 1000 * speculation - if (prob(1) && prob(5)) // pop that bubble - speculation += rand(-4000, 0) / 1000 * speculation - var/fucking_stock_spikes = current_value + 500 - var/piece_of_shit_fuck = current_value - 500 - var/i_hate_this_code = (speculation / rand(25000, 50000) + performance / rand(100, 800)) * current_value - if(i_hate_this_code < fucking_stock_spikes || i_hate_this_code > piece_of_shit_fuck) - current_value = i_hate_this_code - if (current_value < 5) - current_value = 5 - - if (performance != 0) - performance = rand(900,1050) / 1000 * performance - if (abs(performance) < 0.2) - performance = 0 - - disp_value_change = (cv < current_value) ? 1 : ((cv > current_value) ? -1 : 0) - last_value = current_value - if (values.len >= 50) - values.Cut(1,2) - values += current_value - - if (current_value < 10) - unifyShares() - - last_trend = current_trend - current_trend += rand(-200, 200) / 100 + optimism * rand(200) / 10 + max(50 - abs(speculation), 0) / 50 * rand(0, 200) / 1000 * (-current_trend) + max(speculation - 50, 0) * rand(0, 200) / 1000 * speculation / 400 - -/datum/stock/proc/unifyShares() - for (var/I in shareholders) - var/shr = shareholders[I] - if (shr % 2) - sellShares(I, 1) - shr -= 1 - shareholders[I] /= 2 - if (!shareholders[I]) - shareholders -= I - for (var/datum/borrow/B in borrow_brokers) - B.share_amount = round(B.share_amount / 2) - B.share_debt = round(B.share_debt / 2) - for (var/datum/borrow/B in borrows) - B.share_amount = round(B.share_amount / 2) - B.share_debt = round(B.share_debt / 2) - average_shares /= 2 - available_shares /= 2 - current_value *= 2 - last_unification = world.time - -/datum/stock/process() - for (var/B in borrows) - var/datum/borrow/borrow = B - if (world.time > borrow.grace_expires) - modifyAccount(borrow.borrower, -max(current_value * borrow.share_debt, 0), 1) - borrows -= borrow - if (borrow.borrower in GLOB.FrozenAccounts) - GLOB.FrozenAccounts[borrow.borrower] -= borrow - if (length(GLOB.FrozenAccounts[borrow.borrower]) == 0) - GLOB.FrozenAccounts -= borrow.borrower - qdel(borrow) - else if (world.time > borrow.lease_expires) - if (borrow.borrower in shareholders) - var/amt = shareholders[borrow.borrower] - if (amt > borrow.share_debt) - shareholders[borrow.borrower] -= borrow.share_debt - borrows -= borrow - if (borrow.borrower in GLOB.FrozenAccounts) - GLOB.FrozenAccounts[borrow.borrower] -= borrow - if (length(GLOB.FrozenAccounts[borrow.borrower]) == 0) - GLOB.FrozenAccounts -= borrow.borrower - qdel(borrow) - else - shareholders -= borrow.borrower - borrow.share_debt -= amt - if (bankrupt) - return - for (var/B in borrow_brokers) - var/datum/borrow/borrow = B - if (borrow.offer_expires < world.time) - borrow_brokers -= borrow - qdel(borrow) - if (prob(5)) - generateBrokers() - fluctuation_counter++ - if (fluctuation_counter >= fluctuation_rate) - for (var/E in events) - var/datum/stockEvent/EV = E - EV.process() - fluctuation_counter = 0 - fluctuate() - -/datum/stock/proc/generateBrokers() - if (borrow_brokers.len > 2) - return - if (!GLOB.stockExchange.stockBrokers.len) - GLOB.stockExchange.generateBrokers() - var/broker = pick(GLOB.stockExchange.stockBrokers) - var/datum/borrow/B = new - B.broker = broker - B.stock = src - B.lease_time = rand(4, 7) * 600 - B.grace_time = rand(1, 3) * 600 - B.share_amount = rand(1, 10) * 100 - B.deposit = rand(20, 70) / 100 - B.share_debt = B.share_amount - B.offer_expires = rand(5, 10) * 600 + world.time - borrow_brokers += B - -/datum/stock/proc/modifyAccount(whose, by, force=0) - if (SSshuttle.points) - if (by < 0 && SSshuttle.points + by < 0 && !force) - return 0 - SSshuttle.points += by - GLOB.stockExchange.balanceLog(whose, by) - return 1 - return 0 - -/datum/stock/proc/borrow(var/datum/borrow/B, var/who) - if (B.lease_expires) - return 0 - B.lease_expires = world.time + B.lease_time - var/old_d = B.deposit - var/d_amt = B.deposit * current_value * B.share_amount - if (!modifyAccount(who, -d_amt)) - B.lease_expires = 0 - B.deposit = old_d - return 0 - B.deposit = d_amt - if (!(who in shareholders)) - shareholders[who] = B.share_amount - else - shareholders[who] += B.share_amount - borrow_brokers -= B - borrows += B - B.borrower = who - B.grace_expires = B.lease_expires + B.grace_time - if (!(who in GLOB.FrozenAccounts)) - GLOB.FrozenAccounts[who] = list(B) - else - GLOB.FrozenAccounts[who] += B - return 1 - -/datum/stock/proc/buyShares(var/who, var/howmany) - if (howmany <= 0) - return - howmany = round(howmany) - var/loss = howmany * current_value - if (available_shares < howmany) - return 0 - if (modifyAccount(who, -loss)) - supplyDrop(howmany) - if (!(who in shareholders)) - shareholders[who] = howmany - else - shareholders[who] += howmany - return 1 - return 0 - -/datum/stock/proc/sellShares(var/whose, var/howmany) - if (howmany < 0) - return - howmany = round(howmany) - var/gain = howmany * current_value - if (shareholders[whose] < howmany) - return 0 - if (modifyAccount(whose, gain)) - supplyGrowth(howmany) - shareholders[whose] -= howmany - if (shareholders[whose] <= 0) - shareholders -= whose - return 1 - return 0 - -/datum/stock/proc/displayValues(var/mob/user) - user << browse(plotBarGraph(values, "[name] share value per share"), "window=stock_[name];size=450x450") diff --git a/code/modules/surgery/advanced/bioware/bioware.dm b/code/modules/surgery/advanced/bioware/bioware.dm index 6c0a7529d0..f3435e874f 100644 --- a/code/modules/surgery/advanced/bioware/bioware.dm +++ b/code/modules/surgery/advanced/bioware/bioware.dm @@ -15,8 +15,9 @@ if(B.mod_type == mod_type) qdel(src) return + owner.bioware += src on_gain() - + /datum/bioware/Destroy() owner = null if(active) diff --git a/code/modules/surgery/advanced/bioware/nerve_grounding.dm b/code/modules/surgery/advanced/bioware/nerve_grounding.dm index 7834884f52..494cfaf59b 100644 --- a/code/modules/surgery/advanced/bioware/nerve_grounding.dm +++ b/code/modules/surgery/advanced/bioware/nerve_grounding.dm @@ -31,7 +31,7 @@ /datum/bioware/grounded_nerves name = "Grounded Nerves" desc = "Nerves form a safe path for electricity to traverse, protecting the body from electric shocks." - mod_type = "nerves" + mod_type = BIOWARE_NERVES var/prev_coeff /datum/bioware/grounded_nerves/on_gain() diff --git a/code/modules/surgery/advanced/bioware/nerve_splicing.dm b/code/modules/surgery/advanced/bioware/nerve_splicing.dm index 770a8d67e6..944a05ed0e 100644 --- a/code/modules/surgery/advanced/bioware/nerve_splicing.dm +++ b/code/modules/surgery/advanced/bioware/nerve_splicing.dm @@ -31,7 +31,7 @@ /datum/bioware/spliced_nerves name = "Spliced Nerves" desc = "Nerves are connected to each other multiple times, greatly reducing the impact of stunning effects." - mod_type = "nerves" + mod_type = BIOWARE_NERVES /datum/bioware/spliced_nerves/on_gain() ..() diff --git a/code/modules/surgery/advanced/bioware/vein_threading.dm b/code/modules/surgery/advanced/bioware/vein_threading.dm index 99f6506de8..d618100a47 100644 --- a/code/modules/surgery/advanced/bioware/vein_threading.dm +++ b/code/modules/surgery/advanced/bioware/vein_threading.dm @@ -31,7 +31,7 @@ /datum/bioware/threaded_veins name = "Threaded Veins" desc = "The circulatory system is woven into a mesh, severely reducing the amount of blood lost from wounds." - mod_type = "circulation" + mod_type = BIOWARE_CIRCULATION /datum/bioware/threaded_veins/on_gain() ..() diff --git a/code/modules/surgery/bodyparts/robot_bodyparts.dm b/code/modules/surgery/bodyparts/robot_bodyparts.dm index 514244c850..f8e939dbcd 100644 --- a/code/modules/surgery/bodyparts/robot_bodyparts.dm +++ b/code/modules/surgery/bodyparts/robot_bodyparts.dm @@ -158,14 +158,14 @@ medium_burn_msg = ROBOTIC_MEDIUM_BURN_MSG heavy_burn_msg = ROBOTIC_HEAVY_BURN_MSG - var/obj/item/device/assembly/flash/handheld/flash1 = null - var/obj/item/device/assembly/flash/handheld/flash2 = null + var/obj/item/assembly/flash/handheld/flash1 = null + var/obj/item/assembly/flash/handheld/flash2 = null /obj/item/bodypart/head/robot/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/device/assembly/flash/handheld)) - var/obj/item/device/assembly/flash/handheld/F = W + if(istype(W, /obj/item/assembly/flash/handheld)) + var/obj/item/assembly/flash/handheld/F = W if(src.flash1 && src.flash2) to_chat(user, "You have already inserted the eyes!") return diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index 4b9a472b32..5c442c1369 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -70,8 +70,8 @@ "[holder] snaps back into your [zone == BODY_ZONE_R_ARM ? "right" : "left"] arm.", "You hear a short mechanical noise.") - if(istype(holder, /obj/item/device/assembly/flash/armimplant)) - var/obj/item/device/assembly/flash/F = holder + if(istype(holder, /obj/item/assembly/flash/armimplant)) + var/obj/item/assembly/flash/F = holder F.set_light(0) owner.transferItemToLoc(holder, src, TRUE) @@ -89,8 +89,8 @@ holder.slot_flags = null holder.materials = null - if(istype(holder, /obj/item/device/assembly/flash/armimplant)) - var/obj/item/device/assembly/flash/F = holder + if(istype(holder, /obj/item/assembly/flash/armimplant)) + var/obj/item/assembly/flash/F = holder F.set_light(7) var/obj/item/arm_item = owner.get_active_held_item() @@ -170,7 +170,7 @@ name = "integrated toolset implant" desc = "A stripped-down version of the engineering cyborg toolset, designed to be installed on subject's arm. Contains all necessary tools." contents = newlist(/obj/item/screwdriver/cyborg, /obj/item/wrench/cyborg, /obj/item/weldingtool/largetank/cyborg, - /obj/item/crowbar/cyborg, /obj/item/wirecutters/cyborg, /obj/item/device/multitool/cyborg) + /obj/item/crowbar/cyborg, /obj/item/wirecutters/cyborg, /obj/item/multitool/cyborg) /obj/item/organ/cyberimp/arm/toolset/l zone = BODY_ZONE_L_ARM @@ -196,12 +196,12 @@ /obj/item/organ/cyberimp/arm/flash name = "integrated high-intensity photon projector" //Why not desc = "An integrated projector mounted onto a user's arm that is able to be used as a powerful flash." - contents = newlist(/obj/item/device/assembly/flash/armimplant) + contents = newlist(/obj/item/assembly/flash/armimplant) /obj/item/organ/cyberimp/arm/flash/Initialize() . = ..() - if(locate(/obj/item/device/assembly/flash/armimplant) in items_list) - var/obj/item/device/assembly/flash/armimplant/F = locate(/obj/item/device/assembly/flash/armimplant) in items_list + if(locate(/obj/item/assembly/flash/armimplant) in items_list) + var/obj/item/assembly/flash/armimplant/F = locate(/obj/item/assembly/flash/armimplant) in items_list F.I = src /obj/item/organ/cyberimp/arm/baton @@ -212,12 +212,12 @@ /obj/item/organ/cyberimp/arm/combat name = "combat cybernetics implant" desc = "A powerful cybernetic implant that contains combat modules built into the user's arm." - contents = newlist(/obj/item/melee/transforming/energy/blade/hardlight, /obj/item/gun/medbeam, /obj/item/borg/stun, /obj/item/device/assembly/flash/armimplant) + contents = newlist(/obj/item/melee/transforming/energy/blade/hardlight, /obj/item/gun/medbeam, /obj/item/borg/stun, /obj/item/assembly/flash/armimplant) /obj/item/organ/cyberimp/arm/combat/Initialize() . = ..() - if(locate(/obj/item/device/assembly/flash/armimplant) in items_list) - var/obj/item/device/assembly/flash/armimplant/F = locate(/obj/item/device/assembly/flash/armimplant) in items_list + if(locate(/obj/item/assembly/flash/armimplant) in items_list) + var/obj/item/assembly/flash/armimplant/F = locate(/obj/item/assembly/flash/armimplant) in items_list F.I = src /obj/item/organ/cyberimp/arm/surgery diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm index 0e9e08bf08..57d81cad28 100644 --- a/code/modules/surgery/organs/augments_internal.dm +++ b/code/modules/surgery/organs/augments_internal.dm @@ -148,10 +148,10 @@ desc = "A sleek, sturdy box." icon_state = "cyber_implants" var/list/boxed = list( - /obj/item/device/autosurgeon/thermal_eyes, - /obj/item/device/autosurgeon/xray_eyes, - /obj/item/device/autosurgeon/anti_stun, - /obj/item/device/autosurgeon/reviver) + /obj/item/autosurgeon/thermal_eyes, + /obj/item/autosurgeon/xray_eyes, + /obj/item/autosurgeon/anti_stun, + /obj/item/autosurgeon/reviver) var/amount = 5 /obj/item/storage/box/cyber_implants/PopulateContents() diff --git a/code/modules/surgery/organs/autosurgeon.dm b/code/modules/surgery/organs/autosurgeon.dm index a51332d4e0..787a599428 100644 --- a/code/modules/surgery/organs/autosurgeon.dm +++ b/code/modules/surgery/organs/autosurgeon.dm @@ -1,6 +1,6 @@ #define INFINITE -1 -/obj/item/device/autosurgeon +/obj/item/autosurgeon name = "autosurgeon" desc = "A device that automatically inserts an implant or organ into the user without the hassle of extensive surgery. It has a slot to insert implants/organs and a screwdriver slot for removing accidentally added items." icon = 'icons/obj/device.dmi' @@ -12,17 +12,17 @@ var/uses = INFINITE var/starting_organ -/obj/item/device/autosurgeon/Initialize(mapload) +/obj/item/autosurgeon/Initialize(mapload) . = ..() if(starting_organ) insert_organ(new starting_organ(src)) -/obj/item/device/autosurgeon/proc/insert_organ(var/obj/item/I) +/obj/item/autosurgeon/proc/insert_organ(var/obj/item/I) storedorgan = I I.forceMove(src) name = "[initial(name)] ([storedorgan.name])" -/obj/item/device/autosurgeon/attack_self(mob/user)//when the object it used... +/obj/item/autosurgeon/attack_self(mob/user)//when the object it used... if(!uses) to_chat(user, "[src] has already been used. The tools are dull and won't reactivate.") return @@ -39,10 +39,10 @@ if(!uses) desc = "[initial(desc)] Looks like it's been used up." -/obj/item/device/autosurgeon/attack_self_tk(mob/user) +/obj/item/autosurgeon/attack_self_tk(mob/user) return //stops TK fuckery -/obj/item/device/autosurgeon/attackby(obj/item/I, mob/user, params) +/obj/item/autosurgeon/attackby(obj/item/I, mob/user, params) if(istype(I, organ_type)) if(storedorgan) to_chat(user, "[src] already has an implant stored.") @@ -57,7 +57,7 @@ else return ..() -/obj/item/device/autosurgeon/screwdriver_act(mob/living/user, obj/item/I) +/obj/item/autosurgeon/screwdriver_act(mob/living/user, obj/item/I) if(!storedorgan) to_chat(user, "There's no implant in [src] for you to remove.") else @@ -75,20 +75,20 @@ desc = "[initial(desc)] Looks like it's been used up." return TRUE -/obj/item/device/autosurgeon/cmo +/obj/item/autosurgeon/cmo desc = "A single use autosurgeon that contains a medical heads-up display augment. A screwdriver can be used to remove it, but implants can't be placed back in." uses = 1 starting_organ = /obj/item/organ/cyberimp/eyes/hud/medical -/obj/item/device/autosurgeon/thermal_eyes +/obj/item/autosurgeon/thermal_eyes starting_organ = /obj/item/organ/eyes/robotic/thermals -/obj/item/device/autosurgeon/xray_eyes +/obj/item/autosurgeon/xray_eyes starting_organ = /obj/item/organ/eyes/robotic/xray -/obj/item/device/autosurgeon/anti_stun +/obj/item/autosurgeon/anti_stun starting_organ = /obj/item/organ/cyberimp/brain/anti_stun -/obj/item/device/autosurgeon/reviver +/obj/item/autosurgeon/reviver starting_organ = /obj/item/organ/cyberimp/chest/reviver diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm index cd0680a32c..fc0bdd4c04 100644 --- a/code/modules/surgery/organs/eyes.dm +++ b/code/modules/surgery/organs/eyes.dm @@ -121,7 +121,7 @@ icon_state = "flashlight_eyes" flash_protect = 2 tint = INFINITY - var/obj/item/device/flashlight/eyelight/eye + var/obj/item/flashlight/eyelight/eye /obj/item/organ/eyes/robotic/flashlight/emp_act(severity) return @@ -129,7 +129,7 @@ /obj/item/organ/eyes/robotic/flashlight/Insert(mob/living/carbon/M, special = FALSE, drop_if_replaced = FALSE) ..() if(!eye) - eye = new /obj/item/device/flashlight/eyelight() + eye = new /obj/item/flashlight/eyelight() eye.on = TRUE eye.forceMove(M) eye.update_brightness(M) diff --git a/code/modules/surgery/organs/liver.dm b/code/modules/surgery/organs/liver.dm index e8cbb80203..360e58924b 100755 --- a/code/modules/surgery/organs/liver.dm +++ b/code/modules/surgery/organs/liver.dm @@ -41,7 +41,7 @@ C.reagents.metabolize(C, can_overdose=TRUE) if(damage > 10 && prob(damage/3))//the higher the damage the higher the probability - to_chat(C, "You feel [pick("nauseous", "dull pain in your lower body", "confused")].") + to_chat(C, "You feel [pick("nauseated", "a dull pain in your lower body", "confused")].") if(damage > maxHealth)//cap liver damage damage = maxHealth @@ -59,7 +59,7 @@ /obj/item/organ/liver/plasmaman name = "reagent processing crystal" - icon_state = "pliver" + icon_state = "liver-p" desc = "A large crystal that is somehow capable of metabolizing chemicals, these are found in plasmamen." /obj/item/organ/liver/cybernetic diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index ce5fafcd9f..a3fe2202b6 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -236,13 +236,13 @@ var/bz_pp = breath.get_breath_partial_pressure(breath_gases[/datum/gas/bz][MOLES]) if(bz_pp > BZ_trip_balls_min) - H.hallucination += 20 + H.hallucination += 10 H.reagents.add_reagent("bz_metabolites",5) if(prob(33)) H.adjustBrainLoss(3, 150) else if(bz_pp > 0.01) - H.hallucination += 5//Removed at 2 per tick so this will slowly build up + H.hallucination += 5 H.reagents.add_reagent("bz_metabolites",1) diff --git a/code/modules/surgery/organs/stomach.dm b/code/modules/surgery/organs/stomach.dm index 21b6f6abb3..3ddf658ecd 100755 --- a/code/modules/surgery/organs/stomach.dm +++ b/code/modules/surgery/organs/stomach.dm @@ -64,5 +64,5 @@ /obj/item/organ/stomach/plasmaman name = "digestive crystal" - icon_state = "pstomach" + icon_state = "stomach-p" desc = "A strange crystal that is responsible for metabolizing the unseen energy force that feeds plasmamen." diff --git a/code/modules/tgs/core/_definitions.dm b/code/modules/tgs/core/_definitions.dm new file mode 100644 index 0000000000..d5e1a0075b --- /dev/null +++ b/code/modules/tgs/core/_definitions.dm @@ -0,0 +1,2 @@ +#define TGS_UNIMPLEMENTED "___unimplemented" +#define TGS_VERSION_PARAMETER "server_service_version" diff --git a/code/modules/tgs/core/core.dm b/code/modules/tgs/core/core.dm new file mode 100644 index 0000000000..79c42ed37b --- /dev/null +++ b/code/modules/tgs/core/core.dm @@ -0,0 +1,144 @@ +/world/TgsNew(datum/tgs_event_handler/event_handler) + var/tgs_version = world.params[TGS_VERSION_PARAMETER] + if(!tgs_version) + return + + var/path = SelectTgsApi(tgs_version) + if(!path) + TGS_ERROR_LOG("Found unsupported API version: [tgs_version]. If this is a valid version please report this, backporting is done on demand.") + + TGS_INFO_LOG("Activating API for version [tgs_version]") + var/datum/tgs_api/new_api = new path + + var/result = new_api.OnWorldNew(event_handler ? event_handler : new /datum/tgs_event_handler/tgs_default) + if(result && result != TGS_UNIMPLEMENTED) + TGS_WRITE_GLOBAL(tgs, new_api) + else + TGS_ERROR_LOG("Failed to activate API!") + +/world/proc/SelectTgsApi(tgs_version) + //remove the old 3.0 header + tgs_version = replacetext(tgs_version, "/tg/station 13 Server v", "") + + var/list/version_bits = splittext(tgs_version, ".") + + var/super = text2num(version_bits[1]) + var/major = text2num(version_bits[2]) + var/minor = text2num(version_bits[3]) + var/patch = text2num(version_bits[4]) + + switch(super) + if(3) + switch(major) + if(2) + return /datum/tgs_api/v3210 + + if(super != null && major != null && minor != null && patch != null && tgs_version > TgsMaximumAPIVersion()) + TGS_ERROR_LOG("Detected unknown API version! Defaulting to latest. Update the DMAPI to fix this problem.") + return /datum/tgs_api/latest + +/world/TgsMaximumAPIVersion() + return "4.0.0.0" + +/world/TgsMinimumAPIVersion() + return "3.2.0.0" + +/world/TgsInitializationComplete() + var/datum/tgs_api/api = TGS_READ_GLOBAL(tgs) + if(api) + api.OnInitializationComplete() + +/world/proc/TgsTopic(T) + var/datum/tgs_api/api = TGS_READ_GLOBAL(tgs) + if(api) + var/result = api.OnTopic(T) + if(result != TGS_UNIMPLEMENTED) + return result + +/world/TgsRevision() + var/datum/tgs_api/api = TGS_READ_GLOBAL(tgs) + if(api) + var/result = api.Revision() + if(result != TGS_UNIMPLEMENTED) + return result + +/world/TgsReboot() + var/datum/tgs_api/api = TGS_READ_GLOBAL(tgs) + if(api) + api.OnReboot() + +/world/TgsAvailable() + return TGS_READ_GLOBAL(tgs) != null + +/world/TgsVersion() + return world.params[TGS_VERSION_PARAMETER] + +/world/TgsInstanceName() + var/datum/tgs_api/api = TGS_READ_GLOBAL(tgs) + if(api) + var/result = api.InstanceName() + if(result != TGS_UNIMPLEMENTED) + return result + +/world/TgsTestMerges() + var/datum/tgs_api/api = TGS_READ_GLOBAL(tgs) + if(api) + var/result = api.TestMerges() + if(result != TGS_UNIMPLEMENTED) + return result + return list() + +/world/TgsEndProcess() + var/datum/tgs_api/api = TGS_READ_GLOBAL(tgs) + if(api) + api.EndProcess() + +/world/TgsChatChannelInfo() + var/datum/tgs_api/api = TGS_READ_GLOBAL(tgs) + if(api) + var/result = api.ChatChannelInfo() + if(result != TGS_UNIMPLEMENTED) + return result + return list() + +/world/TgsChatBroadcast(message, list/channels) + var/datum/tgs_api/api = TGS_READ_GLOBAL(tgs) + if(api) + api.ChatBroadcast(message, channels) + +/world/TgsTargetedChatBroadcast(message, admin_only) + var/datum/tgs_api/api = TGS_READ_GLOBAL(tgs) + if(api) + api.ChatTargetedBroadcast(message, admin_only) + +/world/TgsChatPrivateMessage(message, datum/tgs_chat_user/user) + var/datum/tgs_api/api = TGS_READ_GLOBAL(tgs) + if(api) + api.ChatPrivateMessage(message, user) + +/* +The MIT License + +Copyright (c) 2017 Jordan Brown + +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and +associated documentation files (the "Software"), to +deal in the Software without restriction, including +without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom +the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ diff --git a/code/modules/tgs/core/datum.dm b/code/modules/tgs/core/datum.dm new file mode 100644 index 0000000000..5da73bfdc5 --- /dev/null +++ b/code/modules/tgs/core/datum.dm @@ -0,0 +1,74 @@ +TGS_DEFINE_AND_SET_GLOBAL(tgs, null) + +/datum/tgs_api + +/datum/tgs_api/latest + parent_type = /datum/tgs_api/v3210 + +TGS_PROTECT_DATUM(/datum/tgs_api) + +/datum/tgs_api/proc/ApiVersion() + return TGS_UNIMPLEMENTED + +/datum/tgs_api/proc/OnWorldNew(datum/tgs_event_handler/event_handler) + return TGS_UNIMPLEMENTED + +/datum/tgs_api/proc/OnInitializationComplete() + return TGS_UNIMPLEMENTED + +/datum/tgs_api/proc/OnTopic(T) + return TGS_UNIMPLEMENTED + +/datum/tgs_api/proc/OnReboot() + return TGS_UNIMPLEMENTED + +/datum/tgs_api/proc/InstanceName() + return TGS_UNIMPLEMENTED + +/datum/tgs_api/proc/TestMerges() + return TGS_UNIMPLEMENTED + +/datum/tgs_api/proc/EndProcess() + return TGS_UNIMPLEMENTED + +/datum/tgs_api/proc/Revision() + return TGS_UNIMPLEMENTED + +/datum/tgs_api/proc/ChatChannelInfo() + return TGS_UNIMPLEMENTED + +/datum/tgs_api/proc/ChatBroadcast(message, list/channels) + return TGS_UNIMPLEMENTED + +/datum/tgs_api/proc/ChatTargetedBroadcast(message, admin_only) + return TGS_UNIMPLEMENTED + +/datum/tgs_api/proc/ChatPrivateMessage(message, admin_only) + return TGS_UNIMPLEMENTED + +/* +The MIT License + +Copyright (c) 2017 Jordan Brown + +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and +associated documentation files (the "Software"), to +deal in the Software without restriction, including +without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom +the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ diff --git a/code/modules/tgs/core/default_event_handler.dm b/code/modules/tgs/core/default_event_handler.dm new file mode 100644 index 0000000000..c0ea8eec46 --- /dev/null +++ b/code/modules/tgs/core/default_event_handler.dm @@ -0,0 +1,30 @@ +/datum/tgs_event_handler/tgs_default/HandleEvent(event_code) + //TODO + return + +/* +The MIT License + +Copyright (c) 2017 Jordan Brown + +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and +associated documentation files (the "Software"), to +deal in the Software without restriction, including +without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom +the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ diff --git a/code/modules/tgs/includes.dm b/code/modules/tgs/includes.dm new file mode 100644 index 0000000000..586cbbe427 --- /dev/null +++ b/code/modules/tgs/includes.dm @@ -0,0 +1,6 @@ +#include "core\_definitions.dm" +#include "core\core.dm" +#include "core\datum.dm" +#include "core\default_event_handler.dm" +#include "v3210\api.dm" +#include "v3210\commands.dm" diff --git a/code/modules/tgs/v3210/api.dm b/code/modules/tgs/v3210/api.dm new file mode 100644 index 0000000000..f9b32471de --- /dev/null +++ b/code/modules/tgs/v3210/api.dm @@ -0,0 +1,248 @@ +#define REBOOT_MODE_NORMAL 0 +#define REBOOT_MODE_HARD 1 +#define REBOOT_MODE_SHUTDOWN 2 + +#define SERVICE_WORLD_PARAM "server_service" +#define SERVICE_INSTANCE_PARAM "server_instance" +#define SERVICE_PR_TEST_JSON "prtestjob.json" +#define SERVICE_INTERFACE_DLL "TGDreamDaemonBridge.dll" +#define SERVICE_INTERFACE_FUNCTION "DDEntryPoint" + +#define SERVICE_CMD_HARD_REBOOT "hard_reboot" +#define SERVICE_CMD_GRACEFUL_SHUTDOWN "graceful_shutdown" +#define SERVICE_CMD_WORLD_ANNOUNCE "world_announce" +#define SERVICE_CMD_LIST_CUSTOM "list_custom_commands" +#define SERVICE_CMD_API_COMPATIBLE "api_compat" +#define SERVICE_CMD_PLAYER_COUNT "client_count" + +#define SERVICE_CMD_PARAM_KEY "serviceCommsKey" +#define SERVICE_CMD_PARAM_COMMAND "command" +#define SERVICE_CMD_PARAM_SENDER "sender" +#define SERVICE_CMD_PARAM_CUSTOM "custom" + +#define SERVICE_REQUEST_KILL_PROCESS "killme" +#define SERVICE_REQUEST_IRC_BROADCAST "irc" +#define SERVICE_REQUEST_IRC_ADMIN_CHANNEL_MESSAGE "send2irc" +#define SERVICE_REQUEST_WORLD_REBOOT "worldreboot" +#define SERVICE_REQUEST_API_VERSION "api_ver" + +#define SERVICE_RETURN_SUCCESS "SUCCESS" + +/datum/tgs_api/v3210 + var/reboot_mode = REBOOT_MODE_NORMAL + var/comms_key + var/instance_name + var/originmastercommit + var/commit + var/list/cached_custom_tgs_chat_commands + var/warned_revison = FALSE + var/warned_custom_commands = FALSE + +/datum/tgs_api/v3210/ApiVersion() + return "3.2.1.0" + +/datum/tgs_api/v3210/proc/trim_left(text) + for (var/i = 1 to length(text)) + if (text2ascii(text, i) > 32) + return copytext(text, i) + return "" + +/datum/tgs_api/v3210/proc/trim_right(text) + for (var/i = length(text), i > 0, i--) + if (text2ascii(text, i) > 32) + return copytext(text, 1, i + 1) + return "" + +/datum/tgs_api/v3210/proc/file2list(filename) + return splittext(trim_left(trim_right(file2text(filename))), "\n") + +/datum/tgs_api/v3210/OnWorldNew(datum/tgs_event_handler/event_handler) //don't use event handling in this version + . = FALSE + comms_key = world.params[SERVICE_WORLD_PARAM] + instance_name = world.params[SERVICE_INSTANCE_PARAM] + if(!instance_name) + instance_name = "TG Station Server" //maybe just upgraded + + var/list/logs = file2list(".git/logs/HEAD") + if(logs.len) + logs = splittext(logs[logs.len - 1], " ") + commit = logs[2] + logs = file2list(".git/logs/refs/remotes/origin/master") + if(logs.len) + originmastercommit = splittext(logs[logs.len - 1], " ")[2] + + if(world.system_type != MS_WINDOWS) + TGS_ERROR_LOG("This API version is only supported on Windows. Not running on Windows. Aborting initialization!") + return + ListServiceCustomCommands(TRUE) + ExportService("[SERVICE_REQUEST_API_VERSION] [ApiVersion()]", TRUE) + return TRUE + +//nothing to do for v3 +/datum/tgs_api/v3210/OnInitializationComplete() + return + +/datum/tgs_api/v3210/InstanceName() + return world.params[SERVICE_INSTANCE_PARAM] + +/datum/tgs_api/v3210/proc/ExportService(command, skip_compat_check = FALSE) + . = FALSE + if(skip_compat_check && !fexists(SERVICE_INTERFACE_DLL)) + TGS_ERROR_LOG("Service parameter present but no interface DLL detected. This is symptomatic of running a service less than version 3.1! Please upgrade.") + return + call(SERVICE_INTERFACE_DLL, SERVICE_INTERFACE_FUNCTION)(instance_name, command) //trust no retval + return TRUE + +/datum/tgs_api/v3210/OnTopic(T) + var/list/params = params2list(T) + var/their_sCK = params[SERVICE_CMD_PARAM_KEY] + if(!their_sCK) + return FALSE //continue world/Topic + + if(their_sCK != comms_key) + return "Invalid comms key!"; + + var/command = params[SERVICE_CMD_PARAM_COMMAND] + if(!command) + return "No command!" + + switch(command) + if(SERVICE_CMD_API_COMPATIBLE) + return SERVICE_RETURN_SUCCESS + if(SERVICE_CMD_HARD_REBOOT) + if(reboot_mode != REBOOT_MODE_HARD) + reboot_mode = REBOOT_MODE_HARD + TGS_INFO_LOG("Hard reboot requested by service") + TGS_NOTIFY_ADMINS("The world will hard reboot at the end of the game. Requested by TGS.") + if(SERVICE_CMD_GRACEFUL_SHUTDOWN) + if(reboot_mode != REBOOT_MODE_SHUTDOWN) + reboot_mode = REBOOT_MODE_SHUTDOWN + TGS_INFO_LOG("Shutdown requested by service") + TGS_NOTIFY_ADMINS("The world will shutdown at the end of the game. Requested by TGS.") + if(SERVICE_CMD_WORLD_ANNOUNCE) + var/msg = params["message"] + if(!istext(msg) || !msg) + return "No message set!" + TGS_WORLD_ANNOUNCE(msg) + return SERVICE_RETURN_SUCCESS + if(SERVICE_CMD_PLAYER_COUNT) + return "[TGS_CLIENT_COUNT]" + if(SERVICE_CMD_LIST_CUSTOM) + return json_encode(ListServiceCustomCommands(FALSE)) + else + var/custom_command_result = HandleServiceCustomCommand(lowertext(command), params[SERVICE_CMD_PARAM_SENDER], params[SERVICE_CMD_PARAM_CUSTOM]) + if(custom_command_result) + return istext(custom_command_result) ? custom_command_result : SERVICE_RETURN_SUCCESS + return "Unknown command: [command]" + +/datum/tgs_api/v3210/OnReboot() + switch(reboot_mode) + if(REBOOT_MODE_HARD) + TGS_WORLD_ANNOUNCE("Hard reboot triggered, you will automatically reconnect...") + EndProcess() + if(REBOOT_MODE_SHUTDOWN) + TGS_WORLD_ANNOUNCE("The server is shutting down...") + EndProcess() + else + ExportService(SERVICE_REQUEST_WORLD_REBOOT) //just let em know + +/datum/tgs_api/v3210/TestMerges() + //do the best we can here as the datum can't be completed using the v3 api + . = list() + if(!fexists(SERVICE_PR_TEST_JSON)) + return + var/list/json = json_decode(file2text(SERVICE_PR_TEST_JSON)) + if(!json) + return + for(var/I in json) + var/datum/tgs_revision_information/test_merge/tm = new + tm.number = text2num(I) + var/list/entry = json[I] + tm.pull_request_commit = entry["commit"] + tm.author = entry["author"] + tm.title = entry["title"] + . += tm + +/datum/tgs_api/v3210/Revision() + if(!warned_revison) + TGS_ERROR_LOG("Use of TgsRevision on [ApiVersion()] origin_commit only points to master!") + warned_revison = TRUE + var/datum/tgs_revision_information/ri = new + ri.commit = commit + ri.origin_commit = originmastercommit + +/datum/tgs_api/v3210/EndProcess() + sleep(world.tick_lag) //flush the buffers + ExportService(SERVICE_REQUEST_KILL_PROCESS) + +/datum/tgs_api/v3210/ChatChannelInfo() + return list() + +/datum/tgs_api/v3210/ChatBroadcast(message, list/channels) + if(channels) + return TGS_UNIMPLEMENTED + ChatTargetedBroadcast(message, TRUE) + ChatTargetedBroadcast(message, FALSE) + +/datum/tgs_api/v3210/ChatTargetedBroadcast(message, admin_only) + ExportService("[admin_only ? SERVICE_REQUEST_IRC_ADMIN_CHANNEL_MESSAGE : SERVICE_REQUEST_IRC_BROADCAST] [message]") + +/datum/tgs_api/v3210/ChatPrivateMessage(message, admin_only) + return TGS_UNIMPLEMENTED + +#undef REBOOT_MODE_NORMAL +#undef REBOOT_MODE_HARD +#undef REBOOT_MODE_SHUTDOWN + +#undef SERVICE_WORLD_PARAM +#undef SERVICE_INSTANCE_PARAM +#undef SERVICE_PR_TEST_JSON +#undef SERVICE_INTERFACE_DLL +#undef SERVICE_INTERFACE_FUNCTION + +#undef SERVICE_CMD_HARD_REBOOT +#undef SERVICE_CMD_GRACEFUL_SHUTDOWN +#undef SERVICE_CMD_WORLD_ANNOUNCE +#undef SERVICE_CMD_LIST_CUSTOM +#undef SERVICE_CMD_API_COMPATIBLE +#undef SERVICE_CMD_PLAYER_COUNT + +#undef SERVICE_CMD_PARAM_KEY +#undef SERVICE_CMD_PARAM_COMMAND +#undef SERVICE_CMD_PARAM_SENDER +#undef SERVICE_CMD_PARAM_CUSTOM + +#undef SERVICE_REQUEST_KILL_PROCESS +#undef SERVICE_REQUEST_IRC_BROADCAST +#undef SERVICE_REQUEST_IRC_ADMIN_CHANNEL_MESSAGE +#undef SERVICE_REQUEST_WORLD_REBOOT +#undef SERVICE_REQUEST_API_VERSION + +#undef SERVICE_RETURN_SUCCESS + +/* +The MIT License + +Copyright (c) 2017 Jordan Brown + +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and +associated documentation files (the "Software"), to +deal in the Software without restriction, including +without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom +the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ diff --git a/code/modules/tgs/v3210/commands.dm b/code/modules/tgs/v3210/commands.dm new file mode 100644 index 0000000000..71d7e32366 --- /dev/null +++ b/code/modules/tgs/v3210/commands.dm @@ -0,0 +1,78 @@ +#define SERVICE_JSON_PARAM_HELPTEXT "help_text" +#define SERVICE_JSON_PARAM_ADMINONLY "admin_only" +#define SERVICE_JSON_PARAM_REQUIREDPARAMETERS "required_parameters" + +/datum/tgs_api/v3210/proc/ListServiceCustomCommands(warnings_only) + if(!warnings_only) + . = list() + var/list/command_name_types = list() + var/list/warned_command_names = warnings_only ? list() : null + var/warned_about_the_dangers_of_robutussin = !warnings_only + for(var/I in typesof(/datum/tgs_chat_command) - /datum/tgs_chat_command) + if(!warned_about_the_dangers_of_robutussin) + TGS_ERROR_LOG("Custom chat commands in [ApiVersion()] lacks the /datum/tgs_chat_user/sender.channel field!") + warned_about_the_dangers_of_robutussin = TRUE + var/datum/tgs_chat_command/stc = I + var/command_name = initial(stc.name) + if(!command_name || findtext(command_name, " ") || findtext(command_name, "'") || findtext(command_name, "\"")) + if(warnings_only && !warned_command_names[command_name]) + TGS_ERROR_LOG("Custom command [command_name] can't be used as it is empty or contains illegal characters!") + warned_command_names[command_name] = TRUE + continue + + if(command_name_types[command_name]) + if(warnings_only) + TGS_ERROR_LOG("Custom commands [command_name_types[command_name]] and [stc] have the same name, only [command_name_types[command_name]] will be available!") + continue + command_name_types[stc] = command_name + + if(!warnings_only) + .[command_name] = list(SERVICE_JSON_PARAM_HELPTEXT = initial(stc.help_text), SERVICE_JSON_PARAM_ADMINONLY = initial(stc.admin_only), SERVICE_JSON_PARAM_REQUIREDPARAMETERS = 0) + +/datum/tgs_api/v3210/proc/HandleServiceCustomCommand(command, sender, params) + if(!cached_custom_tgs_chat_commands) + cached_custom_tgs_chat_commands = list() + for(var/I in typesof(/datum/tgs_chat_command) - /datum/tgs_chat_command) + var/datum/tgs_chat_command/stc = I + cached_custom_tgs_chat_commands[lowertext(initial(stc.name))] = stc + + var/command_type = cached_custom_tgs_chat_commands[command] + if(!command_type) + return FALSE + var/datum/tgs_chat_command/stc = new command_type + var/datum/tgs_chat_user/user = new + user.friendly_name = sender + user.mention = sender + return stc.Run(user, params) || TRUE + +/* + +#undef SERVICE_JSON_PARAM_HELPTEXT +#undef SERVICE_JSON_PARAM_ADMINONLY +#undef SERVICE_JSON_PARAM_REQUIREDPARAMETERS + +The MIT License + +Copyright (c) 2017 Jordan Brown + +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and +associated documentation files (the "Software"), to +deal in the Software without restriction, including +without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom +the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ diff --git a/code/modules/tooltip/tooltip.dm b/code/modules/tooltip/tooltip.dm index 5110b98e8e..ab7dc91739 100644 --- a/code/modules/tooltip/tooltip.dm +++ b/code/modules/tooltip/tooltip.dm @@ -42,6 +42,8 @@ Notes: /datum/tooltip/New(client/C) if (C) owner = C + var/datum/asset/stuff = get_asset_datum(/datum/asset/simple/jquery) + stuff.send(owner) owner << browse(file2text('code/modules/tooltip/tooltip.html'), "window=[control]") ..() diff --git a/code/modules/tooltip/tooltip.html b/code/modules/tooltip/tooltip.html index 67fb8a77f1..3e2f26a09f 100644 --- a/code/modules/tooltip/tooltip.html +++ b/code/modules/tooltip/tooltip.html @@ -93,7 +93,7 @@
    - + + diff --git a/tools/travis/build_dependencies.sh b/tools/travis/build_dependencies.sh index 8f5c8de10a..60a23d9723 100755 --- a/tools/travis/build_dependencies.sh +++ b/tools/travis/build_dependencies.sh @@ -6,9 +6,12 @@ if [ "$BUILD_TOOLS" = false ]; then curl https://sh.rustup.rs -sSf | sh -s -- -y --default-host i686-unknown-linux-gnu source ~/.profile - git clone --branch $RUST_G_VERSION https://github.com/tgstation/rust-g - + mkdir rust-g cd rust-g + git init + git remote add origin https://github.com/tgstation/rust-g + git fetch --depth 1 origin $RUST_G_VERSION + git checkout FETCH_HEAD cargo build --release mkdir -p ~/.byond/bin