Fixing merge conflicts

THis is getting harder and harder
This commit is contained in:
Razharas
2014-02-06 22:26:16 +04:00
280 changed files with 23834 additions and 17691 deletions

View File

@@ -1,4 +1,4 @@
/tg/station 13 v1.0 - 6 October 2010 [![Build Status](http://hibernia.fallemmc.com:8090/job/tgstation/badge/icon)](http://hibernia.fallemmc.com:8090/job/tgstation/)
/tg/station 13 v1.0 - 6 October 2010 [![Build Status](https://travis-ci.org/tgstation/-tg-station.png)](https://travis-ci.org/tgstation/-tg-station)
Website: http://ss13.eu

File diff suppressed because it is too large Load Diff

View File

@@ -94,7 +94,7 @@
"abP" = (/obj/structure/table,/obj/machinery/recharger,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = -30},/obj/machinery/door_control{id = "Secure Gate"; name = "Brig Lockdown"; pixel_x = 26; pixel_y = -26; req_access_txt = "2"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden)
"abQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/security/warden)
"abR" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/structure/table/woodentable,/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1424; listening = 1; name = "Interrogation Intercom"; pixel_x = 0; pixel_y = -31},/turf/simulated/floor{icon_state = "grimy"},/area/security/main)
"abS" = (/obj/structure/closet/crate/medical,/obj/item/weapon/cable_coil,/turf/simulated/floor/plating,/area/maintenance/starboard)
"abS" = (/obj/structure/closet/crate/medical,/obj/item/stack/cable_coil,/turf/simulated/floor/plating,/area/maintenance/starboard)
"abT" = (/obj/machinery/door/airlock/engineering{icon_state = "door_closed"; locked = 0; name = "Fore Starboard Solar Access"; req_access_txt = "10"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/starboard)
"abU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/maintenance{name = "Brig Maintenance"; req_access_txt = "0"; req_one_access_txt = "63;12"},/turf/simulated/floor/plating,/area/maintenance/fore)
"abV" = (/obj/structure/closet,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/obj/item/weapon/contraband/poster,/turf/simulated/floor/plating,/area/maintenance/starboard)
@@ -266,7 +266,7 @@
"aff" = (/obj/structure/table/reinforced,/obj/item/weapon/paper,/turf/simulated/floor,/area/security/main)
"afg" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "forestarboard"; name = "Fore-Starboard Solar Array"},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/solar/auxstarboard)
"afh" = (/obj/structure/cable,/turf/simulated/floor/plating/airless,/area/solar/auxstarboard)
"afi" = (/obj/item/weapon/cable_coil,/turf/simulated/floor/plating/airless,/area/solar/auxport)
"afi" = (/obj/item/stack/cable_coil,/turf/simulated/floor/plating/airless,/area/solar/auxport)
"afj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main)
"afk" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/structure/reagent_dispensers/peppertank{pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden)
"afl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/main)
@@ -355,7 +355,7 @@
"agQ" = (/obj/structure/rack,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/maintenance/fore)
"agR" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/fore)
"agS" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"agT" = (/obj/item/weapon/cable_coil,/turf/simulated/floor/plating/airless,/area/solar/auxstarboard)
"agT" = (/obj/item/stack/cable_coil,/turf/simulated/floor/plating/airless,/area/solar/auxstarboard)
"agU" = (/turf/space,/area/maintenance/auxsolarstarboard)
"agV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"agW" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden)
@@ -927,7 +927,7 @@
"arQ" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plating,/area/maintenance/starboard)
"arR" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Engineering"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "bot"},/area/maintenance/starboard)
"arS" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"arT" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/cable_coil/random,/obj/item/weapon/cable_coil/random,/obj/item/weapon/cable_coil/random,/obj/item/weapon/crowbar/red,/obj/item/weapon/grenade/empgrenade,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"arT" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/weapon/crowbar/red,/obj/item/weapon/grenade/empgrenade,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"arU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light/small{dir = 1},/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/structure/dresser,/turf/simulated/floor/carpet,/area/crew_quarters/sleep)
"arV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"arW" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{name = "Engineering Maintenance"; req_access_txt = "10"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/starboard)
@@ -1154,7 +1154,7 @@
"awj" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/wall/r_wall,/area/turret_protected/ai)
"awk" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai)
"awl" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/wall/r_wall,/area/turret_protected/ai)
"awm" = (/obj/item/weapon/cable_coil,/turf/simulated/floor/plating/airless,/area)
"awm" = (/obj/item/stack/cable_coil,/turf/simulated/floor/plating/airless,/area)
"awn" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/fore)
"awo" = (/obj/structure/cable,/obj/machinery/power/solar{id = "forestarboard"; name = "Fore-Starboard Solar Array"},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area)
"awp" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;63"},/turf/simulated/floor/plating,/area/maintenance/fore)
@@ -1329,7 +1329,7 @@
"azC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/security/main)
"azD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/engine/engineering)
"azE" = (/obj/structure/rack,/obj/item/weapon/gun/energy/laser{pixel_x = -3; pixel_y = 3},/obj/item/weapon/gun/energy/laser,/obj/item/weapon/gun/energy/laser{pixel_x = 3; pixel_y = -3},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/security/warden)
"azF" = (/obj/structure/closet/crate,/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/miningdock)
"azF" = (/obj/structure/closet/crate,/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/miningdock)
"azG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/quartermaster/miningdock)
"azH" = (/obj/item/weapon/ore/silver,/obj/item/weapon/ore/silver,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/quartermaster/miningdock)
"azI" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor{icon_state = "warning"},/area/quartermaster/miningdock)
@@ -2012,7 +2012,7 @@
"aMJ" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod1/station)
"aMK" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor,/area/quartermaster/office{name = "\improper Cargo Office"})
"aML" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Mailroom"; req_access_txt = "0"; req_one_access_txt = "48;50"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/quartermaster/office{name = "\improper Cargo Office"})
"aMM" = (/obj/structure/table,/obj/item/weapon/cable_coil{amount = 5},/obj/item/device/flashlight,/obj/machinery/light_construct{dir = 4},/turf/simulated/floor,/area/construction)
"aMM" = (/obj/structure/table,/obj/item/stack/cable_coil{amount = 5},/obj/item/device/flashlight,/obj/machinery/light_construct{dir = 4},/turf/simulated/floor,/area/construction)
"aMN" = (/obj/structure/table,/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor{icon_state = "arrival"; dir = 4},/area/quartermaster/office{name = "\improper Cargo Office"})
"aMO" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/quartermaster/storage)
"aMP" = (/obj/structure/grille,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "dark"},/area/security/checkpoint2{name = "Customs"})
@@ -2095,7 +2095,7 @@
"aOo" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/computer/secure_data,/turf/simulated/floor/wood,/area/crew_quarters/heads)
"aOp" = (/obj/structure/table,/obj/item/device/multitool,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech)
"aOq" = (/obj/effect/landmark/start{name = "Assistant"},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/storage/tools)
"aOr" = (/obj/structure/table,/obj/item/weapon/cable_coil{pixel_x = -3; pixel_y = 3},/obj/item/weapon/cable_coil,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech)
"aOr" = (/obj/structure/table,/obj/item/stack/cable_coil{pixel_x = -3; pixel_y = 3},/obj/item/stack/cable_coil,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/storage/tech)
"aOs" = (/obj/effect/landmark/start{name = "Assistant"},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor,/area/storage/tools)
"aOt" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech)
"aOu" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech)
@@ -2855,7 +2855,7 @@
"bcU" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorengglass.dmi'; name = "Art Storage"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/storage/art)
"bcV" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/engine/break_room)
"bcW" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/camera{c_tag = "Port Primary Hallway - Port"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/hallway/primary/port)
"bcX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/goonplaque{desc = "\"This is a plaque in honour of our comrades on the G4407 Stations. Hopefully TG4407 model can live up to your fame and fortune.\" Scratched in beneath that is a crude image of a meteor and a spaceman. The spaceman is laughing. The meteor is exploding. The station model number is MSv39AIII:140106"},/area/hallway/primary/port)
"bcX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/goonplaque{desc = "\"This is a plaque in honour of our comrades on the G4407 Stations. Hopefully TG4407 model can live up to your fame and fortune.\" Scratched in beneath that is a crude image of a meteor and a spaceman. The spaceman is laughing. The meteor is exploding. The station model number is MSv39BIIII:140204"},/area/hallway/primary/port)
"bcY" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/engine/break_room)
"bcZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/power/apc{dir = 2; name = "Engineering Foyer APC"; pixel_x = -1; pixel_y = -26},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light,/turf/simulated/floor,/area/engine/break_room)
"bda" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_engineering{name = "Engineering Foyer"; req_access_txt = "0"; req_one_access_txt = "32;19"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/engine/break_room)
@@ -2944,7 +2944,7 @@
"beF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/weapon/cigbutt,/turf/simulated/floor/plating,/area/maintenance/starboard)
"beG" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/engine/break_room)
"beH" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/maintenance/starboard)
"beI" = (/obj/structure/table,/obj/item/weapon/cable_coil/random,/obj/item/weapon/cable_coil/random,/obj/item/weapon/cable_coil/random,/obj/item/weapon/cable_coil/random,/turf/simulated/floor,/area/storage/art)
"beI" = (/obj/structure/table,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/turf/simulated/floor,/area/storage/art)
"beJ" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/carpet,/area/bridge)
"beK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/landmark/start{name = "Cargo Technician"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/quartermaster/storage)
"beL" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 8; icon_state = "loadingarea"; tag = "loading"},/area/quartermaster/storage)
@@ -3268,7 +3268,7 @@
"bkR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/storage/primary)
"bkS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/flasher{id = "hopflash"; pixel_x = 28},/turf/simulated/floor{icon_state = "delivery"},/area/bridge/meeting_room{name = "\improper Command Hallway"})
"bkT" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/storage/primary)
"bkU" = (/obj/structure/table,/obj/item/weapon/cable_coil{pixel_x = 2; pixel_y = -2},/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = 5},/obj/item/weapon/screwdriver{pixel_y = 16},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/storage/primary)
"bkU" = (/obj/structure/table,/obj/item/stack/cable_coil{pixel_x = 2; pixel_y = -2},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 5},/obj/item/weapon/screwdriver{pixel_y = 16},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/storage/primary)
"bkV" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 2; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/port)
"bkW" = (/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/storage/primary)
"bkX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/port)
@@ -3485,7 +3485,7 @@
"bpa" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/hallway/primary/central)
"bpb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central)
"bpc" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 2; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{dir = 4; icon_state = "neutralcorner"},/area/hallway/primary/central)
"bpd" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/crowbar,/obj/item/weapon/wirecutters,/obj/item/weapon/cable_coil,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering)
"bpd" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/crowbar,/obj/item/weapon/wirecutters,/obj/item/stack/cable_coil,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering)
"bpe" = (/obj/structure/closet/radiation,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering)
"bpf" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/belt/utility,/obj/item/weapon/wrench,/obj/item/weapon/weldingtool,/obj/item/clothing/head/welding{pixel_x = -3; pixel_y = 5},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering)
"bpg" = (/obj/structure/closet/secure_closet/engineering_electrical,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering)
@@ -3512,7 +3512,7 @@
"bpB" = (/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_on"; name = "Mix to Filter"; on = 1},/turf/simulated/floor,/area/maintenance/storage)
"bpC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior{name = "\improper MiniSat Central Foyer"})
"bpD" = (/obj/structure/table,/obj/machinery/light_switch{pixel_x = 23},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/item/weapon/storage/toolbox/mechanical{pixel_y = 5},/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering)
"bpE" = (/obj/structure/table,/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/weapon/cable_coil,/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/obj/item/clothing/ears/earmuffs{pixel_x = -3; pixel_y = -2},/obj/item/clothing/ears/earmuffs{pixel_x = -5; pixel_y = 6},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering)
"bpE" = (/obj/structure/table,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/stack/cable_coil,/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/obj/item/clothing/ears/earmuffs{pixel_x = -3; pixel_y = -2},/obj/item/clothing/ears/earmuffs{pixel_x = -5; pixel_y = 6},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering)
"bpF" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/obj/item/weapon/grenade/chem_grenade/metalfoam,/obj/item/weapon/grenade/chem_grenade/metalfoam,/obj/item/weapon/crowbar,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering)
"bpG" = (/obj/structure/table,/obj/item/stack/rods{amount = 50},/obj/item/weapon/wrench,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering)
"bpH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
@@ -4090,7 +4090,7 @@
"bAH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plating,/area/maintenance/starboardsolar)
"bAI" = (/obj/structure/table,/obj/item/weapon/storage/pill_bottle/dice,/turf/simulated/floor,/area/crew_quarters/locker)
"bAJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area)
"bAK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/crowbar,/obj/item/weapon/cable_coil,/obj/item/weapon/screwdriver,/obj/item/weapon/weldingtool,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering)
"bAK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/crowbar,/obj/item/stack/cable_coil,/obj/item/weapon/screwdriver,/obj/item/weapon/weldingtool,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering)
"bAL" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/gloves/black,/obj/item/weapon/extinguisher{pixel_x = 8},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 21},/obj/item/clothing/glasses/meson,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering)
"bAM" = (/obj/structure/closet/secure_closet/engineering_welding,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering)
"bAN" = (/obj/machinery/computer/security,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/brig)
@@ -4730,7 +4730,7 @@
"bMX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/aft{name = "Aft Maintenance"})
"bMY" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "yellow"; dir = 4; icon_state = "manifold-y"; level = 2},/turf/simulated/floor,/area/maintenance/storage)
"bMZ" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple{pipe_color = "green"; icon_state = "intact-g"; level = 2},/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/turf/simulated/floor{dir = 4; icon_state = "caution"},/area/maintenance/storage)
"bNa" = (/obj/structure/closet,/obj/item/weapon/cable_coil/random,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard)
"bNa" = (/obj/structure/closet,/obj/item/stack/cable_coil/random,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard)
"bNb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/maintenance/aft{name = "Aft Maintenance"})
"bNc" = (/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"bNd" = (/obj/machinery/air_sensor{frequency = 1443; id_tag = "air_sensor"; output = 7},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/maintenance/storage)
@@ -5012,7 +5012,7 @@
"bSt" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "whitegreenfull"},/area/medical/medbay{name = "Medbay Central"})
"bSu" = (/obj/machinery/door/firedoor,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay{name = "Medbay Central"})
"bSv" = (/obj/item/stack/sheet/glass{amount = 50; pixel_x = 3; pixel_y = 3},/obj/item/stack/sheet/metal{amount = 50},/obj/item/clothing/glasses/welding,/obj/structure/table/reinforced,/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/lab)
"bSw" = (/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/table/reinforced,/obj/machinery/light,/obj/item/weapon/cable_coil,/obj/item/weapon/cable_coil,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/lab)
"bSw" = (/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/table/reinforced,/obj/machinery/light,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/lab)
"bSx" = (/obj/structure/stool/bed/chair,/obj/machinery/light/small{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "whitegreen"},/area/medical/medbay{name = "Medbay Central"})
"bSy" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{dir = 1; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"})
"bSz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central)
@@ -5229,7 +5229,7 @@
"bWC" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor,/area/hallway/primary/central)
"bWD" = (/obj/machinery/vending/hydroseeds{slogan_delay = 700},/obj/structure/noticeboard{desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; name = "requests board"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "warning"},/area/hydroponics)
"bWE" = (/obj/machinery/vending/hydronutrients,/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "warning"},/area/hydroponics)
"bWF" = (/obj/structure/closet/crate,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/cable_coil/random,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard)
"bWF" = (/obj/structure/closet/crate,/obj/item/weapon/storage/belt/utility,/obj/item/stack/cable_coil/random,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/starboard)
"bWG" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 10; icon_state = "intact-c"; initialize_directions = 10; level = 2},/turf/simulated/floor,/area/maintenance/storage)
"bWH" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 6; icon_state = "intact-c"; level = 2},/turf/simulated/floor,/area/maintenance/storage)
"bWI" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/starboard)
@@ -5302,7 +5302,7 @@
"bXX" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"bXY" = (/obj/structure/rack,/obj/item/weapon/screwdriver{pixel_y = 16},/obj/item/weapon/hand_labeler,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"bXZ" = (/obj/structure/table,/obj/item/device/analyzer/plant_analyzer,/obj/item/nutrient/ez,/turf/simulated/floor{icon_state = "warning"},/area/hydroponics)
"bYa" = (/obj/structure/rack,/obj/item/weapon/cable_coil{pixel_x = -1; pixel_y = -3},/obj/item/weapon/wrench,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"bYa" = (/obj/structure/rack,/obj/item/stack/cable_coil{pixel_x = -1; pixel_y = -3},/obj/item/weapon/wrench,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"bYb" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/starboard)
"bYc" = (/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"bYd" = (/obj/structure/closet,/obj/item/clothing/tie/stethoscope,/obj/item/weapon/hemostat,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
@@ -5362,7 +5362,7 @@
"bZf" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/carpet,/area/library)
"bZg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"bZh" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"bZi" = (/obj/structure/closet/crate,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/cable_coil/random,/turf/simulated/floor/plating,/area/maintenance/starboard)
"bZi" = (/obj/structure/closet/crate,/obj/item/weapon/storage/belt/utility,/obj/item/stack/cable_coil/random,/turf/simulated/floor/plating,/area/maintenance/starboard)
"bZj" = (/obj/machinery/atmospherics/pipe/manifold{dir = 2; icon_state = "manifold"; level = 2},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
"bZk" = (/obj/machinery/atmospherics/pipe/simple{dir = 10; icon_state = "intact"; level = 2},/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
"bZl" = (/turf/simulated/floor/plating{tag = "icon-platingdmg3"; icon_state = "platingdmg3"},/area/maintenance/aft{name = "Aft Maintenance"})
@@ -5407,7 +5407,7 @@
"bZY" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 1; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"})
"bZZ" = (/obj/structure/disposaloutlet{dir = 2},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating/airless,/area)
"caa" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/lab)
"cab" = (/obj/item/weapon/cable_coil,/turf/simulated/floor/plating/airless,/area/solar/port)
"cab" = (/obj/item/stack/cable_coil,/turf/simulated/floor/plating/airless,/area/solar/port)
"cac" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cad" = (/turf/simulated/wall/r_wall,/area/security/checkpoint/science{name = "Security Post - Research Division"})
"cae" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;7;35;8;47"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
@@ -5591,7 +5591,7 @@
"cdA" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"})
"cdB" = (/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
"cdC" = (/obj/structure/table/reinforced,/obj/item/weapon/pen,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/machinery/door/poddoor/shutters/preopen{id = "rndshuttersup"; name = "research and development lab shutters"},/obj/machinery/door/firedoor,/obj/machinery/door/window/eastright{dir = 2; name = "Research and Development Desk"; req_access_txt = "7"},/turf/simulated/floor/plating,/area/toxins/lab)
"cdD" = (/obj/structure/table/woodentable,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/cable_coil,/obj/item/device/mmi{name = "man-machine interface"},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"})
"cdD" = (/obj/structure/table/woodentable,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/stack/cable_coil,/obj/item/device/mmi{name = "man-machine interface"},/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"})
"cdE" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/bar{name = "\improper Maltese Falcon"})
"cdF" = (/obj/structure/closet/emcloset,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/library)
"cdG" = (/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/stack/rods{amount = 50},/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/power/apc{dir = 8; name = "E.V.A. Storage APC"; pixel_x = -24},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
@@ -5654,7 +5654,7 @@
"ceL" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "whitehall"},/area/medical/research{name = "Research Division"})
"ceM" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/maintenance/storage)
"ceN" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/window/northleft{dir = 8; name = "Disposals Chute"; pixel_x = -1; pixel_y = 0; req_access_txt = "0"},/obj/machinery/disposal/deliveryChute{dir = 8; name = "disposals chute"; pixel_x = 5},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/teleporter{name = "\improper Teleporter Room"})
"ceO" = (/obj/item/clothing/glasses/science{pixel_x = 2; pixel_y = 4},/obj/item/clothing/glasses/science,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/structure/table,/obj/item/weapon/cable_coil,/obj/item/weapon/cable_coil,/obj/machinery/camera{c_tag = "Chemistry"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry)
"ceO" = (/obj/item/clothing/glasses/science{pixel_x = 2; pixel_y = 4},/obj/item/clothing/glasses/science,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/machinery/camera{c_tag = "Chemistry"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 8; icon_state = "whiteyellow"},/area/medical/chemistry)
"ceP" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/maintenance/storage)
"ceQ" = (/obj/machinery/door/airlock/external{name = "Auxiliary Airlock"},/turf/simulated/floor/plating,/area/hallway/secondary/entry{name = "Arrivals"})
"ceR" = (/obj/structure/closet,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"})
@@ -6088,7 +6088,7 @@
"cnd" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor)
"cne" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "cyan"; dir = 2; icon_state = "intact-c"; level = 2},/turf/simulated/floor,/area/maintenance/storage)
"cnf" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/obj/structure/sign/nosmoking_2{pixel_x = -32},/turf/simulated/floor{icon_state = "bot"},/area/toxins/storage)
"cng" = (/obj/structure/rack,/obj/item/weapon/cable_coil{pixel_x = -1; pixel_y = -3},/obj/item/weapon/cable_coil,/obj/item/weapon/wirecutters,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cng" = (/obj/structure/rack,/obj/item/stack/cable_coil{pixel_x = -1; pixel_y = -3},/obj/item/stack/cable_coil,/obj/item/weapon/wirecutters,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cnh" = (/obj/machinery/suit_storage_unit/standard_unit,/obj/machinery/light_switch{pixel_x = -8; pixel_y = 30},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva{name = "E.V.A. Storage"})
"cni" = (/obj/machinery/portable_atmospherics/canister/toxins,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/storage)
"cnj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "Auxiliary Restrooms APC"; pixel_y = -24},/obj/structure/cable/yellow,/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/toilet{name = "\improper Auxiliary Restrooms"})
@@ -6581,7 +6581,7 @@
"cwC" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;5;39;6"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cwD" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/exit{name = "\improper Departure Lounge"})
"cwE" = (/obj/structure/sign/biohazard{pixel_x = -32},/turf/space,/area)
"cwF" = (/obj/structure/rack,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/weapon/cable_coil{pixel_x = -1; pixel_y = -3},/obj/item/weapon/cable_coil,/turf/simulated/floor,/area/assembly/chargebay)
"cwF" = (/obj/structure/rack,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/stack/cable_coil{pixel_x = -1; pixel_y = -3},/obj/item/stack/cable_coil,/turf/simulated/floor,/area/assembly/chargebay)
"cwG" = (/obj/machinery/computer/scan_consolenew,/turf/simulated/floor{icon_state = "whitebluefull"},/area/medical/genetics)
"cwH" = (/obj/structure/stool/bed/chair/office/light{dir = 8},/turf/simulated/floor{dir = 9; icon_state = "whiteblue"},/area/medical/genetics)
"cwI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/obj/structure/stool/bed/chair,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
@@ -6932,7 +6932,7 @@
"cDp" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/starboard)
"cDq" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/starboard)
"cDr" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless,/area/solar/starboard)
"cDs" = (/obj/item/weapon/cable_coil,/turf/simulated/floor/plating/airless,/area/solar/starboard)
"cDs" = (/obj/item/stack/cable_coil,/turf/simulated/floor/plating/airless,/area/solar/starboard)
"cDt" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless,/area/solar/starboard)
"cDu" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/starboard)
"cDv" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/solar/starboard)
@@ -7437,7 +7437,7 @@
"cNa" = (/turf/unsimulated/floor{icon_state = "greencorner"},/area/centcom/control)
"cNb" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "whitegreen"},/area/medical/virology)
"cNc" = (/obj/structure/stool/bed/chair{dir = 8},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 31},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
"cNd" = (/obj/structure/rack,/obj/item/weapon/cable_coil,/turf/simulated/shuttle/plating{dir = 1; icon_state = "warning"},/area/shuttle/escape/centcom)
"cNd" = (/obj/structure/rack,/obj/item/stack/cable_coil,/turf/simulated/shuttle/plating{dir = 1; icon_state = "warning"},/area/shuttle/escape/centcom)
"cNe" = (/obj/structure/ore_box,/turf/simulated/floor{icon_state = "bot"},/area/teleporter{name = "\improper Teleporter Room"})
"cNf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/medical/virology)
"cNg" = (/turf/unsimulated/wall,/area/syndicate_mothership)
@@ -7583,7 +7583,7 @@
"cPQ" = (/obj/machinery/computer/crew,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
"cPR" = (/obj/structure/table,/obj/item/trash/cheesie{pixel_y = 4},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/medical/virology)
"cPS" = (/obj/machinery/door/morgue{name = "Confession Booth"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
"cPT" = (/obj/structure/table,/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/cable_coil,/obj/item/device/flash,/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics)
"cPT" = (/obj/structure/table,/obj/item/weapon/storage/box/bodybags,/obj/item/stack/cable_coil,/obj/item/device/flash,/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics)
"cPU" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/plating{icon_state = "floorgrime"},/area/shuttle/escape/centcom)
"cPV" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/suit_storage_unit/standard_unit,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/escape/centcom)
"cPW" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/structure/table,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
@@ -7870,7 +7870,7 @@
"cVr" = (/obj/item/weapon/shard,/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
"cVs" = (/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
"cVt" = (/obj/structure/cable,/obj/structure/computerframe{anchored = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
"cVu" = (/obj/structure/cable,/obj/structure/computerframe{anchored = 1},/obj/item/weapon/cable_coil/cut,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
"cVu" = (/obj/structure/cable,/obj/structure/computerframe{anchored = 1},/obj/item/stack/cable_coil/cut,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
"cVv" = (/obj/structure/rack,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
"cVw" = (/obj/structure/rack,/obj/item/clothing/suit/space/rig/medical,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/medical,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
"cVx" = (/obj/structure/rack,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
@@ -7915,7 +7915,7 @@
"cWk" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/simulated/floor/airless,/area/tcommsat/chamber)
"cWl" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/tcommsat/chamber)
"cWm" = (/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/tcommsat/chamber)
"cWn" = (/obj/item/weapon/cable_coil/cut{amount = 1},/turf/simulated/floor/plating/airless,/area/tcommsat/chamber)
"cWn" = (/obj/item/stack/cable_coil/cut{amount = 1},/turf/simulated/floor/plating/airless,/area/tcommsat/chamber)
"cWo" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/closet,/turf/simulated/floor/plating/airless,/area/tcommsat/chamber)
"cWp" = (/obj/item/weapon/folder/yellow,/turf/simulated/floor/airless,/area/tcommsat/chamber)
"cWq" = (/obj/structure/stool/bed,/obj/effect/decal/remains/human,/turf/simulated/floor/airless,/area/tcommsat/chamber)
@@ -8184,8 +8184,8 @@
"dbt" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/airless,/area/derelict/hallway/primary)
"dbu" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/derelict/bridge/access)
"dbv" = (/obj/machinery/door/airlock/command{name = "E.V.A."; req_access = null; req_access_txt = "18"},/turf/simulated/floor,/area/derelict/bridge/access)
"dbw" = (/obj/item/weapon/cable_coil/cut,/turf/simulated/floor/plating/airless,/area)
"dbx" = (/obj/item/weapon/cable_coil/cut,/turf/space,/area)
"dbw" = (/obj/item/stack/cable_coil/cut,/turf/simulated/floor/plating/airless,/area)
"dbx" = (/obj/item/stack/cable_coil/cut,/turf/space,/area)
"dby" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/derelict/bridge/access)
"dbz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/airless,/area)
"dbA" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor,/area/derelict/bridge/access)
@@ -8205,14 +8205,14 @@
"dbO" = (/obj/structure/computerframe,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor,/area/derelict/bridge)
"dbP" = (/obj/structure/table,/turf/simulated/floor,/area/derelict/bridge)
"dbQ" = (/obj/machinery/computer/security,/turf/simulated/floor,/area/derelict/bridge)
"dbR" = (/obj/structure/table,/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/turf/simulated/floor,/area/derelict/bridge)
"dbR" = (/obj/structure/table,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/turf/simulated/floor,/area/derelict/bridge)
"dbS" = (/obj/structure/table,/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/derelict/bridge)
"dbT" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/simulated/floor,/area/derelict/bridge)
"dbU" = (/obj/item/weapon/grenade/empgrenade,/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor,/area/derelict/bridge)
"dbV" = (/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/singularity_engine)
"dbW" = (/turf/simulated/floor/airless{icon_state = "damaged4"},/area/derelict/singularity_engine)
"dbX" = (/turf/simulated/floor/airless{icon_state = "damaged5"},/area/derelict/singularity_engine)
"dbY" = (/obj/item/weapon/cable_coil/cut,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/singularity_engine)
"dbY" = (/obj/item/stack/cable_coil/cut,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/singularity_engine)
"dbZ" = (/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine)
"dca" = (/turf/simulated/wall,/area/derelict/singularity_engine)
"dcb" = (/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/simulated/floor,/area/derelict/bridge)
@@ -8243,7 +8243,7 @@
"dcA" = (/obj/structure/stool,/turf/simulated/floor,/area/derelict/bridge)
"dcB" = (/obj/structure/table,/obj/item/weapon/cell,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor,/area/derelict/bridge)
"dcC" = (/obj/item/weapon/storage/toolbox/syndicate,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/singularity_engine)
"dcD" = (/obj/item/weapon/cable_coil/cut,/turf/simulated/floor/airless{icon_state = "damaged4"},/area/derelict/singularity_engine)
"dcD" = (/obj/item/stack/cable_coil/cut,/turf/simulated/floor/airless{icon_state = "damaged4"},/area/derelict/singularity_engine)
"dcE" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/airless,/area)
"dcF" = (/obj/structure/window/basic,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area)
"dcG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating/airless,/area)
@@ -8282,11 +8282,11 @@
"ddn" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/singularity_engine)
"ddo" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine)
"ddp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine)
"ddq" = (/obj/item/weapon/cable_coil/cut,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/derelict/singularity_engine)
"ddq" = (/obj/item/stack/cable_coil/cut,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/derelict/singularity_engine)
"ddr" = (/turf/simulated/floor/airless,/area/derelict/bridge/access)
"dds" = (/obj/structure/table,/obj/item/device/aicard,/turf/simulated/floor/airless,/area/derelict/bridge/access)
"ddt" = (/obj/structure/table,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/airless,/area/derelict/bridge/access)
"ddu" = (/obj/structure/table,/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/turf/simulated/floor/airless,/area/derelict/bridge/access)
"ddu" = (/obj/structure/table,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/turf/simulated/floor/airless,/area/derelict/bridge/access)
"ddv" = (/obj/structure/table,/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/turf/simulated/floor/airless,/area/derelict/bridge/access)
"ddw" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless,/area/derelict/hallway/primary)
"ddx" = (/turf/simulated/floor/airless{icon_state = "circuit"},/area/derelict/singularity_engine)
@@ -8296,8 +8296,8 @@
"ddB" = (/obj/machinery/door/window/southleft,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical)
"ddC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/hallway/primary)
"ddD" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/airless,/area/derelict/bridge/access)
"ddE" = (/obj/item/weapon/cable_coil/cut,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/singularity_engine)
"ddF" = (/obj/item/weapon/cable_coil/cut,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/singularity_engine)
"ddE" = (/obj/item/stack/cable_coil/cut,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/singularity_engine)
"ddF" = (/obj/item/stack/cable_coil/cut,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/singularity_engine)
"ddG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/singularity_engine)
"ddH" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/singularity_engine)
"ddI" = (/obj/item/stack/rods,/turf/simulated/floor/airless{icon_state = "circuit"},/area/derelict/singularity_engine)
@@ -8314,7 +8314,7 @@
"ddT" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/singularity_engine)
"ddU" = (/obj/item/weapon/screwdriver,/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine)
"ddV" = (/obj/item/stack/rods,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/singularity_engine)
"ddW" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/item/weapon/cable_coil/cut,/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine)
"ddW" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/item/stack/cable_coil/cut,/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine)
"ddX" = (/obj/structure/table,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/singularity_engine)
"ddY" = (/turf/simulated/wall,/area/derelict/hallway/primary)
"ddZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/airless,/area/derelict/hallway/primary)
@@ -8535,7 +8535,7 @@
"dig" = (/obj/structure/table,/turf/simulated/floor/airless,/area)
"dih" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/airless,/area)
"dii" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 1; dir = 8; freerange = 1; listening = 0; name = "Pirate Radio Broadcast Channel"; pixel_x = 0},/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/djstation)
"dij" = (/obj/structure/lattice,/obj/item/weapon/cable_coil/cut,/turf/space,/area)
"dij" = (/obj/structure/lattice,/obj/item/stack/cable_coil/cut,/turf/space,/area)
"dik" = (/obj/structure/girder,/turf/simulated/floor/plating,/area/derelict/arrival)
"dil" = (/obj/structure/stool,/turf/simulated/floor/airless,/area/derelict/hallway/primary)
"dim" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Access"; req_access_txt = "24"},/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary)
@@ -8574,7 +8574,7 @@
"diT" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area)
"diU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary)
"diV" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/airless,/area/derelict/hallway/secondary)
"diW" = (/obj/item/weapon/cable_coil/cut,/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary)
"diW" = (/obj/item/stack/cable_coil/cut,/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary)
"diX" = (/turf/simulated/floor/airless,/area/derelict/hallway/secondary)
"diY" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/airless,/area/derelict/hallway/secondary)
"diZ" = (/obj/machinery/door/airlock/maintenance{name = "Aux Storage"; req_access_txt = "23"},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary)
@@ -9604,7 +9604,7 @@
"dCJ" = (/obj/machinery/door/firedoor/border_only{dir = 8},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor{dir = 8; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/medbay3{name = "Medbay Aft"})
"dCK" = (/turf/space/transit/east/shuttlespace_ew14,/area/shuttle/escape_pod4/transit)
"dCL" = (/obj/machinery/door/airlock/maintenance{name = "Genetics Maintenance"; req_access_txt = "9"; req_one_access_txt = "0"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"dCM" = (/obj/structure/closet/crate,/obj/item/weapon/cable_coil,/obj/item/weapon/grenade/chem_grenade,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"dCM" = (/obj/structure/closet/crate,/obj/item/stack/cable_coil,/obj/item/weapon/grenade/chem_grenade,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"dCN" = (/obj/machinery/light/small{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/medical/medbay3{name = "Medbay Aft"})
"dCO" = (/turf/space/transit/east/shuttlespace_ew15,/area/shuttle/escape_pod4/transit)
"dCP" = (/turf/space/transit/east/shuttlespace_ew1,/area/shuttle/escape_pod4/transit)
@@ -9628,7 +9628,7 @@
"dDh" = (/obj/machinery/washing_machine,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership)
"dDi" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/wiz,/turf/unsimulated/floor{dir = 5; icon_state = "carpetside"},/area/wizard_station)
"dDj" = (/obj/structure/table,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
"dDk" = (/obj/structure/table,/obj/item/weapon/crowbar,/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
"dDk" = (/obj/structure/table,/obj/item/weapon/crowbar,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
"dDl" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/device/assembly/infra,/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
"dDm" = (/obj/structure/table,/obj/item/device/assembly/signaler,/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
"dDn" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/device/assembly/signaler,/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
@@ -9713,7 +9713,7 @@
"dEO" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{dir = 8; icon_state = "whitegreencorner"},/area/medical/medbay3{name = "Medbay Aft"})
"dEP" = (/obj/structure/table,/obj/item/device/assembly/igniter{pixel_x = -5; pixel_y = 3},/obj/item/device/assembly/igniter{pixel_x = 5; pixel_y = -4},/obj/item/device/assembly/igniter{pixel_x = 2; pixel_y = 6},/obj/item/device/assembly/igniter{pixel_x = 2; pixel_y = -1},/turf/simulated/floor/engine,/area/toxins/xenobiology)
"dEQ" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 10},/obj/item/device/radio/electropack,/turf/simulated/floor/engine,/area/toxins/xenobiology)
"dER" = (/obj/structure/table,/obj/machinery/cell_charger{pixel_y = 5},/obj/item/weapon/cable_coil,/obj/item/device/multitool,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/engine,/area/toxins/xenobiology)
"dER" = (/obj/structure/table,/obj/machinery/cell_charger{pixel_y = 5},/obj/item/stack/cable_coil,/obj/item/device/multitool,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/engine,/area/toxins/xenobiology)
"dES" = (/obj/machinery/computer/security/telescreen{dir = 1; name = "Test Chamber Monitor"; network = list("Xeno"); pixel_x = 0; pixel_y = 2},/obj/structure/table/reinforced,/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/toxins/xenobiology)
"dET" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/camera/autoname{dir = 4; network = list("SS13","RD")},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/xenobiology)
"dEU" = (/obj/item/device/radio/intercom{pixel_x = -28; pixel_y = 0},/obj/structure/table,/obj/item/weapon/hand_labeler,/obj/item/device/radio/headset/headset_med,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/machinery/camera{c_tag = "Virology - Cells"; dir = 4; network = list("SS13","Medbay")},/turf/simulated/floor{dir = 9; icon_state = "whitegreen"},/area/medical/virology)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,83 @@
/*
In this file we modify the job datums when the ministation.dm file is included/ticked.
Since we will be overriden by the job datums, we have to modify the variables in the constructor.
*/
/datum/job/New()
..()
supervisors = "the captain and the head of personnel"
/datum/job/assistant // Here so assistant appears on the top of the select job list.
// Command
/datum/job/captain/New()
..()
supervisors = "Nanotrasen and Central Command"
/datum/job/hop/New()
..()
supervisors = "the captain and Central Command"
/datum/job/hop/get_access()
return get_all_accesses()
// Cargo
/datum/job/cargo_tech/New()
..()
total_positions = 3
spawn_positions = 3
access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mint, access_mining, access_mining_station)
minimal_access = list(access_maint_tunnels, access_cargo, access_cargo_bot, access_mining, access_mint, access_mining_station, access_mailsorting)
// Engineering
/datum/job/engineer/New()
..()
total_positions = 4
spawn_positions = 4
access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics, access_tcomsat)
minimal_access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_tcomsat, access_atmospherics)
// Medical
/datum/job/doctor/New()
..()
total_positions = 4
spawn_positions = 4
access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics)
minimal_access = list(access_medical, access_morgue, access_surgery)
/datum/job/chemist/New()
..()
total_positions = 1
spawn_positions = 1
access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics)
minimal_access = list(access_medical, access_chemistry)
// Science
/datum/job/scientist/New()
..()
total_positions = 4
spawn_positions = 4
access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology)
minimal_access = list(access_tox, access_tox_storage, access_research, access_xenobiology, access_robotics)
// Security
/datum/job/detective/New()
..()
supervisors = "no one but yourself"
access = list(access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_court, access_engine)
minimal_access = list(access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_court)
/datum/job/officer/New()
..()
total_positions = 4
spawn_positions = 4
access = list(access_security, access_sec_doors, access_brig, access_court)
minimal_access = list(access_security, access_sec_doors, access_brig, access_court)

View File

@@ -0,0 +1,55 @@
// Removed Jobs, setting config_check to 0 will stop them from being initialised.
/datum/job/chef/config_check()
return 0
/datum/job/hydro/config_check()
return 0
/datum/job/qm/config_check()
return 0
/datum/job/mining/config_check()
return 0
/datum/job/mime/config_check()
return 0
/datum/job/librarian/config_check()
return 0
/datum/job/lawyer/config_check()
return 0
/datum/job/chaplain/config_check()
return 0
/datum/job/chief_engineer/config_check()
return 0
/datum/job/atmos/config_check()
return 0
/datum/job/cmo/config_check()
return 0
/datum/job/geneticist/config_check()
return 0
/datum/job/virologist/config_check()
return 0
/datum/job/rd/config_check()
return 0
/datum/job/roboticist/config_check()
return 0
/datum/job/hos/config_check()
return 0
/datum/job/warden/config_check()
return 0
/datum/job/cyborg/config_check()
return 0

View File

@@ -0,0 +1,19 @@
// Override global variables here!
var/datum/map_config/MiniStation = new()
/datum/map_config/New()
..()
accessable_z_levels = list("1" = 20, "4" = 40, "5" = 40) // Restrict the map to the non-empty z levels, which were all combined in MiniStation
// Enable all headsets by default in MiniStation, we don't worry about spam here.
// Also both heads are in charge of everything, give them all department channels.
/obj/item/device/encryptionkey/heads/New()
..()
// Give all channels and turn everything on
channels = list("Command" = 1, "Security" = 1, "Engineering" = 1, "Science" = 1, "Medical" = 1, "Supply" = 1, "Service" = 1)
/obj/item/weapon/paper/generator
name = "paper - 'generator instructions'"
info = "<h2>How to setup the Thermo-Generator</h2><ol> <li>To the top right is a room full of canisters; to the bottom there is a room full of pipes. Connect C02 canisters to the pipe room's top connector ports, the cansisters will help act as a buffer so only remove them when refilling the gas..</li> <li>Connect 3 plasma and 2 oxygen canisters to the bottom ports of the pipe room.</li> <li>Turn on all the pumps and valves in the room except for the one connected to the yellow pipe and red pipe, no adjustments to the pump strength needed.</li> <li>Look into the camera monitor to see the burn chamber. When it is full of plasma, press the igniter button.</li> <li>Setup the SMES cells in the North West of Engineering and set an input of half the max; and an output that is half the input.</li></ol>Well done, you should have a functioning generator generating power. If the generator stops working, and there is enough gas and it's hot and cold, it might mean there is too much pressure and you need to turn on the pump that is connected to the red and yellow pipes to release the pressure. Make sure you don't take out too much pressure though.<br>You optimize the generator you must work out how much power your station is using and lowering the circulation pumps enough so that the generator doesn't create excess power, and it will allow the generator to powering the station for a longer duration, without having to replace the canisters. "

View File

@@ -0,0 +1,6 @@
/*
The contents of these files should not be ticked/included while compiling.
These files are only included, and compiled, when \_maps\ministation.dm is included; as these files are necessary to run the MiniStation mod.
You do not have to tick them yourself, it will be automatically done by the ministation.dm file.
*/

View File

@@ -0,0 +1,38 @@
/datum/supply_packs/engineering/oxygen
name = "Oxygen Canister"
contains = list(/obj/machinery/portable_atmospherics/canister/oxygen)
cost = 15
containertype = /obj/structure/largecrate
containername = "oxygen canister crate"
/datum/supply_packs/engineering/toxins
name = "Toxins Canister"
contains = list(/obj/machinery/portable_atmospherics/canister/toxins)
cost = 30
containertype = /obj/structure/largecrate
containername = "toxins canister crate"
/datum/supply_packs/engineering/nitrogen
name = "Nitrogen Canister"
contains = list(/obj/machinery/portable_atmospherics/canister/nitrogen)
cost = 20
containertype = /obj/structure/largecrate
containername = "nitrogen canister crate"
/datum/supply_packs/engineering/carbon_dio
name = "Carbon Dioxide Canister"
contains = list(/obj/machinery/portable_atmospherics/canister/carbon_dioxide)
cost = 35
containertype = /obj/structure/largecrate
containername = "carbon dioxide canister crate"
/obj/machinery/hydroponics/unattached
anchored = 0
/datum/supply_packs/organic/hydroponics/hydro_tray
name = "Hydroponics Tray"
contains = list(/obj/machinery/hydroponics/unattached)
cost = 10
containertype = /obj/structure/largecrate
containername = "hydroponics tray crate"

View File

@@ -0,0 +1,18 @@
/obj/machinery/telecomms/receiver/preset_left/ministation
name = "Receiver"
freq_listening = list()
/obj/machinery/telecomms/bus/preset_one/ministation
name = "Bus"
autolinkers = list("processor1", "common")
freq_listening = list()
/obj/machinery/telecomms/processor/preset_one/ministation
name = "Processor"
/obj/machinery/telecomms/server/presets/common/ministation/New()
..()
freq_listening = list()
/obj/machinery/telecomms/broadcaster/preset_left/ministation
name = "Broadcaster"

View File

@@ -0,0 +1,37 @@
// Modified uplink items to discourage tator murderboning
/datum/uplink_item/dangerous/revolver/New()
..()
cost = 10
/datum/uplink_item/dangerous/crossbow/New()
..()
cost = 8
/datum/uplink_item/dangerous/sword/New()
..()
cost = 7
/datum/uplink_item/dangerous/syndicate_minibomb/New()
..()
cost = 6
/datum/uplink_item/stealthy_weapons/para_pen/New()
..()
item = null // Disabled
/datum/uplink_item/stealthy_tools/syndigolashes/New()
..()
cost = 5
/datum/uplink_item/device_tools/plastic_explosives/New()
..()
item = null // Disabled
/datum/uplink_item/device_tools/singularity_beacon/New()
..()
cost = 4
/datum/uplink_item/device_tools/syndicate_bomb/New()
..()
item = null // Disabled

View File

@@ -119,7 +119,7 @@
"aco" = (/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/security/warden)
"acp" = (/turf/simulated/floor{icon_state = "warning"},/area/security/warden)
"acq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/security/warden)
"acr" = (/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Armory APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/security/warden)
"acr" = (/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Armory APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/security/warden)
"acs" = (/obj/machinery/camera{c_tag = "Head of Security's Office"; dir = 4; network = list("SS13")},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/carpet,/area/security/hos)
"act" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/carpet,/area/security/hos)
"acu" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/carpet,/area/security/hos)
@@ -962,9 +962,9 @@
"asz" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/item/clothing/head/welding,/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/ai_monitored/storage/eva)
"asA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/power/apc{dir = 1; name = "EVA APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor,/area/ai_monitored/storage/eva)
"asB" = (/obj/machinery/alarm{pixel_y = 23},/obj/item/device/radio/off,/obj/item/device/assembly/timer,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/ai_monitored/storage/eva)
"asC" = (/obj/structure/table,/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/obj/machinery/cell_charger,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
"asC" = (/obj/structure/table,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/machinery/cell_charger,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
"asD" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/obj/item/weapon/screwdriver{pixel_y = 16},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva)
"asE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/sign/securearea{pixel_y = 32},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva)
"asE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/sign/securearea{pixel_y = 32},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva)
"asF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/device/multitool,/turf/simulated/floor,/area/ai_monitored/storage/eva)
"asG" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/table,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor,/area/ai_monitored/storage/eva)
"asH" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/ai_monitored/storage/eva)
@@ -1081,7 +1081,7 @@
"auO" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/ai_monitored/storage/eva)
"auP" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/ai_monitored/storage/eva)
"auQ" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/ai_monitored/storage/eva)
"auR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva)
"auR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva)
"auS" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/ai_monitored/storage/eva)
"auT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva)
"auU" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore)
@@ -1115,7 +1115,7 @@
"avw" = (/obj/machinery/power/apc{dir = 1; name = "Vault APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor{icon_state = "vault"; dir = 10},/area/security/nuke_storage)
"avx" = (/obj/machinery/computer/secure_data/detective_computer,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/security/nuke_storage)
"avy" = (/obj/machinery/gateway{dir = 10},/turf/simulated/floor{icon_state = "vault"; dir = 4},/area/gateway)
"avz" = (/obj/machinery/gateway,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/gateway)
"avz" = (/obj/machinery/gateway,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/gateway)
"avA" = (/obj/machinery/gateway{dir = 6},/turf/simulated/floor{icon_state = "vault"; dir = 1},/area/gateway)
"avB" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/requests_console{department = "EVA"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva)
"avC" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/ai_monitored/storage/eva)
@@ -1250,7 +1250,7 @@
"ayb" = (/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint2)
"ayc" = (/obj/machinery/door/airlock/maintenance{name = "Security Maintenance"; req_access_txt = "1"},/turf/simulated/floor/plating,/area/security/checkpoint2)
"ayd" = (/obj/machinery/atmospherics/valve,/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
"aye" = (/obj/machinery/power/apc{dir = 1; name = "Arrivals North Maintenance APC"; pixel_x = -1; pixel_y = 26},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
"aye" = (/obj/machinery/power/apc{dir = 1; name = "Arrivals North Maintenance APC"; pixel_x = -1; pixel_y = 26},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
"ayf" = (/obj/machinery/camera{c_tag = "Fore Port Solar Access"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
"ayg" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
"ayh" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/fpmaint)
@@ -1324,7 +1324,7 @@
"azx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
"azy" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
"azz" = (/obj/machinery/power/apc{dir = 4; name = "Primary Tool Storage APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/storage/primary)
"azA" = (/obj/structure/table,/obj/item/weapon/cable_coil{pixel_x = 2; pixel_y = -2},/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/weapon/screwdriver{pixel_y = 16},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/storage/primary)
"azA" = (/obj/structure/table,/obj/item/stack/cable_coil{pixel_x = 2; pixel_y = -2},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/weapon/screwdriver{pixel_y = 16},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/storage/primary)
"azB" = (/obj/effect/landmark/start{name = "Assistant"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/storage/primary)
"azC" = (/obj/effect/landmark/start{name = "Assistant"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/storage/primary)
"azD" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/storage/primary)
@@ -1517,7 +1517,7 @@
"aDi" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "Tool Storage"},/turf/simulated/floor{icon_state = "bot"},/area/storage/primary)
"aDj" = (/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/turf/simulated/floor,/area/storage/primary)
"aDk" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/space,/area)
"aDl" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/hallway/primary/port)
"aDl" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/hallway/primary/port)
"aDm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/hallway/primary/port)
"aDn" = (/obj/machinery/door/poddoor/shutters{id = "stationawaygate"; name = "Gateway Access Shutters"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/gateway)
"aDo" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/door_control{id = "stationawaygate"; name = "Gateway Access Shutter Control"; pixel_x = -1; pixel_y = -24; req_access_txt = "31"},/turf/simulated/floor,/area/gateway)
@@ -1937,7 +1937,7 @@
"aLm" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/crew_quarters/locker)
"aLn" = (/obj/structure/closet/secure_closet/personal,/turf/simulated/floor,/area/crew_quarters/locker)
"aLo" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall,/area/storage/art)
"aLp" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/table,/obj/item/weapon/cable_coil/random,/obj/item/weapon/cable_coil/random,/obj/item/weapon/airlock_painter,/turf/simulated/floor,/area/storage/art)
"aLp" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/table,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/weapon/airlock_painter,/turf/simulated/floor,/area/storage/art)
"aLq" = (/turf/simulated/floor,/area/storage/art)
"aLr" = (/obj/machinery/light/small{dir = 4},/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor,/area/storage/art)
"aLs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/port)
@@ -1950,7 +1950,7 @@
"aLz" = (/obj/item/weapon/wrench,/obj/structure/table/reinforced,/obj/item/device/assembly/timer,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/turf/simulated/floor,/area/bridge)
"aLA" = (/obj/machinery/computer/atmos_alert,/turf/simulated/floor{icon_state = "yellow"; dir = 10},/area/bridge)
"aLB" = (/obj/machinery/computer/station_alert,/turf/simulated/floor{icon_state = "yellow"},/area/bridge)
"aLC" = (/obj/machinery/computer/monitor,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor{dir = 6; icon_state = "yellow"},/area/bridge)
"aLC" = (/obj/machinery/computer/monitor,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor{dir = 6; icon_state = "yellow"},/area/bridge)
"aLD" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/secure/briefcase,/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/bridge)
"aLE" = (/obj/machinery/computer/communications,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge)
"aLF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/table/reinforced,/obj/item/weapon/storage/box/PDAs{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/ids,/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/bridge)
@@ -2003,7 +2003,7 @@
"aMA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/port)
"aMB" = (/obj/structure/closet/wardrobe/mixed,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/turf/simulated/floor,/area/crew_quarters/locker)
"aMC" = (/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor,/area/crew_quarters/locker)
"aMD" = (/obj/structure/table,/obj/item/weapon/cable_coil/random,/obj/item/weapon/cable_coil/random,/turf/simulated/floor,/area/storage/art)
"aMD" = (/obj/structure/table,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/turf/simulated/floor,/area/storage/art)
"aME" = (/obj/machinery/light_switch{pixel_y = 28},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/storage/emergency2)
"aMF" = (/turf/simulated/floor/plating,/area/storage/emergency2)
"aMG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/weapon/extinguisher,/turf/simulated/floor/plating,/area/storage/emergency2)
@@ -2384,7 +2384,7 @@
"aTR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/wall,/area/bridge/meeting_room)
"aTS" = (/turf/simulated/wall/r_wall,/area/bridge/meeting_room)
"aTT" = (/obj/effect/landmark{name = "tripai"},/obj/item/device/radio/intercom{broadcasting = 1; freerange = 1; listening = 1; name = "Common Channel"; pixel_y = 25},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 28; pixel_y = 5},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = -27; pixel_y = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/ai)
"aTU" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai)
"aTU" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai)
"aTV" = (/obj/machinery/power/terminal{dir = 8},/turf/simulated/wall/r_wall,/area/turret_protected/ai)
"aTW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/wall/r_wall,/area/crew_quarters/captain)
"aTX" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/crew_quarters/captain)
@@ -2758,7 +2758,7 @@
"bbb" = (/obj/structure/table/woodentable,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/item/device/camera,/obj/item/weapon/storage/photo_album{pixel_y = -10},/turf/simulated/floor/wood,/area/crew_quarters/captain)
"bbc" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor,/area/hallway/primary/central)
"bbd" = (/obj/structure/closet/secure_closet/chemical,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bbe" = (/obj/machinery/power/apc{dir = 1; name = "Chemistry APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bbe" = (/obj/machinery/power/apc{dir = 1; name = "Chemistry APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bbf" = (/obj/machinery/camera{c_tag = "Chemistry"; dir = 2; network = list("SS13")},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bbg" = (/obj/machinery/chem_dispenser,/turf/simulated/floor{dir = 1; icon_state = "whiteyellow"},/area/medical/chemistry)
"bbh" = (/obj/machinery/chem_master,/turf/simulated/floor{dir = 5; icon_state = "whiteyellow"},/area/medical/chemistry)
@@ -2772,7 +2772,7 @@
"bbp" = (/obj/structure/filingcabinet,/obj/machinery/newscaster{pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint/medical)
"bbq" = (/obj/structure/table,/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/pen,/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue)
"bbr" = (/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue)
"bbs" = (/obj/machinery/power/apc{dir = 1; name = "Morgue APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue)
"bbs" = (/obj/machinery/power/apc{dir = 1; name = "Morgue APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue)
"bbt" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue)
"bbu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/medical/morgue)
"bbv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/storage/emergency)
@@ -2850,7 +2850,7 @@
"bcP" = (/turf/simulated/floor,/area/assembly/chargebay)
"bcQ" = (/obj/machinery/door_control{dir = 2; id = "Skynet_launch"; name = "Mech Bay Door Control"; pixel_x = 6; pixel_y = 24},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/assembly/chargebay)
"bcR" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/assembly/chargebay)
"bcS" = (/obj/machinery/power/apc{dir = 8; name = "Robotics Lab APC"; pixel_x = -25},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
"bcS" = (/obj/machinery/power/apc{dir = 8; name = "Robotics Lab APC"; pixel_x = -25},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
"bcT" = (/obj/structure/stool/bed/chair/office/light{dir = 1},/obj/effect/landmark/start{name = "Roboticist"},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
"bcU" = (/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
"bcV" = (/obj/machinery/camera{c_tag = "Robotics Lab"; dir = 2; network = list("SS13","RD")},/obj/machinery/door_control{dir = 2; id = "robotics"; name = "Shutters Control Button"; pixel_x = 6; pixel_y = 24},/turf/simulated/floor{dir = 4; icon_state = "whiteredcorner"},/area/assembly/robotics)
@@ -2900,7 +2900,7 @@
"bdN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/maintenance/maintcentral)
"bdO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/maintcentral)
"bdP" = (/obj/item/device/flashlight/lamp,/turf/simulated/floor/plating/airless{dir = 2; icon_state = "warnplate"},/area/toxins/test_area)
"bdQ" = (/obj/machinery/power/apc{dir = 1; name = "Bridge Maintenance APC"; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/maintenance/maintcentral)
"bdQ" = (/obj/machinery/power/apc{dir = 1; name = "Bridge Maintenance APC"; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/maintenance/maintcentral)
"bdR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/closet/wardrobe/black,/turf/simulated/floor/plating,/area/maintenance/maintcentral)
"bdS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/bridge/meeting_room)
"bdT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/wood,/area/bridge/meeting_room)
@@ -3091,7 +3091,7 @@
"bhw" = (/obj/machinery/light{dir = 8},/obj/machinery/camera{c_tag = "Mech Bay"; dir = 4},/turf/simulated/floor,/area/assembly/chargebay)
"bhx" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/assembly/chargebay)
"bhy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/assembly/robotics)
"bhz" = (/obj/structure/table,/obj/item/stack/sheet/plasteel{amount = 10},/obj/item/weapon/cable_coil,/obj/item/device/flash,/obj/item/device/flash,/turf/simulated/floor,/area/assembly/robotics)
"bhz" = (/obj/structure/table,/obj/item/stack/sheet/plasteel{amount = 10},/obj/item/stack/cable_coil,/obj/item/device/flash,/obj/item/device/flash,/turf/simulated/floor,/area/assembly/robotics)
"bhA" = (/obj/structure/stool,/turf/simulated/floor,/area/assembly/robotics)
"bhB" = (/turf/simulated/floor{icon_state = "bot"},/area/assembly/robotics)
"bhC" = (/turf/simulated/floor{dir = 8; icon_state = "warnwhite"},/area/assembly/robotics)
@@ -3229,7 +3229,7 @@
"bke" = (/obj/structure/stool/bed/roller,/turf/simulated/floor{dir = 4; icon_state = "whiteblue"},/area/medical/medbay)
"bkf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/medical/genetics)
"bkg" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/device/radio/headset/headset_medsci,/obj/item/device/flashlight/pen{pixel_x = 0},/obj/item/device/flashlight/pen{pixel_x = 4; pixel_y = 3},/obj/machinery/requests_console{department = "Genetics"; departmentType = 0; name = "Genetics Requests Console"; pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)
"bkh" = (/obj/machinery/power/apc{dir = 1; name = "Genetics APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)
"bkh" = (/obj/machinery/power/apc{dir = 1; name = "Genetics APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)
"bki" = (/obj/machinery/light{dir = 1},/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)
"bkj" = (/obj/machinery/dna_scannernew,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 5; icon_state = "whiteblue"},/area/medical/genetics)
"bkk" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/medical/genetics)
@@ -3251,7 +3251,7 @@
"bkA" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
"bkB" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker/large{pixel_x = -3; pixel_y = 3},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/beaker{pixel_x = 8; pixel_y = 2},/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
"bkC" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
"bkD" = (/obj/structure/table,/obj/item/weapon/cable_coil,/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = 3},/obj/item/weapon/stock_parts/scanning_module{pixel_x = 2; pixel_y = 3},/obj/item/weapon/stock_parts/scanning_module,/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
"bkD" = (/obj/structure/table,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/obj/item/weapon/stock_parts/scanning_module{pixel_x = 2; pixel_y = 3},/obj/item/weapon/stock_parts/scanning_module,/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
"bkE" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "Research Division"},/obj/structure/plasticflaps{opacity = 1},/turf/simulated/floor{icon_state = "bot"},/area/toxins/misc_lab{name = "\improper Research Lounge"})
"bkF" = (/turf/simulated/wall,/area/toxins/misc_lab{name = "\improper Research Lounge"})
"bkG" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/obj/machinery/door/poddoor{id = "QMLoaddoor2"; name = "supply dock loading door"},/turf/simulated/floor/plating,/area/quartermaster/storage)
@@ -3650,7 +3650,7 @@
"bsj" = (/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "cafeteria"},/area/toxins/misc_lab{name = "\improper Research Lounge"})
"bsk" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{icon_state = "cafeteria"},/area/toxins/misc_lab{name = "\improper Research Lounge"})
"bsl" = (/obj/structure/table,/obj/item/weapon/cartridge/quartermaster{pixel_x = 6; pixel_y = 5},/obj/item/weapon/cartridge/quartermaster,/obj/item/weapon/cartridge/quartermaster{pixel_x = -4; pixel_y = 7},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_x = -30; pixel_y = 0},/obj/item/weapon/coin/silver,/turf/simulated/floor{dir = 9; icon_state = "brown"},/area/quartermaster/qm)
"bsm" = (/obj/machinery/power/apc{dir = 1; name = "Quartermaster APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/qm)
"bsm" = (/obj/machinery/power/apc{dir = 1; name = "Quartermaster APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/qm)
"bsn" = (/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/qm)
"bso" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/qm)
"bsp" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{dir = 1; icon_state = "brown"},/area/quartermaster/qm)
@@ -3943,7 +3943,7 @@
"bxQ" = (/obj/structure/table,/obj/item/weapon/module/power_control,/obj/item/weapon/airlock_electronics,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/storage/tech)
"bxR" = (/obj/structure/table,/obj/item/weapon/screwdriver{pixel_y = 16},/obj/item/weapon/wirecutters,/turf/simulated/floor/plating,/area/storage/tech)
"bxS" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor/plating,/area/storage/tech)
"bxT" = (/obj/machinery/camera{c_tag = "Tech Storage"; dir = 2},/obj/machinery/power/apc{dir = 1; name = "Tech Storage APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/storage/tech)
"bxT" = (/obj/machinery/camera{c_tag = "Tech Storage"; dir = 2},/obj/machinery/power/apc{dir = 1; name = "Tech Storage APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/storage/tech)
"bxU" = (/obj/structure/table,/obj/item/device/analyzer,/obj/item/device/healthanalyzer,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/storage/tech)
"bxV" = (/obj/structure/table,/obj/item/device/analyzer/plant_analyzer,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plating,/area/storage/tech)
"bxW" = (/turf/simulated/floor/plating,/area/storage/tech)
@@ -4010,12 +4010,12 @@
"bzf" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/aft)
"bzg" = (/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j1s"; sortType = 15},/turf/simulated/floor/plating,/area/maintenance/aft)
"bzh" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/aft)
"bzi" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/grille,/turf/simulated/floor/plating,/area/storage/tech)
"bzi" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/grille,/turf/simulated/floor/plating,/area/storage/tech)
"bzj" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/turf/simulated/floor/plating,/area/storage/tech)
"bzk" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/storage/tech)
"bzk" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/storage/tech)
"bzl" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/storage/tech)
"bzm" = (/obj/structure/table,/obj/item/device/aicard,/obj/item/weapon/aiModule/reset,/turf/simulated/floor/plating,/area/storage/tech)
"bzn" = (/obj/structure/table,/obj/item/weapon/cable_coil{pixel_x = -3; pixel_y = 3},/obj/item/weapon/cable_coil,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plating,/area/storage/tech)
"bzn" = (/obj/structure/table,/obj/item/stack/cable_coil{pixel_x = -3; pixel_y = 3},/obj/item/stack/cable_coil,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plating,/area/storage/tech)
"bzo" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/storage/tech)
"bzp" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plating,/area/storage/tech)
"bzq" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 4; icon_state = "intact-r-f"; level = 1; name = "pipe"},/turf/simulated/floor/plating,/area/storage/tech)
@@ -4056,7 +4056,7 @@
"bzZ" = (/obj/machinery/sparker{id = "Xenobio"; pixel_x = -25},/turf/simulated/floor/engine,/area/toxins/xenobiology)
"bAa" = (/obj/machinery/atmospherics/unary/outlet_injector{name = "Acid-Proof Air Injector"; icon_state = "on"; dir = 2; unacidable = 1; on = 1},/turf/simulated/floor/engine,/area/toxins/xenobiology)
"bAb" = (/obj/item/device/radio/beacon,/turf/simulated/floor/engine,/area/toxins/xenobiology)
"bAc" = (/obj/structure/table,/obj/machinery/cell_charger{pixel_y = 5},/obj/item/weapon/cable_coil,/obj/item/device/multitool,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/engine,/area/toxins/xenobiology)
"bAc" = (/obj/structure/table,/obj/machinery/cell_charger{pixel_y = 5},/obj/item/stack/cable_coil,/obj/item/device/multitool,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/engine,/area/toxins/xenobiology)
"bAd" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage)
"bAe" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage)
"bAf" = (/obj/effect/decal/cleanable/oil,/obj/item/weapon/cigbutt,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage)
@@ -4088,7 +4088,7 @@
"bAF" = (/obj/machinery/door/airlock/maintenance{name = "Firefighting equipment"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/aft)
"bAG" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/aft)
"bAH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/aft)
"bAI" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable,/obj/structure/grille,/turf/simulated/floor/plating,/area/storage/tech)
"bAI" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/structure/grille,/turf/simulated/floor/plating,/area/storage/tech)
"bAJ" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/borgupload{pixel_x = -1; pixel_y = 1},/obj/item/weapon/circuitboard/aiupload{pixel_x = 2; pixel_y = -2},/turf/simulated/floor,/area/storage/tech)
"bAK" = (/obj/machinery/camera{c_tag = "Secure Tech Storage"; dir = 2},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/storage/tech)
"bAL" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall/r_wall,/area/storage/tech)
@@ -4181,7 +4181,7 @@
"bCu" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor,/area/hallway/primary/aft)
"bCv" = (/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft)
"bCw" = (/obj/machinery/door/airlock/maintenance{name = "Custodial Maintenance"; req_access_txt = "26"},/turf/simulated/floor/plating,/area/janitor)
"bCx" = (/obj/machinery/power/apc{dir = 8; name = "Medbay Maintenance APC"; pixel_x = -24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"bCx" = (/obj/machinery/power/apc{dir = 8; name = "Medbay Maintenance APC"; pixel_x = -24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"bCy" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"bCz" = (/obj/structure/grille,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/asmaint)
"bCA" = (/obj/structure/disposalpipe/segment,/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint)
@@ -4275,9 +4275,9 @@
"bEk" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"bEl" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"bEm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/wall/r_wall,/area/toxins/xenobiology)
"bEn" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/shieldwallgen{req_access = list(55)},/turf/simulated/floor/plating,/area/toxins/xenobiology)
"bEn" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/shieldwallgen{req_access = list(55)},/turf/simulated/floor/plating,/area/toxins/xenobiology)
"bEo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/door/poddoor/preopen{id = "misclab"; name = "test chamber blast door"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
"bEp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/general/visible,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/door/poddoor/preopen{id = "misclab"; name = "test chamber blast door"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
"bEp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/general/visible,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/door/poddoor/preopen{id = "misclab"; name = "test chamber blast door"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
"bEq" = (/obj/machinery/door/window/southleft{dir = 1; name = "Test Chamber"; req_access_txt = "55"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/poddoor/preopen{id = "misclab"; name = "test chamber blast door"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
"bEr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/door/poddoor/preopen{id = "misclab"; name = "test chamber blast door"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
"bEs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor/preopen{id = "misclab"; name = "test chamber blast door"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
@@ -4421,7 +4421,7 @@
"bHa" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"bHb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/junction,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/asmaint)
"bHc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/wall/r_wall,/area/toxins/xenobiology)
"bHd" = (/obj/machinery/power/apc{dir = 8; name = "Xenobiology APC"; pixel_x = -25},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"bHd" = (/obj/machinery/power/apc{dir = 8; name = "Xenobiology APC"; pixel_x = -25},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"bHe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"bHf" = (/obj/machinery/atmospherics/pipe/simple/general/visible,/obj/structure/stool,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"bHg" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
@@ -4729,7 +4729,7 @@
"bMW" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"bMX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/maintenance/asmaint2)
"bMY" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"bMZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "hop"; layer = 2.9; name = "Privacy Door"; opacity = 0},/turf/simulated/floor/plating,/area/crew_quarters/heads)
"bMZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "hop"; layer = 2.9; name = "Privacy Door"; opacity = 0},/turf/simulated/floor/plating,/area/crew_quarters/heads)
"bNa" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/crew_quarters/heads)
"bNb" = (/obj/structure/table/reinforced,/obj/machinery/door/window/northleft{dir = 8; icon_state = "left"; name = "Reception Window"; req_access_txt = "0"},/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 4; icon_state = "rightsecure"; name = "Head of Personnel's Desk"; req_access_txt = "57"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id = "hop"; layer = 2.9; name = "Privacy Door"; opacity = 0},/turf/simulated/floor,/area/crew_quarters/heads)
"bNc" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/poddoor/shutters/preopen{id = "hopqueue"; name = "HoP Queue Shutters"},/turf/simulated/floor{dir = 8; icon_state = "loadingarea"},/area/hallway/primary/central)
@@ -4743,7 +4743,7 @@
"bNk" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating,/area/construction)
"bNl" = (/obj/machinery/camera{c_tag = "Construction Area"; dir = 1},/turf/simulated/floor/plating,/area/construction)
"bNm" = (/obj/structure/rack{dir = 1},/obj/item/clothing/suit/hazardvest,/turf/simulated/floor/plating,/area/construction)
"bNn" = (/obj/structure/table,/obj/item/weapon/cable_coil{amount = 5},/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/construction)
"bNn" = (/obj/structure/table,/obj/item/stack/cable_coil{amount = 5},/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/construction)
"bNo" = (/obj/structure/table,/turf/simulated/floor/plating,/area/construction)
"bNp" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/table,/obj/item/weapon/tank/emergency_oxygen{pixel_x = -8; pixel_y = 0},/obj/item/weapon/tank/emergency_oxygen{pixel_x = -8; pixel_y = 0},/obj/item/clothing/mask/breath{pixel_x = 4; pixel_y = 0},/obj/item/clothing/mask/breath{pixel_x = 4; pixel_y = 0},/turf/simulated/floor,/area/atmos)
"bNq" = (/obj/structure/sign/atmosplaque{pixel_x = 0; pixel_y = -32},/obj/structure/table,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/turf/simulated/floor,/area/atmos)
@@ -5016,7 +5016,7 @@
"bSx" = (/obj/machinery/atmospherics/pipe/simple{pipe_color = "red"; dir = 9; icon_state = "intact-r"; level = 2},/turf/simulated/wall/r_wall,/area/atmos)
"bSy" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/atmos{name = "Atmospherics"; req_access_txt = "24"},/turf/simulated/floor,/area/atmos)
"bSz" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/atmos)
"bSA" = (/obj/machinery/power/apc{dir = 8; name = "Engineering Security APC"; pixel_x = -24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint/engineering)
"bSA" = (/obj/machinery/power/apc{dir = 8; name = "Engineering Security APC"; pixel_x = -24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/checkpoint/engineering)
"bSB" = (/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/obj/structure/closet/secure_closet/security/engine,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint/engineering)
"bSC" = (/obj/structure/filingcabinet,/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint/engineering)
"bSD" = (/obj/structure/closet/fireaxecabinet{pixel_x = -32; pixel_y = 0},/turf/simulated/floor,/area/atmos)
@@ -5191,7 +5191,7 @@
"bVQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j2s"; sortType = 5},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft)
"bVR" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/aft)
"bVS" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/camera{c_tag = "Aft Primary Hallway 1"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = -22},/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft)
"bVT" = (/obj/machinery/power/apc{dir = 8; name = "Engineering Foyer APC"; pixel_x = -24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor,/area/engine/break_room)
"bVT" = (/obj/machinery/power/apc{dir = 8; name = "Engineering Foyer APC"; pixel_x = -24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor,/area/engine/break_room)
"bVU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/engine/break_room)
"bVV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/security/checkpoint/engineering)
"bVW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/security/checkpoint/engineering)
@@ -5258,7 +5258,7 @@
"bXf" = (/obj/structure/lattice,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area)
"bXg" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/solar/port)
"bXh" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/aft)
"bXi" = (/obj/item/weapon/cable_coil{amount = 5},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft)
"bXi" = (/obj/item/stack/cable_coil{amount = 5},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/aft)
"bXj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/aft)
"bXk" = (/obj/machinery/telecomms/server/presets/supply,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server)
"bXl" = (/obj/machinery/telecomms/bus/preset_two,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/server)
@@ -5350,7 +5350,7 @@
"bYT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/engine/engineering)
"bYU" = (/turf/simulated/wall/r_wall,/area/engine/chiefs_office)
"bYV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/door/poddoor/preopen{id = "Engineering"; name = "engineering security door"},/turf/simulated/floor/plating,/area/engine/chiefs_office)
"bYW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor/preopen{id = "Engineering"; name = "engineering security door"},/turf/simulated/floor/plating,/area/engine/chiefs_office)
"bYW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor/preopen{id = "Engineering"; name = "engineering security door"},/turf/simulated/floor/plating,/area/engine/chiefs_office)
"bYX" = (/obj/machinery/door/poddoor/preopen{id = "Engineering"; name = "engineering security door"},/obj/machinery/door/airlock/glass_command{name = "Chief Engineer"; req_access_txt = "56"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/chiefs_office)
"bYY" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "yellow"; dir = 10},/area/engine/break_room)
"bYZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "yellow"},/area/engine/break_room)
@@ -5431,7 +5431,7 @@
"caw" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/lighter/zippo,/obj/item/clothing/glasses/meson{pixel_y = 4},/obj/item/weapon/stamp/ce,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
"cax" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
"cay" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig/elite,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/elite,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
"caz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/engine/chiefs_office)
"caz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/engine/chiefs_office)
"caA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/engine/engineering)
"caB" = (/turf/simulated/floor,/area/engine/engineering)
"caC" = (/obj/machinery/camera{c_tag = "Engineering Access"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/closet/radiation,/turf/simulated/floor,/area/engine/engineering)
@@ -5694,13 +5694,13 @@
"cfz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/external{name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/turf/simulated/floor/plating,/area/engine/engineering)
"cfA" = (/obj/machinery/door/poddoor/shutters/preopen{id = "Singularity"; name = "radiation shutters"},/turf/simulated/floor/plating,/area/engine/engineering)
"cfB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/poddoor/shutters/preopen{id = "Singularity"; name = "radiation shutters"},/turf/simulated/floor/plating,/area/engine/engineering)
"cfC" = (/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/weapon/crowbar,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/engineering)
"cfC" = (/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/weapon/crowbar,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/engineering)
"cfD" = (/obj/structure/stool,/turf/simulated/floor,/area/engine/engineering)
"cfE" = (/obj/structure/particle_accelerator/power_box,/turf/simulated/floor/plating,/area/engine/engineering)
"cfF" = (/obj/item/weapon/screwdriver,/turf/simulated/floor,/area/engine/engineering)
"cfG" = (/obj/machinery/door/airlock/external{name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/turf/simulated/floor/plating,/area/engine/engineering)
"cfH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable,/turf/simulated/floor/plating,/area/engine/engineering)
"cfI" = (/obj/structure/table,/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/weapon/cable_coil,/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/turf/simulated/floor,/area/engine/engineering)
"cfI" = (/obj/structure/table,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/stack/cable_coil,/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/turf/simulated/floor,/area/engine/engineering)
"cfJ" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/clothing/ears/earmuffs{pixel_x = -3; pixel_y = -2},/obj/machinery/light,/turf/simulated/floor,/area/engine/engineering)
"cfK" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/engine/engineering)
"cfL" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/engine/engineering)
@@ -6415,7 +6415,7 @@
"cts" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 9},/area/syndicate_mothership)
"ctt" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 8},/area/syndicate_mothership)
"ctu" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/mushroompizzaslice,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership)
"ctv" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/beer{pixel_x = 3},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership)
"ctv" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/beer{pixel_x = 5; pixel_y = -2; step_x = 0},/obj/item/toy/cards/deck/syndicate{icon_state = "deck_syndicate_full"; pixel_x = -6; pixel_y = 6},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership)
"ctw" = (/obj/machinery/computer/telecrystals/uplinker,/turf/unsimulated/floor{tag = "icon-podhatch (WEST)"; icon_state = "podhatch"; dir = 8},/area/syndicate_mothership)
"ctx" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows2"; dir = 1},/area/syndicate_mothership)
"cty" = (/turf/unsimulated/floor,/area/syndicate_mothership)
@@ -6479,7 +6479,7 @@
"cuE" = (/obj/structure/table,/obj/item/device/assembly/signaler,/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
"cuF" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/device/assembly/infra,/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
"cuG" = (/obj/structure/table,/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
"cuH" = (/obj/structure/table,/obj/item/weapon/crowbar,/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
"cuH" = (/obj/structure/table,/obj/item/weapon/crowbar,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/clothing/glasses/night,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
"cuI" = (/turf/unsimulated/floor{dir = 8; icon_state = "carpetside"},/area/wizard_station)
"cuJ" = (/obj/effect/landmark/start{name = "wizard"},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/wizard_station)
"cuK" = (/turf/unsimulated/floor{dir = 4; icon_state = "carpetside"},/area/wizard_station)
@@ -6690,7 +6690,7 @@
"cyH" = (/obj/item/weapon/shard,/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
"cyI" = (/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
"cyJ" = (/obj/structure/cable,/obj/structure/computerframe{anchored = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
"cyK" = (/obj/structure/cable,/obj/structure/computerframe{anchored = 1},/obj/item/weapon/cable_coil/cut,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
"cyK" = (/obj/structure/cable,/obj/structure/computerframe{anchored = 1},/obj/item/stack/cable_coil/cut,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
"cyL" = (/obj/structure/rack,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
"cyM" = (/obj/structure/rack,/obj/item/clothing/suit/space/rig/medical,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/medical,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
"cyN" = (/obj/structure/rack,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
@@ -6739,7 +6739,7 @@
"czE" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/simulated/floor/airless,/area/tcommsat/chamber)
"czF" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/tcommsat/chamber)
"czG" = (/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/tcommsat/chamber)
"czH" = (/obj/item/weapon/cable_coil/cut{amount = 1},/turf/simulated/floor/plating/airless,/area/tcommsat/chamber)
"czH" = (/obj/item/stack/cable_coil/cut{amount = 1},/turf/simulated/floor/plating/airless,/area/tcommsat/chamber)
"czI" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/closet,/turf/simulated/floor/plating/airless,/area/tcommsat/chamber)
"czJ" = (/obj/structure/window/reinforced{dir = 8},/turf/space,/area)
"czK" = (/obj/item/weapon/folder/yellow,/turf/simulated/floor/airless,/area/tcommsat/chamber)
@@ -7010,9 +7010,9 @@
"cEP" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/derelict/bridge/access)
"cEQ" = (/obj/machinery/door/airlock/command{name = "E.V.A."; req_access = null; req_access_txt = "18"},/turf/simulated/floor,/area/derelict/bridge/access)
"cER" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/derelict/bridge/access)
"cES" = (/obj/item/weapon/cable_coil/cut,/turf/simulated/floor/plating/airless,/area)
"cES" = (/obj/item/stack/cable_coil/cut,/turf/simulated/floor/plating/airless,/area)
"cET" = (/turf/simulated/floor/airless{icon_state = "solarpanel"},/area)
"cEU" = (/obj/item/weapon/cable_coil/cut,/turf/space,/area)
"cEU" = (/obj/item/stack/cable_coil/cut,/turf/space,/area)
"cEV" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/derelict/bridge/access)
"cEW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/derelict/bridge/access)
"cEX" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/derelict/bridge/access)
@@ -7033,14 +7033,14 @@
"cFm" = (/obj/structure/computerframe,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor,/area/derelict/bridge)
"cFn" = (/obj/structure/table,/turf/simulated/floor,/area/derelict/bridge)
"cFo" = (/obj/machinery/computer/security,/turf/simulated/floor,/area/derelict/bridge)
"cFp" = (/obj/structure/table,/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/turf/simulated/floor,/area/derelict/bridge)
"cFp" = (/obj/structure/table,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/turf/simulated/floor,/area/derelict/bridge)
"cFq" = (/obj/structure/table,/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/derelict/bridge)
"cFr" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/simulated/floor,/area/derelict/bridge)
"cFs" = (/obj/item/weapon/grenade/empgrenade,/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor,/area/derelict/bridge)
"cFt" = (/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/singularity_engine)
"cFu" = (/turf/simulated/floor/airless{icon_state = "damaged4"},/area/derelict/singularity_engine)
"cFv" = (/turf/simulated/floor/airless{icon_state = "damaged5"},/area/derelict/singularity_engine)
"cFw" = (/obj/item/weapon/cable_coil/cut,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/singularity_engine)
"cFw" = (/obj/item/stack/cable_coil/cut,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/singularity_engine)
"cFx" = (/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine)
"cFy" = (/turf/simulated/wall,/area/derelict/singularity_engine)
"cFz" = (/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/simulated/floor,/area/derelict/bridge)
@@ -7071,7 +7071,7 @@
"cFY" = (/obj/structure/stool,/turf/simulated/floor,/area/derelict/bridge)
"cFZ" = (/obj/structure/table,/obj/item/weapon/cell,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor,/area/derelict/bridge)
"cGa" = (/obj/item/weapon/storage/toolbox/syndicate,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/singularity_engine)
"cGb" = (/obj/item/weapon/cable_coil/cut,/turf/simulated/floor/airless{icon_state = "damaged4"},/area/derelict/singularity_engine)
"cGb" = (/obj/item/stack/cable_coil/cut,/turf/simulated/floor/airless{icon_state = "damaged4"},/area/derelict/singularity_engine)
"cGc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/derelict/bridge/access)
"cGd" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/derelict/bridge/access)
"cGe" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/derelict/bridge/access)
@@ -7111,11 +7111,11 @@
"cGM" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/singularity_engine)
"cGN" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine)
"cGO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine)
"cGP" = (/obj/item/weapon/cable_coil/cut,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/derelict/singularity_engine)
"cGP" = (/obj/item/stack/cable_coil/cut,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/derelict/singularity_engine)
"cGQ" = (/turf/simulated/floor/airless,/area/derelict/bridge/access)
"cGR" = (/obj/structure/table,/obj/item/device/aicard,/turf/simulated/floor/airless,/area/derelict/bridge/access)
"cGS" = (/obj/structure/table,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/airless,/area/derelict/bridge/access)
"cGT" = (/obj/structure/table,/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/turf/simulated/floor/airless,/area/derelict/bridge/access)
"cGT" = (/obj/structure/table,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/turf/simulated/floor/airless,/area/derelict/bridge/access)
"cGU" = (/obj/structure/table,/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/turf/simulated/floor/airless,/area/derelict/bridge/access)
"cGV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless,/area/derelict/bridge/access)
"cGW" = (/turf/simulated/floor/airless{icon_state = "circuit"},/area/derelict/singularity_engine)
@@ -7125,8 +7125,8 @@
"cHa" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating/airless,/area/derelict/bridge/access)
"cHb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/airless,/area/derelict/bridge/access)
"cHc" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/airless,/area/derelict/bridge/access)
"cHd" = (/obj/item/weapon/cable_coil/cut,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/singularity_engine)
"cHe" = (/obj/item/weapon/cable_coil/cut,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/singularity_engine)
"cHd" = (/obj/item/stack/cable_coil/cut,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/singularity_engine)
"cHe" = (/obj/item/stack/cable_coil/cut,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/singularity_engine)
"cHf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/singularity_engine)
"cHg" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/singularity_engine)
"cHh" = (/obj/item/stack/rods,/turf/simulated/floor/airless{icon_state = "circuit"},/area/derelict/singularity_engine)
@@ -7143,7 +7143,7 @@
"cHs" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/singularity_engine)
"cHt" = (/obj/item/weapon/screwdriver,/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine)
"cHu" = (/obj/item/stack/rods,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/singularity_engine)
"cHv" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/item/weapon/cable_coil/cut,/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine)
"cHv" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/item/stack/cable_coil/cut,/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine)
"cHw" = (/obj/structure/table,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/singularity_engine)
"cHx" = (/turf/simulated/wall,/area/derelict/hallway/primary)
"cHy" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/derelict/hallway/primary)
@@ -7363,7 +7363,7 @@
"cLE" = (/obj/structure/table,/turf/simulated/floor/airless,/area)
"cLF" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/airless,/area)
"cLG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless,/area)
"cLH" = (/obj/structure/lattice,/obj/item/weapon/cable_coil/cut,/turf/space,/area)
"cLH" = (/obj/structure/lattice,/obj/item/stack/cable_coil/cut,/turf/space,/area)
"cLI" = (/obj/structure/girder,/turf/simulated/floor/plating,/area/derelict/arrival)
"cLJ" = (/obj/structure/stool,/turf/simulated/floor/airless,/area/derelict/hallway/primary)
"cLK" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Access"; req_access_txt = "24"},/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary)
@@ -7402,7 +7402,7 @@
"cMr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/wirecutters,/turf/simulated/floor/airless,/area/derelict/hallway/secondary)
"cMs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary)
"cMt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless,/area/derelict/hallway/secondary)
"cMu" = (/obj/item/weapon/cable_coil/cut,/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary)
"cMu" = (/obj/item/stack/cable_coil/cut,/turf/simulated/floor/plating/airless,/area/derelict/hallway/primary)
"cMv" = (/turf/simulated/floor/airless,/area/derelict/hallway/secondary)
"cMw" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/airless,/area/derelict/hallway/secondary)
"cMx" = (/obj/machinery/door/airlock/maintenance{name = "Aux Storage"; req_access_txt = "23"},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary)
@@ -7811,9 +7811,9 @@
"cUk" = (/obj/structure/lattice,/turf/space,/area/mine/unexplored)
"cUl" = (/turf/simulated/wall/r_wall,/area/mine/laborcamp/security)
"cUm" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Shuttle Airlock"; req_access_txt = "2"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/laborcamp/security)
"cUn" = (/obj/machinery/atmospherics/pipe/simple{dir = 5; icon_state = "intact-f"},/turf/simulated/wall/r_wall,/area/mine/laborcamp/security)
"cUn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/turf/simulated/floor/plating,/area/mine/laborcamp/security)
"cUo" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/wall,/area/mine/laborcamp/security)
"cUp" = (/obj/machinery/atmospherics/pipe/simple{dir = 10},/turf/simulated/wall,/area/mine/laborcamp)
"cUp" = (/obj/machinery/computer/secure_data,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/mine/laborcamp/security)
"cUq" = (/turf/simulated/wall,/area/mine/laborcamp/security)
"cUr" = (/obj/structure/girder,/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/laborcamp/security)
"cUs" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Shuttle Airlock"; req_access_txt = "2"},/turf/simulated/floor,/area/mine/laborcamp/security)
@@ -7822,7 +7822,7 @@
"cUv" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple{dir = 6},/turf/simulated/floor,/area/mine/laborcamp/security)
"cUw" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor,/area/mine/laborcamp/security)
"cUx" = (/obj/machinery/light{dir = 1},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=NMine"; location = "SHall"},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor,/area/mine/laborcamp/security)
"cUy" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Labor Camp APC"; pixel_y = 24},/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/simulated/floor,/area/mine/laborcamp)
"cUy" = (/obj/machinery/computer/security{name = "Labor Camp Monitoring"; network = list("Labor")},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/mine/laborcamp/security)
"cUz" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp External Access"; req_access_txt = "2"},/turf/simulated/floor,/area/mine/laborcamp/security)
"cUA" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Monitoring"; req_access_txt = "2"},/turf/simulated/floor,/area/mine/laborcamp/security)
"cUB" = (/obj/machinery/atmospherics/pipe/simple{dir = 6},/turf/simulated/wall,/area/mine/laborcamp/security)
@@ -7855,8 +7855,8 @@
"cVc" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating/asteroid/airless,/area/mine/explored)
"cVd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
"cVe" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor,/area/mine/laborcamp/security)
"cVf" = (/obj/machinery/computer/secure_data,/turf/simulated/floor,/area/mine/laborcamp/security)
"cVg" = (/obj/machinery/computer/security{name = "Labor Camp Monitoring"; network = list("Labor")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/mine/laborcamp/security)
"cVf" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Labor Camp APC"; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple{dir = 10},/turf/simulated/floor,/area/mine/laborcamp)
"cVg" = (/obj/machinery/atmospherics/pipe/manifold,/turf/simulated/floor,/area/mine/laborcamp/security)
"cVh" = (/obj/machinery/computer/prisoner,/turf/simulated/floor,/area/mine/laborcamp/security)
"cVi" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/simulated/floor,/area/mine/laborcamp/security)
"cVj" = (/obj/machinery/space_heater,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
@@ -7865,8 +7865,8 @@
"cVm" = (/obj/machinery/atmospherics/pipe/simple{dir = 5; icon_state = "intact-f"},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/mine/laborcamp/security)
"cVn" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
"cVo" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
"cVp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
"cVq" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/wall/r_wall,/area/mine/laborcamp/security)
"cVp" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/wall/r_wall,/area/mine/laborcamp/security)
"cVq" = (/obj/effect/decal/remains/human,/turf/simulated/floor{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/explored)
"cVr" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 9},/area/mine/explored)
"cVs" = (/turf/simulated/mineral/random/high_chance,/area/mine/unexplored)
"cVt" = (/turf/simulated/mineral/random/high_chance,/area/mine/explored)
@@ -7876,7 +7876,6 @@
"cVx" = (/turf/simulated/floor/plating/airless,/area/mine/unexplored)
"cVy" = (/turf/simulated/floor{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/explored)
"cVz" = (/obj/item/clothing/under/soviet,/obj/item/clothing/head/ushanka,/turf/simulated/floor{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/explored)
"cVA" = (/obj/effect/decal/remains,/turf/simulated/floor{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/explored)
"cVB" = (/turf/simulated/mineral/random,/area)
"cVC" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 8},/area/mine/explored)
"cVD" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/explored)
@@ -7894,7 +7893,7 @@
"cVP" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/airless,/area/mine/explored)
"cVQ" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/airless,/area/mine/explored)
"cVR" = (/turf/simulated/floor/bluegrid,/area/mine/maintenance)
"cVS" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Mining Communications APC"; pixel_x = 1; pixel_y = 25},/turf/simulated/floor{icon_state = "dark"},/area/mine/maintenance)
"cVS" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Mining Communications APC"; pixel_x = 1; pixel_y = 25},/turf/simulated/floor{icon_state = "dark"},/area/mine/maintenance)
"cVT" = (/obj/machinery/telecomms/relay/preset/mining,/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "vault"; dir = 1},/area/mine/maintenance)
"cVU" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{icon_state = "dark"},/area/mine/maintenance)
"cVV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/mine/explored)
@@ -8045,7 +8044,7 @@
"cYK" = (/obj/structure/sink{pixel_y = 30},/obj/machinery/light/small,/obj/structure/mirror{pixel_y = -32},/turf/simulated/floor{icon_state = "showroomfloor"},/area/mine/living_quarters)
"cYL" = (/obj/machinery/door/airlock{name = "Toilet"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/mine/living_quarters)
"cYM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/mine/living_quarters)
"cYN" = (/obj/machinery/power/apc{dir = 1; name = "Mining Station Port Wing APC"; pixel_x = 1; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor,/area/mine/living_quarters)
"cYN" = (/obj/machinery/power/apc{dir = 1; name = "Mining Station Port Wing APC"; pixel_x = 1; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor,/area/mine/living_quarters)
"cYO" = (/obj/machinery/camera{c_tag = "Crew Area Hallway"; network = list("MINE")},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor,/area/mine/living_quarters)
"cYP" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/mine/living_quarters)
"cYQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/living_quarters)
@@ -8251,8 +8250,8 @@
"dcU" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/closet/crate/internals,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
"dcV" = (/obj/structure/rack{dir = 1},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/machinery/atmospherics/pipe/simple{dir = 9},/obj/item/weapon/shovel{attack_verb = list("ineffectively hit"); desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; force = 1; name = "safety shovel"; pixel_x = -5; throwforce = 1},/obj/item/weapon/pickaxe{attack_verb = list("ineffectively hit"); desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; force = 1; name = "safety pickaxe"; pixel_x = 5; throwforce = 1},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
"dcW" = (/obj/structure/rack{dir = 1},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/machinery/atmospherics/pipe/simple{dir = 9},/obj/item/weapon/shovel{attack_verb = list("ineffectively hit"); desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; force = 1; name = "safety shovel"; pixel_x = -5; throwforce = 1},/obj/item/weapon/pickaxe{attack_verb = list("ineffectively hit"); desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; force = 1; name = "safety pickaxe"; pixel_x = 5; throwforce = 1},/obj/machinery/camera{c_tag = "Labor Camp Storage"; dir = 8; network = list("Labor")},/turf/simulated/floor{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
"dcX" = (/obj/structure/table,/obj/item/toy/cards,/turf/simulated/floor,/area/security/prison)
"dcY" = (/obj/structure/table/woodentable,/obj/item/toy/cards,/turf/simulated/floor,/area/crew_quarters/sleep)
"dcX" = (/obj/structure/table,/obj/item/toy/cards/deck,/turf/simulated/floor,/area/security/prison)
"dcY" = (/obj/structure/table/woodentable,/obj/item/toy/cards/deck,/turf/simulated/floor,/area/crew_quarters/sleep)
"dcZ" = (/obj/item/weapon/shard,/obj/item/weapon/module/power_control,/turf/simulated/floor/plating/airless,/area/AIsattele)
"dda" = (/obj/structure/computerframe,/turf/simulated/floor/plating/airless,/area/AIsattele)
"ddb" = (/obj/machinery/teleport/station,/turf/simulated/floor/plating/airless,/area/AIsattele)
@@ -9376,18 +9375,18 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcSccSycSycSycTMcSAcTNcTvcTOcUccT
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcTKcTWcTVcTXcTRcSAcTicSAcSAcTPcOecSycUfcUecTYcSTcSTcSBcSBcUacSncRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcRKcTLcRKcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaacOEcOEcOEaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcQlcQlcQlcTfcQlcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcSccSccSccSccSAcSAcTicUccUdcSybEKcSycTmcTmcTmcSBcSBcSBcSBcTJcRacRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcRKcRKcRKcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaacOEcOEaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcQlcQlcQlcTfcQlcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqaaaaaacSccUbcSAcSAcTibPbbmdbPbbOjcSycTlcTkcSBcSBcSBcSBcSOcSncSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcUkcUkcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcRKcRKcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcQlcQlcQlcTfcQlcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcUlcUlcUlcUlcUlcUmcUncUocUocUocUpcUqcUqcUrcSBcSTcSBcSBcSOcSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcQlcQlcQlcTfcQlcQlcQlcOTcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcUscUtcUtcUtcUucUvcUwcUxcUwcUwcUycUtcUzcTmcTmcSBcSBcSBcSncSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcOTcQlcQlcTfcQlcQlcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcUlcUlcUlcUlcUlcUmcVpcUqcUqcUqcSycUqcUqcUrcSBcSTcSBcSBcSOcSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcQlcQlcQlcTfcQlcQlcQlcOTcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcUscUtcUtcUtcUucUvcVgcUxcUwcUwcVfcUtcUzcTmcTmcSBcSBcSBcSncSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcRKcRKcRKcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcOTcQlcQlcTfcQlcQlcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcUlcUqcUqcUAcUqcUBcUqcUqcUCcUDcUEcUqcUqcTmcTmcSBcSBcSncSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaacOEaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcQlcQlcTfcQlcQlcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcUlcUFcUGcUHcUIcUJcUKcULcUMcUNcUOcSmcUocSlctUcUScSncSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaacOEcOEcOEaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcQlcQlcTTcUTcTUcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcTqcTqcTqcTqcTqcUUcUVcUtcUWcUtcUXcUqcUYcUZcUZcVacVbcUqcSncSncSncSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaacOEcOEcOEaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcQlcQlcQlcQlcTfcQlcVccRacOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafcVdcVecVfcVgcVhcVicUqcVjcVkcVlcVmcVbcUqcSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcOTcQlcQlcQlcTfcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaacVncVocVpcVqcUlcUlcUqcUqcUqcUqcUqcUqcUqcSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcQlcQlcVrcSIcSJcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafcVdcVecUpcUycVhcVicUqcVjcVkcVlcVmcVbcUqcSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcOTcQlcQlcQlcTfcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaacVncVocUncUlcUlcUlcUqcUqcUqcUqcUqcUqcUqcSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcQlcQlcVrcSIcSJcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSncSncSncSncSncSncSncSncSncSncSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcUkcUkcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcQlcQlcSEcSVcSGcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaacOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcQlcQlcQlcTfcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaacVsaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOEcOTcQlcQlcQlcTfcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaacOEcVscVsaaaaaacOEcOEcOEcOEcOEcOEcOEcOEcOTcQlcQlcQlcTfcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRPcRPcUjcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaacOEcOEcVsaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOTcOTcQlcQlcTfcQlcOTcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRPcRPcSncRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaacOEcOEcVsaaaaaaaaacOEcOEcOEcOEcOEcOEcOEcOTcOTcQlcQlcTfcQlcOTcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSocSocSocRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOEcOTcQlcQlcTfcQlcOTcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSocSocRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOTcQlcQlcTfcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSocSocRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaacOTcOTaaaaaaaaaaaaaaaaaacOEcOEcOEcOEcOEcOTcQlcQlcTfcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -9407,7 +9406,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSocSocSocSocSocSocRPcRPcRPcRPcRPcRPcRPcRPcRPcR
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSocSocSocSocSocRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocSocSocRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOTcOTcQlcQlcTfcRtcRacOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSocSocSocSocRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOEcOEcOEcOTcQlcQlcVvcVwcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSocSocSocSocRPcRPcRPcRPcRPcRPcVycRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOTcOTcOTcQlcQlcTfcQlcQlcOTcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSocSocSocSocSocSocRPcRPcRPcRPcRPcVzcVAcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOTcQlcQlcQlcQlcTfcQlcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSocSocSocSocSocSocRPcRPcRPcRPcRPcVzcVqcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOTcQlcQlcQlcQlcTfcQlcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSocSocSocSocSocSocRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocSocSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacQlcQlcQlcQlcQlcTfcQlcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSocSocSocSocSocSocRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocSocSocSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacQlcQlcQlcQlcQlcTfcQlcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSocSocSocSocSocSocSocSocRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcRPcSocSocSocSocSocSocSocSocSocSocSocSocSocSocSocSocSocSocOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacQlcQlcQlcQlcQlcTfcQlcQlcQlcOTcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEcOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

View File

@@ -1,8 +1,8 @@
#if !defined(MAP_FILE)
#include "map_files\MetaStation.v39B.II.dmm"
#include "map_files\MetaStation.v39B.III.dmm"
#define MAP_FILE "MetaStation.v39B.II.dmm"
#define MAP_FILE "MetaStation.v39B.III.dmm"
#define MAP_NAME "MetaStation"
#elif !defined(MAP_OVERRIDE)

70
_maps/ministation.dm Normal file
View File

@@ -0,0 +1,70 @@
/*
MiniStation FAQ - Mod Created By Giacom
What is it?
A mod of tgstation 13 that is modified for low population servers; with simplified jobs, maps, duties and command structure.
How do I run it?
Simply tick this file, and only this file in the _maps folder, then compile and you will be running MiniStation.
Who is the target audience?
Server hosters who want to host a server for a player count of around 5 to 20 people.
What about the map?
The map has been created from the ground up with population size in mind.
What about the jobs?
Many jobs have been combined or just plainly cut out. These are the remaining jobs with their duties next to them.
* Captain - Make sure your station is running.
* HoP - You're second in command, protect the Captain and be his right hand man.
* Cargo Tech x3 - Running cargo bay and mining minerals for the station.
* Bartender - Keeping the bar, serving drinks and food. Hire the unemployeed to grow food for you, or do it yourself.
* Janitor - Cleans the station, removes litter and empty trash bins to be recycled by the crusher.
* Station Engineer x4 - Keeping the power running and fixing station damage.
* Security Officer x4 - Protecting the crewmembers and serving space law.
* Detective - Using forensic science to help security officers catch criminals.
* Scientist x4 - Research and development of new technologies and create bombs.
* Medical Doctor x4 - Healing the crew, performing surgeries and cloning dead crew.
* Chemist - Creating useful chemicals for the crew to use.
* Clown - Create laughter and boost the morale of the crew. Honk!
* Assistant xInfinity - Not in charge at all.
There will be 26 job slots (not including Assistant) available on MiniStation; the HoP can add more from his ID computer.
There is a more simplified command system, with the Captain being the big boss and the HoP being second in command.
The heads will have control over all departments and jobs.
What else has changed?
Changes to the uplinks were made to discourage murderboning, the rest is the same.
*/
#if !defined(MAP_FILE)
#include "map_files\MiniStation\MiniStation.dmm"
#define MAP_FILE "MiniStation.dmm"
#define MAP_NAME "MiniStation"
#if !defined(MAP_OVERRIDE_FILES)
#define MAP_OVERRIDE_FILES
#include "map_files\MiniStation\misc.dm"
#include "map_files\MiniStation\supplypacks.dm"
#include "map_files\MiniStation\telecomms.dm"
#include "map_files\MiniStation\uplink_item.dm"
#include "map_files\MiniStation\job\jobs.dm"
#include "map_files\MiniStation\job\removed.dm"
#endif
#elif !defined(MAP_OVERRIDE)
#warn a map has already been included, ignoring ministation.
#endif

View File

@@ -3,7 +3,7 @@
#include "map_files\tgstation.2.1.2.dmm"
#define MAP_FILE "tgstation.2.1.2.dmm"
#define MAP_NAME "/tg/station 2"
#define MAP_NAME "TGstation 2"
#elif !defined(MAP_OVERRIDE)

View File

@@ -1,5 +1,6 @@
//node1, air1, network1 correspond to input
//node2, air2, network2 correspond to output
//node2, air2, network2 correspond to input
//node1, air1, network1 correspond to output
/obj/machinery/atmospherics/binary/circulator
name = "circulator/heat exchanger"
@@ -15,9 +16,12 @@
anchored = 1.0
density = 1
proc/return_transfer_air()
var/output_starting_pressure = air2.return_pressure()
var/input_starting_pressure = air1.return_pressure()
var/output_starting_pressure = air1.return_pressure()
var/input_starting_pressure = air2.return_pressure()
if(output_starting_pressure >= input_starting_pressure-10)
//Need at least 10 KPa difference to overcome friction in the mechanism
@@ -25,17 +29,17 @@
return null
//Calculate necessary moles to transfer using PV = nRT
if(air1.temperature>0)
if(air2.temperature>0)
var/pressure_delta = (input_starting_pressure - output_starting_pressure)/2
var/transfer_moles = pressure_delta*air2.volume/(air1.temperature * R_IDEAL_GAS_EQUATION)
var/transfer_moles = pressure_delta*air1.volume/(air2.temperature * R_IDEAL_GAS_EQUATION)
last_pressure_delta = pressure_delta
//world << "pressure_delta = [pressure_delta]; transfer_moles = [transfer_moles];"
//Actually transfer the gas
var/datum/gas_mixture/removed = air1.remove(transfer_moles)
var/datum/gas_mixture/removed = air2.remove(transfer_moles)
if(network1)
network1.update = 1

View File

@@ -41,8 +41,8 @@ var/list/sec_departments = list("engineering", "supply", "medical", "science")
var/turf/T
var/safety = 0
while(safety < 25)
T = pick(get_area_turfs(destination))
if(!H.Move(T))
T = safepick(get_area_turfs(destination))
if(T && !H.Move(T))
safety += 1
continue
else
@@ -112,17 +112,13 @@ var/list/sec_departments = list("engineering", "supply", "medical", "science")
keyslot2 = new /obj/item/device/encryptionkey/headset_sci
/obj/item/clothing/under/rank/security/cargo/New()
var/obj/item/clothing/tie/armband/cargo/A = new /obj/item/clothing/tie/armband/cargo
hastie = A
attachTie(new /obj/item/clothing/tie/armband/cargo)
/obj/item/clothing/under/rank/security/engine/New()
var/obj/item/clothing/tie/armband/engine/A = new /obj/item/clothing/tie/armband/engine
hastie = A
attachTie(new /obj/item/clothing/tie/armband/engine)
/obj/item/clothing/under/rank/security/science/New()
var/obj/item/clothing/tie/armband/science/A = new /obj/item/clothing/tie/armband/science
hastie = A
attachTie(new /obj/item/clothing/tie/armband/science)
/obj/item/clothing/under/rank/security/med/New()
var/obj/item/clothing/tie/armband/medgreen/A = new /obj/item/clothing/tie/armband/medgreen
hastie = A
attachTie(new /obj/item/clothing/tie/armband/medgreen)

View File

@@ -23,5 +23,5 @@
#define BE_ALIEN 64
#define BE_PAI 128
#define BE_CULTIST 256
#define BE_MONKEY 512
#define BE_BLOB 512
#define BE_NINJA 1024

View File

@@ -17,6 +17,8 @@
var/datum/surgery/S = new path()
surgeries_list[S.name] = S
init_subtypes(/datum/table_recipe, table_recipes)
/* // Uncomment to debug chemical reaction list.
/client/verb/debug_chemical_list()

View File

@@ -1113,7 +1113,7 @@ proc/oview_or_orange(distance = world.view , center = usr , type)
//Quick type checks for some tools
var/global/list/common_tools = list(
/obj/item/weapon/cable_coil,
/obj/item/stack/cable_coil,
/obj/item/weapon/wrench,
/obj/item/weapon/weldingtool,
/obj/item/weapon/screwdriver,

View File

@@ -39,6 +39,6 @@ var/list/be_special_flags = list(
"Alien Lifeform" = BE_ALIEN,
"pAI" = BE_PAI,
"Cultist" = BE_CULTIST,
"Monkey" = BE_MONKEY,
"Blob" = BE_BLOB,
"Ninja" = BE_NINJA
)

View File

@@ -11,3 +11,4 @@ var/global/list/active_diseases = list()
var/global/list/chemical_reactions_list //list of all /datum/chemical_reaction datums. Used during chemical reactions
var/global/list/chemical_reagents_list //list of all /datum/reagent datums indexed by reagent id. Used by chemistry stuff
var/global/list/surgeries_list = list() //list of all surgeries by name, associated with their path.
var/global/list/table_recipes = list() //list of all table craft recipes

View File

@@ -79,7 +79,8 @@
return
var/obj/item/W = get_active_hand()
if(W == A)
next_move = world.time + 6
if(W.flags&USEDELAY)
@@ -91,10 +92,9 @@
update_inv_r_hand(0)
return
// operate two levels deep here (item in backpack in src; NOT item in box in backpack in src)
if(A == loc || (A in loc) || (A in contents) || (A.loc in contents))
if(!isturf(A) && A == loc || (A in contents) || (A.loc in contents))
// faster access to objects already on you
if(A in contents)
next_move = world.time + 6 // on your person
@@ -119,12 +119,12 @@
// Allows you to click on a box's contents, if that box is on the ground, but no deeper than that
if(isturf(A) || isturf(A.loc) || (A.loc && isturf(A.loc.loc)))
next_move = world.time + 10
if(A.Adjacent(src)) // see adjacent.dm
if(W)
if(W.flags&USEDELAY)
next_move += 5
if(W.preattack(A,src,1,params)) //Weapon attack override,return 1 to exit
return
// Return 1 in attackby() to prevent afterattack() effects (when safely moving items for example)
var/resolved = A.attackby(W,src)
if(!resolved && A && W)
@@ -134,6 +134,8 @@
return
else // non-adjacent click
if(W)
if(W.preattack(A,src,0,params)) //Weapon attack override,return 1 to exit
return
W.afterattack(A,src,0,params) // 0: not Adjacent
else
RangedAttack(A, params)
@@ -294,7 +296,7 @@
// Simple helper to face what you clicked on, in case it should be needed in more than one place
/mob/proc/face_atom(var/atom/A)
if( buckled || !A || !x || !y || !A.x || !A.y ) return
if( buckled || stat != CONSCIOUS || !A || !x || !y || !A.x || !A.y ) return
var/dx = A.x - x
var/dy = A.y - y
if(!dx && !dy) // Wall items are graphically shifted but on the floor

View File

@@ -7,7 +7,7 @@
/atom/proc/attackby(obj/item/W, mob/user)
return
/atom/movable/attackby(obj/item/W, mob/user)
if(!(W.flags&NOBLUDGEON))
if(W && !(W.flags&NOBLUDGEON))
visible_message("<span class='danger'>[src] has been hit by [user] with [W].</span>")
/mob/living/attackby(obj/item/I, mob/user)
@@ -20,17 +20,27 @@
/obj/item/proc/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
return
// Overrides the weapon attack so it can attack any atoms like when we want to have an effect on an object independent of attackby
// It is a powerfull proc but it should be used wisely, if there is other alternatives instead use those
// If it returns 1 it exits click code. Always . = 1 at start of the function if you delete src.
/obj/item/proc/preattack(atom/target, mob/user, proximity_flag, click_parameters)
return
obj/item/proc/get_clamped_volume()
if(src.force && src.w_class)
return Clamp((src.force + src.w_class) * 4, 30, 100)// Add the item's force to its weight class and multiply by 4, then clamp the value between 30 and 100
else if(!src.force && src.w_class)
return Clamp(src.w_class * 6, 10, 100) // Multiply the item's weight class by 6, then clamp the value between 10 and 100
/obj/item/proc/attack(mob/living/M as mob, mob/living/user as mob, def_zone)
if (!istype(M)) // not sure if this is the right thing...
return
var/messagesource = M
if (istype(M,/mob/living/carbon/brain))
messagesource = M:container
if (hitsound)
playsound(loc, hitsound, 50, 1, -1)
if (hitsound && force > 0) //If an item's hitsound is defined and the item's force is greater than zero...
playsound(loc, hitsound, get_clamped_volume(), 1, -1) //...play the item's hitsound at get_clamped_volume() with varying frequency and -1 extra range.
else if (force == 0)//Otherwise, if the item's force is zero...
playsound(loc, 'sound/weapons/tap.ogg', get_clamped_volume(), 1, -1)//...play tap.ogg at get_clamped_volume()
/////////////////////////
user.lastattacked = M
M.lastattacker = user
@@ -119,15 +129,19 @@
var/showname = "."
if(user)
showname = " by [user]."
showname = " by [user]!"
if(!(user in viewers(M, null)))
showname = "."
for(var/mob/O in viewers(messagesource, null))
if(attack_verb.len)
O.show_message("\red <B>[M] has been [pick(attack_verb)] with [src][showname] </B>", 1)
else
O.show_message("\red <B>[M] has been attacked with [src][showname] </B>", 1)
if(attack_verb && attack_verb.len)
M.visible_message("<span class='danger'>[M] has been [pick(attack_verb)] with [src][showname]</span>",
"<span class='userdanger'>[M] has been [pick(attack_verb)] with [src][showname]!</span>")
else if(force == 0)
M.visible_message("<span class='danger'>[M] has been [pick("tapped","patted")] with [src][showname]</span>",
"<span class='userdanger'>[M] has been [pick("tapped","patted")] with [src][showname]</span>")
else
M.visible_message("<span class='danger'>[M] has been attacked with [src][showname]</span>",
"<span class='userdanger'>[M] has been attacked with [src][showname]</span>")
if(!showname && user)
if(user.client)
@@ -146,7 +160,7 @@
else
M.take_organ_damage(power)
if (prob(33)) // Added blood for whacking non-humans too
if (prob(33) && src.force) // Added blood for whacking non-humans too
var/turf/location = M.loc
if (istype(location, /turf/simulated))
location.add_blood_floor(M)
@@ -156,4 +170,4 @@
M << "Aargh it burns!"
M.updatehealth()
add_fingerprint(user)
return 1
return 1

View File

@@ -29,9 +29,6 @@
var/allow_admin_ooccolor = 0 // Allows admins with relevant permissions to have their own ooc colour
var/allow_vote_restart = 0 // allow votes to restart
var/allow_vote_mode = 0 // allow votes to change mode
var/allow_admin_jump = 1 // allows admin jumping
var/allow_admin_spawning = 1 // allows admin item spawning
var/allow_admin_rev = 1 // allows admin revives
var/vote_delay = 6000 // minimum time between voting sessions (deciseconds, 10 minute default)
var/vote_period = 600 // length of voting period (deciseconds, default 1 minute)
var/vote_no_default = 0 // vote does not default to nochange/norestart (tbi)
@@ -213,12 +210,6 @@
config.allow_vote_restart = 1
if("allow_vote_mode")
config.allow_vote_mode = 1
if("allow_admin_jump")
config.allow_admin_jump = 1
if("allow_admin_rev")
config.allow_admin_rev = 1
if("allow_admin_spawning")
config.allow_admin_spawning = 1
if("no_dead_vote")
config.vote_no_dead = 1
if("default_no_vote")

View File

@@ -1,81 +1,81 @@
//TODO: rewrite and standardise all controller datums to the datum/controller type
//TODO: allow all controllers to be deleted for clean restarts (see WIP master controller stuff) - MC done - lighting done
/client/proc/restart_controller(controller in list("Master","Failsafe","Lighting","Supply Shuttle"))
set category = "Debug"
set name = "Restart Controller"
set desc = "Restart one of the various periodic loop controllers for the game (be careful!)"
if(!holder) return
usr = null
src = null
switch(controller)
if("Master")
new /datum/controller/game_controller()
master_controller.process()
feedback_add_details("admin_verb","RMC")
if("Failsafe")
new /datum/controller/failsafe()
feedback_add_details("admin_verb","RFailsafe")
if("Lighting")
new /datum/controller/lighting()
lighting_controller.process()
feedback_add_details("admin_verb","RLighting")
if("Supply Shuttle")
supply_shuttle.process()
feedback_add_details("admin_verb","RSupply")
message_admins("Admin [key_name_admin(usr)] has restarted the [controller] controller.")
return
/client/proc/debug_controller(controller in list("Master","Failsafe","Ticker","Lighting","Air","Jobs","Sun","Radio","Supply Shuttle","Emergency Shuttle","Configuration","pAI", "Cameras", "Events"))
set category = "Debug"
set name = "Debug Controller"
set desc = "Debug the various periodic loop controllers for the game (be careful!)"
if(!holder) return
switch(controller)
if("Master")
debug_variables(master_controller)
feedback_add_details("admin_verb","DMC")
if("Failsafe")
debug_variables(Failsafe)
feedback_add_details("admin_verb","DFailsafe")
if("Ticker")
debug_variables(ticker)
feedback_add_details("admin_verb","DTicker")
if("Lighting")
debug_variables(lighting_controller)
feedback_add_details("admin_verb","DLighting")
if("Air")
debug_variables(air_master)
feedback_add_details("admin_verb","DAir")
if("Jobs")
debug_variables(job_master)
feedback_add_details("admin_verb","DJobs")
if("Sun")
debug_variables(sun)
feedback_add_details("admin_verb","DSun")
if("Radio")
debug_variables(radio_controller)
feedback_add_details("admin_verb","DRadio")
if("Supply Shuttle")
debug_variables(supply_shuttle)
feedback_add_details("admin_verb","DSupply")
if("Emergency Shuttle")
debug_variables(emergency_shuttle)
feedback_add_details("admin_verb","DEmergency")
if("Configuration")
debug_variables(config)
feedback_add_details("admin_verb","DConf")
if("pAI")
debug_variables(paiController)
feedback_add_details("admin_verb","DpAI")
if("Cameras")
debug_variables(cameranet)
feedback_add_details("admin_verb","DCameras")
if("Events")
debug_variables(events)
feedback_add_details("admin_verb","DEvents")
message_admins("Admin [key_name_admin(usr)] is debugging the [controller] controller.")
return
//TODO: rewrite and standardise all controller datums to the datum/controller type
//TODO: allow all controllers to be deleted for clean restarts (see WIP master controller stuff) - MC done - lighting done
/client/proc/restart_controller(controller in list("Master","Failsafe","Lighting","Supply Shuttle"))
set category = "Debug"
set name = "Restart Controller"
set desc = "Restart one of the various periodic loop controllers for the game (be careful!)"
if(!holder) return
usr = null
src = null
switch(controller)
if("Master")
new /datum/controller/game_controller()
master_controller.process()
feedback_add_details("admin_verb","RMC")
if("Failsafe")
new /datum/controller/failsafe()
feedback_add_details("admin_verb","RFailsafe")
if("Lighting")
new /datum/controller/lighting()
lighting_controller.process()
feedback_add_details("admin_verb","RLighting")
if("Supply Shuttle")
supply_shuttle.process()
feedback_add_details("admin_verb","RSupply")
message_admins("Admin [key_name_admin(usr)] has restarted the [controller] controller.")
return
/client/proc/debug_controller(controller in list("Master","Failsafe","Ticker","Lighting","Air","Jobs","Sun","Radio","Supply Shuttle","Emergency Shuttle","Configuration","pAI", "Cameras", "Events"))
set category = "Debug"
set name = "Debug Controller"
set desc = "Debug the various periodic loop controllers for the game (be careful!)"
if(!holder) return
switch(controller)
if("Master")
debug_variables(master_controller)
feedback_add_details("admin_verb","DMC")
if("Failsafe")
debug_variables(Failsafe)
feedback_add_details("admin_verb","DFailsafe")
if("Ticker")
debug_variables(ticker)
feedback_add_details("admin_verb","DTicker")
if("Lighting")
debug_variables(lighting_controller)
feedback_add_details("admin_verb","DLighting")
if("Air")
debug_variables(air_master)
feedback_add_details("admin_verb","DAir")
if("Jobs")
debug_variables(job_master)
feedback_add_details("admin_verb","DJobs")
if("Sun")
debug_variables(sun)
feedback_add_details("admin_verb","DSun")
if("Radio")
debug_variables(radio_controller)
feedback_add_details("admin_verb","DRadio")
if("Supply Shuttle")
debug_variables(supply_shuttle)
feedback_add_details("admin_verb","DSupply")
if("Emergency Shuttle")
debug_variables(emergency_shuttle)
feedback_add_details("admin_verb","DEmergency")
if("Configuration")
debug_variables(config)
feedback_add_details("admin_verb","DConf")
if("pAI")
debug_variables(paiController)
feedback_add_details("admin_verb","DpAI")
if("Cameras")
debug_variables(cameranet)
feedback_add_details("admin_verb","DCameras")
if("Events")
debug_variables(events)
feedback_add_details("admin_verb","DEvents")
message_admins("Admin [key_name_admin(usr)] is debugging the [controller] controller.")
return

View File

@@ -265,6 +265,7 @@ client
if(isobj(D))
body += "<option value='?_src_=vars;delall=\ref[D]'>Delete all of type</option>"
if(isobj(D) || ismob(D) || isturf(D))
body += "<option value='?_src_=vars;addreagent=\ref[D]'>Add reagent</option>"
body += "<option value='?_src_=vars;explode=\ref[D]'>Trigger explosion</option>"
body += "<option value='?_src_=vars;emp=\ref[D]'>Trigger EM pulse</option>"
@@ -634,6 +635,38 @@ client
log_admin("[key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ")
message_admins("\blue [key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ")
else if(href_list["addreagent"])
if(!check_rights(0)) return
var/atom/A = locate(href_list["addreagent"])
if(!A.reagents)
var/amount = input(usr, "Specify the reagent size of [A]", "Set Reagent Size", 50) as num
if(amount)
A.create_reagents(amount)
if(A.reagents)
var/list/reagent_options = list()
for(var/r_id in chemical_reagents_list)
var/datum/reagent/R = chemical_reagents_list[r_id]
reagent_options[R.name] = r_id
if(reagent_options.len)
reagent_options = sortAssoc(reagent_options)
reagent_options.Insert(1, "CANCEL")
var/chosen = input(usr, "Choose a reagent to add.", "Choose a reagent.") in reagent_options
var/chosen_id = reagent_options[chosen]
if(chosen_id)
var/amount = input(usr, "Choose the amount to add.", "Choose the amount.", A.reagents.maximum_volume) as num
if(amount)
A.reagents.add_reagent(chosen_id, amount)
log_admin("[key_name(usr)] has added [amount] units of [chosen] to \the [A]")
message_admins("\blue [key_name(usr)] has added [amount] units of [chosen] to \the [A]")
href_list["datumrefresh"] = href_list["addreagent"]
else if(href_list["explode"])
if(!check_rights(R_FUN)) return

View File

@@ -847,7 +847,25 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
cost = 8
containertype = /obj/structure/largecrate
containername = "water tank crate"
/datum/supply_packs/misc/lasertag
name = "LaserTag Crate"
contains = list(/obj/item/weapon/gun/energy/laser/redtag,
/obj/item/weapon/gun/energy/laser/redtag,
/obj/item/weapon/gun/energy/laser/redtag,
/obj/item/weapon/gun/energy/laser/bluetag,
/obj/item/weapon/gun/energy/laser/bluetag,
/obj/item/weapon/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/bluetaghelm)
cost = 15
containername = "LaserTag Crate"
///////////// Paper Work

View File

@@ -447,6 +447,14 @@ var/list/uplink_items = list()
cost = 10
excludefrom = list(/datum/game_mode/nuclear)
/datum/uplink_item/badass/syndiecards
name = "Syndicate Playing Cards"
desc = "A special deck of space-grade playing cards with a mono-molecular edge and metal reinforcement, making them lethal weapons both when wielded as a blade and when thrown. \
You can also play card games with them."
item = /obj/item/toy/cards/deck/syndicate
cost = 1
excludefrom = list(/datum/game_mode/nuclear)
/datum/uplink_item/badass/balloon
name = "For showing that you are The Boss"
desc = "A useless red balloon with the syndicate logo on it, which can blow the deepest of covers."

View File

@@ -124,7 +124,7 @@ var/const/AIRLOCK_WIRE_LIGHT = 2048
switch(index)
if(AIRLOCK_WIRE_IDSCAN)
//Sending a pulse through this flashes the red light on the door (if the door has power).
if((A.arePowerSystemsOn()) && (!(A.stat & NOPOWER)))
if((A.arePowerSystemsOn()) && (!(A.stat & NOPOWER)) && A.density)
A.do_animate("deny")
if(AIRLOCK_WIRE_MAIN_POWER1 || AIRLOCK_WIRE_MAIN_POWER2)
//Sending a pulse through either one causes a breaker to trip, disabling the door for 10 seconds if backup power is connected, or 1 minute if not (or until backup power comes back on, whichever is shorter).

View File

@@ -117,14 +117,17 @@
icon = 'icons/obj/items.dmi'
icon_state = "bike_horn"
item_state = "bike_horn"
hitsound = 'sound/items/bikehorn.ogg'
throwforce = 3
hitsound = null //To prevent tap.ogg playing, as the item lacks of force
w_class = 1.0
throw_speed = 3
throw_range = 15
attack_verb = list("HONKED")
var/spam_flag = 0
/obj/item/weapon/bikehorn/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
playsound(loc, 'sound/items/bikehorn.ogg', 50, 1, -1) //plays instead of tap.ogg!
return ..()
/obj/item/weapon/c_tube
name = "cardboard tube"
@@ -371,10 +374,7 @@
m_amt = 15000
origin_tech = "materials=2;combat=1"
attack_verb = list("chopped", "torn", "cut")
/obj/item/weapon/hatchet/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
return ..()
hitsound = 'sound/weapons/bladeslice.ogg'
/obj/item/weapon/scythe
icon_state = "scythe0"
@@ -389,6 +389,7 @@
slot_flags = SLOT_BACK
origin_tech = "materials=2;combat=2"
attack_verb = list("chopped", "sliced", "cut", "reaped")
hitsound = 'sound/weapons/bladeslice.ogg'
/obj/item/weapon/scythe/afterattack(atom/A, mob/user as mob, proximity)
if(!proximity) return

View File

@@ -38,6 +38,8 @@
M.take_organ_damage(20)
/atom/proc/CheckParts()
return
/atom/proc/assume_air(datum/gas_mixture/giver)
del(giver)
@@ -280,6 +282,12 @@ var/list/blood_splatter_icons = list()
overlays += blood_splatter_icon
return 1 //we applied blood to the item
/obj/item/clothing/gloves/add_blood(mob/living/carbon/M)
if(..() == 0) return 0
transfer_blood = rand(2, 4)
bloody_hands_mob = M
return 1
/turf/simulated/add_blood(mob/living/carbon/M)
if(..() == 0) return 0
@@ -291,6 +299,8 @@ var/list/blood_splatter_icons = list()
/mob/living/carbon/human/add_blood(mob/living/carbon/M)
if(..() == 0) return 0
add_blood_list(M)
bloody_hands = rand(2, 4)
bloody_hands_mob = M
update_inv_gloves() //handles bloody hands overlays and updating
return 1 //we applied blood to the item

View File

@@ -94,7 +94,7 @@
domutcheck(owner)
check_dna_integrity(owner)
return owner.dna
return
/proc/check_dna_integrity(mob/living/carbon/character)
if(!(istype(character, /mob/living/carbon/human) || istype(character, /mob/living/carbon/monkey))) //Evict xenos from carbon 2012
@@ -347,8 +347,8 @@
component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
component_parts += new /obj/item/weapon/stock_parts/micro_laser(null)
component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
component_parts += new /obj/item/weapon/cable_coil(null, 1)
component_parts += new /obj/item/weapon/cable_coil(null, 1)
component_parts += new /obj/item/stack/cable_coil(null, 1)
component_parts += new /obj/item/stack/cable_coil(null, 1)
RefreshParts()
@@ -920,7 +920,7 @@
if("pulsese")
var/len = length(viable_occupant.dna.struc_enzymes)
num = Wrap(num, 1, len+1)
num = randomize_radiation_accuracy(num, radduration, len)
num = randomize_radiation_accuracy(num, radduration + (connected.precision_coeff ** 2), len)
var/block = round((num-1)/DNA_BLOCK_SIZE)+1
var/subblock = num - block*DNA_BLOCK_SIZE

View File

@@ -9,7 +9,7 @@ var/list/blob_nodes = list()
/datum/game_mode/blob
name = "blob"
config_tag = "blob"
antag_flag = BE_ALIEN
antag_flag = BE_BLOB
required_players = 30
required_enemies = 1

View File

@@ -63,9 +63,9 @@
..()
/obj/effect/blob/core/proc/create_overmind(var/client/new_overmind)
/obj/effect/blob/core/proc/create_overmind(var/client/new_overmind, var/override_delay)
if(overmind_get_delay > world.time)
if(overmind_get_delay > world.time && !override_delay)
return
overmind_get_delay = world.time + 300 // 30 seconds
@@ -77,7 +77,7 @@
var/list/candidates = list()
if(!new_overmind)
candidates = get_candidates(BE_ALIEN)
candidates = get_candidates(BE_BLOB)
if(candidates.len)
C = pick(candidates)
else

View File

@@ -45,6 +45,7 @@
attacktext = "hits"
attack_sound = 'sound/weapons/genhit1.ogg'
var/obj/effect/blob/factory/factory = null
var/is_zombie = 0
faction = "blob"
min_oxy = 0
max_oxy = 0
@@ -75,6 +76,36 @@
factory.spores += src
..()
/mob/living/simple_animal/hostile/blobspore/Life()
if(!is_zombie)
for(var/mob/living/carbon/human/H in ListTargets(0)) //Only for people in the same tile
if(H.stat == DEAD)
Zombify(H)
break
..()
/mob/living/simple_animal/hostile/blobspore/proc/Zombify(var/mob/living/carbon/human/H)
if(H.wear_suit)
var/obj/item/clothing/suit/armor/A = H.wear_suit
if(A.armor && A.armor["melee"])
maxHealth += A.armor["melee"] //That zombie's got armor, I want armor!
maxHealth += 40
health = maxHealth
name = "blob zombie"
desc = "A shambling corpse animated by the blob."
melee_damage_lower = 10
melee_damage_upper = 15
icon = H.icon
icon_state = "husk_s"
H.hair_style = null
H.update_hair()
overlays = H.overlays
overlays += image('icons/mob/blob.dmi', icon_state = "blob_head")
H.loc = src
is_zombie = 1
loc.visible_message("<span class='warning'> The corpse of [H.name] suddenly rises!</span>")
/mob/living/simple_animal/hostile/blobspore/Die()
// On death, create a small smoke of harmful gas (s-Acid)
var/datum/effect/effect/system/chem_smoke_spread/S = new
@@ -94,4 +125,7 @@
/mob/living/simple_animal/hostile/blobspore/Del()
if(factory)
factory.spores -= src
if(contents)
for(var/mob/M in contents)
M.loc = src.loc
..()

View File

@@ -277,9 +277,14 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon"
U << "<span class='warning'>We could gain no benefit from absorbing a lesser creature.</span>"
return 0
if(T.dna in absorbed_dna)
U << "<span class='warning'>We already have that DNA in storage.</span>"
return 0
for(var/datum/dna/D in absorbed_dna)
if(T.dna.uni_identity == D.uni_identity)
if(T.dna.struc_enzymes == D.struc_enzymes)
if(T.dna.real_name == D.real_name)
if(T.dna.mutantrace == D.mutantrace)
if(T.dna.blood_type == D.blood_type)
U << "<span class='warning'>We already have that DNA in storage.</span>"
return 0
if(!check_dna_integrity(T))
U << "<span class='warning'>[T] is not compatible with our biology.</span>"
@@ -292,7 +297,13 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon"
/datum/changeling/proc/absorb_dna(mob/living/carbon/T)
shuffle_dna()
T.dna.real_name = T.real_name //Set this again, just to be sure that it's properly set.
absorbed_dna |= T.dna //And add the target DNA to our absorbed list.
var/datum/dna/new_dna = new T.dna.type
new_dna.uni_identity = T.dna.uni_identity
new_dna.struc_enzymes = T.dna.struc_enzymes
new_dna.real_name = T.dna.real_name
new_dna.mutantrace = T.dna.mutantrace
new_dna.blood_type = T.dna.blood_type
absorbed_dna |= new_dna //And add the target DNA to our absorbed list.
absorbedcount++ //all that done, let's increment the objective counter.
/datum/changeling/proc/shuffle_dna()//boots out the stalest DNA.

View File

@@ -0,0 +1,52 @@
//This only contains the arm blade for now because I'm a lazy fuck. Yers truely, Miauw, resident lazy fuck.
/obj/item/weapon/melee/arm_blade
name = "arm blade"
desc = "A grotesque blade made out of bone and flesh that cleaves through people as a hot knife through butter"
icon = 'icons/obj/weapons.dmi'
icon_state = "arm_blade"
item_state = "arm_blade"
flags = ABSTRACT
w_class = 5.0
force = 25
throwforce = 0 //Just to be on the safe side
throw_range = 0
throw_speed = 0
/obj/item/weapon/melee/arm_blade/New()
..()
if(ismob(loc))
loc.visible_message("<span class='warning'>A grotesque blade forms around [loc.name]\'s arm!</span>", "<span class='warning'>Our arm twists and mutates, transforming it into a deadly blade.</span>", "<span class='warning'>You hear organic matter ripping and tearing!</span>")
/obj/item/weapon/melee/arm_blade/dropped(mob/user)
visible_message("<span class='warning'>With a sickening crunch, [user] reforms his blade into an arm!</span>", "<span class='notice'>We assimilate our blade into our body</span>", "<span class='warning>You hear organic matter ripping and tearing!</span>")
del src
/obj/item/weapon/melee/arm_blade/afterattack(atom/target, mob/user, proximity)
if(!proximity)
return
if(istype(target, /obj/structure/table))
var/obj/structure/table/T = target
T.table_destroy(1, user)
else if(istype(target, /obj/machinery/computer))
var/obj/machinery/computer/C = target
C.attack_alien(user) //muh copypasta
else if(istype(target, /obj/machinery/door/airlock))
var/obj/machinery/door/airlock/A = target
if(!A.requiresID() || A.allowed(user)) //This is to prevent stupid shit like hitting a door with an arm blade, the door opening because you have acces and still getting a "the airlocks motors resist our efforts to force it" message.
return
if(A.arePowerSystemsOn() && !(A.stat & NOPOWER))
user << "<span class='notice'>The airlock's motors resist our efforts to force it.</span>"
return
else if(A.locked)
user << "<span class='notice'>The airlock's bolts prevent it from being forced.</span>"
return
else
//user.say("Heeeeeeeeeerrre's Johnny!")
user.visible_message("<span class='warning'>[user] forces the door to open with \his [src]!</span>", "<span class='warning'>We force the door to open.</span>", "<span class='warning'>You hear a metal screeching sound.</span>")
A.open(1)

View File

@@ -118,12 +118,17 @@
changeling.absorb_dna(T)
if(src.nutrition < 400) src.nutrition = min((src.nutrition + T.nutrition), 400)
if(T.mind && T.mind.changeling)//If the target was a changeling, suck out their extra juice and objective points!
changeling.chem_charges += min(T.mind.changeling.chem_charges, changeling.chem_storage)
changeling.absorbedcount += T.mind.changeling.absorbedcount
T.mind.changeling.absorbed_dna.len = 1
T.mind.changeling.absorbedcount = 0
if(T.mind)//if the victim has got a mind
T.mind.show_memory(src, 0) //I can read your mind, kekeke. Output all their notes.
if(T.mind.changeling)//If the target was a changeling, suck out their extra juice and objective points!
changeling.chem_charges += min(T.mind.changeling.chem_charges, changeling.chem_storage)
changeling.absorbedcount += T.mind.changeling.absorbedcount
T.mind.changeling.absorbed_dna.len = 1
T.mind.changeling.absorbedcount = 0
else
changeling.chem_charges += 10
@@ -212,7 +217,8 @@
changeling.chem_charges -= 5
remove_changeling_powers()
src << "<span class='notice'>We transform our appearance.</span>"
dna = chosen_dna
src.dna = chosen_dna
var/mob/living/carbon/human/O = humanize((TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPDAMAGE | TR_KEEPSRC),chosen_dna.real_name)
@@ -529,9 +535,34 @@ var/list/datum/dna/hivemind_bank = list()
if(src && src.mind && src.mind.changeling)
src.mind.changeling.mimicing = ""
//////////
//STINGS// //They get a pretty header because there's just so fucking many of them ;_;
//////////
/mob/living/carbon/proc/changeling_arm_blade()
set category = "Changeling"
set name = "Arm Blade (20)"
if(istype(l_hand, /obj/item/weapon/melee/arm_blade)) //Not the nicest way to do it, but eh
u_equip(l_hand)
return
if(istype(r_hand, /obj/item/weapon/melee/arm_blade))
u_equip(r_hand)
return
var/datum/changeling/changeling = changeling_power(20)
if(!changeling)
return
u_equip(get_active_hand())
put_in_hands(new /obj/item/weapon/melee/arm_blade(src))
changeling.geneticdamage += 6
changeling.chem_charges -= 20
//////////
//STINGS// //They get a pretty header because there's just so fucking many of them ;_;
//////////
/mob/living/carbon/proc/set_sting(A, icon, dna=null) //setting the sting and ui icon for it
src << "<span class='notice'>We prepare our sting, use alt+click on target to sting them.</span>"
@@ -584,15 +615,13 @@ var/list/datum/dna/hivemind_bank = list()
/mob/living/carbon/proc/sting_effect_trasnform(mob/living/carbon/T)
if(!sting_can_reach(T, 40))
return 0
add_logs(src, T, "stung", object="transformation sting", addition="new identity is [src.mind.changeling.chosen_dna.real_name]")
add_logs(src, T, "stung", object="transformation sting", addition=" new identity is [src.mind.changeling.chosen_dna.real_name]")
if((HUSK in T.mutations) || !check_dna_integrity(T))
src << "<span class='warning'>Our sting appears ineffective against its DNA.</span>"
return 0
T.dna = src.mind.changeling.chosen_dna
T.real_name = src.mind.changeling.chosen_dna.real_name
var/datum/dna/NewDNA = src.mind.changeling.chosen_dna
hardset_dna(T, NewDNA.uni_identity, NewDNA.struc_enzymes, NewDNA.real_name, NewDNA.mutantrace, NewDNA.blood_type)
updateappearance(T)
domutcheck(T, null)
feedback_add_details("changeling_powers","TS")
return 1
@@ -680,4 +709,4 @@ var/list/datum/dna/hivemind_bank = list()
T.reagents.add_reagent("ice", 30)
feedback_add_details("changeling_powers","CS")
return 1
return 1

View File

@@ -161,6 +161,13 @@ var/list/powerinstances
allowduringlesserform = 1
verbpath = /mob/living/carbon/proc/changeling_mute_sting
/datum/power/changeling/arm_blade
name = "Arm Blade"
desc = "We reform one of our arms into a deadly blade."
helptext = "Cannot be used while in lesser form."
genomecost = 1
allowduringlesserform = 0
verbpath = /mob/living/carbon/proc/changeling_arm_blade
// Modularchangling, totally stolen from the new player panel. YAYY
/datum/changeling/proc/EvolutionMenu()//The new one

View File

@@ -7,12 +7,12 @@
w_class = 4
force = 30
throwforce = 10
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
/obj/item/weapon/melee/cultblade/attack(mob/living/target as mob, mob/living/carbon/human/user as mob)
if(iscultist(user))
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
return ..()
else
user.Paralyse(5)

View File

@@ -226,12 +226,18 @@ var/list/sacrificed = list()
seer()
if(usr.loc==src.loc)
usr.say("Rash'tla sektath mal[pick("'","`")]zua. Zasan therium vivira. Itonis al'ra matum!")
if(usr.see_invisible!=0 && usr.see_invisible!=15)
usr << "\red The world beyond flashes your eyes but disappears quickly, as if something is disrupting your vision."
var/mob/living/carbon/human/user = usr
if(user.see_invisible!=25 || (istype(user) && user.glasses)) //check for non humans
user << "\red The world beyond flashes your eyes but disappears quickly, as if something is disrupting your vision."
else
usr << "\red The world beyond opens to your eyes."
usr.see_invisible = SEE_INVISIBLE_OBSERVER
usr.seer = 1
user << "\red The world beyond opens to your eyes."
var/see_temp = user.see_invisible
user.see_invisible = SEE_INVISIBLE_OBSERVER
user.seer = 1
while(user.loc==src.loc)
sleep(30)
user.seer = 0
user.see_invisible = see_temp
return
return fizzle()

View File

@@ -319,28 +319,29 @@ var/global/datum/controller/gameticker/ticker
/datum/controller/gameticker/proc/declare_completion()
for (var/mob/living/silicon/ai/aiPlayer in mob_list)
if (aiPlayer.stat != 2)
world << "<b>[aiPlayer.name] (Played by: [aiPlayer.key])'s laws at the end of the game were:</b>"
else
world << "<b>[aiPlayer.name] (Played by: [aiPlayer.key])'s laws when it was deactivated were:</b>"
aiPlayer.show_laws(1)
if (aiPlayer.stat != 2 && aiPlayer.mind)
world << "<b>[aiPlayer.name] (Played by: [aiPlayer.mind.key])'s laws at the end of the game were:</b>"
aiPlayer.show_laws(1)
else if (aiPlayer.mind) //if the dead ai has a mind, use its key instead
world << "<b>[aiPlayer.name] (Played by: [aiPlayer.mind.key])'s laws when it was deactivated were:</b>"
aiPlayer.show_laws(1)
if (aiPlayer.connected_robots.len)
var/robolist = "<b>[aiPlayer.real_name]'s loyal minions were:</b> "
var/vsrobolist = "\red <b>[aiPlayer.real_name]'s disloyal minions were:</b> \black"
for(var/mob/living/silicon/robot/robo in aiPlayer.connected_robots)
if (is_special_character(robo))
vsrobolist += "[robo.name][robo.stat?" (Deactivated) (Played by: [robo.key]), ":" (Played by: [robo.key]), "]"
if (is_special_character(robo) && robo.mind)
vsrobolist += "[robo.name][robo.stat?" (Deactivated) (Played by: [robo.mind.key]), ":" (Played by: [robo.mind.key]), "]"
continue
robolist += "[robo.name][robo.stat?" (Deactivated) (Played by: [robo.key]), ":" (Played by: [robo.key]), "]"
robolist += "[robo.name][robo.stat?" (Deactivated) (Played by: [robo.mind.key]), ":" (Played by: [robo.mind.key]), "]"
world << "[robolist]"
world << "[vsrobolist]"
for (var/mob/living/silicon/robot/robo in mob_list)
if (!robo.connected_ai)
if (robo.stat != 2)
world << "<b>[robo.name] (Played by: [robo.key]) survived as an AI-less borg! Its laws were:</b>"
world << "<b>[robo.name] (Played by: [robo.mind.key]) survived as an AI-less borg! Its laws were:</b>"
else
world << "<b>[robo.name] (Played by: [robo.key]) was unable to survive the rigors of being a cyborg without an AI. Its laws were:</b>"
world << "<b>[robo.name] (Played by: [robo.mind.key]) was unable to survive the rigors of being a cyborg without an AI. Its laws were:</b>"
if(robo) //How the hell do we lose robo between here and the world messages directly above this?
robo.laws.show_laws(world)

View File

@@ -123,12 +123,10 @@
mode = 2
switch(alert("Search for item signature or DNA fragment?" , "Signature Mode Select" , "" , "Item" , "DNA"))
if("Item")
var/datum/objective/steal/itemlist
itemlist = itemlist // To supress a 'variable defined but not used' error.
var/targetitem = input("Select item to search for.", "Item Mode Select","") as null|anything in itemlist.possible_items
var/targetitem = input("Select item to search for.", "Item Mode Select","") as null|anything in possible_items
if(!targetitem)
return
target=locate(itemlist.possible_items[targetitem])
target=locate(possible_items[targetitem])
if(!target)
usr << "Failed to locate [targetitem]!"
return

View File

@@ -4,266 +4,244 @@ datum/objective
var/datum/mind/target = null //If they are focused on a particular person.
var/target_amount = 0 //If they are focused on a particular number. Steal objectives have their own counter.
var/completed = 0 //currently only used for custom objectives.
var/dangerrating = 0 //How hard the objective is, essentially. Used for dishing out objectives and checking overall victory.
New(var/text)
if(text)
explanation_text = text
datum/objective/New(var/text)
if(text)
explanation_text = text
proc/check_completion()
return completed
datum/objective/proc/check_completion()
return completed
proc/find_target()
var/list/possible_targets = list()
for(var/datum/mind/possible_target in ticker.minds)
if(possible_target != owner && ishuman(possible_target.current) && (possible_target.current.stat != 2))
possible_targets += possible_target
if(possible_targets.len > 0)
target = pick(possible_targets)
update_explanation_text()
datum/objective/proc/find_target()
var/list/possible_targets = list()
for(var/datum/mind/possible_target in ticker.minds)
if(possible_target != owner && ishuman(possible_target.current) && (possible_target.current.stat != 2))
possible_targets += possible_target
if(possible_targets.len > 0)
target = pick(possible_targets)
update_explanation_text()
return target
datum/objective/proc/find_target_by_role(role, role_type=0)//Option sets either to check assigned role or special role. Default to assigned.
for(var/datum/mind/possible_target in ticker.minds)
if((possible_target != owner) && ishuman(possible_target.current) && ((role_type ? possible_target.special_role : possible_target.assigned_role) == role) )
target = possible_target
break
update_explanation_text()
proc/find_target_by_role(role, role_type=0)//Option sets either to check assigned role or special role. Default to assigned.
for(var/datum/mind/possible_target in ticker.minds)
if((possible_target != owner) && ishuman(possible_target.current) && ((role_type ? possible_target.special_role : possible_target.assigned_role) == role) )
target = possible_target
break
update_explanation_text()
datum/objective/proc/update_explanation_text()
//Default does nothing, override where needed
proc/update_explanation_text()
//Default does nothing, override where needed
datum/objective/assassinate
var/target_role_type=0
dangerrating = 10
find_target()
..()
return target
datum/objective/assassinate/find_target_by_role(role, role_type=0)
target_role_type = role_type
..(role, role_type)
return target
find_target_by_role(role, role_type=0)
target_role_type = role_type
..(role, role_type)
return target
datum/objective/assassinate/check_completion()
if(target && target.current)
if(target.current.stat == DEAD || issilicon(target.current) || isbrain(target.current) || target.current.z > 6 || !target.current.ckey) //Borgs/brains/AIs count as dead for traitor objectives. --NeoFite
return 1
return 0
return 1
datum/objective/assassinate/update_explanation_text()
..()
if(target && target.current)
explanation_text = "Assassinate [target.current.real_name], the [!target_role_type ? target.assigned_role : target.special_role]."
else
explanation_text = "Free Objective"
check_completion()
if(target && target.current)
if(target.current.stat == DEAD || issilicon(target.current) || isbrain(target.current) || target.current.z > 6 || !target.current.ckey) //Borgs/brains/AIs count as dead for traitor objectives. --NeoFite
return 1
return 0
return 1
update_explanation_text()
..()
if(target && target.current)
explanation_text = "Assassinate [target.current.real_name], the [!target_role_type ? target.assigned_role : target.special_role]."
else
explanation_text = "Free Objective"
datum/objective/mutiny
var/target_role_type=0
find_target()
..()
return target
datum/objective/mutiny/find_target_by_role(role, role_type=0)
target_role_type = role_type
..(role, role_type)
return target
find_target_by_role(role, role_type=0)
target_role_type = role_type
..(role, role_type)
return target
datum/objective/mutiny/check_completion()
if(target && target.current)
if(target.current.stat == DEAD || !ishuman(target.current) || !target.current.ckey || !target.current.client)
return 1
var/turf/T = get_turf(target.current)
if(T && (T.z != 1)) //If they leave the station they count as dead for this
return 2
return 0
return 1
datum/objective/mutiny/update_explanation_text()
..()
if(target && target.current)
explanation_text = "Assassinate [target.current.real_name], the [!target_role_type ? target.assigned_role : target.special_role]."
else
explanation_text = "Free Objective"
check_completion()
if(target && target.current)
if(target.current.stat == DEAD || !ishuman(target.current) || !target.current.ckey || !target.current.client)
return 1
var/turf/T = get_turf(target.current)
if(T && (T.z != 1)) //If they leave the station they count as dead for this
return 2
return 0
return 1
update_explanation_text()
..()
if(target && target.current)
explanation_text = "Assassinate [target.current.real_name], the [!target_role_type ? target.assigned_role : target.special_role]."
else
explanation_text = "Free Objective"
datum/objective/debrain//I want braaaainssss
var/target_role_type=0
dangerrating = 20
find_target()
..()
return target
datum/objective/debrain/find_target_by_role(role, role_type=0)
target_role_type = role_type
..(role, role_type)
return target
find_target_by_role(role, role_type=0)
target_role_type = role_type
..(role, role_type)
return target
check_completion()
if(!target)//If it's a free objective.
return 1
if( !owner.current || owner.current.stat==DEAD )//If you're otherwise dead.
return 0
if( !target.current || !isbrain(target.current) )
return 0
var/atom/A = target.current
while(A.loc) //check to see if the brainmob is on our person
A = A.loc
if(A == owner.current)
return 1
datum/objective/debrain/check_completion()
if(!target)//If it's a free objective.
return 1
if( !owner.current || owner.current.stat==DEAD )//If you're otherwise dead.
return 0
if( !target.current || !isbrain(target.current) )
return 0
var/atom/A = target.current
while(A.loc) //check to see if the brainmob is on our person
A = A.loc
if(A == owner.current)
return 1
return 0
datum/objective/debrain/update_explanation_text()
..()
if(target && target.current)
explanation_text = "Steal the brain of [target.current.real_name], the [!target_role_type ? target.assigned_role : target.special_role]."
else
explanation_text = "Free Objective"
update_explanation_text()
..()
if(target && target.current)
explanation_text = "Steal the brain of [target.current.real_name], the [!target_role_type ? target.assigned_role : target.special_role]."
else
explanation_text = "Free Objective"
datum/objective/protect//The opposite of killing a dude.
var/target_role_type=0
dangerrating = 10
find_target()
..()
return target
datum/objective/protect/find_target_by_role(role, role_type=0)
target_role_type = role_type
..(role, role_type)
return target
find_target_by_role(role, role_type=0)
target_role_type = role_type
..(role, role_type)
return target
datum/objective/protect/check_completion()
if(!target) //If it's a free objective.
return 1
if(target.current)
if(target.current.stat == DEAD || issilicon(target.current) || isbrain(target.current))
return 0
return 1
return 0
datum/objective/protect/update_explanation_text()
..()
if(target && target.current)
explanation_text = "Protect [target.current.real_name], the [!target_role_type ? target.assigned_role : target.special_role]."
else
explanation_text = "Free Objective"
check_completion()
if(!target) //If it's a free objective.
return 1
if(target.current)
if(target.current.stat == DEAD || issilicon(target.current) || isbrain(target.current))
return 0
return 1
return 0
update_explanation_text()
..()
if(target && target.current)
explanation_text = "Protect [target.current.real_name], the [!target_role_type ? target.assigned_role : target.special_role]."
else
explanation_text = "Free Objective"
datum/objective/hijack
explanation_text = "Hijack the emergency shuttle by escaping alone."
dangerrating = 25
check_completion()
if(!owner.current || owner.current.stat)
return 0
if(emergency_shuttle.location<2)
return 0
if(issilicon(owner.current))
return 0
var/area/shuttle = locate(/area/shuttle/escape/centcom)
datum/objective/hijack/check_completion()
if(!owner.current || owner.current.stat)
return 0
if(emergency_shuttle.location<2)
return 0
if(issilicon(owner.current))
return 0
var/area/shuttle = locate(/area/shuttle/escape/centcom)
if(!(get_turf(owner.current) in shuttle))
return 0
if(!(get_turf(owner.current) in shuttle))
return 0
var/list/protected_mobs = list(/mob/living/silicon/ai, /mob/living/silicon/pai)
for(var/mob/living/player in player_list)
if(player.type in protected_mobs) continue
if (player.mind && (player.mind != owner))
if(player.stat != DEAD) //they're not dead!
if(get_turf(player) in shuttle)
return 0
return 1
var/list/protected_mobs = list(/mob/living/silicon/ai, /mob/living/silicon/pai)
for(var/mob/living/player in player_list)
if(player.type in protected_mobs) continue
if (player.mind && (player.mind != owner))
if(player.stat != DEAD) //they're not dead!
if(get_turf(player) in shuttle)
return 0
return 1
datum/objective/block
explanation_text = "Do not allow any organic lifeforms to escape on the shuttle alive."
dangerrating = 25
datum/objective/block/check_completion()
if(!istype(owner.current, /mob/living/silicon))
return 0
if(emergency_shuttle.location<2)
return 0
if(!owner.current)
return 0
var/area/shuttle = locate(/area/shuttle/escape/centcom)
var/protected_mobs[] = list(/mob/living/silicon/ai, /mob/living/silicon/pai, /mob/living/silicon/robot)
for(var/mob/living/player in player_list)
if(player.type in protected_mobs) continue
if (player.mind)
if (player.stat != 2)
if (get_turf(player) in shuttle)
return 0
return 1
check_completion()
if(!istype(owner.current, /mob/living/silicon))
return 0
if(emergency_shuttle.location<2)
return 0
if(!owner.current)
return 0
var/area/shuttle = locate(/area/shuttle/escape/centcom)
var/protected_mobs[] = list(/mob/living/silicon/ai, /mob/living/silicon/pai, /mob/living/silicon/robot)
for(var/mob/living/player in player_list)
if(player.type in protected_mobs) continue
if (player.mind)
if (player.stat != 2)
if (get_turf(player) in shuttle)
return 0
return 1
datum/objective/silence
explanation_text = "Do not allow anyone to escape the station. Only allow the shuttle to be called when everyone is dead and your story is the only one left."
check_completion()
if(emergency_shuttle.location<2)
return 0
for(var/mob/living/player in player_list)
if(player == owner.current)
continue
if(player.mind)
if(player.stat != DEAD)
var/turf/T = get_turf(player)
if(!T) continue
switch(T.loc.type)
if(/area/shuttle/escape/centcom, /area/shuttle/escape_pod1/centcom, /area/shuttle/escape_pod2/centcom, /area/shuttle/escape_pod3/centcom, /area/shuttle/escape_pod4/centcom)
return 0
return 1
datum/objective/escape
explanation_text = "Escape on the shuttle or an escape pod alive."
dangerrating = 5
datum/objective/escape/check_completion()
if(issilicon(owner.current))
return 0
if(isbrain(owner.current))
return 0
if(emergency_shuttle.location<2)
return 0
if(!owner.current || owner.current.stat ==2)
return 0
var/turf/location = get_turf(owner.current.loc)
if(!location)
return 0
check_completion()
if(issilicon(owner.current))
return 0
if(isbrain(owner.current))
return 0
if(emergency_shuttle.location<2)
return 0
if(!owner.current || owner.current.stat ==2)
return 0
var/turf/location = get_turf(owner.current.loc)
if(!location)
return 0
if(istype(location, /turf/simulated/shuttle/floor4)) // Fails traitors if they are in the shuttle brig -- Polymorph
return 0
if(istype(location, /turf/simulated/shuttle/floor4)) // Fails traitors if they are in the shuttle brig -- Polymorph
return 0
var/area/check_area = location.loc
if(istype(check_area, /area/shuttle/escape/centcom))
return 1
if(istype(check_area, /area/shuttle/escape_pod1/centcom))
return 1
if(istype(check_area, /area/shuttle/escape_pod2/centcom))
return 1
if(istype(check_area, /area/shuttle/escape_pod3/centcom))
return 1
if(istype(check_area, /area/shuttle/escape_pod4/centcom))
return 1
else
return 0
var/area/check_area = location.loc
if(istype(check_area, /area/shuttle/escape/centcom))
return 1
if(istype(check_area, /area/shuttle/escape_pod1/centcom))
return 1
if(istype(check_area, /area/shuttle/escape_pod2/centcom))
return 1
if(istype(check_area, /area/shuttle/escape_pod3/centcom))
return 1
if(istype(check_area, /area/shuttle/escape_pod4/centcom))
return 1
else
return 0
datum/objective/survive
explanation_text = "Stay alive until the end."
dangerrating = 3
datum/objective/survive/check_completion()
if(!owner.current || owner.current.stat == DEAD || isbrain(owner.current))
return 0 //Brains no longer win survive objectives. --NEO
if(!is_special_character(owner.current)) //This fails borg'd traitors
return 0
return 1
check_completion()
if(!owner.current || owner.current.stat == DEAD || isbrain(owner.current))
return 0 //Brains no longer win survive objectives. --NEO
if(!is_special_character(owner.current)) //This fails borg'd traitors
return 0
return 1
datum/objective/nuclear
@@ -271,268 +249,170 @@ datum/objective/nuclear
var/global/list/possible_items = list()
datum/objective/steal
var/obj/item/steal_target
var/target_name
var/datum/objective_item/targetinfo = null //Save the chosen item datum so we can access it later.
var/obj/item/steal_target = null //Needed for custom objectives (they're just items, not datums).
dangerrating = 5 //Overridden by the individual item's difficulty, but defaults to 5 for custom objectives.
var/global/possible_items[] = list(
"the captain's antique laser gun" = /obj/item/weapon/gun/energy/laser/captain,
"a hand teleporter" = /obj/item/weapon/hand_tele,
"an RCD" = /obj/item/weapon/rcd,
"a jetpack" = /obj/item/weapon/tank/jetpack,
"a functional AI" = /obj/item/device/aicard,
"a pair of magboots" = /obj/item/clothing/shoes/magboots,
"the station blueprints" = /obj/item/blueprints,
"28 moles of plasma (full tank)" = /obj/item/weapon/tank,
"an unused sample of slime extract" = /obj/item/slime_extract,
"a piece of corgi meat" = /obj/item/weapon/reagent_containers/food/snacks/meat/corgi,
"the medal of captaincy" = /obj/item/clothing/tie/medal/gold/captain,
"the hypospray" = /obj/item/weapon/reagent_containers/hypospray,
"the nuclear authentication disk" = /obj/item/weapon/disk/nuclear,
"an ablative armor vest" = /obj/item/clothing/suit/armor/laserproof,
"the reactive teleport armor" = /obj/item/clothing/suit/armor/reactive,
/*
Nobody takes these seriously anyways -- Ikki
"a captain's jumpsuit" = /obj/item/clothing/under/rank/captain,
"a research director's jumpsuit" = /obj/item/clothing/under/rank/research_director,
"a chief engineer's jumpsuit" = /obj/item/clothing/under/rank/chief_engineer,
"a chief medical officer's jumpsuit" = /obj/item/clothing/under/rank/chief_medical_officer,
"a head of security's jumpsuit" = /obj/item/clothing/under/rank/head_of_security,
"a head of personnel's jumpsuit" = /obj/item/clothing/under/rank/head_of_personnel,
*/
)
datum/objective/steal/New()
..()
if(!possible_items.len)//Only need to fill the list when it's needed.
init_subtypes(/datum/objective_item/steal,possible_items)
var/global/possible_items_special[] = list(
"the captain's pinpointer" = /obj/item/weapon/pinpointer,
"an advanced energy gun" = /obj/item/weapon/gun/energy/gun/nuclear,
"a diamond drill" = /obj/item/weapon/pickaxe/diamonddrill,
"a bag of holding" = /obj/item/weapon/storage/backpack/holding,
"a hyper-capacity cell" = /obj/item/weapon/cell/hyper,
"10 diamonds" = /obj/item/stack/sheet/mineral/diamond,
"50 gold bars" = /obj/item/stack/sheet/mineral/gold,
"25 refined uranium bars" = /obj/item/stack/sheet/mineral/uranium,
"a laser pointer" = /obj/item/device/laser_pointer,
)
datum/objective/steal/find_target()
return set_target(pick(possible_items))
datum/objective/steal/proc/set_target(var/datum/objective_item/item)
targetinfo = item
steal_target = targetinfo.targetitem
explanation_text = "Steal [targetinfo.name]."
dangerrating = targetinfo.difficulty
return steal_target
datum/objective/steal/proc/select_target() //For admins setting objectives manually.
var/list/possible_items_all = possible_items+"custom"
var/new_target = input("Select target:", "Objective target", steal_target) as null|anything in possible_items_all
if (!new_target) return
if (new_target == "custom") //Can set custom items.
var/obj/item/custom_target = input("Select type:","Type") as null|anything in typesof(/obj/item)
if (!custom_target) return
var/tmp_obj = new custom_target
var/custom_name = tmp_obj:name
del(tmp_obj)
custom_name = copytext(sanitize(input("Enter target name:", "Objective target", custom_name) as text|null),1,MAX_MESSAGE_LEN)
if (!custom_name) return
steal_target = custom_target
explanation_text = "Steal [custom_name]."
else
set_target(new_target)
return steal_target
datum/objective/steal/check_completion()
if(!steal_target || !owner.current) return 0
if(!isliving(owner.current)) return 0
var/list/all_items = owner.current.GetAllContents() //this should get things in cheesewheels, books, etc.
for(var/obj/I in all_items) //Check for items
if(istype(I, steal_target))
if(targetinfo && targetinfo.check_special_completion(I))//Returns 1 by default. Items with special checks will return 1 if the conditions are fulfilled.
return 1
else //If there's no targetinfo, then that means it was a custom objective. At this point, we know you have the item, so return 1.
return 1
if(targetinfo && I.type in targetinfo.altitems) //Ok, so you don't have the item. Do you have an alternative, at least?
if(targetinfo.check_special_completion(I))//Yeah, we do! Don't return 0 if we don't though - then you could fail if you had 1 item that didn't pass and got checked first!
return 1
return 0
proc/set_target(item_name)
target_name = item_name
steal_target = possible_items[target_name]
if (!steal_target )
steal_target = possible_items_special[target_name]
explanation_text = "Steal [target_name]."
return steal_target
var/global/list/possible_items_special = list()
datum/objective/steal/special //ninjas are so special they get their own subtype good for them
find_target()
return set_target(pick(possible_items))
datum/objective/steal/special/New()
..()
if(!possible_items_special.len)
init_subtypes(/datum/objective_item/special,possible_items)
init_subtypes(/datum/objective_item/stack,possible_items)
proc/select_target()
var/list/possible_items_all = possible_items+possible_items_special+"custom"
var/new_target = input("Select target:", "Objective target", steal_target) as null|anything in possible_items_all
if (!new_target) return
if (new_target == "custom")
var/obj/item/custom_target = input("Select type:","Type") as null|anything in typesof(/obj/item)
if (!custom_target) return
var/tmp_obj = new custom_target
var/custom_name = tmp_obj:name
del(tmp_obj)
custom_name = copytext(sanitize(input("Enter target name:", "Objective target", custom_name) as text|null),1,MAX_MESSAGE_LEN)
if (!custom_name) return
target_name = custom_name
steal_target = custom_target
explanation_text = "Steal [target_name]."
else
set_target(new_target)
return steal_target
check_completion()
if(!steal_target || !owner.current) return 0
if(!isliving(owner.current)) return 0
var/list/all_items = owner.current.GetAllContents() //this should get things in cheesewheels, books, etc.
switch(target_name)
if("28 moles of plasma (full tank)","10 diamonds","50 gold bars","25 refined uranium bars")
var/target_amount = text2num(target_name)//Non-numbers are ignored.
var/found_amount = 0.0//Always starts as zero.
for(var/obj/item/I in all_items) //Check for plasma tanks
if(istype(I, steal_target))
found_amount += (target_name=="28 moles of plasma (full tank)" ? (I:air_contents:toxins) : (I:amount))
return found_amount>=target_amount
if("a functional AI")
for(var/obj/item/device/aicard/C in all_items) //Check for ai card
for(var/mob/living/silicon/ai/M in C)
if(istype(M, /mob/living/silicon/ai) && M.stat != 2) //See if any AI's are alive inside that card.
return 1
if("the station blueprints")
for(var/obj/item/I in all_items) //the actual blueprints are good too!
if(istype(I, /obj/item/blueprints))
return 1
if(istype(I, /obj/item/weapon/photo))
var/obj/item/weapon/photo/P = I
if(P.blueprints) //if the blueprints are in frame
return 1
if("an unused sample of slime extract")
for(var/obj/item/slime_extract/E in all_items)
if(E.Uses > 0)
return 1
else
for(var/obj/I in all_items) //Check for items
if(istype(I, steal_target))
return 1
return 0
datum/objective/steal/special/find_target()
return set_target(pick(possible_items_special))
datum/objective/download
proc/gen_amount_goal()
target_amount = rand(10,20)
explanation_text = "Download [target_amount] research level\s."
return target_amount
dangerrating = 10
datum/objective/download/proc/gen_amount_goal()
target_amount = rand(10,20)
explanation_text = "Download [target_amount] research level\s."
return target_amount
check_completion()
if(!ishuman(owner.current))
return 0
if(!owner.current || owner.current.stat == 2)
return 0
if(!(istype(owner.current:wear_suit, /obj/item/clothing/suit/space/space_ninja)&&owner.current:wear_suit:s_initialized))
return 0
var/current_amount
var/obj/item/clothing/suit/space/space_ninja/S = owner.current:wear_suit
if(!S.stored_research.len)
return 0
else
for(var/datum/tech/current_data in S.stored_research)
if(current_data.level>1) current_amount+=(current_data.level-1)
if(current_amount<target_amount) return 0
return 1
datum/objective/download/check_completion()
if(!ishuman(owner.current))
return 0
if(!owner.current || owner.current.stat == 2)
return 0
if(!(istype(owner.current:wear_suit, /obj/item/clothing/suit/space/space_ninja)&&owner.current:wear_suit:s_initialized))
return 0
var/current_amount
var/obj/item/clothing/suit/space/space_ninja/S = owner.current:wear_suit
if(!S.stored_research.len)
return 0
else
for(var/datum/tech/current_data in S.stored_research)
if(current_data.level>1) current_amount+=(current_data.level-1)
if(current_amount<target_amount) return 0
return 1
datum/objective/capture
proc/gen_amount_goal()
dangerrating = 10
datum/objective/capture/proc/gen_amount_goal()
target_amount = rand(5,10)
explanation_text = "Accumulate [target_amount] capture point\s. It is better if they remain relatively unharmed."
return target_amount
check_completion()//Basically runs through all the mobs in the area to determine how much they are worth.
var/captured_amount = 0
var/area/centcom/holding/A = locate()
for(var/mob/living/carbon/human/M in A)//Humans.
if(M.stat==2)//Dead folks are worth less.
captured_amount+=0.5
continue
captured_amount+=1
for(var/mob/living/carbon/monkey/M in A)//Monkeys are almost worthless, you failure.
captured_amount+=0.1
for(var/mob/living/carbon/alien/larva/M in A)//Larva are important for research.
datum/objective/capture/check_completion()//Basically runs through all the mobs in the area to determine how much they are worth.
var/captured_amount = 0
var/area/centcom/holding/A = locate()
for(var/mob/living/carbon/human/M in A)//Humans.
if(M.stat==2)//Dead folks are worth less.
captured_amount+=0.5
continue
captured_amount+=1
for(var/mob/living/carbon/monkey/M in A)//Monkeys are almost worthless, you failure.
captured_amount+=0.1
for(var/mob/living/carbon/alien/larva/M in A)//Larva are important for research.
if(M.stat==2)
captured_amount+=0.5
continue
captured_amount+=1
for(var/mob/living/carbon/alien/humanoid/M in A)//Aliens are worth twice as much as humans.
if(istype(M, /mob/living/carbon/alien/humanoid/queen))//Queens are worth three times as much as humans.
if(M.stat==2)
captured_amount+=0.5
continue
captured_amount+=1.5
else
captured_amount+=3
continue
if(M.stat==2)
captured_amount+=1
for(var/mob/living/carbon/alien/humanoid/M in A)//Aliens are worth twice as much as humans.
if(istype(M, /mob/living/carbon/alien/humanoid/queen))//Queens are worth three times as much as humans.
if(M.stat==2)
captured_amount+=1.5
else
captured_amount+=3
continue
if(M.stat==2)
captured_amount+=1
continue
captured_amount+=2
if(captured_amount<target_amount)
return 0
return 1
continue
captured_amount+=2
if(captured_amount<target_amount)
return 0
return 1
datum/objective/absorb
proc/gen_amount_goal(var/lowbound = 4, var/highbound = 6)
target_amount = rand (lowbound,highbound)
if (ticker)
var/n_p = 1 //autowin
if (ticker.current_state == GAME_STATE_SETTING_UP)
for(var/mob/new_player/P in player_list)
if(P.client && P.ready && P.mind!=owner)
n_p ++
else if (ticker.current_state == GAME_STATE_PLAYING)
for(var/mob/living/carbon/human/P in player_list)
if(P.client && !(P.mind in ticker.mode.changelings) && P.mind!=owner)
n_p ++
target_amount = min(target_amount, n_p)
dangerrating = 10
explanation_text = "Extract [target_amount] compatible genome\s."
return target_amount
datum/objective/absorb/proc/gen_amount_goal(var/lowbound = 4, var/highbound = 6)
target_amount = rand (lowbound,highbound)
if (ticker)
var/n_p = 1 //autowin
if (ticker.current_state == GAME_STATE_SETTING_UP)
for(var/mob/new_player/P in player_list)
if(P.client && P.ready && P.mind!=owner)
n_p ++
else if (ticker.current_state == GAME_STATE_PLAYING)
for(var/mob/living/carbon/human/P in player_list)
if(P.client && !(P.mind in ticker.mode.changelings) && P.mind!=owner)
n_p ++
target_amount = min(target_amount, n_p)
check_completion()
if(owner && owner.changeling && owner.changeling.absorbed_dna && (owner.changeling.absorbedcount >= target_amount))
return 1
else
return 0
explanation_text = "Extract [target_amount] compatible genome\s."
return target_amount
/* Isn't suited for global objectives
/*---------CULTIST----------*/
eldergod
explanation_text = "Summon Nar-Sie via the use of an appropriate rune. It will only work if nine cultists stand on and around it."
check_completion()
if(eldergod) //global var, defined in rune4.dm
return 1
return 0
survivecult
var/num_cult
explanation_text = "Our knowledge must live on. Make sure at least 5 acolytes escape on the shuttle to spread their work on an another station."
check_completion()
if(emergency_shuttle.location<2)
return 0
var/cultists_escaped = 0
var/area/shuttle/escape/centcom/C = /area/shuttle/escape/centcom
for(var/turf/T in get_area_turfs(C.type))
for(var/mob/living/carbon/H in T)
if(iscultist(H))
cultists_escaped++
if(cultists_escaped>=5)
return 1
return 0
sacrifice //stolen from traitor target objective
proc/find_target() //I don't know how to make it work with the rune otherwise, so I'll do it via a global var, sacrifice_target, defined in rune15.dm
var/list/possible_targets = call(/datum/game_mode/cult/proc/get_unconvertables)()
if(possible_targets.len > 0)
sacrifice_target = pick(possible_targets)
if(sacrifice_target && sacrifice_target.current)
explanation_text = "Sacrifice [sacrifice_target.current.real_name], the [sacrifice_target.assigned_role]. You will need the sacrifice rune (Hell join blood) and three acolytes to do so."
else
explanation_text = "Free Objective"
return sacrifice_target
check_completion() //again, calling on a global list defined in rune15.dm
if(sacrifice_target.current in sacrificed)
return 1
else
return 0
/*-------ENDOF CULTIST------*/
*/
datum/objective/absorb/check_completion()
if(owner && owner.changeling && owner.changeling.absorbed_dna && (owner.changeling.absorbedcount >= target_amount))
return 1
else
return 0

View File

@@ -0,0 +1,190 @@
//Contains the target item datums for Steal objectives.
datum/objective_item
var/name = "A silly bike horn! Honk!"
var/targetitem = /obj/item/weapon/bikehorn //typepath of the objective item
var/difficulty = 9001 //vaguely how hard it is to do this objective
var/list/excludefromjob = list() //If you don't want a job to get a certain objective (no captain stealing his own medal, etcetc)
var/list/altitems = list() //Items which can serve as an alternative to the objective (darn you blueprints)
datum/proc/check_special_completion() //for objectives with special checks (is that slime extract unused? does that intellicard have an ai in it? etcetc)
return 1
datum/objective_item/steal/caplaser
name = "the captain's antique laser gun"
targetitem = /obj/item/weapon/gun/energy/laser/captain
difficulty = 5
excludefromjob = list("Captain")
datum/objective_item/steal/handtele
name = "a hand teleporter"
targetitem = /obj/item/weapon/hand_tele
difficulty = 5
excludefromjob = list("Captain")
datum/objective_item/steal/rcd
name = "a rapid-construction-device"
targetitem = /obj/item/weapon/rcd
difficulty = 3
datum/objective_item/steal/jetpack
name = "a jetpack"
targetitem = /obj/item/weapon/tank/jetpack
difficulty = 3
datum/objective_item/steal/magboots
name = "a pair of magboots"
targetitem = /obj/item/clothing/shoes/magboots
difficulty = 5
excludefromjob = list("Chief Engineer")
datum/objective_item/steal/corgimeat
name = "a piece of corgi meat"
targetitem = /obj/item/weapon/reagent_containers/food/snacks/meat/corgi
difficulty = 5
excludefromjob = list("Head of Personnel") //>hurting your little buddy ever
datum/objective_item/steal/capmedal
name = "the medal of captaincy"
targetitem = /obj/item/clothing/tie/medal/gold/captain
difficulty = 5
excludefromjob = list("Captain")
datum/objective_item/steal/hypo
name = "the hypospray"
targetitem = /obj/item/weapon/reagent_containers/hypospray
difficulty = 5
excludefromjob = list("Chief Medical Officer")
datum/objective_item/steal/nukedisc
name = "the nuclear authentication disk"
targetitem = /obj/item/weapon/disk/nuclear
difficulty = 5
excludefromjob = list("Captain")
datum/objective_item/steal/ablative
name = "an ablative armor vest"
targetitem = /obj/item/clothing/suit/armor/laserproof
difficulty = 3
excludefromjob = list("Head of Security", "Warden")
datum/objective_item/steal/reactive
name = "the reactive teleport armor"
targetitem = /obj/item/clothing/suit/armor/reactive
difficulty = 5
excludefromjob = list("Research Director")
//Items with special checks!
datum/objective_item/steal/plasma
name = "28 moles of plasma (full tank)"
targetitem = /obj/item/weapon/tank
difficulty = 3
excludefromjob = list("Chief Engineer","Research Director","Station Engineer","Scientist","Atmospheric Technician")
datum/objective_item/plasma/check_special_completion(var/obj/item/weapon/tank/T)
var/target_amount = text2num(name)
var/found_amount = 0
found_amount += T.air_contents.toxins
return found_amount>=target_amount
datum/objective_item/steal/functionalai
name = "a functional AI"
targetitem = /obj/item/device/aicard
difficulty = 20 //beyond the impossible
datum/objective_item/functionalai/check_special_completion(var/obj/item/device/aicard/C)
for(var/mob/living/silicon/ai/A in C)
if(istype(A, /mob/living/silicon/ai) && A.stat != 2) //See if any AI's are alive inside that card.
return 1
return 0
datum/objective_item/steal/blueprints
name = "the station blueprints"
targetitem = /obj/item/blueprints
difficulty = 10
excludefromjob = list("Chief Engineer")
altitems = list(/obj/item/weapon/photo)
datum/objective_item/blueprints/check_special_completion(var/obj/item/I)
if(istype(I, /obj/item/blueprints))
return 1
if(istype(I, /obj/item/weapon/photo))
var/obj/item/weapon/photo/P = I
if(P.blueprints) //if the blueprints are in frame
return 1
return 0
datum/objective_item/steal/slime
name = "an unused sample of slime extract"
targetitem = /obj/item/slime_extract
difficulty = 3
excludefromjob = list("Research Director","Scientist")
datum/objective_item/slime/check_special_completion(var/obj/item/slime_extract/E)
if(E.Uses > 0)
return 1
return 0
//Old ninja objectives.
datum/objective_item/special/pinpointer
name = "the captain's pinpointer"
targetitem = /obj/item/weapon/pinpointer
difficulty = 10
datum/objective_item/special/aegun
name = "an advanced energy gun"
targetitem = /obj/item/weapon/gun/energy/gun/nuclear
difficulty = 10
datum/objective_item/special/ddrill
name = "a diamond drill"
targetitem = /obj/item/weapon/pickaxe/diamonddrill
difficulty = 10
datum/objective_item/special/boh
name = "a bag of holding"
targetitem = /obj/item/weapon/storage/backpack/holding
difficulty = 10
datum/objective_item/special/hypercell
name = "a hyper-capacity cell"
targetitem = /obj/item/weapon/cell/hyper
difficulty = 5
datum/objective_item/special/laserpointer
name = "a laser pointer"
targetitem = /obj/item/device/laser_pointer
difficulty = 5
//Stack objectives get their own subtype
datum/objective_item/stack
name = "5 cardboards"
targetitem = /obj/item/stack/sheet/cardboard
difficulty = 9001
datum/objective_item/stack/check_special_completion(var/obj/item/stack/S)
var/target_amount = text2num(name)
var/found_amount = 0
if(istype(S, targetitem))
found_amount = S.amount
return found_amount>=target_amount
datum/objective_item/stack/diamond
name = "10 diamonds"
targetitem = /obj/item/stack/sheet/mineral/diamond
difficulty = 10
datum/objective_item/stack/gold
name = "50 gold bars"
targetitem = /obj/item/stack/sheet/mineral/gold
difficulty = 15
datum/objective_item/stack/uranium
name = "25 refined uranium bars"
targetitem = /obj/item/stack/sheet/mineral/uranium
difficulty = 10

View File

@@ -54,7 +54,7 @@ datum/hSB
"Spawn 50 Plasteel" = "hsbplasteel",
"Spawn 50 Reinforced Glass" = "hsbrglass",
"Spawn 50 Glass" = "hsbglass",
"Spawn Full Cable Coil" = "hsbspawn&path=[/obj/item/weapon/cable_coil]",
"Spawn Full Cable Coil" = "hsbspawn&path=[/obj/item/stack/cable_coil]",
"Spawn Hyper Capacity Power Cell" = "hsbspawn&path=[/obj/item/weapon/cell/hyper]",
"Spawn Inf. Capacity Power Cell" = "hsbspawn&path=[/obj/item/weapon/cell/infinite]",
"Spawn Rapid Construction Device" = "hsbrcd",

View File

@@ -13,6 +13,7 @@
throwforce = 10
w_class = 3
var/charged = 1
hitsound = 'sound/weapons/bladeslice.ogg'
/obj/effect/rend
name = "tear in the fabric of reality"

View File

@@ -292,7 +292,8 @@
H.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/red(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/device/pda/librarian(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/weapon/barcodescanner(H), slot_l_hand)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/bag/books(H), slot_l_hand)
H.equip_to_slot_or_del(new /obj/item/weapon/barcodescanner(H), slot_r_store)
H.equip_to_slot_or_del(new /obj/item/device/laser_pointer(H), slot_l_store)
return 1

View File

@@ -57,6 +57,12 @@
A.blob_act()
del(src)
/obj/machinery/sleeper/attack_animal(var/mob/living/simple_animal/M)//Stop putting hostile mobs in things guise
if(M.environment_smash)
visible_message("<span class='danger'>[M.name] smashes [src] apart!</span>")
del(src)
return
/obj/machinery/sleeper/attackby(obj/item/I, mob/user)
if(!state_open && !occupant)
if(default_deconstruction_screwdriver(user, "sleeper-o", "sleeper", I))
@@ -227,4 +233,4 @@
if(state_open)
icon_state = "sleeper-open"
else
icon_state = "sleeper"
icon_state = "sleeper"

View File

@@ -769,7 +769,7 @@ table tr:first-child th:first-child { border: none;}
if(istype(W, /obj/item/weapon/wirecutters) && wires.wires_status == (2 ** wires.wire_count) - 1) //this checks for all wires to be cut, disregard the ammount of wires, binary fuckery with the wires_status
playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1)
user << "You cut the final wires."
var/obj/item/weapon/cable_coil/cable = new /obj/item/weapon/cable_coil( src.loc )
var/obj/item/stack/cable_coil/cable = new /obj/item/stack/cable_coil( src.loc )
cable.amount = 5
buildstage = 1
update_icon()
@@ -806,8 +806,8 @@ table tr:first-child th:first-child { border: none;}
update_icon()
return
if(istype(W, /obj/item/weapon/cable_coil))
var/obj/item/weapon/cable_coil/cable = W
if(istype(W, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/cable = W
if(cable.amount < 5)
user << "You need more cable!"
return
@@ -992,14 +992,14 @@ FIRE ALARM
else if (istype(W, /obj/item/weapon/wirecutters))
buildstage = 1
playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1)
var/obj/item/weapon/cable_coil/coil = new /obj/item/weapon/cable_coil()
var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil()
coil.amount = 5
coil.loc = user.loc
user << "<span class='notice'>You cut the wires from \the [src]</span>"
update_icon()
if(1)
if(istype(W, /obj/item/weapon/cable_coil))
var/obj/item/weapon/cable_coil/coil = W
if(istype(W, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/coil = W
if(coil.amount < 5)
user << "<span class='warning'>You need more cable for this!</span>"
return

View File

@@ -35,7 +35,7 @@ obj/machinery/air_sensor
var/datum/gas_mixture/air_sample = return_air()
if(output&1)
signal.data["pressure"] = num2text(round(air_sample.return_pressure(),0.1),)
signal.data["pressure"] = num2text(round(air_sample.return_pressure(),0.1))
if(output&2)
signal.data["temperature"] = round(air_sample.temperature,0.1)
@@ -125,6 +125,8 @@ obj/machinery/computer/general_air_control
if(data)
if(data["pressure"])
sensor_part += " <B>Pressure:</B> [data["pressure"]] kPa<BR>"
else
sensor_part += " <B>Pressure:</B> No pressure detected<BR>"
if(data["temperature"])
sensor_part += " <B>Temperature:</B> [data["temperature"]] K<BR>"
if(data["oxygen"]||data["toxins"]||data["nitrogen"]||data["carbon_dioxide"])

View File

@@ -275,7 +275,7 @@ var/global/list/autolathe_recipes_hidden = list( \
spawn(16/coeff)
use_power(power)
spawn(16/coeff)
if(template.type == /obj/item/stack)
if(istype(template, /obj/item/stack))
src.m_amount -= template.m_amt*multiplier
src.g_amount -= template.g_amt*multiplier
var/obj/new_item = new template.type(T)

View File

@@ -195,7 +195,7 @@ Auto Patrol: []"},
user << "<span class='notice'>Access denied.</span>"
else
..()
if (!istype(W, /obj/item/weapon/screwdriver) && (!src.target))
if (!istype(W, /obj/item/weapon/screwdriver) && !istype(W, /obj/item/weapon/weldingtool) && (!src.target)) // Added check for welding tool to fix #2432. Welding tool behavior is handled in superclass.
if(hasvar(W,"force") && W.force)//If force is defined and non-zero
src.target = user
if(lasercolor)//To make up for the fact that lasertag bots don't hunt
@@ -930,14 +930,26 @@ Auto Patrol: []"},
name = "shielded frame assembly"
user << "<span class='notice'>You welded the vest to [src].</span>"
if(4)
if( istype(W, /obj/item/clothing/head/helmet) )
user.drop_item()
del(W)
build_step++
user << "<span class='notice'>You add the helmet to [src].</span>"
name = "covered and shielded frame assembly"
item_state = "[lasercolor]ed209_hat"
icon_state = "[lasercolor]ed209_hat"
switch(lasercolor)
if("b")
if( !istype(W, /obj/item/clothing/head/helmet/bluetaghelm) )
return
if("r")
if( !istype(W, /obj/item/clothing/head/helmet/redtaghelm) )
return
if("")
if( !istype(W, /obj/item/clothing/head/helmet) )
return
user.drop_item()
del(W)
build_step++
user << "<span class='notice'>You add the helmet to [src].</span>"
name = "covered and shielded frame assembly"
item_state = "[lasercolor]ed209_hat"
icon_state = "[lasercolor]ed209_hat"
if(5)
if( isprox(W) )
@@ -950,8 +962,8 @@ Auto Patrol: []"},
icon_state = "[lasercolor]ed209_prox"
if(6)
if( istype(W, /obj/item/weapon/cable_coil) )
var/obj/item/weapon/cable_coil/coil = W
if( istype(W, /obj/item/stack/cable_coil) )
var/obj/item/stack/cable_coil/coil = W
var/turf/T = get_turf(user)
user << "<span class='notice'>You start to wire [src]...</span>"
sleep(40)

View File

@@ -135,6 +135,9 @@ var/global/mulebot_count = 0
)
else
user << "\blue [src] does not need a repair!"
else if(istype(I, /obj/item/device/multitool) || istype(I, /obj/item/weapon/wirecutters))
if(open)
attack_hand(usr)
else if(load && ismob(load)) // chance to knock off rider
if(prob(1+I.force * 2))
unload(0)
@@ -893,7 +896,7 @@ var/global/mulebot_count = 0
new /obj/item/device/assembly/prox_sensor(Tsec)
new /obj/item/stack/rods(Tsec)
new /obj/item/stack/rods(Tsec)
new /obj/item/weapon/cable_coil/cut(Tsec)
new /obj/item/stack/cable_coil/cut(Tsec)
if (cell)
cell.loc = Tsec
cell.update_icon()

View File

@@ -171,7 +171,7 @@ Auto Patrol: []"},
user << "\red Access denied."
else
..()
if(!istype(W, /obj/item/weapon/screwdriver) && (W.force) && (!src.target))
if(!istype(W, /obj/item/weapon/screwdriver) && !istype(W, /obj/item/weapon/weldingtool) && (W.force) && (!src.target)) // Added check for welding tool to fix #2432. Welding tool behavior is handled in superclass.
src.target = user
src.mode = SECBOT_HUNT
@@ -219,7 +219,7 @@ Auto Patrol: []"},
walk_to(src,0)
if(target) // make sure target exists
if(get_dist(src, src.target) <= 1 && isturf(src.target.loc)) // if right next to perp
if(src.Adjacent(target) && isturf(src.target.loc)) // if right next to perp
playsound(src.loc, 'sound/weapons/Egloves.ogg', 50, 1, -1)
src.icon_state = "secbot-c"
spawn(2)

View File

@@ -56,8 +56,8 @@
if(2)
// State 2
if(istype(W, /obj/item/weapon/cable_coil))
var/obj/item/weapon/cable_coil/C = W
if(istype(W, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/C = W
if(C.use(2))
user << "You add wires to the assembly."
state = 3
@@ -110,7 +110,7 @@
else if(istype(W, /obj/item/weapon/wirecutters))
new/obj/item/weapon/cable_coil(get_turf(src), 2)
new/obj/item/stack/cable_coil(get_turf(src), 2)
playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1)
user << "You cut the wires from the circuits."
state = 2

View File

@@ -32,8 +32,8 @@
component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
component_parts += new /obj/item/weapon/stock_parts/manipulator(null)
component_parts += new /obj/item/weapon/stock_parts/console_screen(null)
component_parts += new /obj/item/weapon/cable_coil(null, 1)
component_parts += new /obj/item/weapon/cable_coil(null, 1)
component_parts += new /obj/item/stack/cable_coil(null, 1)
component_parts += new /obj/item/stack/cable_coil(null, 1)
RefreshParts()
/obj/machinery/clonepod/RefreshParts()

View File

@@ -261,7 +261,7 @@
T.temperature = 5000
T.hotspot_expose(50000,50000,1)
if(L.name=="Holocarp Spawn")
new /mob/living/simple_animal/hostile/carp(L.loc)
new /mob/living/simple_animal/hostile/carp/holocarp(L.loc)
/obj/machinery/computer/HolodeckControl/proc/emergencyShutdown()
@@ -399,13 +399,13 @@
force = 30
icon_state = "sword[item_color]"
w_class = 4
playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
playsound(user, 'sound/weapons/saberon.ogg', 20, 1)
user << "\blue [src] is now active."
else
force = 3
icon_state = "sword0"
w_class = 2
playsound(user, 'sound/weapons/saberoff.ogg', 50, 1)
playsound(user, 'sound/weapons/saberoff.ogg', 20, 1)
user << "\blue [src] can now be concealed."
add_fingerprint(user)
return

View File

@@ -62,7 +62,7 @@
user << "<span class='notice'>You unfasten the circuit board.</span>"
state = 1
icon_state = "1"
if(istype(P, /obj/item/weapon/cable_coil))
if(istype(P, /obj/item/stack/cable_coil))
if(P:amount >= 5)
playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1)
if(do_after(user, 20))
@@ -80,7 +80,7 @@
user << "<span class='notice'>You remove the cables.</span>"
state = 2
icon_state = "2"
var/obj/item/weapon/cable_coil/A = new /obj/item/weapon/cable_coil( loc )
var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( loc )
A.amount = 5
if(istype(P, /obj/item/stack/sheet/rglass))

View File

@@ -1,125 +1,135 @@
/obj/machinery/computer/aifixer
name = "\improper AI system integrity restorer"
icon = 'icons/obj/computer.dmi'
icon_state = "ai-fixer"
req_access = list(access_captain, access_robotics, access_heads)
var/mob/living/silicon/ai/occupier = null
var/active = 0
circuit = /obj/item/weapon/circuitboard/aifixer
/obj/machinery/computer/aifixer/New()
src.overlays += image('icons/obj/computer.dmi', "ai-fixer-empty")
..()
/obj/machinery/computer/aifixer/attackby(I as obj, user as mob)
if(istype(I, /obj/item/device/aicard))
var/obj/item/device/aicard/AIcard = I
if(stat & (NOPOWER|BROKEN))
user << "This terminal isn't functioning right now, get it working!"
return
AIcard.transfer_ai("AIFIXER","AICARD",src,user)
else
..()
return
/obj/machinery/computer/aifixer/attack_hand(var/mob/user as mob)
if(..())
return
user.set_machine(src)
var/dat = ""
if (src.occupier)
var/laws
dat += "<h3>Stored AI: [src.occupier.name]</h3>"
dat += "<b>System integrity:</b> [(src.occupier.health+100)/2]%<br>"
if (src.occupier.laws.zeroth)
laws += "<b>0:</b> [src.occupier.laws.zeroth]<BR>"
var/number = 1
for (var/index = 1, index <= src.occupier.laws.inherent.len, index++)
var/law = src.occupier.laws.inherent[index]
if (length(law) > 0)
laws += "<b>[number]:</b> [law]<BR>"
number++
for (var/index = 1, index <= src.occupier.laws.supplied.len, index++)
var/law = src.occupier.laws.supplied[index]
if (length(law) > 0)
laws += "<b>[number]:</b> [law]<BR>"
number++
dat += "<b>Laws:</b><br>[laws]<br>"
if (src.occupier.stat == 2)
dat += "<span class='bad'>AI non-functional</span>"
else
dat += "<span class='good'>AI functional</span>"
if (!src.active)
dat += {"<br><br><A href='byond://?src=\ref[src];fix=1'>Begin Reconstruction</A>"}
else
dat += "<br><br>Reconstruction in process, please wait.<br>"
dat += {"<br><A href='?src=\ref[user];mach_close=computer'>Close</A>"}
//user << browse(dat, "window=computer;size=400x500")
//onclose(user, "computer")
var/datum/browser/popup = new(user, "computer", "AI System Integrity Restorer", 400, 500)
popup.set_content(dat)
popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
popup.open()
return
/obj/machinery/computer/aifixer/process()
if(..())
src.updateDialog()
return
/obj/machinery/computer/aifixer/Topic(href, href_list)
if(..())
return
if (href_list["fix"])
src.active = 1
src.overlays += image('icons/obj/computer.dmi', "ai-fixer-on")
while (src.occupier.health < 100)
src.occupier.adjustOxyLoss(-1)
src.occupier.adjustFireLoss(-1)
src.occupier.adjustToxLoss(-1)
src.occupier.adjustBruteLoss(-1)
src.occupier.updatehealth()
if (src.occupier.health >= 0 && src.occupier.stat == 2)
src.occupier.stat = 0
src.occupier.lying = 0
dead_mob_list -= src.occupier
living_mob_list += src.occupier
src.overlays -= image('icons/obj/computer.dmi', "ai-fixer-404")
src.overlays += image('icons/obj/computer.dmi', "ai-fixer-full")
src.updateUsrDialog()
sleep(10)
src.active = 0
src.overlays -= image('icons/obj/computer.dmi', "ai-fixer-on")
src.add_fingerprint(usr)
src.updateUsrDialog()
return
/obj/machinery/computer/aifixer/update_icon()
..()
// Broken / Unpowered
if((stat & BROKEN) || (stat & NOPOWER))
overlays.Cut()
// Working / Powered
else
if (occupier)
switch (occupier.stat)
if (0)
overlays += image('icons/obj/computer.dmi', "ai-fixer-full")
if (2)
overlays += image('icons/obj/computer.dmi', "ai-fixer-404")
else
overlays += image('icons/obj/computer.dmi', "ai-fixer-empty")
/obj/machinery/computer/aifixer
name = "\improper AI system integrity restorer"
icon = 'icons/obj/computer.dmi'
icon_state = "ai-fixer"
req_access = list(access_captain, access_robotics, access_heads)
var/mob/living/silicon/ai/occupant = null
var/active = 0
circuit = /obj/item/weapon/circuitboard/aifixer
/obj/machinery/computer/aifixer/New()
src.overlays += image('icons/obj/computer.dmi', "ai-fixer-empty")
..()
/obj/machinery/computer/aifixer/attackby(I as obj, user as mob)
if(occupant && istype(I, /obj/item/weapon/screwdriver))
if(stat & (NOPOWER|BROKEN))
user << "<span class='warning'>The screws on [name]'s screen won't budge.</span>"
else
user << "<span class='warning'>The screws on [name]'s screen won't budge and it emits a warning beep.</span>"
return
if(istype(I, /obj/item/device/aicard))
var/obj/item/device/aicard/AIcard = I
if(stat & (NOPOWER|BROKEN))
if(occupant)
AIcard.transfer_ai("AIFIXER","AICARD",src,user)
overlays.Cut()
return
user << "This terminal isn't functioning right now, get it working!"
return
AIcard.transfer_ai("AIFIXER","AICARD",src,user)
else
..()
return
/obj/machinery/computer/aifixer/attack_hand(var/mob/user as mob)
if(..())
return
user.set_machine(src)
var/dat = ""
if (src.occupant)
var/laws
dat += "<h3>Stored AI: [src.occupant.name]</h3>"
dat += "<b>System integrity:</b> [(src.occupant.health+100)/2]%<br>"
if (src.occupant.laws.zeroth)
laws += "<b>0:</b> [src.occupant.laws.zeroth]<BR>"
var/number = 1
for (var/index = 1, index <= src.occupant.laws.inherent.len, index++)
var/law = src.occupant.laws.inherent[index]
if (length(law) > 0)
laws += "<b>[number]:</b> [law]<BR>"
number++
for (var/index = 1, index <= src.occupant.laws.supplied.len, index++)
var/law = src.occupant.laws.supplied[index]
if (length(law) > 0)
laws += "<b>[number]:</b> [law]<BR>"
number++
dat += "<b>Laws:</b><br>[laws]<br>"
if (src.occupant.stat == 2)
dat += "<span class='bad'>AI non-functional</span>"
else
dat += "<span class='good'>AI functional</span>"
if (!src.active)
dat += {"<br><br><A href='byond://?src=\ref[src];fix=1'>Begin Reconstruction</A>"}
else
dat += "<br><br>Reconstruction in process, please wait.<br>"
dat += {"<br><A href='?src=\ref[user];mach_close=computer'>Close</A>"}
//user << browse(dat, "window=computer;size=400x500")
//onclose(user, "computer")
var/datum/browser/popup = new(user, "computer", "AI System Integrity Restorer", 400, 500)
popup.set_content(dat)
popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
popup.open()
return
/obj/machinery/computer/aifixer/process()
if(..())
src.updateDialog()
return
/obj/machinery/computer/aifixer/Topic(href, href_list)
if(..())
return
if (href_list["fix"])
src.active = 1
src.overlays += image('icons/obj/computer.dmi', "ai-fixer-on")
while (src.occupant.health < 100)
src.occupant.adjustOxyLoss(-1)
src.occupant.adjustFireLoss(-1)
src.occupant.adjustToxLoss(-1)
src.occupant.adjustBruteLoss(-1)
src.occupant.updatehealth()
if (src.occupant.health >= 0 && src.occupant.stat == 2)
src.occupant.stat = 0
src.occupant.lying = 0
dead_mob_list -= src.occupant
living_mob_list += src.occupant
src.overlays -= image('icons/obj/computer.dmi', "ai-fixer-404")
src.overlays += image('icons/obj/computer.dmi', "ai-fixer-full")
src.updateUsrDialog()
sleep(10)
src.active = 0
src.overlays -= image('icons/obj/computer.dmi', "ai-fixer-on")
src.add_fingerprint(usr)
src.updateUsrDialog()
return
/obj/machinery/computer/aifixer/update_icon()
..()
// Broken / Unpowered
if((stat & BROKEN) || (stat & NOPOWER))
overlays.Cut()
// Working / Powered
else
if (occupant)
switch (occupant.stat)
if (0)
overlays += image('icons/obj/computer.dmi', "ai-fixer-full")
if (2)
overlays += image('icons/obj/computer.dmi', "ai-fixer-404")
else
overlays += image('icons/obj/computer.dmi', "ai-fixer-empty")

View File

@@ -23,7 +23,7 @@
/obj/item/toy/prize/mauler = 1,
/obj/item/toy/prize/odysseus = 1,
/obj/item/toy/prize/phazon = 1,
/obj/item/toy/cards = 2,
/obj/item/toy/cards/deck = 2,
/obj/item/toy/nuke = 2
)

View File

@@ -330,8 +330,8 @@
user << "<span class='notice'>You unfasten the circuit board.</span>"
src.state = 1
src.icon_state = "1"
if(istype(P, /obj/item/weapon/cable_coil))
var/obj/item/weapon/cable_coil/C = P
if(istype(P, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/C = P
if(C.amount >= 5)
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
if(do_after(user, 20))
@@ -347,7 +347,7 @@
user << "<span class='notice'>You remove the cables.</span>"
src.state = 2
src.icon_state = "2"
var/obj/item/weapon/cable_coil/A = new (loc)
var/obj/item/stack/cable_coil/A = new (loc)
A.amount = 5
A.add_fingerprint(user)

View File

@@ -9,7 +9,7 @@
var/mapping = 0//For the overview file, interesting bit of code.
check_eye(var/mob/user as mob)
if ((get_dist(user, src) > 1 || !( user.canmove ) || user.blinded || !( current ) || !( current.status )) && (!istype(user, /mob/living/silicon)))
if ((get_dist(user, src) > 1 || user.blinded || !( current ) || !( current.status )) && (!istype(user, /mob/living/silicon)))
return null
var/list/viewing = viewers(src)
if((istype(user,/mob/living/silicon/robot)) && (!(viewing.Find(user))))
@@ -20,67 +20,68 @@
attack_hand(var/mob/user as mob)
if (src.z > 6)
user << "\red <b>Unable to establish a connection</b>: \black You're too far away from the station!"
return
if(!stat)
if (src.z > 6)
user << "\red <b>Unable to establish a connection</b>: \black You're too far away from the station!"
return
if (!network)
world.log << "A computer lacks a network at [x],[y],[z]."
return
if (!(istype(network,/list)))
world.log << "The computer at [x],[y],[z] has a network that is not a list!"
return
if (!network)
world.log << "A computer lacks a network at [x],[y],[z]."
return
if (!(istype(network,/list)))
world.log << "The computer at [x],[y],[z] has a network that is not a list!"
return
if(..())
return
if(..())
return
var/list/L = list()
for (var/obj/machinery/camera/C in cameranet.cameras)
L.Add(C)
var/list/L = list()
for (var/obj/machinery/camera/C in cameranet.cameras)
L.Add(C)
camera_sort(L)
camera_sort(L)
var/list/D = list()
D["Cancel"] = "Cancel"
for(var/obj/machinery/camera/C in L)
if(!C.network)
world.log << "[C.c_tag] has no camera network."
continue
if(!(istype(C.network,/list)))
world.log << "[C.c_tag]'s camera network is not a list!"
continue
var/list/tempnetwork = C.network&network
if(tempnetwork.len)
D[text("[][]", C.c_tag, (C.status ? null : " (Deactivated)"))] = C
var/list/D = list()
D["Cancel"] = "Cancel"
for(var/obj/machinery/camera/C in L)
if(!C.network)
world.log << "[C.c_tag] has no camera network."
continue
if(!(istype(C.network,/list)))
world.log << "[C.c_tag]'s camera network is not a list!"
continue
var/list/tempnetwork = C.network&network
if(tempnetwork.len)
D[text("[][]", C.c_tag, (C.status ? null : " (Deactivated)"))] = C
var/t = input(user, "Which camera should you change to?") as null|anything in D
if(!t)
user.unset_machine()
return 0
var/obj/machinery/camera/C = D[t]
if(t == "Cancel")
user.unset_machine()
return 0
if(C)
if ((get_dist(user, src) > 1 || user.machine != src || user.blinded || !( user.canmove ) || !( C.can_use() )) && (!istype(user, /mob/living/silicon/ai)))
if(!C.can_use() && !isAI(user))
src.current = null
var/t = input(user, "Which camera should you change to?") as null|anything in D
if(!t)
user.unset_machine()
return 0
else
if(isAI(user))
var/mob/living/silicon/ai/A = user
A.eyeobj.setLoc(get_turf(C))
A.client.eye = A.eyeobj
else
src.current = C
use_power(50)
spawn(5)
attack_hand(user)
return
var/obj/machinery/camera/C = D[t]
if(t == "Cancel")
user.unset_machine()
return 0
if(C)
if ((get_dist(user, src) > 1 || user.machine != src || user.blinded || !( C.can_use() )) && (!istype(user, /mob/living/silicon/ai)))
if(!C.can_use() && !isAI(user))
src.current = null
return 0
else
if(isAI(user))
var/mob/living/silicon/ai/A = user
A.eyeobj.setLoc(get_turf(C))
A.client.eye = A.eyeobj
else
src.current = C
use_power(50)
spawn(5)
attack_hand(user)
return
@@ -101,8 +102,8 @@
/obj/machinery/computer/security/telescreen/entertainment
name = "entertainment monitor"
desc = "Damn, they better have /tg/thechannel on these things."
icon = 'icons/obj/status_display.dmi'
desc = "Damn, they better have the /tg/ channel on these things."
icon = 'icons/obj/stationobjs.dmi'
icon_state = "entertainment"
network = list("thunder")
density = 0

View File

@@ -53,8 +53,8 @@
return
switch(state)
if(1)
if(istype(P, /obj/item/weapon/cable_coil))
var/obj/item/weapon/cable_coil/C = P
if(istype(P, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/C = P
if(C.amount >= 5)
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
user << "<span class='notice'>You start to add cables to the frame.</span>"
@@ -92,7 +92,7 @@
user << "<span class='notice'>You remove the cables.</span>"
state = 1
icon_state = "box_0"
var/obj/item/weapon/cable_coil/A = new /obj/item/weapon/cable_coil( src.loc )
var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( src.loc )
A.amount = 5
if(3)
@@ -136,9 +136,9 @@
for(var/I in req_components)
if(istype(P, text2path(I)) && (req_components[I] > 0))
success=1
if(istype(P, /obj/item/weapon/cable_coil))
var/obj/item/weapon/cable_coil/CP = P
var/obj/item/weapon/cable_coil/CC = new /obj/item/weapon/cable_coil(src, 1, CP.item_color)
if(istype(P, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/CP = P
var/obj/item/stack/cable_coil/CC = new /obj/item/stack/cable_coil(src, 1, CP.item_color)
if(CP.use(1))
components += CC
req_components[I]--
@@ -386,7 +386,7 @@ to destroy them and players will be able to make replacements.
req_components = list(
"/obj/item/weapon/stock_parts/matter_bin" = 1,
"/obj/item/weapon/stock_parts/micro_laser" = 1,
"/obj/item/weapon/cable_coil" = 2,
"/obj/item/stack/cable_coil" = 2,
"/obj/item/weapon/stock_parts/capacitor" = 1)
/obj/item/weapon/circuitboard/pacman/super
@@ -405,7 +405,7 @@ obj/item/weapon/circuitboard/rdserver
board_type = "machine"
origin_tech = "programming=3"
req_components = list(
"/obj/item/weapon/cable_coil" = 2,
"/obj/item/stack/cable_coil" = 2,
"/obj/item/weapon/stock_parts/scanning_module" = 1)
/obj/item/weapon/circuitboard/mechfab
@@ -425,7 +425,7 @@ obj/item/weapon/circuitboard/rdserver
board_type = "machine"
origin_tech = "programming=3;biotech=3"
req_components = list(
"/obj/item/weapon/cable_coil" = 2,
"/obj/item/stack/cable_coil" = 2,
"/obj/item/weapon/stock_parts/scanning_module" = 2,
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/weapon/stock_parts/console_screen" = 1)
@@ -440,7 +440,7 @@ obj/item/weapon/circuitboard/rdserver
"/obj/item/weapon/stock_parts/manipulator" = 1,
"/obj/item/weapon/stock_parts/micro_laser" = 1,
"/obj/item/weapon/stock_parts/console_screen" = 1,
"/obj/item/weapon/cable_coil" = 2,)
"/obj/item/stack/cable_coil" = 2,)
/obj/item/weapon/circuitboard/cyborgrecharger
name = "circuit board (Cyborg Recharger)"
@@ -472,7 +472,7 @@ obj/item/weapon/circuitboard/rdserver
origin_tech = "programming=2;engineering=2"
req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/weapon/cable_coil" = 2,
"/obj/item/stack/cable_coil" = 2,
"/obj/item/weapon/stock_parts/subspace/filter" = 2)
/obj/item/weapon/circuitboard/telecomms/relay
@@ -482,7 +482,7 @@ obj/item/weapon/circuitboard/rdserver
origin_tech = "programming=2;engineering=2;bluespace=2"
req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/weapon/cable_coil" = 2,
"/obj/item/stack/cable_coil" = 2,
"/obj/item/weapon/stock_parts/subspace/filter" = 2)
/obj/item/weapon/circuitboard/telecomms/bus
@@ -492,7 +492,7 @@ obj/item/weapon/circuitboard/rdserver
origin_tech = "programming=2;engineering=2"
req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/weapon/cable_coil" = 1,
"/obj/item/stack/cable_coil" = 1,
"/obj/item/weapon/stock_parts/subspace/filter" = 1)
/obj/item/weapon/circuitboard/telecomms/processor
@@ -505,7 +505,7 @@ obj/item/weapon/circuitboard/rdserver
"/obj/item/weapon/stock_parts/subspace/filter" = 1,
"/obj/item/weapon/stock_parts/subspace/treatment" = 2,
"/obj/item/weapon/stock_parts/subspace/analyzer" = 1,
"/obj/item/weapon/cable_coil" = 2,
"/obj/item/stack/cable_coil" = 2,
"/obj/item/weapon/stock_parts/subspace/amplifier" = 1)
/obj/item/weapon/circuitboard/telecomms/server
@@ -515,7 +515,7 @@ obj/item/weapon/circuitboard/rdserver
origin_tech = "programming=2;engineering=2"
req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/weapon/cable_coil" = 1,
"/obj/item/stack/cable_coil" = 1,
"/obj/item/weapon/stock_parts/subspace/filter" = 1)
/obj/item/weapon/circuitboard/telecomms/broadcaster
@@ -525,7 +525,7 @@ obj/item/weapon/circuitboard/rdserver
origin_tech = "programming=2;engineering=2;bluespace=1"
req_components = list(
"/obj/item/weapon/stock_parts/manipulator" = 2,
"/obj/item/weapon/cable_coil" = 1,
"/obj/item/stack/cable_coil" = 1,
"/obj/item/weapon/stock_parts/subspace/filter" = 1,
"/obj/item/weapon/stock_parts/subspace/crystal" = 1,
"/obj/item/weapon/stock_parts/micro_laser/high" = 2)

View File

@@ -122,7 +122,7 @@
src.health = max(0, src.health - damage)
if (src.health <= 0)
new /obj/item/weapon/shard(src.loc)
var/obj/item/weapon/cable_coil/CC = new /obj/item/weapon/cable_coil(src.loc)
var/obj/item/stack/cable_coil/CC = new /obj/item/stack/cable_coil(src.loc)
CC.amount = 2
src.density = 0
del(src)
@@ -137,7 +137,7 @@
/obj/machinery/door/window/hitby(AM as mob|obj)
..()
visible_message("\red <B>The glass door was hit by [AM].</B>")
visible_message("<span class='danger'>\The [src] was hit by \the [AM].</span>")
var/tforce = 0
if(ismob(AM))
tforce = 40
@@ -161,7 +161,7 @@
visible_message("\red <B>[user] smashes against the [src.name].</B>")
if (src.health <= 0)
new /obj/item/weapon/shard(src.loc)
var/obj/item/weapon/cable_coil/CC = new /obj/item/weapon/cable_coil(src.loc)
var/obj/item/stack/cable_coil/CC = new /obj/item/stack/cable_coil(src.loc)
CC.amount = 2
src.density = 0
del(src)
@@ -199,10 +199,10 @@
if(I.damtype == BRUTE || I.damtype == BURN)
src.health = max(0, src.health - aforce)
playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1)
visible_message("\red <B>[src] was hit by [I].</B>")
visible_message("<span class='danger'>\The [src] has been hit by [user] with [I].</span>")
if (src.health <= 0)
new /obj/item/weapon/shard(src.loc)
var/obj/item/weapon/cable_coil/CC = new /obj/item/weapon/cable_coil(src.loc)
var/obj/item/stack/cable_coil/CC = new /obj/item/stack/cable_coil(src.loc)
CC.amount = 2
src.density = 0
del(src)

View File

@@ -268,6 +268,10 @@ Class Procs:
user.set_machine(src)
return 0
/obj/machinery/CheckParts()
RefreshParts()
return
/obj/machinery/proc/RefreshParts() //Placeholder proc for machines that are built using frames.
return
@@ -317,4 +321,4 @@ Class Procs:
anchored = !anchored
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
return 1
return 0
return 0

File diff suppressed because it is too large Load Diff

View File

@@ -60,12 +60,15 @@
cover = new /obj/machinery/porta_turret_cover(loc)
cover.Parent_Turret = src
setup()
/obj/machinery/porta_turret/proc/setup()
if(!installation) //if for some reason the turret has no gun (ie, admin spawned) it resorts to basic taser shots
projectile = /obj/item/projectile/energy/electrode //holder for the projectile, here it is being set
eprojectile = /obj/item/projectile/beam //holder for the projectile when emagged, if it is different
sound = 1
else
sound = null
var/obj/item/weapon/gun/energy/E=new installation //All energy-based weapons are applicable
var/obj/item/ammo_casing/shottype = E.ammo_type[1]
projectile = shottype.projectile_type
@@ -73,7 +76,7 @@
switch(E.type)
if(/obj/item/weapon/gun/energy/laser/bluetag)
eprojectile = /obj/item/projectile/omnitag //This bolt will stun ERRYONE with a vest
eprojectile = /obj/item/projectile/bluetag
lasercolor = "b"
req_access = list(access_maint_tunnels, access_theatre)
check_records = 0
@@ -84,7 +87,7 @@
shot_delay = 30
if(/obj/item/weapon/gun/energy/laser/redtag)
eprojectile = /obj/item/projectile/omnitag
eprojectile = /obj/item/projectile/redtag
lasercolor = "r"
req_access = list(access_maint_tunnels, access_theatre)
check_records = 0
@@ -768,6 +771,7 @@
Turret.name = finish_name
Turret.installation = installation
Turret.gun_charge = gun_charge
Turret.setup()
// Turret.cover=new/obj/machinery/porta_turret_cover(loc)
// Turret.cover.Parent_Turret=Turret
@@ -998,4 +1002,4 @@ Status: []<BR>"},
New()
installation = new/obj/item/weapon/gun/energy/laser(loc)
..()
..()

View File

@@ -80,7 +80,7 @@
if(istype(charging, /obj/item/weapon/melee/baton))
var/obj/item/weapon/melee/baton/B = charging
if(B.bcell)
if(B.bcell.give(175))
if(B.bcell.give(1500)) //Because otherwise it takes two minutes to fully charge due to 15k cells. - Neerti
icon_state = "recharger1"
use_power(200)
else

View File

@@ -139,12 +139,12 @@
user << "You remove the cables."
icon_state = "borgdecon3"
construct_op ++
var/obj/item/weapon/cable_coil/A = new /obj/item/weapon/cable_coil( user.loc )
var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( user.loc )
A.amount = 5
stat |= BROKEN // the machine's been borked!
if(3)
if(istype(P, /obj/item/weapon/cable_coil))
var/obj/item/weapon/cable_coil/A = P
if(istype(P, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/A = P
if(A.amount >= 5)
user << "You insert the cables."
A.amount -= 5
@@ -177,8 +177,8 @@
newpath = text2path(I)
var/obj/item/s = new newpath
s.loc = user.loc
if(istype(P, /obj/item/weapon/cable_coil))
var/obj/item/weapon/cable_coil/A = P
if(istype(P, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/A = P
A.amount = 1
// Drop a circuit board too
@@ -266,7 +266,7 @@
var/coeff = recharge_speed / 200
for(var/obj/O in um)
// Engineering
if(istype(O,/obj/item/stack/sheet/metal) || istype(O,/obj/item/stack/sheet/rglass) || istype(O,/obj/item/stack/rods) || istype(O,/obj/item/weapon/cable_coil)|| istype(O,/obj/item/stack/tile/plasteel))
if(istype(O,/obj/item/stack/sheet/metal) || istype(O,/obj/item/stack/sheet/rglass) || istype(O,/obj/item/stack/rods) || istype(O,/obj/item/stack/cable_coil)|| istype(O,/obj/item/stack/tile/plasteel))
if(O:amount < 50)
O:amount += coeff
// Security

View File

@@ -265,8 +265,8 @@
user << "\blue You open the panel and expose the wiring."
is_open = 1
else if(istype(W, /obj/item/weapon/cable_coil) && malfunction && is_open)
var/obj/item/weapon/cable_coil/coil = W
else if(istype(W, /obj/item/stack/cable_coil) && malfunction && is_open)
var/obj/item/stack/cable_coil/coil = W
user << "\blue You begin to replace the wires."
//if(do_after(user, min(60, round( ((maxhealth/health)*10)+(malfunction*10) ))) //Take longer to repair heavier damage
if(do_after(user, 30))

View File

@@ -232,6 +232,8 @@
origin_tech = null
/obj/item/weapon/bombcore/badmin/defuse() //because we wouldn't want them being harvested by players
var/obj/machinery/syndicatebomb/B = src.loc
del(B)
del(src)
/obj/item/weapon/bombcore/badmin/summon/
@@ -239,13 +241,14 @@
var/amt_summon = 1
/obj/item/weapon/bombcore/badmin/summon/detonate()
var/obj/machinery/syndicatebomb/B = src.loc
for(var/i = 0; i < amt_summon; i++)
var/atom/movable/X = new summon_path
X.loc = get_turf(src)
if(prob(50))
for(var/j = 1, j <= rand(1, 3), j++)
step(X, pick(NORTH,SOUTH,EAST,WEST))
del(B)
del(src)
/obj/item/weapon/bombcore/badmin/summon/clown

View File

@@ -45,12 +45,12 @@
playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1)
user << "<span class='notice'>You remove the cables.</span>"
construct_op ++
var/obj/item/weapon/cable_coil/A = new /obj/item/weapon/cable_coil( user.loc )
var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( user.loc )
A.amount = 5
stat |= BROKEN // the machine's been borked!
if(3)
if(istype(P, /obj/item/weapon/cable_coil))
var/obj/item/weapon/cable_coil/A = P
if(istype(P, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/A = P
if(A.use(5))
user << "<span class='notice'>You insert the cables.</span>"
construct_op --
@@ -81,8 +81,8 @@
newpath = text2path(I)
var/obj/item/s = new newpath
s.loc = src.loc
if(istype(s, /obj/item/weapon/cable_coil))
var/obj/item/weapon/cable_coil/A = s
if(istype(s, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/A = s
A.amount = 1
A.update_icon()

View File

@@ -715,7 +715,7 @@
icon_state = "tool"
icon_deny = "tool-deny"
//req_access_txt = "12" //Maintenance access
products = list(/obj/item/weapon/cable_coil/random = 10,/obj/item/weapon/crowbar = 5,/obj/item/weapon/weldingtool = 3,/obj/item/weapon/wirecutters = 5,
products = list(/obj/item/stack/cable_coil/random = 10,/obj/item/weapon/crowbar = 5,/obj/item/weapon/weldingtool = 3,/obj/item/weapon/wirecutters = 5,
/obj/item/weapon/wrench = 5,/obj/item/device/analyzer = 5,/obj/item/device/t_scanner = 5,/obj/item/weapon/screwdriver = 5)
contraband = list(/obj/item/weapon/weldingtool/hugetank = 2,/obj/item/clothing/gloves/fyellow = 2)
premium = list(/obj/item/clothing/gloves/yellow = 1)
@@ -754,7 +754,7 @@
icon_state = "robotics"
icon_deny = "robotics-deny"
req_access_txt = "29"
products = list(/obj/item/clothing/suit/labcoat = 4,/obj/item/clothing/under/rank/roboticist = 4,/obj/item/weapon/cable_coil = 4,/obj/item/device/flash = 4,
products = list(/obj/item/clothing/suit/labcoat = 4,/obj/item/clothing/under/rank/roboticist = 4,/obj/item/stack/cable_coil = 4,/obj/item/device/flash = 4,
/obj/item/weapon/cell/high = 12, /obj/item/device/assembly/prox_sensor = 3,/obj/item/device/assembly/signaler = 3,/obj/item/device/healthanalyzer = 3,
/obj/item/weapon/scalpel = 2,/obj/item/weapon/circular_saw = 2,/obj/item/weapon/tank/anesthetic = 2,/obj/item/clothing/mask/breath/medical = 5,
/obj/item/weapon/screwdriver = 5,/obj/item/weapon/crowbar = 5)

View File

@@ -62,9 +62,9 @@
ticker.mode.traitors += user.mind
user.mind.special_role = "Avatar of the Wish Granter"
var/datum/objective/silence/silence = new
silence.owner = user.mind
user.mind.objectives += silence
var/datum/objective/hijack/hijack = new
hijack.owner = user.mind
user.mind.objectives += hijack
var/obj_count = 1
for(var/datum/objective/OBJ in user.mind.objectives)

View File

@@ -247,7 +247,7 @@
var/datum/event/event
var/turf/old_turf
var/obj/structure/cable/last_piece
var/obj/item/weapon/cable_coil/cable
var/obj/item/stack/cable_coil/cable
var/max_cable = 1000
New()
@@ -274,7 +274,7 @@
chassis.events.clearEvent("onMove",event)
return ..()
action(var/obj/item/weapon/cable_coil/target)
action(var/obj/item/stack/cable_coil/target)
if(!action_checks(target))
return
var/result = load_cable(target)
@@ -302,7 +302,7 @@
m = min(m, cable.amount)
if(m)
use_cable(m)
var/obj/item/weapon/cable_coil/CC = new (get_turf(chassis))
var/obj/item/stack/cable_coil/CC = new (get_turf(chassis))
CC.amount = m
else
occupant_message("There's no more cable on the reel.")
@@ -314,7 +314,7 @@
return "[output] \[Cable: [cable ? cable.amount : 0] m\][(cable && cable.amount) ? "- <a href='?src=\ref[src];toggle=1'>[!equip_ready?"Dea":"A"]ctivate</a>|<a href='?src=\ref[src];cut=1'>Cut</a>" : null]"
return
proc/load_cable(var/obj/item/weapon/cable_coil/CC)
proc/load_cable(var/obj/item/stack/cable_coil/CC)
if(istype(CC) && CC.amount)
var/cur_amount = cable? cable.amount : 0
var/to_load = max(max_cable - cur_amount,0)

View File

@@ -702,9 +702,9 @@
state=2
user << "You close the hatch to the power unit"
return
else if(istype(W, /obj/item/weapon/cable_coil))
else if(istype(W, /obj/item/stack/cable_coil))
if(state == 3 && hasInternalDamage(MECHA_INT_SHORT_CIRCUIT))
var/obj/item/weapon/cable_coil/CC = W
var/obj/item/stack/cable_coil/CC = W
if(CC.amount > 1)
CC.use(2)
clearInternalDamage(MECHA_INT_SHORT_CIRCUIT)

View File

@@ -18,8 +18,8 @@
else if(istype(used_atom, /obj/item/weapon/wirecutters))
playsound(holder, 'sound/items/Wirecutter.ogg', 50, 1)
else if(istype(used_atom, /obj/item/weapon/cable_coil))
var/obj/item/weapon/cable_coil/C = used_atom
else if(istype(used_atom, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/C = used_atom
if(C.amount<4)
user << ("There's not enough cable to finish the task.")
return 0
@@ -51,8 +51,8 @@
else if(istype(used_atom, /obj/item/weapon/wirecutters))
playsound(holder, 'sound/items/Wirecutter.ogg', 50, 1)
else if(istype(used_atom, /obj/item/weapon/cable_coil))
var/obj/item/weapon/cable_coil/C = used_atom
else if(istype(used_atom, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/C = used_atom
if(C.amount<4)
user << ("There's not enough cable to finish the task.")
return 0
@@ -146,7 +146,7 @@
"backkey"=/obj/item/weapon/screwdriver,
"desc"="The wiring is added"),
//12
list("key"=/obj/item/weapon/cable_coil,
list("key"=/obj/item/stack/cable_coil,
"backkey"=/obj/item/weapon/screwdriver,
"desc"="The hydraulic systems are active."),
//13
@@ -190,7 +190,7 @@
holder.icon_state = "ripley4"
else
user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [holder].")
var/obj/item/weapon/cable_coil/coil = new /obj/item/weapon/cable_coil(get_turf(holder))
var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder))
coil.amount = 4
holder.icon_state = "ripley2"
if(10)
@@ -380,7 +380,7 @@
"backkey"=/obj/item/weapon/screwdriver,
"desc"="The wiring is added"),
//18
list("key"=/obj/item/weapon/cable_coil,
list("key"=/obj/item/stack/cable_coil,
"backkey"=/obj/item/weapon/screwdriver,
"desc"="The hydraulic systems are active."),
//19
@@ -424,7 +424,7 @@
holder.icon_state = "gygax4"
else
user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [holder].")
var/obj/item/weapon/cable_coil/coil = new /obj/item/weapon/cable_coil(get_turf(holder))
var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder))
coil.amount = 4
holder.icon_state = "gygax2"
if(16)
@@ -641,7 +641,7 @@
"backkey"=/obj/item/weapon/screwdriver,
"desc"="The wiring is added"),
//13
list("key"=/obj/item/weapon/cable_coil,
list("key"=/obj/item/stack/cable_coil,
"backkey"=/obj/item/weapon/screwdriver,
"desc"="The hydraulic systems are active."),
//14
@@ -685,7 +685,7 @@
holder.icon_state = "fireripley4"
else
user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [holder].")
var/obj/item/weapon/cable_coil/coil = new /obj/item/weapon/cable_coil(get_turf(holder))
var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder))
coil.amount = 4
holder.icon_state = "fireripley2"
if(11)
@@ -961,7 +961,7 @@
"backkey"=/obj/item/weapon/screwdriver,
"desc"="The wiring is added"),
//18
list("key"=/obj/item/weapon/cable_coil,
list("key"=/obj/item/stack/cable_coil,
"backkey"=/obj/item/weapon/screwdriver,
"desc"="The hydraulic systems are active."),
//19
@@ -1006,7 +1006,7 @@
holder.icon_state = "durand4"
else
user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [holder].")
var/obj/item/weapon/cable_coil/coil = new /obj/item/weapon/cable_coil(get_turf(holder))
var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder))
coil.amount = 4
holder.icon_state = "durand2"
if(16)
@@ -1241,7 +1241,7 @@
"backkey"=/obj/item/weapon/screwdriver,
"desc"="The wiring is added"),
//12
list("key"=/obj/item/weapon/cable_coil,
list("key"=/obj/item/stack/cable_coil,
"backkey"=/obj/item/weapon/screwdriver,
"desc"="The hydraulic systems are active."),
//13
@@ -1285,7 +1285,7 @@
holder.icon_state = "odysseus4"
else
user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [holder].")
var/obj/item/weapon/cable_coil/coil = new /obj/item/weapon/cable_coil(get_turf(holder))
var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder))
coil.amount = 4
holder.icon_state = "odysseus2"
if(10)

View File

@@ -11,7 +11,7 @@
anchored = 0
opacity = 0
var/list/welder_salvage = list(/obj/item/stack/sheet/plasteel,/obj/item/stack/sheet/metal,/obj/item/stack/rods)
var/list/wirecutters_salvage = list(/obj/item/weapon/cable_coil)
var/list/wirecutters_salvage = list(/obj/item/stack/cable_coil)
var/list/crowbar_salvage = list()
var/salvage_num = 5

View File

@@ -1,14 +1,14 @@
/proc/gibs(atom/location, var/list/viruses, var/datum/dna/MobDNA)
new /obj/effect/gibspawner/generic(get_turf(location),viruses,MobDNA)
new /obj/effect/gibspawner/generic(location,viruses,MobDNA)
/proc/hgibs(atom/location, var/list/viruses, var/datum/dna/MobDNA)
new /obj/effect/gibspawner/human(get_turf(location),viruses,MobDNA)
new /obj/effect/gibspawner/human(location,viruses,MobDNA)
/proc/xgibs(atom/location, var/list/viruses)
new /obj/effect/gibspawner/xeno(get_turf(location),viruses)
new /obj/effect/gibspawner/xeno(location,viruses)
/proc/robogibs(atom/location, var/list/viruses)
new /obj/effect/gibspawner/robot(get_turf(location),viruses)
new /obj/effect/gibspawner/robot(location,viruses)
/obj/effect/gibspawner
var/sparks = 0 //whether sparks spread on Gib()
@@ -20,8 +20,7 @@
New(location, var/list/viruses, var/datum/dna/MobDNA)
..()
if(istype(loc,/turf)) //basically if a badmin spawns it
Gib(loc,viruses,MobDNA)
Gib(loc,viruses,MobDNA)
proc/Gib(atom/location, var/list/viruses = list(), var/datum/dna/MobDNA = null)
if(gibtypes.len != gibamounts.len || gibamounts.len != gibdirections.len)
@@ -43,6 +42,9 @@
for(var/j = 1, j<= gibamounts[i], j++)
var/gibType = gibtypes[i]
gib = new gibType(location)
if(istype(location,/mob/living/carbon))
var/mob/living/carbon/digester = location
digester.stomach_contents += gib
if(viruses.len > 0)
for(var/datum/disease/D in viruses)
@@ -59,7 +61,8 @@
else if(istype(src, /obj/effect/gibspawner/human)) // Probably a monkey
gib.blood_DNA["Non-human DNA"] = "A+"
var/list/directions = gibdirections[i]
if(directions.len)
gib.streak(directions)
if(istype(loc,/turf))
if(directions.len)
gib.streak(directions)
del(src)

View File

@@ -93,7 +93,7 @@
desc = "It never stays still for long."
icon_state = "spiderling"
anchored = 0
layer = 2.7
layer = 2.75
health = 3
var/amount_grown = 0
var/grow_as = null

View File

@@ -2,16 +2,12 @@
name = "item"
icon = 'icons/obj/items.dmi'
var/item_state = null
var/r_speed = 1.0
var/health = null
var/burn_point = null
var/burning = null
var/hitsound = null
var/throwhitsound = null
var/w_class = 3.0
var/slot_flags = 0 //This is used to determine on which slots an item can fit.
pass_flags = PASSTABLE
pressure_resistance = 5
// causeerrorheresoifixthis
var/obj/item/master = null
var/heat_protection = 0 //flags which determine which body parts are protected from heat. Use the HEAD, CHEST, GROIN, etc. flags. See setup.dm
@@ -108,7 +104,16 @@
if(src.blood_DNA)
f_name = "a bloody [name]"
usr << "\icon[src]This is [f_name]. It is a [size] item."
var/determiner
var/pronoun
if(src.gender == PLURAL)
determiner = "These are"
pronoun = "They are"
else
determiner = "This is"
pronoun = "It is"
usr << "\icon[src][determiner] [f_name]. [pronoun] a [size] item." //e.g. These are some gloves. They are a small item. or This is a toolbox. It is a bulky item.
if(src.desc)
usr << src.desc
@@ -556,4 +561,5 @@
/obj/item/clothing/gloves/clean_blood()
. = ..()
if(.)
transfer_blood = 0
transfer_blood = 0
bloody_hands_mob = null

View File

@@ -35,7 +35,7 @@
usr << "\red There is another network terminal here."
return
else
var/obj/item/weapon/cable_coil/C = new /obj/item/weapon/cable_coil(loc)
var/obj/item/stack/cable_coil/C = new /obj/item/stack/cable_coil(loc)
C.amount = 10
usr << "You cut the cables and disassemble the unused power terminal."
del(T)

View File

@@ -125,6 +125,8 @@ A list of items and costs is stored under the datum of every game mode, alongsid
desc = "There is something wrong if you're examining this."
/obj/item/device/uplink/hidden/Topic(href, href_list)
if(usr.stat || usr.restrained() || usr.paralysis || usr.stunned || usr.weakened)
return 0 // To stop people using their uplink when they shouldn't be able to
..()
if(href_list["lock"])
toggle()

View File

@@ -239,12 +239,12 @@
W.loc = src
src.cell = W
user << "\blue You insert the cell!"
if(istype(W, /obj/item/weapon/cable_coil))
if(istype(W, /obj/item/stack/cable_coil))
if(src.wires)
user << "\blue You have already inserted wire!"
return
else
var/obj/item/weapon/cable_coil/coil = W
var/obj/item/stack/cable_coil/coil = W
coil.use(1)
src.wires = 1.0
user << "\blue You insert the wire!"

View File

@@ -23,8 +23,8 @@
/obj/item/stack/sheet/glass/attackby(obj/item/W, mob/user)
..()
add_fingerprint(user)
if(istype(W,/obj/item/weapon/cable_coil))
var/obj/item/weapon/cable_coil/CC = W
if(istype(W,/obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/CC = W
if(CC.amount < 5)
user << "\b There is not enough wire in this coil. You need 5 lengths."
return
@@ -248,6 +248,7 @@
item_state = "shard-glass"
g_amt = 3750
attack_verb = list("stabbed", "slashed", "sliced", "cut")
hitsound = 'sound/weapons/bladeslice.ogg'
suicide_act(mob/user)
viewers(user) << pick("<span class='suicide'>[user] is slitting \his wrists with the shard of glass! It looks like \he's trying to commit suicide.</span>", \
@@ -268,12 +269,6 @@
pixel_x = rand(-5, 5)
pixel_y = rand(-5, 5)
/obj/item/weapon/shard/attack(mob/M, mob/user)
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
..()
/obj/item/weapon/shard/afterattack(atom/A as mob|obj, mob/user, proximity)
if(!proximity || !(src in user)) return
if(isturf(A))

View File

@@ -14,7 +14,7 @@
/obj/item/stack/light_w/attackby(var/obj/item/O as obj, var/mob/user as mob)
..()
if(istype(O,/obj/item/weapon/wirecutters))
var/obj/item/weapon/cable_coil/CC = new (user.loc)
var/obj/item/stack/cable_coil/CC = new (user.loc)
CC.amount = 5
CC.add_fingerprint(user)
amount--

View File

@@ -314,7 +314,7 @@
active = !( active )
if (active)
user << "\blue You extend the plastic blade with a quick flick of your wrist."
playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
playsound(user, 'sound/weapons/saberon.ogg', 20, 1)
if(hacked)
icon_state = "swordrainbow"
item_state = "swordrainbow"
@@ -324,7 +324,7 @@
w_class = 4
else
user << "\blue You push the plastic blade back down into the handle."
playsound(user, 'sound/weapons/saberoff.ogg', 50, 1)
playsound(user, 'sound/weapons/saberoff.ogg', 20, 1)
icon_state = "sword0"
item_state = "sword0"
w_class = 2
@@ -399,6 +399,7 @@
throwforce = 5
w_class = 3
attack_verb = list("attacked", "slashed", "stabbed", "sliced")
hitsound = 'sound/weapons/bladeslice.ogg'
/*
* Crayons
@@ -566,15 +567,35 @@
obj/item/toy/cards
name = "deck of cards"
desc = "A deck of space-grade playing cards."
icon = 'icons/obj/toy.dmi'
icon_state = "deck_full"
w_class = 2.0
var/list/cards = list()
var/parentdeck = null
var/deckstyle = "nanotrasen"
var/card_hitsound = null
var/card_force = 0
var/card_throwforce = 0
var/card_throw_speed = 4
var/card_throw_range = 20
var/list/card_attack_verb = list("attacked")
obj/item/toy/cards/New()
..()
obj/item/toy/cards/proc/apply_card_vars(obj/item/toy/cards/newobj, obj/item/toy/cards/sourceobj) // Applies variables for supporting multiple types of card deck
if(!istype(sourceobj))
return
obj/item/toy/cards/deck
name = "deck of cards"
desc = "A deck of space-grade playing cards."
icon = 'icons/obj/toy.dmi'
deckstyle = "nanotrasen"
icon_state = "deck_nanotrasen_full"
w_class = 2.0
var/cooldown = 0
var/list/cards = list()
obj/item/toy/cards/deck/New()
..()
icon_state = "deck_[deckstyle]_full"
for(var/i = 2; i <= 10; i++)
cards += "[i] of Hearts"
cards += "[i] of Spades"
@@ -598,33 +619,37 @@ obj/item/toy/cards/New()
cards += "Ace of Diamonds"
obj/item/toy/cards/attack_hand(mob/user as mob)
obj/item/toy/cards/deck/attack_hand(mob/user as mob)
var/choice = null
if(cards.len == 0)
src.icon_state = "deck_empty"
src.icon_state = "deck_[deckstyle]_empty"
user << "<span class='notice'>There are no more cards to draw.</span>"
return
var/obj/item/toy/singlecard/H = new/obj/item/toy/singlecard(user.loc)
var/obj/item/toy/cards/singlecard/H = new/obj/item/toy/cards/singlecard(user.loc)
choice = cards[1]
H.cardname = choice
H.parentdeck = src
var/O = src
H.apply_card_vars(H,O)
src.cards -= choice
H.pickup(user)
user.put_in_active_hand(H)
src.visible_message("<span class='notice'>[user] draws a card from the deck.</span>", "<span class='notice'>You draw a card from the deck.</span>")
if(cards.len > 26)
src.icon_state = "deck_full"
src.icon_state = "deck_[deckstyle]_full"
else if(cards.len > 10)
src.icon_state = "deck_half"
src.icon_state = "deck_[deckstyle]_half"
else if(cards.len > 1)
src.icon_state = "deck_low"
src.icon_state = "deck_[deckstyle]_low"
obj/item/toy/cards/attack_self(mob/user as mob)
cards = shuffle(cards)
playsound(user, 'sound/items/cardshuffle.ogg', 50, 1)
user.visible_message("<span class='notice'>[user] shuffles the deck.</span>", "<span class='notice'>You shuffle the deck.</span>")
obj/item/toy/cards/deck/attack_self(mob/user as mob)
if(cooldown < world.time - 50)
cards = shuffle(cards)
playsound(user, 'sound/items/cardshuffle.ogg', 50, 1)
user.visible_message("<span class='notice'>[user] shuffles the deck.</span>", "<span class='notice'>You shuffle the deck.</span>")
cooldown = world.time
obj/item/toy/cards/attackby(obj/item/toy/singlecard/C, mob/living/user)
obj/item/toy/cards/deck/attackby(obj/item/toy/cards/singlecard/C, mob/living/user)
..()
if(istype(C))
if(C.parentdeck == src)
@@ -635,14 +660,14 @@ obj/item/toy/cards/attackby(obj/item/toy/singlecard/C, mob/living/user)
else
user << "<span class='notice'>You can't mix cards from other decks.</span>"
if(cards.len > 26)
src.icon_state = "deck_full"
src.icon_state = "deck_[deckstyle]_full"
else if(cards.len > 10)
src.icon_state = "deck_half"
src.icon_state = "deck_[deckstyle]_half"
else if(cards.len > 1)
src.icon_state = "deck_low"
src.icon_state = "deck_[deckstyle]_low"
obj/item/toy/cards/attackby(obj/item/toy/cardhand/C, mob/living/user)
obj/item/toy/cards/deck/attackby(obj/item/toy/cards/cardhand/C, mob/living/user)
..()
if(istype(C))
if(C.parentdeck == src)
@@ -653,13 +678,13 @@ obj/item/toy/cards/attackby(obj/item/toy/cardhand/C, mob/living/user)
else
user << "<span class='notice'>You can't mix cards from other decks.</span>"
if(cards.len > 26)
src.icon_state = "deck_full"
src.icon_state = "deck_[deckstyle]_full"
else if(cards.len > 10)
src.icon_state = "deck_half"
src.icon_state = "deck_[deckstyle]_half"
else if(cards.len > 1)
src.icon_state = "deck_low"
src.icon_state = "deck_[deckstyle]_low"
obj/item/toy/cards/MouseDrop(atom/over_object)
obj/item/toy/cards/deck/MouseDrop(atom/over_object)
var/mob/M = usr
if(usr.stat || !ishuman(usr) || !usr.canmove || usr.restrained())
return
@@ -683,22 +708,21 @@ obj/item/toy/cards/MouseDrop(atom/over_object)
obj/item/toy/cardhand
obj/item/toy/cards/cardhand
name = "hand of cards"
desc = "A number of cards not in a deck, customarily held in ones hand."
icon = 'icons/obj/toy.dmi'
icon_state = "hand2"
icon_state = "nanotrasen_hand2"
w_class = 1.0
var/list/currenthand = list()
var/obj/item/toy/cards/parentdeck = null
var/choice = null
obj/item/toy/cardhand/attack_self(mob/user as mob)
obj/item/toy/cards/cardhand/attack_self(mob/user as mob)
user.set_machine(src)
interact(user)
obj/item/toy/cardhand/interact(mob/user)
obj/item/toy/cards/cardhand/interact(mob/user)
var/dat = "You have:<BR>"
for(var/t in currenthand)
dat += "<A href='?src=\ref[src];pick=[t]'>A [t].</A><BR>"
@@ -709,36 +733,37 @@ obj/item/toy/cardhand/interact(mob/user)
popup.open()
obj/item/toy/cardhand/Topic(href, href_list)
obj/item/toy/cards/cardhand/Topic(href, href_list)
if(..())
return
if(usr.stat || !ishuman(usr) || !usr.canmove)
return
var/mob/living/carbon/human/cardUser = usr
var/O = src
if(href_list["pick"])
if (cardUser.get_item_by_slot(slot_l_hand) == src || cardUser.get_item_by_slot(slot_r_hand) == src)
var/choice = href_list["pick"]
var/obj/item/toy/singlecard/C = new/obj/item/toy/singlecard(cardUser.loc)
var/obj/item/toy/cards/singlecard/C = new/obj/item/toy/cards/singlecard(cardUser.loc)
src.currenthand -= choice
C.parentdeck = src.parentdeck
C.cardname = choice
C.apply_card_vars(C,O)
C.pickup(cardUser)
cardUser.put_in_any_hand_if_possible(C)
cardUser.visible_message("<span class='notice'>[cardUser] draws a card from \his hand.</span>", "<span class='notice'>You take the [C.cardname] from your hand.</span>")
interact(cardUser)
if(src.currenthand.len < 3)
src.icon_state = "hand2"
src.icon_state = "[deckstyle]_hand2"
else if(src.currenthand.len < 4)
src.icon_state = "hand3"
src.icon_state = "[deckstyle]_hand3"
else if(src.currenthand.len < 5)
src.icon_state = "hand4"
src.icon_state = "[deckstyle]_hand4"
if(src.currenthand.len == 1)
var/obj/item/toy/singlecard/N = new/obj/item/toy/singlecard(src.loc)
var/obj/item/toy/cards/singlecard/N = new/obj/item/toy/cards/singlecard(src.loc)
N.parentdeck = src.parentdeck
N.cardname = src.currenthand[1]
N.apply_card_vars(N,O)
cardUser.u_equip(src)
N.pickup(cardUser)
cardUser.put_in_any_hand_if_possible(N)
@@ -747,7 +772,7 @@ obj/item/toy/cardhand/Topic(href, href_list)
del(src)
return
obj/item/toy/cardhand/attackby(obj/item/toy/singlecard/C, mob/living/user)
obj/item/toy/cards/cardhand/attackby(obj/item/toy/cards/singlecard/C, mob/living/user)
if(istype(C))
if(C.parentdeck == src.parentdeck)
src.currenthand += C.cardname
@@ -755,31 +780,39 @@ obj/item/toy/cardhand/attackby(obj/item/toy/singlecard/C, mob/living/user)
user.visible_message("<span class='notice'>[user] adds a card to their hand.</span>", "<span class='notice'>You add the [C.cardname] to your hand.</span>")
interact(user)
if(currenthand.len > 4)
src.icon_state = "hand5"
src.icon_state = "[deckstyle]_hand5"
else if(currenthand.len > 3)
src.icon_state = "hand4"
src.icon_state = "[deckstyle]_hand4"
else if(currenthand.len > 2)
src.icon_state = "hand3"
src.icon_state = "[deckstyle]_hand3"
del(C)
else
user << "<span class='notice'>You can't mix cards from other decks.</span>"
obj/item/toy/cards/cardhand/apply_card_vars(obj/item/toy/cards/newobj,obj/item/toy/cards/sourceobj)
..()
newobj.deckstyle = sourceobj.deckstyle
newobj.icon_state = "[deckstyle]_hand2" // Another dumb hack, without this the hand is invisible (or has the default deckstyle) until another card is added.
newobj.card_hitsound = sourceobj.card_hitsound
newobj.card_force = sourceobj.card_force
newobj.card_throwforce = sourceobj.card_throwforce
newobj.card_throw_speed = sourceobj.card_throw_speed
newobj.card_throw_range = sourceobj.card_throw_range
newobj.card_attack_verb = sourceobj.card_attack_verb
obj/item/toy/singlecard
obj/item/toy/cards/singlecard
name = "card"
desc = "a card"
icon = 'icons/obj/toy.dmi'
icon_state = "singlecard_down"
icon_state = "singlecard_nanotrasen_down"
w_class = 1.0
var/cardname = null
var/obj/item/toy/cards/parentdeck = null
var/flipped = 0
pixel_x = -5
obj/item/toy/singlecard/examine()
obj/item/toy/cards/singlecard/examine()
set src in usr.contents
if(ishuman(usr))
var/mob/living/carbon/human/cardUser = usr
@@ -789,7 +822,7 @@ obj/item/toy/singlecard/examine()
cardUser << "<span class='notice'>You need to have the card in your hand to check it.</span>"
obj/item/toy/singlecard/verb/Flip()
obj/item/toy/cards/singlecard/verb/Flip()
set name = "Flip Card"
set category = "Object"
set src in range(1)
@@ -798,26 +831,27 @@ obj/item/toy/singlecard/verb/Flip()
if(!flipped)
src.flipped = 1
if (cardname)
src.icon_state = "sc_[cardname]"
src.icon_state = "sc_[cardname]_[deckstyle]"
src.name = src.cardname
else
src.icon_state = "sc_Ace of Spades"
src.icon_state = "sc_Ace of Spades_[deckstyle]"
src.name = "What Card"
src.pixel_x = 5
else if(flipped)
src.flipped = 0
src.icon_state = "singlecard_down"
src.icon_state = "singlecard_down_[deckstyle]"
src.name = "card"
src.pixel_x = -5
obj/item/toy/singlecard/attackby(obj/item/I, mob/living/user)
if(istype(I, /obj/item/toy/singlecard/))
var/obj/item/toy/singlecard/C = I
obj/item/toy/cards/singlecard/attackby(obj/item/I, mob/living/user)
if(istype(I, /obj/item/toy/cards/singlecard/))
var/obj/item/toy/cards/singlecard/C = I
if(C.parentdeck == src.parentdeck)
var/obj/item/toy/cardhand/H = new/obj/item/toy/cardhand(user.loc)
var/obj/item/toy/cards/cardhand/H = new/obj/item/toy/cards/cardhand(user.loc)
H.currenthand += C.cardname
H.currenthand += src.cardname
H.parentdeck = C.parentdeck
H.apply_card_vars(H,C)
user.u_equip(C)
H.pickup(user)
user.put_in_active_hand(H)
@@ -827,29 +861,62 @@ obj/item/toy/singlecard/attackby(obj/item/I, mob/living/user)
else
user << "<span class='notice'>You can't mix cards from other decks.</span>"
if(istype(I, /obj/item/toy/cardhand/))
var/obj/item/toy/cardhand/H = I
if(istype(I, /obj/item/toy/cards/cardhand/))
var/obj/item/toy/cards/cardhand/H = I
if(H.parentdeck == parentdeck)
H.currenthand += cardname
user.u_equip(src)
user.visible_message("<span class='notice'>[user] adds a card to \his hand.</span>", "<span class='notice'>You add the [cardname] to your hand.</span>")
H.interact(user)
if(H.currenthand.len > 4)
H.icon_state = "hand5"
H.icon_state = "[deckstyle]_hand5"
else if(H.currenthand.len > 3)
H.icon_state = "hand4"
H.icon_state = "[deckstyle]_hand4"
else if(H.currenthand.len > 2)
H.icon_state = "hand3"
H.icon_state = "[deckstyle]_hand3"
del(src)
else
user << "<span class='notice'>You can't mix cards from other decks.</span>"
obj/item/toy/singlecard/attack_self(mob/user)
obj/item/toy/cards/singlecard/attack_self(mob/user)
if(usr.stat || !ishuman(usr) || !usr.canmove || usr.restrained())
return
Flip()
obj/item/toy/cards/singlecard/apply_card_vars(obj/item/toy/cards/singlecard/newobj,obj/item/toy/cards/sourceobj)
..()
newobj.deckstyle = sourceobj.deckstyle
newobj.icon_state = "singlecard_down_[deckstyle]" // Without this the card is invisible until flipped. It's an ugly hack, but it works.
newobj.card_hitsound = sourceobj.card_hitsound
newobj.hitsound = newobj.card_hitsound
newobj.card_force = sourceobj.card_force
newobj.force = newobj.card_force
newobj.card_throwforce = sourceobj.card_throwforce
newobj.throwforce = newobj.card_throwforce
newobj.card_throw_speed = sourceobj.card_throw_speed
newobj.throw_speed = newobj.card_throw_speed
newobj.card_throw_range = sourceobj.card_throw_range
newobj.throw_range = newobj.card_throw_range
newobj.card_attack_verb = sourceobj.card_attack_verb
newobj.attack_verb = newobj.card_attack_verb
/*
|| Syndicate playing cards, for pretending you're Gambit and playing poker for the nuke disk. ||
*/
obj/item/toy/cards/deck/syndicate
name = "suspicious looking deck of cards"
desc = "A deck of space-grade playing cards. They seem unusually rigid."
deckstyle = "syndicate"
card_hitsound = 'sound/weapons/bladeslice.ogg'
card_force = 15
card_throwforce = 15
card_throw_speed = 6
card_throw_range = 20
card_attack_verb = list("attacked", "sliced", "diced", "slashed", "cut")
/obj/item/toy/nuke
name = "\improper Nuclear Fission Explosive toy"
@@ -879,4 +946,3 @@ obj/item/toy/singlecard/attack_self(mob/user)

View File

@@ -24,14 +24,20 @@ CIGARETTE PACKETS ARE IN FANCY.DM
var/smoketime = 5
w_class = 1.0
origin_tech = "materials=1"
attack_verb = list("burnt", "singed")
attack_verb = null
/obj/item/weapon/match/process()
var/turf/location = get_turf(src)
smoketime--
if(smoketime < 1)
icon_state = "match_burnt"
lit = -1
damtype = "brute"
force = 0
icon_state = "match_burnt"
item_state = "cigoff"
name = "burnt match"
desc = "A match. This one has seen better days."
attack_verb = null
processing_objects.Remove(src)
return
if(location)
@@ -46,6 +52,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
item_state = "cigoff"
name = "burnt match"
desc = "A match. This one has seen better days."
attack_verb = null
return ..()
//////////////////
@@ -59,7 +66,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
item_state = "cigoff"
w_class = 1
body_parts_covered = null
attack_verb = list("burnt", "singed")
attack_verb = null
var/lit = 0
var/icon_on = "cigon" //Note - these are in masks.dmi not in cigarette.dmi
var/icon_off = "cigoff"
@@ -96,7 +103,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
else if(istype(W, /obj/item/weapon/match))
var/obj/item/weapon/match/M = W
if(M.lit)
if(M.lit == 1) //checking for lit = 1 instead of just lit prevents cigarettes being lit by used matches
light("<span class='notice'>[user] lights their [name] with [W].</span>")
else if(istype(W, /obj/item/weapon/melee/energy/sword))
@@ -134,7 +141,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/obj/item/clothing/mask/cigarette/proc/light(var/flavor_text = "[usr] lights the [name].")
if(!src.lit)
src.lit = 1
damtype = "fire"
name = "lit [name]"
if(!istype(src, /obj/item/clothing/mask/cigarette/pipe)) //can't burn people with pipes
attack_verb = list("burnt", "singed")
hitsound = 'sound/items/welder.ogg'
damtype = "fire"
force = 4
if(reagents.get_reagent_amount("plasma")) // the plasma explodes when exposed to fire
var/datum/effect/effect/system/reagents_explosion/e = new()
e.set_up(round(reagents.get_reagent_amount("plasma") / 2.5, 1), get_turf(src), 0, 0)
@@ -215,7 +227,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM
/obj/item/clothing/mask/cigarette/attack(mob/living/carbon/M, mob/living/carbon/user)
if(!istype(M))
return ..()
if(istype(M.wear_mask, /obj/item/clothing/mask/cigarette) && user.zone_sel && user.zone_sel.selecting == "mouth" && lit)
var/obj/item/clothing/mask/cigarette/cig = M.wear_mask
if(M == user)
@@ -403,7 +414,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
throwforce = 4
flags = CONDUCT
slot_flags = SLOT_BELT
attack_verb = list("burnt", "singed")
attack_verb = null
var/lit = 0
/obj/item/weapon/lighter/zippo
@@ -427,6 +438,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM
lit = 1
icon_state = icon_on
item_state = icon_on
force = 5
damtype = "fire"
hitsound = 'sound/items/welder.ogg'
attack_verb = list("burnt", "singed")
if(istype(src, /obj/item/weapon/lighter/zippo) )
user.visible_message("<span class='rose'>Without even breaking stride, [user] flips open and lights [src] in one smooth movement.</span>")
else
@@ -443,6 +458,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM
lit = 0
icon_state = icon_off
item_state = icon_off
hitsound = "swing_hit"
force = 0
attack_verb = null //human_defense.dm takes care of it
if(istype(src, /obj/item/weapon/lighter/zippo) )
user.visible_message("<span class='rose'>You hear a quiet click, as [user] shuts off [src] without even looking at what they're doing. Wow.")
else

View File

@@ -54,8 +54,8 @@
timer = newtime
user << "Timer set for [timer] seconds."
/obj/item/weapon/plastique/afterattack(atom/target as obj|turf, mob/user as mob, flag)
if (!flag)
/obj/item/weapon/plastique/preattack(atom/target as obj|turf, mob/user as mob,proximity_flag)
if (!proximity_flag)
return
if (istype(target, /turf/unsimulated) || istype(target, /turf/simulated/shuttle) || istype(target, /obj/item/weapon/storage/))
return
@@ -84,6 +84,7 @@
user << "Bomb has been planted. Timer counting down from [timer]."
spawn(timer*10)
explode(get_turf(target))
return 1
/obj/item/weapon/plastique/proc/explode(var/location)

View File

@@ -30,9 +30,8 @@
if(stage == READY && !active)
var/turf/bombturf = get_turf(src)
var/area/A = get_area(bombturf)
var/log_str = "[key_name(usr)]<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A> has primed a [name] for detonation at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>."
message_admins(log_str)
log_game(log_str)
message_admins("[key_name(usr)]<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A> has primed a [name] for detonation at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>.")
log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]).")
if(nadeassembly)
nadeassembly.attack_self(user)
else if(clown_check(user))
@@ -92,8 +91,8 @@
icon_state = initial(icon_state) + "_ass"
user << "<span class='notice'>You add [A] to [src]!</span>"
else if(stage == EMPTY && istype(I, /obj/item/weapon/cable_coil))
var/obj/item/weapon/cable_coil/C = I
else if(stage == EMPTY && istype(I, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/C = I
C.use(1)
stage = WIRED
@@ -351,4 +350,4 @@
#undef EMPTY
#undef WIRED
#undef READY
#undef READY

View File

@@ -49,9 +49,9 @@
/obj/item/weapon/grenade/iedcasing/attackby(var/obj/item/I, mob/user as mob) //Wiring the can for ignition
if(istype(I, /obj/item/weapon/cable_coil))
if(istype(I, /obj/item/stack/cable_coil))
if(assembled == 1)
var/obj/item/weapon/cable_coil/C = I
var/obj/item/stack/cable_coil/C = I
C.use(1)
assembled = 2
user << "<span class='notice'>You wire the igniter to detonate the fuel.</span>"
@@ -72,9 +72,9 @@
add_fingerprint(user)
var/turf/bombturf = get_turf(src)
var/area/A = get_area(bombturf)
var/log_str = "[key_name(usr)]<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A> has primed a [name] for detonation at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>."
message_admins(log_str)
log_game(log_str)
message_admins("[key_name(usr)]<A HREF='?_src_=holder;adminmoreinfo=\ref[usr]'>?</A> has primed a [name] for detonation at <A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[bombturf.x];Y=[bombturf.y];Z=[bombturf.z]'>[A.name] (JMP)</a>.")
log_game("[key_name(usr)] has primed a [name] for detonation at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]).")
if(iscarbon(user))
var/mob/living/carbon/C = user
C.throw_mode_on()

View File

@@ -25,6 +25,7 @@
flags = CONDUCT
origin_tech = "materials=1"
attack_verb = list("attacked", "stabbed", "poked")
hitsound = 'sound/weapons/bladeslice.ogg'
/obj/item/weapon/kitchen/utensil/New()
if (prob(60))

View File

@@ -1,4 +1,4 @@
/obj/item/weapon/melee/energy
/obj/item/weapon/melee/energy/
var/active = 0
/obj/item/weapon/melee/energy/suicide_act(mob/user)
@@ -15,6 +15,7 @@
icon_state = "axe0"
force = 40.0
throwforce = 25.0
hitsound = 'sound/weapons/bladeslice.ogg'
throw_speed = 1
throw_range = 5
w_class = 3.0
@@ -30,18 +31,18 @@
active = !active
if(active)
user << "<span class='notice'>[src] is now energised.</span>"
force = 150
force = 150 //these are the drugs, friend
hitsound = 'sound/weapons/blade1.ogg'
icon_state = "axe1"
w_class = 5
else
user << "<span class='notice'>[src] can now be concealed.</span>"
force = 40
hitsound = 'sound/weapons/bladeslice.ogg'
icon_state = "axe0"
w_class = 5
w_class = 3 //it goes back to three you goose
add_fingerprint(user)
/obj/item/weapon/melee/energy/sword
color
name = "energy sword"
@@ -49,12 +50,12 @@
icon_state = "sword0"
force = 3.0
throwforce = 5.0
hitsound = "swing_hit" //it starts deactivated
throw_speed = 1
throw_range = 5
w_class = 2.0
flags = NOSHIELD
origin_tech = "magnets=3;syndicate=4"
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
var/hacked = 0
/obj/item/weapon/melee/energy/sword/New()
@@ -73,27 +74,30 @@
if (active)
force = 30
throwforce = 20
hitsound = 'sound/weapons/blade1.ogg'
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
if(istype(src,/obj/item/weapon/melee/energy/sword/pirate))
icon_state = "cutlass1"
else
icon_state = "sword[item_color]"
w_class = 4
playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
playsound(user, 'sound/weapons/saberon.ogg', 35, 1) //changed it from 50% volume to 35% because deafness
user << "<span class='notice'>[src] is now active.</span>"
else
force = 3
throwforce = 5.0
hitsound = "swing_hit"
attack_verb = null
if(istype(src,/obj/item/weapon/melee/energy/sword/pirate))
icon_state = "cutlass0"
else
icon_state = "sword0"
w_class = 2
playsound(user, 'sound/weapons/saberoff.ogg', 50, 1)
playsound(user, 'sound/weapons/saberoff.ogg', 35, 1) //changed it from 50% volume to 35% because deafness
user << "<span class='notice'>[src] can now be concealed.</span>"
add_fingerprint(user)
return
/obj/item/weapon/melee/energy/sword/attackby(obj/item/weapon/W, mob/living/user)
..()
if(istype(W, /obj/item/weapon/melee/energy/sword))
@@ -160,6 +164,7 @@
desc = "A concentrated beam of energy in the shape of a blade. Very stylish... and lethal."
icon_state = "blade"
force = 70.0//Normal attacks deal very high damage.
hitsound = 'sound/weapons/blade1.ogg'
throwforce = 1//Throwing or dropping the item deletes it.
throw_speed = 1
throw_range = 1

View File

@@ -10,6 +10,7 @@
w_class = 3
origin_tech = "combat=4"
attack_verb = list("flogged", "whipped", "lashed", "disciplined")
hitsound = 'sound/weapons/slash.ogg' //pls replace
/obj/item/weapon/melee/chainofcommand/suicide_act(mob/user)
viewers(user) << "<span class='suicide'>[user] is strangling \himself with the [src.name]! It looks like \he's trying to commit suicide.</span>"
@@ -40,9 +41,14 @@
return
add_logs(user, M, "attacked", object="[src.name]")
if(isrobot(M)) // Don't stun borgs, fix for issue #2436
..()
return
if(!isliving(M)) // Don't stun nonhuman things
return
if(user.a_intent == "harm")
if(!..()) return
playsound(loc, "swing_hit", 50, 1, -1)
if(M.stuttering < 8 && !(HULK in M.mutations))
M.stuttering = 8
M.Stun(8)

View File

@@ -66,14 +66,14 @@
force = 10
icon_state = "eshield[active]"
w_class = 4
playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
playsound(user, 'sound/weapons/saberon.ogg', 35, 1)
user << "<span class='notice'>[src] is now active.</span>"
reflect_chance = 40
else
force = 3
icon_state = "eshield[active]"
w_class = 1
playsound(user, 'sound/weapons/saberoff.ogg', 50, 1)
playsound(user, 'sound/weapons/saberoff.ogg', 35, 1)
user << "<span class='notice'>[src] can now be concealed.</span>"
reflect_chance = 0
add_fingerprint(user)

View File

@@ -32,8 +32,8 @@
desc = "A backpack that opens into a localized pocket of Blue Space."
origin_tech = "bluespace=4"
icon_state = "holdingpack"
max_w_class = 4
max_combined_w_class = 28
max_w_class = 5
max_combined_w_class = 35
New()
..()

View File

@@ -9,6 +9,7 @@
* Mining Satchel
* Plant Bag
* Sheet Snatcher
* Book Bag
*
* -Sayu
*/
@@ -245,4 +246,21 @@
/obj/item/weapon/storage/bag/sheetsnatcher/borg
name = "sheet snatcher 9000"
desc = ""
capacity = 500//Borgs get more because >specialization
capacity = 500//Borgs get more because >specialization
// -----------------------------
// Book bag
// -----------------------------
/obj/item/weapon/storage/bag/books
name = "book bag"
desc = "A bag for books."
icon = 'icons/obj/library.dmi'
icon_state = "bookbag"
display_contents_with_number = 0 //This would look really stupid otherwise
storage_slots = 7
max_combined_w_class = 21
max_w_class = 3
w_class = 4 //Bigger than a book because physics
can_hold = list("/obj/item/weapon/book", "/obj/item/weapon/spellbook") //No bibles, consistent with bookcase

View File

@@ -48,7 +48,7 @@
"/obj/item/weapon/wrench",
"/obj/item/device/multitool",
"/obj/item/device/flashlight",
"/obj/item/weapon/cable_coil",
"/obj/item/stack/cable_coil",
"/obj/item/device/t_scanner",
"/obj/item/device/analyzer")
@@ -60,7 +60,7 @@
new /obj/item/weapon/weldingtool(src)
new /obj/item/weapon/crowbar(src)
new /obj/item/weapon/wirecutters(src)
new /obj/item/weapon/cable_coil(src,30,pick("red","yellow","orange"))
new /obj/item/stack/cable_coil(src,30,pick("red","yellow","orange"))
/obj/item/weapon/storage/belt/utility/atmostech/New()
@@ -101,8 +101,11 @@
desc = "Can hold security gear like handcuffs and flashes."
icon_state = "securitybelt"
item_state = "security"//Could likely use a better one.
storage_slots = 4
storage_slots = 5
max_w_class = 3 //Because the baton wouldn't fit otherwise. - Neerti
can_hold = list(
"/obj/item/weapon/melee/baton",
"/obj/item/weapon/melee/classic_baton",
"/obj/item/weapon/grenade/flashbang",
"/obj/item/weapon/reagent_containers/spray/pepper",
"/obj/item/weapon/handcuffs",

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