From dd9c91cf5f9f0a53b72b483bc7b8cf007347392b Mon Sep 17 00:00:00 2001 From: Belsima Date: Sat, 6 May 2017 09:27:38 -0400 Subject: [PATCH 01/84] Lets biological females have facial hair. --- code/modules/mob/new_player/sprite_accessories.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index f6679a6dfe..cab1856683 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -561,7 +561,6 @@ /datum/sprite_accessory/facial_hair icon = 'icons/mob/Human_face.dmi' - gender = MALE shaved name = "Shaved" @@ -1236,4 +1235,4 @@ name = "Default skrell skin" icon_state = "default" icon = 'icons/mob/human_races/r_skrell.dmi' - species_allowed = list("Skrell") \ No newline at end of file + species_allowed = list("Skrell") From c95df78a549e4a1bc07cafd3fc37f9838b6ee89b Mon Sep 17 00:00:00 2001 From: Yoshax Date: Mon, 22 May 2017 15:33:29 +0100 Subject: [PATCH 02/84] Fixes a bug with healthy analzyers and adds radiation showing to them, from Bay --- code/game/objects/items/devices/scanners.dm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 5d883784aa..6399d0ce4a 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -69,7 +69,7 @@ REAGENT SCANNER user.show_message("Analyzing Results for [M]:") user.show_message("Overall Status: dead") else - user.show_message("Analyzing Results for [M]:\n\t Overall Status: [M.stat > 1 ? "dead" : "[round((M.health/M.getMaxHealth())*100) ]% healthy"]") + user.show_message("Analyzing Results for [M]:\n\t Overall Status: [M.stat > 1 ? "dead" : "[round(M.health*100/M.maxHealth)]% healthy"]") user.show_message(" Key: Suffocation/Toxin/Burns/Brute", 1) user.show_message(" Damage Specifics: [OX] - [TX] - [BU] - [BR]") user.show_message("Body Temperature: [M.bodytemperature-T0C]°C ([M.bodytemperature*1.8-459.67]°F)", 1) @@ -99,6 +99,10 @@ REAGENT SCANNER if(M.status_flags & FAKEDEATH) OX = fake_oxy > 50 ? "Severe oxygen deprivation detected" : "Subject bloodstream oxygen level normal" user.show_message("[OX] | [TX] | [BU] | [BR]") + if(M.radiation) + user.show_message("Radiation Level: [M.radiation]") + else + user.show_message("No radiation detected.") if(istype(M, /mob/living/carbon)) var/mob/living/carbon/C = M if(C.reagents.total_volume) From 6185bbd212c9085fd69bc1769e1ca5f0d754d5af Mon Sep 17 00:00:00 2001 From: Ben Reeve Date: Thu, 15 Dec 2016 19:07:39 +0000 Subject: [PATCH 03/84] Unified radiation system --- code/controllers/Processes/radiation.dm | 43 +++++++ code/controllers/configuration.dm | 4 + code/datums/repositories/radiation.dm | 114 ++++++++++++++++++ code/game/atoms_movable.dm | 3 + code/game/gamemodes/meteor/meteors.dm | 3 +- code/game/machinery/doors/airlock.dm | 13 +- code/game/machinery/doors/blast_door.dm | 11 +- code/game/machinery/doors/door.dm | 2 + code/game/machinery/vending.dm | 2 +- code/game/mecha/equipment/tools/tools.dm | 6 +- code/game/objects/items/devices/geiger.dm | 53 ++++++++ .../crates_lockers/closets/utility_closets.dm | 2 + code/game/turfs/simulated/wall_attacks.dm | 2 + code/game/turfs/simulated/wall_icon.dm | 1 + code/game/turfs/simulated/walls.dm | 6 +- code/game/turfs/turf.dm | 11 +- code/modules/events/event_container.dm | 2 +- code/modules/events/radiation_storm.dm | 10 +- code/modules/events/solar_storm.dm | 17 ++- code/modules/mining/mine_turfs.dm | 4 +- .../mob/living/carbon/human/human_defense.dm | 2 +- .../mob/living/silicon/robot/robot_modules.dm | 2 + code/modules/power/port_gen.dm | 8 +- code/modules/power/singularity/collector.dm | 5 + code/modules/power/singularity/singularity.dm | 10 +- code/modules/supermatter/supermatter.dm | 22 +++- .../xenoarcheaology/effects/radiate.dm | 10 +- .../tools/geosample_scanner.dm | 5 +- html/changelogs/cirra-Radiation.yml | 37 ++++++ icons/obj/device.dmi | Bin 51528 -> 55614 bytes polaris.dme | 3 + 31 files changed, 337 insertions(+), 76 deletions(-) create mode 100644 code/controllers/Processes/radiation.dm create mode 100644 code/datums/repositories/radiation.dm create mode 100644 code/game/objects/items/devices/geiger.dm create mode 100644 html/changelogs/cirra-Radiation.yml diff --git a/code/controllers/Processes/radiation.dm b/code/controllers/Processes/radiation.dm new file mode 100644 index 0000000000..8ebd3a71a8 --- /dev/null +++ b/code/controllers/Processes/radiation.dm @@ -0,0 +1,43 @@ +/datum/controller/process/radiation + var/repository/radiation/linked = null + +/datum/controller/process/radiation/setup() + name = "radiation controller" + schedule_interval = 20 // every 2 seconds + linked = radiation_repository + +/datum/controller/process/radiation/doWork() +// set background = 1 + for(var/turf/T in linked.irradiated_turfs) + if(!T) + linked.irradiated_turfs.Remove(T) + continue + linked.irradiated_turfs[T] -= config.radiation_decay_rate + if(linked.irradiated_turfs[T] <= config.radiation_lower_limit) + linked.irradiated_turfs.Remove(T) + SCHECK + for(var/mob/living/L in linked.irradiated_mobs) + if(!L) + linked.irradiated_mobs.Remove(L) + continue + if(get_turf(L) in linked.irradiated_turfs) + L.rad_act(linked.irradiated_turfs[get_turf(L)]) + if(!L.radiation) + linked.irradiated_mobs.Remove(L) + SCHECK + for(var/thing in linked.sources) + if(!thing) + linked.sources.Remove(thing) + continue + var/atom/emitter = thing + linked.radiate(emitter, emitter.rad_power) + to_process.Cut() + SCHECK + for(var/thing in linked.resistance_cache) + if(!thing) + linked.resistance_cache.Remove(thing) + continue + var/turf/T = thing + if((length(T.contents) + 1) != linked.resistance_cache[T]) + T.calc_rad_resistance() + SCHECK \ No newline at end of file diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 5021453462..c22ac1bc81 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -219,6 +219,10 @@ var/list/gamemode_cache = list() var/show_human_death_message = 1 + var/radiation_decay_rate = 1 //How much radiation is reduced by each tick + var/radiation_resistance_multiplier = 6.5 + var/radiation_lower_limit = 0.35 //If the radiation level for a turf would be below this, ignore it. + /datum/configuration/New() var/list/L = typesof(/datum/game_mode) - /datum/game_mode for (var/T in L) diff --git a/code/datums/repositories/radiation.dm b/code/datums/repositories/radiation.dm new file mode 100644 index 0000000000..bdf2b18322 --- /dev/null +++ b/code/datums/repositories/radiation.dm @@ -0,0 +1,114 @@ +//#define RADDBG + +var/repository/radiation/radiation_repository = new() + +var/list/to_process = list() + +/repository/radiation + var/list/sources = list() //All the radiation sources we know about + var/list/irradiated_turfs = list() + var/list/irradiated_mobs = list() + var/list/resistance_cache = list() + +/repository/radiation/proc/report_rads(var/turf/T as turf) + return irradiated_turfs[T] + +/repository/radiation/proc/radiate(source, power) //Sends out a radiation pulse, taking walls into account + if(!(source && power)) //Sanity checking + return + + var/range = min(round(sqrt(power / config.radiation_lower_limit)), 31) + var/turf/epicentre = get_turf(source) + to_process = list() + + range = min(epicentre.x, world.maxx - epicentre.x, epicentre.y, world.maxy - epicentre.y, range) + + to_process = trange(range, epicentre) + to_process[epicentre] = power + + for(var/turf/spot in to_process) + var/turf/origin = get_turf(epicentre) + var/working = power + while(origin != spot) + origin = get_step_towards(origin, spot) //Raytracing + if(!(origin in resistance_cache)) //Only get the resistance if we don't already know it. + origin.calc_rad_resistance() + working = max((working - (origin.rad_resistance * config.radiation_resistance_multiplier)), 0) + if(!working) + break + if(!to_process[origin]) + to_process[origin] = working + + else + to_process[origin] = max(to_process[origin], working) + + for(var/turf/spot in to_process) + irradiated_turfs[spot] = max(((to_process[spot]) * (1 / (get_dist(epicentre, spot) ** 2))), irradiated_turfs[spot]) //Butchered version of the inverse square law. Works for this purpose + #ifdef RADDBG + var/x = Clamp( irradiated_turfs[spot], 0, 255) + spot.color = rgb(5,x,5) + #endif + +/repository/radiation/proc/flat_radiate(source, power, range, var/respect_maint=0) //Sets the radiation in a range to a constant value. + if(!(source && power && range)) + return + var/turf/epicentre = get_turf(source) + range = min(epicentre.x, world.maxx - epicentre.x, epicentre.y, world.maxy - epicentre.y, range) + if(!respect_maint) + for(var/turf/T in trange(range, epicentre)) + irradiated_turfs[T] = max(power, irradiated_turfs[T]) + else + for(var/turf/T in trange(range, epicentre)) + var/area/A = T.loc + if(A.flags & RAD_SHIELDED) + continue + irradiated_turfs[T] = max(power, irradiated_turfs[T]) + +/repository/radiation/proc/z_radiate(var/atom/source, power, var/respect_maint=0) //Irradiates a full Z-level. Hacky way of doing it, but not too expensive. + if(!(power && source)) + return + var/turf/epicentre = locate(round(world.maxx / 2), round(world.maxy / 2), source.z) + flat_radiate(epicentre, power, world.maxx, respect_maint) + +/turf/proc/calc_rad_resistance() + rad_resistance = 0 + for(var/obj/O in src.contents) + if(O.rad_resistance) //Override + rad_resistance += O.rad_resistance + + else if(O.density) //So doors don't get counted + var/material/M = O.get_material() + if(!M) continue + rad_resistance += M.weight + radiation_repository.resistance_cache[src] = (length(contents) + 1) + +/turf/simulated/wall/calc_rad_resistance() + radiation_repository.resistance_cache[src] = (length(contents) + 1) + rad_resistance = (density ? material.weight : 0) + +/atom + var/rad_power = 0 + var/rad_resistance = 0 + +/atom/Destroy() + if(rad_power) + radiation_repository.sources.Remove(src) + . = ..() + +/atom/proc/update_radiation() //For VV'ing something to make it radioactive at runtime + if((rad_power) && (!(src in radiation_repository.sources))) + radiation_repository.sources.Add(src) + else if((!rad_power) && (src in radiation_repository.sources)) + radiation_repository.sources.Remove(src) + +/atom/proc/rad_act(var/severity) //If people expand the system, this may be useful. Here as a placeholder until then + return 1 + +/mob/living/rad_act(var/severity) + if(severity) + src.apply_effect(severity, IRRADIATE, src.getarmor(null, "rad")) + for(var/obj/I in src) + I.rad_act(severity) + + +//#undef RADDBG \ No newline at end of file diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index fe9f99b032..82061ddb6a 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -53,6 +53,9 @@ pulledby = null /atom/movable/proc/initialize() + if(rad_power) + radiation_repository.sources.Add(src) + if(!isnull(gcDestroyed)) crash_with("GC: -- [type] had initialize() called after qdel() --") diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index ad8b89ec80..c5096d12d8 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -271,8 +271,7 @@ if(explode) explosion(src.loc, devastation_range = 0, heavy_impact_range = 0, light_impact_range = 4, flash_range = 6, adminlog = 0) new /obj/effect/decal/cleanable/greenglow(get_turf(src)) - for(var/mob/living/L in view(10, src)) - L.apply_effect(40, IRRADIATE) + radiation_repository.radiate(src, 50) // This meteor fries toasters. /obj/effect/meteor/emp diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index e78cba3568..c1ec9287b0 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -263,6 +263,7 @@ icon = 'icons/obj/doors/Dooruranium.dmi' mineral = "uranium" var/last_event = 0 + rad_power = 7.5 /obj/machinery/door/airlock/process() // Deliberate no call to parent. @@ -277,18 +278,6 @@ ..() -/obj/machinery/door/airlock/uranium/process() - if(world.time > last_event+20) - if(prob(50)) - radiate() - last_event = world.time - ..() - -/obj/machinery/door/airlock/uranium/proc/radiate() - for(var/mob/living/L in range (3,src)) - L.apply_effect(15,IRRADIATE,0) - return - /obj/machinery/door/airlock/phoron name = "Phoron Airlock" desc = "No way this can end badly." diff --git a/code/game/machinery/doors/blast_door.dm b/code/game/machinery/doors/blast_door.dm index 3d899377cc..f8e1d1cbb5 100644 --- a/code/game/machinery/doors/blast_door.dm +++ b/code/game/machinery/doors/blast_door.dm @@ -13,7 +13,7 @@ icon = 'icons/obj/doors/rapid_pdoor.dmi' icon_state = null min_force = 20 //minimum amount of force needed to damage the door with a melee weapon - + var/material/implicit_material // Icon states for different shutter types. Simply change this instead of rewriting the update_icon proc. var/icon_state_open = null var/icon_state_opening = null @@ -29,6 +29,13 @@ //turning this off prevents awkward zone geometry in places like medbay lobby, for example. block_air_zones = 0 +/obj/machinery/door/blast/initialize() + ..() + implicit_material = get_material_by_name("plasteel") + +/obj/machinery/door/blast/get_material() + return implicit_material + // Proc: Bumped() // Parameters: 1 (AM - Atom that tried to walk through this object) // Description: If we are open returns zero, otherwise returns result of parent function. @@ -46,6 +53,8 @@ icon_state = icon_state_closed else icon_state = icon_state_open + var/turf/T = get_turf(src) + T.calc_rad_resistance() return // Proc: force_open() diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 7a1d6abd02..898683192f 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -362,6 +362,8 @@ icon_state = "door1" else icon_state = "door0" + var/turf/T = get_turf(src) + T.calc_rad_resistance() return diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 3d53a053f0..58bed70d07 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -1029,7 +1029,7 @@ icon_state = "engivend" icon_deny = "engivend-deny" req_access = list(access_engine_equip) - products = list(/obj/item/clothing/glasses/meson = 2,/obj/item/device/multitool = 4,/obj/item/weapon/cell/high = 10, + products = list(/obj/item/device/geiger = 4,/obj/item/clothing/glasses/meson = 2,/obj/item/device/multitool = 4,/obj/item/weapon/cell/high = 10, /obj/item/weapon/airlock_electronics = 10,/obj/item/weapon/module/power_control = 10, /obj/item/weapon/circuitboard/airalarm = 10,/obj/item/weapon/circuitboard/firealarm = 10,/obj/item/weapon/circuitboard/status_display = 2, /obj/item/weapon/circuitboard/ai_status_display = 2,/obj/item/weapon/circuitboard/newscaster = 2,/obj/item/weapon/circuitboard/holopad = 2, diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm index 9b2e0aa26d..4d7ee902d8 100644 --- a/code/game/mecha/equipment/tools/tools.dm +++ b/code/game/mecha/equipment/tools/tools.dm @@ -973,11 +973,7 @@ process(var/obj/item/mecha_parts/mecha_equipment/generator/nuclear/EG) if(..()) - for(var/mob/living/carbon/M in view(EG.chassis)) - if(istype(M,/mob/living/carbon/human)) - M.apply_effect((EG.rad_per_cycle*3),IRRADIATE,0) - else - M.apply_effect(EG.rad_per_cycle, IRRADIATE) + radiation_repository.radiate(EG, (EG.rad_per_cycle * 3)) return 1 diff --git a/code/game/objects/items/devices/geiger.dm b/code/game/objects/items/devices/geiger.dm new file mode 100644 index 0000000000..acd85b730c --- /dev/null +++ b/code/game/objects/items/devices/geiger.dm @@ -0,0 +1,53 @@ +#define RAD_LEVEL_LOW 5 //10 // Around the level at which radiation starts to become harmful +#define RAD_LEVEL_MODERATE 15 //15 +#define RAD_LEVEL_HIGH 50 //50 +#define RAD_LEVEL_VERY_HIGH 100 //100 + +//Geiger counter +//Rewritten version of TG's geiger counter +//I opted to show exact radiation levels + +/obj/item/device/geiger + name = "geiger counter" + desc = "A handheld device used for detecting and measuring radiation in an area." + icon_state = "geiger_off" + item_state = "multitool" + w_class = ITEMSIZE_SMALL + var/scanning = 0 + var/radiation_count = 0 + +/obj/item/device/geiger/New() + processing_objects |= src + +/obj/item/device/geiger/process() + if(!scanning) + return + radiation_count = radiation_repository.report_rads(get_turf(src)) + update_icon() + +/obj/item/device/geiger/examine(mob/user) + ..(user) + to_chat(user, "[scanning ? "ambient" : "stored"] radiation level: [radiation_count ? radiation_count : "0"]Bq.") + +/obj/item/device/geiger/attack_self(var/mob/user) + scanning = !scanning + update_icon() + to_chat(user, "\icon[src] You switch [scanning ? "on" : "off"] [src].") + +/obj/item/device/geiger/update_icon() + if(!scanning) + icon_state = "geiger_off" + return 1 + + switch(radiation_count) + if(null) icon_state = "geiger_on_1" + if(-INFINITY to RAD_LEVEL_LOW) icon_state = "geiger_on_1" + if(RAD_LEVEL_LOW + 1 to RAD_LEVEL_MODERATE) icon_state = "geiger_on_2" + if(RAD_LEVEL_MODERATE + 1 to RAD_LEVEL_HIGH) icon_state = "geiger_on_3" + if(RAD_LEVEL_HIGH + 1 to RAD_LEVEL_VERY_HIGH) icon_state = "geiger_on_4" + if(RAD_LEVEL_VERY_HIGH + 1 to INFINITY) icon_state = "geiger_on_5" + +#undef RAD_LEVEL_LOW +#undef RAD_LEVEL_MODERATE +#undef RAD_LEVEL_HIGH +#undef RAD_LEVEL_VERY_HIGH \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm index 5c8aa2b2e0..67a4d3e788 100644 --- a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm @@ -155,6 +155,8 @@ new /obj/item/clothing/head/radiation(src) new /obj/item/clothing/suit/radiation(src) new /obj/item/clothing/head/radiation(src) + new /obj/item/device/geiger(src) + new /obj/item/device/geiger(src) /* * Bombsuit closet diff --git a/code/game/turfs/simulated/wall_attacks.dm b/code/game/turfs/simulated/wall_attacks.dm index 098782ebdf..b236e4dc90 100644 --- a/code/game/turfs/simulated/wall_attacks.dm +++ b/code/game/turfs/simulated/wall_attacks.dm @@ -7,6 +7,8 @@ if(can_open == WALL_OPENING) return + calc_rad_resistance() + if(density) can_open = WALL_OPENING //flick("[material.icon_base]fwall_opening", src) diff --git a/code/game/turfs/simulated/wall_icon.dm b/code/game/turfs/simulated/wall_icon.dm index dc7874b2aa..757639e1bb 100644 --- a/code/game/turfs/simulated/wall_icon.dm +++ b/code/game/turfs/simulated/wall_icon.dm @@ -26,6 +26,7 @@ else if(material.opacity < 0.5 && opacity) set_light(0) + calc_rad_resistance() update_connections(1) update_icon() diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index f8544e714d..376fb8e452 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -48,6 +48,9 @@ if(!radiate()) return PROCESS_KILL +/turf/simulated/wall/proc/get_material() + return material + /turf/simulated/wall/bullet_act(var/obj/item/projectile/Proj) if(istype(Proj,/obj/item/projectile/beam)) burn(2500) @@ -265,8 +268,7 @@ if(!total_radiation) return - for(var/mob/living/L in range(3,src)) - L.apply_effect(total_radiation, IRRADIATE,0) + radiation_repository.radiate(src, total_radiation) return total_radiation /turf/simulated/wall/proc/burn(temperature) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 3f2e0064f2..87b4b2b648 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -140,6 +140,12 @@ var/const/enterloopsanity = 100 if(ismob(A)) var/mob/M = A + var/mob/living/L = A + if(istype(L)) + if(!(L in radiation_repository.irradiated_mobs)) + if(src in radiation_repository.irradiated_turfs) + radiation_repository.irradiated_mobs.Add(L) + L.handle_footstep(src) if(!M.lastarea) M.lastarea = get_area(M.loc) if(M.lastarea.has_gravity == 0) @@ -147,9 +153,6 @@ var/const/enterloopsanity = 100 else if(!is_space()) M.inertia_dir = 0 M.make_floating(0) - if(isliving(M)) - var/mob/living/L = M - L.handle_footstep(src) ..() var/objects = 0 if(A && (A.flags & PROXMOVE)) @@ -255,4 +258,4 @@ var/const/enterloopsanity = 100 step(AM, turn(AM.last_move, 180)) if(isliving(AM)) var/mob/living/M = AM - M.turf_collision(src, speed) + M.turf_collision(src, speed) \ No newline at end of file diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm index 37a576a442..804d13404d 100644 --- a/code/modules/events/event_container.dm +++ b/code/modules/events/event_container.dm @@ -186,4 +186,4 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT #undef ASSIGNMENT_JANITOR #undef ASSIGNMENT_MEDICAL #undef ASSIGNMENT_SCIENTIST -#undef ASSIGNMENT_SECURITY +#undef ASSIGNMENT_SECURITY \ No newline at end of file diff --git a/code/modules/events/radiation_storm.dm b/code/modules/events/radiation_storm.dm index b9435f25aa..a8c9386fde 100644 --- a/code/modules/events/radiation_storm.dm +++ b/code/modules/events/radiation_storm.dm @@ -30,20 +30,18 @@ command_announcement.Announce("The station has passed the radiation belt. Please report to medbay if you experience any unusual symptoms. Maintenance will lose all access again shortly.", "Anomaly Alert") /datum/event/radiation_storm/proc/radiate() + var/radiation_level = rand(15, 35) + for(var/z in using_map.station_levels) + radiation_repository.z_radiate(locate(1, 1, z), radiation_level, 1) + for(var/mob/living/carbon/C in living_mob_list) var/area/A = get_area(C) if(!A) continue - if(!(A.z in using_map.station_levels)) - continue - if(A.flags & RAD_SHIELDED) - continue if(istype(C,/mob/living/carbon/human)) var/mob/living/carbon/human/H = C - H.apply_effect((rand(15,35)),IRRADIATE,0) if(prob(5)) - H.apply_effect((rand(40,70)),IRRADIATE,0) if (prob(75)) randmutb(H) // Applies bad mutation domutcheck(H,null,MUTCHK_FORCED) diff --git a/code/modules/events/solar_storm.dm b/code/modules/events/solar_storm.dm index 971e0418bc..4ebfc71d55 100644 --- a/code/modules/events/solar_storm.dm +++ b/code/modules/events/solar_storm.dm @@ -27,17 +27,14 @@ radiate() /datum/event/solar_storm/proc/radiate() - for(var/mob/living/L in living_mob_list) - var/turf/T = get_turf(L) - if(!T) + var/radiation_level = rand(15, 30) + for(var/area/A in all_areas) + if(!(A.z in using_map.player_levels)) continue - - if(!istype(T.loc,/area/space) && !istype(T,/turf/space)) //Make sure you're in a space area or on a space turf - continue - - //Todo: Apply some burn damage from the heat of the sun. Until then, enjoy some moderate radiation. - L.apply_effect((rand(15,30)),IRRADIATE,blocked = L.getarmor(null, "rad")) - + for(var/turf/T in A) + if(!istype(T.loc,/area/space) && !istype(T,/turf/space)) + continue + radiation_repository.irradiated_turfs[T] = radiation_level /datum/event/solar_storm/end() command_announcement.Announce("The solar storm has passed the station. It is now safe to resume EVA activities. Please report to medbay if you experience any unusual symptoms. ", "Anomaly Alert") diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index bf59f3c382..68363fb27f 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -482,7 +482,7 @@ var/list/mining_overlay_cache = list() M.flash_eyes() if(prob(50)) M.Stun(5) - M.apply_effect(25, IRRADIATE) + radiation_repository.flat_radiate(src, 25, 200) if(prob(25)) excavate_find(prob(5), finds[1]) else if(rand(1,500) == 1) @@ -559,4 +559,4 @@ var/list/mining_overlay_cache = list() if(mineral_name && (mineral_name in ore_data)) mineral = ore_data[mineral_name] UpdateMineral() - update_icon() + update_icon() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 61b13316b8..8f7398e0a8 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -94,7 +94,7 @@ emp_act var/obj/item/organ/external/organ = organs_by_name[organ_name] if(organ) var/weight = organ_rel_size[organ_name] - armorval += getarmor_organ(organ, type) * weight + armorval += (getarmor_organ(organ, type) * weight) total += weight return (armorval/max(total, 1)) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 795e535ebf..4b2c7f6f79 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -352,6 +352,7 @@ var/global/list/robot_modules = list( src.modules += new /obj/item/device/pipe_painter(src) src.modules += new /obj/item/device/floor_painter(src) src.modules += new /obj/item/weapon/gripper/no_use/loader(src) + src.modules += new /obj/item/device/geiger(src) var/datum/matter_synth/metal = new /datum/matter_synth/metal() var/datum/matter_synth/plasteel = new /datum/matter_synth/plasteel() @@ -396,6 +397,7 @@ var/global/list/robot_modules = list( src.modules += new /obj/item/device/pipe_painter(src) src.modules += new /obj/item/device/floor_painter(src) src.emag = new /obj/item/weapon/melee/baton/robot/arm(src) + src.modules += new /obj/item/device/geiger(src) var/datum/matter_synth/metal = new /datum/matter_synth/metal(40000) var/datum/matter_synth/glass = new /datum/matter_synth/glass(40000) diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index f900f6fcf4..6a40cf3b8e 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -396,17 +396,13 @@ /obj/machinery/power/port_gen/pacman/super/UseFuel() //produces a tiny amount of radiation when in use if (prob(2*power_output)) - for (var/mob/living/L in range(src, 5)) - L.apply_effect(1, IRRADIATE) //should amount to ~5 rads per minute at max safe power + radiation_repository.radiate(src, 4) ..() /obj/machinery/power/port_gen/pacman/super/explode() //a nice burst of radiation var/rads = 50 + (sheets + sheet_left)*1.5 - for (var/mob/living/L in range(src, 10)) - //should really fall with the square of the distance, but that makes the rads value drop too fast - //I dunno, maybe physics works different when you live in 2D -- SM radiation also works like this, apparently - L.apply_effect(max(20, round(rads/get_dist(L,src))), IRRADIATE) + radiation_repository.radiate(src, (max(20, rads))) explosion(src.loc, 3, 3, 5, 3) qdel(src) diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index dee15d9f14..ba817d392a 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -31,6 +31,11 @@ var/global/list/rad_collectors = list() last_power_new = 0 + var/turf/T = get_turf(src) + if(T in radiation_repository.irradiated_turfs) + receive_pulse((radiation_repository.irradiated_turfs[T] * 5)) //Maths is hard + + if(P) if(P.air_contents.gas["phoron"] == 0) investigate_log("out of fuel.","singulo") diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 39090ceac5..9309c6bd3c 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -406,15 +406,13 @@ var/toxrange = 10 var/toxdamage = 4 var/radiation = 15 - var/radiationmin = 3 if (src.energy>200) toxdamage = round(((src.energy-150)/50)*4,1) radiation = round(((src.energy-150)/50)*5,1) - radiationmin = round((radiation/5),1)// + radiation_repository.radiate(src, radiation) //Always radiate at max, so a decent dose of radiation is applied for(var/mob/living/M in view(toxrange, src.loc)) if(M.status_flags & GODMODE) continue - M.apply_effect(rand(radiationmin,radiation), IRRADIATE) toxdamage = (toxdamage - (toxdamage*M.getarmor(null, "rad"))) M.apply_effect(toxdamage, TOX) return @@ -448,13 +446,13 @@ /obj/singularity/proc/smwave() for(var/mob/living/M in view(10, src.loc)) if(prob(67)) - M.apply_effect(rand(energy), IRRADIATE) - M << "You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat." - M << "Miraculously, it fails to kill you." + to_chat(M, "You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.") + to_chat(M, "Miraculously, it fails to kill you.") else M << "You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat." M << "You don't even have a moment to react as you are reduced to ashes by the intense radiation." M.dust() + radiation_repository.radiate(src, rand(energy)) return /obj/singularity/proc/pulse() diff --git a/code/modules/supermatter/supermatter.dm b/code/modules/supermatter/supermatter.dm index 1ebd8207e0..46f8033b24 100644 --- a/code/modules/supermatter/supermatter.dm +++ b/code/modules/supermatter/supermatter.dm @@ -23,8 +23,11 @@ #define DAMAGE_RATE_LIMIT 3 //damage rate cap at power = 300, scales linearly with power -//These would be what you would get at point blank, decreases with distance -#define DETONATION_RADS 200 +// Base variants are applied to everyone on the same Z level +// Range variants are applied on per-range basis: numbers here are on point blank, it scales with the map size (assumes square shaped Z levels) +#define DETONATION_RADS 20 +#define DETONATION_HALLUCINATION_BASE 300 +#define DETONATION_HALLUCINATION_RANGE 300 #define DETONATION_HALLUCINATION 600 @@ -39,6 +42,7 @@ anchored = 0 light_range = 4 + rad_power = 1 //So it gets added to the repository var/gasefficency = 0.25 var/base_icon_state = "darkmatter" @@ -95,6 +99,10 @@ anchored = 1 grav_pulling = 1 exploded = 1 + var/turf/TS = get_turf(src) // The turf supermatter is on. SM being in a locker, mecha, or other container shouldn't block it's effects that way. + radiation_repository.z_radiate(TS, DETONATION_RADS) + radiation_repository.z_radiate(TS, DETONATION_RADS) + for(var/mob/living/mob in living_mob_list) var/turf/T = get_turf(mob) if(T && (loc.z == T.z)) @@ -102,8 +110,6 @@ //Hilariously enough, running into a closet should make you get hit the hardest. var/mob/living/carbon/human/H = mob H.hallucination += max(50, min(300, DETONATION_HALLUCINATION * sqrt(1 / (get_dist(mob, src) + 1)) ) ) - var/rads = DETONATION_RADS * sqrt( 1 / (get_dist(mob, src) + 1) ) - mob.apply_effect(rads, IRRADIATE) spawn(pull_time) explosion(get_turf(src), explosion_power, explosion_power * 2, explosion_power * 3, explosion_power * 4, 1) qdel(src) @@ -258,12 +264,15 @@ if(eye_shield < 1) l.hallucination = max(0, min(200, l.hallucination + power * config_hallucination_power * sqrt( 1 / max(1,get_dist(l, src)) ) ) ) +/* //adjusted range so that a power of 170 (pretty high) results in 9 tiles, roughly the distance from the core to the engine monitoring room. //note that the rads given at the maximum range is a constant 0.2 - as power increases the maximum range merely increases. for(var/mob/living/l in range(src, round(sqrt(power / 2)))) var/radius = max(get_dist(l, src), 1) var/rads = (power / 10) * ( 1 / (radius**2) ) l.apply_effect(rads, IRRADIATE) +*/ + rad_power = power * 1.5//Better close those shutters! power -= (power/DECAY_FACTOR)**3 //energy losses due to radiation @@ -377,8 +386,8 @@ "The unearthly ringing subsides and you notice you have new radiation burns.", 2) else l.show_message("You hear an uneartly ringing and notice your skin is covered in fresh radiation burns.", 2) - var/rads = 500 * sqrt( 1 / (get_dist(l, src) + 1) ) - l.apply_effect(rads, IRRADIATE) + var/rads = 500 + radiation_repository.radiate(src, rads) /obj/machinery/power/supermatter/proc/supermatter_pull() @@ -394,6 +403,7 @@ return + /obj/machinery/power/supermatter/GotoAirflowDest(n) //Supermatter not pushed around by airflow return diff --git a/code/modules/xenoarcheaology/effects/radiate.dm b/code/modules/xenoarcheaology/effects/radiate.dm index 7816409757..6c8d37838a 100644 --- a/code/modules/xenoarcheaology/effects/radiate.dm +++ b/code/modules/xenoarcheaology/effects/radiate.dm @@ -15,16 +15,10 @@ /datum/artifact_effect/radiate/DoEffectAura() if(holder) - var/turf/T = get_turf(holder) - for (var/mob/living/M in range(src.effectrange,T)) - M.apply_effect(radiation_amount,IRRADIATE,0) - M.updatehealth() + radiation_repository.flat_radiate(holder, radiation_amount, src.effectrange) return 1 /datum/artifact_effect/radiate/DoEffectPulse() if(holder) - var/turf/T = get_turf(holder) - for (var/mob/living/M in range(src.effectrange,T)) - M.apply_effect(radiation_amount * 25,IRRADIATE,0) - M.updatehealth() + radiation_repository.radiate(holder, ((radiation_amount * 25) * (sqrt(src.effectrange)))) //Need to get feedback on this return 1 diff --git a/code/modules/xenoarcheaology/tools/geosample_scanner.dm b/code/modules/xenoarcheaology/tools/geosample_scanner.dm index 9d6450a839..9e3343b680 100644 --- a/code/modules/xenoarcheaology/tools/geosample_scanner.dm +++ b/code/modules/xenoarcheaology/tools/geosample_scanner.dm @@ -198,8 +198,7 @@ radiation = rand() * 15 + 85 if(!rad_shield) //irradiate nearby mobs - for(var/mob/living/M in view(7,src)) - M.apply_effect(radiation / 25, IRRADIATE, 0) + radiation_repository.radiate(src, radiation / 25) else t_left_radspike = pick(10,15,25) @@ -361,4 +360,4 @@ scanned_item = null add_fingerprint(usr) - return 1 // update UIs attached to this object + return 1 // update UIs attached to this object \ No newline at end of file diff --git a/html/changelogs/cirra-Radiation.yml b/html/changelogs/cirra-Radiation.yml new file mode 100644 index 0000000000..53038532cd --- /dev/null +++ b/html/changelogs/cirra-Radiation.yml @@ -0,0 +1,37 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Cirra + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Added a unified radiation system. Radiation is lessened by obstacles, and distance." + - rscadd: "Added a geiger counter for measuring radiation levels, which can be found in certain vending machines and radiation closets." diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 336f8dfe9ca6529e358c535cf800995662f80912..1198dc0314405b17131745daabc112e319559d67 100644 GIT binary patch literal 55614 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 z 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 literal 51528 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üT&6RojtjKxL?!)u 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 Date: Mon, 22 May 2017 16:26:24 +0100 Subject: [PATCH 04/84] Tweaks readstorms as per Bay --- code/modules/events/radiation_storm.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/modules/events/radiation_storm.dm b/code/modules/events/radiation_storm.dm index a8c9386fde..1debfb2fcf 100644 --- a/code/modules/events/radiation_storm.dm +++ b/code/modules/events/radiation_storm.dm @@ -2,7 +2,7 @@ var/const/enterBelt = 30 var/const/radIntervall = 5 // Enough time between enter/leave belt for 10 hits, as per original implementation var/const/leaveBelt = 80 - var/const/revokeAccess = 135 + var/const/revokeAccess = 165 startWhen = 2 announceWhen = 1 endWhen = revokeAccess @@ -27,8 +27,7 @@ radiate() else if(activeFor == leaveBelt) - command_announcement.Announce("The station has passed the radiation belt. Please report to medbay if you experience any unusual symptoms. Maintenance will lose all access again shortly.", "Anomaly Alert") - + command_announcement.Announce("The station has passed the radiation belt. Please allow for up to one minute while radiation levels dissipate, and report to medbay if you experience any unusual symptoms. Maintenance will lose all access again shortly.", "Anomaly Alert") /datum/event/radiation_storm/proc/radiate() var/radiation_level = rand(15, 35) for(var/z in using_map.station_levels) From 40ba4f5913292dc382540def4c63192075004748 Mon Sep 17 00:00:00 2001 From: Yoshax Date: Mon, 22 May 2017 16:29:04 +0100 Subject: [PATCH 05/84] Fixes a radiation oversight as per Bay --- code/modules/events/radiation_storm.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/events/radiation_storm.dm b/code/modules/events/radiation_storm.dm index 1debfb2fcf..4596e9ef35 100644 --- a/code/modules/events/radiation_storm.dm +++ b/code/modules/events/radiation_storm.dm @@ -37,7 +37,8 @@ var/area/A = get_area(C) if(!A) continue - + if(A.flags & AREA_RAD_SHIELDED) + continue if(istype(C,/mob/living/carbon/human)) var/mob/living/carbon/human/H = C if(prob(5)) From e5ebd3a56d781def2f789d4c966249805a4140cf Mon Sep 17 00:00:00 2001 From: Yoshax Date: Mon, 22 May 2017 16:33:37 +0100 Subject: [PATCH 06/84] Fixes a radiation oversight --- code/modules/events/radiation_storm.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/events/radiation_storm.dm b/code/modules/events/radiation_storm.dm index 4596e9ef35..bf2dec5e4e 100644 --- a/code/modules/events/radiation_storm.dm +++ b/code/modules/events/radiation_storm.dm @@ -37,7 +37,7 @@ var/area/A = get_area(C) if(!A) continue - if(A.flags & AREA_RAD_SHIELDED) + if(A.flags & RAD_SHIELDED) continue if(istype(C,/mob/living/carbon/human)) var/mob/living/carbon/human/H = C From 4dd0bb9bbebc989c63cba8068c8fd4c9a1d043ef Mon Sep 17 00:00:00 2001 From: Yoshax Date: Mon, 22 May 2017 16:46:25 +0100 Subject: [PATCH 07/84] Fixes SM stuff --- code/modules/supermatter/supermatter.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/modules/supermatter/supermatter.dm b/code/modules/supermatter/supermatter.dm index 46f8033b24..9db6eca0ad 100644 --- a/code/modules/supermatter/supermatter.dm +++ b/code/modules/supermatter/supermatter.dm @@ -100,9 +100,10 @@ grav_pulling = 1 exploded = 1 var/turf/TS = get_turf(src) // The turf supermatter is on. SM being in a locker, mecha, or other container shouldn't block it's effects that way. - radiation_repository.z_radiate(TS, DETONATION_RADS) - radiation_repository.z_radiate(TS, DETONATION_RADS) - + if(!TS) + return + for(var/z in GetConnectedZlevels(TS.z)) + radiation_repository.z_radiate(locate(1, 1, z), DETONATION_RADS, 1) for(var/mob/living/mob in living_mob_list) var/turf/T = get_turf(mob) if(T && (loc.z == T.z)) @@ -111,7 +112,7 @@ var/mob/living/carbon/human/H = mob H.hallucination += max(50, min(300, DETONATION_HALLUCINATION * sqrt(1 / (get_dist(mob, src) + 1)) ) ) spawn(pull_time) - explosion(get_turf(src), explosion_power, explosion_power * 2, explosion_power * 3, explosion_power * 4, 1) + explosion(TS, explosion_power, explosion_power * 2, explosion_power * 3, explosion_power * 4, 1) qdel(src) return @@ -389,7 +390,6 @@ var/rads = 500 radiation_repository.radiate(src, rads) - /obj/machinery/power/supermatter/proc/supermatter_pull() //following is adapted from singulo code if(defer_powernet_rebuild != 2) From 341be4ccb8f0a71e2cc05e8e1fb3d6c12e8a35cb Mon Sep 17 00:00:00 2001 From: Yoshax Date: Mon, 22 May 2017 16:48:52 +0100 Subject: [PATCH 08/84] Max health thing --- code/game/objects/items/devices/scanners.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 6399d0ce4a..3d48a40374 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -69,7 +69,7 @@ REAGENT SCANNER user.show_message("Analyzing Results for [M]:") user.show_message("Overall Status: dead") else - user.show_message("Analyzing Results for [M]:\n\t Overall Status: [M.stat > 1 ? "dead" : "[round(M.health*100/M.maxHealth)]% healthy"]") + user.show_message("Analyzing Results for [M]:\n\t Overall Status: [M.stat > 1 ? "dead" : "[round(M.health*100/M.getMaxHealth())]% healthy"]") user.show_message(" Key: Suffocation/Toxin/Burns/Brute", 1) user.show_message(" Damage Specifics: [OX] - [TX] - [BU] - [BR]") user.show_message("Body Temperature: [M.bodytemperature-T0C]°C ([M.bodytemperature*1.8-459.67]°F)", 1) From b1250a4391ba446d68e8d61af3836796fdccff55 Mon Sep 17 00:00:00 2001 From: Yoshax Date: Mon, 22 May 2017 17:17:28 +0100 Subject: [PATCH 09/84] Door stuff --- code/game/objects/structures/simple_doors.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/game/objects/structures/simple_doors.dm b/code/game/objects/structures/simple_doors.dm index 58742c3b60..4e302e0e31 100644 --- a/code/game/objects/structures/simple_doors.dm +++ b/code/game/objects/structures/simple_doors.dm @@ -168,8 +168,7 @@ /obj/structure/simple_door/process() if(!material.radioactivity) return - for(var/mob/living/L in range(1,src)) - L.apply_effect(round(material.radioactivity/3),IRRADIATE,0) + radiation_repository.radiate(src, round(material.radioactivity/3)) /obj/structure/simple_door/iron/New(var/newloc,var/material_name) ..(newloc, "iron") From cfa6387f1549067493399315780d3a12769bba1a Mon Sep 17 00:00:00 2001 From: MagmaRam Date: Wed, 24 May 2017 15:45:48 -0500 Subject: [PATCH 10/84] Reduces autoheal cutoff on all external wounds to 10. --- code/modules/organs/wound.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/organs/wound.dm b/code/modules/organs/wound.dm index 060f1f045e..85925d9158 100644 --- a/code/modules/organs/wound.dm +++ b/code/modules/organs/wound.dm @@ -44,7 +44,7 @@ var/damage_type = CUT // whether this wound needs a bandage/salve to heal at all // the maximum amount of damage that this wound can have and still autoheal - var/autoheal_cutoff = 15 + var/autoheal_cutoff = 10 @@ -336,7 +336,6 @@ datum/wound/puncture/massive "moderate bruise" = 20, "small bruise" = 10, "tiny bruise" = 5) bleed_threshold = 20 max_bleeding_stage = 2 //only huge bruise and above can bleed. - autoheal_cutoff = 30 damage_type = BRUISE /** BURNS **/ From 9d2e7fe1ae4ab69a529ac956fc0afedc3879badc Mon Sep 17 00:00:00 2001 From: Leshana Date: Wed, 24 May 2017 17:14:03 -0400 Subject: [PATCH 11/84] Prevent Gravity Failure event from disabling gravity on planet z levels. --- code/modules/events/gravity.dm | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/code/modules/events/gravity.dm b/code/modules/events/gravity.dm index 0719c9bba1..f5fc8f0b5a 100644 --- a/code/modules/events/gravity.dm +++ b/code/modules/events/gravity.dm @@ -1,8 +1,14 @@ /datum/event/gravity announceWhen = 5 + var/list/zLevels /datum/event/gravity/setup() endWhen = rand(15, 60) + // Setup which levels we will disrupt gravit on. + zLevels = using_map.station_levels.Copy() + if (planet_controller) + for(var/datum/planet/P in planet_controller.planets) + zLevels -= P.expected_z_levels /datum/event/gravity/announce() command_announcement.Announce("Feedback surge detected in mass-distributions systems. Artificial gravity has been disabled whilst the system \ @@ -11,7 +17,7 @@ /datum/event/gravity/start() gravity_is_on = 0 for(var/area/A in world) - if(A.z in using_map.station_levels) + if(A.z in zLevels) A.gravitychange(gravity_is_on, A) /datum/event/gravity/end() @@ -19,7 +25,7 @@ gravity_is_on = 1 for(var/area/A in world) - if(A.z in using_map.station_levels) + if(A.z in zLevels) A.gravitychange(gravity_is_on, A) command_announcement.Announce("Gravity generators are again functioning within normal parameters. Sorry for any inconvenience.", "Gravity Restored") From e3bc79b12c7462ac2efd9bdacf43a5236f3fd5b0 Mon Sep 17 00:00:00 2001 From: MagmaRam Date: Wed, 24 May 2017 16:44:57 -0500 Subject: [PATCH 12/84] Changelog --- html/changelogs/MagmaRam - Health Regen.yml | 36 +++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 html/changelogs/MagmaRam - Health Regen.yml diff --git a/html/changelogs/MagmaRam - Health Regen.yml b/html/changelogs/MagmaRam - Health Regen.yml new file mode 100644 index 0000000000..c0cab4f13f --- /dev/null +++ b/html/changelogs/MagmaRam - Health Regen.yml @@ -0,0 +1,36 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: MagmaRam + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - tweak: "Nerfed health regeneration, especially on bruises." From db95f36e3bd36e850d206d8616b682d1064baaa7 Mon Sep 17 00:00:00 2001 From: Leshana Date: Mon, 22 May 2017 14:19:14 -0400 Subject: [PATCH 13/84] Fixes Runtime in camera.dm,214: pick() from empty list proc name: attackby (/obj/machinery/camera/attackby) --- code/game/machinery/camera/camera.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index b105222084..85d97a2b30 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -206,7 +206,7 @@ user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) if (W.force >= src.toughness) user.do_attack_animation(src) - visible_message("[src] has been [pick(W.attack_verb)] with [W] by [user]!") + visible_message("[src] has been [W.attack_verb.len? pick(W.attack_verb) : "attacked"] with [W] by [user]!") if (istype(W, /obj/item)) //is it even possible to get into attackby() with non-items? var/obj/item/I = W if (I.hitsound) From 1b0474d57a50a7cefada05ca45d7c6f253506b3d Mon Sep 17 00:00:00 2001 From: Leshana Date: Mon, 22 May 2017 14:19:38 -0400 Subject: [PATCH 14/84] Fixes Runtime in preferences_setup.dm,230: Cannot read null.title proc name: dress preview mob (/datum/preferences/proc/dress_preview_mob) --- code/modules/mob/new_player/preferences_setup.dm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index 4cf3499b8a..5fa306b7b9 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -224,12 +224,14 @@ var/datum/gear/G = gear_datums[thing] if(G) var/permitted = 0 - if(G.allowed_roles) + if(!G.allowed_roles) + permitted = 1 + else if(!previewJob) + permitted = 0 + else for(var/job_name in G.allowed_roles) if(previewJob.title == job_name) permitted = 1 - else - permitted = 1 if(G.whitelisted && (G.whitelisted != mannequin.species.name)) permitted = 0 From c53899bea6626704516609c2464dd0b79d1398bc Mon Sep 17 00:00:00 2001 From: Leshana Date: Tue, 23 May 2017 21:03:39 -0400 Subject: [PATCH 15/84] Fixes Runtime in lattice.dm,41: undefined proc or verb /turf/simulated/floor/airless/update(). --- code/game/objects/structures/lattice.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index 96291ecd27..ec4652901d 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -37,7 +37,7 @@ if(istype(loc, /turf/simulated/open)) var/turf/simulated/open/O = loc spawn(1) - if(O) // If we built a new floor with the lattice, the open turf won't exist anymore. + if(istype(O)) // If we built a new floor with the lattice, the open turf won't exist anymore. O.update() // This lattice may be supporting things on top of it. If it's being deleted, they need to fall down. ..() From 34c73dab6963c91086f30a1bc1ad6a79038e766e Mon Sep 17 00:00:00 2001 From: Leshana Date: Wed, 24 May 2017 16:37:06 -0400 Subject: [PATCH 16/84] Optimization/Rewrite of Radiation Controller * The performance of the radiation controller as-is was not fast enough for inclusion in production servers, but it has some nice featuers, so rewrote it to be more performant. * Instead of storing the radiation strength for every turf, we only store the sources of radiation, and calculate the strength only for mobs who might be in range. * Old method was ray-tracing to every turf in range whether anything was there to be irradiated or not. Could be hundreds of turfs. New method only lazily calcualtes strength at a turf if we actually need to know it. Often times this is zero turfs if nobody is standing in engineering. * Removed the automatic processing of objects with "rad_power" set. Objects are responsible for calling the repository to create/update their radiation sources. Saves some extra overhead that in practice was redundant with other process controllers. * Also tweaked to be more respectful of qdel'd objects and added some comments. --- code/controllers/Processes/radiation.dm | 68 ++++---- code/datums/repositories/radiation.dm | 178 +++++++++++--------- code/game/atoms_movable.dm | 3 - code/game/machinery/doors/airlock.dm | 9 +- code/game/machinery/doors/blast_door.dm | 3 +- code/game/machinery/doors/door.dm | 3 +- code/game/objects/items/devices/geiger.dm | 2 +- code/game/objects/items/devices/scanners.dm | 6 +- code/game/turfs/simulated/wall_attacks.dm | 2 +- code/game/turfs/simulated/wall_icon.dm | 2 +- code/game/turfs/turf.dm | 11 +- code/modules/events/event_container.dm | 2 +- code/modules/events/solar_storm.dm | 17 +- code/modules/mining/mine_turfs.dm | 2 +- code/modules/power/singularity/collector.dm | 8 +- code/modules/supermatter/supermatter.dm | 6 +- 16 files changed, 172 insertions(+), 150 deletions(-) diff --git a/code/controllers/Processes/radiation.dm b/code/controllers/Processes/radiation.dm index 8ebd3a71a8..e64f71ebb7 100644 --- a/code/controllers/Processes/radiation.dm +++ b/code/controllers/Processes/radiation.dm @@ -7,37 +7,43 @@ linked = radiation_repository /datum/controller/process/radiation/doWork() -// set background = 1 - for(var/turf/T in linked.irradiated_turfs) - if(!T) - linked.irradiated_turfs.Remove(T) + // Step 1 - Sources Decay + var/list/sources = linked.sources + for(var/thing in sources) + if(deleted(thing)) + sources.Remove(thing) continue - linked.irradiated_turfs[T] -= config.radiation_decay_rate - if(linked.irradiated_turfs[T] <= config.radiation_lower_limit) - linked.irradiated_turfs.Remove(T) - SCHECK - for(var/mob/living/L in linked.irradiated_mobs) - if(!L) - linked.irradiated_mobs.Remove(L) - continue - if(get_turf(L) in linked.irradiated_turfs) - L.rad_act(linked.irradiated_turfs[get_turf(L)]) - if(!L.radiation) - linked.irradiated_mobs.Remove(L) - SCHECK - for(var/thing in linked.sources) - if(!thing) - linked.sources.Remove(thing) - continue - var/atom/emitter = thing - linked.radiate(emitter, emitter.rad_power) - to_process.Cut() - SCHECK - for(var/thing in linked.resistance_cache) - if(!thing) - linked.resistance_cache.Remove(thing) + var/datum/radiation_source/S = thing + if(S.decay) + S.update_rad_power(S.rad_power - config.radiation_decay_rate) + if(S.rad_power <= config.radiation_lower_limit) + sources.Remove(S) + SCHECK // This scheck probably just wastes resources, but better safe than sorry in this case. + + // Step 2 - Cache Expires + var/list/resistance_cache = linked.resistance_cache + for(var/thing in resistance_cache) + if(deleted(thing)) + resistance_cache.Remove(thing) continue var/turf/T = thing - if((length(T.contents) + 1) != linked.resistance_cache[T]) - T.calc_rad_resistance() - SCHECK \ No newline at end of file + if((length(T.contents) + 1) != resistance_cache[T]) + resistance_cache.Remove(T) // If its stale REMOVE it! It will get added if its needed. + SCHECK + + // Step 3 - Registered irradiatable things are checked for radiation + var/list/registered_listeners = living_mob_list // For now just use this. Nothing else is interested anyway. + if(length(linked.sources) > 0) + for(var/thing in registered_listeners) + if(deleted(thing)) + continue + var/atom/A = thing + var/turf/T = get_turf(thing) + var/rads = linked.get_rads_at_turf(T) + if(rads) + A.rad_act(rads) + SCHECK + +/datum/controller/process/radiation/statProcess() + ..() + stat(null, "[linked.sources.len] sources, [linked.resistance_cache.len] cached turfs") diff --git a/code/datums/repositories/radiation.dm b/code/datums/repositories/radiation.dm index bdf2b18322..457e423b4e 100644 --- a/code/datums/repositories/radiation.dm +++ b/code/datums/repositories/radiation.dm @@ -1,114 +1,132 @@ -//#define RADDBG - -var/repository/radiation/radiation_repository = new() - -var/list/to_process = list() +var/global/repository/radiation/radiation_repository = new() /repository/radiation - var/list/sources = list() //All the radiation sources we know about - var/list/irradiated_turfs = list() - var/list/irradiated_mobs = list() - var/list/resistance_cache = list() + var/list/sources = list() // all radiation source datums + var/list/sources_assoc = list() // Sources indexed by turf for de-duplication. + var/list/resistance_cache = list() // Cache of turf's radiation resistance. -/repository/radiation/proc/report_rads(var/turf/T as turf) - return irradiated_turfs[T] +// Describes a point source of radiation. Created either in response to a pulse of radiation, or over an irradiated atom. +// Sources will decay over time, unless something is renewing their power! +/datum/radiation_source + var/turf/source_turf // Location of the radiation source. + var/rad_power // Strength of the radiation being emitted. + var/decay = TRUE // True for automatic decay. False if owner promises to handle it (i.e. supermatter) + var/respect_maint = FALSE // True for not affecting RAD_SHIELDED areas. + var/flat = FALSE // True for power falloff with distance. + var/range // Cached maximum range, used for quick checks against mobs. +/datum/radiation_source/Destroy() + radiation_repository.sources -= src + if(radiation_repository.sources_assoc[src.source_turf] == src) + radiation_repository.sources -= src.source_turf + . = ..() + +/datum/radiation_source/proc/update_rad_power(var/new_power = null) + if(new_power != null && new_power != rad_power) + rad_power = new_power + . = 1 + if(. && !flat) + range = min(round(sqrt(rad_power / config.radiation_lower_limit)), 31) + +// Ray trace from all active radiation sources to T and return the strongest effect. +/repository/radiation/proc/get_rads_at_turf(var/turf/T) + if(!istype(T)) return 0 + + . = 0 + for(var/value in sources) + var/datum/radiation_source/source = value + if(source.rad_power < .) + continue // Already being affected by a stronger source + var/dist = get_dist(source.source_turf, T) + if(dist > source.range) + continue // Too far to possibly affect + if(source.respect_maint) + var/atom/A = T.loc + if(A.flags & RAD_SHIELDED) + continue // In shielded area + if(source.flat) + . = max(., source.rad_power) + continue // No need to ray trace for flat field + + // Okay, now ray trace to find resistence! + var/turf/origin = source.source_turf + var/working = source.rad_power + while(origin != T) + origin = get_step_towards(origin, T) //Raytracing + if(!(origin in resistance_cache)) //Only get the resistance if we don't already know it. + origin.calc_rad_resistance() + working = max((working - (origin.cached_rad_resistance * config.radiation_resistance_multiplier)), 0) + if(working <= .) + break // Already affected by a stronger source (or its zero...) + . = max((working * (1 / (dist ** 2))), .) //Butchered version of the inverse square law. Works for this purpose + +// Add a radiation source instance to the repository. It will override any existing source on the same turf. +/repository/radiation/proc/add_source(var/datum/radiation_source/S) + var/datum/radiation_source/existing = sources_assoc[S.source_turf] + if(existing) + qdel(existing) + sources += S + sources_assoc[S.source_turf] = S + +// Creates a temporary radiation source that will decay /repository/radiation/proc/radiate(source, power) //Sends out a radiation pulse, taking walls into account if(!(source && power)) //Sanity checking return + var/datum/radiation_source/S = new() + S.source_turf = get_turf(source) + S.update_rad_power(power) + add_source(S) + return S - var/range = min(round(sqrt(power / config.radiation_lower_limit)), 31) - var/turf/epicentre = get_turf(source) - to_process = list() - - range = min(epicentre.x, world.maxx - epicentre.x, epicentre.y, world.maxy - epicentre.y, range) - - to_process = trange(range, epicentre) - to_process[epicentre] = power - - for(var/turf/spot in to_process) - var/turf/origin = get_turf(epicentre) - var/working = power - while(origin != spot) - origin = get_step_towards(origin, spot) //Raytracing - if(!(origin in resistance_cache)) //Only get the resistance if we don't already know it. - origin.calc_rad_resistance() - working = max((working - (origin.rad_resistance * config.radiation_resistance_multiplier)), 0) - if(!working) - break - if(!to_process[origin]) - to_process[origin] = working - - else - to_process[origin] = max(to_process[origin], working) - - for(var/turf/spot in to_process) - irradiated_turfs[spot] = max(((to_process[spot]) * (1 / (get_dist(epicentre, spot) ** 2))), irradiated_turfs[spot]) //Butchered version of the inverse square law. Works for this purpose - #ifdef RADDBG - var/x = Clamp( irradiated_turfs[spot], 0, 255) - spot.color = rgb(5,x,5) - #endif - -/repository/radiation/proc/flat_radiate(source, power, range, var/respect_maint=0) //Sets the radiation in a range to a constant value. +// Sets the radiation in a range to a constant value. +/repository/radiation/proc/flat_radiate(source, power, range, var/respect_maint = FALSE) if(!(source && power && range)) return - var/turf/epicentre = get_turf(source) - range = min(epicentre.x, world.maxx - epicentre.x, epicentre.y, world.maxy - epicentre.y, range) - if(!respect_maint) - for(var/turf/T in trange(range, epicentre)) - irradiated_turfs[T] = max(power, irradiated_turfs[T]) - else - for(var/turf/T in trange(range, epicentre)) - var/area/A = T.loc - if(A.flags & RAD_SHIELDED) - continue - irradiated_turfs[T] = max(power, irradiated_turfs[T]) + var/datum/radiation_source/S = new() + S.flat = TRUE + S.range = range + S.respect_maint = respect_maint + S.source_turf = get_turf(source) + S.update_rad_power(power) + add_source(S) + return S -/repository/radiation/proc/z_radiate(var/atom/source, power, var/respect_maint=0) //Irradiates a full Z-level. Hacky way of doing it, but not too expensive. +// Irradiates a full Z-level. Hacky way of doing it, but not too expensive. +/repository/radiation/proc/z_radiate(var/atom/source, power, var/respect_maint = FALSE) if(!(power && source)) return var/turf/epicentre = locate(round(world.maxx / 2), round(world.maxy / 2), source.z) flat_radiate(epicentre, power, world.maxx, respect_maint) +/turf + var/cached_rad_resistance = 0 + /turf/proc/calc_rad_resistance() - rad_resistance = 0 + cached_rad_resistance = 0 for(var/obj/O in src.contents) if(O.rad_resistance) //Override - rad_resistance += O.rad_resistance + cached_rad_resistance += O.rad_resistance - else if(O.density) //So doors don't get counted + else if(O.density) //So open doors don't get counted var/material/M = O.get_material() if(!M) continue - rad_resistance += M.weight + cached_rad_resistance += M.weight + // Looks like storing the contents length is meant to be a basic check if the cache is stale due to items enter/exiting. Better than nothing so I'm leaving it as is. ~Leshana radiation_repository.resistance_cache[src] = (length(contents) + 1) /turf/simulated/wall/calc_rad_resistance() radiation_repository.resistance_cache[src] = (length(contents) + 1) - rad_resistance = (density ? material.weight : 0) + cached_rad_resistance = (density ? material.weight : 0) -/atom - var/rad_power = 0 - var/rad_resistance = 0 +/obj + var/rad_resistance = 0 // Allow overriding rad resistance -/atom/Destroy() - if(rad_power) - radiation_repository.sources.Remove(src) - . = ..() - -/atom/proc/update_radiation() //For VV'ing something to make it radioactive at runtime - if((rad_power) && (!(src in radiation_repository.sources))) - radiation_repository.sources.Add(src) - else if((!rad_power) && (src in radiation_repository.sources)) - radiation_repository.sources.Remove(src) - -/atom/proc/rad_act(var/severity) //If people expand the system, this may be useful. Here as a placeholder until then +// If people expand the system, this may be useful. Here as a placeholder until then +/atom/proc/rad_act(var/severity) return 1 /mob/living/rad_act(var/severity) if(severity) src.apply_effect(severity, IRRADIATE, src.getarmor(null, "rad")) - for(var/obj/I in src) + for(var/atom/I in src) I.rad_act(severity) - - -//#undef RADDBG \ No newline at end of file diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 82061ddb6a..fe9f99b032 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -53,9 +53,6 @@ pulledby = null /atom/movable/proc/initialize() - if(rad_power) - radiation_repository.sources.Add(src) - if(!isnull(gcDestroyed)) crash_with("GC: -- [type] had initialize() called after qdel() --") diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index c1ec9287b0..5d8d068d49 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -263,7 +263,7 @@ icon = 'icons/obj/doors/Dooruranium.dmi' mineral = "uranium" var/last_event = 0 - rad_power = 7.5 + var/rad_power = 7.5 /obj/machinery/door/airlock/process() // Deliberate no call to parent. @@ -278,6 +278,13 @@ ..() +/obj/machinery/door/airlock/uranium/process() + if(world.time > last_event+20) + if(prob(50)) + radiation_repository.radiate(src, rad_power) + last_event = world.time + ..() + /obj/machinery/door/airlock/phoron name = "Phoron Airlock" desc = "No way this can end badly." diff --git a/code/game/machinery/doors/blast_door.dm b/code/game/machinery/doors/blast_door.dm index f8e1d1cbb5..41680d3de7 100644 --- a/code/game/machinery/doors/blast_door.dm +++ b/code/game/machinery/doors/blast_door.dm @@ -53,8 +53,7 @@ icon_state = icon_state_closed else icon_state = icon_state_open - var/turf/T = get_turf(src) - T.calc_rad_resistance() + radiation_repository.resistance_cache.Remove(get_turf(src)) return // Proc: force_open() diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 898683192f..cf7f96d52d 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -362,8 +362,7 @@ icon_state = "door1" else icon_state = "door0" - var/turf/T = get_turf(src) - T.calc_rad_resistance() + radiation_repository.resistance_cache.Remove(get_turf(src)) return diff --git a/code/game/objects/items/devices/geiger.dm b/code/game/objects/items/devices/geiger.dm index acd85b730c..62cb9d9862 100644 --- a/code/game/objects/items/devices/geiger.dm +++ b/code/game/objects/items/devices/geiger.dm @@ -22,7 +22,7 @@ /obj/item/device/geiger/process() if(!scanning) return - radiation_count = radiation_repository.report_rads(get_turf(src)) + radiation_count = radiation_repository.get_rads_at_turf(get_turf(src)) update_icon() /obj/item/device/geiger/examine(mob/user) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 3d48a40374..cfd0693b15 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -69,7 +69,7 @@ REAGENT SCANNER user.show_message("Analyzing Results for [M]:") user.show_message("Overall Status: dead") else - user.show_message("Analyzing Results for [M]:\n\t Overall Status: [M.stat > 1 ? "dead" : "[round(M.health*100/M.getMaxHealth())]% healthy"]") + user.show_message("Analyzing Results for [M]:\n\t Overall Status: [M.stat > 1 ? "dead" : "[round((M.health/M.getMaxHealth())*100) ]% healthy"]") user.show_message(" Key: Suffocation/Toxin/Burns/Brute", 1) user.show_message(" Damage Specifics: [OX] - [TX] - [BU] - [BR]") user.show_message("Body Temperature: [M.bodytemperature-T0C]°C ([M.bodytemperature*1.8-459.67]°F)", 1) @@ -100,9 +100,7 @@ REAGENT SCANNER OX = fake_oxy > 50 ? "Severe oxygen deprivation detected" : "Subject bloodstream oxygen level normal" user.show_message("[OX] | [TX] | [BU] | [BR]") if(M.radiation) - user.show_message("Radiation Level: [M.radiation]") - else - user.show_message("No radiation detected.") + user.show_message("Radiation detected.") if(istype(M, /mob/living/carbon)) var/mob/living/carbon/C = M if(C.reagents.total_volume) diff --git a/code/game/turfs/simulated/wall_attacks.dm b/code/game/turfs/simulated/wall_attacks.dm index b236e4dc90..890574d664 100644 --- a/code/game/turfs/simulated/wall_attacks.dm +++ b/code/game/turfs/simulated/wall_attacks.dm @@ -7,7 +7,7 @@ if(can_open == WALL_OPENING) return - calc_rad_resistance() + radiation_repository.resistance_cache.Remove(src) if(density) can_open = WALL_OPENING diff --git a/code/game/turfs/simulated/wall_icon.dm b/code/game/turfs/simulated/wall_icon.dm index 757639e1bb..eab99bfba7 100644 --- a/code/game/turfs/simulated/wall_icon.dm +++ b/code/game/turfs/simulated/wall_icon.dm @@ -26,7 +26,7 @@ else if(material.opacity < 0.5 && opacity) set_light(0) - calc_rad_resistance() + radiation_repository.resistance_cache.Remove(src) update_connections(1) update_icon() diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 87b4b2b648..3f2e0064f2 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -140,12 +140,6 @@ var/const/enterloopsanity = 100 if(ismob(A)) var/mob/M = A - var/mob/living/L = A - if(istype(L)) - if(!(L in radiation_repository.irradiated_mobs)) - if(src in radiation_repository.irradiated_turfs) - radiation_repository.irradiated_mobs.Add(L) - L.handle_footstep(src) if(!M.lastarea) M.lastarea = get_area(M.loc) if(M.lastarea.has_gravity == 0) @@ -153,6 +147,9 @@ var/const/enterloopsanity = 100 else if(!is_space()) M.inertia_dir = 0 M.make_floating(0) + if(isliving(M)) + var/mob/living/L = M + L.handle_footstep(src) ..() var/objects = 0 if(A && (A.flags & PROXMOVE)) @@ -258,4 +255,4 @@ var/const/enterloopsanity = 100 step(AM, turn(AM.last_move, 180)) if(isliving(AM)) var/mob/living/M = AM - M.turf_collision(src, speed) \ No newline at end of file + M.turf_collision(src, speed) diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm index 804d13404d..37a576a442 100644 --- a/code/modules/events/event_container.dm +++ b/code/modules/events/event_container.dm @@ -186,4 +186,4 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT #undef ASSIGNMENT_JANITOR #undef ASSIGNMENT_MEDICAL #undef ASSIGNMENT_SCIENTIST -#undef ASSIGNMENT_SECURITY \ No newline at end of file +#undef ASSIGNMENT_SECURITY diff --git a/code/modules/events/solar_storm.dm b/code/modules/events/solar_storm.dm index 4ebfc71d55..afaa01ed95 100644 --- a/code/modules/events/solar_storm.dm +++ b/code/modules/events/solar_storm.dm @@ -27,14 +27,17 @@ radiate() /datum/event/solar_storm/proc/radiate() - var/radiation_level = rand(15, 30) - for(var/area/A in all_areas) - if(!(A.z in using_map.player_levels)) + // Note: Too complicated to be worth trying to use the radiation system for this. Its only in space anyway, so we make an exception in this case. + for(var/mob/living/L in living_mob_list) + var/turf/T = get_turf(L) + if(!T) continue - for(var/turf/T in A) - if(!istype(T.loc,/area/space) && !istype(T,/turf/space)) - continue - radiation_repository.irradiated_turfs[T] = radiation_level + + if(!istype(T.loc,/area/space) && !istype(T,/turf/space)) //Make sure you're in a space area or on a space turf + continue + + //Todo: Apply some burn damage from the heat of the sun. Until then, enjoy some moderate radiation. + L.rad_act(rand(15, 30)) /datum/event/solar_storm/end() command_announcement.Announce("The solar storm has passed the station. It is now safe to resume EVA activities. Please report to medbay if you experience any unusual symptoms. ", "Anomaly Alert") diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 68363fb27f..a6a857c43b 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -559,4 +559,4 @@ var/list/mining_overlay_cache = list() if(mineral_name && (mineral_name in ore_data)) mineral = ore_data[mineral_name] UpdateMineral() - update_icon() \ No newline at end of file + update_icon() diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index ba817d392a..47a9c08923 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -31,10 +31,10 @@ var/global/list/rad_collectors = list() last_power_new = 0 - var/turf/T = get_turf(src) - if(T in radiation_repository.irradiated_turfs) - receive_pulse((radiation_repository.irradiated_turfs[T] * 5)) //Maths is hard - + if(P && active) + var/rads = radiation_repository.get_rads_at_turf(get_turf(src)) + if(rads) + receive_pulse(rads * 5) //Maths is hard if(P) if(P.air_contents.gas["phoron"] == 0) diff --git a/code/modules/supermatter/supermatter.dm b/code/modules/supermatter/supermatter.dm index 9db6eca0ad..046c315ec9 100644 --- a/code/modules/supermatter/supermatter.dm +++ b/code/modules/supermatter/supermatter.dm @@ -42,7 +42,6 @@ anchored = 0 light_range = 4 - rad_power = 1 //So it gets added to the repository var/gasefficency = 0.25 var/base_icon_state = "darkmatter" @@ -112,7 +111,7 @@ var/mob/living/carbon/human/H = mob H.hallucination += max(50, min(300, DETONATION_HALLUCINATION * sqrt(1 / (get_dist(mob, src) + 1)) ) ) spawn(pull_time) - explosion(TS, explosion_power, explosion_power * 2, explosion_power * 3, explosion_power * 4, 1) + explosion(get_turf(src), explosion_power, explosion_power * 2, explosion_power * 3, explosion_power * 4, 1) qdel(src) return @@ -273,7 +272,7 @@ var/rads = (power / 10) * ( 1 / (radius**2) ) l.apply_effect(rads, IRRADIATE) */ - rad_power = power * 1.5//Better close those shutters! + radiation_repository.radiate(src, power * 1.5) //Better close those shutters! power -= (power/DECAY_FACTOR)**3 //energy losses due to radiation @@ -403,7 +402,6 @@ return - /obj/machinery/power/supermatter/GotoAirflowDest(n) //Supermatter not pushed around by airflow return From 8579adcc53d28aaa063aed1b3c75c243f66e4784 Mon Sep 17 00:00:00 2001 From: Spades Date: Fri, 26 May 2017 19:32:23 -0400 Subject: [PATCH 17/84] Naming convention of ammo is now consistent s = Speedloaders. (Functionally the same as clips, but they're not _really_ the same thing, just in case we change these later.) c = Clips. (Can also be used to fill other magazines.) m = Magazine. (Holds ammo rounds.) a = Ammo. (Individual rounds of ammo.) --- code/datums/autolathe/arms.dm | 50 ++++++------ code/datums/supplypacks/munitions.dm | 4 +- code/datums/uplink/ammunition.dm | 32 ++++---- code/game/machinery/autolathe.dm | 4 +- .../items/weapons/storage/uplink_kits.dm | 2 +- code/game/objects/random/random.dm | 6 +- .../crates_lockers/closets/secure/security.dm | 6 +- .../crates_lockers/closets/syndicate.dm | 10 +-- code/modules/admin/verbs/debug.dm | 4 +- code/modules/flufftext/Hallucination.dm | 2 +- code/modules/projectiles/ammunition/boxes.dm | 80 +++++++++---------- .../projectiles/guns/projectile/automatic.dm | 30 +++---- .../projectiles/guns/projectile/pistol.dm | 22 ++--- .../projectiles/guns/projectile/sniper.dm | 4 +- code/modules/random_map/drop/drop_types.dm | 10 +-- 15 files changed, 133 insertions(+), 133 deletions(-) diff --git a/code/datums/autolathe/arms.dm b/code/datums/autolathe/arms.dm index efe5791b11..276819d3ad 100644 --- a/code/datums/autolathe/arms.dm +++ b/code/datums/autolathe/arms.dm @@ -49,34 +49,34 @@ /////// .45 /datum/category_item/autolathe/arms/pistol_45 name = "pistol magazine (.45)" - path =/obj/item/ammo_magazine/c45m + path =/obj/item/ammo_magazine/m45 hidden = 1 /datum/category_item/autolathe/arms/pistol_45p name = "pistol magazine (.45 practice)" - path =/obj/item/ammo_magazine/c45m/practice + path =/obj/item/ammo_magazine/m45/practice /datum/category_item/autolathe/arms/pistol_45r name = "pistol magazine (.45 rubber)" - path =/obj/item/ammo_magazine/c45m/rubber + path =/obj/item/ammo_magazine/m45/rubber /datum/category_item/autolathe/arms/pistol_45f name = "pistol magazine (.45 flash)" - path =/obj/item/ammo_magazine/c45m/flash + path =/obj/item/ammo_magazine/m45/flash /datum/category_item/autolathe/arms/pistol_45uzi name = "uzi magazine (.45)" - path =/obj/item/ammo_magazine/c45uzi + path =/obj/item/ammo_magazine/m45uzi hidden = 1 /datum/category_item/autolathe/arms/tommymag name = "Tommygun magazine (.45)" - path =/obj/item/ammo_magazine/tommymag + path =/obj/item/ammo_magazine/m45tommy hidden = 1 /datum/category_item/autolathe/arms/tommydrum name = "Tommygun drum magazine (.45)" - path =/obj/item/ammo_magazine/tommydrum + path =/obj/item/ammo_magazine/m45tommydrum hidden = 1 /////// 9mm @@ -129,34 +129,34 @@ /////// 10mm /datum/category_item/autolathe/arms/smg_10mm name = "SMG magazine (10mm)" - path =/obj/item/ammo_magazine/a10mm + path =/obj/item/ammo_magazine/m10mm hidden = 1 /datum/category_item/autolathe/arms/pistol_50 name = "pistol magazine (.50AE)" - path =/obj/item/ammo_magazine/a50 + path =/obj/item/ammo_magazine/m50 hidden = 1 /////// 5.56mm /datum/category_item/autolathe/arms/rifle_556 name = "rifle magazine (5.56mm)" - path =/obj/item/ammo_magazine/c556 + path =/obj/item/ammo_magazine/m556 hidden = 1 /datum/category_item/autolathe/arms/rifle_556p name = "rifle magazine (5.56mm practice)" - path =/obj/item/ammo_magazine/c556/practice + path =/obj/item/ammo_magazine/m556/practice /datum/category_item/autolathe/arms/machinegun_556 name = "machinegun box magazine (5.56)" - path =/obj/item/ammo_magazine/a556 + path =/obj/item/ammo_magazine/m556saw hidden = 1 /////// 7.62 /datum/category_item/autolathe/arms/rifle_762 name = "rifle magazine (7.62mm)" - path =/obj/item/ammo_magazine/c762 + path =/obj/item/ammo_magazine/m762 hidden = 1 /datum/category_item/autolathe/arms/shotgun_magazine @@ -188,24 +188,24 @@ /datum/category_item/autolathe/arms/pistol_45 name = "pistol magazine (.45)" - path =/obj/item/ammo_magazine/c45m/empty + path =/obj/item/ammo_magazine/m45/empty category = "Arms and Ammunition" /datum/category_item/autolathe/arms/pistol_45uzi name = "uzi magazine (.45)" - path =/obj/item/ammo_magazine/c45uzi/empty + path =/obj/item/ammo_magazine/m45uzi/empty category = "Arms and Ammunition" hidden = 1 /datum/category_item/autolathe/arms/tommymag name = "Tommygun magazine (.45)" - path =/obj/item/ammo_magazine/tommymag/empty + path =/obj/item/ammo_magazine/m45tommy/empty category = "Arms and Ammunition" hidden = 1 /datum/category_item/autolathe/arms/tommydrum name = "Tommygun drum magazine (.45)" - path =/obj/item/ammo_magazine/tommydrum/empty + path =/obj/item/ammo_magazine/m45tommydrum/empty category = "Arms and Ammunition" hidden = 1 @@ -221,24 +221,24 @@ /datum/category_item/autolathe/arms/smg_10mm name = "SMG magazine (10mm)" - path =/obj/item/ammo_magazine/a10mm/empty + path =/obj/item/ammo_magazine/m10mm/empty category = "Arms and Ammunition" hidden = 1 /datum/category_item/autolathe/arms/pistol_50 name = "pistol magazine (.50AE)" - path =/obj/item/ammo_magazine/a50/empty + path =/obj/item/ammo_magazine/m50/empty category = "Arms and Ammunition" hidden = 1 /datum/category_item/autolathe/arms/rifle_556 name = "10rnd rifle magazine (5.56mm)" - path =/obj/item/ammo_magazine/a556/empty + path =/obj/item/ammo_magazine/m556saw/empty category = "Arms and Ammunition" /datum/category_item/autolathe/arms/rifle_556m name = "20rnd rifle magazine (5.56mm)" - path =/obj/item/ammo_magazine/a556m/empty + path =/obj/item/ammo_magazine/m556sawm/empty category = "Arms and Ammunition" hidden = 1 @@ -250,7 +250,7 @@ /datum/category_item/autolathe/arms/rifle_762 name = "20rnd rifle magazine (7.62mm)" - path =/obj/item/ammo_magazine/c762/empty + path =/obj/item/ammo_magazine/m762/empty category = "Arms and Ammunition" hidden = 1 @@ -272,17 +272,17 @@ /datum/category_item/autolathe/arms/speedloader_357 name = "speedloader (.357)" - path =/obj/item/ammo_magazine/a357 + path =/obj/item/ammo_magazine/s357 hidden = 1 /datum/category_item/autolathe/arms/speedloader_38 name = "speedloader (.38)" - path =/obj/item/ammo_magazine/c38 + path =/obj/item/ammo_magazine/s38 hidden = 1 /datum/category_item/autolathe/arms/speedloader_38r name = "speedloader (.38 rubber)" - path =/obj/item/ammo_magazine/c38/rubber + path =/obj/item/ammo_magazine/s38/rubber // Commented out until metal exploits with autolathe is fixed. /*/datum/category_item/autolathe/arms/pistol_clip_45 diff --git a/code/datums/supplypacks/munitions.dm b/code/datums/supplypacks/munitions.dm index e2df9609ad..c9817e2274 100644 --- a/code/datums/supplypacks/munitions.dm +++ b/code/datums/supplypacks/munitions.dm @@ -27,7 +27,7 @@ name = "Flare guns crate" contains = list( /obj/item/weapon/gun/projectile/sec/flash, - /obj/item/ammo_magazine/c45m/flash, + /obj/item/ammo_magazine/m45/flash, /obj/item/weapon/gun/projectile/shotgun/doublebarrel/flare, /obj/item/weapon/storage/box/flashshells ) @@ -156,7 +156,7 @@ contains = list( /obj/item/ammo_magazine/mc9mmt, /obj/item/ammo_magazine/mc9mmt/rubber, - /obj/item/ammo_magazine/a556 + /obj/item/ammo_magazine/m556saw ) cost = 25 containertype = /obj/structure/closet/crate/secure diff --git a/code/datums/uplink/ammunition.dm b/code/datums/uplink/ammunition.dm index 4aefe349fd..4238884598 100644 --- a/code/datums/uplink/ammunition.dm +++ b/code/datums/uplink/ammunition.dm @@ -8,7 +8,7 @@ /datum/uplink_item/item/ammo/a357 name = ".357 Speedloader" - path = /obj/item/ammo_magazine/a357 + path = /obj/item/ammo_magazine/s357 /datum/uplink_item/item/ammo/mc9mm name = "Pistol Magazine (9mm)" @@ -16,28 +16,28 @@ /datum/uplink_item/item/ammo/c45m name = "Pistol Magazine (.45)" - path = /obj/item/ammo_magazine/c45m + path = /obj/item/ammo_magazine/m45 /datum/uplink_item/item/ammo/c45map name = "Pistol Magazine (.45 AP)" - path = /obj/item/ammo_magazine/c45m/ap + path = /obj/item/ammo_magazine/m45/ap /datum/uplink_item/item/ammo/tommymag name = "Tommygun Magazine (.45)" - path = /obj/item/ammo_magazine/tommymag + path = /obj/item/ammo_magazine/m45tommy /datum/uplink_item/item/ammo/tommymagap name = "Tommygun Magazine (.45 AP)" - path = /obj/item/ammo_magazine/tommymag/ap + path = /obj/item/ammo_magazine/m45tommy/ap /datum/uplink_item/item/ammo/tommydrum name = "Tommygun Drum Magazine (.45)" - path = /obj/item/ammo_magazine/tommydrum + path = /obj/item/ammo_magazine/m45tommydrum item_cost = 40 /datum/uplink_item/item/ammo/tommydrumap name = "Tommygun Drum Magazine (.45 AP)" - path = /obj/item/ammo_magazine/tommydrum/ap + path = /obj/item/ammo_magazine/m45tommydrum/ap /datum/uplink_item/item/ammo/darts name = "Darts" @@ -50,39 +50,39 @@ /datum/uplink_item/item/ammo/c556 name = "Rifle Magazine (5.56mm)" - path = /obj/item/ammo_magazine/c556 + path = /obj/item/ammo_magazine/m556 /datum/uplink_item/item/ammo/c556/ext name = "Rifle Magazine (5.56mm Extended)" - path = /obj/item/ammo_magazine/c556/ext + path = /obj/item/ammo_magazine/m556/ext /datum/uplink_item/item/ammo/c556/ap name = "Rifle Magazine (5.56mm AP)" - path = /obj/item/ammo_magazine/c556/ap + path = /obj/item/ammo_magazine/m556/ap /datum/uplink_item/item/ammo/c556/ap/ext name = "Rifle Magazine (5.56mm AP Extended)" - path = /obj/item/ammo_magazine/c556/ap/ext + path = /obj/item/ammo_magazine/m556/ap/ext /datum/uplink_item/item/ammo/c762 name = "Rifle Magazine (7.62mm)" - path = /obj/item/ammo_magazine/c762 + path = /obj/item/ammo_magazine/m762 /datum/uplink_item/item/ammo/c762/ap name = "Rifle Magazine (7.62mm AP)" - path = /obj/item/ammo_magazine/c762/ap + path = /obj/item/ammo_magazine/m762/ap /datum/uplink_item/item/ammo/a10mm name = "SMG Magazine (10mm)" - path = /obj/item/ammo_magazine/a10mm + path = /obj/item/ammo_magazine/m10mm /datum/uplink_item/item/ammo/a556 name = "Machinegun Magazine (5.56mm)" - path = /obj/item/ammo_magazine/a556 + path = /obj/item/ammo_magazine/m556saw /datum/uplink_item/item/ammo/a556/ap name = "Machinegun Magazine (5.56mm AP)" - path = /obj/item/ammo_magazine/a556/ap + path = /obj/item/ammo_magazine/m556saw/ap /datum/uplink_item/item/ammo/g12 name = "12g Shotgun Ammo Box (Slug)" diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 2953f0de87..50d6988e35 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -144,7 +144,7 @@ if(is_robot_module(O)) return 0 - if(istype(O,/obj/item/ammo_magazine/clip) || istype(O,/obj/item/ammo_magazine/a357) || istype(O,/obj/item/ammo_magazine/c38)) // Prevents ammo recycling exploit with speedloaders. + if(istype(O,/obj/item/ammo_magazine/clip) || istype(O,/obj/item/ammo_magazine/s357) || istype(O,/obj/item/ammo_magazine/s38)) // Prevents ammo recycling exploit with speedloaders. user << "\The [O] is too hazardous to recycle with the autolathe!" return /* ToDo: Make this actually check for ammo and change the value of the magazine if it's empty. -Spades @@ -262,7 +262,7 @@ stored_material[material] = max(0, stored_material[material] - round(making.resources[material] * mat_efficiency) * multiplier) update_icon() // So lid closes - + sleep(build_time) busy = 0 diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 573325e079..d5ac595c1e 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -27,7 +27,7 @@ if("guns") new /obj/item/weapon/gun/projectile/revolver(src) - new /obj/item/ammo_magazine/a357(src) + new /obj/item/ammo_magazine/s357(src) new /obj/item/weapon/card/emag(src) new /obj/item/weapon/plastique(src) new /obj/item/weapon/plastique(src) diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm index 75c0d5830f..183065d3ba 100644 --- a/code/game/objects/random/random.dm +++ b/code/game/objects/random/random.dm @@ -285,9 +285,9 @@ prob(2);/obj/item/weapon/storage/box/shotgunammo, prob(4);/obj/item/weapon/storage/box/shotgunshells, prob(1);/obj/item/weapon/storage/box/stunshells, - prob(2);/obj/item/ammo_magazine/c45m, - prob(4);/obj/item/ammo_magazine/c45m/rubber, - prob(4);/obj/item/ammo_magazine/c45m/flash, + prob(2);/obj/item/ammo_magazine/m45, + prob(4);/obj/item/ammo_magazine/m45/rubber, + prob(4);/obj/item/ammo_magazine/m45/flash, prob(2);/obj/item/ammo_magazine/mc9mmt, prob(6);/obj/item/ammo_magazine/mc9mmt/rubber) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index dc80d17827..a80ceb3580 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -217,7 +217,7 @@ new /obj/item/clothing/accessory/storage/black_vest(src) new /obj/item/clothing/head/soft/sec/corp(src) new /obj/item/clothing/under/rank/security/corp(src) - new /obj/item/ammo_magazine/c45m/rubber(src) + new /obj/item/ammo_magazine/m45/rubber(src) new /obj/item/weapon/gun/energy/taser(src) new /obj/item/weapon/cell/device/weapon(src) new /obj/item/clothing/suit/storage/hooded/wintercoat/security(src) @@ -277,8 +277,8 @@ new /obj/item/device/radio/headset/headset_sec(src) new /obj/item/device/radio/headset/headset_sec/alt(src) new /obj/item/clothing/suit/storage/vest/detective(src) - new /obj/item/ammo_magazine/c45m/rubber(src) - new /obj/item/ammo_magazine/c45m/rubber(src) + new /obj/item/ammo_magazine/m45/rubber(src) + new /obj/item/ammo_magazine/m45/rubber(src) new /obj/item/taperoll/police(src) new /obj/item/weapon/gun/projectile/colt/detective(src) new /obj/item/clothing/accessory/holster/armpit(src) diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm index 98f6138f68..906e46dbe1 100644 --- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm +++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm @@ -42,11 +42,11 @@ /obj/structure/closet/syndicate/nuclear/New() ..() - new /obj/item/ammo_magazine/a10mm(src) - new /obj/item/ammo_magazine/a10mm(src) - new /obj/item/ammo_magazine/a10mm(src) - new /obj/item/ammo_magazine/a10mm(src) - new /obj/item/ammo_magazine/a10mm(src) + new /obj/item/ammo_magazine/m10mm(src) + new /obj/item/ammo_magazine/m10mm(src) + new /obj/item/ammo_magazine/m10mm(src) + new /obj/item/ammo_magazine/m10mm(src) + new /obj/item/ammo_magazine/m10mm(src) new /obj/item/weapon/storage/box/handcuffs(src) new /obj/item/weapon/storage/box/flashbangs(src) new /obj/item/weapon/gun/energy/gun(src) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 82206fdc30..bd6d1ea4d0 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -480,7 +480,7 @@ M.equip_to_slot_or_del(new /obj/item/clothing/head/det(M), slot_head) M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver(M), slot_r_hand) - M.equip_to_slot_or_del(new /obj/item/ammo_magazine/a357(M), slot_l_store) + M.equip_to_slot_or_del(new /obj/item/ammo_magazine/s357(M), slot_l_store) if ("tournament chef") //Steven Seagal FTW M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chef(M), slot_w_uniform) @@ -592,7 +592,7 @@ sec_briefcase.contents += new /obj/item/weapon/spacecash/c1000 sec_briefcase.contents += new /obj/item/weapon/gun/energy/crossbow sec_briefcase.contents += new /obj/item/weapon/gun/projectile/revolver/mateba - sec_briefcase.contents += new /obj/item/ammo_magazine/a357 + sec_briefcase.contents += new /obj/item/ammo_magazine/s357 sec_briefcase.contents += new /obj/item/weapon/plastique M.equip_to_slot_or_del(sec_briefcase, slot_l_hand) diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index a8987538ab..c887ff5b9b 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -332,7 +332,7 @@ proc/check_panel(mob/M) qdel(O) return -var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/item/ammo_magazine/a357,\ +var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/item/ammo_magazine/s357,\ /obj/item/weapon/gun/energy/crossbow, /obj/item/weapon/melee/energy/sword,\ /obj/item/weapon/storage/box/syndicate, /obj/item/weapon/storage/box/emps,\ /obj/item/weapon/cartridge/syndicate, /obj/item/clothing/under/chameleon,\ diff --git a/code/modules/projectiles/ammunition/boxes.dm b/code/modules/projectiles/ammunition/boxes.dm index 8a259b6342..3ee2393bbf 100644 --- a/code/modules/projectiles/ammunition/boxes.dm +++ b/code/modules/projectiles/ammunition/boxes.dm @@ -1,6 +1,6 @@ ///////// .357 ///////// -/obj/item/ammo_magazine/a357 +/obj/item/ammo_magazine/s357 name = "speedloader (.357)" desc = "A speedloader for .357 revolvers." icon_state = "38" @@ -12,7 +12,7 @@ ///////// .38 ///////// -/obj/item/ammo_magazine/c38 +/obj/item/ammo_magazine/s38 name = "speedloader (.38)" desc = "A speedloader for .38 revolvers." icon_state = "38" @@ -22,17 +22,17 @@ max_ammo = 6 multiple_sprites = 1 -/obj/item/ammo_magazine/c38/rubber +/obj/item/ammo_magazine/s38/rubber name = "speedloader (.38 rubber)" ammo_type = /obj/item/ammo_casing/c38r -/obj/item/ammo_magazine/c38/emp +/obj/item/ammo_magazine/s38/emp name = "ammunition box (.38 haywire)" ammo_type = /obj/item/ammo_casing/c38/emp ///////// .45 ///////// -/obj/item/ammo_magazine/c45m +/obj/item/ammo_magazine/m45 name = "pistol magazine (.45)" icon_state = "45" mag_type = MAGAZINE @@ -42,30 +42,30 @@ max_ammo = 7 multiple_sprites = 1 -/obj/item/ammo_magazine/c45m/empty +/obj/item/ammo_magazine/m45/empty initial_ammo = 0 -/obj/item/ammo_magazine/c45m/rubber +/obj/item/ammo_magazine/m45/rubber name = "magazine (.45 rubber)" ammo_type = /obj/item/ammo_casing/c45r -/obj/item/ammo_magazine/c45m/practice +/obj/item/ammo_magazine/m45/practice name = "magazine (.45 practice)" ammo_type = /obj/item/ammo_casing/c45p -/obj/item/ammo_magazine/c45m/flash +/obj/item/ammo_magazine/m45/flash name = "magazine (.45 flash)" ammo_type = /obj/item/ammo_casing/c45f -/obj/item/ammo_magazine/c45m/ap +/obj/item/ammo_magazine/m45/ap name = "magazine (.45 AP)" ammo_type = /obj/item/ammo_casing/c45ap -/obj/item/ammo_magazine/box/emp/c45 +/obj/item/ammo_magazine/box/emp/b45 name = "ammunition box (.45 haywire)" ammo_type = /obj/item/ammo_casing/c45/emp -/obj/item/ammo_magazine/c45uzi +/obj/item/ammo_magazine/m45uzi name = "stick magazine (.45)" icon_state = "uzi45" mag_type = MAGAZINE @@ -75,10 +75,10 @@ max_ammo = 16 multiple_sprites = 1 -/obj/item/ammo_magazine/c45uzi/empty +/obj/item/ammo_magazine/m45uzi/empty initial_ammo = 0 -/obj/item/ammo_magazine/tommymag +/obj/item/ammo_magazine/m45tommy name = "tommygun magazine (.45)" icon_state = "tommy-mag" mag_type = MAGAZINE @@ -87,14 +87,14 @@ caliber = ".45" max_ammo = 20 -/obj/item/ammo_magazine/tommymag/ap +/obj/item/ammo_magazine/m45tommy/ap name = "tommygun magazine (.45 AP)" ammo_type = /obj/item/ammo_casing/c45ap -/obj/item/ammo_magazine/tommymag/empty +/obj/item/ammo_magazine/m45tommy/empty initial_ammo = 0 -/obj/item/ammo_magazine/tommydrum +/obj/item/ammo_magazine/m45tommydrum name = "tommygun drum magazine (.45)" icon_state = "tommy-drum" w_class = ITEMSIZE_NORMAL // Bulky ammo doesn't fit in your pockets! @@ -104,11 +104,11 @@ caliber = ".45" max_ammo = 50 -/obj/item/ammo_magazine/tommydrum/ap +/obj/item/ammo_magazine/m45tommydrum/ap name = "tommygun drum magazine (.45 AP)" ammo_type = /obj/item/ammo_casing/c45ap -/obj/item/ammo_magazine/tommydrum/empty +/obj/item/ammo_magazine/m45tommydrum/empty initial_ammo = 0 /obj/item/ammo_magazine/clip/c45 @@ -256,7 +256,7 @@ */ ///////// 10mm ///////// -/obj/item/ammo_magazine/a10mm +/obj/item/ammo_magazine/m10mm name = "magazine (10mm)" icon_state = "10mm" origin_tech = list(TECH_COMBAT = 2) @@ -267,7 +267,7 @@ max_ammo = 20 multiple_sprites = 1 -/obj/item/ammo_magazine/a10mm/empty +/obj/item/ammo_magazine/m10mm/empty initial_ammo = 0 /obj/item/ammo_magazine/clip/a10mm @@ -280,13 +280,13 @@ max_ammo = 9 multiple_sprites = 1 -/obj/item/ammo_magazine/box/emp/a10mm +/obj/item/ammo_magazine/box/emp/b10 name = "ammunition box (10mm haywire)" ammo_type = /obj/item/ammo_casing/a10mm/emp ///////// 5.56mm ///////// -/obj/item/ammo_magazine/c556 +/obj/item/ammo_magazine/m556 name = "magazine (5.56mm)" icon_state = "c5.56" origin_tech = list(TECH_COMBAT = 2) @@ -297,30 +297,30 @@ max_ammo = 20 multiple_sprites = 1 -/obj/item/ammo_magazine/c556/ext +/obj/item/ammo_magazine/m556/ext name = "extended magazine (5.56mm)" matter = list(DEFAULT_WALL_MATERIAL = 2700) max_ammo = 30 -/obj/item/ammo_magazine/c556/empty +/obj/item/ammo_magazine/m556/empty initial_ammo = 0 -/obj/item/ammo_magazine/c556/ext/empty +/obj/item/ammo_magazine/m556/ext/empty initial_ammo = 0 -/obj/item/ammo_magazine/c556/practice +/obj/item/ammo_magazine/m556/practice name = "magazine (5.56mm practice)" ammo_type = /obj/item/ammo_casing/a556p -/obj/item/ammo_magazine/c556/practice/ext +/obj/item/ammo_magazine/m556/practice/ext name = "extended magazine (5.56mm practice)" max_ammo = 30 -/obj/item/ammo_magazine/c556/ap +/obj/item/ammo_magazine/m556/ap name = "magazine (5.56mm armor-piercing)" ammo_type = /obj/item/ammo_casing/a556/ap -/obj/item/ammo_magazine/c556/ap/ext +/obj/item/ammo_magazine/m556/ap/ext name = "extended magazine (5.56mm armor-piercing)" max_ammo = 30 @@ -341,7 +341,7 @@ name = "rifle clip (5.56mm practice)" ammo_type = /obj/item/ammo_casing/a556 -/obj/item/ammo_magazine/a556 +/obj/item/ammo_magazine/m556saw name = "magazine box (5.56mm)" icon_state = "a556" origin_tech = list(TECH_COMBAT = 2) @@ -353,16 +353,16 @@ max_ammo = 50 multiple_sprites = 1 -/obj/item/ammo_magazine/a556/ap +/obj/item/ammo_magazine/m556saw/ap name = "magazine box (5.56mm armor-piercing)" ammo_type = /obj/item/ammo_casing/a556/ap -/obj/item/ammo_magazine/a556/empty +/obj/item/ammo_magazine/m556saw/empty initial_ammo = 0 ///////// .50 AE ///////// -/obj/item/ammo_magazine/a50 +/obj/item/ammo_magazine/m50 name = "magazine (.50 AE)" icon_state = "50ae" origin_tech = list(TECH_COMBAT = 2) @@ -373,7 +373,7 @@ max_ammo = 7 multiple_sprites = 1 -/obj/item/ammo_magazine/a50/empty +/obj/item/ammo_magazine/m50/empty initial_ammo = 0 /obj/item/ammo_magazine/clip/a50 @@ -388,7 +388,7 @@ ///////// 7.62mm ///////// -/obj/item/ammo_magazine/c762 +/obj/item/ammo_magazine/m762 name = "magazine (7.62mm)" icon_state = "c7.62" mag_type = MAGAZINE @@ -398,11 +398,11 @@ max_ammo = 10 multiple_sprites = 1 -/obj/item/ammo_magazine/c762/ap +/obj/item/ammo_magazine/m762/ap name = "magazine (7.62mm armor-piercing)" ammo_type = /obj/item/ammo_casing/a762/ap -/obj/item/ammo_magazine/c762/empty +/obj/item/ammo_magazine/m762/empty initial_ammo = 0 /obj/item/ammo_magazine/s762 // 's' for small! @@ -468,7 +468,7 @@ ///////// .75 Gyrojet ///////// -/obj/item/ammo_magazine/a75 +/obj/item/ammo_magazine/m75 name = "ammo magazine (.75 Gyrojet)" icon_state = "75" mag_type = MAGAZINE @@ -477,7 +477,7 @@ multiple_sprites = 1 max_ammo = 4 -/obj/item/ammo_magazine/a75/empty +/obj/item/ammo_magazine/m75/empty initial_ammo = 0 ///////// Misc. ///////// diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index bf30c19991..7699b8483c 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -33,8 +33,8 @@ slot_flags = SLOT_BELT|SLOT_BACK fire_sound = 'sound/weapons/Gunshot_light.ogg' load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/a10mm - allowed_magazines = list(/obj/item/ammo_magazine/a10mm) + magazine_type = /obj/item/ammo_magazine/m10mm + allowed_magazines = list(/obj/item/ammo_magazine/m10mm) auto_eject = 1 auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg' @@ -60,8 +60,8 @@ origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4) slot_flags = SLOT_BACK load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/c556 - allowed_magazines = list(/obj/item/ammo_magazine/c556) + magazine_type = /obj/item/ammo_magazine/m556 + allowed_magazines = list(/obj/item/ammo_magazine/m556) one_handed_penalty = 4 @@ -115,8 +115,8 @@ fire_sound = 'sound/weapons/Gunshot.ogg' slot_flags = SLOT_BACK load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/c762 - allowed_magazines = list(/obj/item/ammo_magazine/c762) + magazine_type = /obj/item/ammo_magazine/m762 + allowed_magazines = list(/obj/item/ammo_magazine/m762) auto_eject = 1 auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg' @@ -187,8 +187,8 @@ ammo_type = "/obj/item/ammo_casing/a556" // Is this really needed anymore? fire_sound = 'sound/weapons/machinegun.ogg' load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/a556 - allowed_magazines = list(/obj/item/ammo_magazine/a556, /obj/item/ammo_magazine/c556) + magazine_type = /obj/item/ammo_magazine/m556saw + allowed_magazines = list(/obj/item/ammo_magazine/m556saw, /obj/item/ammo_magazine/m556) one_handed_penalty = 6 @@ -225,7 +225,7 @@ return ..() //once open, behave like normal /obj/item/weapon/gun/projectile/automatic/l6_saw/update_icon() - if(istype(ammo_magazine,/obj/item/ammo_magazine/c762)) + if(istype(ammo_magazine,/obj/item/ammo_magazine/m762)) icon_state = "l6[cover_open ? "open" : "closed"]mag" item_state = icon_state else @@ -284,8 +284,8 @@ load_method = MAGAZINE caliber = ".45" origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2, TECH_ILLEGAL = 5) - magazine_type = /obj/item/ammo_magazine/c45uzi - allowed_magazines = list(/obj/item/ammo_magazine/c45uzi) + magazine_type = /obj/item/ammo_magazine/m45uzi + allowed_magazines = list(/obj/item/ammo_magazine/m45uzi) firemodes = list( list(mode_name="semiauto", burst=1, fire_delay=0), @@ -330,8 +330,8 @@ origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2, TECH_ILLEGAL = 5) slot_flags = SLOT_BELT // ToDo: Belt sprite. load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/tommymag - allowed_magazines = list(/obj/item/ammo_magazine/tommymag, /obj/item/ammo_magazine/tommydrum) + magazine_type = /obj/item/ammo_magazine/m45tommy + allowed_magazines = list(/obj/item/ammo_magazine/m45tommy, /obj/item/ammo_magazine/m45tommydrum) firemodes = list( list(mode_name="semiauto", burst=1, fire_delay=0), @@ -354,8 +354,8 @@ origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4) slot_flags = SLOT_BACK load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/c762 - allowed_magazines = list(/obj/item/ammo_magazine/c762) + magazine_type = /obj/item/ammo_magazine/m762 + allowed_magazines = list(/obj/item/ammo_magazine/m762) one_handed_penalty = 4 diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm index fd46803c68..d4f9d265f0 100644 --- a/code/modules/projectiles/guns/projectile/pistol.dm +++ b/code/modules/projectiles/guns/projectile/pistol.dm @@ -2,8 +2,8 @@ var/unique_reskin name = ".45 pistol" desc = "A cheap Martian knock-off of a Colt M1911. Uses .45 rounds." - magazine_type = /obj/item/ammo_magazine/c45m - allowed_magazines = list(/obj/item/ammo_magazine/c45m) + magazine_type = /obj/item/ammo_magazine/m45 + allowed_magazines = list(/obj/item/ammo_magazine/m45) icon_state = "colt" caliber = ".45" origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) @@ -12,7 +12,7 @@ /obj/item/weapon/gun/projectile/colt/detective desc = "A Martian recreation of an old Terran pistol. Uses .45 rounds." - magazine_type = /obj/item/ammo_magazine/c45m/rubber + magazine_type = /obj/item/ammo_magazine/m45/rubber /obj/item/weapon/gun/projectile/colt/detective/update_icon() if(ammo_magazine) @@ -71,7 +71,7 @@ name = ".45 pistol" desc = "The NT Mk58 is a cheap, ubiquitous sidearm, produced by a NanoTrasen subsidiary. Found pretty much everywhere humans are. Uses .45 rounds." icon_state = "secguncomp" - magazine_type = /obj/item/ammo_magazine/c45m/rubber + magazine_type = /obj/item/ammo_magazine/m45/rubber caliber = ".45" origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) fire_sound = 'sound/weapons/semiauto.ogg' @@ -86,7 +86,7 @@ /obj/item/weapon/gun/projectile/sec/flash name = ".45 signal pistol" - magazine_type = /obj/item/ammo_magazine/c45m/flash + magazine_type = /obj/item/ammo_magazine/m45/flash /obj/item/weapon/gun/projectile/sec/wood desc = "The NT Mk58 is a cheap, ubiquitous sidearm, produced by a NanoTrasen subsidiary. This one has a sweet wooden grip. Uses .45 rounds." @@ -111,8 +111,8 @@ recoil = 0 origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 8) load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/c45m - allowed_magazines = list(/obj/item/ammo_magazine/c45m) + magazine_type = /obj/item/ammo_magazine/m45 + allowed_magazines = list(/obj/item/ammo_magazine/m45) /obj/item/weapon/gun/projectile/deagle name = "desert eagle" @@ -123,8 +123,8 @@ caliber = ".50" load_method = MAGAZINE fire_sound = 'sound/weapons/deagle.ogg' - magazine_type = /obj/item/ammo_magazine/a50 - allowed_magazines = list(/obj/item/ammo_magazine/a50) + magazine_type = /obj/item/ammo_magazine/m50 + allowed_magazines = list(/obj/item/ammo_magazine/m50) /obj/item/weapon/gun/projectile/deagle/update_icon() ..() @@ -173,8 +173,8 @@ origin_tech = list(TECH_COMBAT = 3) ammo_type = "/obj/item/ammo_casing/a75" load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/a75 - allowed_magazines = list(/obj/item/ammo_magazine/a75) + magazine_type = /obj/item/ammo_magazine/m75 + allowed_magazines = list(/obj/item/ammo_magazine/m75) auto_eject = 1 auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg' diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index be280c2f64..8afda4b63b 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -88,11 +88,11 @@ one_handed_penalty = 4 // The weapon itself is heavy, and the long barrel makes it hard to hold steady with just one hand. fire_sound = 'sound/weapons/SVD_shot.ogg' magazine_type = /obj/item/ammo_magazine/SVD - allowed_magazines = list(/obj/item/ammo_magazine/SVD, /obj/item/ammo_magazine/c762) + allowed_magazines = list(/obj/item/ammo_magazine/SVD, /obj/item/ammo_magazine/m762) /obj/item/weapon/gun/projectile/SVD/update_icon() ..() -// if(istype(ammo_magazine,/obj/item/ammo_magazine/c762) +// if(istype(ammo_magazine,/obj/item/ammo_magazine/m762) // icon_state = "SVD-bigmag" //No icon for this exists yet. if(ammo_magazine) icon_state = "SVD" diff --git a/code/modules/random_map/drop/drop_types.dm b/code/modules/random_map/drop/drop_types.dm index 43f89b4ec7..0f331ccbfd 100644 --- a/code/modules/random_map/drop/drop_types.dm +++ b/code/modules/random_map/drop/drop_types.dm @@ -62,10 +62,10 @@ var/global/list/datum/supply_drop_loot/supply_drop /obj/item/weapon/storage/box/emps, /obj/item/weapon/storage/box/flashbangs, /obj/item/weapon/gun/projectile/automatic/sts35, - /obj/item/ammo_magazine/c762/ap, - /obj/item/ammo_magazine/c762/ap, + /obj/item/ammo_magazine/m762/ap, + /obj/item/ammo_magazine/m762/ap, /obj/item/weapon/gun/projectile/colt, - /obj/item/ammo_magazine/c45m, + /obj/item/ammo_magazine/m45, /obj/item/weapon/material/hatchet/tacknife/combatknife) /datum/supply_drop_loot/heavy_warfare @@ -83,8 +83,8 @@ var/global/list/datum/supply_drop_loot/supply_drop /obj/item/clothing/accessory/storage/black_drop_pouches, /obj/item/weapon/storage/backpack/dufflebag/sec, /obj/item/weapon/gun/projectile/automatic/carbine, - /obj/item/ammo_magazine/c762/ap, - /obj/item/ammo_magazine/c762, + /obj/item/ammo_magazine/m762/ap, + /obj/item/ammo_magazine/m762, /obj/item/weapon/shield/energy, /obj/item/weapon/grenade/frag, /obj/item/weapon/grenade/frag, From 50c3e40a228e0cf20f03aff5869da1099cc9b096 Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 26 May 2017 20:05:38 -0700 Subject: [PATCH 18/84] Adds mapmergePY More or less because I CBA to install java right now. --- html/changelogs/chaoko99-mapmergepy.yml | 37 ++ tools/mapmergepy/1 Prepare Maps.bat | 12 + tools/mapmergepy/2 Clean Maps.bat | 4 + .../__pycache__/map_helpers.cpython-36.pyc | Bin 0 -> 7998 bytes tools/mapmergepy/map_helpers.py | 524 ++++++++++++++++++ tools/mapmergepy/mapmerger.py | 81 +++ tools/mapmergepy/prepare_maps.sh | 2 + 7 files changed, 660 insertions(+) create mode 100644 html/changelogs/chaoko99-mapmergepy.yml create mode 100644 tools/mapmergepy/1 Prepare Maps.bat create mode 100644 tools/mapmergepy/2 Clean Maps.bat create mode 100644 tools/mapmergepy/__pycache__/map_helpers.cpython-36.pyc create mode 100644 tools/mapmergepy/map_helpers.py create mode 100644 tools/mapmergepy/mapmerger.py create mode 100644 tools/mapmergepy/prepare_maps.sh diff --git a/html/changelogs/chaoko99-mapmergepy.yml b/html/changelogs/chaoko99-mapmergepy.yml new file mode 100644 index 0000000000..32e38564aa --- /dev/null +++ b/html/changelogs/chaoko99-mapmergepy.yml @@ -0,0 +1,37 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: chaoko99 + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Added mapmerge PY to the \tools directory of the Vorestation repository." + diff --git a/tools/mapmergepy/1 Prepare Maps.bat b/tools/mapmergepy/1 Prepare Maps.bat new file mode 100644 index 0000000000..d878510e3b --- /dev/null +++ b/tools/mapmergepy/1 Prepare Maps.bat @@ -0,0 +1,12 @@ +@echo off +cd ../../maps/ + +for /R %%f in (*.dmm) do copy "%%f" "%%f.backup" + +cls +echo All dmm files in maps directories have been backed up +echo Now you can make your changes... +echo --- +echo Remember to run Run_Map_Merge.bat just before you commit your changes! +echo --- +pause diff --git a/tools/mapmergepy/2 Clean Maps.bat b/tools/mapmergepy/2 Clean Maps.bat new file mode 100644 index 0000000000..b651f5da71 --- /dev/null +++ b/tools/mapmergepy/2 Clean Maps.bat @@ -0,0 +1,4 @@ +@echo off +set MAPROOT="../../maps/" +python mapmerger.py %1 %MAPROOT% +pause \ No newline at end of file diff --git a/tools/mapmergepy/__pycache__/map_helpers.cpython-36.pyc b/tools/mapmergepy/__pycache__/map_helpers.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3bee5f17afa8c4d4a7ea784c168c99d81e428209 GIT binary patch literal 7998 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 1: + i = 1 + nextnew = key + while i < difference: + nextnew = get_next_key(nextnew) + unused_keys.append(nextnew) + i += 1 + sort = 1 + + + #Recycle outdated keys with any new tile data, starting from the bottom of the dictionary + i = 0 + for key, value in reversed(tempDict.items()): + recycled_key = key + if len(unused_keys) > 0: + recycled_key = unused_keys.pop() + + for coord, gridkey in tempGrid.items(): + if gridkey == None: + continue + if gridkey == key: + mergeGrid[coord] = recycled_key + tempGrid[coord] = None + + originalDict[recycled_key] = value + + #if gaps in the key sequence were found, sort the dictionary for cleanliness + if sort == 1: + sorted_dict = collections.OrderedDict() + next_key = get_next_key("") + while len(sorted_dict) < len(originalDict): + try: + sorted_dict[next_key] = originalDict[next_key] + except KeyError: + pass + next_key = get_next_key(next_key) + originalDict = sorted_dict + + if tgm: + with open(newfile, "w") as output: + write_dictionary_tgm(output, originalDict) + write_grid_coord_small(output, mergeGrid) + else: + with open(newfile, "wt", encoding='cp1252', newline='\n') as output: + write_dictionary_dmm(output, originalDict) + write_grid_dmm(output, mergeGrid) + return 1 + +#write dictionary in tgm format +def write_dictionary_tgm(output, dictionary): + output.write("//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE \n") + for key, list_ in dictionary.items(): + output.write("\"{}\" = (\n".format(key)) + + for thing in list_: + buffer = "" + in_quote_block = False + in_varedit_block = False + for char in thing: + + if in_quote_block: + if char == "\"": + in_quote_block = False + buffer = buffer + char + continue + elif char == "\"": + in_quote_block = True + buffer = buffer + char + continue + + if not in_varedit_block: + if char == "{": + in_varedit_block = True + buffer = buffer + "{\n\t" + continue + else: + if char == ";": + buffer = buffer + ";\n\t" + continue + elif char == "}": + buffer = buffer + "\n\t}" + in_varedit_block = False + continue + + buffer = buffer + char + + if list_.index(thing) != len(list_) - 1: + buffer = buffer + ",\n" + output.write(buffer) + + output.write(")\n") + +#thanks to YotaXP for finding out about this one +def write_grid_coord_small(output, grid): + output.write("\n") + + for x in range(1, maxx+1): + output.write("({},{},1) = {{\"\n".format(x, 1, 1)) + for y in range(1, maxy): + output.write("{}\n".format(grid[x,y])) + output.write("{}\n\"}}\n".format(grid[x,maxy])) + +def search_key(dictionary, data): + for key, value in dictionary.items(): + if value == data: + return key + return None + +def generate_new_key(dictionary): + last_key = next(reversed(dictionary)) + return get_next_key(last_key) + +def get_next_key(key): + if key == "": + return "".join("a" for _ in range(key_length)) + + length = len(key) + new_key = "" + carry = 1 + for char in key[::-1]: + if carry <= 0: + new_key = new_key + char + continue + if char == 'Z': + new_key = new_key + 'a' + carry += 1 + length -= 1 + if length <= 0: + return "OVERFLOW" + elif char == 'z': + new_key = new_key + 'A' + else: + new_key = new_key + chr(ord(char) + 1) + if carry > 0: + carry -= 1 + return new_key[::-1] + +#still does not support more than one z level per file, but should parse any format +def parse_map(map_file): + with open(map_file, "r") as map_input: + characters = map_input.read() + + in_quote_block = False + in_key_block = False + in_data_block = False + in_varedit_block = False + after_data_block = False + escaping = False + skip_whitespace = False + + dictionary = collections.OrderedDict() + curr_key = "" + curr_datum = "" + curr_data = list() + + in_map_block = False + in_coord_block = False + in_map_string = False + iter_x = 0 + adjust_y = True + + curr_num = "" + reading_coord = "x" + + global key_length + global maxx + global maxy + curr_x = 0 + curr_y = 0 + curr_z = 1 + grid = dict() + + for char in characters: + + if not in_map_block: + + if char == "\n" or char == "\t": + continue + + if in_data_block: + + if in_varedit_block: + + if in_quote_block: + if char == "\\": + curr_datum = curr_datum + char + escaping = True + continue + + if escaping: + curr_datum = curr_datum + char + escaping = False + continue + + if char == "\"": + curr_datum = curr_datum + char + in_quote_block = False + continue + + curr_datum = curr_datum + char + continue + + if skip_whitespace and char == " ": + skip_whitespace = False + continue + skip_whitespace = False + + if char == "\"": + curr_datum = curr_datum + char + in_quote_block = True + continue + + if char == ";": + skip_whitespace = False + curr_datum = curr_datum + char + continue + + if char == "}": + curr_datum = curr_datum + char + in_varedit_block = False + continue + + curr_datum = curr_datum + char + continue + + if char == "{": + curr_datum = curr_datum + char + in_varedit_block = True + continue + + if char == ",": + curr_data.append(curr_datum) + curr_datum = "" + continue + + if char == ")": + curr_data.append(curr_datum) + dictionary[curr_key] = tuple(curr_data) + curr_data = list() + curr_datum = "" + curr_key = "" + in_data_block = False + after_data_block = True + continue + + curr_datum = curr_datum + char + continue + + if in_key_block: + if char == "\"": + in_key_block = False + key_length = len(curr_key) + else: + curr_key = curr_key + char + continue + #else we're looking for a key block, a data block or the map block + + if char == "\"": + in_key_block = True + after_data_block = False + continue + + if char == "(": + if after_data_block: + in_map_block = True + in_coord_block = True + after_data_block = False + curr_key = "" + continue + else: + in_data_block = True + after_data_block = False + continue + + else: + + if in_coord_block: + if char == ",": + if reading_coord == "x": + curr_x = string_to_num(curr_num) + if curr_x > maxx: + maxx = curr_x + iter_x = 0 + curr_num = "" + reading_coord = "y" + elif reading_coord == "y": + curr_y = string_to_num(curr_num) + if curr_y > maxy: + maxy = curr_y + curr_num = "" + reading_coord = "z" + else: + pass + continue + + if char == ")": + in_coord_block = False + reading_coord = "x" + curr_num = "" + #read z here if needed + continue + + curr_num = curr_num + char + continue + + if in_map_string: + + if char == "\"": + in_map_string = False + adjust_y = True + curr_y -= 1 + continue + + if char == "\n": + if adjust_y: + adjust_y = False + else: + curr_y += 1 + if curr_x > maxx: + maxx = curr_x + if iter_x > 1: + curr_x = 1 + iter_x = 0 + continue + + + curr_key = curr_key + char + if len(curr_key) == key_length: + iter_x += 1 + if iter_x > 1: + curr_x += 1 + + grid[curr_x, curr_y] = curr_key + curr_key = "" + continue + + + #else look for coordinate block or a map string + + if char == "(": + in_coord_block = True + continue + if char == "\"": + in_map_string = True + continue + + if curr_y > maxy: + maxy = curr_y + + data = dict() + data["dictionary"] = dictionary + data["grid"] = grid + return data + +#subtract keyB from keyA +def key_difference(keyA, keyB): + if len(keyA) != len(keyB): + return "you fucked up" + + Ayek = keyA[::-1] + Byek = keyB[::-1] + + result = 0 + for i in range(0, len(keyA)): + base = 52**i + A = 26 if Ayek[i].isupper() else 0 + B = 26 if Byek[i].isupper() else 0 + result += ( (ord(Byek[i].lower()) + B) - (ord(Ayek[i].lower()) + A) ) * base + return result + +def string_to_num(s): + try: + return int(s) + except ValueError: + return -1 + +#writes a tile data dictionary the same way Dreammaker does +def write_dictionary_dmm(output, dictionary): + for key, value in dictionary.items(): + output.write("\"{}\" = ({})\n".format(key, ",".join(value))) + +#writes a map grid the same way Dreammaker does +def write_grid_dmm(output, grid): + output.write("\n") + output.write("(1,1,1) = {\"\n") + + for y in range(1, maxy+1): + for x in range(1, maxx+1): + try: + output.write(grid[x,y]) + except KeyError: + print("Key error: ({},{})".format(x,y)) + output.write("\n") + output.write("\"}") + output.write("\n") + +#inflated map grid; unused +def write_grid_coord(filename, grid): + with open(filename, "a") as output: + output.write("\n") + for y in range(1, maxy+1): + for x in range(1, maxx+1): + output.write("({},{},1) = {{\"{}\"}}\n".format(x, y, grid[x,y])) + +def key_compare(keyA, keyB): #thanks byond for not respecting ascii + pos = 0 + for a in keyA: + pos += 1 + count = pos + for b in keyB: + if(count > 1): + count -= 1 + continue + if a.islower() and b.islower(): + if(a < b): + return -1 + if(a > b): + return 1 + break + if a.islower() and b.isupper(): + return -1 + if a.isupper() and b.islower(): + return 1 + if a.isupper() and b.isupper(): + if(a < b): + return -1 + if(a > b): + return 1 + break + return 0 diff --git a/tools/mapmergepy/mapmerger.py b/tools/mapmergepy/mapmerger.py new file mode 100644 index 0000000000..0a177eb07a --- /dev/null +++ b/tools/mapmergepy/mapmerger.py @@ -0,0 +1,81 @@ +#!/usr/bin/python3 + +import sys +import os +import pathlib +import map_helpers +import shutil + +def main(map_folder): + list_of_files = list() + for root, directories, filenames in os.walk(map_folder): + for filename in [f for f in filenames if f.endswith(".dmm")]: + list_of_files.append(pathlib.Path(root, filename)) + + last_dir = "" + for i in range(0, len(list_of_files)): + this_dir = list_of_files[i].parent + if last_dir != this_dir: + print("--------------------------------") + last_dir = this_dir + print("[{}]: {}".format(i, str(list_of_files[i])[len(map_folder):])) + + print("--------------------------------") + in_list = input("List the maps you want to merge (example: 1,3-5,12):\n") + in_list = in_list.replace(" ", "") + in_list = in_list.split(",") + + valid_indices = list() + for m in in_list: + index_range = m.split("-") + if len(index_range) == 1: + index = string_to_num(index_range[0]) + if index >= 0 and index < len(list_of_files): + valid_indices.append(index) + elif len(index_range) == 2: + index0 = string_to_num(index_range[0]) + index1 = string_to_num(index_range[1]) + if index0 >= 0 and index0 <= index1 and index1 < len(list_of_files): + valid_indices.extend(range(index0, index1 + 1)) + +# if tgm == "1": +# print("\nMaps will be converted to tgm.") +# tgm = True +# else: +# print("\nMaps will not be converted to tgm.") +# tgm = False + tgm = False + + print("\nMerging these maps:") + for i in valid_indices: + print(str(list_of_files[i])[len(map_folder):]) + merge = input("\nPress Enter to merge...") + if merge == "abort": + print("\nAborted map merge.") + sys.exit() + else: + for i in valid_indices: + path_str = str(list_of_files[i]) + shutil.copyfile(path_str, path_str + ".before") + path_str_pretty = path_str[len(map_folder):] + try: + if map_helpers.merge_map(path_str, path_str + ".backup", tgm) != 1: + print("ERROR MERGING: {}".format(path_str_pretty)) + os.remove(path_str + ".before") + continue + print("MERGED: {}".format(path_str_pretty)) + except FileNotFoundError: + print("\nERROR: File not found! Make sure you run 'Prepare Maps.bat' before merging.") + print(path_str_pretty + " || " + path_str_pretty + ".backup") + + print("\nFinished merging.") + print("\nNOTICE: A version of the map files from before merging have been created for debug purposes.\nDo not delete these files until it is sure your map edits have no undesirable changes.") + +def string_to_num(s): + try: + return int(s) + except ValueError: + return -1 + +if __name__ == "__main__": + main(sys.argv[1]) diff --git a/tools/mapmergepy/prepare_maps.sh b/tools/mapmergepy/prepare_maps.sh new file mode 100644 index 0000000000..f1ea86ce45 --- /dev/null +++ b/tools/mapmergepy/prepare_maps.sh @@ -0,0 +1,2 @@ +#!/bin/bash +find ../../maps | grep \.dmm$ | xargs -l1 -I{} cp {} {}.backup \ No newline at end of file From 1e35ef880954bfa1fea9737a425c50707554258f Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Sat, 27 May 2017 03:03:45 -0400 Subject: [PATCH 19/84] Goggles are airtight Adds some 'plain' goggles that are airtight, and as such protect your eyes from things like phoron. Also allows eyewear to protect you from phoron if it's airtight (and hiding your eyes). Added airtight flag to science goggles, welding goggles, and 'plain' goggles I added. Weldning goggles only protect your eyes when down, since it removes the covers eyes flag when up. --- code/ZAS/Phoron.dm | 30 +++++++++++++---------- code/modules/clothing/glasses/glasses.dm | 10 ++++++++ icons/mob/eyes.dmi | Bin 8985 -> 8944 bytes icons/mob/species/seromi/eyes.dmi | Bin 6148 -> 6400 bytes icons/mob/species/vox/eyes.dmi | Bin 3407 -> 3819 bytes icons/obj/clothing/glasses.dmi | Bin 9511 -> 9446 bytes 6 files changed, 27 insertions(+), 13 deletions(-) diff --git a/code/ZAS/Phoron.dm b/code/ZAS/Phoron.dm index 4a4c29dcfb..acee6a8b65 100644 --- a/code/ZAS/Phoron.dm +++ b/code/ZAS/Phoron.dm @@ -103,19 +103,23 @@ obj/var/phoronproof = 0 //Burn eyes if exposed. if(vsc.plc.EYE_BURNS && (species.breath_type != "phoron")) - if(!head) - if(!wear_mask) - burn_eyes() - else - if(!(wear_mask.body_parts_covered & EYES)) - burn_eyes() - else - if(!(head.body_parts_covered & EYES)) - if(!wear_mask) - burn_eyes() - else - if(!(wear_mask.body_parts_covered & EYES)) - burn_eyes() + var/burn_eyes = 1 + + //Check for protective glasses + if(glasses && (glasses.body_parts_covered & EYES) && (glasses.item_flags & AIRTIGHT)) + burn_eyes = 0 + + //Check for protective maskwear + if(burn_eyes && wear_mask && (wear_mask.body_parts_covered & EYES) && (wear_mask.item_flags & AIRTIGHT)) + burn_eyes = 0 + + //Check for protective helmets + if(burn_eyes && head && (head.body_parts_covered & EYES) && (head.item_flags & AIRTIGHT)) + burn_eyes = 0 + + //If we still need to, burn their eyes + if(burn_eyes) + burn_eyes() //Genetic Corruption if(vsc.plc.GENETIC_CORRUPTION && (species.breath_type != "phoron")) diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 4fb748f73a..65d6697df4 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -89,11 +89,20 @@ BLIND // can't see anything item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses") toggleable = 1 action_button_name = "Toggle Goggles" + item_flags = AIRTIGHT /obj/item/clothing/glasses/science/New() ..() overlay = global_hud.science +/obj/item/clothing/glasses/goggles + name = "Goggles" + desc = "Just some plain old goggles." + icon_state = "plaingoggles" + item_state_slots = list(slot_r_hand_str = "glasses", slot_l_hand_str = "glasses") + item_flags = AIRTIGHT + body_parts_covered = EYES + /obj/item/clothing/glasses/night name = "Night Vision Goggles" desc = "You can totally see in the dark now!" @@ -200,6 +209,7 @@ BLIND // can't see anything item_state_slots = list(slot_r_hand_str = "welding-g", slot_l_hand_str = "welding-g") action_button_name = "Flip Welding Goggles" matter = list(DEFAULT_WALL_MATERIAL = 1500, "glass" = 1000) + item_flags = AIRTIGHT var/up = 0 /obj/item/clothing/glasses/welding/attack_self() diff --git a/icons/mob/eyes.dmi b/icons/mob/eyes.dmi index 1f4bd4a68f2b716e086c1b4a50b7a6d3b026d85e..763ce789906ca72500466ee84ba041e9e64a78e4 100644 GIT binary patch literal 8944 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 Awg3PC diff --git a/icons/mob/species/vox/eyes.dmi b/icons/mob/species/vox/eyes.dmi index 6e15b3e58c4a140c074d08679cd577e8ab50cc37..c81f6217a2cc81a01cf51b8af499244a0e192285 100644 GIT binary patch literal 3819 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 diff --git a/icons/obj/clothing/glasses.dmi b/icons/obj/clothing/glasses.dmi index 0e863674733d59ee271ebf5ff0444ae1ec88ff20..920880e1553d50de9a26fa740e71e2e973e824b5 100644 GIT binary patch literal 9446 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 lKj}07^RoUwVdq9MvgFuE%o*@rnQd literal 9511 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 D&4v*^ From 3ff9d441f9c2db9c0c8357a4824ffb6b485541ce Mon Sep 17 00:00:00 2001 From: Spades Date: Sat, 27 May 2017 04:39:49 -0400 Subject: [PATCH 20/84] Finishes fixing ammo inconsistencies --- code/datums/autolathe/arms.dm | 60 +++---- code/datums/supplypacks/contraband.dm | 2 +- code/datums/supplypacks/munitions.dm | 6 +- code/datums/uplink/ammunition.dm | 2 +- .../objects/items/weapons/storage/belt.dm | 2 +- .../objects/items/weapons/storage/boxes.dm | 32 ++-- code/game/objects/random/random.dm | 4 +- code/modules/projectiles/ammunition/boxes.dm | 166 +++++++++--------- .../modules/projectiles/ammunition/bullets.dm | 48 ++--- .../projectiles/guns/projectile/automatic.dm | 16 +- .../projectiles/guns/projectile/pistol.dm | 30 ++-- .../projectiles/guns/projectile/revolver.dm | 12 +- .../projectiles/guns/projectile/shotgun.dm | 12 +- code/modules/research/designs.dm | 4 +- icons/obj/ammo.dmi | Bin 25469 -> 25318 bytes maps/northern_star/polaris-1.dmm | 6 +- maps/northern_star/polaris-2.dmm | 14 +- 17 files changed, 210 insertions(+), 206 deletions(-) diff --git a/code/datums/autolathe/arms.dm b/code/datums/autolathe/arms.dm index 276819d3ad..b40bf27e47 100644 --- a/code/datums/autolathe/arms.dm +++ b/code/datums/autolathe/arms.dm @@ -8,29 +8,29 @@ /datum/category_item/autolathe/arms/shotgun_blanks name = "ammunition (12g, blank)" - path =/obj/item/ammo_casing/shotgun/blank + path =/obj/item/ammo_casing/a12g/blank /datum/category_item/autolathe/arms/shotgun_beanbag name = "ammunition (12g, beanbag)" - path =/obj/item/ammo_casing/shotgun/beanbag + path =/obj/item/ammo_casing/a12g/beanbag /datum/category_item/autolathe/arms/shotgun_flash name = "ammunition (12g, flash)" - path =/obj/item/ammo_casing/shotgun/flash + path =/obj/item/ammo_casing/a12g/flash /datum/category_item/autolathe/arms/shotgun name = "ammunition (12g, slug)" - path =/obj/item/ammo_casing/shotgun + path =/obj/item/ammo_casing/a12g hidden = 1 /datum/category_item/autolathe/arms/shotgun_pellet name = "ammunition (12g, pellet)" - path =/obj/item/ammo_casing/shotgun/pellet + path =/obj/item/ammo_casing/a12g/pellet hidden = 1 /datum/category_item/autolathe/arms/stunshell name = "ammunition (stun cartridge, shotgun)" - path =/obj/item/ammo_casing/shotgun/stunshell + path =/obj/item/ammo_casing/a12g/stunshell hidden = 1 ////////////////// @@ -81,50 +81,50 @@ /////// 9mm -/obj/item/ammo_magazine/mc9mm/flash - ammo_type =/obj/item/ammo_casing/c9mmf +/obj/item/ammo_magazine/m9mm/flash + ammo_type =/obj/item/ammo_casing/a9mmf -/obj/item/ammo_magazine/mc9mm/rubber +/obj/item/ammo_magazine/m9mm/rubber name = "magazine (9mm rubber)" - ammo_type =/obj/item/ammo_casing/c9mmr + ammo_type =/obj/item/ammo_casing/a9mmr -/obj/item/ammo_magazine/mc9mm/practice +/obj/item/ammo_magazine/m9mm/practice name = "magazine (9mm practice)" - ammo_type =/obj/item/ammo_casing/c9mmp + ammo_type =/obj/item/ammo_casing/a9mmp /datum/category_item/autolathe/arms/pistol_9mm name = "pistol magazine (9mm)" - path =/obj/item/ammo_magazine/mc9mm + path =/obj/item/ammo_magazine/m9mm hidden = 1 /datum/category_item/autolathe/arms/pistol_9mmr name = "pistol magazine (9mm rubber)" - path =/obj/item/ammo_magazine/mc9mm/rubber + path =/obj/item/ammo_magazine/m9mm/rubber /datum/category_item/autolathe/arms/pistol_9mmp name = "pistol magazine (9mm practice)" - path =/obj/item/ammo_magazine/mc9mm/practice + path =/obj/item/ammo_magazine/m9mm/practice /datum/category_item/autolathe/arms/pistol_9mmf name = "pistol magazine (9mm flash)" - path =/obj/item/ammo_magazine/mc9mm/flash + path =/obj/item/ammo_magazine/m9mm/flash /datum/category_item/autolathe/arms/smg_9mm name = "top-mounted SMG magazine (9mm)" - path =/obj/item/ammo_magazine/mc9mmt + path =/obj/item/ammo_magazine/m9mmt hidden = 1 /datum/category_item/autolathe/arms/smg_9mmr name = "top-mounted SMG magazine (9mm rubber)" - path =/obj/item/ammo_magazine/mc9mmt/rubber + path =/obj/item/ammo_magazine/m9mmt/rubber /datum/category_item/autolathe/arms/smg_9mmp name = "top-mounted SMG magazine (9mm practice)" - path =/obj/item/ammo_magazine/mc9mmt/practice + path =/obj/item/ammo_magazine/m9mmt/practice /datum/category_item/autolathe/arms/smg_9mmf name = "top-mounted SMG magazine (9mm flash)" - path =/obj/item/ammo_magazine/mc9mmt/flash + path =/obj/item/ammo_magazine/m9mmt/flash /////// 10mm /datum/category_item/autolathe/arms/smg_10mm @@ -161,7 +161,7 @@ /datum/category_item/autolathe/arms/shotgun_magazine name = "24rnd shotgun magazine (12g)" - path =/obj/item/ammo_magazine/g12 + path =/obj/item/ammo_magazine/m12gdrum hidden = 1 /* @@ -211,12 +211,12 @@ /datum/category_item/autolathe/arms/pistol_9mm name = "pistol magazine (9mm)" - path =/obj/item/ammo_magazine/mc9mm/empty + path =/obj/item/ammo_magazine/m9mm/empty category = "Arms and Ammunition" /datum/category_item/autolathe/arms/smg_9mm name = "top-mounted SMG magazine (9mm)" - path =/obj/item/ammo_magazine/mc9mmt/empty + path =/obj/item/ammo_magazine/m9mmt/empty category = "Arms and Ammunition" /datum/category_item/autolathe/arms/smg_10mm @@ -262,7 +262,7 @@ /datum/category_item/autolathe/arms/shotgun_magazine name = "24rnd shotgun magazine (12g)" - path =/obj/item/ammo_magazine/g12/empty + path =/obj/item/ammo_magazine/m12gdrum/empty category = "Arms and Ammunition" hidden = 1*/ @@ -335,35 +335,35 @@ /datum/category_item/autolathe/arms/pistol_clip_10mm name = "ammo clip (10mm)" - path =/obj/item/ammo_magazine/clip/a10mm + path =/obj/item/ammo_magazine/clip/c10mm category = "Arms and Ammunition" hidden = 1 /datum/category_item/autolathe/arms/pistol_clip_50 name = "ammo clip (.50AE)" - path =/obj/item/ammo_magazine/clip/a50 + path =/obj/item/ammo_magazine/clip/c50 category = "Arms and Ammunition" hidden = 1 */ /datum/category_item/autolathe/arms/rifle_clip_556 name = "ammo clip (5.56mm)" - path =/obj/item/ammo_magazine/clip/a556 + path =/obj/item/ammo_magazine/clip/c556 category = "Arms and Ammunition" hidden = 1 /datum/category_item/autolathe/arms/rifle_clip_556_practice name = "ammo clip (5.56mm practice)" - path =/obj/item/ammo_magazine/clip/a556/practice + path =/obj/item/ammo_magazine/clip/c556/practice category = "Arms and Ammunition" /datum/category_item/autolathe/arms/rifle_clip_762 name = "ammo clip (7.62mm)" - path =/obj/item/ammo_magazine/clip/a762 + path =/obj/item/ammo_magazine/clip/c762 hidden = 1 /datum/category_item/autolathe/arms/rifle_clip_762_practice name = "ammo clip (7.62mm practice)" - path =/obj/item/ammo_magazine/clip/a762/practice + path =/obj/item/ammo_magazine/clip/c762/practice /datum/category_item/autolathe/arms/knuckledusters name = "knuckle dusters" diff --git a/code/datums/supplypacks/contraband.dm b/code/datums/supplypacks/contraband.dm index 0c7fd3f4ed..c200e2edda 100644 --- a/code/datums/supplypacks/contraband.dm +++ b/code/datums/supplypacks/contraband.dm @@ -47,7 +47,7 @@ name = "Surplus militia rifles" contains = list( /obj/item/weapon/gun/projectile/shotgun/pump/rifle/mosin = 3, - /obj/item/ammo_magazine/clip/a762 = 6 + /obj/item/ammo_magazine/clip/c762 = 6 ) cost = 50 contraband = 1 diff --git a/code/datums/supplypacks/munitions.dm b/code/datums/supplypacks/munitions.dm index c9817e2274..d0635ffce6 100644 --- a/code/datums/supplypacks/munitions.dm +++ b/code/datums/supplypacks/munitions.dm @@ -129,7 +129,7 @@ contains = list( /obj/item/device/assembly/timer, /obj/item/weapon/gun/projectile/shotgun/pump/rifle/practice = 2, - /obj/item/ammo_magazine/clip/a762/practice = 4, + /obj/item/ammo_magazine/clip/c762/practice = 4, /obj/item/target = 2, /obj/item/target/alien = 2, /obj/item/target/syndicate = 2 @@ -154,8 +154,8 @@ name = "Automatic weapon ammunition crate" num_contained = 6 contains = list( - /obj/item/ammo_magazine/mc9mmt, - /obj/item/ammo_magazine/mc9mmt/rubber, + /obj/item/ammo_magazine/m9mmt, + /obj/item/ammo_magazine/m9mmt/rubber, /obj/item/ammo_magazine/m556saw ) cost = 25 diff --git a/code/datums/uplink/ammunition.dm b/code/datums/uplink/ammunition.dm index 4238884598..03f1296ad9 100644 --- a/code/datums/uplink/ammunition.dm +++ b/code/datums/uplink/ammunition.dm @@ -12,7 +12,7 @@ /datum/uplink_item/item/ammo/mc9mm name = "Pistol Magazine (9mm)" - path = /obj/item/ammo_magazine/mc9mm + path = /obj/item/ammo_magazine/m9mm /datum/uplink_item/item/ammo/c45m name = "Pistol Magazine (.45)" diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 06fd49d0e3..dfa4f61ba1 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -124,7 +124,7 @@ /obj/item/weapon/handcuffs, /obj/item/device/flash, /obj/item/clothing/glasses, - /obj/item/ammo_casing/shotgun, + /obj/item/ammo_casing/a12g, /obj/item/ammo_magazine, /obj/item/weapon/cell/device, /obj/item/weapon/reagent_containers/food/snacks/donut/, diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 8eab766dba..c33e26d809 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -136,12 +136,12 @@ /obj/item/weapon/storage/box/blanks/New() ..() for(var/i = 1 to 8) - new /obj/item/ammo_casing/shotgun/blank(src) + new /obj/item/ammo_casing/a12g/blank(src) /obj/item/weapon/storage/box/blanks/large/New() ..() for(var/i = 1 to 8) - new /obj/item/ammo_casing/shotgun/blank(src) + new /obj/item/ammo_casing/a12g/blank(src) /obj/item/weapon/storage/box/beanbags name = "box of beanbag shells" @@ -152,12 +152,12 @@ /obj/item/weapon/storage/box/beanbags/New() ..() for(var/i = 1 to 8) - new /obj/item/ammo_casing/shotgun/beanbag(src) + new /obj/item/ammo_casing/a12g/beanbag(src) /obj/item/weapon/storage/box/beanbags/large/New() ..() for(var/i = 1 to 8) - new /obj/item/ammo_casing/shotgun/beanbag(src) + new /obj/item/ammo_casing/a12g/beanbag(src) /obj/item/weapon/storage/box/shotgunammo name = "box of shotgun slugs" @@ -168,12 +168,12 @@ /obj/item/weapon/storage/box/shotgunammo/New() ..() for(var/i = 1 to 8) - new /obj/item/ammo_casing/shotgun(src) + new /obj/item/ammo_casing/a12g(src) /obj/item/weapon/storage/box/shotgunammo/large/New() ..() for(var/i = 1 to 8) - new /obj/item/ammo_casing/shotgun(src) + new /obj/item/ammo_casing/a12g(src) /obj/item/weapon/storage/box/shotgunshells name = "box of shotgun shells" @@ -184,12 +184,12 @@ /obj/item/weapon/storage/box/shotgunshells/New() ..() for(var/i = 1 to 8) - new /obj/item/ammo_casing/shotgun/pellet(src) + new /obj/item/ammo_casing/a12g/pellet(src) /obj/item/weapon/storage/box/shotgunshells/large/New() ..() for(var/i = 1 to 8) - new /obj/item/ammo_casing/shotgun/pellet(src) + new /obj/item/ammo_casing/a12g/pellet(src) /obj/item/weapon/storage/box/flashshells name = "box of illumination shells" @@ -200,12 +200,12 @@ /obj/item/weapon/storage/box/flashshells/New() ..() for(var/i = 1 to 8) - new /obj/item/ammo_casing/shotgun/flash(src) + new /obj/item/ammo_casing/a12g/flash(src) /obj/item/weapon/storage/box/flashshells/large/New() ..() for(var/i = 1 to 8) - new /obj/item/ammo_casing/shotgun/flash(src) + new /obj/item/ammo_casing/a12g/flash(src) /obj/item/weapon/storage/box/stunshells name = "box of stun shells" @@ -216,12 +216,12 @@ /obj/item/weapon/storage/box/stunshells/New() ..() for(var/i = 1 to 8) - new /obj/item/ammo_casing/shotgun/stunshell(src) + new /obj/item/ammo_casing/a12g/stunshell(src) /obj/item/weapon/storage/box/stunshells/large/New() ..() for(var/i = 1 to 8) - new /obj/item/ammo_casing/shotgun/stunshell(src) + new /obj/item/ammo_casing/a12g/stunshell(src) /obj/item/weapon/storage/box/practiceshells name = "box of practice shells" @@ -232,12 +232,12 @@ /obj/item/weapon/storage/box/practiceshells/New() ..() for(var/i = 1 to 8) - new /obj/item/ammo_casing/shotgun/practice(src) + new /obj/item/ammo_casing/a12g/practice(src) /obj/item/weapon/storage/box/practiceshells/large/New() ..() for(var/i = 1 to 8) - new /obj/item/ammo_casing/shotgun/practice(src) + new /obj/item/ammo_casing/a12g/practice(src) /obj/item/weapon/storage/box/empshells name = "box of emp shells" @@ -248,12 +248,12 @@ /obj/item/weapon/storage/box/empshells/New() ..() for(var/i = 1 to 8) - new /obj/item/ammo_casing/shotgun/emp(src) + new /obj/item/ammo_casing/a12g/emp(src) /obj/item/weapon/storage/box/empshells/large/New() ..() for(var/i = 1 to 8) - new /obj/item/ammo_casing/shotgun/emp(src) + new /obj/item/ammo_casing/a12g/emp(src) /obj/item/weapon/storage/box/sniperammo name = "box of 14.5mm shells" diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm index 183065d3ba..5dba97befb 100644 --- a/code/game/objects/random/random.dm +++ b/code/game/objects/random/random.dm @@ -288,8 +288,8 @@ prob(2);/obj/item/ammo_magazine/m45, prob(4);/obj/item/ammo_magazine/m45/rubber, prob(4);/obj/item/ammo_magazine/m45/flash, - prob(2);/obj/item/ammo_magazine/mc9mmt, - prob(6);/obj/item/ammo_magazine/mc9mmt/rubber) + prob(2);/obj/item/ammo_magazine/m9mmt, + prob(6);/obj/item/ammo_magazine/m9mmt/rubber) /obj/random/action_figure diff --git a/code/modules/projectiles/ammunition/boxes.dm b/code/modules/projectiles/ammunition/boxes.dm index 3ee2393bbf..d4b450341c 100644 --- a/code/modules/projectiles/ammunition/boxes.dm +++ b/code/modules/projectiles/ammunition/boxes.dm @@ -18,17 +18,17 @@ icon_state = "38" caliber = "38" matter = list(DEFAULT_WALL_MATERIAL = 360) - ammo_type = /obj/item/ammo_casing/c38 + ammo_type = /obj/item/ammo_casing/a38 max_ammo = 6 multiple_sprites = 1 /obj/item/ammo_magazine/s38/rubber name = "speedloader (.38 rubber)" - ammo_type = /obj/item/ammo_casing/c38r + ammo_type = /obj/item/ammo_casing/a38r /obj/item/ammo_magazine/s38/emp name = "ammunition box (.38 haywire)" - ammo_type = /obj/item/ammo_casing/c38/emp + ammo_type = /obj/item/ammo_casing/a38/emp ///////// .45 ///////// @@ -36,7 +36,7 @@ name = "pistol magazine (.45)" icon_state = "45" mag_type = MAGAZINE - ammo_type = /obj/item/ammo_casing/c45 + ammo_type = /obj/item/ammo_casing/a45 matter = list(DEFAULT_WALL_MATERIAL = 525) //metal costs are very roughly based around 1 .45 casing = 75 metal caliber = ".45" max_ammo = 7 @@ -47,29 +47,29 @@ /obj/item/ammo_magazine/m45/rubber name = "magazine (.45 rubber)" - ammo_type = /obj/item/ammo_casing/c45r + ammo_type = /obj/item/ammo_casing/a45r /obj/item/ammo_magazine/m45/practice name = "magazine (.45 practice)" - ammo_type = /obj/item/ammo_casing/c45p + ammo_type = /obj/item/ammo_casing/a45p /obj/item/ammo_magazine/m45/flash name = "magazine (.45 flash)" - ammo_type = /obj/item/ammo_casing/c45f + ammo_type = /obj/item/ammo_casing/a45f /obj/item/ammo_magazine/m45/ap name = "magazine (.45 AP)" - ammo_type = /obj/item/ammo_casing/c45ap + ammo_type = /obj/item/ammo_casing/a45ap /obj/item/ammo_magazine/box/emp/b45 name = "ammunition box (.45 haywire)" - ammo_type = /obj/item/ammo_casing/c45/emp + ammo_type = /obj/item/ammo_casing/a45/emp /obj/item/ammo_magazine/m45uzi name = "stick magazine (.45)" icon_state = "uzi45" mag_type = MAGAZINE - ammo_type = /obj/item/ammo_casing/c45 + ammo_type = /obj/item/ammo_casing/a45 matter = list(DEFAULT_WALL_MATERIAL = 1200) caliber = ".45" max_ammo = 16 @@ -82,14 +82,14 @@ name = "tommygun magazine (.45)" icon_state = "tommy-mag" mag_type = MAGAZINE - ammo_type = /obj/item/ammo_casing/c45 + ammo_type = /obj/item/ammo_casing/a45 matter = list(DEFAULT_WALL_MATERIAL = 1500) caliber = ".45" max_ammo = 20 /obj/item/ammo_magazine/m45tommy/ap name = "tommygun magazine (.45 AP)" - ammo_type = /obj/item/ammo_casing/c45ap + ammo_type = /obj/item/ammo_casing/a45ap /obj/item/ammo_magazine/m45tommy/empty initial_ammo = 0 @@ -99,14 +99,14 @@ icon_state = "tommy-drum" w_class = ITEMSIZE_NORMAL // Bulky ammo doesn't fit in your pockets! mag_type = MAGAZINE - ammo_type = /obj/item/ammo_casing/c45 + ammo_type = /obj/item/ammo_casing/a45 matter = list(DEFAULT_WALL_MATERIAL = 3750) caliber = ".45" max_ammo = 50 /obj/item/ammo_magazine/m45tommydrum/ap name = "tommygun drum magazine (.45 AP)" - ammo_type = /obj/item/ammo_casing/c45ap + ammo_type = /obj/item/ammo_casing/a45ap /obj/item/ammo_magazine/m45tommydrum/empty initial_ammo = 0 @@ -116,86 +116,86 @@ icon_state = "clip_pistol" desc = "A stripper clip for reloading .45 rounds into magazines." caliber = ".45" - ammo_type = /obj/item/ammo_casing/c45 + ammo_type = /obj/item/ammo_casing/a45 matter = list(DEFAULT_WALL_MATERIAL = 675) // metal costs very roughly based around one .45 casing = 75 metal max_ammo = 9 multiple_sprites = 1 /obj/item/ammo_magazine/clip/c45/rubber name = "ammo clip (.45 rubber)" - ammo_type = /obj/item/ammo_casing/c45r + ammo_type = /obj/item/ammo_casing/a45r /obj/item/ammo_magazine/clip/c45/practice name = "ammo clip (.45 practice)" - ammo_type = /obj/item/ammo_casing/c45p + ammo_type = /obj/item/ammo_casing/a45p /obj/item/ammo_magazine/clip/c45/flash name = "ammo clip (.45 flash)" - ammo_type = /obj/item/ammo_casing/c45f + ammo_type = /obj/item/ammo_casing/a45f ///////// 9mm ///////// -/obj/item/ammo_magazine/mc9mm +/obj/item/ammo_magazine/m9mm name = "magazine (9mm)" icon_state = "9x19p" origin_tech = list(TECH_COMBAT = 2) mag_type = MAGAZINE matter = list(DEFAULT_WALL_MATERIAL = 480) caliber = "9mm" - ammo_type = /obj/item/ammo_casing/c9mm + ammo_type = /obj/item/ammo_casing/a9mm max_ammo = 8 multiple_sprites = 1 -/obj/item/ammo_magazine/mc9mm/empty +/obj/item/ammo_magazine/m9mm/empty initial_ammo = 0 -/obj/item/ammo_magazine/mc9mm/flash - ammo_type = /obj/item/ammo_casing/c9mmf +/obj/item/ammo_magazine/m9mm/flash + ammo_type = /obj/item/ammo_casing/a9mmf -/obj/item/ammo_magazine/mc9mm/rubber +/obj/item/ammo_magazine/m9mm/rubber name = "magazine (9mm rubber)" - ammo_type = /obj/item/ammo_casing/c9mmr + ammo_type = /obj/item/ammo_casing/a9mmr -/obj/item/ammo_magazine/mc9mm/practice +/obj/item/ammo_magazine/m9mm/practice name = "magazine (9mm practice)" - ammo_type = /obj/item/ammo_casing/c9mmp + ammo_type = /obj/item/ammo_casing/a9mmp -/obj/item/ammo_magazine/mc9mmt +/obj/item/ammo_magazine/m9mmt name = "top mounted magazine (9mm)" icon_state = "9mmt" mag_type = MAGAZINE - ammo_type = /obj/item/ammo_casing/c9mm + ammo_type = /obj/item/ammo_casing/a9mm matter = list(DEFAULT_WALL_MATERIAL = 1200) caliber = "9mm" max_ammo = 20 multiple_sprites = 1 -/obj/item/ammo_magazine/mc9mmt/empty +/obj/item/ammo_magazine/m9mmt/empty initial_ammo = 0 -/obj/item/ammo_magazine/mc9mmt/rubber +/obj/item/ammo_magazine/m9mmt/rubber name = "top mounted magazine (9mm rubber)" - ammo_type = /obj/item/ammo_casing/c9mmr + ammo_type = /obj/item/ammo_casing/a9mmr -/obj/item/ammo_magazine/mc9mmt/flash +/obj/item/ammo_magazine/m9mmt/flash name = "top mounted magazine (9mm flash)" - ammo_type = /obj/item/ammo_casing/c9mmf + ammo_type = /obj/item/ammo_casing/a9mmf -/obj/item/ammo_magazine/mc9mmt/practice +/obj/item/ammo_magazine/m9mmt/practice name = "top mounted magazine (9mm practice)" - ammo_type = /obj/item/ammo_casing/c9mmp + ammo_type = /obj/item/ammo_casing/a9mmp -/obj/item/ammo_magazine/p90 +/obj/item/ammo_magazine/m9mmp90 name = "high capacity top mounted magazine (9mm armor-piercing)" icon_state = "p90" mag_type = MAGAZINE - ammo_type = /obj/item/ammo_casing/c9mm/ap + ammo_type = /obj/item/ammo_casing/a9mm/ap matter = list(DEFAULT_WALL_MATERIAL = 3000) caliber = "9mm" max_ammo = 50 multiple_sprites = 1 -/obj/item/ammo_magazine/p90/empty +/obj/item/ammo_magazine/m9mmp90/empty initial_ammo = 0 /obj/item/ammo_magazine/clip/c9mm @@ -203,33 +203,33 @@ icon_state = "clip_pistol" desc = "A stripper clip for reloading 9mm rounds into magazines." caliber = "9mm" - ammo_type = /obj/item/ammo_casing/c9mm + ammo_type = /obj/item/ammo_casing/a9mm matter = list(DEFAULT_WALL_MATERIAL = 540) // metal costs are very roughly based around one 9mm casing = 60 metal max_ammo = 9 multiple_sprites = 1 /obj/item/ammo_magazine/clip/c9mm/rubber name = "ammo clip (.45 rubber)" - ammo_type = /obj/item/ammo_casing/c9mmr + ammo_type = /obj/item/ammo_casing/a9mmr /obj/item/ammo_magazine/clip/c9mm/practice name = "ammo clip (.45 practice)" - ammo_type = /obj/item/ammo_casing/c9mmp + ammo_type = /obj/item/ammo_casing/a9mmp /obj/item/ammo_magazine/clip/c9mm/flash name = "ammo clip (.45 flash)" - ammo_type = /obj/item/ammo_casing/c9mmf + ammo_type = /obj/item/ammo_casing/a9mmf -/obj/item/ammo_magazine/c9mm // Made by RnD for Prototype SMG and should probably be removed because why does it require DIAMONDS to make bullets? +/obj/item/ammo_magazine/box/c9mm // Made by RnD for Prototype SMG and should probably be removed because why does it require DIAMONDS to make bullets? name = "ammunition Box (9mm)" icon_state = "9mm" origin_tech = list(TECH_COMBAT = 2) matter = list(DEFAULT_WALL_MATERIAL = 1800) caliber = "9mm" - ammo_type = /obj/item/ammo_casing/c9mm + ammo_type = /obj/item/ammo_casing/a9mm max_ammo = 30 -/obj/item/ammo_magazine/c9mm/empty +/obj/item/ammo_magazine/box/c9mm/empty initial_ammo = 0 ///////// 5mm ///////// @@ -270,7 +270,7 @@ /obj/item/ammo_magazine/m10mm/empty initial_ammo = 0 -/obj/item/ammo_magazine/clip/a10mm +/obj/item/ammo_magazine/clip/c10mm name = "ammo clip (10mm)" icon_state = "clip_pistol" desc = "A stripper clip for reloading 5mm rounds into magazines." @@ -288,7 +288,7 @@ /obj/item/ammo_magazine/m556 name = "magazine (5.56mm)" - icon_state = "c5.56" + icon_state = "c5.56mid" origin_tech = list(TECH_COMBAT = 2) mag_type = MAGAZINE caliber = "a556" @@ -324,7 +324,28 @@ name = "extended magazine (5.56mm armor-piercing)" max_ammo = 30 -/obj/item/ammo_magazine/clip/a556 +/obj/item/ammo_magazine/m556/small + name = "magazine (5.56)" + icon_state = "c5.56" // This icon is named wrongly. Change later. + mag_type = MAGAZINE + caliber = "a762" + matter = list(DEFAULT_WALL_MATERIAL = 900) + ammo_type = /obj/item/ammo_casing/a762 + max_ammo = 10 + multiple_sprites = 1 + +/obj/item/ammo_magazine/m556/small/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/m556/small/practice + name = "magazine (5.56mm practice)" + ammo_type = /obj/item/ammo_casing/a556p + +/obj/item/ammo_magazine/m556/small/ap + name = "magazine (7.62mm armor-piercing)" + ammo_type = /obj/item/ammo_casing/a556/ap + +/obj/item/ammo_magazine/clip/c556 name = "ammo clip (5.56mm)" icon_state = "clip_rifle" caliber = "a556" @@ -333,11 +354,11 @@ max_ammo = 5 multiple_sprites = 1 -/obj/item/ammo_magazine/clip/a556/ap +/obj/item/ammo_magazine/clip/c556/ap name = "rifle clip (5.56mm armor-piercing)" ammo_type = /obj/item/ammo_casing/a556/ap -/obj/item/ammo_magazine/clip/a556/practice +/obj/item/ammo_magazine/clip/c556/practice name = "rifle clip (5.56mm practice)" ammo_type = /obj/item/ammo_casing/a556 @@ -376,7 +397,7 @@ /obj/item/ammo_magazine/m50/empty initial_ammo = 0 -/obj/item/ammo_magazine/clip/a50 +/obj/item/ammo_magazine/clip/c50 name = "ammo clip (.50 AE)" icon_state = "clip_pistol" desc = "A stripper clip for reloading .50 Action Express rounds into magazines." @@ -405,24 +426,7 @@ /obj/item/ammo_magazine/m762/empty initial_ammo = 0 -/obj/item/ammo_magazine/s762 // 's' for small! - name = "magazine (7.62mm)" - icon_state = "SVD" - mag_type = MAGAZINE - caliber = "a762" - matter = list(DEFAULT_WALL_MATERIAL = 1000) - ammo_type = /obj/item/ammo_casing/a762 - max_ammo = 10 - multiple_sprites = 1 - -/obj/item/ammo_magazine/s762/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/s762/ap - name = "magazine (7.62mm armor-piercing)" - ammo_type = /obj/item/ammo_casing/a762/ap - -/obj/item/ammo_magazine/clip/a762 +/obj/item/ammo_magazine/clip/c762 name = "ammo clip (7.62mm)" icon_state = "clip_rifle" caliber = "a762" @@ -431,39 +435,39 @@ max_ammo = 5 multiple_sprites = 1 -/obj/item/ammo_magazine/clip/a762/ap +/obj/item/ammo_magazine/clip/c762/ap name = "rifle clip (7.62mm armor-piercing)" ammo_type = /obj/item/ammo_casing/a762/ap -/obj/item/ammo_magazine/clip/a762/practice +/obj/item/ammo_magazine/clip/c762/practice name = "rifle clip (7.62mm practice)" ammo_type = /obj/item/ammo_casing/a762p ///////// 12g ///////// -/obj/item/ammo_magazine/g12 +/obj/item/ammo_magazine/m12gdrum name = "magazine (12 gauge)" icon_state = "12g" mag_type = MAGAZINE caliber = "shotgun" matter = list(DEFAULT_WALL_MATERIAL = 2200) - ammo_type = /obj/item/ammo_casing/shotgun + ammo_type = /obj/item/ammo_casing/a12g max_ammo = 24 multiple_sprites = 1 -/obj/item/ammo_magazine/g12/beanbag +/obj/item/ammo_magazine/m12gdrum/beanbag name = "magazine (12 gauge beanbag)" - ammo_type = /obj/item/ammo_casing/shotgun/beanbag + ammo_type = /obj/item/ammo_casing/a12g/beanbag -/obj/item/ammo_magazine/g12/pellet +/obj/item/ammo_magazine/m12gdrum/pellet name = "magazine (12 gauge pellet)" - ammo_type = /obj/item/ammo_casing/shotgun/pellet + ammo_type = /obj/item/ammo_casing/a12g/pellet -/obj/item/ammo_magazine/g12/flash +/obj/item/ammo_magazine/m12gdrum/flash name = "magazine (12 gauge flash)" - ammo_type = /obj/item/ammo_casing/shotgun/flash + ammo_type = /obj/item/ammo_casing/a12g/flash -/obj/item/ammo_magazine/g12/empty +/obj/item/ammo_magazine/m12gdrum/empty initial_ammo = 0 ///////// .75 Gyrojet ///////// diff --git a/code/modules/projectiles/ammunition/bullets.dm b/code/modules/projectiles/ammunition/bullets.dm index dfbd721952..aa34925cef 100644 --- a/code/modules/projectiles/ammunition/bullets.dm +++ b/code/modules/projectiles/ammunition/bullets.dm @@ -13,18 +13,18 @@ caliber = "75" projectile_type = /obj/item/projectile/bullet/gyro -/obj/item/ammo_casing/c38 +/obj/item/ammo_casing/a38 desc = "A .38 bullet casing." caliber = "38" projectile_type = /obj/item/projectile/bullet/pistol -/obj/item/ammo_casing/c38r +/obj/item/ammo_casing/a38r desc = "A .38 rubber bullet casing." caliber = "38" icon_state = "r-casing" projectile_type = /obj/item/projectile/bullet/pistol/rubber -/obj/item/ammo_casing/c38/emp +/obj/item/ammo_casing/a38/emp name = ".38 haywire round" desc = "A .38 bullet casing fitted with a single-use ion pulse generator." icon_state = "empcasing" @@ -35,28 +35,28 @@ * 9mm */ -/obj/item/ammo_casing/c9mm +/obj/item/ammo_casing/a9mm desc = "A 9mm bullet casing." caliber = "9mm" projectile_type = /obj/item/projectile/bullet/pistol -/obj/item/ammo_casing/c9mm/ap +/obj/item/ammo_casing/a9mm/ap desc = "A 9mm armor-piercing bullet casing." projectile_type = /obj/item/projectile/bullet/pistol/ap -/obj/item/ammo_casing/c9mmf +/obj/item/ammo_casing/a9mmf desc = "A 9mm flash shell casing." caliber = "9mm" icon_state = "r-casing" projectile_type = /obj/item/projectile/energy/flash -/obj/item/ammo_casing/c9mmr +/obj/item/ammo_casing/a9mmr desc = "A 9mm rubber bullet casing." caliber = "9mm" icon_state = "r-casing" projectile_type = /obj/item/projectile/bullet/pistol/rubber -/obj/item/ammo_casing/c9mmp +/obj/item/ammo_casing/a9mmp desc = "A 9mm practice bullet casing." caliber = "9mm" icon_state = "r-casing" @@ -73,43 +73,43 @@ * 45 ammo */ -/obj/item/ammo_casing/c45 +/obj/item/ammo_casing/a45 desc = "A .45 bullet casing." caliber = ".45" projectile_type = /obj/item/projectile/bullet/pistol/medium -/obj/item/ammo_casing/c45ap +/obj/item/ammo_casing/a45ap desc = "A .45 Armor-Piercing bullet casing." caliber = ".45" icon_state = "r-casing" projectile_type = /obj/item/projectile/bullet/pistol/medium/ap -/obj/item/ammo_casing/c45p +/obj/item/ammo_casing/a45p desc = "A .45 practice bullet casing." caliber = ".45" icon_state = "r-casing" projectile_type = /obj/item/projectile/bullet/pistol/practice -/obj/item/ammo_casing/c45r +/obj/item/ammo_casing/a45r desc = "A .45 rubber bullet casing." caliber = ".45" icon_state = "r-casing" projectile_type = /obj/item/projectile/bullet/pistol/rubber -/obj/item/ammo_casing/c45f +/obj/item/ammo_casing/a45f desc = "A .45 flash shell casing." caliber = ".45" icon_state = "r-casing" projectile_type = /obj/item/projectile/energy/flash -/obj/item/ammo_casing/c45/emp +/obj/item/ammo_casing/a45/emp name = ".45 haywire round" desc = "A .45 bullet casing fitted with a single-use ion pulse generator." projectile_type = /obj/item/projectile/ion/small icon_state = "empcasing" matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100) -/obj/item/ammo_casing/c45/hp +/obj/item/ammo_casing/a45/hp desc = "A .45 hollow-point bullet casing." projectile_type = /obj/item/projectile/bullet/pistol/medium/hollow @@ -134,7 +134,7 @@ * Shotguns */ -/obj/item/ammo_casing/shotgun +/obj/item/ammo_casing/a12g name = "shotgun slug" desc = "A 12 gauge slug." icon_state = "slshell" @@ -142,28 +142,28 @@ projectile_type = /obj/item/projectile/bullet/shotgun matter = list(DEFAULT_WALL_MATERIAL = 360) -/obj/item/ammo_casing/shotgun/pellet +/obj/item/ammo_casing/a12g/pellet name = "shotgun shell" desc = "A 12 gauge shell." icon_state = "gshell" projectile_type = /obj/item/projectile/bullet/pellet/shotgun matter = list(DEFAULT_WALL_MATERIAL = 360) -/obj/item/ammo_casing/shotgun/blank +/obj/item/ammo_casing/a12g/blank name = "shotgun shell" desc = "A blank shell." icon_state = "blshell" projectile_type = /obj/item/projectile/bullet/blank matter = list(DEFAULT_WALL_MATERIAL = 90) -/obj/item/ammo_casing/shotgun/practice +/obj/item/ammo_casing/a12g/practice name = "shotgun shell" desc = "A practice shell." icon_state = "pshell" projectile_type = /obj/item/projectile/bullet/shotgun/practice matter = list("metal" = 90) -/obj/item/ammo_casing/shotgun/beanbag +/obj/item/ammo_casing/a12g/beanbag name = "beanbag shell" desc = "A beanbag shell." icon_state = "bshell" @@ -172,26 +172,26 @@ //Can stun in one hit if aimed at the head, but //is blocked by clothing that stops tasers and is vulnerable to EMP -/obj/item/ammo_casing/shotgun/stunshell +/obj/item/ammo_casing/a12g/stunshell name = "stun shell" desc = "A 12 gauge taser cartridge." icon_state = "stunshell" projectile_type = /obj/item/projectile/energy/electrode/stunshot matter = list(DEFAULT_WALL_MATERIAL = 360, "glass" = 720) -/obj/item/ammo_casing/shotgun/stunshell/emp_act(severity) +/obj/item/ammo_casing/a12g/stunshell/emp_act(severity) if(prob(100/severity)) BB = null update_icon() //Does not stun, only blinds, but has area of effect. -/obj/item/ammo_casing/shotgun/flash +/obj/item/ammo_casing/a12g/flash name = "flash shell" desc = "A chemical shell used to signal distress or provide illumination." icon_state = "fshell" projectile_type = /obj/item/projectile/energy/flash/flare matter = list(DEFAULT_WALL_MATERIAL = 90, "glass" = 90) -/obj/item/ammo_casing/shotgun/emp +/obj/item/ammo_casing/a12g/emp name = "ion shell" desc = "An advanced shotgun round that creates a small EMP when it strikes a target." icon_state = "empshell" diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 7699b8483c..373e0bff8e 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -8,7 +8,7 @@ caliber = "9mm" origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2) slot_flags = SLOT_BELT - ammo_type = /obj/item/ammo_casing/c9mm + ammo_type = /obj/item/ammo_casing/a9mm multi_aim = 1 burst_delay = 2 @@ -88,11 +88,11 @@ caliber = "9mm" origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2) slot_flags = SLOT_BELT - ammo_type = "/obj/item/ammo_casing/c9mmr" + ammo_type = "/obj/item/ammo_casing/a9mmr" fire_sound = 'sound/weapons/Gunshot_light.ogg' load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/mc9mmt/rubber - allowed_magazines = list(/obj/item/ammo_magazine/mc9mmt) + magazine_type = /obj/item/ammo_magazine/m9mmt/rubber + allowed_magazines = list(/obj/item/ammo_magazine/m9mmt) /obj/item/weapon/gun/projectile/automatic/wt550/update_icon() ..() @@ -257,8 +257,8 @@ origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4) slot_flags = SLOT_BACK load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/g12 - allowed_magazines = list(/obj/item/ammo_magazine/g12) + magazine_type = /obj/item/ammo_magazine/m12gdrum + allowed_magazines = list(/obj/item/ammo_magazine/m12gdrum) one_handed_penalty = 4 @@ -310,8 +310,8 @@ slot_flags = SLOT_BELT // ToDo: Belt sprite. fire_sound = 'sound/weapons/Gunshot_light.ogg' load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/p90 - allowed_magazines = list(/obj/item/ammo_magazine/p90, /obj/item/ammo_magazine/mc9mmt) // ToDo: New sprite for the different mag. + magazine_type = /obj/item/ammo_magazine/m9mmp90 + allowed_magazines = list(/obj/item/ammo_magazine/m9mmp90, /obj/item/ammo_magazine/m9mmt) // ToDo: New sprite for the different mag. firemodes = list( list(mode_name="semiauto", burst=1, fire_delay=0), diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm index d4f9d265f0..69fa353a52 100644 --- a/code/modules/projectiles/guns/projectile/pistol.dm +++ b/code/modules/projectiles/guns/projectile/pistol.dm @@ -196,12 +196,12 @@ origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 2) fire_sound = 'sound/weapons/semiauto.ogg' load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/mc9mm - allowed_magazines = list(/obj/item/ammo_magazine/mc9mm) + magazine_type = /obj/item/ammo_magazine/m9mm + allowed_magazines = list(/obj/item/ammo_magazine/m9mm) /obj/item/weapon/gun/projectile/pistol/flash name = "holdout signal pistol" - magazine_type = /obj/item/ammo_magazine/mc9mm/flash + magazine_type = /obj/item/ammo_magazine/m9mm/flash /obj/item/weapon/gun/projectile/pistol/attack_hand(mob/living/user as mob) if(user.get_inactive_hand() == src) @@ -256,17 +256,17 @@ var/global/list/ammo_types = list( /obj/item/ammo_casing/a357 = ".357", - /obj/item/ammo_casing/c9mmf = "9mm", - /obj/item/ammo_casing/c45f = ".45", + /obj/item/ammo_casing/a9mmf = "9mm", + /obj/item/ammo_casing/a45f = ".45", /obj/item/ammo_casing/a10mm = "10mm", - /obj/item/ammo_casing/shotgun = "12 gauge", - /obj/item/ammo_casing/shotgun = "12 gauge", - /obj/item/ammo_casing/shotgun/pellet = "12 gauge", - /obj/item/ammo_casing/shotgun/pellet = "12 gauge", - /obj/item/ammo_casing/shotgun/pellet = "12 gauge", - /obj/item/ammo_casing/shotgun/beanbag = "12 gauge", - /obj/item/ammo_casing/shotgun/stunshell = "12 gauge", - /obj/item/ammo_casing/shotgun/flash = "12 gauge", + /obj/item/ammo_casing/a12g = "12 gauge", + /obj/item/ammo_casing/a12g = "12 gauge", + /obj/item/ammo_casing/a12g/pellet = "12 gauge", + /obj/item/ammo_casing/a12g/pellet = "12 gauge", + /obj/item/ammo_casing/a12g/pellet = "12 gauge", + /obj/item/ammo_casing/a12g/beanbag = "12 gauge", + /obj/item/ammo_casing/a12g/stunshell = "12 gauge", + /obj/item/ammo_casing/a12g/flash = "12 gauge", /obj/item/ammo_casing/a762 = "7.62mm", /obj/item/ammo_casing/a556 = "5.56mm" ) @@ -299,8 +299,8 @@ caliber = "9mm" load_method = MAGAZINE fire_sound = 'sound/weapons/semiauto.ogg' - magazine_type = /obj/item/ammo_magazine/mc9mm - allowed_magazines = list(/obj/item/ammo_magazine/mc9mm) + magazine_type = /obj/item/ammo_magazine/m9mm + allowed_magazines = list(/obj/item/ammo_magazine/m9mm) /obj/item/weapon/gun/projectile/luger/update_icon() ..() diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index e7d31c0226..a92e59982c 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -46,7 +46,7 @@ caliber = "38" origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) fire_sound = 'sound/weapons/Gunshot_light.ogg' - ammo_type = /obj/item/ammo_casing/c38 + ammo_type = /obj/item/ammo_casing/a38 /obj/item/weapon/gun/projectile/revolver/detective/verb/rename_gun() set name = "Name Gun" @@ -74,10 +74,10 @@ caliber = "38" origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) fire_sound = 'sound/weapons/Gunshot_light.ogg' - ammo_type = /obj/item/ammo_casing/c38 + ammo_type = /obj/item/ammo_casing/a38 /obj/item/weapon/gun/projectile/revolver/deckard/emp - ammo_type = /obj/item/ammo_casing/c38/emp + ammo_type = /obj/item/ammo_casing/a38/emp /obj/item/weapon/gun/projectile/revolver/deckard/update_icon() @@ -113,7 +113,7 @@ fire_sound = 'sound/weapons/shotgun.ogg' recoil = 2 // ow my fucking hand accuracy = -1 // smooth bore + short barrel = shit accuracy - ammo_type = /obj/item/ammo_casing/shotgun + ammo_type = /obj/item/ammo_casing/a12g // ToDo: Remove accuracy debuf in exchange for slightly injuring your hand every time you fire it. /obj/item/weapon/gun/projectile/revolver/lemat @@ -125,10 +125,10 @@ handle_casings = CYCLE_CASINGS max_shells = 9 caliber = "38" - ammo_type = /obj/item/ammo_casing/c38 + ammo_type = /obj/item/ammo_casing/a38 var/secondary_max_shells = 1 var/secondary_caliber = "shotgun" - var/secondary_ammo_type = /obj/item/ammo_casing/shotgun + var/secondary_ammo_type = /obj/item/ammo_casing/a12g var/flipped_firing = 0 var/list/secondary_loaded = list() var/list/tertiary_loaded = list() diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index 84ad0bc426..80d1a09d78 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -11,7 +11,7 @@ caliber = "shotgun" origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2) load_method = SINGLE_CASING - ammo_type = /obj/item/ammo_casing/shotgun/beanbag + ammo_type = /obj/item/ammo_casing/a12g/beanbag handle_casings = HOLD_CASINGS fire_sound = 'sound/weapons/shotgun.ogg' var/recentpump = 0 // to prevent spammage @@ -48,7 +48,7 @@ item_state = "cshotgun" origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2) max_shells = 7 //match the ammo box capacity, also it can hold a round in the chamber anyways, for a total of 8. - ammo_type = /obj/item/ammo_casing/shotgun + ammo_type = /obj/item/ammo_casing/a12g /obj/item/weapon/gun/projectile/shotgun/doublebarrel name = "double-barreled shotgun" @@ -66,7 +66,7 @@ slot_flags = SLOT_BACK caliber = "shotgun" origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 1) - ammo_type = /obj/item/ammo_casing/shotgun/beanbag + ammo_type = /obj/item/ammo_casing/a12g/beanbag burst_delay = 0 firemodes = list( @@ -75,12 +75,12 @@ ) /obj/item/weapon/gun/projectile/shotgun/doublebarrel/pellet - ammo_type = /obj/item/ammo_casing/shotgun/pellet + ammo_type = /obj/item/ammo_casing/a12g/pellet /obj/item/weapon/gun/projectile/shotgun/doublebarrel/flare name = "signal shotgun" desc = "A double-barreled shotgun meant to fire signal flash shells." - ammo_type = /obj/item/ammo_casing/shotgun/flash + ammo_type = /obj/item/ammo_casing/a12g/flash /obj/item/weapon/gun/projectile/shotgun/doublebarrel/unload_ammo(user, allow_dump) ..(user, allow_dump=1) @@ -115,6 +115,6 @@ icon_state = "sawnshotgun" item_state = "sawnshotgun" slot_flags = SLOT_BELT|SLOT_HOLSTER - ammo_type = /obj/item/ammo_casing/shotgun/pellet + ammo_type = /obj/item/ammo_casing/a12g/pellet w_class = ITEMSIZE_NORMAL force = 5 diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 49678c966c..6f1add522a 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -545,7 +545,7 @@ other types of metals and chemistry for reagents). id = "ammo_9mm" req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3) materials = list(DEFAULT_WALL_MATERIAL = 3750, "silver" = 100) - build_path = /obj/item/ammo_magazine/c9mm + build_path = /obj/item/ammo_magazine/box/c9mm sort_string = "TAACA" /datum/design/item/weapon/stunshell @@ -553,7 +553,7 @@ other types of metals and chemistry for reagents). id = "stunshell" req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3) materials = list(DEFAULT_WALL_MATERIAL = 4000) - build_path = /obj/item/ammo_casing/shotgun/stunshell + build_path = /obj/item/ammo_casing/a12g/stunshell sort_string = "TAACB" /datum/design/item/weapon/chemsprayer diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index 0e0959705e4461fde7a7f52f77d1c71d67af7554..a120049eeadead0db24447477966a735e0dc0969 100644 GIT binary patch literal 25318 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 TG7A2G1!QJ)!LaPC>w|v-il{R| literal 25469 zcmb@u2UJt-wl=y#6%`O^B0>a|A|OhUPLPfwi1ZF3MY{B!pdwW|(u;_IN>h4E5G+XV zNDWA@p@%?7{*~|h_Wu8U?>YC}G45rIB#W&2w&$7inR6!Up|(2h*~@1E0HD>>P9xl6%+_ZYF);T`6a}ZJlzN)YrNjN%!rG_>=c?EE)v$;87Jiw zgse6%OzpIeYLy>(?hHvh>l+oipBB^Nv#AhAeCb$V=j@yOL2gd6OLhJgc#sfl(^r34 z!YS+Zt2e?+&KF!$5r`bTkjlgK>%5P$=-ay5)wrV1?W4yExgA#3HttPv-;ghiBc2%; z0y!05$X0?=nH85ml>#zWc9i|N8-j>lBNK=>vh!?G;thuCtU@wQKITf#4*)|U*?!7d z$JhFbY46GCV)Yf*_*DfTBBQ?Otn{Y17i@fW+V50)lr>AYDQj%bzan22&W}*P7j{Ya z?6=5ASJhI;ZWk~`GQ3xe<)?hCBCz7?Tn2eiGm0oObyn0XlgR%tdbwZUnbz@R4VCza zDS4*T1EWCkO)vMJZK7f#+2O+}V{7VY_LwJUCEvXCyq4qHsN6u7^o##JqbjTqe5dhb z>v(^addf*n;F}kf=D~SQ6-Uu9Dn`efVLvW9-Uxej(R#wM`vMm~5aZN+f!z4@sLg_- zu6o>7f5*Tkr}XhgzoeWLG~&oJU6c219d+ZgQLOPCY__}6Y^dkO*W;#7pDZ`xZ}0!? z7}ZMgd+IA`up(Zs?3_Gt{+Y*v`_u<8l!kAPGd5YZvk(3|BpY4s1+5DWD<3&~rp~l1 zzp!*KwJ1k-SulqiC-+?3C=i+$^mbo?mn^-%B|a)&@)7vO-I*TBtwfpgtoSq}R0Btqp&};FI~2RHZ`o*w(XsfwnxdA;p4jLj6qN zUsEn!0pGgo$n}xFX##FSw}||1LbElEUZ=j*XUfJXsNBN+(k)%Bb_1?I%{fWpW1Ft= zU3weQw%ukpxLEKxNBXmbo*(fNQ~lFo6SY@*(+#1MO&8)V9zCAOeL4}Tml^sZx8K?r zlE|>+aP`<@-=4|aS1V5F^oZuXp+X(7kISH9^(icJJOa}$)FXq6u`+m79rN5L71C*X?@cVPw z7}TDN8rv$r2XQt_{aDHT?1iE7=_*p?JB#0X1?-EVvL=6wzo4^$$~Py;RNhMF$?IRu zST1yQ2y?MsOgHbimLZLTy%OubCYCWNy(}%Zymu%enxVC{mz}X7hhCPJ{P5+=MHLm5 zCpT#d*cHKzV_OLL@kB`oh>VQXilhV>7!qkd16R4ZMY&i2@BrSFVPaTY@j1I1Zsm9DQgg?0PA@YfR!AFSgP4-u7erC$1G`I3_-IDGK469vw0F#0R ze|%Qj^P!-?1e9ap+TE{)WZe!5dp%jut~X`;N$Yf@+ z0*&%4;#pu8D^`v@$##W%TaOLgm%!m`x}lXc)>F+)`l!jv&urg)4_*>OH{(95t>PiA zrzLp$;jB!9Q+!P?^dSIjr6Mx5 zF{?D6j==}YaGwe09*jW019)R=*QV)6t?Z5$n9(Bw3CXgIKGe!0FViU~EHSXpwQr0$~B$RNW& z-|fFThG5NkG_8#itlGt(KduYCzz(AZae`Ly9C{_Dy>H*&S6-95>~aTa6+4+4`VQTa zKHr_i;zN*kpSkcTv`+&|S4bOk(?|lo@%uB^Vqg00_K@PhxR1CkZbh8@%v?Zo<@O&2 zF()_yd~zS0)m&@OeUV^?Szbil434ZRPKLX4IRJ>{FWUF4A61-9pTlhOWESdT`W~{66c(8lYNaL()K?_v+xbB_E*uB~g8WR8gx$|-_^EAap{_H+je-ZWUpYt!9+T-QW zdO&Gb%LCK!@16%uWe?Y%T>Ysd8y1MY-I^|c-2&d>%Qm_<93g^j2oy{ z-NbuL7TAUIyABA#9-65v1fi|GWnZM2A_l94`01R}%Aaa#0-v+GzpeND2Cj=vYUf27h8$?#**`I!e5U3| zn1(gc0^3W2!p34sF34T~4%dNOu)^Av6lkR|*>1>$r=<%Ld)g-PqnCc9MZ_&deYtlh zpmcFop?P=PbJ~||Ux5JKo~F^lO`tVRe%Qyo5T!J0_6%Rz6s{~!`Xn<-BTFG>xu*&z zI4x4kF>mjf^36t82S6xHXabi-WM{vPpnCuSe;|MIo%ut4u)##ZqtI`z16N_CwT{`) zYGIkB6W5shV9d!2pSFTMWgkoo`(hCEgf;J{C2kS5Y6%(<>Si-m)G~ruU&!BZQUXtv z_m?XSLtDx69iDK5D=TxvyW zzWRwEiipNXHh&-ZRjRjUZrJL^bC@nQvKVsb$02+$ex(mKfk#j(!Uc0ZNiO8(yL<_!IDur>C;fK}U` z;glbN>vli}?7jZs)y6_GvzPgfcy#@EFa8d?7%0J;ykBVHNr2UEPU2_iRoEaepZ|Td zZR+y#+fVKlz=)2!A#r36NiY{=by58NNR%CWcA`B1+<~R9j8{pe%)bSf&Qg|GUgZ8< z9RN%TLWIebPv`%QIF_ws2oQSzu!>M?{XYZoH`0L}FO7i<3=A0;&H>!q+>DR^MsFJ{ z+63?--);y9p9^f<`jaY1C4X>-bV$J^?|_*rKIP3nh32;G`|GTL| zJ{fWM`%pS^gU#Zme>>RwR_38{XFdS`4FKQv?M{cFPrmn!sT_oXD9^n|Uh{!yTY(Ct z1ZMk}9PG-Blt_#DbtroWm3V$`v1x&BVCuWa$h z;(m1YjfaTX>r>}O=Ov%HlDF1c{w^{G|8UA9L{ecU_3Z4QPV179kG|(gUIK{O3`&~lS=d+Hx3z3Hu>2;L=@L+_G7d%AlmJ{z7#x#$dZAOoyr z0qYT^*(5(?D+V2N!_q&rviAM^qPEQ3xOhKYsC&uC*{q(Tu6-VmcMgM{0~=R&TZ)ON zG(N}B{%sY-2R%LHoI!s+NQll_A|A%sfGf^cA}>(d4O~lc zTLx6t8^*j{iEIP0Y_wMS~_?m?yI8cvT`V(f8Fk;QoSa?Ifr z>*rlNWW!#ILxak4%nH6cy+VsfeR(HB?3DgxJw0$CIBWgQ1LR~rHGBB0=Qt!zkQj2Y z&6R#{#G!CAuUpa&$yNu?l1Jxh6cZs3F~CWuMKllhIYme12~#76{2>T-Or3Pb-DCFb zQhUl>^bsqY72V5+?n^)6NYpAEb210E|86h&Y;Na6ZSP9kR;;|k)29B_0Kd=|Ij@C> z)f#2Pf)*Qb6|-PVc7rysf7peAIRCh?u^VtZ+_fWFj!p0zrUp8%z+w}5MD*h=1eDQz>R45vWbJRn&*_92Trt?Lv%H@ zFfl6^Bz-ATpxUQhjL8fX<6?fr(k>u!=?aI`sSyn6pC2rV7K+}y$?&o)qXB@RGy zF=6CN2zjD=gpn+4YG^0U;Hg?9?(v>7SKvw2N^q46+)iOnbc0(<^^Gw5_2jTc2(Vp;PmK8syJMMo|*G(Raqb&qr)6O zb0mF)i(BR8p19t)?Tf_KCL>*FsD;!T7`-My&D zg3nIG#|_8RhOt>`1#9cMGeeAz7%IUt0|pBH|ptuLrUIl_UZH@mBJNV|2#eNTmkLYL>AA-hv~eBk#Atzq(bfRQRk}Qj}Vu zEOVv3c%7V`6VuX)o$es=bMgmqIa1Ha#2k9{#nxBitlwlm!3OSv2XS8#p=XchQa& zY9>E4GZPfD+TUHzfj)!uqvqE)R$3o^GI(!)J1?@^89Xa{X6W7V`YTh45`kd>|L}>S zSw8LTGlHa3GN8JUN*C2cp)d1dK?;csS0?bK=RNY+g~4-P;8l5^eSA+2fLyo|9rlG! zPp*PJ_WR?o_PNL#BA40N*eWMC+jdn&P`NmUK0y4Acq<4yZw)^cGggngG`f;Yf>$(Q zE8FgGlo!lh|9W(eJg&p4eMx{!$>y_hL8qR|M55i3CnZVHr(9ftxC4^G$p6^lgta3h zxvnJi_dO|^-dleW^EFM-$Zc>QyW(ew9uq%NyE zO;esUl_FYqC(@gSN6n=F_gkZa$$h&%jbdLkZ~P@6*<1IzPw4qka28{c=?I!V^jI@( zGN-~k4*MB-`#Y4qT`|7eD8)U-2f@ z+OH0ygWq~#oCIr|8$tvA)Pwlp*8ZH72 zMMY{gE!(m(GL`OVg~bEv5H}l}w-kzMiE8>#T~L=Jw_aNH<5|ec&^;s=UMiDkLN!aCs_y#mr*O}L7o3y41-xfGyXfy9 zWO;kW-1PY;R8|U>94Pn=AzBDri4-s#cUr+TK{M4cz zSR#8YFh=q4BoYDk$jg1XfvyUpP!%ztpcvJYtD~}`DM0q4=l)JMrN`cjDC63%uU@H# zp%fYy+r&0)LRxTliK?m{qooYTdu-RQ>z+2ZNbTm(K+af&mWAeKfqwRR6#=qlsF@h7 zleNr;%;S}}$t+~FbSFE?W3b&}Tj>KweChd3tq?xTD~rgzPC>_d>`di5h~F~Qm2l*T z{{B`qhP#us1#h|(p$|mn67B>kFl5|U;i#ee!g`bHUY&U}bRXBcwf?E!y6QF>fwSrR z*HMWq(b3U`2kT>9FLJ0`PfDIYjJvfRtC->55$r|=y8HmE?Ar`6hd^J&Dppo<*4nR< za%&0&SNC(yZsv}iu^XIdV$}Bq^aWu|Y9^sAyX`lCK$*>z)oLEQ5*Z_>vuWcXo>v!n zD=E;=JX7};3ADkSJfsV=MTX)Y+1c4?z^u&8g>-Ucm=Pz1WDZSN8nyo#lt_&S%~x)b zbcb*`a-d%QEAa5qBkm^)&W9j#a@V{xAQ`;6!Lz*or^Wj}G82{gIqO#GNP`QVxOmW> z1Ne;%N&-Vi8v8}c{&6$x=e@Y|t<$(;zop-{eW<6$_=vAH*lU@!^hU~O^AUe*X@vCK zG76HNnI(yim7_#>(zH!Xm@X_Xe&A#(WwZwEpmT=Io&40>03zh$Pil*Qgb$<%?Qe=( zUQ1fT!^4q|=k_w_Q^?bKZswBcIBM^Ky&?ptmxV}-jE=sl;Yi0V^{O{~+-W7ZF(m%& z2)lEK#*|R2yUBu>4z69Tl3 zCx)7PU8 z1E+Q(>JSa7uX-y!eoQ%g$lRGuUg9g7;AH(nZMO9auucX4m_*$0**3{_*ka0p8kp(# z(l-fTUWyoI$=M~ZRaHcyYtM9|j+@v31j^DueeSaDGInfqk23C>HWiS4ykrNo&P>!? z67_!Gw>Ma7qG09cGfWN;<|b7E1hFP0+Cvr&IIc>qH=z88p@8D|JcXA&M^dQ1K28`* z?JM3V@z8UC)N8#tm$Bdf#q%s4A3|JGh!X}~b-e;UswQ3n&W3oUsRLXTg=6|1;h(C?#FzU*ZE$*Z~bd?BR zrax~8{B0X1_bcXH-RsH0=m87uA*K&$DNJcV4+E4Vk!+N5^axLF{~GKW`WihOaP`VB zQy2xs&ptG|@z27$2swuUkvQsR6s#{VzO71kiwm!n!g}c+9mAj56jEtV`@_M39N?7? zrV>e+*y-quO$glw?Tslv%K%DR>9Xd zC=ia7ANKyzDoApG2sdozhzU?tRZYUiSrdNOy6*+SF7%zbMFFl35V`LCa!|ke*U@7F z=-6OTbs!nFhsbNC({Ac&nwt7|5C1&w%UyhXg`OnVk#H>JCXFer9Q$IgY+p)ymBTZQ zpUR}gEoq0$I1&Z`KfZib>yoi>hrglBDG9m;h5aq{WvTxEp-X_izhfP1C#|~`H9%4s z-WKc1RpU%>yAeNW{hL8cP%nFCV53V%MP-ex8mOE+x7em+{p(Xk{q-^iP>1x~>10-t z$x_bBJIH1a1P%S;kU9;LDpcnSdcWecawDe8>`!r;a8(`o3%d;iW5j0j12iQl33uam zZp_wz4ixbVl-u2~e0e9cf=&s;oez)5%E{SmK>zMXlyA8`khQK_PBsQlzbb;C>rsf$ zdFr||1snI6S`MleG1IpoO&vB*x@b3{+Rd@}k`#4OouhW!xR zvRaOfqJKKbIe=5#X10tev-so)ws#+QDv;w2iV+J7y()TMdkF0#k`SKA0_iej`gJa% z2|I$?q5g?iSU&zh=W^W2pi9U<0gQ!Mp4i#hEcY(fABuovH#NZszSaH7D~m8VK@L!S^IeOOE)NAv z*BEcPFX>-7z1Q8)oGx;Q7^QAMOOUPjdg^D%a}CvW?vkV^`Qe@0vXe2P#57P>KhZf2 zg3JHrZ!WCXqN_nofs4a*J0`7=66LRXFRP{9%gjW9hImxM0lucIPGL#-e2is2cm9`) zjVzF?uF?B7g1#=4Tz#XG?+LdExRyf#l=6ptX9t-JUI+* zl_$%T=?bw0RRz5vL@a}-s9L0elIk+}EIbC_%#W(UMjehFg2zLkT-KN_T&0r~-Zz zOig$~z4=WWy+5FCFHd$cr;nk&VNaDvfFL7?xRbFwP!*HV5B-hF?ci<=lJzHkaBrz= z$L1Z6$y$BeJ>l_Gml9i!;evbNA>;-;vtUi>a-q~XK@8CX)+S73X}3tWI*UUF$w z4Xce8g9Xkw+-1B?w%f~kn+!{OvqL`HRqgvroI8Nw`%c!sYX2hX_e`5K`@@~_N7G`D z7+N_X2Nt1e_gzL@!Tuzk(dZk>KW2x3FcZjddQ!0hKg!8;ARFd^ef+CYPu({sY94{M zsdly$1aNe6QnIkfStfkYEB4r)z1yQr?s6FHeyXk*Sb;x|2S77XK8kQkO=d-AS#gf+ zLn3UY22j!kA3+}+9ZVVFiq~GnJ`ZOY`BFC~RZg?+C5r1@yfa{7@BF_va4ITHP;miLG_&LPw;c6EaO0)T{}ki= z4>jvQrS<=CG_HTx;hr%nVVAYqJ?)O*Z+@tXXJ!G1>XVlFG zaJn~CcNgRLX(=N8u%abS=a$oC90|B~zcZ?*n1R4yk~9;j=3(EnV{IQ@bB> zkE72Pe$)<40C^E7U2_&<_oRXnMfq=TmD1}2c#F*i|CI}%l=&R#yET>n`Z4nJF3&g< zLl-WLiN*YPu3^Yr*dne2ZT#BDZ*^=(uv?D&s!X2Pg`GT<;{dlb3_h!6>*FKg>FFtF zRaaeYy}vTx`1I*cfMsZ?0*kQeHTIA@S7*KCIkK&VVzjBe*6# zfTBCNSJ8jS2@K=XnG4Vz=OvRa@lY0G=u^sGEzH0Qbo!cN22fbki<~5h-!o&0F63i3 zU{mdV;=kgp!I%S2Up%G#3{_t+`35lhv^-WCJ z4q_saR|H8wlNZU)^5M~6iipd=f)j$2%i;1L81)~?8~<;C?SD8aTC)rz-=A@cicg7l zQ!o81>Udl8&0=-p=u7T_O#sns`(3YSSiv*Zumbk}F!9rF9J7w@o&*?YWYE=es%e__ z{8f+@_PoeIQn_t8LR*GVyf{r=Zg6s7HWM;Cq0GlYB&W$^6)$TvDH|JU2KXz>FCMRg zfhv;i4Gq~(G&eH(i5>fv^vK-NOD4Q_&a9XdHVxu=`;_rKE)cgXhw9VIO^y!+TK@(f)k!q~ zF=D!cQy!B=5qIII2kxf|m@i#hgV*2(Ya_XK@VRi}s64#=6)jiU6MCq^d7xy5|3fC! z$*j85C=|=9Ew{OM^ecHj7-=};7tYe<&eRkWy?|REyAOD5{o-4+>67P+a%0TU>8&%@ z$Q3FF(o?H<32|?Cf1n8Q`p63RCKsy)S;CR?FCELyF&1Q(Id8tKRbg#)B50Dol?$y-XdfYJ&GZdO^{X6a6dZvNxY~{P++hD5Rmi#_{G= zopa#*zLzI~Tqsu@gcH7%#|Q!5Q3u3bCTlr_D*MMx;H-kCiGA29;>dw=wm*~ogKBe8xyPS%?!|CDpbIl$Ci z*J1SKH|_eHa{OHhCr_^6ir9ZeMe!7AY3G=a9DWKE-u0716?*qBYD%HUsSDTi5}2OI z%Q2L{%<&DvqzXR>Ir_1raxdwV<8RsuylI!Yd%K(eVneMwwpL;^&kA;3cIW*-#>GMP z>oDVl?d>vy1CiYG%QXe%S!%?^PDd;58y3&i2+=`})lgi}ry1iHWtPkxFlV`4?Dm#1 zbi1X(``9aGnKDZt@_7(TYX`Ro*#!JRkOqc}%9ioGmJM2Fn=6XPI-%Tk#5JQ=f@Dh- zRw5kyB59D@?`Ee}RYl9|$q@AqF63(ejv1|Dxc7Fhtfj?bsC$DLQs`YM@wQ_zX<*5l zJKzgrxx#F)19XFq?>JESY0|>MVV9`3BzcA{aIGWCv_{a&TuB#HcZ=Hv9;^$m$;tg0 zQ?BVGLp(2y@EVBVuvorT*1}lwX+1eUblwS9I%*I^loL*-4zz8mI{cX7S#|%7x>@P3 zM@H=BTI{bZC{5@^Nv%~R+Uh+2;*leN7Ef=;VTQfx!-KiK z`*tR3pQghLnOHq#EIhKQO?v^&sDy~uKKFV#X#_sdXlTC~nA}vFrs2EHo;0_Tf`~G$ zKC6*}u(7=^;95^4SV&Tyk+`kUm~?>i4(z~<>gD+-s)LL zGg*&6)%e-w#fr;Cdq&-6gf&#IlrZe~C|&l`uevlee)%d>aGWmD9j zyb8V!*L74D$|OGa$)AK+zq}*uqYMxECi7%qtK567d3HaGK*@fX0CIE5&&A`}L zM05}Ol~1>UM|BP7E~`w_RAL$l*Q5f2Y#O$GjQk`4 z>%qb(jeGZ$oNXBkDK^(M2XH_os1%Na&KWv2e9DFTa$h|$Ta;I!@R!g_-Mz7Li!Kw^ zf=f(8l&x{gX-|3@re6KeBPFsYxIbpX zGz8s7ok z{q{+TmiG?Ty%dP8T+Z{Kjb}H!l`W9_InaSQCuE@4k?>4tO zav(4$NFM9u>6ws}^c;M|w*>|8i0)u+(cH>&h$RNpo8ki&ANvOy8!y+}UVJ&T`!Ek7g~9BZqDq}nw8uKJ6=FBsej#*i%XgY z{L^4xE3bLdamk4zTCaF*dUAeVg7_SHPL`bv(LT35g;`l??SHE*&%wPH)v?lc11R!k z{k1H6V(lk2Fy^e8e60eh{pMLCTgMght9P~a8*)Og7Xu)3Bwd3{RGfr>MniUt!p4eB z#M8|jMGK3(;C*(ZF0^^E#geZc;hg_2%#T2L|TE zIH2*knch4YJMDM2J*=+Ag4ea8nbVmEH&^RgavE~nXSfg381ir- z?ZGg{>Kck@(*qQmSE){5@kxW-&uCPmUT-lRjeCh+WW0XOZapYRO*wfI9&Fq9uxqq@kLDeFR*qD_7iu50)WAp-@#t{S2wv(#s7pgO zdY}cdE+0>R;B;uBH;5eyaUNKE2<+9=|#6uQNHO zew-`&cwO07TU0Gxi{SEysVnSV&%~3?FR>y-EO3)JdcHgT4y}4T$Ik)VpSOK>udjIR z+pI0z_t^jaY+tH6gM}pr8r!vaQS>^vbiS(H1Qnzt2=-o|nT3T#|GyrPvh`ajMeL>A zm)*CcG_;2sPpCg;!VU6Xz>)J>=MY!T}`C>z-e z)ym(T@8;uv7q!ZUC>$4oI#WJ;-}S-cX6Mml8Z3_{xZK^zT8y=2H0DsY&8>v7k&&plxWoD`qm^e!$P#1XXklmPy#d$!O9kGoUpCqn#q0qOov(s>x-G1S z6sUep@oU$vb;H*;{q(akF62O0f{$jZ`MqK+r>R-?O z{nmjYG3((?iQQ2b;>7__M&3aPYDTAD(+mNU@UQF9_-TwdOd@$Dn7hFE2OALG5hOd4 zCiI5sQ^~3?>G02SCnQxSe$ENx`3Z zUi5I>tNM~51JUiuOHYrCjg3X1>n1l%B_RL|&K*sE+XMglr-VMlkxr5GuP5N zL^3Vyv$TrR***Kk0x(h=9)A6mFxh?}QA|`6fxnRZt}0-!W^-GJ<=k$0+2Is*>;aBZ zcOx1{X8jl;(Ba=vXDrmw+1b{c(?x4Wv4SHkZ*~m{3+e~?no0DP;KZSnk|B`U#|*&v zDVU-NsVl(b_sXJT`lFeLpP27ty`CgSJw_~1Du(%_ZfoBd<)8G&8p1gl!4^}=642*A z-Y9SFASY6Sm$>EjNe((ge+R|KNMBklC*FwJE=k z%K)G-<#j1tQn;;%w*2#Z%2n35?<{xM@nE4qAvi7p?gz{1S@8G8XGn2ieM1)8z^+j7 z1t$M!pvCVz;{gH8ygeV-jIs=WZkY!Mhejs?Ei-QqY_(kgzI^!tTyp-YIG8uc<+o{d zwYX>I?JDN(7=cohS43@TLD+Nt^U0Ac>-=M1M#ZI-foFNJ-&(CX@8NAnjW>YD_GBt3 z;tNep&7CWEN|;*|h+v$)ZO+5r?cOr+8{@?vV+LG;f-zzc-Xd=TScQ@AvrG?wIinij zcJP;;wc)MFCzz_|(H-%J5=xnn?br=Xzc70;#OwO1eVyNp7nK~yVjaIlGB~=pFioE~ z;Lk&0ZRgeO^IKY&(_nIR{-4iw2mtwgS_s`*;>mjOM6Xo;&<^5hDDhwm&%DKL9hTkl zkeETr2$p-CV%Iv)ZO@}tc>mJv&gW_nYGk2t*J3ktnr`xN#XjV*FO?!gygFo`)sYtr zueLdmT2`=%!^N{_%n6X8$7L>VZno6p=bja1(}3aOJKKjRIR#no+3glS_$^m#=hF0h zF}a+aYNPU6#`(kD!2Hv#9#MwDQsBs=&!)_BLR}6@IongBidey-^J;7FOn=$O<8|sL zY^uiP@=zHuq|DVqLLDg&wuZ;WIc>oA$6JR&b)BE&k9wRjXIAmdq>huQXnD6@+Vv8L zp+A~ZMN)GMRB;Y4LAYGWNrx-c4F@?-T58zh&1+KBN$xi z`hyu24Svcz2)%pR%(U9yqljg7R-tgEMd4DLc;_xnY)1SPd)#3LX+%UMV7({KH zprgVnAO=b7e)(-f0Vu#Kv1VW@&Rmil3}KOL0VigfRYjbg6d=F7v~nOOrRqdFYrgPDAqUAGjwOA z#(?{NgT;Ll-4rV=c(wK6*T*>WJ75yV*Tl8d&)HTtkrehBBpo0%D4qaH7C`IYEEMIUb$(s}P*Dl}y&3Ll!?k_a2z0F) zemtMKcdu&!v=dD9kqkXq=rFJ4-hi`^=<^`g^7EEjwoJHF*ZXdoj;Jr)TSh$@r%#j= zWTov;<($g-oXa{6Rz)R)Xif&~+Apr%mqo)VV zy`n7A&WX;>zJdzBTdn#PB#_7l6^*hMP1A9)vFCwfpEgiy1#*NyxL> zS)`F89L;l`hJvjtNT2hTv8kJc04*&oxhJ5OPLk0`%(7A0=h5H zo-6aTc{{Q%Xw#AdgL48`yC#|sIy(YE^jC@o;JDAG6imiOY>gqNdS1A9n;WNdygNAK!La`V|?f=tO5(W zq}%zUW;QYVdW?P_1PHEQzIDqzlh?J8KowE0M~rxLlXfCeq~enodcYr7tdqCpHuP5c zg#t@7STLi#iR`Inwgl?OOqwh@+5ZeYg^eweQN#iKS&7khD!K;DVTqjbk_ z$Y`Y#k#4S_#`;%UOQt>L<)}QjntAU}L1zuWX(23et>4=>-UykH0VU<-hO%w_MJW6i z3V@Q5@|6I^tMhCZ2W`Kq$dUKgz(I!cxDA|H4R)QZvuHjIEuPtF6W|f~&uRu&1=oS( zO{{E4D0R0zh}H5KRAk1b>qE66S>-uIYxA3Fyjc`vufIXg_@Uz9(VZX|$J1KU$7Wr&FhyXu^06!3yhaANJEdriVK$7UG7Qf5+F zfs5aT>MtQgxYp&W8Zj zI+v<4Ql(3UHZQRyf|V6F;gth$XJ_Y*3g$yzATb9uFm<}0hbRu~yqB|#5V_UXv984a z=Zg#-F9`o1cG8dTq~DfJP&}b7xx4S(T!K$Zx<~_j{P85KXUp7!-suYJdX2mKF>jEpomf}EWN!CIsCK-b(e zV0GuKH(5aQUkyzTCG#QF)YRl^qiSlH!8C}oQWf_B02)sEU4VoXvyzG)upaAiH0WPW zQviQtZ3b{^`D3~OcK~L%*!%EQ7VjYw;tr~w{7Yb6)EubKOZji-^QKYLT{Gspg25H6 zK4U^K9Ifw<_*;O*{*PXdad8i3v!oFWUWm5kX2Gumt@c%1va*w2#PX)C!NuLL1-l3P z$$x$>R9B0GkVvxgrTn(8gc|I2)te~D@0bEAOk%P9<0tbWk(QwC2NGbreHEnNomcS* zat0*ygxoj0jcm8$Nu>??`C320{G1bSq^V`ePYqn)Wr^VW72a=@y`XdSL4_?!5Zm)c z=W{qH*C$4+_%#>o9TXgB=5-@TKRocAX)%~SFbB(Jxx@cguKyoxQhb~Dzw(>@DSZ78 z^_NnfAz|8*U$Qxb# z+FaJ*Woa;L$n0ux+UbRWD$fCg`GSRG0w?tON-!L65pxCDLJ6L07^f4@eTK?mV}w4c z2?5Q1i*Ad-g@#^9Qh8SXrzW!=sU>zHEAfFY5t+Pi{C^V`oqx9w$Agy=s&L- zTy;0Rx#24-Dk=)pqekbIL5H{lq?UxNEU?P%tQJ^W0rJgJkGtTpymL+Ip-)$fQD6=S zhZ9nK&-Us+SKnWp#+eAQ0H7Fo0ZAB(0dxHP_!R9XxWH?#t*?V@Le@0Bg+mUWk+^LA z4gVFC3U$o>Ew_Sq%5rPetl9vxUh`6|^t`I5@}--(XXjn`EPHl@w zc0535tDLT~lyOrrK|lgcFFI55v7U^F{(lwrCE!rLZ`;oxJ7ZEv*+yy4R>WYCt&k!V zF)C4n!q}OSikfV#wh$_^mNk1QM7BhB5o2t_Fc@Ze@9Fpc-{bv%-}`>wam*Y%<9VK$ zxt{yE@9R9T^Ssc-A?!=^xS(#)*?<`hxt6=sQgG%pIfunGu&8;|Ar4U9 z^z^rH-`$R`e%g7_mNs0urr7m|tPjMYuFS+TRee;##TIfP>$C+CJ;n4s9i510FQ5SG zY_@-FaNu$RpAf=>xO^wzO-6C~FY2&gzeBwaOg(j&U?1NY5bM1L1A!JEAP$XItHW>H z1lr=tKU@@`(6u5Gf>=I2K0?Za2nKWRIcsotVXN_M4FBA{YjU_hapHgC@3-o_slQxp-uE=@AZOAd70p+@Bh!R9kRp7AZTE2ytQ?o(@; zAYjKIA-I&Y?}%ZpuJ5GdVdW8OC)5Q-go7KYBX2wU=NLTr2p;$u9=P-~6;;*v#Ked6 zFc$1*(shDk7$ObFXtmnd9G5c~(g0zH^@V z;92|E*AXI%TZKeQdHMPTkcb;PaNYAg`|Hj`)W{DSTun6H2=&OeAnxoxfNTzjFvQob zV|ppM=eh1-m1V_XpSKO7bv-hGPW6>yknwRu8^+ptA8lB(kM_y>jJ4EU78}2T=W*1f zM~ON(@>xhCq`8PGuUE5D+J(kVM0Wye#7PzAR@MmM4Zg@lzt@d3-5enclJ*B9B2!<8 z(-^+U#_-L}py8l7qa9)#_O_0Z4^lWF-S4(MCp7$v>*zo77aKX7quX_DY+fkPa%~G= zG{;C0R%gyX2Ku?y)>erVZaZo>CIqs95&Fx23d6^WUt>$k zGjpqU+og)X0=jEM(Hc5(B@M?E_wH-rt2pAX35_Swb3?tWjqloyemG54<7(@-W6^sn zqZ52@J{U`cj=sRKc_RRf!vP-Z+(e^L!I=~=4Scvv679Xr+8s#qsw>_}BDHRS_5?Rt z4(evN$#hTQHAHX6Bh+9~($UJmdVM1UK)?Y!2oRYx{x?k2E_5BrHLxDM!_bvyfLS|= z%Tk3Qc0y<5p*z9E-8sBVZ~GM>uMGdDtN%HVr=sp|CJQgtnO`P{99_9PWl_BxIP;0l zpSc5OWXCjlgpU${-XQQ5H7kZYVaHyY=D!3j6@K8FmB{hwQ6b$Z?%5hTzdYF4o_U*q z&*ld^>yDqj=nm+5b93{P*x4Pz(puRAYq!!$P)3VS^61w@bT+~Z`#En4O==$R3)=KW^JN|^vE*;FbuXg+SG3$XBo*FV^yME!I4_inBF?k)mq<@b)Vjj z=*TGx%VM_0f&#?$Y_tU2&TPr;YBFD!Jf>4PHR|!ga&wwUrH)c?t^Os}zcA`d536aD zlB>cwKEewD1ia4I@4f1k1&n&zPwnDM#xi7DDaO9ic&BGl!Ui?V87rkbI@ZjO#zeaO z*Se`v8{o)_M5avjXR+H1A+K3sMZw~a_`>~9zoGx{YHw0%1xx9CK=3q_1pG^s6Bd5TXRl$Li1;FUlf5h*V(Kfb=;=TR6atBLsw zPT3sl@XM!o;4pc9iAyA2tiyBbjUd!0j{b^${H=lyk9?An@)#i0TRA>gOkbJ$`a~TN zz7BGK3taE8?MUx-S4iLY|6n^W6kaeSuB&^6@%Yt}n~JV90@Fe+b`K)4#g->&YB!S! zgn}MhYJ!;RQ$0QkxIXmKDQxgVoM{Zv~`+3*;C?+V`na^5mWQBT04-GIOq!&eX<#_pMLf8Q?fz7^x zvosy;nQIwYSy?k5_XD{qITJETF)Mr?-uDU(u`S^P!0^?oc6jd1)@@qjU!j-+p4xzJlK~qYF6ofnk3Ani-g&+5=l71`?xTe9Ng38%Ldo+Dp$k&k363QIW z(a~?e_dih?OkmCbfsMJNCUpS`_&{PONsrut`F)H-tYtuen#RYrx62y|9ntYePdaMM zY8;Y|KX#?*fPf@+6z&Hq5qsCSZli7um8MbovfNo58sPE)04z?HzjK}j%7?NaSJu^> zTjJuRPR@UAA^>Xh$Dg^-9raG~)yGHde)j>N{>HAzjvR4U zJ$BClKwSzXFPkLSoO&O)p!R99We>D@8IJ6toK4Heeq25dVEMO{YQql4ii`b;5ctMq zhVBIRZwNWkv$FQ)ZOfU3dbDtHvohO6Zmo_D4!-wuz8Dk~l-^7Vh)(hnlQN#ZTp^i} z5CRaV|88Na->FL(GY(u)piag>eU3#}ZqpcH{n^Fms-wvr$*f7F$#v0{>fgs;-!q>C zkYR+1$uYRyh!jN~bzDJr3V_-(lELeU2|>s(3s{zj7$ox1(P2K& z7756Q_<+Lb|0N$fpaADI`|u*TgTR_1yt`87{t;xa#Y9oWmk7Y%UMSe76|#Ko!Nu-F z;+Zh~miO>e371(efCAaJlnK4AUHJA^`#T}(xar^e~=Y-07sT>f~-1!=p zNDbYkb3d{t>0jv7gIfc(4%?X3Elwf%X#Z}`Djo_uc(@pr@h@^ylcN~HK8OeZ8{-)l zJc{cP!NJ|OzyV!Tz<2XK1zv$-HRz8=6qrG}p#R#e2gM$`5c1K28_yn}pgIz#799CZ zBaooQ=vH8W!MQ3C zG&*7JYYU62zVwNmdI8A)lK|BL`};vXDBF|)mk3nAn|NuH(IgW6-7x0Z!&JU=sIe_F zrs)i5Iiv2Q1KkRuMy7U*d6oxD+g9-|*+T&s3kjt)vwE-+WF*Tzo0(F#XST>Gw#W-S z4b{ZO0|(Eab=FpY@V*vMwbsCp{#)@aX(tSXYKEmCfmLwo^vrDu_zeP|_Rm60v8- z1_;W<#l_pU^;vs^dfhN!<6OuOv)SJcpgs!Gi*ZpWtSLs+cs{iQQ<#WX^>F2`j!C64 zZSDp!89oYkX)f*Xe+-Etp$L(l9DMXi(eWDb3P-hDznl`ftE1Sba`&oMkjX(kdZ?~L z1|%jxOOzS{giu9fu$UU6pF>oq!8zE5F6&45xWa8ty@`;v_QrTbPXt`&fRs*%1k-Z| zX4WFLp`Qn?caUQ>m2as-Tw7FblboiCn4ahQo+^{go1J$LAfSuloZGdxFBy|->Inpb zko9^=$(ZSR-2Z9~e==fWOI^R2!kI*$ML1sqdcNT40~FR!)z~kE4wUft z*i+HSi=Q9zA@1V!1>G$V?mQE(M*X6%)_vxONiTLF+3rTV&@V!axci$O&rhG4#mvddC)msC7{G9ixpNpF+d^niemcyrSS(J}2# zhsCYdvc0o&VG&%TZ?@cRhmS^7BPwbgn19k*s$=yY&6`Ye~Kgr+;(-U7$ zd7Vud+<0G*W!2ykE2*LvbFNl3%;MUb+2Z{Tm*moCz@N=C-W$KpeH+AV-mmbi&sLdbifwMY6=L1r z=~AwJzR%x3w0zYd0l{I$2kBlp-J55Zcp+Bb)|^WB8mYc?Gt_#e?t*`H@~o>>DYIB- zPSF~dlgc|l&Ch$+CeA@o29EQ#{d%f%A_ICZ^7PUX%yZ^$TL*OVEH#aKY3wZ3`aT|D z*UOc@5}>2pcF-{-$^fYW{O>0q$aKHn;cV&q1xd5C*ilQLE&Hn8eym?@_5ystw(oDG z`#_}g$oDo6>Fa7q8;6E!H~dxt56=+grzd!$$I1hT)+I=DAme$#A<+0&an&|QczV!2?3fa4P=CPgRx4;bw;S$k+;4qQ%dbO7{o~&!PMI&U9!B;@ls+t~#UgKV=i;PN%fZ?O~ zy=RM?tt~hZiBVvSVz)@gA-xs2A>^TpwVq+z+mOWDzEG4<8NnP&RTyg26(+F8H6FfulU{Id_SN-70d} zq|cqOWNxM|MrjRFwS$dT5 zb-gZUF(oQSDsGc8cQ~wK9qDGj>EPc{1I|CptO%whmohG4p%!{K&1Or^Fe!CscG9E6 zIj<5>84jVj=Gns=n@L+Gxx}Al5kTftRD`(j0TvS@)pa$(&5fw4t?dygRL){nFz&2V zc-jY;OK0!~C3)u#>@B-BaQDKYZL;g;I1ptmX*d{Xgw9z?NKdE zaJddBs?8g?!~bhsoY$jZS;Q?AVn6`AHf4QdvO`4o&mJuS_C;xZ&IsU!;#HOY8BE~1 z{x4(d-v-$KzVSRe75|)FO;`%h(qN^Yd2<`6B^@JEqM{DKjkiIu&75^(X)EMv(OtlM zdnJIEomAc5Z<_rQ+rQ&UrigIIQO7${vD z$~b37lN=9 zFUE2ba{#h>a0n8i^zJ4{jTpO|r8|SWd?8;&Q$Z$=yS6I1ij-CYcOZN5jWR`%H;w z)g`cKOwxvj_e?CG>@<)=Hs3abE`l2qHDt9M(k*0ZY#a$@27)9Dl)c#Jy>JiOb;t#$ zV5C#|fPKyaa?R_UdA=^Va%+-5GU(!5>XmLyt@h_dyfKoTP*xS~GTy?)_N&(9z;yoM{f13Yfr;B9s82^g;O@0{U_8xe4Nvm)L>i0|$! z!g{^z-WYnlUse@zezLOxnB(Qx&tndi&RSVJ$`XG$Rk5cTQgv=#VbG{`l}IQ|MoKyk zv!S6c5m705K;)HD=VUVT=K-i%GD1NkkjOt9}Gf{ zNvbRq+vW!;}5Gld#7W5xiDTDdf~4{EU;%U zEED{~f$em%8qq*Vp=23V>o&dwU2NhqfZk}>K=7Avsw9{pqdHpOC#ZFGr8~ryJ=CT8 zhr68^Ll<>19iwXTgRZvy%mPhl2F(Q1sQUwF(xX52Q6$n$Qyu?((X1hv5VtemfygL7GxHR$ z9O%du0Z=9+pa+>mhIej_6JRkM_cy*VS9tCscrRePBgyp*0onJ46J+>~L z5HK76_WW>95Cq0p$*NIpXTbNDDbxBi!>+qZOU4=U!pxr*Z>XNCmyZ@ADZ{p{ahW963x4{_laLcwC4O>g$CHQAH%1q~ zc;xp{lKh@|Zs1`9LY)zgaXXyz{C->G^{Vib1tBIUjeCE;-|!`f)=}J{ zrQ^;+{$69Zs^1d~gVNu=<*uKQhC&}V{Q4!~;_CWlo-r3(dq^L`-won$HnUx$2iG{Z zxtHNs36uxTVmqQaFf-de@Kl+@H6pJSa5|Mga3}*&_VDu)d;0WgLQ0Ck5iwQiP4|zI zIH%u|kV;iO3We!KPWCU4Sv-J2E1w%RI)&p-m{*J8H93WZ2J4I0PVOYMJlrD+-H_v& z(Hrl}w>N53EMDg6;T(15fyRG}6j479!1|5EggH%Kr5{ld1}jtI=kt*eSj;-x+w*8! zu$k!U*(%uk8+5Fxl<-E#pT{L%G1F7A52NxX5}VoV`{3@Go_Lc)#%>TUcn#Jjs{&t7I{l_KnZ#AIPhGz{5^qubh2RyGT Ai2wiq diff --git a/maps/northern_star/polaris-1.dmm b/maps/northern_star/polaris-1.dmm index 2b58fe7175..09fa0e217a 100644 --- a/maps/northern_star/polaris-1.dmm +++ b/maps/northern_star/polaris-1.dmm @@ -2311,7 +2311,7 @@ "aSw" = (/obj/structure/bed/chair{dir = 1},/obj/structure/closet/walllocker/emerglocker{pixel_x = 0; pixel_y = -32},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station) "aSx" = (/turf/simulated/wall/r_wall,/area/maintenance/substation/security) "aSy" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/maintenance/security_port) -"aSz" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/red/full,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/machinery/door/window/brigdoor/northleft{name = "Ammo"; req_access = list(2)},/turf/simulated/floor/tiled/dark,/area/security/armoury) +"aSz" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/red/full,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/machinery/door/window/brigdoor/northleft{name = "Ammo"; req_access = list(2)},/turf/simulated/floor/tiled/dark,/area/security/armoury) "aSA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/central_one) "aSB" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/hallway/primary/central_one) "aSC" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled,/area/hallway/primary/central_one) @@ -5255,7 +5255,7 @@ "bXc" = (/obj/effect/floor_decal/corner/pink{dir = 10},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor/tiled/white,/area/medical/patient_b) "bXd" = (/obj/effect/floor_decal/corner/pink{dir = 10},/obj/structure/table/glass,/obj/item/weapon/paper_bin,/obj/item/weapon/clipboard,/obj/item/weapon/pen,/turf/simulated/floor/tiled/white,/area/medical/patient_b) "bXe" = (/obj/machinery/computer/med_data/laptop,/obj/structure/table/glass,/obj/effect/floor_decal/corner/pink/full{dir = 4},/obj/machinery/light,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/turf/simulated/floor/tiled/white,/area/medical/patient_b) -"bXf" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 4},/obj/item/ammo_magazine/mc9mmt/practice,/obj/item/ammo_magazine/mc9mmt/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/turf/simulated/floor/tiled,/area/security/range) +"bXf" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 4},/obj/item/ammo_magazine/mc9mmt/practice,/obj/item/ammo_magazine/mc9mmt/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/turf/simulated/floor/tiled,/area/security/range) "bXg" = (/obj/item/weapon/storage/box/lights/mixed,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/structure/table/steel,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/obj/item/device/radio{frequency = 1487; icon_state = "med_walkietalkie"; name = "Medbay Emergency Radio Link"},/turf/simulated/floor/tiled/dark,/area/medical/biostorage) "bXh" = (/obj/structure/closet/crate{icon_state = "crateopen"; name = "Grenade Crate"; opened = 1},/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/turf/simulated/floor/tiled/dark,/area/medical/biostorage) "bXi" = (/obj/structure/bed/chair/comfy/brown{dir = 1},/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; dir = 8; frequency = 1487; icon_state = "intercom"; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = -21; pixel_y = 0},/turf/simulated/floor/carpet/blue,/area/medical/psych) @@ -6167,7 +6167,7 @@ "coE" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 26},/turf/simulated/floor/tiled/dark,/area/hallway/primary/central_three) "coF" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/turf/simulated/floor/tiled,/area/crew_quarters/heads/hop) "coG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/crew_quarters/sleep/elevator) -"coH" = (/obj/effect/floor_decal/corner/green/full{dir = 4},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 4},/obj/structure/table/rack,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/machinery/door/window/brigdoor/northright{name = "Ammo"},/turf/simulated/floor/tiled/dark,/area/security/tactical) +"coH" = (/obj/effect/floor_decal/corner/green/full{dir = 4},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 4},/obj/structure/table/rack,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/machinery/door/window/brigdoor/northright{name = "Ammo"},/turf/simulated/floor/tiled/dark,/area/security/tactical) "coI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor,/area/maintenance/medbay_aft) "coJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/maintenance/medbay_aft) "coK" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor,/area/maintenance/medbay_aft) diff --git a/maps/northern_star/polaris-2.dmm b/maps/northern_star/polaris-2.dmm index 3f14b89489..9708404aa3 100644 --- a/maps/northern_star/polaris-2.dmm +++ b/maps/northern_star/polaris-2.dmm @@ -869,11 +869,11 @@ "aqK" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "ASSAULT"; name = "Assault Weapon Storage"; p_open = 0},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "aqL" = (/obj/structure/sign/securearea,/turf/simulated/shuttle/wall/dark/hard_corner,/area/centcom/specops) "aqM" = (/obj/machinery/door/airlock/centcom,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"aqN" = (/obj/structure/table/rack,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aqN" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "aqO" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/z8,/obj/item/weapon/gun/projectile/automatic/z8,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "aqP" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/sniperrifle,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"aqQ" = (/obj/structure/table/rack,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/weapon/gun/projectile/automatic/p90,/obj/item/weapon/gun/projectile/automatic/p90,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"aqR" = (/obj/structure/table/rack,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/weapon/gun/projectile/automatic/l6_saw,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aqQ" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/weapon/gun/projectile/automatic/m9mmp90,/obj/item/weapon/gun/projectile/automatic/m9mmp90,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aqR" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/item/weapon/gun/projectile/automatic/l6_saw,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "aqS" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) "aqT" = (/obj/structure/closet/crate,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "aqU" = (/obj/machinery/autolathe{desc = "Your typical Autolathe. It appears to have much more options than your regular one, however..."; hacked = 1; name = "Unlocked Autolathe"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) @@ -896,7 +896,7 @@ "arl" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunammo,/obj/item/weapon/storage/box/shotgunammo,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "arm" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "arn" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/weapon/gun/projectile/automatic/z8,/obj/item/weapon/gun/projectile/automatic/z8,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"aro" = (/obj/structure/table/rack,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aro" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "arp" = (/obj/machinery/deployable/barrier,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "arq" = (/obj/structure/table/reinforced,/obj/item/device/pda/ert,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "arr" = (/obj/effect/floor_decal/corner/purple{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) @@ -953,7 +953,7 @@ "asq" = (/obj/structure/table/rack,/obj/item/weapon/melee/energy/sword/blue,/obj/item/weapon/melee/energy/sword/blue,/obj/item/weapon/melee/energy/sword/blue,/obj/item/weapon/melee/energy/sword/blue,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "asr" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/xray,/obj/item/weapon/gun/energy/xray,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "ass" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/laser,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"ast" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/flash,/obj/item/ammo_magazine/c45m/flash,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"ast" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/flash,/obj/item/ammo_magazine/m45/flash,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "asu" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/item/weapon/gun/projectile/sec,/obj/item/weapon/gun/projectile/sec,/obj/item/weapon/gun/projectile/sec,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "asv" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "asw" = (/obj/structure/table/reinforced,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) @@ -1207,8 +1207,8 @@ "axk" = (/obj/structure/table/rack,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "axl" = (/obj/structure/table/rack,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "axm" = (/obj/structure/table/rack,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"axn" = (/obj/structure/table/rack,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"axo" = (/obj/structure/table/rack,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/weapon/gun/projectile/automatic/sts35,/obj/item/weapon/gun/projectile/automatic/sts35,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"axn" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"axo" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/weapon/gun/projectile/automatic/sts35,/obj/item/weapon/gun/projectile/automatic/sts35,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "axp" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) "axq" = (/obj/machinery/vending/boozeomat,/turf/simulated/shuttle/wall/dark,/area/shuttle/administration/centcom) "axr" = (/obj/machinery/vending/coffee,/turf/simulated/shuttle/floor/red,/area/shuttle/administration/centcom) From bc3f4fb0dc065a4a013cea728972b1a80a70b55e Mon Sep 17 00:00:00 2001 From: Spades Date: Sat, 27 May 2017 05:07:34 -0400 Subject: [PATCH 21/84] Polishing oversights away --- code/modules/projectiles/ammunition/boxes.dm | 30 ++++++++++++------ .../projectiles/guns/projectile/automatic.dm | 16 +++++----- icons/obj/ammo.dmi | Bin 25318 -> 24904 bytes icons/obj/gun.dmi | Bin 70629 -> 70811 bytes 4 files changed, 29 insertions(+), 17 deletions(-) diff --git a/code/modules/projectiles/ammunition/boxes.dm b/code/modules/projectiles/ammunition/boxes.dm index d4b450341c..a43741bbc2 100644 --- a/code/modules/projectiles/ammunition/boxes.dm +++ b/code/modules/projectiles/ammunition/boxes.dm @@ -288,7 +288,7 @@ /obj/item/ammo_magazine/m556 name = "magazine (5.56mm)" - icon_state = "c5.56mid" + icon_state = "m556" origin_tech = list(TECH_COMBAT = 2) mag_type = MAGAZINE caliber = "a556" @@ -325,14 +325,9 @@ max_ammo = 30 /obj/item/ammo_magazine/m556/small - name = "magazine (5.56)" - icon_state = "c5.56" // This icon is named wrongly. Change later. - mag_type = MAGAZINE - caliber = "a762" + icon_state = "m556-small" matter = list(DEFAULT_WALL_MATERIAL = 900) - ammo_type = /obj/item/ammo_casing/a762 max_ammo = 10 - multiple_sprites = 1 /obj/item/ammo_magazine/m556/small/empty initial_ammo = 0 @@ -342,7 +337,7 @@ ammo_type = /obj/item/ammo_casing/a556p /obj/item/ammo_magazine/m556/small/ap - name = "magazine (7.62mm armor-piercing)" + name = "magazine (5.56mm armor-piercing)" ammo_type = /obj/item/ammo_casing/a556/ap /obj/item/ammo_magazine/clip/c556 @@ -411,7 +406,7 @@ /obj/item/ammo_magazine/m762 name = "magazine (7.62mm)" - icon_state = "c7.62" + icon_state = "m762-small" mag_type = MAGAZINE caliber = "a762" matter = list(DEFAULT_WALL_MATERIAL = 2000) @@ -426,6 +421,23 @@ /obj/item/ammo_magazine/m762/empty initial_ammo = 0 +/obj/item/ammo_magazine/m762m // Intentionally not a subtype of m762 because it's supposed to be incompatible with the Z8 Bulldog rifle. + name = "magazine (7.62mm)" + icon_state = "m762" + mag_type = MAGAZINE + caliber = "a762" + matter = list(DEFAULT_WALL_MATERIAL = 4000) + ammo_type = /obj/item/ammo_casing/a762 + max_ammo = 20 + multiple_sprites = 1 + +/obj/item/ammo_magazine/m762m/ap + name = "magazine (7.62mm armor-piercing)" + ammo_type = /obj/item/ammo_casing/a762/ap + +/obj/item/ammo_magazine/m762m/empty + initial_ammo = 0 + /obj/item/ammo_magazine/clip/c762 name = "ammo clip (7.62mm)" icon_state = "clip_rifle" diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 373e0bff8e..a3e1f671ec 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -73,8 +73,8 @@ /obj/item/weapon/gun/projectile/automatic/sts35/update_icon(var/ignore_inhands) ..() - if(istype(ammo_magazine,/obj/item/ammo_magazine/s762)) - icon_state = "arifle-small" + if(istype(ammo_magazine,/obj/item/ammo_magazine/m556/small)) + icon_state = "arifle-small" // If using the small magazines, use the small magazine sprite. else icon_state = (ammo_magazine)? "arifle" : "arifle-empty" if(!ignore_inhands) update_held_icon() @@ -343,7 +343,7 @@ icon_state = (ammo_magazine)? "tommygun" : "tommygun-empty" // update_held_icon() -/obj/item/weapon/gun/projectile/automatic/carbine +/obj/item/weapon/gun/projectile/automatic/carbine // Admin abuse assault rifle. ToDo: Make this less shit. Maybe remove its autofire, and make it spawn with only 10 rounds at start. name = "assault carbine" desc = "The bullpup configured GP3000 is a lightweight, compact, military-grade assault rifle produced by Gurov Projectile Weapons LLC. It is sold almost exclusively to standing armies. The serial number on this one has been scratched off. Uses 5.56mm rounds." icon_state = "bullpup" @@ -354,8 +354,8 @@ origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4) slot_flags = SLOT_BACK load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/m762 - allowed_magazines = list(/obj/item/ammo_magazine/m762) + magazine_type = /obj/item/ammo_magazine/m762m + allowed_magazines = list(/obj/item/ammo_magazine/m762, /obj/item/ammo_magazine/m762m) one_handed_penalty = 4 @@ -366,9 +366,9 @@ /obj/item/weapon/gun/projectile/automatic/carbine/update_icon(var/ignore_inhands) ..() - if(ammo_magazine) - icon_state = "bullpup" + if(istype(ammo_magazine,/obj/item/ammo_magazine/m762)) + icon_state = "bullpup-small" // If using the smaller magazines, use the small mag sprite. else icon_state = "bullpup-empty" item_state = (ammo_magazine)? "bullpup" : "bullpup-empty" - if(!ignore_inhands) update_held_icon() + if(!ignore_inhands) update_held_icon() \ No newline at end of file diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index a120049eeadead0db24447477966a735e0dc0969..dcdb20e070c02b8aa3396a1095a1e030b4260674 100644 GIT binary patch literal 24904 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 NjLsUC=-+t!{{Y&mKyd&7 literal 25318 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 TG7A2G1!QJ)!LaPC>w|v-il{R| diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index ba02b5a3246aeea1ab6d7ecc6b814ae1b440a32c..75f5005aa5794183a1504ec505ee657b66650f9b 100644 GIT binary patch delta 33101 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
  • &c9BvAY_;y3 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 OJ9oz5^e0W*2mcNK?<%$c delta 32917 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 bUL=jFF2?MSk4A9-0)Gs3jdb#~Y=ZtTdbVTq From bb2f19fe7d3f70d0d7c05663f314acd763d154ec Mon Sep 17 00:00:00 2001 From: Spades Date: Sat, 27 May 2017 05:14:51 -0400 Subject: [PATCH 22/84] Map fixes, and a comment removal --- code/modules/projectiles/ammunition/boxes.dm | 22 -------------------- maps/northern_star/polaris-1.dmm | 6 +++--- maps/northern_star/polaris-2.dmm | 6 +++--- 3 files changed, 6 insertions(+), 28 deletions(-) diff --git a/code/modules/projectiles/ammunition/boxes.dm b/code/modules/projectiles/ammunition/boxes.dm index a43741bbc2..46c94ed1e6 100644 --- a/code/modules/projectiles/ammunition/boxes.dm +++ b/code/modules/projectiles/ammunition/boxes.dm @@ -232,28 +232,6 @@ /obj/item/ammo_magazine/box/c9mm/empty initial_ammo = 0 -///////// 5mm ///////// -/* -/obj/item/ammo_magazine/c5mm - name = "magazine (5mm)" - icon_state = "fiveseven" - mag_type = MAGAZINE - ammo_type = /obj/item/ammo_casing/c5mm - matter = list(DEFAULT_WALL_MATERIAL = 1200) - caliber = "5mm" - max_ammo = 20 - //multiple_sprites = 1 - -/obj/item/ammo_magazine/clip/c5mm - name = "ammo clip (5mm)" - icon_state = "clip_pistol" - desc = "A stripper clip for reloading 5mm rounds into magazines." - caliber = "5mm" - ammo_type = /obj/item/ammo_casing/c5mm - matter = list(DEFAULT_WALL_MATERIAL = 540) // metal costs are very roughly based around one 5mm casing = 60 metal - max_ammo = 9 - multiple_sprites = 1 -*/ ///////// 10mm ///////// /obj/item/ammo_magazine/m10mm diff --git a/maps/northern_star/polaris-1.dmm b/maps/northern_star/polaris-1.dmm index 09fa0e217a..faa4589659 100644 --- a/maps/northern_star/polaris-1.dmm +++ b/maps/northern_star/polaris-1.dmm @@ -2311,7 +2311,7 @@ "aSw" = (/obj/structure/bed/chair{dir = 1},/obj/structure/closet/walllocker/emerglocker{pixel_x = 0; pixel_y = -32},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station) "aSx" = (/turf/simulated/wall/r_wall,/area/maintenance/substation/security) "aSy" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/maintenance/security_port) -"aSz" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/red/full,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/machinery/door/window/brigdoor/northleft{name = "Ammo"; req_access = list(2)},/turf/simulated/floor/tiled/dark,/area/security/armoury) +"aSz" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/red/full,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/machinery/door/window/brigdoor/northleft{name = "Ammo"; req_access = list(2)},/turf/simulated/floor/tiled/dark,/area/security/armoury) "aSA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/central_one) "aSB" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/hallway/primary/central_one) "aSC" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled,/area/hallway/primary/central_one) @@ -5255,7 +5255,7 @@ "bXc" = (/obj/effect/floor_decal/corner/pink{dir = 10},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor/tiled/white,/area/medical/patient_b) "bXd" = (/obj/effect/floor_decal/corner/pink{dir = 10},/obj/structure/table/glass,/obj/item/weapon/paper_bin,/obj/item/weapon/clipboard,/obj/item/weapon/pen,/turf/simulated/floor/tiled/white,/area/medical/patient_b) "bXe" = (/obj/machinery/computer/med_data/laptop,/obj/structure/table/glass,/obj/effect/floor_decal/corner/pink/full{dir = 4},/obj/machinery/light,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/turf/simulated/floor/tiled/white,/area/medical/patient_b) -"bXf" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 4},/obj/item/ammo_magazine/mc9mmt/practice,/obj/item/ammo_magazine/mc9mmt/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/turf/simulated/floor/tiled,/area/security/range) +"bXf" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 4},/obj/item/ammo_magazine/m9mmt/practice,/obj/item/ammo_magazine/m9mmt/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/turf/simulated/floor/tiled,/area/security/range) "bXg" = (/obj/item/weapon/storage/box/lights/mixed,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/structure/table/steel,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/obj/item/device/radio{frequency = 1487; icon_state = "med_walkietalkie"; name = "Medbay Emergency Radio Link"},/turf/simulated/floor/tiled/dark,/area/medical/biostorage) "bXh" = (/obj/structure/closet/crate{icon_state = "crateopen"; name = "Grenade Crate"; opened = 1},/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/turf/simulated/floor/tiled/dark,/area/medical/biostorage) "bXi" = (/obj/structure/bed/chair/comfy/brown{dir = 1},/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; dir = 8; frequency = 1487; icon_state = "intercom"; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = -21; pixel_y = 0},/turf/simulated/floor/carpet/blue,/area/medical/psych) @@ -6167,7 +6167,7 @@ "coE" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 26},/turf/simulated/floor/tiled/dark,/area/hallway/primary/central_three) "coF" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/turf/simulated/floor/tiled,/area/crew_quarters/heads/hop) "coG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/crew_quarters/sleep/elevator) -"coH" = (/obj/effect/floor_decal/corner/green/full{dir = 4},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 4},/obj/structure/table/rack,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/machinery/door/window/brigdoor/northright{name = "Ammo"},/turf/simulated/floor/tiled/dark,/area/security/tactical) +"coH" = (/obj/effect/floor_decal/corner/green/full{dir = 4},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 4},/obj/structure/table/rack,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/machinery/door/window/brigdoor/northright{name = "Ammo"},/turf/simulated/floor/tiled/dark,/area/security/tactical) "coI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor,/area/maintenance/medbay_aft) "coJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/maintenance/medbay_aft) "coK" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor,/area/maintenance/medbay_aft) diff --git a/maps/northern_star/polaris-2.dmm b/maps/northern_star/polaris-2.dmm index 9708404aa3..edead8f198 100644 --- a/maps/northern_star/polaris-2.dmm +++ b/maps/northern_star/polaris-2.dmm @@ -859,7 +859,7 @@ "aqA" = (/obj/structure/table/rack,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "aqB" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/gun/energy/ionrifle,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "aqC" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"aqD" = (/obj/structure/table/rack,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aqD" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "aqE" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/gun/launcher/grenade,/obj/item/weapon/gun/launcher/grenade,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "aqF" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/storage/box/emps{pixel_x = 4; pixel_y = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/storage/box/frags,/obj/item/weapon/storage/box/smokes,/obj/item/weapon/storage/box/smokes,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "aqG" = (/obj/machinery/vending/security,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) @@ -872,7 +872,7 @@ "aqN" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "aqO" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/z8,/obj/item/weapon/gun/projectile/automatic/z8,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "aqP" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/sniperrifle,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"aqQ" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/weapon/gun/projectile/automatic/m9mmp90,/obj/item/weapon/gun/projectile/automatic/m9mmp90,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"aqQ" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/weapon/gun/projectile/automatic/p90,/obj/item/weapon/gun/projectile/automatic/p90,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "aqR" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/item/weapon/gun/projectile/automatic/l6_saw,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "aqS" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) "aqT" = (/obj/structure/closet/crate,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) @@ -1179,7 +1179,7 @@ "awI" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "awJ" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "awK" = (/obj/structure/closet/hydrant{pixel_y = 32},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) -"awL" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/security,/obj/item/weapon/storage/belt/security,/obj/item/ammo_magazine/mc9mm/flash,/obj/item/weapon/gun/projectile/pistol/flash,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) +"awL" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/security,/obj/item/weapon/storage/belt/security,/obj/item/ammo_magazine/m9mm/flash,/obj/item/weapon/gun/projectile/pistol/flash,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "awM" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership) "awN" = (/obj/machinery/door/airlock/centcom{name = "Bathroom"; opacity = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) "awO" = (/obj/machinery/shower{dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership) From 48f668de9509e3668c844979d1be70fe0bf3824c Mon Sep 17 00:00:00 2001 From: Bromuzl Date: Sat, 27 May 2017 04:38:15 -0500 Subject: [PATCH 23/84] Adds ported high-tops to loadout Extends the high-top port to load-outs, --- .../preference_setup/loadout/loadout_shoes.dm | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/code/modules/client/preference_setup/loadout/loadout_shoes.dm b/code/modules/client/preference_setup/loadout/loadout_shoes.dm index 4de90fed9f..3b3e528403 100644 --- a/code/modules/client/preference_setup/loadout/loadout_shoes.dm +++ b/code/modules/client/preference_setup/loadout/loadout_shoes.dm @@ -77,6 +77,38 @@ display_name = "flats, black" path = /obj/item/clothing/shoes/flats +/datum/gear/shoes/hitops/ + display_name = "high-top, white" + path = /obj/item/clothing/shoes/hitops/ + +/datum/gear/shoes/hitops/red + display_name = "high-top, red" + path = /obj/item/clothing/shoes/hitops/red + +/datum/gear/shoes/hitops/black + display_name = "high-top, black" + path = /obj/item/clothing/shoes/hitops/black + +/datum/gear/shoes/hitops/orange + display_name = "high-top, orange" + path = /obj/item/clothing/shoes/hitops/orange + +/datum/gear/shoes/hitops/blue + display_name = "high-top, blue" + path = /obj/item/clothing/shoes/hitops/blue + +/datum/gear/shoes/hitops/green + display_name = "high-top, green" + path = /obj/item/clothing/shoes/hitops/green + +/datum/gear/shoes/hitops/purple + display_name = "high-top, purple" + path = /obj/item/clothing/shoes/hitops/purple + +/datum/gear/shoes/hitops/yellow + display_name = "high-top, yellow" + path = /obj/item/clothing/shoes/hitops/yellow + /datum/gear/shoes/flats/blue display_name = "flats, blue" path = /obj/item/clothing/shoes/flats/blue From cfab9dd6ac1a41ece3ffe8d7454d37b9936e7140 Mon Sep 17 00:00:00 2001 From: Bromuzl Date: Sat, 27 May 2017 04:46:20 -0500 Subject: [PATCH 24/84] High-top consistency tweak Adjusts background all references to "hitop" and in-game references to "high-tops" to maintain consistency. See icons/obj/clothing/shoes.dmi --- code/modules/clothing/shoes/colour.dm | 36 +++++++++++++-------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/code/modules/clothing/shoes/colour.dm b/code/modules/clothing/shoes/colour.dm index 91703336e1..6b4b270f97 100644 --- a/code/modules/clothing/shoes/colour.dm +++ b/code/modules/clothing/shoes/colour.dm @@ -123,39 +123,39 @@ if (istype(H, /obj/item/weapon/handcuffs)) attach_cuffs(H, user) -/obj/item/clothing/shoes/hightops - name = "white high tops" +/obj/item/clothing/shoes/hitops + name = "white high-tops" desc = "A pair of shoes that extends past the ankle. Based on a centuries-old, timeless design." icon_state = "whitehi" -/obj/item/clothing/shoes/hightops/red - name = "red high tops" +/obj/item/clothing/shoes/hitops/red + name = "red high-tops" icon_state = "redhi" -/obj/item/clothing/shoes/hightops/brown - name = "brown high tops" +/obj/item/clothing/shoes/hitops/brown + name = "brown high-tops" icon_state = "brownhi" -/obj/item/clothing/shoes/hightops/black - name = "black high tops" +/obj/item/clothing/shoes/hitops/black + name = "black high-tops" icon_state = "blackhi" -/obj/item/clothing/shoes/hightops/orange - name = "orange high tops" +/obj/item/clothing/shoes/hitops/orange + name = "orange high-tops" icon_state = "orangehi" -/obj/item/clothing/shoes/hightops/blue - name = "blue high tops" +/obj/item/clothing/shoes/hitops/blue + name = "blue high-tops" icon_state = "bluehi" -/obj/item/clothing/shoes/hightops/green - name = "green high tops" +/obj/item/clothing/shoes/hitops/green + name = "green high-tops" icon_state = "greenhi" -/obj/item/clothing/shoes/hightops/purple - name = "purple high tops" +/obj/item/clothing/shoes/hitops/purple + name = "purple high-tops" icon_state = "purplehi" -/obj/item/clothing/shoes/hightops/yellow - name = "yellow high tops" +/obj/item/clothing/shoes/hitops/yellow + name = "yellow high-tops" icon_state = "yellowhi" \ No newline at end of file From 36544bc7daf51665d676e9d93e0246975ed1fca2 Mon Sep 17 00:00:00 2001 From: Spades Date: Sat, 27 May 2017 16:23:39 -0400 Subject: [PATCH 25/84] Documentation, proper file naming, and more consistency --- .../ammunition/{boxes.dm => magazines.dm} | 995 +++++++++--------- .../ammunition/{bullets.dm => rounds.dm} | 610 ++++++----- .../projectiles/guns/projectile/automatic.dm | 2 +- .../projectiles/guns/projectile/revolver.dm | 4 +- .../projectiles/guns/projectile/shotgun.dm | 4 +- polaris.dme | 4 +- 6 files changed, 836 insertions(+), 783 deletions(-) rename code/modules/projectiles/ammunition/{boxes.dm => magazines.dm} (90%) rename code/modules/projectiles/ammunition/{bullets.dm => rounds.dm} (85%) diff --git a/code/modules/projectiles/ammunition/boxes.dm b/code/modules/projectiles/ammunition/magazines.dm similarity index 90% rename from code/modules/projectiles/ammunition/boxes.dm rename to code/modules/projectiles/ammunition/magazines.dm index 46c94ed1e6..92512b0dd1 100644 --- a/code/modules/projectiles/ammunition/boxes.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -1,487 +1,510 @@ -///////// .357 ///////// - -/obj/item/ammo_magazine/s357 - name = "speedloader (.357)" - desc = "A speedloader for .357 revolvers." - icon_state = "38" - caliber = "357" - ammo_type = /obj/item/ammo_casing/a357 - matter = list(DEFAULT_WALL_MATERIAL = 1260) - max_ammo = 6 - multiple_sprites = 1 - -///////// .38 ///////// - -/obj/item/ammo_magazine/s38 - name = "speedloader (.38)" - desc = "A speedloader for .38 revolvers." - icon_state = "38" - caliber = "38" - matter = list(DEFAULT_WALL_MATERIAL = 360) - ammo_type = /obj/item/ammo_casing/a38 - max_ammo = 6 - multiple_sprites = 1 - -/obj/item/ammo_magazine/s38/rubber - name = "speedloader (.38 rubber)" - ammo_type = /obj/item/ammo_casing/a38r - -/obj/item/ammo_magazine/s38/emp - name = "ammunition box (.38 haywire)" - ammo_type = /obj/item/ammo_casing/a38/emp - -///////// .45 ///////// - -/obj/item/ammo_magazine/m45 - name = "pistol magazine (.45)" - icon_state = "45" - mag_type = MAGAZINE - ammo_type = /obj/item/ammo_casing/a45 - matter = list(DEFAULT_WALL_MATERIAL = 525) //metal costs are very roughly based around 1 .45 casing = 75 metal - caliber = ".45" - max_ammo = 7 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m45/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m45/rubber - name = "magazine (.45 rubber)" - ammo_type = /obj/item/ammo_casing/a45r - -/obj/item/ammo_magazine/m45/practice - name = "magazine (.45 practice)" - ammo_type = /obj/item/ammo_casing/a45p - -/obj/item/ammo_magazine/m45/flash - name = "magazine (.45 flash)" - ammo_type = /obj/item/ammo_casing/a45f - -/obj/item/ammo_magazine/m45/ap - name = "magazine (.45 AP)" - ammo_type = /obj/item/ammo_casing/a45ap - -/obj/item/ammo_magazine/box/emp/b45 - name = "ammunition box (.45 haywire)" - ammo_type = /obj/item/ammo_casing/a45/emp - -/obj/item/ammo_magazine/m45uzi - name = "stick magazine (.45)" - icon_state = "uzi45" - mag_type = MAGAZINE - ammo_type = /obj/item/ammo_casing/a45 - matter = list(DEFAULT_WALL_MATERIAL = 1200) - caliber = ".45" - max_ammo = 16 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m45uzi/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m45tommy - name = "tommygun magazine (.45)" - icon_state = "tommy-mag" - mag_type = MAGAZINE - ammo_type = /obj/item/ammo_casing/a45 - matter = list(DEFAULT_WALL_MATERIAL = 1500) - caliber = ".45" - max_ammo = 20 - -/obj/item/ammo_magazine/m45tommy/ap - name = "tommygun magazine (.45 AP)" - ammo_type = /obj/item/ammo_casing/a45ap - -/obj/item/ammo_magazine/m45tommy/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m45tommydrum - name = "tommygun drum magazine (.45)" - icon_state = "tommy-drum" - w_class = ITEMSIZE_NORMAL // Bulky ammo doesn't fit in your pockets! - mag_type = MAGAZINE - ammo_type = /obj/item/ammo_casing/a45 - matter = list(DEFAULT_WALL_MATERIAL = 3750) - caliber = ".45" - max_ammo = 50 - -/obj/item/ammo_magazine/m45tommydrum/ap - name = "tommygun drum magazine (.45 AP)" - ammo_type = /obj/item/ammo_casing/a45ap - -/obj/item/ammo_magazine/m45tommydrum/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/clip/c45 - name = "ammo clip (.45)" - icon_state = "clip_pistol" - desc = "A stripper clip for reloading .45 rounds into magazines." - caliber = ".45" - ammo_type = /obj/item/ammo_casing/a45 - matter = list(DEFAULT_WALL_MATERIAL = 675) // metal costs very roughly based around one .45 casing = 75 metal - max_ammo = 9 - multiple_sprites = 1 - -/obj/item/ammo_magazine/clip/c45/rubber - name = "ammo clip (.45 rubber)" - ammo_type = /obj/item/ammo_casing/a45r - -/obj/item/ammo_magazine/clip/c45/practice - name = "ammo clip (.45 practice)" - ammo_type = /obj/item/ammo_casing/a45p - -/obj/item/ammo_magazine/clip/c45/flash - name = "ammo clip (.45 flash)" - ammo_type = /obj/item/ammo_casing/a45f - -///////// 9mm ///////// - -/obj/item/ammo_magazine/m9mm - name = "magazine (9mm)" - icon_state = "9x19p" - origin_tech = list(TECH_COMBAT = 2) - mag_type = MAGAZINE - matter = list(DEFAULT_WALL_MATERIAL = 480) - caliber = "9mm" - ammo_type = /obj/item/ammo_casing/a9mm - max_ammo = 8 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m9mm/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m9mm/flash - ammo_type = /obj/item/ammo_casing/a9mmf - -/obj/item/ammo_magazine/m9mm/rubber - name = "magazine (9mm rubber)" - ammo_type = /obj/item/ammo_casing/a9mmr - -/obj/item/ammo_magazine/m9mm/practice - name = "magazine (9mm practice)" - ammo_type = /obj/item/ammo_casing/a9mmp - -/obj/item/ammo_magazine/m9mmt - name = "top mounted magazine (9mm)" - icon_state = "9mmt" - mag_type = MAGAZINE - ammo_type = /obj/item/ammo_casing/a9mm - matter = list(DEFAULT_WALL_MATERIAL = 1200) - caliber = "9mm" - max_ammo = 20 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m9mmt/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m9mmt/rubber - name = "top mounted magazine (9mm rubber)" - ammo_type = /obj/item/ammo_casing/a9mmr - -/obj/item/ammo_magazine/m9mmt/flash - name = "top mounted magazine (9mm flash)" - ammo_type = /obj/item/ammo_casing/a9mmf - -/obj/item/ammo_magazine/m9mmt/practice - name = "top mounted magazine (9mm practice)" - ammo_type = /obj/item/ammo_casing/a9mmp - -/obj/item/ammo_magazine/m9mmp90 - name = "high capacity top mounted magazine (9mm armor-piercing)" - icon_state = "p90" - mag_type = MAGAZINE - ammo_type = /obj/item/ammo_casing/a9mm/ap - matter = list(DEFAULT_WALL_MATERIAL = 3000) - caliber = "9mm" - max_ammo = 50 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m9mmp90/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/clip/c9mm - name = "ammo clip (9mm)" - icon_state = "clip_pistol" - desc = "A stripper clip for reloading 9mm rounds into magazines." - caliber = "9mm" - ammo_type = /obj/item/ammo_casing/a9mm - matter = list(DEFAULT_WALL_MATERIAL = 540) // metal costs are very roughly based around one 9mm casing = 60 metal - max_ammo = 9 - multiple_sprites = 1 - -/obj/item/ammo_magazine/clip/c9mm/rubber - name = "ammo clip (.45 rubber)" - ammo_type = /obj/item/ammo_casing/a9mmr - -/obj/item/ammo_magazine/clip/c9mm/practice - name = "ammo clip (.45 practice)" - ammo_type = /obj/item/ammo_casing/a9mmp - -/obj/item/ammo_magazine/clip/c9mm/flash - name = "ammo clip (.45 flash)" - ammo_type = /obj/item/ammo_casing/a9mmf - -/obj/item/ammo_magazine/box/c9mm // Made by RnD for Prototype SMG and should probably be removed because why does it require DIAMONDS to make bullets? - name = "ammunition Box (9mm)" - icon_state = "9mm" - origin_tech = list(TECH_COMBAT = 2) - matter = list(DEFAULT_WALL_MATERIAL = 1800) - caliber = "9mm" - ammo_type = /obj/item/ammo_casing/a9mm - max_ammo = 30 - -/obj/item/ammo_magazine/box/c9mm/empty - initial_ammo = 0 - -///////// 10mm ///////// - -/obj/item/ammo_magazine/m10mm - name = "magazine (10mm)" - icon_state = "10mm" - origin_tech = list(TECH_COMBAT = 2) - mag_type = MAGAZINE - caliber = "10mm" - matter = list(DEFAULT_WALL_MATERIAL = 1500) - ammo_type = /obj/item/ammo_casing/a10mm - max_ammo = 20 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m10mm/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/clip/c10mm - name = "ammo clip (10mm)" - icon_state = "clip_pistol" - desc = "A stripper clip for reloading 5mm rounds into magazines." - caliber = "10mm" - ammo_type = /obj/item/ammo_casing/a10mm - matter = list(DEFAULT_WALL_MATERIAL = 675) // metal costs are very roughly based around one 10mm casing = 75 metal - max_ammo = 9 - multiple_sprites = 1 - -/obj/item/ammo_magazine/box/emp/b10 - name = "ammunition box (10mm haywire)" - ammo_type = /obj/item/ammo_casing/a10mm/emp - -///////// 5.56mm ///////// - -/obj/item/ammo_magazine/m556 - name = "magazine (5.56mm)" - icon_state = "m556" - origin_tech = list(TECH_COMBAT = 2) - mag_type = MAGAZINE - caliber = "a556" - matter = list(DEFAULT_WALL_MATERIAL = 1800) - ammo_type = /obj/item/ammo_casing/a556 - max_ammo = 20 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m556/ext - name = "extended magazine (5.56mm)" - matter = list(DEFAULT_WALL_MATERIAL = 2700) - max_ammo = 30 - -/obj/item/ammo_magazine/m556/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m556/ext/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m556/practice - name = "magazine (5.56mm practice)" - ammo_type = /obj/item/ammo_casing/a556p - -/obj/item/ammo_magazine/m556/practice/ext - name = "extended magazine (5.56mm practice)" - max_ammo = 30 - -/obj/item/ammo_magazine/m556/ap - name = "magazine (5.56mm armor-piercing)" - ammo_type = /obj/item/ammo_casing/a556/ap - -/obj/item/ammo_magazine/m556/ap/ext - name = "extended magazine (5.56mm armor-piercing)" - max_ammo = 30 - -/obj/item/ammo_magazine/m556/small - icon_state = "m556-small" - matter = list(DEFAULT_WALL_MATERIAL = 900) - max_ammo = 10 - -/obj/item/ammo_magazine/m556/small/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m556/small/practice - name = "magazine (5.56mm practice)" - ammo_type = /obj/item/ammo_casing/a556p - -/obj/item/ammo_magazine/m556/small/ap - name = "magazine (5.56mm armor-piercing)" - ammo_type = /obj/item/ammo_casing/a556/ap - -/obj/item/ammo_magazine/clip/c556 - name = "ammo clip (5.56mm)" - icon_state = "clip_rifle" - caliber = "a556" - ammo_type = /obj/item/ammo_casing/a556 - matter = list(DEFAULT_WALL_MATERIAL = 450) // metal costs are very roughly based around one 10mm casing = 180 metal - max_ammo = 5 - multiple_sprites = 1 - -/obj/item/ammo_magazine/clip/c556/ap - name = "rifle clip (5.56mm armor-piercing)" - ammo_type = /obj/item/ammo_casing/a556/ap - -/obj/item/ammo_magazine/clip/c556/practice - name = "rifle clip (5.56mm practice)" - ammo_type = /obj/item/ammo_casing/a556 - -/obj/item/ammo_magazine/m556saw - name = "magazine box (5.56mm)" - icon_state = "a556" - origin_tech = list(TECH_COMBAT = 2) - mag_type = MAGAZINE - caliber = "a556" - matter = list(DEFAULT_WALL_MATERIAL = 10000) - ammo_type = /obj/item/ammo_casing/a556 - w_class = ITEMSIZE_NORMAL // This should NOT fit in your pocket!! - max_ammo = 50 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m556saw/ap - name = "magazine box (5.56mm armor-piercing)" - ammo_type = /obj/item/ammo_casing/a556/ap - -/obj/item/ammo_magazine/m556saw/empty - initial_ammo = 0 - -///////// .50 AE ///////// - -/obj/item/ammo_magazine/m50 - name = "magazine (.50 AE)" - icon_state = "50ae" - origin_tech = list(TECH_COMBAT = 2) - mag_type = MAGAZINE - caliber = ".50" - matter = list(DEFAULT_WALL_MATERIAL = 1260) - ammo_type = /obj/item/ammo_casing/a50 - max_ammo = 7 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m50/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/clip/c50 - name = "ammo clip (.50 AE)" - icon_state = "clip_pistol" - desc = "A stripper clip for reloading .50 Action Express rounds into magazines." - caliber = ".50" - ammo_type = /obj/item/ammo_casing/a50 - matter = list(DEFAULT_WALL_MATERIAL = 1620) // metal costs are very roughly based around one .50 casing = 180 metal - max_ammo = 9 - multiple_sprites = 1 - -///////// 7.62mm ///////// - -/obj/item/ammo_magazine/m762 - name = "magazine (7.62mm)" - icon_state = "m762-small" - mag_type = MAGAZINE - caliber = "a762" - matter = list(DEFAULT_WALL_MATERIAL = 2000) - ammo_type = /obj/item/ammo_casing/a762 - max_ammo = 10 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m762/ap - name = "magazine (7.62mm armor-piercing)" - ammo_type = /obj/item/ammo_casing/a762/ap - -/obj/item/ammo_magazine/m762/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/m762m // Intentionally not a subtype of m762 because it's supposed to be incompatible with the Z8 Bulldog rifle. - name = "magazine (7.62mm)" - icon_state = "m762" - mag_type = MAGAZINE - caliber = "a762" - matter = list(DEFAULT_WALL_MATERIAL = 4000) - ammo_type = /obj/item/ammo_casing/a762 - max_ammo = 20 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m762m/ap - name = "magazine (7.62mm armor-piercing)" - ammo_type = /obj/item/ammo_casing/a762/ap - -/obj/item/ammo_magazine/m762m/empty - initial_ammo = 0 - -/obj/item/ammo_magazine/clip/c762 - name = "ammo clip (7.62mm)" - icon_state = "clip_rifle" - caliber = "a762" - ammo_type = /obj/item/ammo_casing/a762 - matter = list(DEFAULT_WALL_MATERIAL = 1000) // metal costs are very roughly based around one 7.62 casing = 200 metal - max_ammo = 5 - multiple_sprites = 1 - -/obj/item/ammo_magazine/clip/c762/ap - name = "rifle clip (7.62mm armor-piercing)" - ammo_type = /obj/item/ammo_casing/a762/ap - -/obj/item/ammo_magazine/clip/c762/practice - name = "rifle clip (7.62mm practice)" - ammo_type = /obj/item/ammo_casing/a762p - -///////// 12g ///////// - -/obj/item/ammo_magazine/m12gdrum - name = "magazine (12 gauge)" - icon_state = "12g" - mag_type = MAGAZINE - caliber = "shotgun" - matter = list(DEFAULT_WALL_MATERIAL = 2200) - ammo_type = /obj/item/ammo_casing/a12g - max_ammo = 24 - multiple_sprites = 1 - -/obj/item/ammo_magazine/m12gdrum/beanbag - name = "magazine (12 gauge beanbag)" - ammo_type = /obj/item/ammo_casing/a12g/beanbag - -/obj/item/ammo_magazine/m12gdrum/pellet - name = "magazine (12 gauge pellet)" - ammo_type = /obj/item/ammo_casing/a12g/pellet - -/obj/item/ammo_magazine/m12gdrum/flash - name = "magazine (12 gauge flash)" - ammo_type = /obj/item/ammo_casing/a12g/flash - -/obj/item/ammo_magazine/m12gdrum/empty - initial_ammo = 0 - -///////// .75 Gyrojet ///////// - -/obj/item/ammo_magazine/m75 - name = "ammo magazine (.75 Gyrojet)" - icon_state = "75" - mag_type = MAGAZINE - caliber = "75" - ammo_type = /obj/item/ammo_casing/a75 - multiple_sprites = 1 - max_ammo = 4 - -/obj/item/ammo_magazine/m75/empty - initial_ammo = 0 - -///////// Misc. ///////// - -/obj/item/ammo_magazine/caps - name = "speedloader (caps)" - icon_state = "T38" - caliber = "caps" - color = "#FF0000" - ammo_type = /obj/item/ammo_casing/cap - matter = list(DEFAULT_WALL_MATERIAL = 600) - max_ammo = 7 +/************************************************************************/ +/* +# An explaination of the naming format for guns and ammo: +# +# a = Ammo, as in individual rounds of ammunition. +# b = Box, intended to have ammo taken out one at a time by hand. +# c = Clips, intended to reload magazines or guns quickly. +# m = Magazine, intended to hold rounds of ammo. +# s = Speedloaders, intended to reload guns quickly. +# +# Use this format, followed by the caliber. For example, a shotgun's caliber +# variable is "12g" as a result. Ergo, a shotgun round's path would have "a12g", +# or a magazine with shotgun shells would be "m12g" instead. To avoid confusion +# for developers and in-game admins spawning these items, stick to this format. +# Likewise, when creating new rounds, the caliber variable should match whatever +# the name says. +# +# This comment is copied in magazines.dm as well. +*/ +/************************************************************************/ + + + +///////// .357 ///////// + +/obj/item/ammo_magazine/s357 + name = "speedloader (.357)" + desc = "A speedloader for .357 revolvers." + icon_state = "38" + caliber = "357" + ammo_type = /obj/item/ammo_casing/a357 + matter = list(DEFAULT_WALL_MATERIAL = 1260) + max_ammo = 6 + multiple_sprites = 1 + +///////// .38 ///////// + +/obj/item/ammo_magazine/s38 + name = "speedloader (.38)" + desc = "A speedloader for .38 revolvers." + icon_state = "38" + caliber = ".38" + matter = list(DEFAULT_WALL_MATERIAL = 360) + ammo_type = /obj/item/ammo_casing/a38 + max_ammo = 6 + multiple_sprites = 1 + +/obj/item/ammo_magazine/s38/rubber + name = "speedloader (.38 rubber)" + ammo_type = /obj/item/ammo_casing/a38r + +/obj/item/ammo_magazine/s38/emp + name = "speedloader (.38 haywire)" + ammo_type = /obj/item/ammo_casing/a38/emp + +///////// .45 ///////// + +/obj/item/ammo_magazine/m45 + name = "pistol magazine (.45)" + icon_state = "45" + mag_type = MAGAZINE + ammo_type = /obj/item/ammo_casing/a45 + matter = list(DEFAULT_WALL_MATERIAL = 525) //metal costs are very roughly based around 1 .45 casing = 75 metal + caliber = ".45" + max_ammo = 7 + multiple_sprites = 1 + +/obj/item/ammo_magazine/m45/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/m45/rubber + name = "magazine (.45 rubber)" + ammo_type = /obj/item/ammo_casing/a45r + +/obj/item/ammo_magazine/m45/practice + name = "magazine (.45 practice)" + ammo_type = /obj/item/ammo_casing/a45p + +/obj/item/ammo_magazine/m45/flash + name = "magazine (.45 flash)" + ammo_type = /obj/item/ammo_casing/a45f + +/obj/item/ammo_magazine/m45/ap + name = "magazine (.45 AP)" + ammo_type = /obj/item/ammo_casing/a45ap + +/obj/item/ammo_magazine/box/emp/b45 + name = "ammunition box (.45 haywire)" + ammo_type = /obj/item/ammo_casing/a45/emp + +/obj/item/ammo_magazine/m45uzi + name = "stick magazine (.45)" + icon_state = "uzi45" + mag_type = MAGAZINE + ammo_type = /obj/item/ammo_casing/a45 + matter = list(DEFAULT_WALL_MATERIAL = 1200) + caliber = ".45" + max_ammo = 16 + multiple_sprites = 1 + +/obj/item/ammo_magazine/m45uzi/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/m45tommy + name = "tommygun magazine (.45)" + icon_state = "tommy-mag" + mag_type = MAGAZINE + ammo_type = /obj/item/ammo_casing/a45 + matter = list(DEFAULT_WALL_MATERIAL = 1500) + caliber = ".45" + max_ammo = 20 + +/obj/item/ammo_magazine/m45tommy/ap + name = "tommygun magazine (.45 AP)" + ammo_type = /obj/item/ammo_casing/a45ap + +/obj/item/ammo_magazine/m45tommy/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/m45tommydrum + name = "tommygun drum magazine (.45)" + icon_state = "tommy-drum" + w_class = ITEMSIZE_NORMAL // Bulky ammo doesn't fit in your pockets! + mag_type = MAGAZINE + ammo_type = /obj/item/ammo_casing/a45 + matter = list(DEFAULT_WALL_MATERIAL = 3750) + caliber = ".45" + max_ammo = 50 + +/obj/item/ammo_magazine/m45tommydrum/ap + name = "tommygun drum magazine (.45 AP)" + ammo_type = /obj/item/ammo_casing/a45ap + +/obj/item/ammo_magazine/m45tommydrum/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/clip/c45 + name = "ammo clip (.45)" + icon_state = "clip_pistol" + desc = "A stripper clip for reloading .45 rounds into magazines." + caliber = ".45" + ammo_type = /obj/item/ammo_casing/a45 + matter = list(DEFAULT_WALL_MATERIAL = 675) // metal costs very roughly based around one .45 casing = 75 metal + max_ammo = 9 + multiple_sprites = 1 + +/obj/item/ammo_magazine/clip/c45/rubber + name = "ammo clip (.45 rubber)" + ammo_type = /obj/item/ammo_casing/a45r + +/obj/item/ammo_magazine/clip/c45/practice + name = "ammo clip (.45 practice)" + ammo_type = /obj/item/ammo_casing/a45p + +/obj/item/ammo_magazine/clip/c45/flash + name = "ammo clip (.45 flash)" + ammo_type = /obj/item/ammo_casing/a45f + +///////// 9mm ///////// + +/obj/item/ammo_magazine/m9mm + name = "magazine (9mm)" + icon_state = "9x19p" + origin_tech = list(TECH_COMBAT = 2) + mag_type = MAGAZINE + matter = list(DEFAULT_WALL_MATERIAL = 480) + caliber = "9mm" + ammo_type = /obj/item/ammo_casing/a9mm + max_ammo = 8 + multiple_sprites = 1 + +/obj/item/ammo_magazine/m9mm/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/m9mm/flash + ammo_type = /obj/item/ammo_casing/a9mmf + +/obj/item/ammo_magazine/m9mm/rubber + name = "magazine (9mm rubber)" + ammo_type = /obj/item/ammo_casing/a9mmr + +/obj/item/ammo_magazine/m9mm/practice + name = "magazine (9mm practice)" + ammo_type = /obj/item/ammo_casing/a9mmp + +/obj/item/ammo_magazine/m9mmt + name = "top mounted magazine (9mm)" + icon_state = "9mmt" + mag_type = MAGAZINE + ammo_type = /obj/item/ammo_casing/a9mm + matter = list(DEFAULT_WALL_MATERIAL = 1200) + caliber = "9mm" + max_ammo = 20 + multiple_sprites = 1 + +/obj/item/ammo_magazine/m9mmt/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/m9mmt/rubber + name = "top mounted magazine (9mm rubber)" + ammo_type = /obj/item/ammo_casing/a9mmr + +/obj/item/ammo_magazine/m9mmt/flash + name = "top mounted magazine (9mm flash)" + ammo_type = /obj/item/ammo_casing/a9mmf + +/obj/item/ammo_magazine/m9mmt/practice + name = "top mounted magazine (9mm practice)" + ammo_type = /obj/item/ammo_casing/a9mmp + +/obj/item/ammo_magazine/m9mmp90 + name = "high capacity top mounted magazine (9mm armor-piercing)" + icon_state = "p90" + mag_type = MAGAZINE + ammo_type = /obj/item/ammo_casing/a9mm/ap + matter = list(DEFAULT_WALL_MATERIAL = 3000) + caliber = "9mm" + max_ammo = 50 + multiple_sprites = 1 + +/obj/item/ammo_magazine/m9mmp90/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/clip/c9mm + name = "ammo clip (9mm)" + icon_state = "clip_pistol" + desc = "A stripper clip for reloading 9mm rounds into magazines." + caliber = "9mm" + ammo_type = /obj/item/ammo_casing/a9mm + matter = list(DEFAULT_WALL_MATERIAL = 540) // metal costs are very roughly based around one 9mm casing = 60 metal + max_ammo = 9 + multiple_sprites = 1 + +/obj/item/ammo_magazine/clip/c9mm/rubber + name = "ammo clip (.45 rubber)" + ammo_type = /obj/item/ammo_casing/a9mmr + +/obj/item/ammo_magazine/clip/c9mm/practice + name = "ammo clip (.45 practice)" + ammo_type = /obj/item/ammo_casing/a9mmp + +/obj/item/ammo_magazine/clip/c9mm/flash + name = "ammo clip (.45 flash)" + ammo_type = /obj/item/ammo_casing/a9mmf + +/obj/item/ammo_magazine/box/c9mm // Made by RnD for Prototype SMG and should probably be removed because why does it require DIAMONDS to make bullets? + name = "ammunition Box (9mm)" + icon_state = "9mm" + origin_tech = list(TECH_COMBAT = 2) + matter = list(DEFAULT_WALL_MATERIAL = 1800) + caliber = "9mm" + ammo_type = /obj/item/ammo_casing/a9mm + max_ammo = 30 + +/obj/item/ammo_magazine/box/c9mm/empty + initial_ammo = 0 + +///////// 10mm ///////// + +/obj/item/ammo_magazine/m10mm + name = "magazine (10mm)" + icon_state = "10mm" + origin_tech = list(TECH_COMBAT = 2) + mag_type = MAGAZINE + caliber = "10mm" + matter = list(DEFAULT_WALL_MATERIAL = 1500) + ammo_type = /obj/item/ammo_casing/a10mm + max_ammo = 20 + multiple_sprites = 1 + +/obj/item/ammo_magazine/m10mm/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/clip/c10mm + name = "ammo clip (10mm)" + icon_state = "clip_pistol" + desc = "A stripper clip for reloading 5mm rounds into magazines." + caliber = "10mm" + ammo_type = /obj/item/ammo_casing/a10mm + matter = list(DEFAULT_WALL_MATERIAL = 675) // metal costs are very roughly based around one 10mm casing = 75 metal + max_ammo = 9 + multiple_sprites = 1 + +/obj/item/ammo_magazine/box/emp/b10 + name = "ammunition box (10mm haywire)" + ammo_type = /obj/item/ammo_casing/a10mm/emp + +///////// 5.56mm ///////// + +/obj/item/ammo_magazine/m556 + name = "magazine (5.56mm)" + icon_state = "m556" + origin_tech = list(TECH_COMBAT = 2) + mag_type = MAGAZINE + caliber = "5.56mm" + matter = list(DEFAULT_WALL_MATERIAL = 1800) + ammo_type = /obj/item/ammo_casing/a556 + max_ammo = 20 + multiple_sprites = 1 + +/obj/item/ammo_magazine/m556/ext + name = "extended magazine (5.56mm)" + matter = list(DEFAULT_WALL_MATERIAL = 2700) + max_ammo = 30 + +/obj/item/ammo_magazine/m556/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/m556/ext/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/m556/practice + name = "magazine (5.56mm practice)" + ammo_type = /obj/item/ammo_casing/a556p + +/obj/item/ammo_magazine/m556/practice/ext + name = "extended magazine (5.56mm practice)" + max_ammo = 30 + +/obj/item/ammo_magazine/m556/ap + name = "magazine (5.56mm armor-piercing)" + ammo_type = /obj/item/ammo_casing/a556/ap + +/obj/item/ammo_magazine/m556/ap/ext + name = "extended magazine (5.56mm armor-piercing)" + max_ammo = 30 + +/obj/item/ammo_magazine/m556/small + icon_state = "m556-small" + matter = list(DEFAULT_WALL_MATERIAL = 900) + max_ammo = 10 + +/obj/item/ammo_magazine/m556/small/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/m556/small/practice + name = "magazine (5.56mm practice)" + ammo_type = /obj/item/ammo_casing/a556p + +/obj/item/ammo_magazine/m556/small/ap + name = "magazine (5.56mm armor-piercing)" + ammo_type = /obj/item/ammo_casing/a556/ap + +/obj/item/ammo_magazine/clip/c556 + name = "ammo clip (5.56mm)" + icon_state = "clip_rifle" + caliber = "5.56mm" + ammo_type = /obj/item/ammo_casing/a556 + matter = list(DEFAULT_WALL_MATERIAL = 450) // metal costs are very roughly based around one 10mm casing = 180 metal + max_ammo = 5 + multiple_sprites = 1 + +/obj/item/ammo_magazine/clip/c556/ap + name = "rifle clip (5.56mm armor-piercing)" + ammo_type = /obj/item/ammo_casing/a556/ap + +/obj/item/ammo_magazine/clip/c556/practice + name = "rifle clip (5.56mm practice)" + ammo_type = /obj/item/ammo_casing/a556 + +/obj/item/ammo_magazine/m556saw + name = "magazine box (5.56mm)" + icon_state = "a556" + origin_tech = list(TECH_COMBAT = 2) + mag_type = MAGAZINE + caliber = "5.56mm" + matter = list(DEFAULT_WALL_MATERIAL = 10000) + ammo_type = /obj/item/ammo_casing/a556 + w_class = ITEMSIZE_NORMAL // This should NOT fit in your pocket!! + max_ammo = 50 + multiple_sprites = 1 + +/obj/item/ammo_magazine/m556saw/ap + name = "magazine box (5.56mm armor-piercing)" + ammo_type = /obj/item/ammo_casing/a556/ap + +/obj/item/ammo_magazine/m556saw/empty + initial_ammo = 0 + +///////// .50 AE ///////// + +/obj/item/ammo_magazine/m50 + name = "magazine (.50 AE)" + icon_state = "50ae" + origin_tech = list(TECH_COMBAT = 2) + mag_type = MAGAZINE + caliber = ".50AE" + matter = list(DEFAULT_WALL_MATERIAL = 1260) + ammo_type = /obj/item/ammo_casing/a50ae + max_ammo = 7 + multiple_sprites = 1 + +/obj/item/ammo_magazine/m50/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/clip/c50 + name = "ammo clip (.50 AE)" + icon_state = "clip_pistol" + desc = "A stripper clip for reloading .50 Action Express rounds into magazines." + caliber = ".50AE" + ammo_type = /obj/item/ammo_casing/a50ae + matter = list(DEFAULT_WALL_MATERIAL = 1620) // metal costs are very roughly based around one .50 casing = 180 metal + max_ammo = 9 + multiple_sprites = 1 + +///////// 7.62mm ///////// + +/obj/item/ammo_magazine/m762 + name = "magazine (7.62mm)" + icon_state = "m762-small" + mag_type = MAGAZINE + caliber = "7.62mm" + matter = list(DEFAULT_WALL_MATERIAL = 2000) + ammo_type = /obj/item/ammo_casing/a762 + max_ammo = 10 + multiple_sprites = 1 + +/obj/item/ammo_magazine/m762/ap + name = "magazine (7.62mm armor-piercing)" + ammo_type = /obj/item/ammo_casing/a762/ap + +/obj/item/ammo_magazine/m762/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/m762m // Intentionally not a subtype of m762 because it's supposed to be incompatible with the Z8 Bulldog rifle. + name = "magazine (7.62mm)" + icon_state = "m762" + mag_type = MAGAZINE + caliber = "7.62mm" + matter = list(DEFAULT_WALL_MATERIAL = 4000) + ammo_type = /obj/item/ammo_casing/a762 + max_ammo = 20 + multiple_sprites = 1 + +/obj/item/ammo_magazine/m762m/ap + name = "magazine (7.62mm armor-piercing)" + ammo_type = /obj/item/ammo_casing/a762/ap + +/obj/item/ammo_magazine/m762m/empty + initial_ammo = 0 + +/obj/item/ammo_magazine/clip/c762 + name = "ammo clip (7.62mm)" + icon_state = "clip_rifle" + caliber = "7.62mm" + ammo_type = /obj/item/ammo_casing/a762 + matter = list(DEFAULT_WALL_MATERIAL = 1000) // metal costs are very roughly based around one 7.62 casing = 200 metal + max_ammo = 5 + multiple_sprites = 1 + +/obj/item/ammo_magazine/clip/c762/ap + name = "rifle clip (7.62mm armor-piercing)" + ammo_type = /obj/item/ammo_casing/a762/ap + +/obj/item/ammo_magazine/clip/c762/practice + name = "rifle clip (7.62mm practice)" + ammo_type = /obj/item/ammo_casing/a762p + +///////// 12g ///////// + +/obj/item/ammo_magazine/m12gdrum + name = "magazine (12 gauge)" + icon_state = "12g" + mag_type = MAGAZINE + caliber = "12g" + matter = list(DEFAULT_WALL_MATERIAL = 2200) + ammo_type = /obj/item/ammo_casing/a12g + max_ammo = 24 + multiple_sprites = 1 + +/obj/item/ammo_magazine/m12gdrum/beanbag + name = "magazine (12 gauge beanbag)" + ammo_type = /obj/item/ammo_casing/a12g/beanbag + +/obj/item/ammo_magazine/m12gdrum/pellet + name = "magazine (12 gauge pellet)" + ammo_type = /obj/item/ammo_casing/a12g/pellet + +/obj/item/ammo_magazine/m12gdrum/flash + name = "magazine (12 gauge flash)" + ammo_type = /obj/item/ammo_casing/a12g/flash + +/obj/item/ammo_magazine/m12gdrum/empty + initial_ammo = 0 + +///////// .75 Gyrojet ///////// + +/obj/item/ammo_magazine/m75 + name = "ammo magazine (.75 Gyrojet)" + icon_state = "75" + mag_type = MAGAZINE + caliber = ".75" + ammo_type = /obj/item/ammo_casing/a75 + multiple_sprites = 1 + max_ammo = 4 + +/obj/item/ammo_magazine/m75/empty + initial_ammo = 0 + +///////// Misc. ///////// + +/obj/item/ammo_magazine/caps + name = "speedloader (caps)" + icon_state = "T38" + caliber = "caps" + color = "#FF0000" + ammo_type = /obj/item/ammo_casing/cap + matter = list(DEFAULT_WALL_MATERIAL = 600) + max_ammo = 7 multiple_sprites = 1 \ No newline at end of file diff --git a/code/modules/projectiles/ammunition/bullets.dm b/code/modules/projectiles/ammunition/rounds.dm similarity index 85% rename from code/modules/projectiles/ammunition/bullets.dm rename to code/modules/projectiles/ammunition/rounds.dm index aa34925cef..624c0e6f76 100644 --- a/code/modules/projectiles/ammunition/bullets.dm +++ b/code/modules/projectiles/ammunition/rounds.dm @@ -1,291 +1,321 @@ -/obj/item/ammo_casing/a357 - desc = "A .357 bullet casing." - caliber = "357" - projectile_type = /obj/item/projectile/bullet/pistol/strong - -/obj/item/ammo_casing/a50 - desc = "A .50AE bullet casing." - caliber = ".50" - projectile_type = /obj/item/projectile/bullet/pistol/strong - -/obj/item/ammo_casing/a75 - desc = "A .75 gyrojet rocket sheathe." - caliber = "75" - projectile_type = /obj/item/projectile/bullet/gyro - -/obj/item/ammo_casing/a38 - desc = "A .38 bullet casing." - caliber = "38" - projectile_type = /obj/item/projectile/bullet/pistol - -/obj/item/ammo_casing/a38r - desc = "A .38 rubber bullet casing." - caliber = "38" - icon_state = "r-casing" - projectile_type = /obj/item/projectile/bullet/pistol/rubber - -/obj/item/ammo_casing/a38/emp - name = ".38 haywire round" - desc = "A .38 bullet casing fitted with a single-use ion pulse generator." - icon_state = "empcasing" - projectile_type = /obj/item/projectile/ion/small - matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100) - -/* - * 9mm - */ - -/obj/item/ammo_casing/a9mm - desc = "A 9mm bullet casing." - caliber = "9mm" - projectile_type = /obj/item/projectile/bullet/pistol - -/obj/item/ammo_casing/a9mm/ap - desc = "A 9mm armor-piercing bullet casing." - projectile_type = /obj/item/projectile/bullet/pistol/ap - -/obj/item/ammo_casing/a9mmf - desc = "A 9mm flash shell casing." - caliber = "9mm" - icon_state = "r-casing" - projectile_type = /obj/item/projectile/energy/flash - -/obj/item/ammo_casing/a9mmr - desc = "A 9mm rubber bullet casing." - caliber = "9mm" - icon_state = "r-casing" - projectile_type = /obj/item/projectile/bullet/pistol/rubber - -/obj/item/ammo_casing/a9mmp - desc = "A 9mm practice bullet casing." - caliber = "9mm" - icon_state = "r-casing" - projectile_type = /obj/item/projectile/bullet/pistol/practice - -/* -/obj/item/ammo_casing/c5mm - desc = "A 5mm bullet casing." - caliber = "5mm" - projectile_type = /obj/item/projectile/bullet/pistol/ap -*/ - -/* - * 45 ammo - */ - -/obj/item/ammo_casing/a45 - desc = "A .45 bullet casing." - caliber = ".45" - projectile_type = /obj/item/projectile/bullet/pistol/medium - -/obj/item/ammo_casing/a45ap - desc = "A .45 Armor-Piercing bullet casing." - caliber = ".45" - icon_state = "r-casing" - projectile_type = /obj/item/projectile/bullet/pistol/medium/ap - -/obj/item/ammo_casing/a45p - desc = "A .45 practice bullet casing." - caliber = ".45" - icon_state = "r-casing" - projectile_type = /obj/item/projectile/bullet/pistol/practice - -/obj/item/ammo_casing/a45r - desc = "A .45 rubber bullet casing." - caliber = ".45" - icon_state = "r-casing" - projectile_type = /obj/item/projectile/bullet/pistol/rubber - -/obj/item/ammo_casing/a45f - desc = "A .45 flash shell casing." - caliber = ".45" - icon_state = "r-casing" - projectile_type = /obj/item/projectile/energy/flash - -/obj/item/ammo_casing/a45/emp - name = ".45 haywire round" - desc = "A .45 bullet casing fitted with a single-use ion pulse generator." - projectile_type = /obj/item/projectile/ion/small - icon_state = "empcasing" - matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100) - -/obj/item/ammo_casing/a45/hp - desc = "A .45 hollow-point bullet casing." - projectile_type = /obj/item/projectile/bullet/pistol/medium/hollow - - -/* - * 10mm - */ - -/obj/item/ammo_casing/a10mm - desc = "A 10mm bullet casing." - caliber = "10mm" - projectile_type = /obj/item/projectile/bullet/pistol/medium - -/obj/item/ammo_casing/a10mm/emp - name = "10mm haywire round" - desc = "A 10mm bullet casing fitted with a single-use ion pulse generator." - projectile_type = /obj/item/projectile/ion/small - icon_state = "empcasing" - matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100) - -/* - * Shotguns - */ - -/obj/item/ammo_casing/a12g - name = "shotgun slug" - desc = "A 12 gauge slug." - icon_state = "slshell" - caliber = "shotgun" - projectile_type = /obj/item/projectile/bullet/shotgun - matter = list(DEFAULT_WALL_MATERIAL = 360) - -/obj/item/ammo_casing/a12g/pellet - name = "shotgun shell" - desc = "A 12 gauge shell." - icon_state = "gshell" - projectile_type = /obj/item/projectile/bullet/pellet/shotgun - matter = list(DEFAULT_WALL_MATERIAL = 360) - -/obj/item/ammo_casing/a12g/blank - name = "shotgun shell" - desc = "A blank shell." - icon_state = "blshell" - projectile_type = /obj/item/projectile/bullet/blank - matter = list(DEFAULT_WALL_MATERIAL = 90) - -/obj/item/ammo_casing/a12g/practice - name = "shotgun shell" - desc = "A practice shell." - icon_state = "pshell" - projectile_type = /obj/item/projectile/bullet/shotgun/practice - matter = list("metal" = 90) - -/obj/item/ammo_casing/a12g/beanbag - name = "beanbag shell" - desc = "A beanbag shell." - icon_state = "bshell" - projectile_type = /obj/item/projectile/bullet/shotgun/beanbag - matter = list(DEFAULT_WALL_MATERIAL = 180) - -//Can stun in one hit if aimed at the head, but -//is blocked by clothing that stops tasers and is vulnerable to EMP -/obj/item/ammo_casing/a12g/stunshell - name = "stun shell" - desc = "A 12 gauge taser cartridge." - icon_state = "stunshell" - projectile_type = /obj/item/projectile/energy/electrode/stunshot - matter = list(DEFAULT_WALL_MATERIAL = 360, "glass" = 720) - -/obj/item/ammo_casing/a12g/stunshell/emp_act(severity) - if(prob(100/severity)) BB = null - update_icon() - -//Does not stun, only blinds, but has area of effect. -/obj/item/ammo_casing/a12g/flash - name = "flash shell" - desc = "A chemical shell used to signal distress or provide illumination." - icon_state = "fshell" - projectile_type = /obj/item/projectile/energy/flash/flare - matter = list(DEFAULT_WALL_MATERIAL = 90, "glass" = 90) - -/obj/item/ammo_casing/a12g/emp - name = "ion shell" - desc = "An advanced shotgun round that creates a small EMP when it strikes a target." - icon_state = "empshell" - projectile_type = /obj/item/projectile/ion -// projectile_type = /obj/item/projectile/bullet/shotgun/ion - matter = list(DEFAULT_WALL_MATERIAL = 360, "uranium" = 240) - -/* - * 762mm - */ - -/obj/item/ammo_casing/a762 - desc = "A 7.62mm bullet casing." - caliber = "a762" - icon_state = "rifle-casing" - projectile_type = /obj/item/projectile/bullet/rifle/a762 - -/obj/item/ammo_casing/a762/ap - desc = "A 7.62mm armor-piercing bullet casing." - projectile_type = /obj/item/projectile/bullet/rifle/a762/ap - -/obj/item/ammo_casing/a762p - desc = "A 7.62mm practice bullet casing." - caliber = "a762" - icon_state = "rifle-casing" // Need to make an icon for these - projectile_type = /obj/item/projectile/bullet/rifle/practice - -/obj/item/ammo_casing/a762/blank - desc = "A blank 7.62mm bullet casing." - projectile_type = /obj/item/projectile/bullet/blank - matter = list(DEFAULT_WALL_MATERIAL = 90) - -/obj/item/ammo_casing/a762/hp - desc = "A 7.62mm hollow-point bullet casing." - projectile_type = /obj/item/projectile/bullet/rifle/a762/hollow - -//145mm - -/obj/item/ammo_casing/a145 - desc = "A 14.5mm shell." - icon_state = "lcasing" - caliber = "14.5mm" - projectile_type = /obj/item/projectile/bullet/rifle/a145 - matter = list(DEFAULT_WALL_MATERIAL = 1250) - -/* - * 556mm - */ - -/obj/item/ammo_casing/a556 - desc = "A 5.56mm bullet casing." - caliber = "a556" - icon_state = "rifle-casing" - projectile_type = /obj/item/projectile/bullet/rifle/a556 - -/obj/item/ammo_casing/a556/ap - desc = "A 5.56mm armor-piercing bullet casing." - projectile_type = /obj/item/projectile/bullet/rifle/a556/ap - -/obj/item/ammo_casing/a556p - desc = "A 5.56mm practice bullet casing." - caliber = "a556" - icon_state = "rifle-casing" // Need to make an icon for these - projectile_type = /obj/item/projectile/bullet/rifle/practice - -/obj/item/ammo_casing/a556/blank - desc = "A blank 5.56mm bullet casing." - projectile_type = /obj/item/projectile/bullet/blank - matter = list(DEFAULT_WALL_MATERIAL = 90) - -/obj/item/ammo_casing/a556/hp - desc = "A 5.56mm hollow-point bullet casing." - projectile_type = /obj/item/projectile/bullet/rifle/a556/hollow - -/* - * Misc - */ - -/obj/item/ammo_casing/rocket - name = "rocket shell" - desc = "A high explosive designed to be fired from a launcher." - icon_state = "rocketshell" - projectile_type = /obj/item/missile - caliber = "rocket" - -/obj/item/ammo_casing/cap - name = "cap" - desc = "A cap for children toys." - caliber = "caps" - icon_state = "r-casing" - color = "#FF0000" - projectile_type = /obj/item/projectile/bullet/pistol/cap - -/obj/item/ammo_casing/spent // For simple hostile mobs only, so they don't cough up usable bullets when firing. This is for literally nothing else. - icon_state = "s-casing-spent" - BB = null +/************************************************************************/ +/* +# An explaination of the naming format for guns and ammo: +# +# a = Ammo, as in individual rounds of ammunition. +# b = Box, intended to have ammo taken out one at a time by hand. +# c = Clips, intended to reload magazines or guns quickly. +# m = Magazine, intended to hold rounds of ammo. +# s = Speedloaders, intended to reload guns quickly. +# +# Use this format, followed by the caliber. For example, a shotgun's caliber +# variable is "12g" as a result. Ergo, a shotgun round's path would have "a12g", +# or a magazine with shotgun shells would be "m12g" instead. To avoid confusion +# for developers and in-game admins spawning these items, stick to this format. +# Likewise, when creating new rounds, the caliber variable should match whatever +# the name says. +# +# This comment is copied in magazines.dm as well. +*/ +/************************************************************************/ + +/* + * .357 + */ + +/obj/item/ammo_casing/a357 + desc = "A .357 bullet casing." + caliber = "357" + projectile_type = /obj/item/projectile/bullet/pistol/strong + +/* + * .38 + */ + +/obj/item/ammo_casing/a38 + desc = "A .38 bullet casing." + caliber = ".38" + projectile_type = /obj/item/projectile/bullet/pistol + +/obj/item/ammo_casing/a38r + desc = "A .38 rubber bullet casing." + caliber = ".38" + icon_state = "r-casing" + projectile_type = /obj/item/projectile/bullet/pistol/rubber + +/obj/item/ammo_casing/a38/emp + name = ".38 haywire round" + desc = "A .38 bullet casing fitted with a single-use ion pulse generator." + icon_state = "empcasing" + projectile_type = /obj/item/projectile/ion/small + matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100) + +/* + * .50 Action Express + */ + +/obj/item/ammo_casing/a50ae + desc = "A .50AE bullet casing." + caliber = ".50AE" + projectile_type = /obj/item/projectile/bullet/pistol/strong + +/* + * .75 (aka Gyrojet Rockets, aka admin abuse) + */ + +/obj/item/ammo_casing/a75 + desc = "A .75 gyrojet rocket sheathe." + caliber = ".75" + projectile_type = /obj/item/projectile/bullet/gyro + +/* + * 9mm + */ + +/obj/item/ammo_casing/a9mm + desc = "A 9mm bullet casing." + caliber = "9mm" + projectile_type = /obj/item/projectile/bullet/pistol + +/obj/item/ammo_casing/a9mm/ap + desc = "A 9mm armor-piercing bullet casing." + projectile_type = /obj/item/projectile/bullet/pistol/ap + +/obj/item/ammo_casing/a9mmf + desc = "A 9mm flash shell casing." + caliber = "9mm" + icon_state = "r-casing" + projectile_type = /obj/item/projectile/energy/flash + +/obj/item/ammo_casing/a9mmr + desc = "A 9mm rubber bullet casing." + caliber = "9mm" + icon_state = "r-casing" + projectile_type = /obj/item/projectile/bullet/pistol/rubber + +/obj/item/ammo_casing/a9mmp + desc = "A 9mm practice bullet casing." + caliber = "9mm" + icon_state = "r-casing" + projectile_type = /obj/item/projectile/bullet/pistol/practice + +/* + * .45 + */ + +/obj/item/ammo_casing/a45 + desc = "A .45 bullet casing." + caliber = ".45" + projectile_type = /obj/item/projectile/bullet/pistol/medium + +/obj/item/ammo_casing/a45ap + desc = "A .45 Armor-Piercing bullet casing." + caliber = ".45" + icon_state = "r-casing" + projectile_type = /obj/item/projectile/bullet/pistol/medium/ap + +/obj/item/ammo_casing/a45p + desc = "A .45 practice bullet casing." + caliber = ".45" + icon_state = "r-casing" + projectile_type = /obj/item/projectile/bullet/pistol/practice + +/obj/item/ammo_casing/a45r + desc = "A .45 rubber bullet casing." + caliber = ".45" + icon_state = "r-casing" + projectile_type = /obj/item/projectile/bullet/pistol/rubber + +/obj/item/ammo_casing/a45f + desc = "A .45 flash shell casing." + caliber = ".45" + icon_state = "r-casing" + projectile_type = /obj/item/projectile/energy/flash + +/obj/item/ammo_casing/a45/emp + name = ".45 haywire round" + desc = "A .45 bullet casing fitted with a single-use ion pulse generator." + projectile_type = /obj/item/projectile/ion/small + icon_state = "empcasing" + matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100) + +/obj/item/ammo_casing/a45/hp + desc = "A .45 hollow-point bullet casing." + projectile_type = /obj/item/projectile/bullet/pistol/medium/hollow + + +/* + * 10mm + */ + +/obj/item/ammo_casing/a10mm + desc = "A 10mm bullet casing." + caliber = "10mm" + projectile_type = /obj/item/projectile/bullet/pistol/medium + +/obj/item/ammo_casing/a10mm/emp + name = "10mm haywire round" + desc = "A 10mm bullet casing fitted with a single-use ion pulse generator." + projectile_type = /obj/item/projectile/ion/small + icon_state = "empcasing" + matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100) + +/* + * 12g (aka shotgun ammo) + */ + +/obj/item/ammo_casing/a12g + name = "shotgun slug" + desc = "A 12 gauge slug." + icon_state = "slshell" + caliber = "12g" + projectile_type = /obj/item/projectile/bullet/shotgun + matter = list(DEFAULT_WALL_MATERIAL = 360) + +/obj/item/ammo_casing/a12g/pellet + name = "shotgun shell" + desc = "A 12 gauge shell." + icon_state = "gshell" + projectile_type = /obj/item/projectile/bullet/pellet/shotgun + matter = list(DEFAULT_WALL_MATERIAL = 360) + +/obj/item/ammo_casing/a12g/blank + name = "shotgun shell" + desc = "A blank shell." + icon_state = "blshell" + projectile_type = /obj/item/projectile/bullet/blank + matter = list(DEFAULT_WALL_MATERIAL = 90) + +/obj/item/ammo_casing/a12g/practice + name = "shotgun shell" + desc = "A practice shell." + icon_state = "pshell" + projectile_type = /obj/item/projectile/bullet/shotgun/practice + matter = list("metal" = 90) + +/obj/item/ammo_casing/a12g/beanbag + name = "beanbag shell" + desc = "A beanbag shell." + icon_state = "bshell" + projectile_type = /obj/item/projectile/bullet/shotgun/beanbag + matter = list(DEFAULT_WALL_MATERIAL = 180) + +//Can stun in one hit if aimed at the head, but +//is blocked by clothing that stops tasers and is vulnerable to EMP +/obj/item/ammo_casing/a12g/stunshell + name = "stun shell" + desc = "A 12 gauge taser cartridge." + icon_state = "stunshell" + projectile_type = /obj/item/projectile/energy/electrode/stunshot + matter = list(DEFAULT_WALL_MATERIAL = 360, "glass" = 720) + +/obj/item/ammo_casing/a12g/stunshell/emp_act(severity) + if(prob(100/severity)) BB = null + update_icon() + +//Does not stun, only blinds, but has area of effect. +/obj/item/ammo_casing/a12g/flash + name = "flash shell" + desc = "A chemical shell used to signal distress or provide illumination." + icon_state = "fshell" + projectile_type = /obj/item/projectile/energy/flash/flare + matter = list(DEFAULT_WALL_MATERIAL = 90, "glass" = 90) + +/obj/item/ammo_casing/a12g/emp + name = "ion shell" + desc = "An advanced shotgun round that creates a small EMP when it strikes a target." + icon_state = "empshell" + projectile_type = /obj/item/projectile/ion +// projectile_type = /obj/item/projectile/bullet/shotgun/ion + matter = list(DEFAULT_WALL_MATERIAL = 360, "uranium" = 240) + +/* + * 7.62mm + */ + +/obj/item/ammo_casing/a762 + desc = "A 7.62mm bullet casing." + caliber = "7.62mm" + icon_state = "rifle-casing" + projectile_type = /obj/item/projectile/bullet/rifle/a762 + +/obj/item/ammo_casing/a762/ap + desc = "A 7.62mm armor-piercing bullet casing." + projectile_type = /obj/item/projectile/bullet/rifle/a762/ap + +/obj/item/ammo_casing/a762p + desc = "A 7.62mm practice bullet casing." + caliber = "7.62mm" + icon_state = "rifle-casing" // Need to make an icon for these + projectile_type = /obj/item/projectile/bullet/rifle/practice + +/obj/item/ammo_casing/a762/blank + desc = "A blank 7.62mm bullet casing." + projectile_type = /obj/item/projectile/bullet/blank + matter = list(DEFAULT_WALL_MATERIAL = 90) + +/obj/item/ammo_casing/a762/hp + desc = "A 7.62mm hollow-point bullet casing." + projectile_type = /obj/item/projectile/bullet/rifle/a762/hollow + +//145mm + +/obj/item/ammo_casing/a145 + desc = "A 14.5mm shell." + icon_state = "lcasing" + caliber = "14.5mm" + projectile_type = /obj/item/projectile/bullet/rifle/a145 + matter = list(DEFAULT_WALL_MATERIAL = 1250) + +/* + * 5.56mm + */ + +/obj/item/ammo_casing/a556 + desc = "A 5.56mm bullet casing." + caliber = "5.56mm" + icon_state = "rifle-casing" + projectile_type = /obj/item/projectile/bullet/rifle/a556 + +/obj/item/ammo_casing/a556/ap + desc = "A 5.56mm armor-piercing bullet casing." + projectile_type = /obj/item/projectile/bullet/rifle/a556/ap + +/obj/item/ammo_casing/a556p + desc = "A 5.56mm practice bullet casing." + caliber = "5.56mm" + icon_state = "rifle-casing" // Need to make an icon for these + projectile_type = /obj/item/projectile/bullet/rifle/practice + +/obj/item/ammo_casing/a556/blank + desc = "A blank 5.56mm bullet casing." + projectile_type = /obj/item/projectile/bullet/blank + matter = list(DEFAULT_WALL_MATERIAL = 90) + +/obj/item/ammo_casing/a556/hp + desc = "A 5.56mm hollow-point bullet casing." + projectile_type = /obj/item/projectile/bullet/rifle/a556/hollow + +/* + * Misc + */ + +/obj/item/ammo_casing/rocket + name = "rocket shell" + desc = "A high explosive designed to be fired from a launcher." + icon_state = "rocketshell" + projectile_type = /obj/item/missile + caliber = "rocket" + +/obj/item/ammo_casing/cap + name = "cap" + desc = "A cap for children toys." + caliber = "caps" + icon_state = "r-casing" + color = "#FF0000" + projectile_type = /obj/item/projectile/bullet/pistol/cap + +/obj/item/ammo_casing/spent // For simple hostile mobs only, so they don't cough up usable bullets when firing. This is for literally nothing else. + icon_state = "s-casing-spent" + BB = null projectile_type = null \ No newline at end of file diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index a3e1f671ec..9bb9862fd3 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -252,7 +252,7 @@ item_state = null w_class = ITEMSIZE_LARGE force = 10 - caliber = "shotgun" + caliber = "12g" fire_sound = 'sound/weapons/shotgun.ogg' origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4) slot_flags = SLOT_BACK diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index a92e59982c..36a929af28 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -107,7 +107,7 @@ name = "\"The Judge\"" desc = "A revolving hand-shotgun by Cybersun Industries that packs the power of a 12 guage in the palm of your hand (if you don't break your wrist). Uses 12 shotgun rounds." icon_state = "judge" - caliber = "shotgun" + caliber = "12g" origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 4) max_shells = 5 fire_sound = 'sound/weapons/shotgun.ogg' @@ -127,7 +127,7 @@ caliber = "38" ammo_type = /obj/item/ammo_casing/a38 var/secondary_max_shells = 1 - var/secondary_caliber = "shotgun" + var/secondary_caliber = "12g" var/secondary_ammo_type = /obj/item/ammo_casing/a12g var/flipped_firing = 0 var/list/secondary_loaded = list() diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index 80d1a09d78..bc14bb9425 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -8,7 +8,7 @@ force = 10 flags = CONDUCT slot_flags = SLOT_BACK - caliber = "shotgun" + caliber = "12g" origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2) load_method = SINGLE_CASING ammo_type = /obj/item/ammo_casing/a12g/beanbag @@ -64,7 +64,7 @@ force = 10 flags = CONDUCT slot_flags = SLOT_BACK - caliber = "shotgun" + caliber = "12g" origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 1) ammo_type = /obj/item/ammo_casing/a12g/beanbag diff --git a/polaris.dme b/polaris.dme index 9f075b1d76..92abfde4f5 100644 --- a/polaris.dme +++ b/polaris.dme @@ -1876,8 +1876,8 @@ #include "code\modules\projectiles\effects.dm" #include "code\modules\projectiles\gun.dm" #include "code\modules\projectiles\projectile.dm" -#include "code\modules\projectiles\ammunition\boxes.dm" -#include "code\modules\projectiles\ammunition\bullets.dm" +#include "code\modules\projectiles\ammunition\magazines.dm" +#include "code\modules\projectiles\ammunition\rounds.dm" #include "code\modules\projectiles\guns\energy.dm" #include "code\modules\projectiles\guns\launcher.dm" #include "code\modules\projectiles\guns\projectile.dm" From ae3d877730869ab198896feb23e1bab5f3c94b15 Mon Sep 17 00:00:00 2001 From: Spades Date: Sat, 27 May 2017 16:25:38 -0400 Subject: [PATCH 26/84] Might be helpful if I clicked save on my files --- code/modules/projectiles/ammunition/rounds.dm | 4 +++- code/modules/projectiles/guns/projectile/automatic.dm | 8 ++++---- code/modules/projectiles/guns/projectile/boltaction.dm | 4 ++-- code/modules/projectiles/guns/projectile/pistol.dm | 4 ++-- code/modules/projectiles/guns/projectile/revolver.dm | 6 +++--- code/modules/projectiles/guns/projectile/sniper.dm | 2 +- 6 files changed, 15 insertions(+), 13 deletions(-) diff --git a/code/modules/projectiles/ammunition/rounds.dm b/code/modules/projectiles/ammunition/rounds.dm index 624c0e6f76..3230e6ed62 100644 --- a/code/modules/projectiles/ammunition/rounds.dm +++ b/code/modules/projectiles/ammunition/rounds.dm @@ -258,7 +258,9 @@ desc = "A 7.62mm hollow-point bullet casing." projectile_type = /obj/item/projectile/bullet/rifle/a762/hollow -//145mm +/* + * 14.5mm (anti-materiel rifle round) + */ /obj/item/ammo_casing/a145 desc = "A 14.5mm shell." diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 9bb9862fd3..5abcead8f3 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -56,7 +56,7 @@ item_state = null w_class = ITEMSIZE_LARGE force = 10 - caliber = "a556" + caliber = "5.56mm" origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4) slot_flags = SLOT_BACK load_method = MAGAZINE @@ -109,7 +109,7 @@ item_state = "z8carbine" w_class = ITEMSIZE_LARGE force = 10 - caliber = "a762" + caliber = "7.62mm" origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 3) ammo_type = "/obj/item/ammo_casing/a556" // Is this really needed anymore? fire_sound = 'sound/weapons/Gunshot.ogg' @@ -181,7 +181,7 @@ force = 10 slot_flags = 0 max_shells = 50 - caliber = "a556" + caliber = "5.56mm" origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 2) slot_flags = SLOT_BACK ammo_type = "/obj/item/ammo_casing/a556" // Is this really needed anymore? @@ -350,7 +350,7 @@ item_state = "bullpup" w_class = ITEMSIZE_LARGE force = 10 - caliber = "a762" + caliber = "7.62mm" origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4) slot_flags = SLOT_BACK load_method = MAGAZINE diff --git a/code/modules/projectiles/guns/projectile/boltaction.dm b/code/modules/projectiles/guns/projectile/boltaction.dm index cbc403c4e0..17e2fe1234 100644 --- a/code/modules/projectiles/guns/projectile/boltaction.dm +++ b/code/modules/projectiles/guns/projectile/boltaction.dm @@ -7,7 +7,7 @@ icon_state = "boltaction" fire_sound = 'sound/weapons/rifleshot.ogg' max_shells = 5 - caliber = "a762" + caliber = "7.62mm" origin_tech = list(TECH_COMBAT = 1)// Old as shit rifle doesn't have very good tech. ammo_type = /obj/item/ammo_casing/a762 load_method = SINGLE_CASING|SPEEDLOADER @@ -60,7 +60,7 @@ icon_state = "leveraction" fire_sound = 'sound/weapons/rifleshot.ogg' max_shells = 5 - caliber = "a762" + caliber = "7.62mm" origin_tech = list(TECH_COMBAT = 1)// Old as shit rifle doesn't have very good tech. ammo_type = /obj/item/ammo_casing/a762 load_method = SINGLE_CASING|SPEEDLOADER diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm index 69fa353a52..ba5f4f147d 100644 --- a/code/modules/projectiles/guns/projectile/pistol.dm +++ b/code/modules/projectiles/guns/projectile/pistol.dm @@ -120,7 +120,7 @@ icon_state = "deagle" item_state = "deagle" force = 14.0 - caliber = ".50" + caliber = ".50AE" load_method = MAGAZINE fire_sound = 'sound/weapons/deagle.ogg' magazine_type = /obj/item/ammo_magazine/m50 @@ -168,7 +168,7 @@ desc = "Speak softly, and carry a big gun. Fires rare .75 caliber self-propelled exploding bolts--because fuck you and everything around you." icon_state = "gyropistol" max_shells = 8 - caliber = "75" + caliber = ".75" fire_sound = 'sound/weapons/rpg.ogg' origin_tech = list(TECH_COMBAT = 3) ammo_type = "/obj/item/ammo_casing/a75" diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index 36a929af28..3886450fcf 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -43,7 +43,7 @@ name = "revolver" desc = "A cheap Martian knock-off of a Smith & Wesson Model 10. Uses .38-Special rounds." icon_state = "detective" - caliber = "38" + caliber = ".38" origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) fire_sound = 'sound/weapons/Gunshot_light.ogg' ammo_type = /obj/item/ammo_casing/a38 @@ -71,7 +71,7 @@ name = "Deckard .38" desc = "A custom-built revolver, based off the semi-popular Detective Special model." icon_state = "deckard-empty" - caliber = "38" + caliber = ".38" origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) fire_sound = 'sound/weapons/Gunshot_light.ogg' ammo_type = /obj/item/ammo_casing/a38 @@ -124,7 +124,7 @@ origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) handle_casings = CYCLE_CASINGS max_shells = 9 - caliber = "38" + caliber = ".38" ammo_type = /obj/item/ammo_casing/a38 var/secondary_max_shells = 1 var/secondary_caliber = "12g" diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index 8afda4b63b..9a16f68a4c 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -80,7 +80,7 @@ slot_flags = SLOT_BACK // Needs a sprite. origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 2, TECH_ILLEGAL = 8) recoil = 2 //extra kickback - caliber = "a762" + caliber = "7.62mm" load_method = MAGAZINE accuracy = -3 //shooting at the hip scoped_accuracy = 0 From cef9c4f98d0afa61c9369a60a677541d3472cffd Mon Sep 17 00:00:00 2001 From: Spades Date: Sat, 27 May 2017 16:27:05 -0400 Subject: [PATCH 27/84] One last thing. --- code/modules/projectiles/ammunition/magazines.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index 92512b0dd1..cd80854af3 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -15,7 +15,10 @@ # Likewise, when creating new rounds, the caliber variable should match whatever # the name says. # -# This comment is copied in magazines.dm as well. +# This comment is copied in rounds.dm as well. +# +# Also, if a magazine is only meant for a specific gun, include the name +# of the specific gun in the path. Example: m45uzi is only for the Uzi. */ /************************************************************************/ From 3a0bdf5cf963aca113d269d1d88556f60e1d5e1e Mon Sep 17 00:00:00 2001 From: Spades Date: Sat, 27 May 2017 16:31:17 -0400 Subject: [PATCH 28/84] Name tweak for Anewbe --- code/modules/projectiles/ammunition/magazines.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index cd80854af3..6202e03cde 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -329,6 +329,7 @@ max_ammo = 30 /obj/item/ammo_magazine/m556/small + name = "reduced magazine (5.56mm)" icon_state = "m556-small" matter = list(DEFAULT_WALL_MATERIAL = 900) max_ammo = 10 From ef2883ff7e796cf43addd7dfed0669ed2f664fe1 Mon Sep 17 00:00:00 2001 From: Yoshax Date: Tue, 30 May 2017 16:32:40 +0100 Subject: [PATCH 29/84] Drop pod issue fix --- code/modules/random_map/drop/drop_types.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/random_map/drop/drop_types.dm b/code/modules/random_map/drop/drop_types.dm index 43f89b4ec7..7c505607bd 100644 --- a/code/modules/random_map/drop/drop_types.dm +++ b/code/modules/random_map/drop/drop_types.dm @@ -71,7 +71,7 @@ var/global/list/datum/supply_drop_loot/supply_drop /datum/supply_drop_loot/heavy_warfare name = "Heavy Warfare" container = /obj/structure/largecrate -/datum/supply_drop_loot/armour/New() +/datum/supply_drop_loot/heavy_warfare/New() ..() contents = list( /obj/item/clothing/head/helmet/combat, @@ -99,7 +99,7 @@ var/global/list/datum/supply_drop_loot/supply_drop datum/supply_drop_loot/riot name = "Riot Gear" container = /obj/structure/largecrate -/datum/supply_drop_loot/armour/New() +/datum/supply_drop_loot/riot/New() ..() contents = list( /obj/item/clothing/head/helmet/riot, From 8ac902be0ff1adbb791fff77f91865bd5a51fe8b Mon Sep 17 00:00:00 2001 From: Dhaeleena Date: Tue, 30 May 2017 13:32:52 -0300 Subject: [PATCH 30/84] Several map fixes. Fixes telecoms areas and turret controls remove hidden walls under doors. Adds several tinted windows for medical. Gives cargo airtight flaps. Fixes Bar substation and cargo substation. Fixes N20 filter on atmos. Deletes extra holopad in surface locker room. Fixes access to the secure doors in CE office. Fixes access to locker in Psy room. Maybe more things i cant remember. --- maps/tether/tether-01-surface.dmm | 138 +++++++++++++++--------------- maps/tether/tether-03-station.dmm | 122 +++++++++++++------------- 2 files changed, 134 insertions(+), 126 deletions(-) diff --git a/maps/tether/tether-01-surface.dmm b/maps/tether/tether-01-surface.dmm index efed994990..2390afc101 100644 --- a/maps/tether/tether-01-surface.dmm +++ b/maps/tether/tether-01-surface.dmm @@ -719,6 +719,7 @@ "anQ" = (/obj/structure/sign/directions/evac,/turf/simulated/wall,/area/crew_quarters/locker) "anR" = (/turf/simulated/wall,/area/crew_quarters/locker) "anS" = (/obj/effect/floor_decal/techfloor,/obj/structure/railing{dir = 1},/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/random/junk,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit) +"anT" = (/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Bar"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/substation/bar) "anU" = (/obj/structure/table/standard,/obj/machinery/computer/atmoscontrol/laptop{monitored_alarm_ids = list("isolation_one","isolation_two"); req_one_access = list(47,24,11)},/turf/simulated/floor/tiled,/area/rnd/anomaly_lab) "anV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/rnd/anomaly_lab/containment_one) "anW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/rnd/anomaly_lab/containment_one) @@ -2849,7 +2850,7 @@ "bcP" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/yellow/border,/obj/effect/floor_decal/borderfloor/corner2{dir = 9},/obj/effect/floor_decal/corner/yellow/bordercorner2{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 8},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled,/area/engineering/atmos/hallway) "bcQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 6},/turf/simulated/floor/tiled,/area/engineering/atmos/hallway) "bcR" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos/hallway) -"bcS" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/sortjunction{dir = 4; icon_state = "pipe-j1s"; name = "Drone Fabrication"; sortType = "Drone Fabrication"},/turf/simulated/floor/tiled,/area/engineering/atmos/hallway) +"bcS" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Bar Substation Bypass"},/turf/simulated/floor/plating,/area/maintenance/substation/bar) "bcT" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 10; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/engineering/atmos/hallway) "bcU" = (/turf/simulated/floor/tiled,/area/engineering/atmos/hallway) "bcV" = (/obj/effect/floor_decal/steeldecal/steel_decals4,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/tiled,/area/engineering/atmos/hallway) @@ -3157,7 +3158,7 @@ "biL" = (/obj/structure/railing{dir = 1},/obj/structure/railing{dir = 4},/turf/simulated/open,/area/engineering/atmos) "biM" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos) "biN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos) -"biO" = (/obj/machinery/atmospherics/omni/filter{tag_east = 4; tag_north = 2; tag_south = 1},/turf/simulated/floor/tiled/techmaint,/area/engineering/atmos) +"biO" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/junction{icon_state = "pipe-j1"; dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos/hallway) "biP" = (/obj/machinery/atmospherics/valve/digital/open{dir = 4; icon_state = "map_valve1"; tag = "icon-map_valve1 (WEST)"},/turf/simulated/floor/tiled/techmaint,/area/engineering/atmos) "biQ" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple,/turf/simulated/floor/tiled/techmaint,/area/engineering/atmos) "biR" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 1},/obj/machinery/meter,/turf/simulated/floor/tiled/techmaint,/area/engineering/atmos) @@ -3294,8 +3295,8 @@ "bls" = (/obj/structure/catwalk,/obj/effect/floor_decal/techfloor,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 4},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south) "blt" = (/obj/structure/catwalk,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 9},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south) "blu" = (/obj/structure/table/standard,/obj/effect/floor_decal/techfloor{dir = 10},/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos) -"blv" = (/obj/structure/table/standard,/obj/effect/floor_decal/techfloor,/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos) -"blw" = (/obj/structure/table/standard,/obj/effect/floor_decal/techfloor,/obj/machinery/camera/network/engineering{dir = 1},/obj/item/clothing/glasses/welding,/obj/item/clothing/head/welding{pixel_x = -5; pixel_y = 3},/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos) +"blv" = (/obj/machinery/atmospherics/omni/filter{tag_east = 7; tag_north = 2; tag_south = 1},/turf/simulated/floor/tiled/techmaint,/area/engineering/atmos) +"blw" = (/obj/structure/table/standard,/obj/effect/floor_decal/techfloor,/obj/item/clothing/glasses/welding,/obj/item/clothing/head/welding{pixel_x = -5; pixel_y = 3},/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos) "blx" = (/obj/effect/floor_decal/techfloor,/obj/machinery/space_heater,/obj/machinery/light,/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos) "bly" = (/obj/effect/floor_decal/techfloor,/obj/machinery/suit_cycler/engineering{name = "Atmospherics suit cycler"},/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos) "blz" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/northleft{name = "Atmospherics Hardsuits"; req_access = list(24)},/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/clothing/suit/space/void/atmos/taur,/obj/item/clothing/head/helmet/space/void/atmos,/obj/item/clothing/suit/space/void/atmos,/obj/item/clothing/head/helmet/space/void/atmos,/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos) @@ -3333,11 +3334,11 @@ "bmf" = (/obj/structure/table/standard,/obj/item/weapon/paper_bin,/obj/item/weapon/pen/blue{pixel_x = -3; pixel_y = 2},/turf/simulated/floor/tiled/dark,/area/tcommsat/computer) "bmg" = (/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/tiled/dark,/area/tcommsat/computer) "bmh" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp,/turf/simulated/floor/tiled/dark,/area/tcommsat/computer) -"bmi" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall/r_wall,/area/tcommsat/entrance) +"bmi" = (/obj/effect/floor_decal/techfloor,/obj/machinery/camera/network/engineering{dir = 1},/obj/structure/dispenser{phorontanks = 0},/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos) "bmj" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/tcommsat/entrance) -"bmk" = (/obj/machinery/porta_turret{dir = 6},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/dark,/area/tcommsat/entrance) -"bml" = (/obj/machinery/camera/network/telecom,/turf/simulated/floor/tiled/dark,/area/tcommsat/entrance) -"bmm" = (/obj/machinery/turretid/lethal{ailock = 1; check_synth = 1; control_area = "\improper Telecoms Satellite"; desc = "A firewall prevents AIs from interacting with this device."; name = "Telecoms lethal turret control"; pixel_x = 29; pixel_y = 0; req_access = list(61)},/obj/structure/extinguisher_cabinet{pixel_y = 30},/obj/effect/decal/cleanable/cobweb2,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/dark,/area/tcommsat/entrance) +"bmk" = (/turf/simulated/mineral,/area/space) +"bml" = (/turf/simulated/wall/r_wall,/area/tcomfoyer) +"bmm" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall/r_wall,/area/tcomfoyer) "bmn" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/turf/simulated/floor/tiled,/area/tcommsat/computer) "bmo" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/computer) "bmp" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/computer) @@ -3347,14 +3348,14 @@ "bmt" = (/obj/structure/sign/department/telecoms,/turf/simulated/wall/r_wall,/area/tcommsat/entrance) "bmu" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/effect/decal/cleanable/cobweb,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/tcommsat/entrance) "bmv" = (/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bmw" = (/obj/machinery/turretid/stun{ailock = 1; check_synth = 1; control_area = "\improper Telecoms Foyer"; desc = "A firewall prevents AIs from interacting with this device."; name = "Telecoms Foyer turret control"; pixel_x = 29; pixel_y = 0; req_access = list(61)},/obj/machinery/firealarm{dir = 2; layer = 3.3; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bmx" = (/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bmy" = (/obj/machinery/camera/network/telecom,/obj/structure/sign/electricshock{pixel_y = 32},/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bmz" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bmA" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bmB" = (/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/tcommsat/entrance) -"bmC" = (/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bmD" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled,/area/tcommsat/entrance) +"bmw" = (/obj/machinery/porta_turret{dir = 6},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/dark,/area/tcomfoyer) +"bmx" = (/obj/machinery/camera/network/telecom,/turf/simulated/floor/tiled/dark,/area/tcomfoyer) +"bmy" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/tcomfoyer) +"bmz" = (/obj/machinery/turretid/lethal{ailock = 1; check_synth = 1; control_area = "\improper Telecomms Central Compartment"; desc = "A firewall prevents AIs from interacting with this device."; name = "Telecoms lethal turret control"; pixel_x = 29; pixel_y = 0; req_access = list(61)},/obj/structure/extinguisher_cabinet{pixel_y = 30},/obj/effect/decal/cleanable/cobweb2,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/dark,/area/tcommsat/chamber) +"bmA" = (/obj/machinery/turretid/stun{ailock = 1; check_synth = 1; control_area = "\improper Telecoms Foyer"; desc = "A firewall prevents AIs from interacting with this device."; name = "Telecoms Foyer turret control"; pixel_x = 29; pixel_y = 0; req_access = list(61)},/obj/machinery/firealarm{dir = 2; layer = 3.3; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/tiled,/area/tcomfoyer) +"bmB" = (/obj/machinery/camera/network/telecom,/obj/structure/sign/electricshock{pixel_y = 32},/turf/simulated/floor/tiled,/area/tcomfoyer) +"bmC" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled,/area/tcomfoyer) +"bmD" = (/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/tiled,/area/tcomfoyer) "bmE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/camera/network/telecom{dir = 4},/obj/item/device/radio/intercom{dir = 4; pixel_x = -24},/turf/simulated/floor/tiled,/area/tcommsat/computer) "bmF" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/tiled,/area/tcommsat/computer) "bmG" = (/turf/simulated/floor/tiled,/area/tcommsat/computer) @@ -3368,13 +3369,13 @@ "bmO" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/tcommsat/entrance) "bmP" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/entrance) "bmQ" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/hatch{name = "Telecomms Foyer"; req_one_access = list(61)},/obj/machinery/door/firedoor,/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bmR" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bmS" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bmT" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bmU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/glass{req_access = list(61)},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bmV" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bmW" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bmX" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/tcommsat/entrance) +"bmR" = (/turf/simulated/floor/tiled,/area/tcomfoyer) +"bmS" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled,/area/tcomfoyer) +"bmT" = (/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/tcomfoyer) +"bmU" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled,/area/tcomfoyer) +"bmV" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/tcomfoyer) +"bmW" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled,/area/tcomfoyer) +"bmX" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/tcomfoyer) "bmY" = (/obj/machinery/door/airlock/hatch{name = "Telecoms Control Room"; req_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/computer) "bmZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/computer) "bna" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/computer) @@ -3387,12 +3388,12 @@ "bnh" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/item/device/radio/intercom{dir = 1; pixel_y = -24},/turf/simulated/floor/tiled,/area/tcommsat/entrance) "bni" = (/obj/machinery/camera/network/telecom{dir = 1},/turf/simulated/floor/tiled,/area/tcommsat/entrance) "bnj" = (/obj/machinery/alarm{dir = 1; pixel_y = -25},/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bnk" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bnl" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bnm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/door/firedoor,/obj/structure/cable/green,/turf/simulated/floor/plating,/area/tcommsat/entrance) -"bnn" = (/obj/machinery/porta_turret{dir = 6},/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bno" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -28},/obj/structure/cable/green,/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bnp" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/tiled,/area/tcommsat/entrance) +"bnk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/tcomfoyer) +"bnl" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/tcomfoyer) +"bnm" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/tcomfoyer) +"bnn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/glass{req_access = list(61)},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/tcomfoyer) +"bno" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/tcomfoyer) +"bnp" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/tcomfoyer) "bnq" = (/obj/machinery/light{dir = 8},/obj/structure/table/standard,/obj/item/device/multitool,/obj/structure/sign/electricshock{pixel_x = -32},/turf/simulated/floor/tiled/dark,/area/tcommsat/computer) "bnr" = (/obj/machinery/atmospherics/unary/freezer{dir = 2; icon_state = "freezer_1"; set_temperature = 73; use_power = 1},/turf/simulated/floor/tiled/dark,/area/tcommsat/computer) "bns" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/dark,/area/tcommsat/computer) @@ -3400,16 +3401,16 @@ "bnu" = (/obj/machinery/door/airlock/maintenance_hatch{frequency = 1381; icon_state = "door_locked"; id_tag = "server_access_outer"; locked = 1; name = "Telecoms Server Access"; req_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/chamber) "bnv" = (/obj/machinery/airlock_sensor{frequency = 1381; id_tag = "server_access_sensor"; pixel_x = 12; pixel_y = 25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1381; id_tag = "server_access_pump"},/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller{frequency = 1381; id_tag = "server_access_airlock"; name = "Server Access Airlock"; pixel_x = 0; pixel_y = 25; tag_airpump = "server_access_pump"; tag_chamber_sensor = "server_access_sensor"; tag_exterior_door = "server_access_outer"; tag_exterior_sensor = "server_access_ex_sensor"; tag_interior_door = "server_access_inner"; tag_interior_sensor = "server_access_in_sensor"; tag_secure = 1},/turf/simulated/floor/plating,/area/tcommsat/chamber) "bnw" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/tcommsat/chamber) -"bnx" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/porta_turret{dir = 6},/turf/simulated/floor/tiled/dark,/area/tcommsat/entrance) -"bny" = (/turf/simulated/floor/tiled/dark,/area/tcommsat/entrance) -"bnz" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/tcommsat/entrance) -"bnA" = (/obj/machinery/porta_turret/stationary,/turf/simulated/floor/tiled/dark,/area/tcommsat/entrance) +"bnx" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled,/area/tcomfoyer) +"bny" = (/obj/machinery/porta_turret{dir = 6},/turf/simulated/floor/tiled,/area/tcomfoyer) +"bnz" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -28},/obj/structure/cable/green,/turf/simulated/floor/tiled,/area/tcomfoyer) +"bnA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/door/firedoor,/obj/structure/cable/green,/turf/simulated/floor/plating,/area/tcomfoyer) "bnB" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/black{dir = 6},/turf/simulated/floor/plating,/area/tcommsat/chamber) "bnC" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/manifold/hidden/black,/turf/simulated/floor/plating,/area/tcommsat/chamber) "bnD" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/black{dir = 4},/turf/simulated/floor/plating,/area/tcommsat/chamber) "bnE" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/black{dir = 4},/turf/simulated/floor/plating,/area/tcommsat/chamber) "bnF" = (/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/black{dir = 10},/turf/simulated/floor/plating,/area/tcommsat/chamber) -"bnG" = (/obj/machinery/door/airlock/maintenance_hatch{frequency = 1381; icon_state = "door_locked"; id_tag = "server_access_inner"; locked = 1; name = "Telecoms Server Access"; req_access = list(61)},/turf/simulated/wall/r_wall,/area/tcommsat/chamber) +"bnG" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/tiled,/area/tcomfoyer) "bnH" = (/obj/effect/floor_decal/industrial/warning/dust{dir = 10},/obj/effect/floor_decal/industrial/warning/dust/corner{dir = 4},/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/engineering/atmos/intake) "bnI" = (/obj/effect/floor_decal/industrial/warning/dust,/obj/effect/floor_decal/industrial/warning/dust{dir = 1},/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/engineering/atmos/intake) "bnJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/tcommsat/entrance) @@ -3425,30 +3426,30 @@ "bnT" = (/obj/machinery/airlock_sensor/airlock_interior{frequency = 1381; id_tag = "server_access_in_sensor"; name = "interior sensor"; pixel_y = 25},/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 32},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "bnU" = (/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "bnV" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 32},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"bnW" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance) -"bnX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/molten_item,/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance) -"bnY" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance) -"bnZ" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/ansible,/obj/item/weapon/stock_parts/subspace/ansible,/obj/item/weapon/stock_parts/subspace/ansible,/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance) +"bnW" = (/turf/simulated/floor/tiled/dark,/area/tcomfoyer) +"bnX" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/tcomfoyer) +"bnY" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/porta_turret{dir = 6},/turf/simulated/floor/tiled/dark,/area/tcomfoyer) +"bnZ" = (/obj/machinery/porta_turret/stationary,/turf/simulated/floor/tiled/dark,/area/tcomfoyer) "boa" = (/obj/machinery/atmospherics/pipe/simple/hidden/black,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "bob" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"boc" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/transmitter,/obj/item/weapon/stock_parts/subspace/transmitter,/obj/structure/cable/green{icon_state = "0-4"},/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/super; dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance) -"bod" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance) -"boe" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance) -"bof" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/machinery/firealarm{dir = 4; pixel_x = 26},/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance) +"boc" = (/obj/machinery/door/airlock/maintenance_hatch{frequency = 1381; icon_state = "door_locked"; id_tag = "server_access_inner"; locked = 1; name = "Telecoms Server Access"; req_access = list(61)},/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"bod" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/molten_item,/turf/simulated/floor/tiled/techmaint,/area/tcomsat) +"boe" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/tiled/techmaint,/area/tcomsat) +"bof" = (/turf/simulated/wall/r_wall,/area/tcomsat) "bog" = (/obj/machinery/telecomms/server/presets/supply,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "boh" = (/obj/machinery/telecomms/server/presets/service,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "boi" = (/obj/machinery/telecomms/server/presets/unused,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "boj" = (/obj/machinery/telecomms/server/presets/common,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "bok" = (/obj/machinery/telecomms/server/presets/engineering,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"bol" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/treatment,/obj/item/weapon/stock_parts/subspace/treatment,/obj/item/weapon/stock_parts/subspace/treatment,/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance) -"bom" = (/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance) -"bon" = (/obj/structure/table/rack,/obj/item/weapon/circuitboard/telecomms/processor,/obj/item/weapon/circuitboard/telecomms/processor,/obj/item/weapon/circuitboard/telecomms/receiver,/obj/item/weapon/circuitboard/telecomms/server,/obj/item/weapon/circuitboard/telecomms/server,/obj/item/weapon/circuitboard/telecomms/bus,/obj/item/weapon/circuitboard/telecomms/bus,/obj/item/weapon/circuitboard/telecomms/broadcaster,/obj/item/weapon/circuitboard/telecomms/exonet_node,/obj/machinery/light/small,/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance) +"bol" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled/techmaint,/area/tcomsat) +"bom" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/ansible,/obj/item/weapon/stock_parts/subspace/ansible,/obj/item/weapon/stock_parts/subspace/ansible,/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled/techmaint,/area/tcomsat) +"bon" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/techmaint,/area/tcomsat) "boo" = (/obj/machinery/camera/network/telecom{dir = 4},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "bop" = (/obj/machinery/exonet_node{anchored = 1},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "boq" = (/obj/machinery/camera/network/telecom{dir = 8},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"bor" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/micro_laser,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance) -"bos" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/machinery/camera/network/telecom{dir = 1},/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance) -"bot" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/crystal,/obj/item/weapon/stock_parts/subspace/crystal,/obj/item/weapon/stock_parts/subspace/crystal,/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance) +"bor" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled/techmaint,/area/tcomsat) +"bos" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/transmitter,/obj/item/weapon/stock_parts/subspace/transmitter,/obj/structure/cable/green{icon_state = "0-4"},/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/super; dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor/tiled/techmaint,/area/tcomsat) +"bot" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/machinery/firealarm{dir = 4; pixel_x = 26},/turf/simulated/floor/tiled/techmaint,/area/tcomsat) "bou" = (/obj/structure/sign/nosmoking_2{pixel_x = -32; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "bov" = (/obj/machinery/telecomms/processor/preset_two,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "bow" = (/obj/machinery/telecomms/bus/preset_two,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) @@ -4894,8 +4895,8 @@ "bQg" = (/obj/machinery/atmospherics/pipe/simple/visible/blue{dir = 4},/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation) "bQh" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation) "bQi" = (/obj/machinery/atmospherics/pipe/simple/visible/blue{dir = 10},/obj/structure/railing{dir = 1},/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation) -"bQj" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Cargo Substation Bypass"},/turf/simulated/floor/plating,/area/maintenance/substation/bar) -"bQk" = (/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Surface Civilian"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/substation/bar) +"bQj" = (/turf/simulated/floor/tiled/techmaint,/area/tcomsat) +"bQk" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/treatment,/obj/item/weapon/stock_parts/subspace/treatment,/obj/item/weapon/stock_parts/subspace/treatment,/turf/simulated/floor/tiled/techmaint,/area/tcomsat) "bQl" = (/obj/machinery/power/sensor{name = "Powernet Sensor - Surface Civilian Subgrid"; name_tag = "Surface Civilian Subgrid"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/turf/simulated/floor/plating,/area/maintenance/substation/bar) "bQm" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/locker_room) "bQn" = (/obj/effect/decal/cleanable/dirt,/obj/structure/table/rack,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/obj/random/junk,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/lower/rnd) @@ -5141,6 +5142,7 @@ "bUT" = (/obj/structure/table/glass,/obj/machinery/computer/skills,/turf/simulated/floor/tiled,/area/rnd/rdoffice) "bUU" = (/turf/simulated/floor/tiled,/area/rnd/rdoffice) "bUV" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/mauve/border{dir = 4},/turf/simulated/floor/tiled,/area/rnd/rdoffice) +"bUW" = (/obj/structure/table/rack,/obj/item/weapon/circuitboard/telecomms/processor,/obj/item/weapon/circuitboard/telecomms/processor,/obj/item/weapon/circuitboard/telecomms/receiver,/obj/item/weapon/circuitboard/telecomms/server,/obj/item/weapon/circuitboard/telecomms/server,/obj/item/weapon/circuitboard/telecomms/bus,/obj/item/weapon/circuitboard/telecomms/bus,/obj/item/weapon/circuitboard/telecomms/broadcaster,/obj/item/weapon/circuitboard/telecomms/exonet_node,/obj/machinery/light/small,/turf/simulated/floor/tiled/techmaint,/area/tcomsat) "bUX" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/mauve/border{dir = 8},/obj/structure/bed/chair{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/corner/mauve/bordercorner2{dir = 10},/turf/simulated/floor/tiled/steel_grid,/area/assembly/robotics) "bUY" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/tiled/steel_grid,/area/assembly/robotics) "bUZ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/steel_grid,/area/assembly/robotics) @@ -5361,7 +5363,7 @@ "bZg" = (/obj/structure/railing,/turf/simulated/floor/water/pool,/area/tether/surfacebase/atrium_one) "bZh" = (/obj/structure/railing{dir = 8},/obj/structure/railing,/turf/simulated/floor/water/pool,/area/tether/surfacebase/atrium_one) "bZi" = (/obj/structure/railing,/obj/structure/railing{dir = 4},/turf/simulated/floor/water/pool,/area/tether/surfacebase/atrium_one) -"bZj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled,/area/crew_quarters/locker) +"bZj" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/machinery/camera/network/telecom{dir = 1},/turf/simulated/floor/tiled/techmaint,/area/tcomsat) "bZk" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled/white,/area/crew_quarters/bar) "bZl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"},/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three) "bZm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled,/area/crew_quarters/locker/laundry_arrival) @@ -5400,6 +5402,8 @@ "bZT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/lightgrey/border,/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 1},/obj/effect/floor_decal/borderfloor/corner2,/obj/effect/floor_decal/corner/lightgrey/bordercorner2,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 1},/turf/simulated/floor/tiled,/area/tether/surfacebase/north_stairs_one) "bZU" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals6{dir = 5},/turf/simulated/floor/tiled,/area/tether/surfacebase/north_stairs_three) "bZV" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals6{dir = 10},/turf/simulated/floor/tiled,/area/tether/surfacebase/north_staires_two) +"bZW" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/crystal,/obj/item/weapon/stock_parts/subspace/crystal,/obj/item/weapon/stock_parts/subspace/crystal,/turf/simulated/floor/tiled/techmaint,/area/tcomsat) +"bZX" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/micro_laser,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/turf/simulated/floor/tiled/techmaint,/area/tcomsat) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaacaacaacaacaacaacaacaacaacaacaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -5453,7 +5457,7 @@ aaaaadaadaadaadaadaadaadaadaadaadaagaagamGapIapJapKapLapMapNapOapPapQamGapRapfap aaaaadaadaadaadaadaadaadaadaadaadaagamGamGamGaqsaqtaquaqvaqwaqxaqyaqzamGapRaqAaqBaqCahhaqDaiCaqEaqFaqGaqHaqIapWaagaagaagaagaagaagaagaagaagaagaagakYaYDaqKaqLaqMakYaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagagIaptakuajOalebZdalfalfalfalfalfalfalfbZealeajOajPajQanRaqNaqOaqPaqQaqRanRaqSaqTaqUaoranRaagapCaqVaqWaqWaqWaqXaqWaqnaqoaqpaqqaqpaqpaqpaqpaqqaqpaqYapCaaa aaaaadaadaadaadaadaadaadaadaadaadaagamGaqZaraarbaoZarcaoZardarearfargamGarhariarjarjahharkaiCarlapWarmarnaroapWarparparparparparparparparparparpakYarqalEakYakYakYaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagagIarrakuajOalebZhbZgbZgbZgbZgbZgbZgbZgbZialeajOajParsanRartaoTaoTaruarvanRarwanRanRanRanRaagapCarxaqWaryarzarAaqWaqnaqoaqparBarCarCarCarCarBaqpaqrapCaaa aaaaadaadaadaadaadaadaadaadaadaagaagamGarDarEarbarFarGarHarIarJarKarKarLarMarNarOarParQarRaiCarSarparparTarUarparVarWarXarYarXarXarXarXarXarXarXarZasaasbakYaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagagIascakuajOakvakwakwakwakwakwakwakwakwakwakvajOajPasdaseasfaoTaoTaruasgashasiasjaskaslanRaagapCasmaqWasnasoaspaqWaqnaqoarCarBarCarCarCarCarBarCasqapCaaa -aaaaadaadaadaadaadaadaadaadaadaagaagamGasrassastasuasuasuasuasuasuasvaswasxasyaszasAasBasCasDasEarpbegbdUasHasIasJasKasLasLasLasLasLasLasLasLasLasLasMasNasOasOasPasPasPasPasPasPagIagIaagaagaagaagaagaagaagaagagIasQakuajOajOajOajOajOajOajOajOajOajOajOajOajOasRasSasTasUasVbZjasWasXaoTasYaoTaoWaslanRaagapCaqhasZasZaqWataaqWaqnaqoarCarBarCarCarCarCarBarCaqYatbaaa +aaaaadaadaadaadaadaadaadaadaadaagaagamGasrassastasuasuasuasuasuasuasvaswasxasyaszasAasBasCasDasEarpbegbdUasHasIasJasKasLasLasLasLasLasLasLasLasLasLasMasNasOasOasPasPasPasPasPasPagIagIaagaagaagaagaagaagaagaagagIasQakuajOajOajOajOajOajOajOajOajOajOajOajOajOasRasSasTasUasVasVasWasXaoTasYaoTaoWaslanRaagapCaqhasZasZaqWataaqWaqnaqoarCarBarCarCarCarCarBarCaqYatbaaa aaaaadaadaadaadaadaadaadaadaadaagamGamGamGamGatcaoZaoZatdateatfatgathaoZatiatjatkatlatmatnatoatparpatqatratratratratsasLattatuatvatwatxatxatxatyasLatzatAasOatBatCatCatCatCatCatCagIagIagIaagaagaagaagaagaagaagagIatDatEatFatGatGatGatGatGatHatGatGatGatGatGatGatIatJanRatKaoTaoTatLatMatNatOaoTaoWaslanRaagapCapCapCapCatPataaqWaqnaqoarCarBarCarCarCarCarBarCaqrapCaaa aaaaadaadaadaadaadaadaadaadaagaagamGatQatRatSatTaoZaquaotatQamGatUatVatWamGatXatYarparparparparparpatZauaauaauaauaauaasLaubaucaudaueaufaufaufaugasLbeQauibeSaukatCaulaulaulaulatCaumaunagIagIagIagIauoagIagIagIagIaupakuauqaurausautautauuauvauwauxautautautauyajPajQanRauzauzauAauBauCauDauEauFauGauHanRaagapCauIauIapCauJataaqWaqnaqoarCarBarCarCarCarCarBarCaqrapCaaa aaaaadaadaadaadaadaadaadaadaagaagamGauKaoZaoZatTaoZauLaotauMamGatUauNauOamGauPauQbfxarXarXarXarXauSauTauaauUauVauWauXauYauZavaavbavcavdavdavdaveasLbfzavgasOavhatCaulaulaulaulaulaviavjavkavlavmavnavnavoavpavqavravsavtavuagIagIavvavvavvavvavvavvavwavvavvavxajPajQanRanRanRanRavyavzanRanRanRanRanRavAagIapCavBavBapCavCavDaqWaqnaqoarCarBarCarCarCarCarBarCaqYapCaaa @@ -5592,7 +5596,7 @@ aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJ aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmbabaUSaSUaTjaVtbacbadbaeaVtbafbagbahbaibajbakaYPbalaUYbambanbaobapbaqbarbasaVabatbQnaQMbavbavbavbavaVyaZabawbaxbaybazbaAbaBaVCbaCbaDbaEbaFbaGbaHaVCahvahvahvahvaYCaYCaYCaYCaYCbaIbXXaYCbaKbaLbaMbaNbaObaPaZZbaQaYCaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmbXYaSUaTFbaSaVtbaTbaUbaVaVtbaWbaXbaYbaZbaZbaZbbabbbaUYbbcbanbbdbbebbfbarbbgaVabbhbavbavbavbbibavbavbavbavbavbbjbbkbblbavbavbbmbbnbbobbpbbmbbmbbmbbmbbqaisbbrahvaJJaJJaJJaJJaYCaZUaZVaYCbbsbbtbYaaYtbbvbbwbbxbaQaYCaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaThaSUaSUbbyaVtbbzbbAbbBaVtbbCbbDbbEbbFbbGbbHbbEbbIaUYbbJbbKbbLbbMbbNbbObbPaVabbQbbRbbTbbVbbUbbSbbWbbXbbYbbZbcabcbbccbcdbcebbmbcfbcgbchbcibcjbckbclbcmbcnbcoahvaJJaJJaJJaJJaYCaZUbaIbcpbbsbcqbcrbcsbctbbwaZZbaQaYCaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmbcuaSUaSUbYeaVtbcwbcxbcyaVtaUXbYfaUXaUXaUXaUXaUXaUXaUYbcAbcBbcCbcDbcEbcFbcGaVabcHbcIbcJbcKbcLbcMbcPbcObcNbcQbcRbcSbcTbcUbcVbcWbcXbcYbcZbdabcgbdbbbmajRbdcbddahvaJJaJJaJJaJJaYCbdebYnaYCbbsbcqbdgbdhbdhbdiaZZbaQaYCaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmbcuaSUaSUbYeaVtbcwbcxbcyaVtaUXbYfaUXaUXaUXaUXaUXaUXaUYbcAbcBbcCbcDbcEbcFbcGaVabcHbcIbcJbcKbcLbcMbcPbcObcNbcQbcRbiObcTbcUbcVbcWbcXbcYbcZbdabcgbdbbbmajRbdcbddahvaJJaJJaJJaJJaYCbdebYnaYCbbsbcqbdgbdhbdhbdiaZZbaQaYCaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaThaSUaSUbcvaVtaVtaVtaVtaVtaGmbdjbdkaGmaJJaJJaJJaJJaUYbdlbdlbdmbdnbdmbdlbdlbdlbdobdpbavbavbdtbdvbdWbdvbdtbdrbdsbeFbdYbdZbeJbbobdwbdxbdybdzbdxbdAbbmahvahvahvahvaYCaYCaYCaYCaYCbYraZZaYCbdBbdCbdDaZZbbxaZZaZZbaQaYCaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaThaSUaSUbYtaGmbdFbdGbdHbdIbdJbdKbdLaGmaJJaJJaJJaJJaJJbdlbdMbdNbdObdPbdQbdRbdlbdSbdTbavbYwbdtbeKbeLbeMbdtbdtbdtbfgbdubcUbfhbbmbeabebbecbedbeebefbbmbYzbYybejbejbejbekbejbdebdebdebYAaYCbembenbeoaZZbepbeqberbesaYCaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaThaTqaUSaSUaGmbetaGmaGmaGmaGmbdjbeuaGmaJJaJJaJJaJJaJJbdlbevbewbexbeybezbeAbdlbeBbeCbavbeDbdtbfibflbfobfjbfkbdtbfRbfpbcUbfSbbmbbmbbobbobbobbobbmbbmbeNbeNbeNbeNbeNbeNaYCaYCaYCaYCaYCaYCaYCaYCbeObePbYCbeRbYBaYCaYCaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH @@ -5604,7 +5608,7 @@ aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJ aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmbhrbhsbYLbhubhvbhwbgYbhxbgdaJJbggbhybZCbjEbiCbZDbhBbhDbhEbhFbhGbhGbhGbhGbhGbZEbZGbhGbZFbhcbhcbhcbhZbhNbhNbhJbhObggaJJaJJbeNbeNbeNbeNaJJaJJaJJaJJaJJaJJaJJaJJbYEbgcbYEbYEaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaGmaGmbgdbhPbhQbhRbhSbhTbgdaJJbggbhUbhVbhWbhXbhXbhXbhYbhZbiabibbibbicbicbicbidbhnbhcbhcbhcbhcbhcbhZbihbiibijbikbggaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbgcbilbYEaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJJaJJaJIaJJaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbgdbgdbgdbgdbgdbgdbgdaJJbggbimbhVbZHbiobipbiqbirbhZbisbjwbitbiubiubiubiubiibibbibbibbibbicbivbiwbixbZIbizbggaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbiAbcrbYEaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbggbiCbZJbiEbiFbiGbiHbiIbhZbisbhcbiJbiKbiKbiKbiKbiKbiKbiLbiMbiNbihbiObjgbiQbiRbiSbggaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbiAbcrbYEaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbggbiCbZJbiEbiFbiGbiHbiIbhZbisbhcbiJbiKbiKbiKbiKbiKbiKbiLbiMbiNbihblvbjgbiQbiRbiSbggaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbiAbcrbYEaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbggbiTbiUbiIbiVbiWbiEbiPbiXbiYbiZbjabjbbjbbjbbjbbjbbjbbjcbjdbjebhmbZKbjgbjgbjibiSbggaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbYQbjkbYEaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbggbiTbjlbjmbjnbjobjpbjpbjqbjrbjsbjabjbbjbbjbbjbbjbbjbbjtbigbjubjvbhZbjwbiIbjxbjybggaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbYRaZZbYEaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJJaJJaJJaJJaJJaJJaJJbggbiTbiUbiIbiVbiWbjBbiPbjCbjDbjsbjabjbbjbbjbbjbbjbbjbbjcbhZbjubjvbhZbhcbiIbjEbjFbggaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbYSbjHbYEaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH @@ -5614,21 +5618,21 @@ aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJ aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJJaJJaJJaJJaJJaJJaJJbggbktbkubjxbkvbkvbkvbkwbhcbjYbhcbkxbiZbiZbiZbiZbiZbiZbZtbhKbkzbkAbkBbkCbkBbkubkDbggaJJaJJaJJaJJaJJaJJbYEaZZbYUbeqbYTbkGaZZbYEbkHbYEbgcbYEaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJJaJJaJJaJJaJJbggbkIbhcbhcbhcbhcbhcbhcbhcbjYbhcbkJbkKbkLbkMbkNbkObkPbkQbkRbkSbYVbYVbkTbYVbYVbYVbYVbYEbYEbYEbYEbYEbYEbYEbkUbkVbkWbkWbkXbkYbYEbYEbYEbgcbYEaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJJaJJaJJaJJaJJbggbkZbhcbhcbhcbhcbhcbhcbhcblablbbkJbkKbkLbkMbkNbkObkPbkQbkRblcbYVbYWbleblfblgblgblhbliblgbYXblkbllblmblmblnbloblpblqblrblsblmblmblmbltbYEaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJJaJJaJJaJJaJJbggblublvblwblxblyblzblAblBblCblDblEbkKbkLbkMblFbkObkPbkQblGblHbYVaZZblIaZZaZZaZZaZZaZZblJblKaZZaZZbYEbYEbYEbYEbYEbYEbYEbYEbYEbYEbYEbYEbYEaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJJaJJaJJaJJaJJbggblublwbmiblxblyblzblAblBblCblDblEbkKbkLbkMblFbkObkPbkQblGblHbYVaZZblIaZZaZZaZZaZZaZZblJblKaZZaZZbYEbYEbYEbYEbYEbYEbYEbYEbYEbYEbYEbYEbYEaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJJaJJaJJbggbggbggbggbggbggbggbggbggbggbggbggbggbggbggbggbggbggbggbggbggbYEaZZblLbYEbYEbYEbYEbYZblNbYYbmabmabmaaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEaZZblQbYEaJJaJJaJJbmablRblSblTblUbmaaJJaJJaJJblVblVblVblVblVblVblVblVaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEaZZbZabYEaJJaJJaJJbmablWblXblYblZbmabmbbmbbmbblVbmcbmdbmebmfbmgbmhblVaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEaZZblQbmbbmbbmbbmbbmbbmbbmbbmibmjbmbbmkbmlbmmblVbmnbmobmpbmobmqbmrblVaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEaZZbZbbmtbmubmvbmwbmbbmxbmybmzbmAbmBbmCbmCbmDblVbmEbmFbmGbmHbmIbmJblVaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbmKbmLbmMbmNbmObmPbmQbmRbmPbmSbmTbmUbmVbmWbmXbmYbmZbnabnbbncbndbnebnebnebneaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbnfbngbmjbnhbnibnjbmbbnkbmCbnlbmCbnmbnnbnobnpblVbnqbnrbnsbmGbntbnubnvbnwbneaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbYEbYEbmbbmbbmbbmbbmbbnxbnybnzbnAbnebnebnebnebnebnBbnCbnDbnEbnFbnebnebnGbnebneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJbmkaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEaZZbZabYEaJJaJJaJJbmablWblXblYblZbmabmlbmlbmlblVbmcbmdbmebmfbmgbmhblVaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEaZZblQbmbbmbbmbbmbbmbbmlbmlbmmbmybmlbmwbmxbmzblVbmnbmobmpbmobmqbmrblVaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEaZZbZbbmtbmubmvbmAbmlbmDbmBbmCbmSbmTbmRbmRbmUblVbmEbmFbmGbmHbmIbmJblVaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbmKbmLbmMbmNbmObmPbmQbmXbmVbmWbnmbnnbnkbnlbnobmYbmZbnabnbbncbndbnebnebnebneaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbnfbngbmjbnhbnibnjbmbbnxbmRbnpbmRbnAbnybnzbnGblVbnqbnrbnsbmGbntbnubnvbnwbneaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbYEbYEbmbbmbbmbbmbbmbbnYbnWbnXbnZbnebnebnebnebnebnBbnCbnDbnEbnFbnebnebocbnebneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbnHbnIbnIbnIbnIbnIbnIbnIbnIbnIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbmbbnJbnJbnKbnJbnebnLbnLbnLbnMbnNbnObnPbnQbnRbnSbnTbnUbnVbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbmbbnWbnXbnYbnZbnebnLbnUbnUbnUboabnUbobbnUboabnUbnUbnUbnLbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbmbbocbodboebofbnebnLbogbohboiboabnUbnLbnUboabnUbojbokbnLbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbmbbolbombombonbneboobnUbnUbnUboabnUbopbnUboabnUbnUbnUboqbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbmbborbosbotbmbbneboubovbowboxbnRboybozboAbnRboBboCboDboEbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbmbbmbbmbbmbbmbbnebnLboFboGbnUboabnUbnLbnUboabnUboHboIbnLbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbofbolbodboebombnebnLbnUbnUbnUboabnUbobbnUboabnUbnUbnUbnLbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbofbosbonborbotbnebnLbogbohboiboabnUbnLbnUboabnUbojbokbnLbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbofbQkbQjbQjbUWbneboobnUbnUbnUboabnUbopbnUboabnUbnUbnUboqbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbofbZXbZjbZWbofbneboubovbowboxbnRboybozboAbnRboBboCboDboEbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbofbofbofbofbofbnebnLboFboGbnUboabnUbnLbnUboabnUboHboIbnLbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbneboJbnUbnUbnUboabnUboKbnUboabnUbnUbnUbnLbneaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbnebnLboLboMboNboObnUboPbnUboQboRboSboTbnLbneaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbnebnQboUbnLboVbnLbnLboWbnLbnLboXbnLboUbnQbneaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH @@ -5714,7 +5718,7 @@ boYboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabp boYboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbNUbMAbZSbNmbNmbNnaYUbNVbNWbNXbNYbbgaUYbNZbNZbNZbKSbOabNZbKSbMQbJVbObbMlbOcbOdbOebOfbOgbOUbLIbNEbOibOibOibOibOibOjbOkbOlbOmbOnbOobOpbOqbOrbKJbOsbIZbKLbJGbOtbOtbJobHebHebHebIlbIQbIlbHebHebHebHebOubLobJLbpabpaboZboZboZboZboZboZboZboZboZboZboY boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabOvaUYbOwbMAbZSbOxbOybOzbZobOBbOCbNqbODbOEaUYbOFbOGbOHbOIbOJbOKbOLbOMbJVbONbMlbOObOPbOQbORbOSbMlbOTbRkbRgbOWbOXbOYbOibKBbOZbKHbPabNdbMsbMtbPbbPcbPdbPebIZbKLbJGbPfbPgbPhbLVbLVbLVbLWbZRbIlbHebHebHebHebIlbKmbJLbpaboZboZboZboZboZboZboZboZboZboZboZboY boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbPibMAbPjaYibPkbPlbPmbPlbPnbPobPpbPqbPrbPsbPtbPubPvbPwbPxbPxbJdbZpbPzbMlbOObPAbOQbPBbPCbMlbLIbPDbPEbPFbPGbPHbOibXZbOZbKHbPJbNdbMsbMtbLObPKbNfbPLbIZbKLbJGbPgbPgbPMbMwbMwbMwbMxbIPbIlbHebHebHebHebIlbIQbJLbpaboZboZboZboZboZboZboZboZboZboZboZboY -boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbPNbPOaYiaYibNqaYibPPbPQbPRbPSbPTbPUaUYbPVbPWbPXbOIbPYbPZbQabQbbQcbQdbMlbQebQfbQgbQhbQibYbbLIbPDbOibQjbQkbQlbYdbYcbQobKHbMqbNdbMsbMtbLObQpbKJbLnbIZbKLbJGbPgbPgbQqbHebHebHebIlbKmbIlbHebHebHebHebIlbIQbJLbpaboZboZboZboZboZboZboZboZboZboZboZboY +boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbPNbPOaYiaYibNqaYibPPbPQbPRbPSbPTbPUaUYbPVbPWbPXbOIbPYbPZbQabQbbQcbQdbMlbQebQfbQgbQhbQibYbbLIbPDbOibcSanTbQlbYdbYcbQobKHbMqbNdbMsbMtbLObQpbKJbLnbIZbKLbJGbPgbPgbQqbHebHebHebIlbKmbIlbHebHebHebHebIlbIQbJLbpaboZboZboZboZboZboZboZboZboZboZboZboY boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbQrbQsaYiaYibNqaYibQtbQubQubQvbQwbQxbQubQubQybQybQybQybQybQybQzbQAbQBbMlbQCbQDbQEbQDbQFbMlbYlbPDbOibOibOibOibOibQHbYmbKHbQJbLNbLObLObLPbLQbKJbLnbIZbKLbJGbQKbQKbJobHebHebHebHebHebHebHebQLbQMbQNbQObLobJLbpaboZboZboZboZboZboZboZboZboZboZboZboY boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYaUYaUYbQPbQsaYibQQbQRaYibQSbQubQTbQUbQVbQWbQXbQubQYbQZbRabRbbRcbQybRdbQcbQdbMlbRebRebRfbRebRebMlbYpbPDbKBbRhbKBbRibKBbRjbYqbKHbRlbRmbRnbRobRpbRqbKHbKKbIZbRrbFQbRsbHobRtbHebHebHebHebHebHebHebFQbFQbFQbFQbFQbFQbpaboZboZboZboZboZboZboZboZboZboZboZboY boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbRubRvbRwbRxbRybRzbRAaYibRBbRCbRDbREbRFbRGbRHbQubRIbRJbRKbRLbRMbQybRNbQcbQdbRObMlbMlbMlbMlbMlbRPbKBbRQbKBbRRbKBbKBbKBbRSbKBbRTbKHbKJbKJbKJbKJbKHbKHbLnbRUbRVbFQbRWbHebZqbRYbRZbRZbRZbRZbRZbSabFQbSbbScbSdbFQbpabpaboZboZboZboZboZboZboZboZboZboZboZboY diff --git a/maps/tether/tether-03-station.dmm b/maps/tether/tether-03-station.dmm index 54011cbb4c..fefc14a77c 100644 --- a/maps/tether/tether-03-station.dmm +++ b/maps/tether/tether-03-station.dmm @@ -56,7 +56,7 @@ "abd" = (/obj/structure/bed/chair/comfy/black{dir = 8},/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/wood,/area/crew_quarters/sleep/Dorm_8) "abe" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/box/donkpockets,/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/Dorm_8) "abf" = (/obj/structure/table/woodentable,/obj/machinery/microwave,/turf/simulated/floor/wood,/area/crew_quarters/sleep/Dorm_8) -"abg" = (/obj/structure/sink{pixel_y = 22},/obj/item/frame/mirror{layer = 2.9; pixel_y = 32},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/Dorm_8) +"abg" = (/obj/structure/sink{pixel_y = 22},/obj/structure/mirror{dir = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/Dorm_8) "abh" = (/obj/structure/toilet{pixel_y = 10},/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/Dorm_8) "abi" = (/obj/structure/closet/secure_closet/engineering_personal,/turf/simulated/floor/tiled/yellow,/area/engineering/locker_room) "abj" = (/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/tiled/yellow,/area/engineering/locker_room) @@ -124,7 +124,7 @@ "act" = (/obj/structure/bed/chair/comfy/black{dir = 8},/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/wood,/area/crew_quarters/sleep/Dorm_6) "acu" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/box/donkpockets,/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/Dorm_6) "acv" = (/obj/structure/table/woodentable,/obj/machinery/microwave,/turf/simulated/floor/wood,/area/crew_quarters/sleep/Dorm_6) -"acw" = (/obj/structure/sink{pixel_y = 22},/obj/item/frame/mirror{layer = 2.9; pixel_y = 32},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/Dorm_6) +"acw" = (/obj/structure/sink{pixel_y = 22},/obj/structure/mirror{dir = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/Dorm_6) "acx" = (/obj/structure/toilet{pixel_y = 10},/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/Dorm_6) "acy" = (/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 26},/obj/machinery/camera/network/engineering{dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos/backup) "acz" = (/obj/machinery/atmospherics/pipe/tank/nitrogen{dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos/backup) @@ -137,7 +137,7 @@ "acG" = (/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos/backup) "acH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/orange/border{dir = 9},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/corner/orange/bordercorner2{dir = 10},/obj/item/device/radio/intercom{pixel_y = 24; req_access = list()},/turf/simulated/floor/tiled,/area/engineering/aft_hallway) "acI" = (/obj/machinery/atm{pixel_y = 30},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/orange/border{dir = 1},/turf/simulated/floor/tiled,/area/engineering/aft_hallway) -"acJ" = (/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/red/border{dir = 9},/obj/machinery/camera/network/security{dir = 4},/obj/structure/table/steel,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/item/device/retail_scanner/security,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = 30},/obj/machinery/firealarm{dir = 8; pixel_x = -24; pixel_y = 0},/turf/simulated/floor/tiled/dark,/area/security/warden) +"acJ" = (/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/red/border{dir = 9},/obj/machinery/camera/network/security{dir = 4},/obj/structure/table/steel,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/item/device/retail_scanner/security,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = 30},/obj/machinery/firealarm{dir = 8; pixel_x = -24; pixel_y = 0},/obj/item/weapon/hand_labeler,/turf/simulated/floor/tiled/dark,/area/security/warden) "acK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/yellow,/area/engineering/locker_room) "acL" = (/obj/structure/closet/wardrobe/atmospherics_yellow,/turf/simulated/floor/tiled/yellow,/area/engineering/locker_room) "acM" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/sleep/engi_wash) @@ -254,7 +254,7 @@ "aeT" = (/obj/structure/bed/chair/comfy/black{dir = 8},/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/wood,/area/crew_quarters/sleep/Dorm_4) "aeU" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/box/donkpockets,/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/wood,/area/crew_quarters/sleep/Dorm_4) "aeV" = (/obj/structure/table/woodentable,/obj/machinery/microwave,/turf/simulated/floor/wood,/area/crew_quarters/sleep/Dorm_4) -"aeW" = (/obj/structure/sink{pixel_y = 22},/obj/item/frame/mirror{layer = 2.9; pixel_y = 32},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/Dorm_4) +"aeW" = (/obj/structure/mirror{pixel_x = 30},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/tiled/freezer,/area/security/brig/bathroom) "aeX" = (/obj/structure/toilet{pixel_y = 10},/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/Dorm_4) "aeY" = (/obj/structure/sign/department/atmos,/turf/simulated/wall/r_wall,/area/engineering/atmos/backup) "aeZ" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/orange/border{dir = 8},/turf/simulated/floor/tiled,/area/engineering/aft_hallway) @@ -269,7 +269,7 @@ "afi" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/turf/simulated/floor/tiled,/area/engineering/aft_hallway) "afj" = (/obj/structure/cable/green{icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/orange/border{dir = 1},/obj/effect/floor_decal/borderfloor/corner2{dir = 4},/obj/effect/floor_decal/corner/orange/bordercorner2{dir = 4},/turf/simulated/floor/tiled,/area/engineering/aft_hallway) "afk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/orange/border{dir = 1},/turf/simulated/floor/tiled,/area/engineering/aft_hallway) -"afl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/orange/border{dir = 5},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/orange/bordercorner2{dir = 5},/turf/simulated/floor/tiled,/area/engineering/aft_hallway) +"afl" = (/obj/structure/sink{pixel_y = 22},/obj/structure/mirror{dir = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/Dorm_4) "afm" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/engineering/workshop) "afn" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/engineering/workshop) "afo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/engineering/workshop) @@ -362,7 +362,7 @@ "agX" = (/obj/structure/bed/chair/comfy/black{dir = 8},/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/wood,/area/crew_quarters/sleep/Dorm_2) "agY" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/box/donkpockets,/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/wood,/area/crew_quarters/sleep/Dorm_2) "agZ" = (/obj/structure/table/woodentable,/obj/machinery/microwave,/turf/simulated/floor/wood,/area/crew_quarters/sleep/Dorm_2) -"aha" = (/obj/structure/sink{pixel_y = 22},/obj/item/frame/mirror{layer = 2.9; pixel_y = 32},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/Dorm_2) +"aha" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/orange/border{dir = 5},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/orange/bordercorner2{dir = 5},/obj/machinery/recharge_station,/turf/simulated/floor/tiled,/area/engineering/aft_hallway) "ahb" = (/obj/structure/toilet{pixel_y = 10},/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/Dorm_2) "ahc" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/white/border{dir = 8},/obj/item/device/radio/intercom{dir = 4; pixel_x = -24},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_laundry) "ahd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_laundry) @@ -1158,7 +1158,7 @@ "awn" = (/turf/simulated/wall/r_wall,/area/bridge) "awo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/bridge) "awp" = (/obj/structure/sign/department/bridge,/turf/simulated/wall/r_wall,/area/bridge_hallway) -"awq" = (/obj/structure/table/marble,/obj/item/weapon/hand_labeler,/obj/item/weapon/reagent_containers/food/condiment/small/sugar,/obj/machinery/floor_light/prebuilt{on = 1},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for shutters."; id = "cafe"; name = "Cafe Shutters"; pixel_x = -10; pixel_y = 10; req_access = list(); req_one_access = list(25)},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_dinning) +"awq" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower/security,/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/freezer,/area/security/brig/bathroom) "awr" = (/obj/structure/sign/nanotrasen,/turf/simulated/wall/r_wall,/area/bridge_hallway) "aws" = (/obj/structure/table/marble,/obj/machinery/cash_register/civilian{dir = 1},/obj/machinery/door/blast/shutters{dir = 2; id = "cafe"; layer = 3.1; name = "Cafe Shutters"},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_dinning) "awt" = (/turf/simulated/wall/r_wall,/area/bridge_hallway) @@ -1380,7 +1380,7 @@ "aAB" = (/obj/structure/toilet{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/toilet) "aAC" = (/obj/machinery/door/airlock{name = "Unit 1"},/turf/simulated/floor/tiled/white,/area/crew_quarters/toilet) "aAD" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/toilet) -"aAE" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/item/frame/mirror{pixel_x = 30},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/toilet) +"aAE" = (/obj/structure/closet{name = "Prisoner's Locker"},/obj/item/clothing/suit/storage/apron,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/steel_dirty,/area/security/brig) "aAF" = (/obj/structure/reagent_dispensers/water_cooler/full,/obj/machinery/computer/guestpass{pixel_y = 32},/turf/simulated/floor/tiled,/area/hallway/station/docks) "aAG" = (/obj/structure/flora/pottedplant{icon_state = "plant-22"},/obj/machinery/status_display{pixel_y = 30},/turf/simulated/floor/tiled,/area/hallway/station/docks) "aAH" = (/obj/structure/bed/chair,/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/tiled,/area/hallway/station/docks) @@ -1436,7 +1436,7 @@ "aBF" = (/obj/structure/bed/chair/comfy/brown,/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet,/area/library) "aBG" = (/obj/machinery/door/airlock{name = "Unit 2"},/turf/simulated/floor/tiled/white,/area/crew_quarters/toilet) "aBH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/crew_quarters/toilet) -"aBI" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/item/frame/mirror{pixel_x = 30},/turf/simulated/floor/tiled/white,/area/crew_quarters/toilet) +"aBI" = (/obj/structure/mopbucket,/obj/item/weapon/mop,/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor/tiled/freezer,/area/security/brig/bathroom) "aBJ" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/obj/machinery/camera/network/northern_star{dir = 4},/turf/simulated/floor/tiled,/area/hallway/station/docks) "aBK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/hallway/station/docks) "aBL" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/hallway/station/docks) @@ -1496,7 +1496,7 @@ "aCN" = (/obj/structure/bookcase{name = "bookcase (Religious)"},/turf/simulated/floor/wood,/area/library) "aCO" = (/obj/structure/bed/chair/comfy/brown{dir = 1},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet,/area/library) "aCP" = (/obj/structure/bed/chair/comfy/brown{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet,/area/library) -"aCQ" = (/obj/structure/bookcase{name = "bookcase (Religious)"},/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/wood,/area/library) +"aCQ" = (/obj/structure/sink{pixel_y = 22},/obj/structure/mirror{dir = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/Dorm_2) "aCR" = (/obj/machinery/recharge_station,/obj/machinery/light/small{dir = 8; pixel_x = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/toilet) "aCS" = (/obj/machinery/door/airlock{name = "Unit 3"},/turf/simulated/floor/tiled/white,/area/crew_quarters/toilet) "aCT" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals7,/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 4},/obj/machinery/firealarm{dir = 2; layer = 3.3; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_dinning) @@ -1530,7 +1530,7 @@ "aDv" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/tether/station/dock_two) "aDw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/tether/station/dock_two) "aDx" = (/turf/simulated/floor/tiled,/area/tether/station/dock_two) -"aDy" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor/tiled/white,/area/crew_quarters/captain) +"aDy" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor{dir = 1; id = "mining_outbound"},/turf/simulated/floor/plating,/area/mine/explored/upper_level) "aDz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/white,/area/crew_quarters/captain) "aDA" = (/obj/structure/toilet{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/tiled/white,/area/crew_quarters/captain) "aDB" = (/obj/machinery/computer/communications,/turf/simulated/floor/wood,/area/crew_quarters/captain) @@ -1976,7 +1976,7 @@ "aLZ" = (/obj/machinery/seed_storage/garden,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/camera/network/security{dir = 8},/turf/simulated/floor/tiled,/area/security/brig) "aMa" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower/security,/turf/simulated/floor/tiled/freezer,/area/security/brig/bathroom) "aMb" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled/freezer,/area/security/brig/bathroom) -"aMc" = (/obj/structure/mirror{pixel_x = 30},/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/freezer,/area/security/brig/bathroom) +"aMc" = (/obj/machinery/telecomms/relay/preset/tether/station_low,/obj/effect/floor_decal/techfloor/orange{dir = 9},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/brigdoor/westleft{req_access = list(56); req_one_access = list(19)},/turf/simulated/floor/tiled/techfloor,/area/crew_quarters/heads/chief) "aMd" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/station/sec_lower) "aMe" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue) "aMf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue) @@ -1995,7 +1995,7 @@ "aMs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/steel_dirty,/area/security/brig) "aMt" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor/tiled/steel_dirty,/area/security/brig) "aMu" = (/obj/structure/table/steel,/obj/item/clothing/head/greenbandana,/obj/item/weapon/material/minihoe,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/steel_dirty,/area/security/brig) -"aMv" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower/security,/turf/simulated/floor/tiled/freezer,/area/security/brig/bathroom) +"aMv" = (/obj/effect/floor_decal/techfloor/orange{dir = 8},/obj/machinery/telecomms/relay/preset/tether/station_mid,/obj/machinery/door/window/brigdoor/westleft{req_access = list(56); req_one_access = list(19)},/turf/simulated/floor/tiled/techfloor,/area/crew_quarters/heads/chief) "aMw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/freezer,/area/security/brig/bathroom) "aMx" = (/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/tiled/freezer,/area/security/brig/bathroom) "aMy" = (/turf/simulated/wall,/area/chapel/office) @@ -2042,7 +2042,7 @@ "aNn" = (/obj/item/weapon/pen/crayon,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/tiled/dark,/area/security/brig) "aNo" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/tiled/dark,/area/security/brig) "aNp" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/orange,/obj/item/device/taperecorder{pixel_x = -4; pixel_y = 2},/turf/simulated/floor/tiled/steel_dirty,/area/security/brig) -"aNq" = (/obj/structure/closet{name = "Prisoner's Locker"},/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe,/obj/item/clothing/suit/storage/apron,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/steel_dirty,/area/security/brig) +"aNq" = (/obj/effect/floor_decal/techfloor/orange{dir = 10},/obj/structure/window/reinforced,/obj/machinery/telecomms/relay/preset/tether/station_high,/obj/machinery/door/window/brigdoor/westleft{req_access = list(56); req_one_access = list(19)},/turf/simulated/floor/tiled/techfloor,/area/crew_quarters/heads/chief) "aNr" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/orange,/obj/item/weapon/deck/cards,/turf/simulated/floor/tiled/steel_dirty,/area/security/brig) "aNs" = (/obj/structure/closet{name = "Prisoner's Locker"},/obj/item/clothing/head/soft/orange,/obj/item/clothing/shoes/sandal,/obj/machinery/light,/turf/simulated/floor/tiled/steel_dirty,/area/security/brig) "aNt" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/orange,/turf/simulated/floor/tiled/steel_dirty,/area/security/brig) @@ -2050,7 +2050,7 @@ "aNv" = (/obj/machinery/recharge_station,/turf/simulated/floor/tiled/steel_dirty,/area/security/brig) "aNw" = (/obj/structure/toilet{dir = 1},/obj/machinery/light/small,/turf/simulated/floor/tiled/freezer,/area/security/brig/bathroom) "aNx" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled/freezer,/area/security/brig/bathroom) -"aNy" = (/obj/structure/mopbucket,/obj/item/weapon/mop,/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/floor/tiled/freezer,/area/security/brig/bathroom) +"aNy" = (/obj/machinery/conveyor{dir = 1; id = "packageSort1"},/obj/structure/plasticflaps/mining,/turf/simulated/floor,/area/quartermaster/delivery) "aNz" = (/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/lino,/area/chapel/office) "aNA" = (/obj/structure/bed/chair,/obj/effect/landmark/start{name = "Chaplain"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/lino,/area/chapel/office) "aNB" = (/obj/structure/cable/pink{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/lino,/area/chapel/office) @@ -2267,7 +2267,7 @@ "aRE" = (/obj/structure/table/reinforced,/obj/item/weapon/stamp/ce,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/flame/lighter/zippo,/obj/item/device/megaphone,/obj/item/weapon/folder/yellow_ce,/obj/item/weapon/pen/multi,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/carpet/oracarpet,/area/crew_quarters/heads/chief) "aRF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/carpet/oracarpet,/area/crew_quarters/heads/chief) "aRG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/carpet/oracarpet,/area/crew_quarters/heads/chief) -"aRH" = (/obj/machinery/telecomms/relay/preset/tether/station_low,/obj/effect/floor_decal/techfloor/orange{dir = 9},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/brigdoor/westleft,/turf/simulated/floor/tiled/techfloor,/area/crew_quarters/heads/chief) +"aRH" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 8},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_dinning) "aRI" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/red/border{dir = 8},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/tiled,/area/security/security_processing) "aRJ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/security/security_processing) "aRK" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/disposalpipe/junction,/turf/simulated/floor/tiled,/area/security/security_processing) @@ -2299,7 +2299,7 @@ "aSk" = (/obj/structure/table/reinforced,/obj/machinery/button/remote/blast_door{id = "atmoslockdown"; name = "Atmospherics Lockdown"; pixel_x = 6; pixel_y = -12; req_access = list(10)},/obj/machinery/button/remote/blast_door{id = "englockdown"; name = "Engineering Lockdown"; pixel_x = -6; pixel_y = -12; req_access = list(10)},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/item/device/radio{pixel_x = -4},/turf/simulated/floor/carpet/oracarpet,/area/crew_quarters/heads/chief) "aSl" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet/oracarpet,/area/crew_quarters/heads/chief) "aSm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/carpet/oracarpet,/area/crew_quarters/heads/chief) -"aSn" = (/obj/effect/floor_decal/techfloor/orange{dir = 8},/obj/machinery/door/window/brigdoor/westleft,/obj/machinery/telecomms/relay/preset/tether/station_mid,/turf/simulated/floor/tiled/techfloor,/area/crew_quarters/heads/chief) +"aSn" = (/obj/structure/table/marble,/obj/item/weapon/hand_labeler,/obj/item/weapon/reagent_containers/food/condiment/small/sugar,/obj/machinery/floor_light/prebuilt{on = 1},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for shutters."; id = "cafe"; name = "Cafe Shutters"; pixel_x = -10; pixel_y = 10; req_access = list(); req_one_access = list(25)},/obj/item/weapon/reagent_containers/glass/rag,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_dinning) "aSo" = (/obj/structure/table/steel,/obj/item/device/taperecorder,/obj/effect/floor_decal/borderfloor{dir = 10},/obj/effect/floor_decal/corner/red/border{dir = 10},/turf/simulated/floor/tiled,/area/security/security_processing) "aSp" = (/obj/structure/table/steel,/obj/item/weapon/hand_labeler,/obj/item/weapon/folder/red{pixel_x = 2; pixel_y = 4},/obj/item/weapon/folder/red,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/red/border,/turf/simulated/floor/tiled,/area/security/security_processing) "aSq" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/red/border,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled,/area/security/security_processing) @@ -2332,7 +2332,7 @@ "aSR" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/clothing/glasses/meson{pixel_y = 4},/obj/item/clothing/glasses/welding/superior,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/book/manual/supermatter_engine,/turf/simulated/floor/carpet/oracarpet,/area/crew_quarters/heads/chief) "aSS" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/carpet/oracarpet,/area/crew_quarters/heads/chief) "aST" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet/oracarpet,/area/crew_quarters/heads/chief) -"aSU" = (/obj/effect/floor_decal/techfloor/orange{dir = 10},/obj/structure/window/reinforced,/obj/machinery/door/window/brigdoor/westleft,/obj/machinery/telecomms/relay/preset/tether/station_high,/turf/simulated/floor/tiled/techfloor,/area/crew_quarters/heads/chief) +"aSU" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access = list(13)},/turf/simulated/floor/tiled,/area/quartermaster/storage) "aSV" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/multi_tile/metal/mait{name = "Security Processing"; req_access = list(1); req_one_access = list(12)},/obj/structure/disposalpipe/segment,/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "security_lockdown"; name = "Security Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/security/security_processing) "aSW" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "security_lockdown"; name = "Security Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/security/security_processing) "aSX" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/station/sec_lower) @@ -3950,7 +3950,7 @@ "bxX" = (/turf/simulated/floor,/area/maintenance/station/sec_upper) "bxY" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/maintenance/station/sec_upper) "bxZ" = (/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/medical/reception) -"bya" = (/obj/structure/plasticflaps{opacity = 0},/obj/machinery/conveyor{dir = 1; id = "packageSort1"},/turf/simulated/floor,/area/quartermaster/delivery) +"bya" = (/obj/structure/cable/green,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -32},/obj/structure/closet/secure_closet/chemical{req_access = list(64); req_one_access = list(5)},/turf/simulated/floor/carpet/blue,/area/medical/psych) "byb" = (/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 9},/obj/effect/floor_decal/corner/paleblue/bordercorner2{dir = 9},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/tiled/white,/area/medical/reception) "byc" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 1; name = "Sorting Office"; sortType = "Sorting Office"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/floor_decal/borderfloor/corner{dir = 4},/obj/effect/floor_decal/corner/brown/bordercorner{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/delivery) "byd" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 28},/obj/structure/cable/green{icon_state = "0-8"},/obj/machinery/camera/network/cargo,/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/turf/simulated/floor/tiled,/area/quartermaster/delivery) @@ -4539,8 +4539,8 @@ "bJo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/quartermaster/storage) "bJp" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/storage) "bJq" = (/obj/effect/floor_decal/industrial/warning{dir = 5},/turf/simulated/floor/tiled,/area/quartermaster/storage) -"bJr" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access = list(13)},/turf/simulated/floor/plating,/area/quartermaster/storage) -"bJs" = (/turf/simulated/floor,/area/quartermaster/storage) +"bJr" = (/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Bar"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/maintenance/substation/cargo) +"bJs" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Bar Substation Bypass"},/turf/simulated/floor,/area/maintenance/substation/cargo) "bJt" = (/obj/structure/closet/wardrobe/black,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/newscaster{layer = 3.3; pixel_x = -27; pixel_y = 0},/obj/effect/floor_decal/corner_steel_grid{dir = 6},/turf/simulated/floor/tiled,/area/teleporter/departing) "bJu" = (/obj/effect/floor_decal/techfloor/orange{dir = 8},/turf/simulated/floor/tiled/techfloor,/area/teleporter/departing) "bJv" = (/obj/machinery/cryopod/robot/door/gateway,/turf/simulated/floor/tiled/techfloor,/area/teleporter/departing) @@ -4598,7 +4598,7 @@ "bKv" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/camera/network/medbay{dir = 4},/obj/effect/floor_decal/corner/paleblue{dir = 9},/obj/effect/floor_decal/corner/paleblue{dir = 6},/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway) "bKw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/steeldecal/steel_decals6{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway) "bKx" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/steeldecal/steel_decals6,/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway) -"bKy" = (/obj/structure/cable/green,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -32},/obj/structure/closet/secure_closet/chemical,/turf/simulated/floor/carpet/blue,/area/medical/psych) +"bKy" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/light{dir = 1},/obj/structure/mirror{dir = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/toilet) "bKz" = (/obj/machinery/camera/network/medbay{dir = 1},/turf/simulated/floor/carpet/blue,/area/medical/psych) "bKA" = (/obj/machinery/light,/turf/simulated/floor/carpet/blue,/area/medical/psych) "bKB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/carpet/blue,/area/medical/psych) @@ -4737,8 +4737,8 @@ "bNe" = (/obj/machinery/computer/operating{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/surgery) "bNf" = (/obj/machinery/optable,/turf/simulated/floor/tiled/white,/area/medical/surgery) "bNg" = (/obj/item/stack/medical/advanced/bruise_pack{pixel_x = 2; pixel_y = 2},/obj/item/stack/medical/advanced/bruise_pack,/obj/structure/table/standard,/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/white/border{dir = 4},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/weapon/surgical/bonegel,/obj/item/weapon/surgical/bonegel,/turf/simulated/floor/tiled/white,/area/medical/surgery) -"bNh" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Cargo Substation Bypass"},/turf/simulated/floor,/area/maintenance/substation/cargo) -"bNi" = (/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Surface Civilian"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/maintenance/substation/cargo) +"bNh" = (/obj/structure/bookcase{name = "bookcase (Non-Fiction)"},/turf/simulated/floor/wood,/area/library) +"bNi" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{dir = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/toilet) "bNj" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/fire{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/firstaid/fire{pixel_x = 0; pixel_y = 0},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/corner/yellow/full{dir = 4},/turf/simulated/floor/tiled,/area/medical/biostorage) "bNk" = (/obj/structure/closet/crate,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor/tiled/steel,/area/quartermaster/warehouse) "bNl" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled/steel,/area/quartermaster/warehouse) @@ -4965,7 +4965,7 @@ "bRy" = (/obj/effect/floor_decal/borderfloorblack{dir = 5},/obj/effect/floor_decal/corner/paleblue/border{dir = 5},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 4},/obj/effect/floor_decal/corner/paleblue/bordercorner2{dir = 4},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor/tiled/dark,/area/medical/medbay_emt_bay) "bRz" = (/turf/simulated/floor/tiled,/area/medical/surgery_hallway) "bRA" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/station/medbay) -"bRB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/crew_quarters/heads/cmo) +"bRB" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/structure/bookcase{name = "bookcase (Reference)"},/turf/simulated/floor/wood,/area/library) "bRC" = (/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/paleblue/border{dir = 8},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) "bRD" = (/obj/structure/table/glass,/obj/machinery/photocopier/faxmachine{department = "CMO's Office"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) "bRE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/mob/living/simple_animal/cat/fluff/Runtime,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) @@ -4980,7 +4980,7 @@ "bRN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway) "bRO" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway) "bRP" = (/obj/structure/railing,/turf/simulated/open,/area/medical/surgery_hallway) -"bRQ" = (/obj/effect/floor_decal/borderfloorwhite{dir = 10},/obj/effect/floor_decal/corner/paleblue/border{dir = 10},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) +"bRQ" = (/obj/structure/bookcase{name = "bookcase (Reference)"},/turf/simulated/floor/wood,/area/library) "bRR" = (/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) "bRS" = (/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/obj/machinery/light,/obj/machinery/requests_console{announcementConsole = 1; department = "Medical Department"; departmentType = 5; name = "Chief Medical Officer RC"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) "bRT" = (/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/obj/structure/cable/green,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -32},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) @@ -5011,7 +5011,7 @@ "bSs" = (/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway) "bSt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway) "bSu" = (/obj/effect/floor_decal/borderfloorwhite{dir = 5},/obj/effect/floor_decal/corner/paleblue/border{dir = 5},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 4},/obj/effect/floor_decal/corner/paleblue/bordercorner2{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway) -"bSv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/crew_quarters/heads/cmo) +"bSv" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/captain) "bSw" = (/obj/structure/sign/nosmoking_1,/turf/simulated/wall,/area/medical/sleeper) "bSx" = (/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 9},/obj/effect/floor_decal/corner/paleblue/bordercorner2{dir = 9},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/borderfloorwhite/corner2,/obj/effect/floor_decal/corner/paleblue/bordercorner2,/turf/simulated/floor/tiled/white,/area/medical/sleeper) "bSy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/junction{icon_state = "pipe-j1"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/sleeper) @@ -5122,9 +5122,9 @@ "bUz" = (/obj/structure/table/glass,/obj/effect/floor_decal/corner/paleblue/diagonal,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak) "bUA" = (/obj/structure/bed/chair{dir = 8},/obj/effect/floor_decal/corner/paleblue/diagonal,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak) "bUB" = (/obj/structure/table/standard,/obj/machinery/microwave,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak) -"bUC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/medical/patient_a) -"bUD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/medical/patient_b) -"bUE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/medical/patient_c) +"bUC" = (/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/bridge/meeting_room) +"bUD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced/polarized{dir = 10; icon_state = "fwindow"; id = "cmooffice_b"},/turf/simulated/floor/plating,/area/crew_quarters/heads/cmo) +"bUE" = (/obj/effect/floor_decal/borderfloorwhite{dir = 10},/obj/effect/floor_decal/corner/paleblue/border{dir = 10},/obj/machinery/button/windowtint{id = "cmooffice_b"; pixel_x = -20; pixel_y = -25},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo) "bUF" = (/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced/polarized{dir = 10; icon_state = "fwindow"; id = "mrecovery-tint"},/turf/simulated/floor/plating,/area/medical/sleeper) "bUG" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals10,/obj/machinery/door/airlock/medical{id_tag = "MedicalRecovery"; name = "Recovery Room"},/turf/simulated/floor/tiled/white,/area/medical/sleeper) "bUH" = (/obj/effect/floor_decal/corner/paleblue/diagonal,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak) @@ -5220,7 +5220,7 @@ "bWt" = (/obj/structure/bed/chair{dir = 4},/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/paleblue/border{dir = 8},/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 8},/obj/effect/floor_decal/corner/paleblue/bordercorner2{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/ward) "bWu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/medical_restroom) "bWv" = (/obj/structure/undies_wardrobe,/turf/simulated/floor/tiled/white,/area/medical/recoveryrestroom) -"bWw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/medical/exam_room) +"bWw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced/polarized{dir = 10; icon_state = "fwindow"; id = "cmooffice_b"},/turf/simulated/floor/plating,/area/crew_quarters/heads/cmo) "bWx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/medical/recoveryrestroom) "bWy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/medical_restroom) "bWz" = (/obj/structure/bed/chair{dir = 4},/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/paleblue/border{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/ward) @@ -5235,7 +5235,7 @@ "bWI" = (/obj/machinery/camera/network/medbay{dir = 1},/obj/effect/floor_decal/corner/paleblue/diagonal,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak) "bWJ" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/effect/floor_decal/corner/paleblue/diagonal,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak) "bWK" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak) -"bWL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/ward) +"bWL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced/polarized{dir = 10; icon_state = "fwindow"; id = "exam_room"},/turf/simulated/floor/plating,/area/medical/exam_room) "bWM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/medbreak) "bWN" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/tiled/monotile,/area/bridge_hallway) "bWO" = (/obj/structure/closet,/obj/random/maintenance/medical,/obj/random/junk,/obj/random/tool,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/station/micro) @@ -5257,6 +5257,10 @@ "bXe" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/flasher{id = "Cell 2"; pixel_x = -28; pixel_y = 0},/turf/simulated/floor/tiled/dark,/area/security/brig) "bXf" = (/obj/structure/closet/secure_closet/brig{id = "Cell 2"},/obj/effect/floor_decal/industrial/outline,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled/dark,/area/security/brig) "bXg" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_security{name = "Security Cells"; req_access = list(1)},/turf/simulated/floor/tiled/steel_grid,/area/security/prison) +"bXh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced/polarized{dir = 10; icon_state = "fwindow"; id = "pr1_window_tint"},/turf/simulated/floor/plating,/area/medical/patient_a) +"bXi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced/polarized{dir = 10; icon_state = "fwindow"; id = "pr2_window_tint"},/turf/simulated/floor/plating,/area/medical/patient_b) +"bXj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced/polarized{dir = 10; icon_state = "fwindow"; id = "pr3_window_tint"},/turf/simulated/floor/plating,/area/medical/patient_c) +"bXk" = (/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced,/obj/structure/window/reinforced/polarized{dir = 10; icon_state = "fwindow"; id = "mrecovery-tint"},/turf/simulated/floor/plating,/area/medical/ward) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -5295,11 +5299,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZabZabZabZabZabZabZab aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZacyaczacAacBacCacDacEacFacGacHacIadEaaUabiacKacLaaUacMacNacOacPacQaaVacRacRacRacRacRacRacRacRacRachabCaacaacaacaacaacaclacmacmacmacmacmacmacSacTaclacUacVabYacWacXacYacZacYadaadbadcabYaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZaddadeadfadgadhadiadjadkadladmadnadoaaUadpadqadradsadtaduabnabnabnaaVadvadwadxadyadzadAadBadCacRacjabCaacaacaacaacaacaclacmacmacmacmacmacmadDadJadFadGadHadIafXadKadLadMadNabYadOadPabYaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadQadRadSadTadUadVadWadXadYadZaeaaebaecaaUaaUaedaeeaaUaefaegabnaehaeiaaVaejaekaelaemaemaenaemaeoacRaciabCaacaacaacaacaacaclaclaclaclaclaclaclaclaclaclaepaeqaeraeraeraeraeraeraeraeraeraeraacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaesaetaeuaevaewaewaexaeyaezaeAaeBaeCaeDaeEaecaaUaaUaeFaaUaaUaaVaeGaaVaaVaaVaaVaeHaemaeIaemaemaeJaemaeKacRaciabCaacaacaacaacaacaeLaeMaeMaeMaeMaeMaeMaeNaeOaeLaePaeQaeraeRaeSaeTaeUaeVaeraeWaeXaeraacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacabZabZabZabZabZabZabZabZabZaeYaeZafaafbafcafdafeaffafgafhafiafjafkaflafmafnafoafoafpafqafrafsaftacRaciabCaacaacaacaacaacaeLaeMaeMaeMaeMaeMaeMafuafvaeLafwafxaerafyafzafAafBafAafCafDafEaerafFafFafFafFafFafFafFafFafFaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaesaetaeuaevaewaewaexaeyaezaeAaeBaeCaeDaeEaecaaUaaUaeFaaUaaUaaVaeGaaVaaVaaVaaVaeHaemaeIaemaemaeJaemaeKacRaciabCaacaacaacaacaacaeLaeMaeMaeMaeMaeMaeMaeNaeOaeLaePaeQaeraeRaeSaeTaeUaeVaeraflaeXaeraacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacabZabZabZabZabZabZabZabZabZaeYaeZafaafbafcafdafeaffafgafhafiafjafkahaafmafnafoafoafpafqafrafsaftacRaciabCaacaacaacaacaacaeLaeMaeMaeMaeMaeMaeMafuafvaeLafwafxaerafyafzafAafBafAafCafDafEaerafFafFafFafFafFafFafFafFafFaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacaacaikafGafHafIafJafKafHafHafLafHafHafHafHafMafNafOafPafQafRaemaemafSafSafTafUafVacRaciabCaacaacaacaacaacaeLaeMaeMaeMaeMaeMaeMafWaiXafYadGadHafZaluagbagcagdageaeragfaggaeraghagiagjagkaglagmagnagoafFaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacacaafGafHagpagpagqagpagpagragpagpagpagqagsagtaguagvagwagxagxagyagxagxagzaemamjacRacjabCaacaacaacaacaacaeLaeLaeLaeLaeLaeLaeLaeLaeLaeLagBagCaeraeraeraeraeraeraeraeraeraeragDagEagEagEagEagEagFagGafFaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacagHagHagHagHagHagHagHagHagHagHagHagHagHagHagHagHagHagIagJafHagKagLagMaemaemaemaemaemaemagNacRaciabCaacaacaacaacaacagOagPagPagPagPagPagPagQagRagOagSagTagUagVagWagXagYagZagUahaahbagUahcahdaheahfahgahhagFahiafFaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacagHagHagHagHagHagHagHagHagHagHagHagHagHagHagHagHagHagIagJafHagKagLagMaemaemaemaemaemaemagNacRaciabCaacaacaacaacaacagOagPagPagPagPagPagPagQagRagOagSagTagUagVagWagXagYagZagUaCQahbagUahcahdaheahfahgahhagFahiafFaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagHahjahkahlahjahmahjahlahjahnahoahpahqahrahsahtagHahuagJafHahvahwahxaemahyahzahAahBahCahCacRacjabCaacaacaacaacaacagOagPagPagPagPagPagPahDahEagOacUacVagUahFahGahHahIahHahJahKahLagUahMahNahOahPahQahRagFahSafFaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTahTahTahTahTahTahUagHahjahjahjahVahWahWahWahWahXahYahZahWaiaaibaicaidaieaifafHaigaihaihaihaihaihaihaihaihaihaiiacjabCaacaacaacaacaacagOagPagPagPagPagPagPaijaqFailadGadHaimavTaioaipaiqairagUaisaitagUaiuahNaivahPahQaiwagFaixafFaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaahTaiyaizaizaizaizaiAaiBaiCaiDaiEaiFaiGahVaiHaiIaiJaiKaiKaiKaiKaiKaiKaiKaiLaiMaiNaiOaiPaiQaiRaiSaiTaiUaiVaiWaihaxbaciabCaacaacabCabCabCagOagOagOagOagOagOagOagOagOagOaiYaiZagUagUagUagUagUagUagUagUagUagUajaahNajbajcajdajeagFajfafFaacaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -5313,8 +5317,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanEanFanGanHan aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamMagHaonamOaooaopaoqaoraosahjaotamVaouamXaovaowaoxanbaoyaozaoAaoBaoCaoDaoEaoFaoGaoHaoIaoJaRzaoLalOalOalOalOaoMaoMalRalRaoNalVamGamGamFaoOaoPaoQaoPaoQaoQaoPaoPamFamGaoRamGamGanBaoSaoTameameameameameameameameameamealyaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagHamgamhamiagHaoUalBaoVahjamkamVaoWaoXaoYaoZapaamrapbapcanXaoBapdaoGapeapfaoGaoHaciapgacjaphapiapiapiapiapiapiapjapkaplalVamGamGamGaoPatDarYavzarYarYavBaoPamGamGamGamGamGanBapoappameameameameameameameameameamealyaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahUahTahTahTahTahTahTahTahUagHapqapraprapsaptalBapuapvapwalDalDalDalDapxalDapyapzapAapBapCapDapEapFapGapHapIapJapKapLapMapiapNapNapNapNapialValValValVamGamGamGaoQatDalValVapOalVavBaoQamGanvanwanxamGanBapPamKameameameameameameameameameamealyamfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaiyaizapQapQaizapRaaaaaaagHapSalzapTapUamSapVapWapXapYapZaqaaqbaqcaqdaqeaqfaqgaqhaqiaqjaqkaqlaoGapfaqmaoHaqnaqoaqpaqqapiapNapNapNapNapNalValValValVamGamGamGaoQatDalVaqraqsalVavBaoQamGanvaqtanxamGanBaquamKameameameameameameameameameameaqvamfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaqwapQaqxaqyapQaqzaaaaaaagHaqAaqBaqCaqDaqBaqCaqEbfpaqGaqHaqIaqJaqKaqLaqMapZaqNaqOaqPaqQaqRaqPaqPaqSaqTaoHbvKaqVaqWaqXapiapNapNapNapNapNalValValValVamGamGamGaoQatDalVaqYawqalVavBaoQamGanvanwanxamGanBaraamKameameameameameameameameameamearbamfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaiyaizapQapQaizapRaaaaaaagHapSalzapTapUamSapVapWapXapYapZaqaaqbaqcaqdaqeaqfaqgaqhaqiaqjaqkaqlaoGapfaqmaoHaqnaqoaqpaqqapiapNapNapNapNapNalValValValVamGamGamGaoQatDalVaqraqsaRHavBaoQamGanvaqtanxamGanBaquamKameameameameameameameameameameaqvamfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaqwapQaqxaqyapQaqzaaaaaaagHaqAaqBaqCaqDaqBaqCaqEbfpaqGaqHaqIaqJaqKaqLaqMapZaqNaqOaqPaqQaqRaqPaqPaqSaqTaoHbvKaqVaqWaqXapiapNapNapNapNapNalValValValVamGamGamGaoQatDalVaqYaSnalVavBaoQamGanvanwanxamGanBaraamKameameameameameameameameameamearbamfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaiyaizaqzaqwaizapRaaaaaaarcardarearfargarharfariarjarkarlarlarmarlarlarlarlarnaroarpaoBarqarrarsaoHaoHaoHartaruarvarwapiapNapNapNapNarxalValValValVamGamGamGaoQatDalValValValVavBaoQamGanvanwanxamGanBaraamKameameameameameameameameameamealyamfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTajgaizaqxaqyaizaryahUahTagHarzarAarBarCarAarDarEahjarFarGarHarIarJarKarLarMarNarOaoGarParQarQarRarSarSaoHarTbAlarVarWapiapiapiapiapiapiarXalValValVamGamGamGaoPatDawsawUawUawUavBaoPamGamGamGamGamGanBarZasaasaasaasaasaasaasaasaasbamKasbalyaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaiyaizaqzaqwapQapQapQaiAascasdaseasfasgashasiasjaskaskarGaslasmasnasoaspasqasrassastaoGaoGaoGasuaoGaqmaoHbByaswasxbBAaszaszaszaszaszaszasAalValValVamGamGamFaoPaoPaoPaoQaoQaoQaoPaoOamFamGanAamGamGanBaraasBasCasDasEasFasGasHasBasIasJasKalyaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -5330,13 +5334,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTajgaizaqxaqyaizaryaacaacaacaacaacaacaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahUaiyaizaqzaqwaizapRaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacawiaylaymawiaykaykawiaynayoaypayqayraysaytayuayvbOHawnayxayyayzayAayBayCayDayEayFawnayGayHaxxawxayIayJayKayKayKayLawxayMayNawzayOayPayQayRalValValValValValValVaySaktaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaqwapQaqxaqyapQaqzaaaaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacawiawEayTawiawiawiawiayUayoayVawjayWawNawOawPayXayYawnayZazaazbazcazaazdazeazaazfazgazhaziazjazkazlayJazmaznazoazpawxaxaawzawzazqazrazsaztazuazvazwazvazvazxazyazzaktaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaiyaizaqzaqwaizapRaaaaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacawiazAazBawiawiawiawiazCazCazDawjazEawNbWUawPazFayYawnbETazHazIazHazHazHazJazHazKawnazLayHazMazNazOayJazPazQazRazSawxaxaawzazTazTazUbFBazWazTazTazTazXazXazXazYazXazXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTajgaizaqxaqyaizaryaaaaacaacaacaacaacawPawPawPawPawPawPawPawPawPawPawiawiawiawiawiawiawiawjawjawjawjazZaAaaAbawPbWWbWVawnaAeaAfaAgaAhaAiaAhaAjaAkaAlaAmaAnaAoaApaAqaAraAsayKaAtayKaAuawxaxaawzaAvaAwaAxaAyaAzaAAaAwaAvazXaABaACaADaAEazXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTajgaizaqxaqyaizaryaaaaacaacaacaacaacawPawPawPawPawPawPawPawPawPawPawiawiawiawiawiawiawiawjawjawjawjazZaAaaAbawPbWWbWVawnaAeaAfaAgaAhaAiaAhaAjaAkaAlaAmaAnaAoaApaAqaAraAsayKaAtayKaAuawxaxaawzaAvaAwaAxaAyaAzaAAaAwaAvazXaABaACaADbKyazXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaiyaizaqzaqwaizapRaaaaacaacaacaacaacawPaAFaAGaAHaAIaAIaAJaAIaAKaALaAMaANaAOaAPaAIaAIaAQaAKaARaASaATaAUawNaAVawPawPawPawnaAWazHaAXaAYazHazHaAZazHaBaawnaBbaBcaBdawxaBeaBfaBgaBhaBiaBjawxayMawzaBkaBkaBkaAyaAzaBkaBkaBlazXazXazXaBmaBnazXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaqwapQaqxaqyapQaqzaaaaacaacaacaacaacawPaAVaBoaBpaBqaBqaBqaBqaBqaBqaBraBqaBsaBqaBqaBqaBqaBqaBtaBsaBqaBuaBvaAVawPaacaacawnaBwaBxazHaByazHazHaBzazHazHaBAaBBaBcaBCawxawxawxawxawxawxawxawxayMawzaBDaBDaBkaBEaBFaBkaBDaBDazXaABaBGaBHaBIazXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaqwapQaqxaqyapQaqzaaaaacaacaacaacaacawPaAVaBoaBpaBqaBqaBqaBqaBqaBqaBraBqaBsaBqaBqaBqaBqaBqaBtaBsaBqaBuaBvaAVawPaacaacawnaBwaBxazHaByazHazHaBzazHazHaBAaBBaBcaBCawxawxawxawxawxawxawxawxayMawzaBDaBDaBkaBEaBFaBkbNhbNhazXaABaBGaBHbNiazXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaiyaizaqzaqwaizapRaaaaaaaacaacaacaacawPaBJaBKaBLaBMaBLaBLaBLaBLaBLaBLaBLaBLaBLaBLaBLaBLaBLaBLaBLaBMaBNawNaBOawPaacaacawnaBPaBQaBRaBSbMgazHaBUazaaBVaBWaBXaBYaBZaCaaCbaCcaCdaCeaCfaCgawtayMawzaChaCiaCjaCkaClaCmaBkaCnazXazXazXaCoaCpazXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTajgapQaCqaCqapQaqzaaaaaaaacaacaacaacaCraCsaCtaCuaCrawPaCvaCvaCvawPawPaCvaCvaCvawPawPaCvaCvaCvawPaCwaCxaCyaCzaCwaacaCAaCAaCAaCAaCAaCAaCAaCBaCCaCDaCAaCAaCEaCFaCGaCHaCIaCJaCKaCLaCfaCgawtaxaawzaCMaCNaBkaCOaCPaBkaCNaCQazXaCRaCSbNLaBIazXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTajgapQaCqaCqapQaqzaaaaaaaacaacaacaacaCraCsaCtaCuaCrawPaCvaCvaCvawPawPaCvaCvaCvawPawPaCvaCvaCvawPaCwaCxaCyaCzaCwaacaCAaCAaCAaCAaCAaCAaCAaCBaCCaCDaCAaCAaCEaCFaCGaCHaCIaCJaCKaCLaCfaCgawtaxaawzaCMaCNaBkaCOaCPaBkbRQbRBazXaCRaCSbNLbNiazXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTahUahTahTahTahTahTahTahTaacaacaacaacaCraCUaCVaCWaCraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCwaCXaCYaCZaCwaacaCAaDaaDbaDcaCAaDdaDeaDfaDfaDgaDhaDiazhaBcaDjaDkaDlaDlaDlaDlaDmaDmaDmaxaawzaDnaBkaBkaAyaAzaBkaBkaDoazTazTazTazTazTazXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDpaDqaDraDsaDtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDuaDvaDwaDxaCwaacaCAaDyaDzaDAaCAaDBaDCaDDaDfaDfaDEaDFazLaBcaDGawtaDHbXbaDJaDKaDLaDMaDNaDOawzaDPaDQaDQaDRaAzaDSaDTaDUazTaDVaDWaDWazTaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDpaDqaDraDsaDtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDuaDvaDwaDxaCwaacaCAbSvaDzaDAaCAaDBaDCaDDaDfaDfaDEaDFazLaBcaDGawtaDHbXbaDJaDKaDLaDMaDNaDOawzaDPaDQaDQaDRaAzaDSaDTaDUazTaDVaDWaDWazTaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDpaDqaDXaDYaDtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDuaDvaDZaEaaCwaacaCAaCAaEbaCAaCAaEcaEdaEeaEfaEgaEhaEiaEjaEkaElawtaEmaEnaEoaEpaEqaEraEsaEtawzaEuaEuaBkaEvaAzaEwaExaExaEyaExaExaExazTaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDpaDqaEzaDraDtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDuaDvaEAaDwaCwaacaCAaEBaECaEDaCAaEEaEFaDfaDfaDfaEGaCAaEHaEIaEJaEKaELaEMaENaDlaEOawzawzawzawzaEPaEQaBkaERaESaETaEUaEUaEVaEWaEXaEYazTaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEZaEZaEZaFaaFaaEZaEZaFaaFaaFaaEZaEZaEZaaaaaaaCraFbaFcaFdaCraaaaFeaFeaFeaFeaFeaFeaFeaFeaFeaFeaFeaaaaaaaaaaCwaDvaFfaFgaCwaacaCAaFhaFiaFjaFkaFlaDfaDfaDfaDfaFmaCAaFnaFoaFpawtaDlaDlaDlaDlaacaacaacaacazTaFqaFqaBkaEvaAzaFraExaExaEyaFsaFtaFuazTaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -5418,10 +5422,10 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaJeaKcaKcaKdaK aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaJeaKcaKcaKxaKyaKzaKzaJeaacaacaacaJlaKAaKBaKjaKCaKDaKjaKEaKFaKjaKEaKFaKjaKGaKHaKIaKJaKKaKLaKMaJmaKNaKOaKPaJmaKvaJDaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaKwaKwaKQaKRaKSaKSaKwaacaacaataataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaJeaKTaKUaKVaKWaKzaKXaJeaacaacaacaJlaKhaKYaKjaKZaLaaKjaLbauWaKjaLcaMPaKjaLdaLeaLfaLgaLfaLhaLiaLjaLkaLlaLmaJmaKvaJDaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaKwaLnaLoaLpaKSaKSaKwaacaataataataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaJeaLqaLraKdaLsaLtaLuaJeaacaacaacaJlaKhagaagAaKjaKjaKjaLwaLxaKjaLyaLxaKjaLzaLeaLfaLAaLBaLCaLDaLEaLEaLEaLEaLEaKvaJDaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaKwaLnaLoaLFaKwaKwaKwaataataataataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaJeaLGaLHaKxaLIaLJaLKaJeaacaacaacaJlaLLaLMaLNaLOaLPaLQaLOaLRaLSaLOaLRaLTaLUaLVaLOaLWaLXaLYaLZaLEaMaaMbaMcaLEaMdaJDaacaacaacaacaacaKwaKwaKwaKwaKwaKwaKwaKwaKwaKwaKwaKwaKwaMeaMfaMgaMhaMiaataataataataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaJeaJeaJeaMjaMkaJeaJeaJeaacaacaacaJlaMlaMmaKjaKjaKjaKjaMnaMoaKjaMpaMqaKjaMraLeaLfaMsaMtaLCaMuaLEaMvaMwaMxaLEaMdaJDaMyaMyaMyaMyaMyaMyaMzaMAaMAaMAaMBaMCaMAaMAaMDaMAaMAaMEaMFaMGaKwaKwaKwaataataataataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaJeaLGaLHaKxaLIaLJaLKaJeaacaacaacaJlaLLaLMaLNaLOaLPaLQaLOaLRaLSaLOaLRaLTaLUaLVaLOaLWaLXaLYaLZaLEaMaaMbaeWaLEaMdaJDaacaacaacaacaacaKwaKwaKwaKwaKwaKwaKwaKwaKwaKwaKwaKwaKwaMeaMfaMgaMhaMiaataataataataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaJeaJeaJeaMjaMkaJeaJeaJeaacaacaacaJlaMlaMmaKjaKjaKjaKjaMnaMoaKjaMpaMqaKjaMraLeaLfaMsaMtaLCaMuaLEawqaMwaMxaLEaMdaJDaMyaMyaMyaMyaMyaMyaMzaMAaMAaMAaMBaMCaMAaMAaMDaMAaMAaMEaMFaMGaKwaKwaKwaataataataataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaJeaMHaMIaMJaMKaMLaMLaJeaacaacaacaJlaMMaMNaKjaMOaLaaKjbXdbXcaKjbXebXfaKjaMQaLeaLfaMRaLfaMSaMTaMUaMVaMWaMXaLEaKvaJDaMYaMZaNaaNbaNcaMyaNdaKwaKwaNeaNeaNeaNeaNeaNeaNeaNeaNeaNfaNgaNhaNiaNjaataataataataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaJeaMHaMHaNkaNlaMLaMLaJeaacaacaacaJlaNmaKBaKjaNnaKDaKjaNoaKFaKjaNoaKFaKjaNpaNqaNraNsaNtaNuaNvaLEaNwaNxaNyaLEaKvaJDaNzaNAaNBaNCaNDaMyaNdaKwaNEaNeaNFaNGaNHaNIaNJaNGaNKaNeaNLaNMaNhaNNaNjaataataataataataataataabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaJeaMHaMHaNkaNlaMLaMLaJeaacaacaacaJlaNmaKBaKjaNnaKDaKjaNoaKFaKjaNoaKFaKjaNpaAEaNraNsaNtaNuaNvaLEaNwaNxaBIaLEaKvaJDaNzaNAaNBaNCaNDaMyaNdaKwaNEaNeaNFaNGaNHaNIaNJaNGaNKaNeaNLaNMaNhaNNaNjaataataataataataataataabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaNOaNOaNOaNPaNQaNOaNOaNOaNOaNOaNOaJlaNmaNRaKjaNSaKjaKjaNTaNUaKjaNVaNWaKjaNXaNYaNZaNZaNZaNZaOaaLEaLEaLEaLEaLEaKvaJDaObaOcaOdaOeaOfaMyaNdaKwaOgaNeaOhaOiaOjaOkaOlaOmaOnaNeaLoaLoaOoaNNaNjaataataataataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaNOaOpaOpaOqaOraOsaOtaOtaOuaOvaNOaJlaOwaOxaOyaOzaOAapnaOzaOCapmaOzaOEaOFaOGaOHaOIaOJaOKaOLaOMaONaOOaOPawDaORaKvaJDaOeaOSaOTaOUaOVaMyaOWaOXaOXaNeaOYaOZaPaaPbaPcaPdaPeaNeaKwaKwaKwaKwaKwaataataataataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaNOaOpaOpaOpaOpaOpaOpaOpaOpaPfaNOaJlaPgaPhaPiaPjaPkaPkaPkaPkaPkaPkaPjaPlaPkaPmaPnaPnaPoaPpaPqaORaPraPsaPtaORaPuaJDaPvaPvaPwaPxaPvaMyaPyawQaPAaNeaOhaPBaPCaPDaPCaPBaOnaNeaacaacaacaacaacaacaacaataataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -5429,9 +5433,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaNOaOpaOpaPEaP aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaNOaOpaOpaQaaQbaQbaQbaQcaOpaQdaNOaxjaQfaQgaQgaxCaQhaQiaQgaQgaQhaQgaQhaQgaQjaQkaQlaQmaQnaQoaQpaORaQqaQraPraORaQsaQtaQuaQvaQwaQxaQyaQzaQAaQBaQCaNeaNeaNeaNeaQDaNeaNeaNeaNeaacaacaacaacaacaacaacaacaataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaNOaQEaOpaQaaQbaQbaQbaQcaOpaPfaNOaxPaQgaQGaQGaQGaQGaQGaQGaQGaQGaQGaQGaQGaQhaQkaQHaQIaQJaQKaQLaORaPraQMaPraORaQNaOXaQOaQPaQQaQRaQSaQTaQUaNeaNeaNeaNeaQVaQWaQXaQYaQZaNeaNeaNeaNeaacaacaacaacaacaacaacaataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaNOaOpaOpaQaaQbaQbaQbaQcaOpaPfaNOaAcaQhaQGaQGaRbaQGaRcaRdaReaRfaRgaRhaQGaQhaQkaRiaRjaQJaQKaQLaORaORaRkaORaORaQNaOXaRlaRmaRnaRoaRpaRqaRmaNeaRraRsaNeaRtaRuaRvaRwaPBaNeaRxaRyaNeaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaNOaOpaOpaQaaQbaQbaQbaQcaOpaPfaNOaAdaQhaQGaRAaRBaRCaRDaREaRFaRGaRBaRHaQGaQhaQkaRIaRJaRJaRKaRLaRMaRNaROaRPaQkaRQaOXaRRaRSaRnaRoaRpaRTaRUaNeaRVaRWaRXaRYaRZaSaaSbaRYaRXaScaSdaNeaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaNOaSeaSeaSfaSgaQbaQbaQcaOpaPfaNOaDIaQgaQGaSiaRBaRDaSjaSkaSlaSmaRBaSnaQGaQgaQkaSoaSpaSqaSraSsaStaSuaSvaSwaQkaQNaOXaSxaSyaSzaSAaSBaSCaSDaNeaSEaSFaNeaSGaSHaPDaSIaSJaNeaSKaSLaNeaSMaSMaSMaSMaSMaSMaSMaSMaSMaSMaSMaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNOaSNaSeaSfaSgaQbaQbaQcaOpaPfaNOaOQaQgaQGaSPaRBaRDaSQaSRaSSaSTaRBaSUaQGaQgaQkaQkaQkaQkaQkaQkaQkaSVaSWaQkaQkaSXaOXaSYaSZaRnaRoaRpaPMaSZaNeaNeaNeaNeaPCaTaaTbaTcaPCaNeaNeaNeaNeaSMaTdaTeaTfaTgaLvaTiaTjaTeaTkaSMaSMaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaNOaOpaOpaQaaQbaQbaQbaQcaOpaPfaNOaAdaQhaQGaRAaRBaRCaRDaREaRFaRGaRBaMcaQGaQhaQkaRIaRJaRJaRKaRLaRMaRNaROaRPaQkaRQaOXaRRaRSaRnaRoaRpaRTaRUaNeaRVaRWaRXaRYaRZaSaaSbaRYaRXaScaSdaNeaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaNOaSeaSeaSfaSgaQbaQbaQcaOpaPfaNOaDIaQgaQGaSiaRBaRDaSjaSkaSlaSmaRBaMvaQGaQgaQkaSoaSpaSqaSraSsaStaSuaSvaSwaQkaQNaOXaSxaSyaSzaSAaSBaSCaSDaNeaSEaSFaNeaSGaSHaPDaSIaSJaNeaSKaSLaNeaSMaSMaSMaSMaSMaSMaSMaSMaSMaSMaSMaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNOaSNaSeaSfaSgaQbaQbaQcaOpaPfaNOaOQaQgaQGaSPaRBaRDaSQaSRaSSaSTaRBaNqaQGaQgaQkaQkaQkaQkaQkaQkaQkaSVaSWaQkaQkaSXaOXaSYaSZaRnaRoaRpaPMaSZaNeaNeaNeaNeaPCaTaaTbaTcaPCaNeaNeaNeaNeaSMaTdaTeaTfaTgaLvaTiaTjaTeaTkaSMaSMaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNOaTlaSeaSfaSgaQbaQbaQcaOpaTmaNOaPzaQiaQGaToaTpaTqaTraTsaTtaTuaRBaTvaQGaQfaQhaTwaTxaTyaTyaTzaTAaTBaTCaTDaTEaQeaOXaTGaTHaRnaRoaRpaTGaTHaTIaTIaTIaTIaTIaTJaTKaTLaTMaTMaTMaTMaTMaTNaTNaTOaTNaTNaTNaTNaTNaTOaTNaTPaSMaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNOaSeaSeaSfaSgaQbaQbaQcaOpaPfaNOaRaaTRaQGaQGaQGaQGaTSaTTaTUaTVaTWaTXaQGaTYaTYaTYaTZaUaaUaaUaaUbaUbaUbaUbaUbaUbaOXaUcaUdaUeaUdaUfaUdaUcaTIaUgaUhaUiaTIaUjaUkaUlaTMaUmaUnaUoaTMaUpaUqaUraUsaUtaUuaUvaUwaUxaUqaUyaSMaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNOaSeaSeaSfaSgaQbaQbaQcaOpaUzaUAaUBaUCaUDaUEaUDaUFaUGaUHaUIaUJaUKaUKaUKaULaUMaUNaUOaUPaUQaURaUSaUSaUSaUSaUSaUSaUTaUUaUVaUWaUXaUYaUZaVaaTIaVbaVcaVdaVeaVfaVgaVfaVhaViaVjaVkaTMaTNaTNaVlaTNaTNaVmaTNaTNaVlaTNaTNaSMaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -5459,7 +5463,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacaacaacaataataataataacaacaacaacaacaacaacaacaacaacbADbKZbLvbKUbKXbLBbLDbLybLAbMjbMlbLEbLFbMnbKsbGzbGAblRbiEbiFbiGbimbiHbiIbiJbgTbiKbiKbiLbiLbiMbiNbiObiPbiQbiQbiRbiSbiTbiUbiVbhFaataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacaacaacaataataataataacaacaacaacaacaacaacaacaacaacbADbMsbMubMobILbMXbNjbILbMwblgbNDbNzbNAbNIbNJbNEbGAblRbjjbjkbjlbimbiHbjmbXabgTbiKbiKbjobjobjpbjqbjrbjsbjsbjsbjtbjubjvbjwbhDbhFaataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacaacaacaataataataataacaacaacaacaacaacaacaacaacaacbADbNNbILbILbILbILbIObILbOjblgblgblgbOrbliblgblgblgblRbfsbjBbjCbjDbjEbjFbjFbgTbgTbgTbgTbgTbgTbjGbgTbhDbhDbhDbiubjHbjHbiubhDbhFaataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacaacaacaataataataataacaacaacaacaacaacaacaacaacaacbADbOvbOwbOsbOubOVbOXbOxbORbADbjQbjRbWPbjTbjUbjVbOZbjXbjYbjZbkabkbbkcbkdbkebkfbkgbkhbkibkibkjbkkbgTbklbkmbhDbknbkobhDbhDbhDbhFaataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacaacaacaataataataataacaacaacaacaacaacaacaacaacaacbADbOvbOwbOsbOubOVbOXbOxbORbADbjQbjRbWPbjTbjUbjVbOZbjXbjYbjZbkabkbbkcbkdbkebkfbkgbkhbkibkibkjbkkbgTbklbUCbkmbknbkobhDbhDbhDbhFaataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPvbPvaacaacaacaacaataataataataacaacaacaacaacaacaacaacaacaacbADbADbADbADbADbADbPxbADbADbADbPybkrbksbPBbkubPzbPAbkwbktbkxbkybkybkzbkAbjFbkBbkBbkBbkBbkBbkBbkBbgTbgTbgTbgTbgTbgTbgTbgTbgTbgTaataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPvbPvaacaacaacaacaataataataataacaacaacaacaacaacaacaacaacaacaacaacaacbjFbkCbkDbkEbkFbkGbkHbkIbkJbjFbMWbQbbPZbQabMWbMWbMWbkNbkNbkObkPbjFaataacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPvbPvbPvbPvaacaacaataataataataacaacaacaacaacaacaacaacaacaacaacaacaacbjFbkQbkRbkSbkTbkUbkVbkWbkXbjFbQMbRnbQsbQtbRybRLbMWbldbldbkOblebjFblfaataataataacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -5551,11 +5555,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacbszbszbszbs aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacbszbtJbtKbtJbtKbtJbtLbszbtMbtNbtObtPbtQbtRavZbtRbtRbtSbtRbtRbtRbtRbtTbtUbtVbtWbtXbtYbtZbtUbuabtRbubbucbudbuebsWbufbugbsYbsZbtabsobpAbnPaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaabsebsebsebsebseaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacbszbtKbtKbtKbtKbtKbtKbszbuhbsSbuibujbujbujbujbukbukbukbukbukbujbujbujbulbujbumbumbunbuobupbuobuqbumbumburburbusbutbuubuuazGbsvbsobuwbuxbuxbuxbuxbuxbuxaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaaabsebsebsebsebseaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacbszbuybtKbuybtKbuybuzbszbuAbtrbuBbujbuCbuDaywbuFbuGbuHbuIbuFbuEbuJbuKbuLbuMbumbuNbuObuPbuQbuRbuSbuTbumbuUburburbuVbuWbuWburburburbpAbuxbuXbuYbuZazVbuxbuxbuxbuxaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaabsebsebsebsebseaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacbszbtKbtKbtKbtKbtKbtKbvbbuAbvcbvdbukbvebvfbvgbvgbvgbvgbvgbvgbvhbvgbvibvjbvPbumbvlbvmbvnbvobvpbvqbvrbumbvsbvtbvubvvbvwbvxbvybvzburbpAbuxbvAbvBbvCbvDbvEbvFbvGbuxaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaabsebsebsebsebseaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacbszbtKbtKbtKbtKbtKbtKbvbbuAbvcbvdbukbvebvfbvgbvgbvgbvgbvgbvgbvhbvgbvibvjbvPbumbvlbvmbvnbvobvpbvqbvrbumbvsbvtbvubvvbvwbvxbvybvzburbpAbuxbvAbvBbvCbvDbvEbvFbvGbuxaacaacaacaDyaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaabsebsebsebsebseaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaacaacbszbvHbtKbuybtKbuybtKbvbbuAbvIbvJbukaBTbvLbvgbvMbvNbvMbvNbvMbvgbvgbvgbvObvPbumbvQbvmbvRbvSbvTbvmbvUbumbvVbvWbvXbvYbvZbwabvWbwbbwcbwdbuxbwebwfbwgbwhbvBbvBbwibuxaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaabsebsebsebsebseaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacbszbwjbwkbwjbwlbwjbwjbvbbuAbwmbwnbukbwobvLbvgbwpbwpbwpbwpbwpbvgbvgbvgbwqbwrbwsbwtbwubwvbwwbwxbwubwybwzbwAbwBbwCbwDbwEbwFbwGbwHburbwIbuxbwJbwKbwLbwMbwLbwLbwNbwLaacaacaacaacaacaacaacaacbwObwObwObwObwOaacaacaacaacaacaaaaaabsebsebsebsebseaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbszbwPbwQbwRbwSbwRbwTbszbwUbtwbwVbwWbwXbvLbvgbwpbwpbwpbwYbwZbvgbvgbxabxbbxGbxcbxdbvmbvmbvmbvmbvmbxebxcbvVbvWbxfbvWbxgbxhbvWbxiburbxjbuxbxkbuxbwLbxlbwLbxmbxnbwLbwLbwLbwObwObwObwObwObwObwObxobxpbwObwOaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbszbxqbxrbxsbxtbxsbxubxvbxwbxxbxybxzbxAbxBbvgbxCbxDbxCbxDbxCbvgbvgbxEbxFbxGbumbxHbxIbxJbxKbxLbxMbxNbumbxOaThbxQbxRbxSbxTbxUbxVburbxWbxXbxYaQFbwLbyabwLbbybycbydbyebyfbygbyhbyibyjbykbylbymbynbyobypbwObwOaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbszbwPbwQbwRbwSbwRbwTbszbwUbtwbwVbwWbwXbvLbvgbwpbwpbwpbwYbwZbvgbvgbxabxbbxGbxcbxdbvmbvmbvmbvmbvmbxebxcbvVbvWbxfbvWbxgbxhbvWbxiburbxjbuxbxkbuxbwLaNybwLbxmbxnbwLbwLbwLbwObwObwObwObwObwObwObxobxpbwObwOaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbszbxqbxrbxsbxtbxsbxubxvbxwbxxbxybxzbxAbxBbvgbxCbxDbxCbxDbxCbvgbvgbxEbxFbxGbumbxHbxIbxJbxKbxLbxMbxNbumbxOaThbxQbxRbxSbxTbxUbxVburbxWbxXbxYaQFbwLbxlbwLbbybycbydbyebyfbygbyhbyibyjbykbylbymbynbyobypbwObwOaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbszbyqbyrbysbytbyubyvbszbywbsSbyxbukbyybyzbvhbvgbyAbvgbvgbvgbvgbvgbyBbyCbxGbumbumbumbumbumbumbumbumbumburburburburburburburburburbyDbyEbxYaShbwLbxlbyGbyHbyIbyJbyKbyLbyMbyNbyObyPbclbyRbySbyTbyUbyobyVbwOaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbszbcmbyXbyYbyZbzabzbbszbzcbzdbzebujbzfbzgbzhaSObzjbzkaTFaTnbznaTQbzpbzqbzrbzsbztbzubzvbzwbzxbzxbzxbzxbzxbzxbzybzzbzAbzBbzBbzBbzBbzBaYwbzDaVybwLbzFbzGbyHbzHbzIbzJbwLbwObwObzKbzLbwObzMbzNbzObzPbyUbzQbwOaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacbszbszbszbszbszbszbszbszbzRbzSbzTbujbujaZbaYYbujbujbujbujbujbujbujbzXbujbujbujaZjbzZbAabctbzxbAcbAcbAcbAcbzxbAdbAebAfbzBbAgbAhbAibzBbAjbAkbfibwLbzFbAmbyHbAnbAobApbAqbArbAsbAtbAubAvbwObAwbAxbyUbyUbAybwOaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -5570,13 +5574,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaacaacaacbfUbBXbD aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacbfUbCEbDFbhJbhIbDFbhHbhNbhMbhLbhKbhNbhQawfavibhRbHkbHkbHkbHkbHkbiabEZbHhbGBbGCbGDbDIbGEbGFbDIbDKbDIbDIbDIbDObDPbGGbGHbGIbGIbGIbGIbGJbFbbGKbCKbDubDtbDsbFjbGPbGQbGRbGSbGTbFjbGUbGVbGVbGWbGXbGYbGYbGYbGYbGkaatahUbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacbfUbBXbDFbDFbDFbDxbGZbGZbHabHbbHcbHdbHUawFawgawHbHYbHZbHZbHZbIcbifbHmbHnbHobHpbHkbHkbHkbHkbHkbHqbHlbHrbHobHkbHkbHsbFObGIbGIbHtbGIbHubFbbHvbHvbHwbHxbDybFjbHzbHAbHBbHCbHDbHEbHFbHGbHGbHHbHIbGYbGYbHJbHKbHLbHMbHNbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacbfUbBXbBXbBXbEGbDxbHObHPbHQbHRbHSbHTbHUaxkawIbHUbiBbiAbizbiCbIcbHZbIabIbbHZbiDbfkbiWbiWbiWbfkbfkbIdbiXbLGbFbbFObFObFObGIbGIbGIbGIbIgbFbbIhbIibIjbDCbIlbFjbFjbHAbImbInbHAbFibIobIpbIqbIrbIsbItbIubIvbIwbIxbIwbIxbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacbfUbfUbfUbfUbBXbDxbIybIzbIAbIAbIAbIBbHUbiZbiYbHUbjbbjablkbjfbjebjdbjcbjibjhbfkbjgbjxbjybjxbjnbfkbITbIUbIVbFObIWbIXbIYbIZbJabJbbJcbJdbFbbJebFUbJfbJgbJebJhbFjbJibJjbJkbJlbFibJmbGYbJnbJobGXbGYbGYbJpbJqbJrbJsbJrbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacbfUbfUbfUbfUbBXbDxbIybIzbIAbIAbIAbIBbHUbiZbiYbHUbjbbjablkbjfbjebjdbjcbjibjhbfkbjgbjxbjybjxbjnbfkbITbIUbIVbFObIWbIXbIYbIZbJabJbbJcbJdbFbbJebFUbJfbJgbJebJhbFjbJibJjbJkbJlbFibJmbGYbJnbJobGXbGYbGYbJpbJqaSUbGYaSUbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacbfUbEbbDxbJtbJubJvbJwbJvbJxbHUbjIbjAbHUbjLbjKbjJbjPbjObjNbjMblsbkqbkpbjWbgBbkLbgBbkKbfkbJObJPbJQbJRbJSbJTbJTbJTbJUbJVbJWbIZbJXbJYbFUbJZbKabKbbKcbFjbFjbFjbFibFibFjbKdbGYbJnbJobGXbGYbGYbGYbKebHLbHLbKfbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacbfUbEbbDxbDxbKgbKhbKibKjbkZbHUbkYbkMbHUblbblcblablAblwbljblhbkvblmbgzbllbhOblvblubltbfkbKvbKwbKxbFObKybIZbKzbKAbKBbKCbKDbKEbFbbJYbFUbKFbHxbKGbKHbKIbKJbKKbKLbKMbKcbKNbGYbJnbJobGXbGYbGYbHJbKObJrbJsbJrbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacbfUbEbbDxbDxbKgbKhbKibKjbkZbHUbkYbkMbHUblbblcblablAblwbljblhbkvblmbgzbllbhOblvblubltbfkbKvbKwbKxbFObyabIZbKzbKAbKBbKCbKDbKEbFbbJYbFUbKFbHxbKGbKHbKIbKJbKKbKLbKMbKcbKNbGYbJnbJobGXbGYbGYbHJbKOaSUbGYaSUbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacbfUbKPbKQbDxbDxbDxbDxbDxbDxbNKbKnbKnbHUblyblxblCblBbmtbjKbmdblKblJblIblHblQblPblOblLbfkbIdbLabLbbFbbFbbFbbFbbFbbFbbFbbFbbFbbFbbJYbLcbLcbLdbLebKcbLfbLgbLhbLibLjbKcbLkbLlbLmbLnbLobIqbLpbLqbLrbLsbLtbLsbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacbfUbLubBXbEbbEbbKPbEbbEbbEbbNKbLwbLwbHUblXblWblVbmqbmebABbzYblsbmsbkpbmrbhObmvbmubgDbrIbLHbLIbLJbLKbLLbLMbLNbLObLPbLQaacaacbFUbJebLcbLRbLSbLTbKcbLUbLgbLVbLWbLXbLYbLZbMabMabMbbMcbGYbGYbLqbMdbHLbMebMfbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacbfUbfUbfUbfUbfUbWSbWRbWQbWTbNKbLwbLwbHUbyQbybbxZbKWbJEbCgbyWbDnbMrbfkbBNbFrbFqbESbDobFvbMybMzbMAbLKbMBbMCbMDbMDbMEbLQaacaacbFUbJebLcbMFbMGbMHbKcbMIbLgbMJbMKbMLbMMbMNbMObMObMPbGYbMQbMQbMRbMdbGkaaaahUbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacaacbMSbMSbMSbMSbMSbMSbMSbMSbMTbMTbMTbMTbFCbMTbMTbMTbMUbMVbGobGmbGmbGubGsbGmbGmbGmbMZbJPbNabNbbNcbNdbNebNfbNgbLQaacaacbFUbJebLcbNhbNibHgbKcbNkbLibNlbLgbNmbKcbNnbGYbGYbNobHjbLtbNqbLtbNrbGkaaaahUbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacaacbMSbMSbMSbMSbMSbMSbMSbMSbMTbMTbMTbMTbFCbMTbMTbMTbMUbMVbGobGmbGmbGubGsbGmbGmbGmbMZbJPbNabNbbNcbNdbNebNfbNgbLQaacaacbFUbJebLcbJsbJrbHgbKcbNkbLibNlbLgbNmbKcbNnbGYbGYbNobHjbLtbNqbLtbNrbGkaaaahUbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacaacbMSbNsbNtbNubNvbNwbNxbNybHVbNBbNBbIebHWbICbIfbNFbNGbNHbIHbgxbIEbIPbINbIMbIKbgxbNObNPbNQbLKbNRbNSbMDbMDbMEbLQaacbNTbNTbNUbLcbLcbLcbLcbKcbKcbNVbNWbJAbNXbNYbNZbOabObbFlbFlbFlbFlbFlbFlbFlahUahUahUbGlbGlbGlbGlbGlahUahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacaacbJBbOcbOdbOebOfbOgbJDbOibJCbOlbOlbOmbJFbOnbOnbOnbOobJKbJIbgxbJGbKlbKkbJNbJLbgxbKpbOybOzbLKbOAbOBbOCbODbKtbLQaacbNTbOFbOGbWXbNTaacaacaacbKcbKcbKcbKcbKcbKcbFlbFlbFlbFlaacaacaacaacaacbOIahUahUahUahUahUahUahUahUahUahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacbMSbOJbOKbOLbOMbONbOObOPbOQbKTbKSbKRbKubOTbOTbOTbOUbLxbOqbKYbKVbKlbLCbKlbLzbMmbMkbPabPbbPcbPdbPdbPdbPdbPdbPdaacbNTbPebPfbPgbNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaahUaaaaaaaaaaaaaaaaaaaaaahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -5585,17 +5589,17 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacbQjbQjbQjbQjbQjbQjbQjbQjbQkbPmbQlbPobPpbQmbQnbPsbPVbPWbQobgxbOtbOYbOWbOSbOEbgxbQubJPbNabQvbQwbQxbQzbQybQAbPdbQBbQCbQBbLGbQibNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacbQjbQDbQEbQFbQGbQHbQIbQJbQKbPmbPobPobPSbPTbPTbPUbPVbPWbQLbgxbgxbMqbPwbMqbgxbgxbQNbMzbNQbPCbQObQPbQgbQgbQQbPdbQBbQBbQBbLGbQRbNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacbQjbQSbQTbQUbQVbQWbQXbQYbQZbRabRbbRcbRdbRebRfbRgbRhbRibRjbRkbRlbRmbPYbRobRpbRqbRrbRsbRtbPCbRubRvbRwbRxbQpbPdbRzbRzbQBbLGbRAbNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabRBbRCbQUbRDbREbRFbRGbQJbPlbRHbRIbPobPSbPTbPTbPUbRJbRKbOTbOTbOTbOTbQrbOTbQqbRMbRNbRObOzbPdbPdbPdbPdbPdbPdbPdbRzbRzbRPbLGbRAbNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabRBbRQbRRbRRbRSbRTbRUbQjbRVbRWbRXbRYbRYbRZbSabRYbSbbScbSdbSebSebSzbSybSxbSgbShbSibSjbSkbSlbSmbSnbSobSpbSqbSrbSsbStbSubLGbRAbNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQjbSvbSvbSvbQjbQjbQjbQjbMTbMTbMTbSwbMTbMTbMTbUFbUFbUGbUFbUFbMTbUNbUPbUNbSwbLGbSAbSBbSCbSDbSEbSFbSGbSHbSEbSFbSIbSJbSKbSLbSMbNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabUDbRCbQUbRDbREbRFbRGbQJbPlbRHbRIbPobPSbPTbPTbPUbRJbRKbOTbOTbOTbOTbQrbOTbQqbRMbRNbRObOzbPdbPdbPdbPdbPdbPdbPdbRzbRzbRPbLGbRAbNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabUDbUEbRRbRRbRSbRTbRUbQjbRVbRWbRXbRYbRYbRZbSabRYbSbbScbSdbSebSebSzbSybSxbSgbShbSibSjbSkbSlbSmbSnbSobSpbSqbSrbSsbStbSubLGbRAbNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQjbWwbWwbWwbQjbQjbQjbQjbMTbMTbMTbSwbMTbMTbMTbUFbUFbUGbUFbUFbMTbUNbUPbUNbSwbLGbSAbSBbSCbSDbSEbSFbSGbSHbSEbSFbSIbSJbSKbSLbSMbNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacbUVbUYbUXbUWbUVbVcbVbbVabUZbVfbVebVdbVbbVkbVjbVibVhbTabTbbVlbTbbTdbTebVobTebTgbThbVqbThbTgbTjbNTbNTbNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacbUVbVubVtbVsbUVbVxbVbbVwbVvbVBbVAbVzbVbbVIbVGbVEbVDbTabTubTvbTwbTdbTxbTybTzbTgbTAbTBbTCbTgaataacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbUVbUVbVNbUVbUVbVQbVbbVPbVObVTbVSbVzbVbbVXbVWbVVbVUbTabTMbTNbTObTdbTPbTQbTRbTgbTSbTTbTUbTgaataataacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVYbWcbWbbWabVZbWgbWfbWebWdbWkbWjbWibVbbWobWnbWmbWlbTabUjbUkbUlbTdbUmbUnbUobTgbUpbUqbUrbTgaataataacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVYbWsbWrbWqbWpbWvbVbbWtbVAbVAbVAbVzbVbbWwbWwbWwbWwbTabUCbUCbUCbTdbUDbUDbUDbTgbUEbUEbUEbTgaataataataacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVYbWsbWrbWqbWpbWvbVbbWtbVAbVAbVAbVzbVbbWLbWLbWLbWLbTabXhbXhbXhbTdbXibXibXibTgbXjbXjbXjbTgaataataataacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabUVbWxbWxbUVbUVbUVbVbbWzbVAbVAbVAbWCbVbaataataatbWDaataataataataataataataataataataataataataataataataataacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacbVbbWGbWFbWFbWFbWHbVbaataataataataataataataataataataataataataataataataataataataataataataacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacbVbbWLbWLbWLbWLbWLbVbaataataataataataataataataataataataataataataataataataataataataataataataacaacaacaacaacaacaacaacaacaacaacaacaacaacaataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacbVbbXkbXkbXkbXkbXkbVbaataataataataataataataataataataataataataataataataataataataataataataataacaacaacaacaacaacaacaacaacaacaacaacaacaacaataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaataataataataataataataataataataataataataataataataataataataataataataataataataataataataataataataacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaataataataataataataataataataataataataataataataataataataataataataataataataataataataataataacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaataataataataataataataataataataataataataataataabaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 2c8df87899c35a0fde9b3f5ba796c48bc672fc25 Mon Sep 17 00:00:00 2001 From: Leshana Date: Tue, 30 May 2017 12:45:21 -0400 Subject: [PATCH 31/84] Tweak to Radiation Optimization * Optimized garbage collection of radiation sources until we get qdel() hints. * Made the RADIATION_LOWER_LIMIT configurable (option for people to save some cpu time) * Added some comments and broke the proccessor into separate procs for profiling purposes * Added a changelog. --- code/controllers/Processes/radiation.dm | 11 +++++++++-- code/controllers/configuration.dm | 3 +++ code/datums/repositories/radiation.dm | 13 ++++++++++--- config/example/config.txt | 3 +++ html/changelogs/Leshana-Radiation.yml | 5 +++++ 5 files changed, 30 insertions(+), 5 deletions(-) create mode 100644 html/changelogs/Leshana-Radiation.yml diff --git a/code/controllers/Processes/radiation.dm b/code/controllers/Processes/radiation.dm index e64f71ebb7..192acf5d5c 100644 --- a/code/controllers/Processes/radiation.dm +++ b/code/controllers/Processes/radiation.dm @@ -7,7 +7,12 @@ linked = radiation_repository /datum/controller/process/radiation/doWork() - // Step 1 - Sources Decay + sources_decay() + cache_expires() + irradiate_targets() + +// Step 1 - Sources Decay +/datum/controller/process/radiation/proc/sources_decay() var/list/sources = linked.sources for(var/thing in sources) if(deleted(thing)) @@ -20,7 +25,8 @@ sources.Remove(S) SCHECK // This scheck probably just wastes resources, but better safe than sorry in this case. - // Step 2 - Cache Expires +// Step 2 - Cache Expires +/datum/controller/process/radiation/proc/cache_expires() var/list/resistance_cache = linked.resistance_cache for(var/thing in resistance_cache) if(deleted(thing)) @@ -32,6 +38,7 @@ SCHECK // Step 3 - Registered irradiatable things are checked for radiation +/datum/controller/process/radiation/proc/irradiate_targets() var/list/registered_listeners = living_mob_list // For now just use this. Nothing else is interested anyway. if(length(linked.sources) > 0) for(var/thing in registered_listeners) diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index c22ac1bc81..51fc286928 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -720,6 +720,9 @@ var/list/gamemode_cache = list() if(values.len > 0) language_prefixes = values + if("radiation_lower_limit") + radiation_lower_limit = text2num(value) + else log_misc("Unknown setting in configuration: '[name]'") diff --git a/code/datums/repositories/radiation.dm b/code/datums/repositories/radiation.dm index 457e423b4e..5471282026 100644 --- a/code/datums/repositories/radiation.dm +++ b/code/datums/repositories/radiation.dm @@ -19,14 +19,23 @@ var/global/repository/radiation/radiation_repository = new() radiation_repository.sources -= src if(radiation_repository.sources_assoc[src.source_turf] == src) radiation_repository.sources -= src.source_turf + src.source_turf = null . = ..() +// TEMPORARY HACK - hard del()'ing sources is too expensive! Until we implement qdel() hints we need to override behavior here +/datum/radiation_source/finalize_qdel() + if(garbage_collector) + garbage_collector.AddTrash(src) + else + delayed_garbage |= src +// TEMPORARY HACK END + /datum/radiation_source/proc/update_rad_power(var/new_power = null) if(new_power != null && new_power != rad_power) rad_power = new_power . = 1 if(. && !flat) - range = min(round(sqrt(rad_power / config.radiation_lower_limit)), 31) + range = min(round(sqrt(rad_power / config.radiation_lower_limit)), 31) // R = rad_power / dist**2 - Solve for dist // Ray trace from all active radiation sources to T and return the strongest effect. /repository/radiation/proc/get_rads_at_turf(var/turf/T) @@ -76,7 +85,6 @@ var/global/repository/radiation/radiation_repository = new() S.source_turf = get_turf(source) S.update_rad_power(power) add_source(S) - return S // Sets the radiation in a range to a constant value. /repository/radiation/proc/flat_radiate(source, power, range, var/respect_maint = FALSE) @@ -89,7 +97,6 @@ var/global/repository/radiation/radiation_repository = new() S.source_turf = get_turf(source) S.update_rad_power(power) add_source(S) - return S // Irradiates a full Z-level. Hacky way of doing it, but not too expensive. /repository/radiation/proc/z_radiate(var/atom/source, power, var/respect_maint = FALSE) diff --git a/config/example/config.txt b/config/example/config.txt index 232d3c66ad..52892bc14a 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -36,6 +36,9 @@ JOBS_HAVE_MINIMAL_ACCESS Configure how fast explosion strength diminishes when travelling up/down z levels. All explosion distances are multiplied by this each time they go up/down z-levels. #MULTI_Z_EXPLOSION_SCALAR 0.5 +# Radiation weakens with distance from the source; stop calculating when the strength falls below this value. Lower values mean radiation reaches smaller (with increasingly trivial damage) at the cost of more CPU usage. Max range = DISTANCE^2 * POWER / RADIATION_LOWER_LIMIT +# RADIATION_LOWER_LIMIT 0.35 + ## log OOC channel LOG_OOC diff --git a/html/changelogs/Leshana-Radiation.yml b/html/changelogs/Leshana-Radiation.yml new file mode 100644 index 0000000000..d4d9c3589d --- /dev/null +++ b/html/changelogs/Leshana-Radiation.yml @@ -0,0 +1,5 @@ +author: Leshana +delete-after: True +changes: + - tweak: "Optimized the unified radiation system. Made the radiation cutoff level configurable." + - bugfix: "Standing still won't save you from radiation storms." From a94887af27b83e30df58a2d48208133a0c4db56d Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Tue, 30 May 2017 14:47:39 -0400 Subject: [PATCH 32/84] Properly hide traits already selected --- code/modules/client/preference_setup/vore/07_traits.dm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/code/modules/client/preference_setup/vore/07_traits.dm b/code/modules/client/preference_setup/vore/07_traits.dm index cd5189a8b9..4d97091c74 100644 --- a/code/modules/client/preference_setup/vore/07_traits.dm +++ b/code/modules/client/preference_setup/vore/07_traits.dm @@ -196,10 +196,10 @@ picklist = positive_traits.Copy() - pref.pos_traits mylist = pref.pos_traits if(NEUTRAL_MODE) - picklist = neutral_traits.Copy() - pref.pos_traits + picklist = neutral_traits.Copy() - pref.neu_traits mylist = pref.neu_traits if(NEGATIVE_MODE) - picklist = negative_traits.Copy() - pref.pos_traits + picklist = negative_traits.Copy() - pref.neg_traits mylist = pref.neg_traits else @@ -224,7 +224,7 @@ var/done = FALSE while(!done) var/message = "\[Remaining: [points_left] points, [traits_left] traits\] Select a trait to read the description and see the cost." - trait_choice = input(message,"Positive Traits") in nicelist + trait_choice = input(message,"Trait List") as null|anything in nicelist if(trait_choice in nicelist) var/datum/trait/path = nicelist[trait_choice] var/choice = alert("\[Cost:[initial(path.cost)]\] [initial(path.desc)]",initial(path.name),"Take Trait","Cancel","Go Back") @@ -241,6 +241,9 @@ var/conflict = FALSE + if(trait_choice in pref.pos_traits + pref.neu_traits + pref.neg_traits) + conflict = instance.name + varconflict: for(var/P in pref.pos_traits + pref.neu_traits + pref.neg_traits) var/datum/trait/instance_test = all_traits[P] From a8a668b7b3e39942a09fc28bee840e4875f633ae Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Tue, 30 May 2017 15:12:04 -0400 Subject: [PATCH 33/84] Make cancel work on trait list --- code/modules/client/preference_setup/vore/07_traits.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/client/preference_setup/vore/07_traits.dm b/code/modules/client/preference_setup/vore/07_traits.dm index 4d97091c74..a16e9057b3 100644 --- a/code/modules/client/preference_setup/vore/07_traits.dm +++ b/code/modules/client/preference_setup/vore/07_traits.dm @@ -225,6 +225,8 @@ while(!done) var/message = "\[Remaining: [points_left] points, [traits_left] traits\] Select a trait to read the description and see the cost." trait_choice = input(message,"Trait List") as null|anything in nicelist + if(!trait_choice) + done = TRUE if(trait_choice in nicelist) var/datum/trait/path = nicelist[trait_choice] var/choice = alert("\[Cost:[initial(path.cost)]\] [initial(path.desc)]",initial(path.name),"Take Trait","Cancel","Go Back") From 7ffc3a396010199613015e4dd0ecd791dc1cf5f9 Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Tue, 30 May 2017 15:13:50 -0400 Subject: [PATCH 34/84] Fix lesser predator crate Had the same path as the more expensive one, so the firstly defined one would be overridden and not show up. --- code/datums/supplypacks/science_vr.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/supplypacks/science_vr.dm b/code/datums/supplypacks/science_vr.dm index 7ffcf0db96..0bc0b3f740 100644 --- a/code/datums/supplypacks/science_vr.dm +++ b/code/datums/supplypacks/science_vr.dm @@ -49,7 +49,7 @@ containername = "Dangerous Predator crate" access = access_xenobiology -/datum/supply_packs/sci/pred +/datum/supply_packs/sci/pred_doom name = "EXTREMELY Dangerous Predator crate" cost = 200 containertype = /obj/structure/largecrate/animal/dangerous From 4913464913b5556c43ea5899e149cf453ac53b91 Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Tue, 30 May 2017 15:50:23 -0400 Subject: [PATCH 35/84] A Jacket To Match The Coat And normal holster instead of leg holster. Because I can never decide what I want. --- code/modules/vore/fluffstuff/custom_boxes_vr.dm | 2 +- config/custom_items.txt | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/code/modules/vore/fluffstuff/custom_boxes_vr.dm b/code/modules/vore/fluffstuff/custom_boxes_vr.dm index a1ef6d8dd5..5681714595 100644 --- a/code/modules/vore/fluffstuff/custom_boxes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_boxes_vr.dm @@ -174,7 +174,7 @@ new /obj/item/clothing/glasses/omnihud/med/fluff/aronai(src) //Gun and holster new /obj/item/weapon/gun/energy/netgun(src) - new /obj/item/clothing/accessory/holster/leg(src) + new /obj/item/clothing/accessory/holster(src) //Aerowing:Sebastian Aji /obj/item/weapon/storage/box/fluff/sebastian_aji diff --git a/config/custom_items.txt b/config/custom_items.txt index 5e142ea5eb..7c5c51311b 100644 --- a/config/custom_items.txt +++ b/config/custom_items.txt @@ -62,6 +62,14 @@ item_name: centcom medical uniform item_desc: A medical uniform straight from Central Command. } +{ +ckey: arokha +character_name: Aronai Kadigan +item_path: /obj/item/clothing/suit/storage/service/expeditionary/medical/command +item_name: centcom medical jacket +item_desc: A medical jacket straight from Central Command. +} + { ckey: arokha character_name: Aronai Kadigan From 67dce8524bff9fe3a9099a0f63db0ec3843c7201 Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Tue, 30 May 2017 16:25:55 -0400 Subject: [PATCH 36/84] Please let the blood go away You can't qdel lists. --- code/modules/mob/living/carbon/human/human.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index e6865ef51e..45f6459f32 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1037,7 +1037,8 @@ gunshot_residue = null if(clean_feet && !shoes && istype(feet_blood_DNA, /list) && feet_blood_DNA.len) feet_blood_color = null - qdel(feet_blood_DNA) + feet_blood_DNA.Cut() + feet_blood_DNA = null update_inv_shoes(1) return 1 From 64ff8bed081a0e72658143aef8ec661f50340580 Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Tue, 30 May 2017 16:25:55 -0400 Subject: [PATCH 37/84] Please let the blood go away You can't qdel lists. --- code/modules/mob/living/carbon/human/human.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 66abc50cab..aa9ec53cfe 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1015,7 +1015,8 @@ gunshot_residue = null if(clean_feet && !shoes && istype(feet_blood_DNA, /list) && feet_blood_DNA.len) feet_blood_color = null - qdel(feet_blood_DNA) + feet_blood_DNA.Cut() + feet_blood_DNA = null update_inv_shoes(1) return 1 From e75cda5c6f482f4407f94de6d7fce813ef1b5581 Mon Sep 17 00:00:00 2001 From: Dhaeleena Date: Tue, 30 May 2017 19:53:22 -0300 Subject: [PATCH 38/84] Very small fixes. Mostly two substations with wrong names or areas and wrong id_tags --- maps/tether/tether-01-surface.dmm | 40 +++++++++++++++---------------- maps/tether/tether-03-station.dmm | 4 ++-- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/maps/tether/tether-01-surface.dmm b/maps/tether/tether-01-surface.dmm index 2390afc101..8209efe78c 100644 --- a/maps/tether/tether-01-surface.dmm +++ b/maps/tether/tether-01-surface.dmm @@ -254,7 +254,7 @@ "aeT" = (/obj/machinery/power/sensor{name = "Powernet Sensor - Mining Subgrid"; name_tag = "Mining Subgrid"},/obj/structure/cable/green{icon_state = "0-4"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor,/area/maintenance/substation/mining) "aeU" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/obj/effect/floor_decal/rust,/turf/simulated/floor,/area/maintenance/substation/mining) "aeV" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/alarm{pixel_y = 22},/obj/effect/floor_decal/rust,/turf/simulated/floor,/area/maintenance/substation/mining) -"aeW" = (/obj/machinery/door/airlock/engineering{name = "Science Substation"; req_one_access = list(11,24,47)},/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/maintenance/substation/mining) +"aeW" = (/obj/machinery/door/airlock/engineering{name = "Mining Substation"; req_one_access = list(11,24,47)},/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/maintenance/substation/mining) "aeX" = (/obj/structure/catwalk,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining_eva) "aeY" = (/obj/effect/floor_decal/techfloor{dir = 1},/obj/machinery/vending/cigarette{name = "Cigarette machine"; prices = list(); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining) "aeZ" = (/obj/effect/floor_decal/techfloor{dir = 1},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining) @@ -304,7 +304,7 @@ "afR" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Mining Substation Bypass"},/turf/simulated/floor,/area/maintenance/substation/mining) "afS" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/camera/network/engineering{dir = 1},/turf/simulated/floor,/area/maintenance/substation/mining) "afT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/maintenance/substation/mining) -"afU" = (/obj/machinery/door/airlock/engineering{name = "Science Substation"; req_one_access = list(11,24,47)},/obj/machinery/door/firedoor/glass,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/maintenance/substation/mining) +"afU" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/airlock/engineering{name = "Mining Substation"; req_one_access = list(11,24,47)},/turf/simulated/floor,/area/maintenance/substation/mining) "afV" = (/obj/structure/catwalk,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining_eva) "afW" = (/obj/structure/railing{dir = 8},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining_eva) "afX" = (/obj/effect/floor_decal/techfloor{dir = 1},/obj/structure/bed/padded,/obj/item/weapon/bedsheet/mime,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining) @@ -719,7 +719,7 @@ "anQ" = (/obj/structure/sign/directions/evac,/turf/simulated/wall,/area/crew_quarters/locker) "anR" = (/turf/simulated/wall,/area/crew_quarters/locker) "anS" = (/obj/effect/floor_decal/techfloor,/obj/structure/railing{dir = 1},/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/random/junk,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit) -"anT" = (/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Bar"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/substation/bar) +"anT" = (/turf/simulated/wall,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"}) "anU" = (/obj/structure/table/standard,/obj/machinery/computer/atmoscontrol/laptop{monitored_alarm_ids = list("isolation_one","isolation_two"); req_one_access = list(47,24,11)},/turf/simulated/floor/tiled,/area/rnd/anomaly_lab) "anV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/rnd/anomaly_lab/containment_one) "anW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/rnd/anomaly_lab/containment_one) @@ -2850,7 +2850,7 @@ "bcP" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/yellow/border,/obj/effect/floor_decal/borderfloor/corner2{dir = 9},/obj/effect/floor_decal/corner/yellow/bordercorner2{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 8},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled,/area/engineering/atmos/hallway) "bcQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 6},/turf/simulated/floor/tiled,/area/engineering/atmos/hallway) "bcR" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos/hallway) -"bcS" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Bar Substation Bypass"},/turf/simulated/floor/plating,/area/maintenance/substation/bar) +"bcS" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable{icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"}) "bcT" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 10; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/engineering/atmos/hallway) "bcU" = (/turf/simulated/floor/tiled,/area/engineering/atmos/hallway) "bcV" = (/obj/effect/floor_decal/steeldecal/steel_decals4,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/tiled,/area/engineering/atmos/hallway) @@ -4790,7 +4790,7 @@ "bOf" = (/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation) "bOg" = (/obj/machinery/atmospherics/pipe/simple/visible/red{dir = 9},/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation) "bOh" = (/obj/machinery/atmospherics/pipe/manifold/visible/supply,/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers,/obj/effect/decal/cleanable/dirt,/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/atmos) -"bOi" = (/turf/simulated/wall,/area/maintenance/substation/bar) +"bOi" = (/obj/structure/cable{icon_state = "2-8"},/obj/machinery/camera/network/engineering,/obj/structure/cable{icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"}) "bOj" = (/obj/structure/table/rack,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/maintenance/research,/turf/simulated/floor/plating,/area/maintenance/lower/atrium) "bOk" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plating,/area/maintenance/lower/atrium) "bOl" = (/obj/machinery/door/airlock/maintenance/common{name = "Hydroponics Maintenance"; req_access = list(35)},/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/hydroponics) @@ -4830,9 +4830,9 @@ "bOT" = (/obj/machinery/light/small{dir = 8; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/lower/atrium) "bOU" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/maintenance/engi{name = "Engineering Pump Station"},/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation) "bOV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/locker_room) -"bOW" = (/obj/structure/cable{icon_state = "2-8"},/obj/machinery/camera/network/engineering,/obj/structure/cable{icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/substation/bar) -"bOX" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable{icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/substation/bar) -"bOY" = (/obj/machinery/alarm{pixel_y = 22},/obj/effect/decal/cleanable/blood/splatter,/obj/structure/cable{icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/substation/bar) +"bOW" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable{icon_state = "4-8"},/obj/machinery/door/airlock/maintenance/engi{name = "Bar Substation"},/turf/simulated/floor/plating,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"}) +"bOX" = (/obj/machinery/alarm{pixel_y = 22},/obj/effect/decal/cleanable/blood/splatter,/obj/structure/cable{icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"}) +"bOY" = (/obj/machinery/power/terminal,/obj/structure/cable{icon_state = "0-8"},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/plating,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"}) "bOZ" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/lower/atrium) "bPa" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lime/border{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/computer/guestpass{dir = 4; pixel_x = -28; pixel_y = 0},/turf/simulated/floor/tiled,/area/hydroponics) "bPb" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled,/area/hydroponics) @@ -4864,10 +4864,10 @@ "bPB" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 5},/obj/structure/railing{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation) "bPC" = (/obj/machinery/atmospherics/pipe/zpipe/down/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/zpipe/down/supply{dir = 8},/obj/structure/cable/cyan{d1 = 32; d2 = 2; icon_state = "32-2"},/obj/machinery/camera/network/engineering{dir = 8},/obj/machinery/door/firedoor/glass,/turf/simulated/open,/area/maintenance/engineering/pumpstation) "bPD" = (/obj/effect/decal/cleanable/dirt,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/lower/atrium) -"bPE" = (/obj/structure/sign/warning/high_voltage,/turf/simulated/wall,/area/maintenance/substation/bar) -"bPF" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/plating,/area/maintenance/substation/bar) -"bPG" = (/obj/machinery/power/terminal,/obj/structure/cable{icon_state = "0-8"},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/plating,/area/maintenance/substation/bar) -"bPH" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 28},/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/obj/structure/cable,/turf/simulated/floor/plating,/area/maintenance/substation/bar) +"bPE" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/plating,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"}) +"bPF" = (/obj/structure/sign/warning/high_voltage,/turf/simulated/wall,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"}) +"bPG" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 28},/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/obj/structure/cable,/turf/simulated/floor/plating,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"}) +"bPH" = (/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Surface Civilian"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"}) "bPI" = (/obj/effect/decal/cleanable/dirt,/obj/random/junk,/turf/simulated/floor,/area/maintenance/lower/south) "bPJ" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lime/border{dir = 8},/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/super; dir = 8; name = "west bump"; pixel_x = -30},/obj/structure/cable/green,/turf/simulated/floor/tiled,/area/hydroponics) "bPK" = (/obj/machinery/biogenerator,/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lime/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 6},/obj/effect/floor_decal/corner/lime/bordercorner2{dir = 6},/turf/simulated/floor/tiled,/area/hydroponics) @@ -4897,7 +4897,7 @@ "bQi" = (/obj/machinery/atmospherics/pipe/simple/visible/blue{dir = 10},/obj/structure/railing{dir = 1},/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation) "bQj" = (/turf/simulated/floor/tiled/techmaint,/area/tcomsat) "bQk" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/treatment,/obj/item/weapon/stock_parts/subspace/treatment,/obj/item/weapon/stock_parts/subspace/treatment,/turf/simulated/floor/tiled/techmaint,/area/tcomsat) -"bQl" = (/obj/machinery/power/sensor{name = "Powernet Sensor - Surface Civilian Subgrid"; name_tag = "Surface Civilian Subgrid"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/turf/simulated/floor/plating,/area/maintenance/substation/bar) +"bQl" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Surface Civilian Substation Bypass"},/turf/simulated/floor/plating,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"}) "bQm" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/locker_room) "bQn" = (/obj/effect/decal/cleanable/dirt,/obj/structure/table/rack,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/obj/random/junk,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/lower/rnd) "bQo" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/lower/atrium) @@ -4944,7 +4944,7 @@ "bRd" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/mauve/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/corner/mauve/bordercorner2{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/turf/simulated/floor/tiled,/area/hallway/lower/third_south) "bRe" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation) "bRf" = (/obj/machinery/light/small,/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation) -"bRg" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable{icon_state = "4-8"},/obj/machinery/door/airlock/maintenance/engi{name = "Bar Substation"},/turf/simulated/floor/plating,/area/maintenance/substation/bar) +"bRg" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/maintenance/engi{name = "Bar Substation"},/turf/simulated/floor/plating,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"}) "bRh" = (/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{scrub_id = "atrium"},/turf/simulated/floor/tiled/techmaint,/area/hallway/lower/third_south) "bRi" = (/obj/random/toy,/turf/simulated/floor/plating,/area/maintenance/lower/atrium) "bRj" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/lower/atrium) @@ -5305,7 +5305,7 @@ "bYa" = (/obj/effect/decal/cleanable/dirt,/obj/structure/table/rack,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/research,/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south) "bYb" = (/obj/machinery/door/airlock/maintenance/engi{name = "Engineering Pump Station"},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation) "bYc" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/decal/cleanable/dirt,/obj/random/junk,/turf/simulated/floor/plating,/area/maintenance/lower/atrium) -"bYd" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/maintenance/engi{name = "Bar Substation"},/turf/simulated/floor/plating,/area/maintenance/substation/bar) +"bYd" = (/obj/machinery/power/sensor{name = "Powernet Sensor - Surface Civilian Subgrid"; name_tag = "Surface Civilian Subgrid"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/turf/simulated/floor/plating,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"}) "bYe" = (/obj/structure/railing{dir = 8},/obj/effect/floor_decal/techfloor{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/asmaint2) "bYf" = (/obj/machinery/door/airlock/maintenance/rnd{name = "Research Maintenance Access"},/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/rnd/lockers) "bYg" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance/rnd{name = "Science Maintenance"},/turf/simulated/floor/tiled/steel_grid,/area/rnd/hallway) @@ -5715,11 +5715,11 @@ boYboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabp boYboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbbcbLYbLZbLZbLZbLZbMabLZbMbbMcbMdbMebLzbMfbMgbMhbMibMhbMjbKSbLGbJVbMkbMlbMlbMlbMlbMlbMlbMlbLbbMmbKBbMnbMobMpbKBbDGbLfbKHbMqbNdbMsbMtbLObLQbKJbLnbIZbKLbFQbMubHebMvbMwbMwbMwbMxbZQbIlbHebHebHebMybFQbpabpabpaboZboZboZboZboZboZboZboZboZboZboZboY boYboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbMzbMAbMBbMCbMCbMDbMEaYibMFbMGbMHbMIbMJbMKbMLbMMbMNbMObMPbKSbMQbJVbMRbMlbMSbMTbMUbMSbMSbMlbMVbMWbKBbMXbMYbMZbKBbNabNbbKHbNcbNdbMsbMtbLObNebNfbNgbIZbKLbNhbNibHebJobHebHebHebIlbIQbIlbHebHebHebNjbFQbpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY boYboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbNkbMAbNlbNmbNmbNnbNoaYibNpbNqbMAbNraUYbNsbNtbNtbNubNvbNwbNxbMQbNybNzbMlbNAbNBbNBbNBbNCbMlbLKbNEbKBbNFbNGbNHbKBbNIbNJbKHbNKbNdbMsbMtbNLbNMbNNbNObNPbNQbFQbNRbHebJobHebHebHebHebZnbHebHebHebHebNTbFQbJGbFQbpabpaboZboZboZboZboZboZboZboZboZboZboY -boYboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbNUbMAbZSbNmbNmbNnaYUbNVbNWbNXbNYbbgaUYbNZbNZbNZbKSbOabNZbKSbMQbJVbObbMlbOcbOdbOebOfbOgbOUbLIbNEbOibOibOibOibOibOjbOkbOlbOmbOnbOobOpbOqbOrbKJbOsbIZbKLbJGbOtbOtbJobHebHebHebIlbIQbIlbHebHebHebHebOubLobJLbpabpaboZboZboZboZboZboZboZboZboZboZboY -boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabOvaUYbOwbMAbZSbOxbOybOzbZobOBbOCbNqbODbOEaUYbOFbOGbOHbOIbOJbOKbOLbOMbJVbONbMlbOObOPbOQbORbOSbMlbOTbRkbRgbOWbOXbOYbOibKBbOZbKHbPabNdbMsbMtbPbbPcbPdbPebIZbKLbJGbPfbPgbPhbLVbLVbLVbLWbZRbIlbHebHebHebHebIlbKmbJLbpaboZboZboZboZboZboZboZboZboZboZboZboY -boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbPibMAbPjaYibPkbPlbPmbPlbPnbPobPpbPqbPrbPsbPtbPubPvbPwbPxbPxbJdbZpbPzbMlbOObPAbOQbPBbPCbMlbLIbPDbPEbPFbPGbPHbOibXZbOZbKHbPJbNdbMsbMtbLObPKbNfbPLbIZbKLbJGbPgbPgbPMbMwbMwbMwbMxbIPbIlbHebHebHebHebIlbIQbJLbpaboZboZboZboZboZboZboZboZboZboZboZboY -boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbPNbPOaYiaYibNqaYibPPbPQbPRbPSbPTbPUaUYbPVbPWbPXbOIbPYbPZbQabQbbQcbQdbMlbQebQfbQgbQhbQibYbbLIbPDbOibcSanTbQlbYdbYcbQobKHbMqbNdbMsbMtbLObQpbKJbLnbIZbKLbJGbPgbPgbQqbHebHebHebIlbKmbIlbHebHebHebHebIlbIQbJLbpaboZboZboZboZboZboZboZboZboZboZboZboY -boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbQrbQsaYiaYibNqaYibQtbQubQubQvbQwbQxbQubQubQybQybQybQybQybQybQzbQAbQBbMlbQCbQDbQEbQDbQFbMlbYlbPDbOibOibOibOibOibQHbYmbKHbQJbLNbLObLObLPbLQbKJbLnbIZbKLbJGbQKbQKbJobHebHebHebHebHebHebHebQLbQMbQNbQObLobJLbpaboZboZboZboZboZboZboZboZboZboZboZboY +boYboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbNUbMAbZSbNmbNmbNnaYUbNVbNWbNXbNYbbgaUYbNZbNZbNZbKSbOabNZbKSbMQbJVbObbMlbOcbOdbOebOfbOgbOUbLIbNEanTanTanTanTanTbOjbOkbOlbOmbOnbOobOpbOqbOrbKJbOsbIZbKLbJGbOtbOtbJobHebHebHebIlbIQbIlbHebHebHebHebOubLobJLbpabpaboZboZboZboZboZboZboZboZboZboZboY +boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabOvaUYbOwbMAbZSbOxbOybOzbZobOBbOCbNqbODbOEaUYbOFbOGbOHbOIbOJbOKbOLbOMbJVbONbMlbOObOPbOQbORbOSbMlbOTbRkbOWbOibcSbOXanTbKBbOZbKHbPabNdbMsbMtbPbbPcbPdbPebIZbKLbJGbPfbPgbPhbLVbLVbLVbLWbZRbIlbHebHebHebHebIlbKmbJLbpaboZboZboZboZboZboZboZboZboZboZboZboY +boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbPibMAbPjaYibPkbPlbPmbPlbPnbPobPpbPqbPrbPsbPtbPubPvbPwbPxbPxbJdbZpbPzbMlbOObPAbOQbPBbPCbMlbLIbPDbPFbPEbOYbPGanTbXZbOZbKHbPJbNdbMsbMtbLObPKbNfbPLbIZbKLbJGbPgbPgbPMbMwbMwbMwbMxbIPbIlbHebHebHebHebIlbIQbJLbpaboZboZboZboZboZboZboZboZboZboZboZboY +boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbPNbPOaYiaYibNqaYibPPbPQbPRbPSbPTbPUaUYbPVbPWbPXbOIbPYbPZbQabQbbQcbQdbMlbQebQfbQgbQhbQibYbbLIbPDanTbQlbPHbYdbRgbYcbQobKHbMqbNdbMsbMtbLObQpbKJbLnbIZbKLbJGbPgbPgbQqbHebHebHebIlbKmbIlbHebHebHebHebIlbIQbJLbpaboZboZboZboZboZboZboZboZboZboZboZboY +boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbQrbQsaYiaYibNqaYibQtbQubQubQvbQwbQxbQubQubQybQybQybQybQybQybQzbQAbQBbMlbQCbQDbQEbQDbQFbMlbYlbPDanTanTanTanTanTbQHbYmbKHbQJbLNbLObLObLPbLQbKJbLnbIZbKLbJGbQKbQKbJobHebHebHebHebHebHebHebQLbQMbQNbQObLobJLbpaboZboZboZboZboZboZboZboZboZboZboZboY boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYaUYaUYbQPbQsaYibQQbQRaYibQSbQubQTbQUbQVbQWbQXbQubQYbQZbRabRbbRcbQybRdbQcbQdbMlbRebRebRfbRebRebMlbYpbPDbKBbRhbKBbRibKBbRjbYqbKHbRlbRmbRnbRobRpbRqbKHbKKbIZbRrbFQbRsbHobRtbHebHebHebHebHebHebHebFQbFQbFQbFQbFQbFQbpaboZboZboZboZboZboZboZboZboZboZboZboY boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbRubRvbRwbRxbRybRzbRAaYibRBbRCbRDbREbRFbRGbRHbQubRIbRJbRKbRLbRMbQybRNbQcbQdbRObMlbMlbMlbMlbMlbRPbKBbRQbKBbRRbKBbKBbKBbRSbKBbRTbKHbKJbKJbKJbKJbKHbKHbLnbRUbRVbFQbRWbHebZqbRYbRZbRZbRZbRZbRZbSabFQbSbbScbSdbFQbpabpaboZboZboZboZboZboZboZboZboZboZboZboY boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYaUYaUYbSebSfbSfbcCbSgbShbSibRCbSjbSkbSlbSmbSnbSobSpbSqbSrbSsbStbSubSvbSwbSxbSybSzbSAbSBbSCbSDbSybSEbSFbSGbSHbSIbSJbSKbSLbSMbSNbSObSPbSPbSPbSPbSQbSRbSSbSTbSUbSVbSWbHebSXbSYbSZbTabTabTabTbbTcbFQbTdbHebTebFQbpabpaboZboZboZboZboZboZboZboZboZboZboZboY diff --git a/maps/tether/tether-03-station.dmm b/maps/tether/tether-03-station.dmm index fefc14a77c..de7e7a1a20 100644 --- a/maps/tether/tether-03-station.dmm +++ b/maps/tether/tether-03-station.dmm @@ -4539,8 +4539,8 @@ "bJo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/quartermaster/storage) "bJp" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/storage) "bJq" = (/obj/effect/floor_decal/industrial/warning{dir = 5},/turf/simulated/floor/tiled,/area/quartermaster/storage) -"bJr" = (/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Bar"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/maintenance/substation/cargo) -"bJs" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Bar Substation Bypass"},/turf/simulated/floor,/area/maintenance/substation/cargo) +"bJr" = (/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Cargo"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/maintenance/substation/cargo) +"bJs" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Cargo Substation Bypass"},/turf/simulated/floor,/area/maintenance/substation/cargo) "bJt" = (/obj/structure/closet/wardrobe/black,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/newscaster{layer = 3.3; pixel_x = -27; pixel_y = 0},/obj/effect/floor_decal/corner_steel_grid{dir = 6},/turf/simulated/floor/tiled,/area/teleporter/departing) "bJu" = (/obj/effect/floor_decal/techfloor/orange{dir = 8},/turf/simulated/floor/tiled/techfloor,/area/teleporter/departing) "bJv" = (/obj/machinery/cryopod/robot/door/gateway,/turf/simulated/floor/tiled/techfloor,/area/teleporter/departing) From b339dd502cdc6f9fa18f8dda00e8a23e7b69c082 Mon Sep 17 00:00:00 2001 From: Dhaeleena Date: Tue, 30 May 2017 23:20:45 -0300 Subject: [PATCH 39/84] Not so smol foxes, I mean fixes, Changes base_turf of tram to be same as the surrounding turfs. Adds defibs to emergency shuttles. Does stuff in colony map with the turrets. --- maps/tether/tether-01-surface.dmm | 4 +- maps/tether/tether-03-station.dmm | 4 +- maps/tether/tether-06-colony.dmm | 262 ++++++++++++++++-------------- 3 files changed, 147 insertions(+), 123 deletions(-) diff --git a/maps/tether/tether-01-surface.dmm b/maps/tether/tether-01-surface.dmm index 8209efe78c..7c602728a0 100644 --- a/maps/tether/tether-01-surface.dmm +++ b/maps/tether/tether-01-surface.dmm @@ -909,8 +909,8 @@ "ary" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled,/area/tether/surfacebase/tram) "arz" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled,/area/tether/surfacebase/tram) "arA" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/tether/surfacebase/tram) -"arB" = (/turf/simulated/floor/maglev,/area/shuttle/escape/station) -"arC" = (/turf/simulated/floor/tiled/techfloor/grid,/area/shuttle/escape/station) +"arB" = (/turf/simulated/floor/maglev,/area/shuttle/escape/station{base_turf = /turf/simulated/floor/tiled/techfloor/grid}) +"arC" = (/turf/simulated/floor/tiled/techfloor/grid,/area/shuttle/escape/station{base_turf = /turf/simulated/floor/tiled/techfloor/grid}) "arD" = (/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/machinery/portable_atmospherics/canister/phoron,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled/monotile,/area/rnd/anomaly_lab) "arE" = (/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/turf/simulated/floor/tiled/monotile,/area/rnd/anomaly_lab) "arF" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/effect/floor_decal/corner/white{dir = 9},/obj/effect/floor_decal/corner/white{dir = 6},/turf/simulated/floor/tiled,/area/rnd/anomaly_lab) diff --git a/maps/tether/tether-03-station.dmm b/maps/tether/tether-03-station.dmm index de7e7a1a20..10e00cfdb6 100644 --- a/maps/tether/tether-03-station.dmm +++ b/maps/tether/tether-03-station.dmm @@ -12,7 +12,7 @@ "aal" = (/obj/structure/bed/chair,/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station) "aam" = (/obj/machinery/sleep_console{dir = 4},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station) "aan" = (/obj/machinery/sleeper{dir = 4},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station) -"aao" = (/obj/structure/table/standard,/obj/item/bodybag/cryobag,/obj/item/roller{pixel_y = 8},/obj/item/roller{pixel_y = 16},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station) +"aao" = (/obj/structure/table/standard,/obj/item/bodybag/cryobag,/obj/item/roller{pixel_y = 8},/obj/item/roller{pixel_y = 16},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/item/device/defib_kit,/obj/item/device/defib_kit,/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station) "aap" = (/obj/structure/bed/chair,/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0},/obj/structure/closet/walllocker/emerglocker{pixel_x = 0; pixel_y = 32},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station) "aaq" = (/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station) "aar" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station) @@ -3353,7 +3353,7 @@ "bmy" = (/obj/structure/shuttle/window,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/large_escape_pod1/station) "bmz" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod1/station) "bmA" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/item/weapon/wrench,/obj/random/medical/lite,/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod1/station) -"bmB" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/box/masks{pixel_x = 0; pixel_y = 0},/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/fire{layer = 2.9; pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/firstaid/adv{pixel_x = -2},/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod1/station) +"bmB" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/box/masks{pixel_x = 0; pixel_y = 0},/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/fire{layer = 2.9; pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/firstaid/adv{pixel_x = -2},/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/obj/item/device/defib_kit,/obj/item/device/defib_kit,/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod1/station) "bmC" = (/obj/machinery/sleeper{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod1/station) "bmD" = (/obj/machinery/sleep_console,/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod1/station) "bmE" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod1/station) diff --git a/maps/tether/tether-06-colony.dmm b/maps/tether/tether-06-colony.dmm index 7391e2a3d9..692c9c2e78 100644 --- a/maps/tether/tether-06-colony.dmm +++ b/maps/tether/tether-06-colony.dmm @@ -164,6 +164,7 @@ "dh" = (/obj/machinery/recharger{pixel_y = 4},/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome1) "di" = (/obj/effect/landmark{name = "tdome1"},/obj/machinery/camera/network/thunder{invisibility = 101},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome1) "dj" = (/obj/structure/table/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome1) +"dk" = (/obj/machinery/button/remote/blast_door{id = "crescent_checkpoint_access"; name = "Crescent Checkpoint Access"; pixel_x = -6; pixel_y = -24; req_access = list(101)},/turf/unsimulated/floor/steel,/area/centcom/control) "dl" = (/obj/machinery/camera/network/crescent{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/control) "dm" = (/obj/effect/wingrille_spawn/reinforced/crescent,/obj/structure/sign/nanotrasen,/turf/unsimulated/floor/steel,/area/centcom/control) "dn" = (/obj/structure/sign/department/armory,/turf/unsimulated/wall,/area/centcom/control) @@ -178,6 +179,7 @@ "dw" = (/obj/structure/railing{dir = 1},/obj/machinery/light/flamp/noshade,/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/centcom/evac) "dx" = (/obj/effect/floor_decal/corner_steel_grid{dir = 9},/turf/simulated/floor/outdoors/grass/sif/virgo3b,/area/centcom/evac) "dy" = (/obj/machinery/recharger{pixel_y = 4},/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome1) +"dz" = (/obj/machinery/turretid/stun{check_access = 0; check_anomalies = 0; check_records = 0; control_area = "\improper CentCom Control"; pixel_x = -28; pixel_y = -28; req_access = list(101)},/turf/unsimulated/floor/steel,/area/centcom/control) "dA" = (/obj/structure/flora/pottedplant{icon_state = "plant-22"},/turf/unsimulated/floor/steel,/area/centcom/control) "dB" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/control) "dC" = (/obj/machinery/computer/secure_data{dir = 8},/turf/unsimulated/floor/steel,/area/centcom/control) @@ -203,6 +205,7 @@ "dW" = (/obj/effect/floor_decal/industrial/warning/dust/corner{dir = 8},/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/centcom/evac) "dX" = (/obj/effect/landmark{name = "tdome2"},/obj/machinery/camera/network/thunder{invisibility = 101},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome1) "dY" = (/obj/machinery/flasher{id = "flash"; name = "Thunderdome Flash"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome) +"dZ" = (/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/obj/machinery/turretid/stun{check_access = 0; check_anomalies = 0; check_records = 0; control_area = "\improper Main Hallway"; pixel_y = 32; req_access = list(101); req_one_access = list(101)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/command) "ea" = (/obj/machinery/computer/security{dir = 8},/turf/unsimulated/floor/steel,/area/centcom/control) "eb" = (/obj/machinery/computer/crew{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/control) "ec" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor/steel,/area/centcom/control) @@ -251,6 +254,7 @@ "eT" = (/obj/effect/floor_decal/rust,/obj/effect/floor_decal/industrial/warning/dust{dir = 4},/obj/structure/railing{dir = 8},/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/centcom/evac) "eU" = (/obj/effect/floor_decal/corner_steel_grid/diagonal,/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/shuttle/large_escape_pod2/centcom) "eV" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome1) +"eW" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) "eX" = (/obj/structure/table/reinforced,/turf/unsimulated/floor/steel,/area/centcom/control) "eY" = (/obj/structure/table/reinforced,/obj/machinery/recharger{pixel_y = 4},/turf/unsimulated/floor/steel,/area/centcom/control) "eZ" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556/ap,/obj/item/ammo_magazine/a556/ap,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) @@ -278,6 +282,7 @@ "fv" = (/obj/effect/floor_decal/industrial/warning/dust{dir = 9},/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/centcom/evac) "fw" = (/obj/effect/floor_decal/industrial/warning/dust/corner{dir = 1},/obj/machinery/light/flamp/noshade,/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/centcom/evac) "fx" = (/obj/machinery/door/blast/regular{id = "thunderdomehea"; name = "Heavy Supply"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome1) +"fy" = (/turf/simulated/shuttle/wall,/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) "fz" = (/obj/machinery/computer/ordercomp{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/control) "fA" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo,/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo,/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo,/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "fB" = (/obj/effect/floor_decal/corner_steel_grid/diagonal,/obj/effect/floor_decal/industrial/warning/dust/corner{dir = 4},/obj/structure/railing{dir = 8},/obj/machinery/light/flamp/noshade,/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/centcom/evac) @@ -296,8 +301,9 @@ "fO" = (/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/centcom/evac) "fP" = (/obj/effect/floor_decal/rust,/obj/effect/floor_decal/corner_steel_grid/diagonal,/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/centcom/evac) "fQ" = (/obj/structure/table/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome1) +"fR" = (/obj/structure/closet/hydrant{pixel_x = -30; pixel_y = 0},/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/toxin,/obj/structure/bed/chair/shuttle,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) "fS" = (/obj/machinery/computer/robotics{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/control) -"fT" = (/obj/machinery/button/remote/blast_door{id = "crescent_checkpoint_access"; name = "Crescent Checkpoint Access"; pixel_x = -6; pixel_y = -24; req_access = list(101)},/obj/machinery/turretid{pixel_x = 28; pixel_y = -28; req_access = list(101)},/turf/unsimulated/floor/steel,/area/centcom/control) +"fT" = (/turf/simulated/shuttle/wall/hard_corner,/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) "fU" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/weapon/storage/box/sniperammo,/obj/item/weapon/storage/box/sniperammo,/obj/item/weapon/storage/box/sniperammo,/obj/item/weapon/storage/box/sniperammo,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "fV" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/weapon/gun/projectile/heavysniper,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "fW" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) @@ -358,7 +364,7 @@ "gZ" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/carbine,/obj/item/weapon/gun/projectile/automatic/carbine,/obj/item/weapon/gun/projectile/automatic/carbine,/obj/item/weapon/gun/projectile/automatic/carbine,/obj/item/weapon/gun/projectile/automatic/carbine,/obj/effect/floor_decal/industrial/outline/yellow,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "ha" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/wt550/lethal,/obj/item/weapon/gun/projectile/automatic/wt550/lethal,/obj/item/weapon/gun/projectile/automatic/wt550/lethal,/obj/item/weapon/gun/projectile/automatic/wt550/lethal,/obj/item/weapon/gun/projectile/automatic/wt550/lethal,/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "hb" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/obj/effect/floor_decal/industrial/outline/yellow,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"hc" = (/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/command) +"hc" = (/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) "hd" = (/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/structure/closet/secure_closet/nanotrasen_commander,/obj/item/clothing/suit/armor/swat,/obj/item/clothing/head/helmet/space/deathsquad{name = "swat helmet"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/command) "he" = (/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/structure/table/woodentable,/obj/machinery/recharger{pixel_y = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/command) "hf" = (/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/structure/table/woodentable,/obj/item/device/radio/off,/obj/item/device/megaphone,/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/command) @@ -423,7 +429,7 @@ "im" = (/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/green/border{dir = 8},/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 8},/obj/effect/floor_decal/corner/green/bordercorner2{dir = 8},/obj/machinery/computer/centrifuge,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical) "in" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/bed/chair{dir = 4},/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/green/border{dir = 8},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical) "io" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/green/border{dir = 4},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical) -"ip" = (/obj/machinery/turretid{pixel_x = -28; pixel_y = -28; req_access = list(101)},/turf/unsimulated/floor/steel,/area/centcom/control) +"ip" = (/obj/structure/bed/chair/shuttle,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) "iq" = (/obj/structure/bed/chair/office/dark,/obj/machinery/button/remote/blast_door{desc = "A remote control switch for port-side blast doors."; id = "CentComPort"; name = "Security Doors"; pixel_x = -12; pixel_y = -25; req_access = list(101)},/turf/unsimulated/floor/steel,/area/centcom/control) "ir" = (/obj/machinery/camera/network/crescent{dir = 8},/obj/machinery/computer/secure_data{dir = 8},/turf/unsimulated/floor/steel,/area/centcom/control) "is" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/table/rack{dir = 4},/obj/item/device/suit_cooling_unit,/obj/item/device/suit_cooling_unit,/obj/item/device/suit_cooling_unit,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) @@ -550,6 +556,7 @@ "kJ" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/turf/unsimulated/floor/steel,/area/centcom/security) "kK" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/security) "kL" = (/obj/machinery/door/airlock/external{locked = 1; name = "Emergency Airlock"; req_access = list(101)},/turf/unsimulated/floor/steel,/area/centcom/evac) +"kM" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) "kN" = (/obj/structure/table/standard,/obj/item/weapon/surgical/hemostat,/obj/item/weapon/surgical/cautery,/obj/effect/floor_decal/borderfloorwhite{dir = 9},/obj/effect/floor_decal/corner/paleblue/border{dir = 9},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical) "kO" = (/obj/structure/table/standard,/obj/item/stack/medical/advanced/bruise_pack,/obj/item/weapon/surgical/retractor,/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/paleblue/border{dir = 1},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical) "kP" = (/obj/structure/table/standard,/obj/item/weapon/surgical/circular_saw{pixel_y = 8},/obj/item/weapon/surgical/scalpel,/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/paleblue/border{dir = 1},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical) @@ -774,8 +781,8 @@ "pa" = (/obj/structure/flora/pottedplant{icon_state = "plant-21"},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) "pb" = (/obj/structure/curtain/open/shower,/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"},/obj/machinery/shower{pixel_y = 13},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) "pc" = (/obj/machinery/door/airlock/security{name = "Security"},/turf/unsimulated/floor/steel,/area/centcom/security) -"pd" = (/turf/simulated/shuttle/wall,/area/shuttle/escape/centcom) -"pe" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom) +"pd" = (/obj/structure/table/standard,/obj/random/maintenance/clean,/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) +"pe" = (/obj/machinery/status_display{pixel_y = 30},/obj/structure/table/standard,/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) "pf" = (/obj/structure/table/woodentable{dir = 5},/obj/structure/flora/pottedplant{pixel_y = 8},/turf/simulated/floor/tiled,/area/centcom/terminal) "pg" = (/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/paleblue/border{dir = 8},/obj/machinery/computer/crew{dir = 4},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical) "ph" = (/obj/structure/table/glass,/obj/item/weapon/paper_bin{pixel_x = -1; pixel_y = 3},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical) @@ -792,10 +799,10 @@ "ps" = (/obj/machinery/vending/cigarette,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/blue/border,/turf/unsimulated/floor/steel,/area/centcom/security) "pt" = (/obj/machinery/vending/snack,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/blue/border,/turf/unsimulated/floor/steel,/area/centcom/security) "pu" = (/obj/machinery/vending/coffee,/obj/effect/floor_decal/borderfloor{dir = 6},/obj/effect/floor_decal/corner/blue/border{dir = 6},/turf/unsimulated/floor/steel,/area/centcom/security) -"pv" = (/turf/simulated/shuttle/wall/hard_corner,/area/shuttle/escape/centcom) -"pw" = (/obj/structure/closet/hydrant{pixel_x = -30; pixel_y = 0},/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/toxin,/obj/structure/bed/chair/shuttle,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom) -"px" = (/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom) -"py" = (/obj/structure/bed/chair/shuttle,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom) +"pv" = (/obj/machinery/porta_turret/crescent,/obj/effect/floor_decal/industrial/hatch/yellow,/obj/structure/sign/warning/lethal_turrets{pixel_y = 32},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"pw" = (/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/obj/effect/floor_decal/borderfloor/corner2{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 1},/obj/machinery/turretid/stun{check_access = 0; check_anomalies = 0; check_records = 0; control_area = "\improper CentCom Security"; pixel_y = 32; req_access = list(101); req_one_access = list(101)},/turf/unsimulated/floor/steel,/area/centcom/security) +"px" = (/obj/structure/bed/chair/shuttle{dir = 1},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) +"py" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_shuttle_hatch_station"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor/yellow,/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) "pz" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor/steel,/area/centcom/terminal) "pA" = (/obj/structure/table/glass,/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/paleblue/border{dir = 8},/obj/item/weapon/backup_implanter{pixel_y = -8},/obj/item/weapon/backup_implanter{pixel_y = 8},/obj/item/weapon/backup_implanter,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical) "pB" = (/obj/structure/table/glass,/obj/machinery/computer/med_data{icon_keyboard = "laptop_key"; icon_screen = "medlaptop"; icon_state = "laptop"; light_color = "#00b000"},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical) @@ -813,22 +820,22 @@ "pN" = (/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/turf/unsimulated/floor/steel,/area/centcom/security) "pO" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/vending/security,/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/blue/border{dir = 5},/turf/unsimulated/floor/steel,/area/centcom/security) "pP" = (/obj/effect/floor_decal/techfloor/orange{dir = 8},/obj/machinery/camera/network/crescent{dir = 4},/turf/unsimulated/floor/techfloor_grid,/area/centcom/terminal) -"pQ" = (/obj/structure/table/standard,/obj/random/maintenance/clean,/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom) -"pR" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom) -"pS" = (/obj/machinery/status_display{pixel_y = 30},/obj/structure/table/standard,/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom) +"pQ" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_shuttle_hatch_offsite"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor/yellow,/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) +"pR" = (/obj/structure/bed/chair/shuttle,/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) +"pS" = (/obj/structure/bed/chair/shuttle,/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) "pT" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/cups,/obj/item/weapon/storage/box/cups,/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/paleblue/border{dir = 4},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical) "pU" = (/obj/machinery/computer/secure_data,/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor/steel,/area/centcom/security) "pV" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/effect/floor_decal/borderfloor/corner2{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 1},/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1475; icon_state = "intercom"; listening = 1; name = "Station Intercom (Security)"; pixel_x = 0; pixel_y = 27},/turf/unsimulated/floor/steel,/area/centcom/security) "pW" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 26},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/effect/floor_decal/borderfloor/corner2{dir = 4; icon_state = "borderfloorcorner2"; pixel_y = 0; tag = "icon-borderfloorcorner2 (EAST)"},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/security) "pX" = (/obj/machinery/computer/card,/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/blue/border{dir = 5},/turf/unsimulated/floor/steel,/area/centcom/security) "pY" = (/obj/machinery/porta_turret/crescent,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/unsimulated/floor/steel,/area/centcom/security) -"pZ" = (/obj/machinery/porta_turret/crescent,/obj/effect/floor_decal/industrial/hatch/yellow,/obj/structure/sign/warning/lethal_turrets{pixel_y = 32},/turf/unsimulated/floor/steel,/area/centcom/security) -"qa" = (/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/obj/effect/floor_decal/borderfloor/corner2{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 1},/turf/unsimulated/floor/steel,/area/centcom/security) +"pZ" = (/obj/structure/table/standard,/obj/random/junk,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) +"qa" = (/obj/structure/table/standard,/obj/random/maintenance/clean,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) "qb" = (/obj/machinery/computer/card{dir = 8},/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/blue/border{dir = 5},/obj/effect/floor_decal/borderfloor/corner2{dir = 4; icon_state = "borderfloorcorner2"; pixel_y = 0; tag = "icon-borderfloorcorner2 (EAST)"},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/security) "qc" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/obj/machinery/camera/network/crescent{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/security) "qd" = (/obj/item/weapon/stool/padded,/turf/unsimulated/floor/steel,/area/centcom/security) "qe" = (/obj/item/weapon/stool/padded,/obj/structure/reagent_dispensers/peppertank{pixel_x = 30},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/security) -"qf" = (/obj/structure/bed/chair/shuttle{dir = 1},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom) +"qf" = (/obj/structure/sign/nanotrasen,/turf/simulated/shuttle/wall,/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) "qg" = (/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/paleblue/border{dir = 4},/obj/structure/closet/crate/bin,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical) "qh" = (/obj/structure/flora/pottedplant{icon_state = "plant-22"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom) "qi" = (/obj/machinery/punching_clown,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) @@ -844,8 +851,8 @@ "qs" = (/obj/effect/floor_decal/steeldecal/steel_decals5,/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals9,/turf/unsimulated/floor/steel,/area/centcom/security) "qt" = (/obj/effect/floor_decal/steeldecal/steel_decals5,/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/borderfloor/corner{dir = 4},/obj/effect/floor_decal/corner/blue/bordercorner{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/security) "qu" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/unsimulated/wall,/area/centcom/terminal) -"qv" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_shuttle_hatch_station"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor/yellow,/area/shuttle/escape/centcom) -"qw" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_shuttle_hatch_offsite"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor/yellow,/area/shuttle/escape/centcom) +"qv" = (/obj/structure/table/standard,/obj/item/clothing/head/beret/nanotrasen,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) +"qw" = (/obj/structure/table/standard,/obj/random/plushie,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) "qx" = (/obj/structure/table/glass,/obj/item/roller,/obj/item/roller{pixel_y = 8},/obj/item/roller{pixel_y = 16},/obj/effect/floor_decal/borderfloorwhite{dir = 10},/obj/effect/floor_decal/corner/paleblue/border{dir = 10},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical) "qy" = (/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical) "qz" = (/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 9},/obj/effect/floor_decal/corner/paleblue/bordercorner2{dir = 9},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical) @@ -869,8 +876,8 @@ "qR" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/brigdoor{tag = "icon-leftsecure"; icon_state = "leftsecure"; dir = 2},/obj/effect/floor_decal/borderfloor{dir = 6},/obj/effect/floor_decal/corner/blue/border{dir = 6},/turf/unsimulated/floor/steel,/area/centcom/security) "qS" = (/obj/effect/floor_decal/industrial/outline,/obj/structure/closet/secure_closet/nanotrasen_security,/turf/unsimulated/floor/steel,/area/centcom/security) "qT" = (/obj/effect/floor_decal/industrial/outline,/obj/structure/closet/secure_closet/nanotrasen_security{desc = "This locker is filled silly stickers and some other serious NanoTrasen ones. It is lazily labeled 'The big cat'."},/turf/unsimulated/floor/steel,/area/centcom/security) -"qU" = (/obj/structure/bed/chair/shuttle,/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom) -"qV" = (/obj/structure/bed/chair/shuttle,/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom) +"qU" = (/obj/machinery/door/firedoor,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "FrontlockBD"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor/steel,/area/centcom/main_hall) +"qV" = (/obj/structure/bed/chair/shuttle{dir = 1},/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) "qW" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor/steel,/area/centcom/main_hall) "qX" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/main_hall) "qY" = (/obj/effect/wingrille_spawn/reinforced/crescent,/obj/structure/sign/department/medbay,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/medical) @@ -881,8 +888,8 @@ "rd" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/multi_tile/glass,/turf/unsimulated/floor/steel,/area/centcom/command) "re" = (/obj/structure/sign/nanotrasen,/turf/unsimulated/wall,/area/centcom/command) "rf" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Locker Room"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom) -"rg" = (/obj/structure/table/standard,/obj/random/junk,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom) -"rh" = (/obj/structure/table/standard,/obj/random/maintenance/clean,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom) +"rg" = (/obj/structure/bed/chair/shuttle{dir = 1},/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) +"rh" = (/turf/unsimulated/wall,/area/centcom/security{name = "\improper CentCom Security Arrivals"}) "ri" = (/obj/structure/flora/pottedplant{icon_state = "plant-22"},/turf/unsimulated/floor/steel,/area/centcom/main_hall) "rj" = (/obj/machinery/newscaster{pixel_y = 32},/turf/unsimulated/floor/steel,/area/centcom/main_hall) "rk" = (/obj/structure/bed/chair,/obj/effect/floor_decal/industrial/outline,/turf/unsimulated/floor/steel,/area/centcom/main_hall) @@ -910,7 +917,7 @@ "rG" = (/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/living) "rH" = (/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/structure/reagent_dispensers/water_cooler/full,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/living) "rI" = (/turf/unsimulated/wall/planetary/virgo3b,/area/centcom/living) -"rJ" = (/obj/structure/sign/nanotrasen,/turf/simulated/shuttle/wall,/area/shuttle/escape/centcom) +"rJ" = (/obj/effect/floor_decal/industrial/outline,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"}) "rK" = (/obj/effect/floor_decal/steeldecal/steel_decals5{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/turf/unsimulated/floor/steel,/area/centcom/main_hall) "rL" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "CentComPort"; name = "Security Doors"; opacity = 0},/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/unsimulated/floor/steel,/area/centcom/main_hall) "rM" = (/obj/effect/floor_decal/industrial/outline,/turf/unsimulated/floor/steel,/area/centcom/main_hall) @@ -922,16 +929,16 @@ "rS" = (/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/living) "rT" = (/obj/machinery/door/airlock/multi_tile/glass{dir = 1},/turf/unsimulated/floor/steel,/area/centcom/main_hall) "rU" = (/obj/machinery/cryopod/robot/door/dorms{base_icon_state = "door_closed"; desc = "A small elevator"; dir = 2; icon = 'icons/obj/doors/Door2x1glass.dmi'; icon_state = "door_closed"; name = "Elevator"; on_enter_occupant_message = "The elevator door closes slowly, You can now head for residential, comercial and several other floors."; on_store_message = "has departed for one of the various colony floors"; on_store_name = "Colonial Oversight"; on_store_visible_message_2 = "to the colonial districts."; time_till_despawn = 5},/turf/unsimulated/floor/steel,/area/centcom/living) -"rV" = (/obj/structure/table/standard,/obj/item/clothing/head/beret/nanotrasen,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom) -"rW" = (/obj/structure/table/standard,/obj/random/plushie,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom) +"rV" = (/obj/machinery/porta_turret/crescent,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"}) +"rW" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/obj/machinery/door/window/brigdoor/northleft{req_access = list(63); req_one_access = list(1)},/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/button/remote/blast_door{id = "FrontlockC"; name = "Colony Entrance Lockdown"; pixel_x = 6; pixel_y = -5; req_access = list(63); req_one_access = list(1)},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "FrontlockC2"; name = "Security Door"; opacity = 0},/obj/machinery/button/remote/blast_door{id = "FrontlockBD"; name = "Colony Entrance Bottom"; pixel_x = -3; pixel_y = -5; req_access = list(63); req_one_access = list(1)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"}) "rX" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "CentComPort"; name = "Security Doors"; opacity = 0},/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/unsimulated/floor/steel,/area/centcom/main_hall) "rY" = (/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 6},/turf/unsimulated/floor/steel,/area/centcom/main_hall) "rZ" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "CentComPort"; name = "Security Doors"; opacity = 0},/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/unsimulated/floor/steel,/area/centcom/main_hall) "sa" = (/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals9,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/living) "sb" = (/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals9,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/living) "sc" = (/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/structure/flora/pottedplant{icon_state = "plant-24"},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/living) -"sd" = (/obj/structure/bed/chair/shuttle{dir = 1},/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom) -"se" = (/obj/structure/bed/chair/shuttle{dir = 1},/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom) +"sd" = (/obj/effect/wingrille_spawn/reinforced/crescent,/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "FrontlockC2"; name = "Security Door"; opacity = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"}) +"se" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/effect/floor_decal/borderfloorblack{dir = 5},/obj/effect/floor_decal/corner/blue/border{dir = 5},/obj/machinery/door/window/brigdoor/northright{req_access = list(63); req_one_access = list(1)},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "FrontlockC2"; name = "Security Door"; opacity = 0},/obj/machinery/computer/skills,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"}) "sf" = (/obj/machinery/porta_turret/crescent,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "sg" = (/obj/effect/floor_decal/industrial/outline,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "sh" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/multi_tile/glass,/turf/unsimulated/floor/steel,/area/centcom/main_hall) @@ -941,9 +948,9 @@ "sl" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/restaurant) "sm" = (/obj/machinery/door/airlock{name = "Unisex Restrooms"},/turf/unsimulated/floor/steel,/area/centcom/bathroom) "sn" = (/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "turrets"; name = "Security Door"; opacity = 0},/turf/unsimulated/floor/steel,/area/centcom/security) -"so" = (/obj/effect/wingrille_spawn/reinforced/crescent,/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "FrontlockC2"; name = "Security Door"; opacity = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"sp" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/obj/machinery/door/window/brigdoor/northleft{req_access = list(63); req_one_access = list(1)},/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/button/remote/blast_door{id = "FrontlockC"; name = "Colony Entrance Lockdown"; pixel_x = 6; pixel_y = -5; req_access = list(63); req_one_access = list(1)},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "FrontlockC2"; name = "Security Door"; opacity = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"sq" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/effect/floor_decal/borderfloorblack{dir = 5},/obj/effect/floor_decal/corner/blue/border{dir = 5},/obj/machinery/door/window/brigdoor/northright{req_access = list(63); req_one_access = list(1)},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "FrontlockC2"; name = "Security Door"; opacity = 0},/obj/machinery/computer/skills,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"so" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) +"sp" = (/obj/effect/floor_decal/industrial/outline/blue,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) +"sq" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/floor_decal/borderfloorblack/corner{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner{dir = 1},/obj/machinery/button/remote/blast_door{id = "FrontlockC2"; name = "Checkpoint Shielding"; pixel_x = -35; pixel_y = -8; req_access = list(63); req_one_access = list(1)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"}) "sr" = (/obj/structure/bed/chair,/turf/unsimulated/floor/steel,/area/centcom/main_hall) "ss" = (/obj/structure/flora/pottedplant{icon_state = "plant-10"},/turf/unsimulated/floor/steel,/area/centcom/main_hall) "st" = (/obj/structure/flora/pottedplant,/turf/unsimulated/floor/steel,/area/centcom/main_hall) @@ -974,12 +981,12 @@ "sS" = (/obj/structure/closet{name = "Evidence Closet"},/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "sT" = (/obj/structure/closet{name = "Evidence Closet"},/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "sU" = (/obj/structure/closet{name = "Evidence Closet"},/obj/effect/floor_decal/borderfloorblack{dir = 5},/obj/effect/floor_decal/corner/blue/border{dir = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"sV" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom) -"sW" = (/obj/effect/floor_decal/industrial/outline/blue,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom) -"sX" = (/obj/machinery/computer/card{dir = 4},/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1475; icon_state = "intercom"; listening = 1; name = "Station Intercom (Security)"; pixel_x = 0; pixel_y = 27},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"sY" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/floor_decal/borderfloorblack/corner{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner{dir = 1},/obj/machinery/button/remote/blast_door{id = "FrontlockC2"; name = "Checkpoint Shielding"; pixel_x = -35; pixel_y = -8; req_access = list(63); req_one_access = list(1)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"sZ" = (/obj/structure/bed/chair/office/dark{dir = 4},/obj/effect/floor_decal/borderfloorblack/corner{dir = 4},/obj/effect/floor_decal/corner/blue/bordercorner{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"ta" = (/obj/machinery/computer/security{dir = 8},/obj/effect/floor_decal/borderfloorblack{dir = 5},/obj/effect/floor_decal/corner/blue/border{dir = 5},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"sV" = (/obj/machinery/computer/card{dir = 4},/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1475; icon_state = "intercom"; listening = 1; name = "Station Intercom (Security)"; pixel_x = 0; pixel_y = 27},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"}) +"sW" = (/obj/machinery/computer/security{dir = 8},/obj/effect/floor_decal/borderfloorblack{dir = 5},/obj/effect/floor_decal/corner/blue/border{dir = 5},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"}) +"sX" = (/obj/structure/bed/chair/office/dark{dir = 4},/obj/effect/floor_decal/borderfloorblack/corner{dir = 4},/obj/effect/floor_decal/corner/blue/bordercorner{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"}) +"sY" = (/obj/structure/bed/chair/shuttle{dir = 1},/obj/machinery/light,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) +"sZ" = (/obj/effect/floor_decal/industrial/outline/blue,/obj/machinery/light,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) +"ta" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"}) "tb" = (/obj/effect/floor_decal/spline/fancy/wood/corner,/turf/unsimulated/floor/steel,/area/centcom/main_hall) "tc" = (/obj/effect/floor_decal/spline/fancy/wood,/turf/unsimulated/floor/steel,/area/centcom/main_hall) "td" = (/obj/effect/floor_decal/spline/fancy/wood/corner{dir = 8},/turf/unsimulated/floor/steel,/area/centcom/main_hall) @@ -997,10 +1004,10 @@ "tp" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/machinery/button/remote/blast_door{name = "Turret Doors"; pixel_x = -23; req_access = list(63); req_one_access = list(1); id = "turrets"},/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 10},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "tq" = (/obj/machinery/door/airlock/glass_security{name = "Confiscated Items"; req_access = list(3)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "tr" = (/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"ts" = (/obj/structure/bed/chair/shuttle{dir = 1},/obj/machinery/light,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom) -"tt" = (/obj/effect/floor_decal/industrial/outline/blue,/obj/machinery/light,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom) -"tu" = (/obj/machinery/computer/secure_data{dir = 4},/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"tv" = (/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 5},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 5},/obj/structure/table/reinforced,/obj/item/device/camera,/obj/item/weapon/storage/box/ids,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"ts" = (/obj/machinery/computer/secure_data{dir = 4},/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"}) +"tt" = (/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 5},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 5},/obj/structure/table/reinforced,/obj/item/device/camera,/obj/item/weapon/storage/box/ids,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"}) +"tu" = (/obj/random/junk,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) +"tv" = (/obj/structure/bed/chair/shuttle{dir = 1},/obj/random/soap,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) "tw" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/main_hall) "tx" = (/turf/unsimulated/floor/steel{icon = 'icons/turf/outdoors.dmi'; icon_state = "grass"},/area/centcom/main_hall) "ty" = (/obj/structure/table/bench/wooden,/turf/unsimulated/floor/steel{icon = 'icons/turf/outdoors.dmi'; icon_state = "grass"},/area/centcom/main_hall) @@ -1019,9 +1026,9 @@ "tL" = (/obj/machinery/door/window/brigdoor{req_access = list(63); req_one_access = list(1)},/obj/machinery/button/remote/airlock{id = "front"; name = "Front doors"; pixel_x = 5; pixel_y = 25; req_access = list(63); req_one_access = list(1)},/obj/machinery/button/remote/airlock{id = "innerS"; name = "Inner doors"; pixel_x = -5; pixel_y = 25; req_access = list(63); req_one_access = list(1)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "tM" = (/obj/structure/bed/chair/office/dark,/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 6},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "tN" = (/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 8},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"tO" = (/obj/random/junk,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom) -"tP" = (/obj/structure/bed/chair/shuttle{dir = 1},/obj/random/soap,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom) -"tQ" = (/obj/effect/floor_decal/borderfloorblack{dir = 10},/obj/effect/floor_decal/corner/blue/border{dir = 10},/obj/structure/table/reinforced,/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/book/manual/security_space_law,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"tO" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"}) +"tP" = (/obj/effect/floor_decal/borderfloorblack{dir = 10},/obj/effect/floor_decal/corner/blue/border{dir = 10},/obj/structure/table/reinforced,/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/book/manual/security_space_law,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"}) +"tQ" = (/obj/machinery/turretid/stun{check_access = 0; check_anomalies = 0; check_records = 0; check_synth = 0; check_weapons = 0; control_area = "\improper CentCom Security Arrivals"; pixel_x = 32; req_access = list(101); req_one_access = list(101)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"}) "tR" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "tS" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/obj/effect/floor_decal/borderfloorblack/corner2{dir = 9},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "tT" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/main_hall) @@ -1064,9 +1071,9 @@ "uE" = (/obj/structure/bed/chair/comfy/brown{dir = 8},/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/restaurant) "uF" = (/obj/machinery/door/airlock/glass_security{id_tag = "innerS"; name = "Colonial Security Airlock"; req_access = list(63)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "uG" = (/obj/machinery/door/airlock/glass_security{name = "Warden's Office"; req_access = list(3)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"uH" = (/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/obj/structure/table/reinforced,/obj/machinery/microwave{pixel_y = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"uI" = (/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 26},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"uJ" = (/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 1},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"uH" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/obj/effect/floor_decal/borderfloorblack/corner2{dir = 9},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"}) +"uI" = (/obj/machinery/door/airlock/security{name = "Security"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"}) +"uJ" = (/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 26},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"}) "uK" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/camera/network/crescent{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/main_hall) "uL" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 1},/turf/unsimulated/floor/steel{icon = 'icons/turf/floors_vr.dmi'; icon_state = "wood"},/area/centcom/restaurant) "uM" = (/obj/structure/table/woodentable,/obj/effect/floor_decal/carpet{dir = 8},/obj/item/weapon/material/ashtray/glass,/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/restaurant) @@ -1080,8 +1087,8 @@ "uU" = (/obj/machinery/door/airlock/glass_security{name = "Security Processing"; req_access = list(1)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "uV" = (/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 4},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 4},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "uW" = (/obj/machinery/vending/security,/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"uX" = (/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/obj/structure/table/reinforced,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/storage/box/donkpockets,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"uY" = (/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 6},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 5},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 5},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 6},/obj/structure/reagent_dispensers/peppertank{pixel_x = 30},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"uX" = (/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/obj/structure/table/reinforced,/obj/machinery/microwave{pixel_y = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"}) +"uY" = (/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 1},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"}) "uZ" = (/obj/structure/table/standard,/obj/item/weapon/soap,/obj/effect/floor_decal/borderfloorwhite{dir = 10},/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 8},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/bathroom) "va" = (/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 9},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/bathroom) "vb" = (/obj/machinery/door/airlock{name = "Unit 4"},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/bathroom) @@ -1090,9 +1097,9 @@ "ve" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/obj/effect/floor_decal/borderfloorblack/corner2,/obj/effect/floor_decal/corner/blue/bordercorner2,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "vf" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/obj/effect/floor_decal/borderfloorblack/corner2,/obj/effect/floor_decal/borderfloorblack/corner2{dir = 9},/obj/effect/floor_decal/corner/blue/bordercorner2,/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "vg" = (/obj/effect/wingrille_spawn/reinforced/crescent,/obj/structure/sign/department/interrogation,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"vh" = (/obj/effect/floor_decal/borderfloorblack{dir = 10},/obj/effect/floor_decal/corner/blue/border{dir = 10},/obj/structure/table/reinforced,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/gun/energy/taser,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"vi" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/obj/structure/closet/secure_closet/nanotrasen_security,/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/gun/energy/gun,/obj/item/weapon/shield/riot,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"vj" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/obj/effect/floor_decal/borderfloorblack/corner2{dir = 9},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 9},/obj/structure/closet/secure_closet/nanotrasen_security,/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/gun/energy/gun,/obj/item/weapon/shield/riot,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"vh" = (/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 1},/obj/machinery/turretid/stun{check_access = 0; check_anomalies = 0; check_records = 0; control_area = "\improper CentCom Security"; pixel_y = 32; req_access = list(101); req_one_access = list(101)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"vi" = (/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/obj/structure/table/reinforced,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/storage/box/donkpockets,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"}) +"vj" = (/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 6},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 5},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 5},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 6},/obj/structure/reagent_dispensers/peppertank{pixel_x = 30},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"}) "vk" = (/obj/machinery/vending/cigarette,/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 10},/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/restaurant) "vl" = (/obj/effect/floor_decal/carpet,/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/restaurant) "vm" = (/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet{dir = 6},/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/restaurant) @@ -1198,7 +1205,7 @@ "xi" = (/obj/structure/table/reinforced,/obj/machinery/chemical_dispenser/bar_soft/full,/turf/unsimulated/floor/steel{icon = 'icons/turf/floors_vr.dmi'; icon_state = "wood"},/area/centcom/bar) "xj" = (/obj/structure/table/reinforced,/obj/machinery/chemical_dispenser/bar_alc/full,/turf/unsimulated/floor/steel{icon = 'icons/turf/floors_vr.dmi'; icon_state = "wood"},/area/centcom/bar) "xk" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/drinks/flask/barflask,/obj/item/weapon/reagent_containers/glass/rag,/obj/item/weapon/reagent_containers/food/drinks/flask/vacuumflask,/turf/unsimulated/floor/steel{icon = 'icons/turf/floors_vr.dmi'; icon_state = "wood"},/area/centcom/bar) -"xl" = (/obj/machinery/door/firedoor,/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "residential"; name = "Security Door"; opacity = 0},/turf/unsimulated/floor/steel,/area/centcom/main_hall) +"xl" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/obj/structure/closet/secure_closet/nanotrasen_security,/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/gun/energy/gun,/obj/item/weapon/shield/riot,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"}) "xm" = (/obj/machinery/newscaster{pixel_x = -27},/turf/unsimulated/floor/steel,/area/centcom/security) "xn" = (/obj/structure/flora/pottedplant{icon_state = "plant-10"},/turf/unsimulated/floor/steel,/area/centcom/security) "xo" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/security) @@ -1207,11 +1214,11 @@ "xr" = (/obj/structure/table/reinforced,/obj/item/weapon/book/manual/security_space_law,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "xs" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/pill_bottle/dice,/obj/item/weapon/deck/cards,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "xt" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/door/airlock/glass{name = "Kitchen"; req_access = list(28)},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/bar) -"xu" = (/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals10,/turf/unsimulated/floor/steel,/area/centcom/security) -"xv" = (/obj/machinery/computer/card,/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"xw" = (/obj/machinery/computer/secure_data,/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 1},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"xx" = (/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1475; icon_state = "intercom"; listening = 1; name = "Station Intercom (Security)"; pixel_x = 0; pixel_y = 27},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"xy" = (/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 1},/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1475; icon_state = "intercom"; listening = 1; name = "Station Intercom (Security)"; pixel_x = 0; pixel_y = 27},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"xu" = (/obj/effect/floor_decal/borderfloorblack{dir = 10},/obj/effect/floor_decal/corner/blue/border{dir = 10},/obj/structure/table/reinforced,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/gun/energy/taser,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"}) +"xv" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/obj/effect/floor_decal/borderfloorblack/corner2{dir = 9},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 9},/obj/structure/closet/secure_closet/nanotrasen_security,/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/gun/energy/gun,/obj/item/weapon/shield/riot,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"}) +"xw" = (/obj/machinery/door/firedoor,/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "residential"; name = "Security Door"; opacity = 0},/turf/unsimulated/floor/steel,/area/centcom/security{name = "\improper CentCom Residential Security"}) +"xx" = (/turf/unsimulated/wall,/area/centcom/security{name = "\improper CentCom Residential Security"}) +"xy" = (/obj/machinery/porta_turret/crescent,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/unsimulated/floor/steel,/area/centcom/security{name = "\improper CentCom Residential Security"}) "xz" = (/obj/machinery/status_display{pixel_x = -31},/turf/unsimulated/floor/steel,/area/centcom/security) "xA" = (/obj/machinery/door/airlock,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "xB" = (/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) @@ -1221,20 +1228,20 @@ "xF" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/structure/table/marble,/obj/machinery/reagentgrinder,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/bar) "xG" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/vending/dinnerware,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/bar) "xH" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/bar) -"xI" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/machinery/door/window/brigdoor{dir = 8; icon_state = "leftsecure"; req_access = list(63); req_one_access = list(1); tag = "icon-leftsecure (WEST)"},/obj/machinery/button/remote/blast_door{id = "residential"; name = "Security Doors"; req_access = list(63); req_one_access = list(1); pixel_x = 6; pixel_y = -5},/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"xJ" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/effect/floor_decal/borderfloorblack/corner{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"xK" = (/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 6},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"xI" = (/turf/unsimulated/floor/steel,/area/centcom/security{name = "\improper CentCom Residential Security"}) +"xJ" = (/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals10,/turf/unsimulated/floor/steel,/area/centcom/security{name = "\improper CentCom Residential Security"}) +"xK" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/security{name = "\improper CentCom Residential Security"}) "xL" = (/obj/machinery/computer/arcade/orion_trail,/obj/effect/floor_decal/borderfloorblack{dir = 10},/obj/effect/floor_decal/corner/orange/border{dir = 10},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 8},/obj/effect/floor_decal/corner/orange/bordercorner2{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "xM" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/orange/border,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "xN" = (/obj/machinery/camera/network/crescent{dir = 10},/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/orange/border,/obj/effect/floor_decal/borderfloorblack/corner2{dir = 9},/obj/effect/floor_decal/corner/orange/bordercorner2{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "xO" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/orange/border,/obj/effect/floor_decal/borderfloorblack/corner2,/obj/effect/floor_decal/corner/orange/bordercorner2,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "xP" = (/obj/machinery/computer/arcade/battle,/obj/effect/floor_decal/borderfloorblack{dir = 6},/obj/effect/floor_decal/corner/orange/border{dir = 6},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 6},/obj/effect/floor_decal/corner/orange/bordercorner2{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "xQ" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/structure/table/marble,/obj/item/weapon/book/manual/chef_recipes,/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker{pixel_x = -3; pixel_y = 0},/obj/item/weapon/reagent_containers/food/condiment/small/peppermill{pixel_x = 3},/obj/item/weapon/material/kitchen/rollingpin,/obj/item/weapon/material/knife/butch,/turf/simulated/floor/tiled/white,/area/centcom/bar) -"xR" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/machinery/computer/skills,/obj/effect/floor_decal/borderfloorblack{dir = 10},/obj/effect/floor_decal/corner/blue/border{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"xS" = (/obj/structure/bed/chair/office/dark,/obj/effect/floor_decal/borderfloorblack/corner{dir = 8},/obj/effect/floor_decal/corner/blue/bordercorner{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"xT" = (/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 32},/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"xU" = (/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"xV" = (/obj/structure/reagent_dispensers/peppertank{pixel_x = 30},/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"xR" = (/obj/machinery/computer/secure_data,/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 1},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) +"xS" = (/obj/machinery/computer/card,/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) +"xT" = (/obj/machinery/door/airlock/security{name = "Security"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) +"xU" = (/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1475; icon_state = "intercom"; listening = 1; name = "Station Intercom (Security)"; pixel_x = 0; pixel_y = 27},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) +"xV" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 26},/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 4},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) "xW" = (/obj/machinery/porta_turret/crescent,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/unsimulated/floor/steel,/area/centcom/living) "xX" = (/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 6},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor/steel,/area/centcom/living) "xY" = (/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 6},/turf/unsimulated/floor/steel,/area/centcom/living) @@ -1247,13 +1254,13 @@ "yf" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/cooker/oven,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/bar) "yg" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/cooker/grill,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/bar) "yh" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/cooker/fryer,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/bar) -"yi" = (/obj/machinery/computer/security{dir = 1},/obj/effect/floor_decal/borderfloorblack{dir = 10},/obj/effect/floor_decal/corner/blue/border{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"yj" = (/obj/structure/table/reinforced,/obj/item/weapon/book/manual/security_space_law,/obj/item/device/taperecorder,/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"yk" = (/obj/structure/table/reinforced,/obj/item/device/camera,/obj/item/weapon/storage/box/ids,/obj/effect/floor_decal/borderfloorblack{dir = 6},/obj/effect/floor_decal/corner/blue/border{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"yl" = (/obj/effect/floor_decal/borderfloorblack{dir = 10},/obj/effect/floor_decal/corner/blue/border{dir = 10},/obj/structure/closet/secure_closet/nanotrasen_security,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"ym" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/storage/box/donkpockets,/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"yn" = (/obj/structure/table/reinforced,/obj/machinery/microwave,/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"yo" = (/obj/effect/floor_decal/borderfloorblack{dir = 6},/obj/effect/floor_decal/corner/blue/border{dir = 6},/obj/structure/closet/secure_closet/nanotrasen_security,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"yi" = (/obj/machinery/turretid/stun{check_access = 0; check_anomalies = 0; check_records = 0; control_area = "\improper CentCom Residential Security"; pixel_y = 32; req_access = list(101); req_one_access = list(101)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) +"yj" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) +"yk" = (/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 1},/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1475; icon_state = "intercom"; listening = 1; name = "Station Intercom (Security)"; pixel_x = 0; pixel_y = 27},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) +"yl" = (/obj/machinery/camera/network/crescent{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/security{name = "\improper CentCom Residential Security"}) +"ym" = (/obj/effect/floor_decal/industrial/outline,/turf/unsimulated/floor/steel,/area/centcom/security{name = "\improper CentCom Residential Security"}) +"yn" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/machinery/door/window/brigdoor{dir = 8; icon_state = "leftsecure"; req_access = list(63); req_one_access = list(1); tag = "icon-leftsecure (WEST)"},/obj/machinery/button/remote/blast_door{id = "residential"; name = "Security Doors"; req_access = list(63); req_one_access = list(1); pixel_x = 6; pixel_y = -5},/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) +"yo" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/effect/floor_decal/borderfloorblack/corner{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) "yp" = (/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals10,/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 1},/turf/unsimulated/floor/steel,/area/centcom/living) "yq" = (/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "TelelockdownC"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/living) "yr" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/living) @@ -1264,7 +1271,7 @@ "yw" = (/obj/structure/curtain/open/shower,/obj/machinery/shower{pixel_y = 13},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/security) "yx" = (/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "freezer"},/area/centcom/security) "yy" = (/obj/machinery/door/airlock/freezer{name = "Kitchen cold room"; req_access = list(28)},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/bar) -"yz" = (/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "residential"; name = "Security Door"; opacity = 0},/obj/machinery/door/firedoor,/turf/unsimulated/floor/steel,/area/centcom/main_hall) +"yz" = (/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 6},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) "yA" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "TelelockdownC"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor/steel,/area/centcom/living) "yB" = (/obj/effect/floor_decal/industrial/outline,/turf/unsimulated/floor/steel,/area/centcom/living) "yC" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "TelelockdownC"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/living) @@ -1287,16 +1294,16 @@ "yT" = (/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 10},/turf/unsimulated/floor/steel,/area/centcom/living) "yU" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "TelelockdownC"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/living) "yV" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/window/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/living) -"yW" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/button/remote/blast_door{id = "TelelockdownC"; name = "Teleporter Entrance Lockdown"; pixel_x = 6; pixel_y = -5; req_access = list(63); req_one_access = list(1)},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "TelelockdownC"; name = "Security Door"; opacity = 0},/obj/machinery/door/window/brigdoor/northleft{req_access = list(63); req_one_access = list(1)},/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"yW" = (/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 8},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) "yX" = (/obj/effect/wingrille_spawn/reinforced/crescent,/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "TelelockdownC"; name = "Security Door"; opacity = 0},/turf/unsimulated/floor/steel,/area/centcom/command) "yY" = (/obj/machinery/telecomms/receiver/preset_cent,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) "yZ" = (/obj/machinery/telecomms/bus/preset_cent,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) "za" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) "zb" = (/obj/machinery/telecomms/processor/preset_cent,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) "zc" = (/obj/machinery/telecomms/server/presets/centcomm,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) -"zd" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"ze" = (/obj/machinery/computer/secure_data{dir = 8},/obj/effect/floor_decal/borderfloorblack{dir = 5},/obj/effect/floor_decal/corner/blue/border{dir = 5},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"zf" = (/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/turf/unsimulated/floor/steel,/area/centcom/command) +"zd" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/machinery/computer/skills,/obj/effect/floor_decal/borderfloorblack{dir = 10},/obj/effect/floor_decal/corner/blue/border{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) +"ze" = (/obj/structure/bed/chair/office/dark,/obj/effect/floor_decal/borderfloorblack/corner{dir = 8},/obj/effect/floor_decal/corner/blue/bordercorner{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) +"zf" = (/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 32},/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) "zg" = (/obj/effect/floor_decal/borderfloor{dir = 1; icon_state = "borderfloor"; pixel_y = 0; tag = "icon-borderfloor (NORTH)"},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/machinery/computer/card,/turf/unsimulated/floor/steel,/area/centcom/command) "zh" = (/obj/structure/table/reinforced,/obj/effect/floor_decal/borderfloor{dir = 1; icon_state = "borderfloor"; pixel_y = 0; tag = "icon-borderfloor (NORTH)"},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/machinery/button/remote/blast_door{id = "TelelockdownC"; name = "Teleporter Full Lockdown"; pixel_x = 6; pixel_y = -5; req_access = list(63); req_one_access = list(1)},/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor/steel,/area/centcom/command) "zi" = (/obj/machinery/computer/security,/obj/effect/floor_decal/borderfloor{dir = 1; icon_state = "borderfloor"; pixel_y = 0; tag = "icon-borderfloor (NORTH)"},/obj/effect/floor_decal/corner/blue/border{dir = 1},/turf/unsimulated/floor/steel,/area/centcom/command) @@ -1306,14 +1313,14 @@ "zm" = (/obj/effect/floor_decal/borderfloor{dir = 1; icon_state = "borderfloor"; pixel_y = 0; tag = "icon-borderfloor (NORTH)"},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor/steel,/area/centcom/command) "zn" = (/obj/effect/floor_decal/borderfloor{dir = 1; icon_state = "borderfloor"; pixel_y = 0; tag = "icon-borderfloor (NORTH)"},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/structure/closet/crate/bin,/turf/unsimulated/floor/steel,/area/centcom/command) "zo" = (/obj/structure/filingcabinet/filingcabinet,/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/blue/border{dir = 5},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 5},/turf/unsimulated/floor/steel,/area/centcom/command) -"zp" = (/obj/structure/table/reinforced,/obj/item/device/camera,/obj/item/weapon/storage/box/ids,/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 10},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"zq" = (/obj/structure/table/reinforced,/obj/machinery/computer/skills,/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 5},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"zp" = (/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) +"zq" = (/obj/structure/reagent_dispensers/peppertank{pixel_x = 30},/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) "zr" = (/obj/effect/floor_decal/borderfloor{dir = 8; icon_state = "borderfloor"; pixel_x = 0; tag = "icon-borderfloor (WEST)"},/obj/effect/floor_decal/corner/blue/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 10; icon_state = "borderfloorcorner2"; pixel_x = 0; tag = "icon-borderfloorcorner2 (SOUTHWEST)"},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 10},/turf/unsimulated/floor/steel,/area/centcom/command) "zs" = (/obj/structure/bed/chair/office/dark{dir = 1},/turf/unsimulated/floor/steel,/area/centcom/command) "zt" = (/obj/structure/table/reinforced,/obj/machinery/computer/skills,/turf/unsimulated/floor/steel,/area/centcom/command) "zu" = (/obj/machinery/door/airlock/security{name = "Security"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command) "zv" = (/obj/structure/toilet,/turf/unsimulated/floor{icon_state = "freezer"},/area/centcom/bathroom) -"zw" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/obj/effect/floor_decal/borderfloorblack/corner2{dir = 9},/obj/effect/floor_decal/borderfloorblack/corner2,/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 9},/obj/effect/floor_decal/corner/blue/bordercorner2,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"zw" = (/obj/structure/table/reinforced,/obj/item/weapon/book/manual/security_space_law,/obj/item/device/taperecorder,/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) "zx" = (/obj/machinery/door/airlock/security{name = "Security"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/command) "zy" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/blue/border,/obj/effect/floor_decal/borderfloor/corner2,/obj/effect/floor_decal/corner/blue/bordercorner2,/turf/unsimulated/floor/steel,/area/centcom/command) "zz" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/blue/border,/turf/unsimulated/floor/steel,/area/centcom/command) @@ -1339,6 +1346,23 @@ "zT" = (/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "freezer"},/area/centcom/bathroom) "zU" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{pixel_x = 29},/turf/unsimulated/floor{icon_state = "freezer"},/area/centcom/bathroom) "zV" = (/turf/unsimulated/wall/planetary/virgo3b,/area/centcom/bathroom) +"zW" = (/obj/machinery/computer/security{dir = 1},/obj/effect/floor_decal/borderfloorblack{dir = 10},/obj/effect/floor_decal/corner/blue/border{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) +"zX" = (/obj/structure/table/reinforced,/obj/item/device/camera,/obj/item/weapon/storage/box/ids,/obj/effect/floor_decal/borderfloorblack{dir = 6},/obj/effect/floor_decal/corner/blue/border{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) +"zY" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/storage/box/donkpockets,/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) +"zZ" = (/obj/effect/floor_decal/borderfloorblack{dir = 10},/obj/effect/floor_decal/corner/blue/border{dir = 10},/obj/structure/closet/secure_closet/nanotrasen_security,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) +"Aa" = (/obj/effect/floor_decal/borderfloorblack{dir = 6},/obj/effect/floor_decal/corner/blue/border{dir = 6},/obj/structure/closet/secure_closet/nanotrasen_security,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) +"Ab" = (/obj/structure/table/reinforced,/obj/machinery/microwave,/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) +"Ac" = (/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "residential"; name = "Security Door"; opacity = 0},/obj/machinery/door/firedoor,/turf/unsimulated/floor/steel,/area/centcom/security{name = "\improper CentCom Residential Security"}) +"Ad" = (/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) +"Ae" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) +"Af" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/button/remote/blast_door{id = "TelelockdownC"; name = "Teleporter Entrance Lockdown"; pixel_x = 6; pixel_y = -5; req_access = list(63); req_one_access = list(1)},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "TelelockdownC"; name = "Security Door"; opacity = 0},/obj/machinery/door/window/brigdoor/northleft{req_access = list(63); req_one_access = list(1)},/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) +"Ag" = (/obj/machinery/computer/card{dir = 4},/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1475; icon_state = "intercom"; listening = 1; name = "Station Intercom (Security)"; pixel_x = 0; pixel_y = 27},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) +"Ah" = (/obj/machinery/computer/secure_data{dir = 8},/obj/effect/floor_decal/borderfloorblack{dir = 5},/obj/effect/floor_decal/corner/blue/border{dir = 5},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) +"Ai" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) +"Aj" = (/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/obj/machinery/turretid/stun{check_access = 0; check_anomalies = 0; check_records = 0; control_area = "\improper CentCom Living Quarters"; pixel_y = 32; req_access = list(101); req_one_access = list(101)},/turf/unsimulated/floor/steel,/area/centcom/living) +"Ak" = (/obj/structure/table/reinforced,/obj/item/device/camera,/obj/item/weapon/storage/box/ids,/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 10},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) +"Al" = (/obj/structure/table/reinforced,/obj/machinery/computer/skills,/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 5},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) +"Am" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/obj/effect/floor_decal/borderfloorblack/corner2{dir = 9},/obj/effect/floor_decal/borderfloorblack/corner2,/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 9},/obj/effect/floor_decal/corner/blue/bordercorner2,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -1395,19 +1419,19 @@ aaababababababababababdrdSdTdTdTdTdTdTdTdTdUdTdTdTepdxababababababacacacacaZddde aaababababababababababdrdSdTdTdUdUdTdTdTdTdTdTdTdTeJdxabababababeKacacacacaZdddedfdydfdydfdgcOcOcOcOcOcOcOcOcOcOcOcOcOcOcOdgcIdhcIdhcIdecPadahahahaebdbdbdeLbdbdbdbdeMeNeObdbdcrbdbdbdePejejejeQeQejejejejejejejejejejejejejejeRejejejejejejejeS aaababababababababababdreTdTdTdTdTdTdTdTdTeUdTdUdUepdxababababababacacacacaZeVdedfdfdfdfdfdgcOcOcOcOcOcOcOcOcOcOcOcOcOcOcOdgcIcIcIcIcIdeeVadahahahcrbdbdbdcrcxbdbdbdeXeXeYbdbdcrbdbdbdejeZfafbfcfcfdfefffgfcfhfifjfkfcflfmfnfofcfpfqfrfsftfufueS aaababababababababababdrdSdTdTdTdTdTdTdTdTdTdTdTfvfwdxababababababacacacacaZaZaZfxfxfxfxfxaZcNcOcOcOcOcOcOcOcOcOcOcOcOcOcNaZfxfxfxfxfxaZaZadahahahcrdlbdbdcrfzdEbdbdbdbdbdbdbdcrbdbdbdejfAfcfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfceS -aaababababababababababdrfBfCfDfEfFfGfHfIfJfKfLfCfMfNfNfNfNfOfPababacacacacacacaZfQfQfQfQfQaZaZaZaZaZaZaZaZaZaZaZaZaZaZaZaZaZdjdjdjdjdjaZacadahahahaebdbdbdaefSdEbdfTbdbdbdbdcvcrbdbdbdejfUfVfbfcfWfXfcfcfYfZgafcfcgbgcgdfcfcgegegefcfcgfgfgfgfeS +aaababababababababababdrfBfCfDfEfFfGfHfIfJfKfLfCfMfNfNfNfNfOfPababacacacacacacaZfQfQfQfQfQaZaZaZaZaZaZaZaZaZaZaZaZaZaZaZaZaZdjdjdjdjdjaZacadahahahaebdbdbdaefSdEbddkbddzbdbdcvcrbdbdbdejfUfVfbfcfWfXfcfcfYfZgafcfcgbgcgdfcfcgegegefcfcgfgfgfgfeS aaababababababababababdrggghgigjgkglgmgngogpgqgqdWfNfNfNfNfNfNababacacacacacacaZaZaZaZaZaZaZacacacacacacacacacacacacacacacaZaZaZaZaZaZaZacadahahahcrbdbdbdaeaeaeaeaeaeaecreLcraebdbdbdejfAfcfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfceS aaababababababababababdrdSgrgsgtgtgtgtgugtgtgtgtdVgvdxababfNfNababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacadahahahcrbdbdbdbdbdbdbdcwbdbdbdbdbdbdbdbdbdejgwgxfbgyfcfcfcfcfcgzgAgBgBgBgBgBgCgCgAgzgDfcfcfcgEgEgEeS aaababababababababababdrdSgtgtgFgtgugtgtgtgtgugtgtepdxababfNfNababacacacacacacacacacgGgGgGgGgGgGgGgGgGgGgGgGgGgGgGgGacacacacacacacacacacacadahahahaebdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdejejejejejejejfcfcejejejejejejejejejejejejejgHgHePejejejeS -aaababababababababababdrdSgtgugtgtgtgtgtgIgtgtgtgtgJdxababfOfNabeKacacacacacacacacacgGgKgLgMgNgNgOgGgPgQgRgSgTgUgVgGacacacacacacacacacacacadahahahaecvbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdcvejgWfcgXejgYgZfcfchahbejhchdhehfhghhhiejhjhjhkhlhmhnhohpeS +aaababababababababababdrdSgtgugtgtgtgtgtgIgtgtgtgtgJdxababfOfNabeKacacacacacacacacacgGgKgLgMgNgNgOgGgPgQgRgSgTgUgVgGacacacacacacacacacacacadahahahaecvbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdcvejgWfcgXejgYgZfcfchahbejdZhdhehfhghhhiejhjhjhkhlhmhnhohpeS aaababababababababababdrdSgtgugtgtgtgtgtgtgtgtgtgtepdxabfNfNfNfNabacacacacacacacacacgGhqhrhrhrhrhshthuhrhrhvhwhrhxgGacacacacacacacacacacacadbHahahaecrhyeLhycraecreLcraehzeLhAaeaeeLaeejgWfchBhChDfcfcfcfchEejhFhGhGhGhGhGhHejhIhIhlhlhlhlhJhKeS aaababababababababababdrdSgtgtgtgIgtgtgtgugtgtgIfvfMdxabfNfNhLfNabacacacacacacacacacgGhqhrhrhrhrhrhMhrhrhrhNhOhrhPgGacacacacacacacacacacacadahahahaehQhRbdhShTaebdbdbdaebdbdcweLbdbdhUejhVfcfchWfcfcfcfcfcfchXhGhGhYhZiahGhGibhlhlhlhlhlhlicideS -aaababababababababababdrieififififigififihifififiiijdxabfOfNfNfNabacacacacacacacacacgGhqhrikhrhrilhtimhrhrhNinhriogGacacacacacacacacacacacadahahahaedlbdbdbdbdaedlbdbdaecvbdcvcripiqirejhVfcishCitfcfcfcfciuePivhGiwixiyhGizejiAiAhlhlhlhlhlhleS +aaababababababababababdrieififififigififihifififiiijdxabfOfNfNfNabacacacacacacacacacgGhqhrikhrhrilhtimhrhrhNinhriogGacacacacacacacacacacacadahahahaedlbdbdbdbdaedlbdbdaecvbdcvcrdziqirejhVfcishCitfcfcfcfciuePivhGiwixiyhGizejiAiAhlhlhlhlhlhleS aaababababababababababiBiCiCiCiCiCiCiCiCiCiCiCiCiCiCiDabfNfNfNfNabacacacacacacacacacgGiEiFiGiHiHiIhtiJhwhrhxiKiLiMgGacacacacacacacacacacacadahahahaeiNiOiPiQiRaeiSiTiUaeiViWcraeiXiYaeejhVfciZejjafcfcfcfcjbejjchGjdjejfhGjgejjhjhhlhlhlhljijieS aaabababababababababababababababababababababababababababfNfNfNfOababababacacacacacacgGgGgGgGgGgGgGgGgGgGjjgGgGgGgGgGgGgGgGgGgGgGgGgGgGadadadjkjkjkaeaeaeaeaeaeaeaeaeaeefcvbdcvefcrcraeejejejejejjlfcfcfcfcjmejjnjojphGjqjojrejjhjhhlhlhlhlhljseS -aaabababababababababababababababababababababababababababfNfNfNfNababababababacacacacacacacacacacacacgGjthrjugGjvjwjxjygGjzjAjBjAjAjCgGahahahahahahjDahahahahahahahahahahahahahahahahahjDahahagejjEfcfcfcfcjFejjGjGjHjIjHjGjGejjJjJjKjKjLjJjJjJeS +aaabababababababababababababababababababababababababababfNfNfNfNababababababacacacacacacacacacacacacgGjthrjugGjvjwjxjygGjzjAjBjAjAjCgGagahahahahahjDahahahahahahahahahahahahahahahahahjDahahagejjEfcfcfcfcjFejjGjGjHjIjHjGjGejjJjJjKjKjLjJjJjJeS aaababababababababababababababababababababababababababjMjMjNjNjMjMjMjMababababacacacacacacacacacacacgGjOhrjPgGjQjRjSjTjUjVjWjXjWjWjYgGahahahahahahjDahahahahahahahahahahahahahahahahahjDahahahejjEfcfcfcfcjZkakbkckdhlkckekekekekdhlhlkckekekfeS -aaababababababababababababababababababababababababababjMkgkhkhkikjkkjMabababababacacacacacacacacacacgGklhrkmgGknkohrkpgGkqkrksktkukvgGahahahahkwahjDahahahahahahahahahahahahahahahahahjDahahahejkxfcfcfcfckykzkAkBkChlkBkDkDkDkDkDkEkFkDkDkDkGeS +aaababababababababababababababababababababababababababjMkgkhkhkikjkkjMabababababacacacacacacacacacacgGklhrkmgGknkohrkpgGkqkrksktkukvgGagahahahkwahjDahahahahahahahahahahahahahahahahahjDahahahejkxfcfcfcfckykzkAkBkChlkBkDkDkDkDkDkEkFkDkDkDkGeS aaababababababababababababababababababababababababababjMkikhkhkikjkkjMabababababacacgGgGgGgGgGgGgGgGgGgGjjgGgGgGgGhrgGkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHjDjDjDejejejejejejejejejejePhlkIejejejejejkJkKejejejejeS aaababababababababababababababababababababababababababjMjMkLkLjMjMjMjMabababababacacgGkNkOkPkQkRgGkSkTkUhrkVkWkXkYhrkZkHlalblcldlelflglhliljlelklllblmkHlnlololplolqlrlslrlqlolplololtkHahahahejlulvlwlvlxlwlvlyejlzhllAejlBlClDlElFlGlHlIlJlKeS aaababababababababababababababababababababababababababjMkikhkhkikilLjMabababababacacgGlMhrhrhrlNgGlOlPhrhrlQlRlQlQhrlNkHlSlTlUlUlVlUlWlWlWlUlVlUlUlXlYkHlolZmamamamambmbmbmamamamamclokHbHahahejmdmdlwmdmdlwmdmdejkJhlkKejkJhlhlhlhlhlhlhlhlkKeS @@ -1417,47 +1441,47 @@ aaababababababababababababababababababababababababababjMkikhkhkikjkkjMababababab aaababababababababababababababababababababababababababjMlLkhkhkikjkkjMababababababacgGgGgGgGgGgGgGnHnInJnKnLhrhrnMnNnOkHnPnQnRlUlUnSnTlUnSnTlUlUnUnVnWkHltlololololonXnYnZlololololooakHahahahejobocodoeofogmdmdejkJhlhlhlhlnEohnFohnFnFoinGkKeS aaabababababababababababababababojokokokokokokokokokokolomononomomomomababababababacacacacacacacgGgGgGgGhthtoohrgGgGgGkHkHkHkHopoqkHkHorkHkHosoqkHkHkHotototototototototototototototototahahahouejejejejejovjKjKejkJhlkFkDkEhlowowowowowowhlkKeS aaabababababababababababababababomoxoyozoyoyoyoyozoyoAoBoCoCoCoDoEabababababababababacacacacacacgGoFoGoHoGoIhrhroJoGoKkHoLoMoNlUlUoOoPlUoQoRlUlUoSoToLotoUoVoWoXotoYoZpaoZoYotpbpbpbpbotahahahpclGkekelHkekdhlhlkclFhlkKejkJhlhlhlhlhlhlhlhlkKeS -aaabababababababababababababababomoxoypdpepepepepdoyoAoBoCoCoCpfoEabababababababababacacacacacacgGpglPhrlPphhrhrhrhrpikHpjlUlUlUlUpklTnwlXpllUlUlUlUpmotoUpnoWoXotpopopopopootppppppppotahahahpckFkChlkBkDkDkChlkBkChlpqejprkDkDkDkEkFkDpsptpueS -aaabababababababababababababababomoxpdpvpwpxpxpypvpdoAoBoCoCoCpzoEabababababababababacacacacacacgGpAmkpBpCmkhrhrhrhrpDkHpjlUlUlUlUpEpFpFpFpGlUlUlUlUpHotoUpnoWpnpIpopopopopopJpopopopKotahahahouejejpcejejejejpLejejpcejejpMpNpNpNlFlGpNpNpNpOeS -aaabababababababababababababababompPpepQpRpxpxpRpSpeoAoBoCoCoCpzoEabababababababababacacacacacacgGmKhrhrhrhrhrhrhrhrpTkHpjlUlUlUlUlUlUlUlUlUlUlUlUlUpmotoUpnpnpnpIpopopopopopJpopopopKotbHahahjJpUpVhlpWpXjJpYhlpZqahlqbejqcqdqdqdhlhlqdqdqdqeeS -aaabababababababababababababababomoxpeqfqfpxpxqfqfpeoAoBoCoCoCpzoEabababababababababababacacacacgGmKhrhrhrhrhrhrhrhrqgkHpjlUlUlUlUlUlUlUlUlUlUlUlUlUpmotoUpnpnqhotpoqipoqipootqjqjqjqjotahahahjJqknGhlhlqlqmqnhlhlqoqpqqejqrqsqsqsqsqsqsqsqsqteS -aaabababababababababababababababquoxqvpxpxpxpxpxpxqwoAoBoCoCoCoDoEabababababababababababacacacacgGqxqyqyqyqzhrhrnMnpqAkHqBqClUlUlUlUlUlUlUlUlUlUlUqDqEotqFpnpnqGotqHpoqIpoqJotqKqKqKqKotahahahjJqLqMqNqOqPjJqnhlhlqQqRjJejqSqSqSqSqSqSqTqSqSqSeS -aaabababababababababababababababomoxpdqUpypxpxpyqVpdoAoBoCoCqWqXqXqXqXqXqXqXqXqXqXqXqXqXadadadadgGgGgGgGhtqYqZrarbgGgGkHrcrcrcrdoqrcrercrercrdoqrcrcrcotototrfotototototototototototototjDjDjDejjJjJjJjJjJouqnhlhlqnqnqnouejejejejejejejejejejeS -aaabababababababababababababababomoxpepRrgpxpxpRrhpeoAoBoCoCadriahahahahahahahahairjrkrlrmrlrnroahrprqahahahahahahrrahrsahahahahahahahaiahahahahahahahrortahahahahaiahruahahahahahahahjDahahahrvahahaiahahrwrxrxrxrxrxrxryrzrArBrzrCrDrErFrGrHrI -aaabababababababababababababababomoxrJqfqfpxpxqfqfrJoAoBoCoCahrKahahahahahahahahahahahahahahahahahrpahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahjDahahahjDahahahahahrLahrMrMrMrMahrNrzrzrzrzrOrPrQrRrRrSrI -aaabababababababababababababababomoxrJpypypxpxpypyrJoAoBoCoCrTrKahahahahahahahahahahahahahahahahahrpahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahjDahahahjDahahahahahrLahrMrMrMrMahrNrzrzrzrzrOrUrQrRrRrSrI -aaabababababababababababababababomoxperVpRpxpxpRrWpeoAoBoCoCadriahahahahahahahahahrMrMrMrMrMrMahahrpahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahjDahahahjDahahahahahrXrYrYrYrYrYrYrZrzrzrzrzrCrDsasbsbscrI -aaabababababababababababababababomoxpdsdqfpxpxqfsepdoAoBoCoCqWqXqXqXqXqXqXqXqXqXqXqXqXqXejsfsgsgsfejqXqXqXqXshjDqXqXshjDqXqXqXqXsisjsksjsisislslsisislslsijDjDjDotototsmototototslslslsijDjDjDejejejejejejousnsnsnsnsnsnouejejejejejejejejejejeS -aaabababababababababababababababquoxqvpxpxpxpxpxpxqwoAoBoCoCoCoDoEabababababababababababejsospsqsoejsrsrsraiahahssstahahaisrsrsrsisisisisisusvswsxswsyszsisAahahotsBsCsDsDsEsFotsGsHsIslahahahejsJsKsKsKsLejhlpYhlhlpYhlejsMsNsOsPsQejsRsSsTsUeS -aaabababababababababababababababomoxsVqfpxpypypxsWsVoAoBoCoCoCpzoEabababababababababababejsXsYsZtaejahtbtctctctctctctctctctctdahsiszsytetfswswswswswswswsiahahahottgsDsDthototottitjtkslahahahejtltmtmtmtnejejovtotoovejejtpfcfcfcfctqfcfcfctreS -aaabababababababababababababababompPsVtspxpypypxttsVoAoBoCoCoCpzoEabababababababababababejtufcfctvejahtwtxtxtxtytxtxtytxtxtxtzahsiswswtAtAswswswtAtAswswsiahahahottgsDsDsDtBsFottCtDtEslahahahejtFfcfcfcfctGtHtIfcfctJtKtLfcfcfcfctMejtNfcfctreS -aaabababababababababababababababomoxpdpvtOqftPpxpvpdoAoBoCoCoCpzoEabababababababababababejtQtRtSfcejtTtwtxtUtVtVtVtVtVtVtUtxtztWslswtXtYtZuaswtXubucuaswslahahahotudsDsDthotototuetDtEsiahahahejufugfcuhuiujukulfcfculumunuoupfcuqurejusututuueS -aaabababababababababababababababomoxoypdpepepepepdoyoAoBoCoCoCpfoEabababababababababababejejejejuvejtTtwtxuwtxtxtxtxtxtxuwtxtztWslswtXuxuyuaswtXuzuAuaswslahahahotuBsDsDsDuCsFotuDuEtEsiahahahejejejuvejejejejejuFuFejejejululuGululejejejejejeS -aaabababababababababababababababomoxoyozoyoyoyoyozoyoAoBoCoCoCoDoEabababababababababababejuHuIuJfcejuKtwtxuwtxtxtxtxuwtxuwtxtztWslswswuLuLswswswuLuLswswslahahahsmsDsDsDthotototuMuEtEsiahahahjJuNuOfcuPuQuRuRuOfcfcuSuQuTuRuOfcfcfcuUfcuVuWsUeS -aaabababababababababababababababojokokokokokokokokokokolomomomomomababababababababababacejuXfcfcuYejtTtwtxuwtxuwtxtxtxtxuwtxtztWslswswswswswswswswswswswsibHahahotuZvasDsDvbvcotuMuEtEslahahahjJvdtSfcvetRtSfcvffcfcvetRtRtRtRtRtRuivgtNfcfctreS -aaababababababababababababababababababababababababababababababababababababababababababacejvhvivjfcuvahtwtyuwtxtxtxtVtxtxuwtytzahsiswswtAtAswswswswswswswsiahahahotototsmototototvkvlvmslahahahejejovuvovejejuvejvnvnejulululululululejvofcvptreS -aaababababababababababababababababababababababababababababababababababababababababababacejejejejejejahtwtyuwtxtxtxtxtxtxuwtytzahsivqtXvrvsuaswswswswswswvtahahahsiszvuswvvvwvxtfswswswslahahahouvyvzhlvAvBvCfcejfcfculvDvEvFvGvHvIvJejvKvLvMvNeS +aaabababababababababababababababomoxoyfyeWeWeWeWfyoyoAoBoCoCoCpfoEabababababababababacacacacacacgGpglPhrlPphhrhrhrhrpikHpjlUlUlUlUpklTnwlXpllUlUlUlUpmotoUpnoWoXotpopopopopootppppppppotahahahpckFkChlkBkDkDkChlkBkChlpqejprkDkDkDkEkFkDpsptpueS +aaabababababababababababababababomoxfyfTfRhchcipfTfyoAoBoCoCoCpzoEabababababababababacacacacacacgGpAmkpBpCmkhrhrhrhrpDkHpjlUlUlUlUpEpFpFpFpGlUlUlUlUpHotoUpnoWpnpIpopopopopopJpopopopKotahahahouejejpcejejejejpLejejpcejejpMpNpNpNlFlGpNpNpNpOeS +aaabababababababababababababababompPeWpdkMhchckMpeeWoAoBoCoCoCpzoEabababababababababacacacacacacgGmKhrhrhrhrhrhrhrhrpTkHpjlUlUlUlUlUlUlUlUlUlUlUlUlUpmotoUpnpnpnpIpopopopopopJpopopopKotbHahahjJpUpVhlpWpXjJsfhlpvpwhlqbejqcqdqdqdhlhlqdqdqdqeeS +aaabababababababababababababababomoxeWpxpxhchcpxpxeWoAoBoCoCoCpzoEabababababababababababacacacacgGmKhrhrhrhrhrhrhrhrqgkHpjlUlUlUlUlUlUlUlUlUlUlUlUlUpmotoUpnpnqhotpoqipoqipootqjqjqjqjotahahahjJqknGhlhlqlqmqnhlhlqoqpqqejqrqsqsqsqsqsqsqsqsqteS +aaabababababababababababababababquoxpyhchchchchchcpQoAoBoCoCoCoDoEabababababababababababacacacacgGqxqyqyqyqzhrhrnMnpqAkHqBqClUlUlUlUlUlUlUlUlUlUlUqDqEotqFpnpnqGotqHpoqIpoqJotqKqKqKqKotahahahjJqLqMqNqOqPjJqnhlhlqQqRjJejqSqSqSqSqSqSqTqSqSqSeS +aaabababababababababababababababomoxfypRiphchcippSfyoAoBoCoCqWqXqXqXqXqXqXqXqXqXqXqXqXqXadadadadgGgGgGgGhtqYqZrarbgGgGkHrcrcrcrdoqrcrercrercrdoqrcrcrcotototrfotototototototototototototjDjDjDejjJjJjJjJjJouqnhlhlqnqnqnouejejejejejejejejejejeS +aaabababababababababababababababomoxeWkMpZhchckMqaeWoAoBoCoCadriahahahahahahahahairjrkrlrmrlrnroahrprqahahahahahahrrahrsahahahahahahahaiahahahahahahahrortahahahahaiahruahahahahahahahjDahahahrvahahaiahahrwrxrxrxrxrxrxryrzrArBrzrCrDrErFrGrHrI +aaabababababababababababababababomoxqfpxpxhchcpxpxqfoAoBoCoCahrKahahahahahahahahahahahahahahahahahrpahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahjDahahahjDahahahahahrLahrMrMrMrMahrNrzrzrzrzrOrPrQrRrRrSrI +aaabababababababababababababababomoxqfipiphchcipipqfoAoBoCoCrTrKahahahahahahahahahahahahahahahahahrpahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahjDahahahjDahahahahahrLahrMrMrMrMahrNrzrzrzrzrOrUrQrRrRrSrI +aaabababababababababababababababomoxeWqvkMhchckMqweWoAoBoCoCadriahahahahahahahahahrMrMrMrMrMrMahahqUahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahjDahahahjDahahahahahrXrYrYrYrYrYrYrZrzrzrzrzrCrDsasbsbscrI +aaabababababababababababababababomoxfyqVpxhchcpxrgfyoAoBoCoCqWqXqXqXqXqXqXqXqXqXqXqXqXqXrhrVrJrJrVrhqXqXqXqXshjDqXqXshjDqXqXqXqXsisjsksjsisislslsisislslsijDjDjDotototsmototototslslslsijDjDjDejejejejejejousnsnsnsnsnsnouejejejejejejejejejejeS +aaabababababababababababababababquoxpyhchchchchchcpQoAoBoCoCoCoDoEabababababababababababrhsdrWsesdrhsrsrsraiahahssstahahaisrsrsrsisisisisisusvswsxswsyszsisAahahotsBsCsDsDsEsFotsGsHsIslahahahejsJsKsKsKsLejhlpYhlhlpYhlejsMsNsOsPsQejsRsSsTsUeS +aaabababababababababababababababomoxsopxhcipiphcspsooAoBoCoCoCpzoEabababababababababababrhsVsqsXsWrhahtbtctctctctctctctctctctdahsiszsytetfswswswswswswswsiahahahottgsDsDthototottitjtkslahahahejtltmtmtmtnejejovtotoovejejtpfcfcfcfctqfcfcfctreS +aaabababababababababababababababompPsosYhcipiphcsZsooAoBoCoCoCpzoEabababababababababababrhtstatattrhahtwtxtxtxtytxtxtytxtxtxtzahsiswswtAtAswswswtAtAswswsiahahahottgsDsDsDtBsFottCtDtEslahahahejtFfcfcfcfctGtHtIfcfctJtKtLfcfcfcfctMejtNfcfctreS +aaabababababababababababababababomoxfyfTtupxtvhcfTfyoAoBoCoCoCpzoEabababababababababababrhtPtOuHtQrhtTtwtxtUtVtVtVtVtVtVtUtxtztWslswtXtYtZuaswtXubucuaswslahahahotudsDsDthotototuetDtEsiahahahejufugfcuhuiujukulfcfculumunuoupfcuqurejusututuueS +aaabababababababababababababababomoxoyfyeWeWeWeWfyoyoAoBoCoCoCpfoEabababababababababababrhrhrhrhuIrhtTtwtxuwtxtxtxtxtxtxuwtxtztWslswtXuxuyuaswtXuzuAuaswslahahahotuBsDsDsDuCsFotuDuEtEsiahahahejejejuvejejejejejuFuFejejejululuGululejejejejejeS +aaabababababababababababababababomoxoyozoyoyoyoyozoyoAoBoCoCoCoDoEabababababababababababrhuXuJuYtarhuKtwtxuwtxtxtxtxuwtxuwtxtztWslswswuLuLswswswuLuLswswslahahahsmsDsDsDthotototuMuEtEsiahahahjJuNuOfcuPuQuRuRvhfcfcuSuQuTuRuOfcfcfcuUfcuVuWsUeS +aaabababababababababababababababojokokokokokokokokokokolomomomomomababababababababababacrhvitatavjrhtTtwtxuwtxuwtxtxtxtxuwtxtztWslswswswswswswswswswswswsibHahahotuZvasDsDvbvcotuMuEtEslahahahjJvdtSfcvetRtSfcvffcfcvetRtRtRtRtRtRuivgtNfcfctreS +aaababababababababababababababababababababababababababababababababababababababababababacrhxuxlxvtauIahtwtyuwtxtxtxtVtxtxuwtytzahsiswswtAtAswswswswswswswsiahahahotototsmototototvkvlvmslahahahejejovuvovejejuvejvnvnejulululululululejvofcvptreS +aaababababababababababababababababababababababababababababababababababababababababababacrhrhrhrhrhrhahtwtyuwtxtxtxtxtxtxuwtytzahsivqtXvrvsuaswswswswswswvtahahahsiszvuswvvvwvxtfswswswslahahahouvyvzhlvAvBvCfcejfcfculvDvEvFvGvHvIvJejvKvLvMvNeS aaababababababababababababababababababababababababababababababababababababababababababacacacacacacadtTtwtxuwtxvOtxtxtxtxuwtxtztWslswtXvPvQuaswswswswswswvRahahahvRswswswswswswswswswswsiahahahhlhlhlhlvSvTvUvVejfcfcvnfcfcfcfcfcfcvWejvXvYvZwaeS aaabababababababababababababababababababababababababababababababababababababababababacacacacacacacadtTtwtxuwtxtxtxvOtxtxuwtxtztWslswswuLuLswswswswswswswwbahahahwbswswswswswswswswswswwcahahahwdhlhlhlvSwevUwfejfcfcvnfcsgsgsgsgsgwgejejejejejeS aaabababababababababababababababababababababababababababababababababababababababababacacacacacacacadtTtwtxtUtVtVtVtVtVtVtUtxtztWslswswswswswswswswswswswslahahahslswtAtAswswtAtAswswswsiahahahouwhwihlwjwkwlfcejwmwmulwnfcfcfcfcfcwowpwqwrwrwseS aaabababababababababababababababababababababababababababababababababababababababababacacacacacacacadtTtwtxtxtxtytxtxtytxtxtxtztWwtwuwuwuwuwuwuswswswswswslahahahslswwvwvswswwvwvswswswslahahahejejejwwejejejuvejejejejwxfcfcwywyfcfcwzfcfcfcwgeS aaabababababababababababababababababababababababababababababababababababababababacacacacacacacacacadbHwAwBwBwBwBwBwBwBwBwBwBwCahwDwEwFwGwHwIwJswswswswswsiahahahsiswwvwvswswwvwvswswswslahahahejwKwLhlwMejwNfcwOwPfcejwQfcvLwRvMwSwTwpwUwVwVwWeS aaabababababababababababababababababababababababababababababababababababababababacacacacacacacacacadwXahahahahsjsjsjsjahahahahwXwDwYwYwYwYwYwYswwZxaxbxcsiahahahsiszuLuLswswuLuLswsvwZslahahahejxdhlhlhlejulululululejxefcvLvMvMwSxfejejejejejeS -aaababababababababababababababababababababababababababababababababababababababacacacacacacacacacacadadadadadadadadadadadadadadadwDxgxhxixjxkwYsisisisisisixlxlxlejejejejejejejejejejejejbHahahejxmhlhlhlejxnxoulwSxpejxqfcvLxrxswSwowpwqwrwrwseS -aaababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacwDwDwDwDwDwDxtwDacacacadagahahahxupYwpxvxwxxuvfcuPxyfcuvahahahejxzhlhlhlwwhlhlulfcfcxAfcfcfcxBxBfcfcwzfcfcfcwgeS -aaababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacwDxCxDxExFxGxHwDacacacadbHrMrMrMxuqnxIxJfcxKejtNfcfcxKejahahahejejejejejejejejejejejejxLxMxNfcxOxMxPwpwUwVwVwWeS -aaababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacwDxQxHxHxHxHxHwDacacacadahrMrMrMxuqnxRxSfcxTejxUfcfcxVejahahahrDxWxXxYxZxYxXxWyaybybejejejejycejejejejejejejejeS -aaabababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacwDydxHyeyfygyhwDacacacadagahahahxupYwpyiyjykejylymynyoejahahahrDyprzrzrzrzrzypyqyryrejysytyuyuyvyvejywyuywyxyweS -aaabababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacwDwDyywDwDwDwDwDacacrDrDrDyzyzyzejejejejejejejejejejejejahahahyAyprzyByByBrzypyCyryDejejejyuyuyuyuyEyFyFyFyFyFeS -aaabababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacwDyGyHyIwDacacacacacrDyJyKyLrzyMyKyJrDacacacacacacejwPuvahahahyAyprzrzrzrzrzypyCyryrejysyNyuyOyuyPejyQyuyQyuyQeS -aaabababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacwDyRyHySwDacacacacacrDrDrDyLrzyMrDrDrDacacacacacacejfcejrMahahyAyprzyByByBrzypyCyryDejejejejejejejejejejejejejeS -aaababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacwDwDwDwDwDacacacacacrDyJyKyLrzyMyKyJrDacacacacacacejfcejrMahahrDyprzrzrzrzrzypyqyryrrDacacacacacacacacacacacacaa -aaababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacrDrDrDyLrzyMrDrDrDacacacacacacejfcejrMrMagrDxWyTyTyTyTyTxWyUyVyVrDkHkHkHkHkHkHacacacacacacaa -aaabababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacrDyJyKyLrzyMyKyJrDacacacacacacejfcejulyWulkHkHyXyXyXyXyXyXyXyXkHkHyYyZzazbzckHacacacacacacaa -aaabababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacrDrDrDyLrzyMrDrDrDacacacacacacejfcejsXzdzekHzfzgzhzizjzkzlzmznzokHzazazazazakHacacacacacacaa -aaabababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacototototrDyJyKyLrzyMyKyJrDototototacacejfcejzpfczqkHzrlUzsztzslUlUlUlUlUzuzazazazazakHacacacacacacaa -aaababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacotzvotzvrDrDrDyLrzyMrDrDrDzvotzvotacacejfcuvfczwfczxlUzyzzzzzzzzzAzBzBzCkHzDzEzFzGzHkHacacacacacacaa -aaababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacotzIotzJrDyJyKzKzLzMyKyJrDzJotzIotacacejejejejejejkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHacacacacacacaa +aaababababababababababababababababababababababababababababababababababababababacacacacacacacacacacadadadadadadadadadadadadadadadwDxgxhxixjxkwYsisisisisisixwxwxwxxxxxxxxxxxxxxxxxxxxxxxxbHahahejxmhlhlhlejxnxoulwSxpejxqfcvLxrxswSwowpwqwrwrwseS +aaababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacwDwDwDwDwDwDxtwDacacacxxxyxIxIxIxJxyxKxSxRxUxTyixVykyjxTahahahejxzhlhlhlwwhlhlulfcfcxAfcfcfcxBxBfcfcwzfcfcfcwgeS +aaababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacwDxCxDxExFxGxHwDacacacxxylymymymxJymynyoyjyzxxyWyjyjyzxxahahahejejejejejejejejejejejejxLxMxNfcxOxMxPwpwUwVwVwWeS +aaababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacwDxQxHxHxHxHxHwDacacacxxxIymymymxJymzdzeyjzfxxzpyjyjzqxxahahahrDxWxXxYxZxYxXxWyaybybejejejejycejejejejejejejejeS +aaabababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacwDydxHyeyfygyhwDacacacxxxyxIxIxIxJxyxKzWzwzXxxzZzYAbAaxxahahahrDyprzrzrzrzrzypyqyryrejysytyuyuyvyvejywyuywyxyweS +aaabababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacwDwDyywDwDwDwDwDacacrDrDrDAcAcAcxxxxxxxxxxxxxxxxxxxxxxxxahahahyAyprzyByByBrzypyCyryDejejejyuyuyuyuyEyFyFyFyFyFeS +aaabababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacwDyGyHyIwDacacacacacrDyJyKyLrzyMyKyJrDacacacacacacxxAdxTahahahyAyprzrzrzrzrzypyCyryrejysyNyuyOyuyPejyQyuyQyuyQeS +aaabababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacwDyRyHySwDacacacacacrDrDrDyLrzyMrDrDrDacacacacacacxxyjxxrMahahyAyprzyByByBrzypyCyryDejejejejejejejejejejejejejeS +aaababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacwDwDwDwDwDacacacacacrDyJyKyLrzyMyKyJrDacacacacacacxxyjxxrMahahrDyprzrzrzrzrzypyqyryrrDacacacacacacacacacacacacaa +aaababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacrDrDrDyLrzyMrDrDrDacacacacacacxxyjxxrMrMxWrDxWyTyTyTyTyTxWyUyVyVrDkHkHkHkHkHkHacacacacacacaa +aaabababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacrDyJyKyLrzyMyKyJrDacacacacacacxxyjxxAeAfAekHrDyXyXyXyXyXyXyXyXkHkHyYyZzazbzckHacacacacacacaa +aaabababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacrDrDrDyLrzyMrDrDrDacacacacacacxxyjxxAgAiAhkHAjzgzhzizjzkzlzmznzokHzazazazazakHacacacacacacaa +aaabababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacototototrDyJyKyLrzyMyKyJrDototototacacxxyjxxAkyjAlkHzrlUzsztzslUlUlUlUlUzuzazazazazakHacacacacacacaa +aaababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacotzvotzvrDrDrDyLrzyMrDrDrDzvotzvotacacxxyjxTyjAmyjzxlUzyzzzzzzzzzAzBzBzCkHzDzEzFzGzHkHacacacacacacaa +aaababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacotzIotzJrDyJyKzKzLzMyKyJrDzJotzIotacacxxxxxxxxxxxxkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHacacacacacacaa aaabababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacotzNzOzNrDrDrDzPrDzQrDrDrDzNzRzNotacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaa aaabababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacotzSzNzNzTzNzNzNotzNzNzNzTzNzNzUotacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazVzVzVzVzVzVzVzVzVzVzVzVzVzVzVzVzVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From a0a390e8875908ba440588e58908bbecd0656e9b Mon Sep 17 00:00:00 2001 From: Neerti Date: Wed, 31 May 2017 17:41:02 -0400 Subject: [PATCH 40/84] Surgery Modifications Semi-rewrites how surgery failure works. Using an improper surface will call the surgery step's fail proc instead of just doing a melee attack. Adds 'surgery odds' var to objs, which determines effectiveness. The numbers for operating tables/roller beds/tables remain unchanged from the previous version, however doing it this way makes it cleaner to add new surfaces in the future. Adds a proc to get a surgery surface. Also makes burn repair on FBPs more efficent, so that one scorched robot does not take literally all of robotic's wires. --- code/_helpers/unsorted.dm | 20 ++++++++--- code/game/machinery/OpTable.dm | 1 + .../structures/stool_bed_chair_nest/bed.dm | 1 + code/modules/power/cable.dm | 4 +-- code/modules/surgery/surgery.dm | 33 +++++++++++++++---- code/modules/tables/tables.dm | 1 + 6 files changed, 46 insertions(+), 14 deletions(-) diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm index 6fa9d4ec0c..2b75414a7e 100644 --- a/code/_helpers/unsorted.dm +++ b/code/_helpers/unsorted.dm @@ -1157,12 +1157,22 @@ proc/is_hot(obj/item/W as obj) istype(W, /obj/item/weapon/surgical/bonesetter) ) -//check if mob is lying down on something we can operate him on. +// check if mob is lying down on something we can operate him on. +// The RNG with table/rollerbeds comes into play in do_surgery() so that fail_step() can be used instead. /proc/can_operate(mob/living/carbon/M) - return (M.lying && \ - locate(/obj/machinery/optable, M.loc) || \ - (locate(/obj/structure/bed/roller, M.loc) && prob(75)) || \ - (locate(/obj/structure/table/, M.loc) && prob(66))) + return M.lying + +// Returns an instance of a valid surgery surface. +/mob/living/proc/get_surgery_surface() + if(!lying) + return null // Not lying down means no surface. + var/obj/surface = null + for(var/obj/O in loc) // Looks for the best surface. + if(O.surgery_odds) + if(!surface || surface.surgery_odds < O) + surface = O + if(surface) + return surface /proc/reverse_direction(var/dir) switch(dir) diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm index 4d56d6662d..5696892ddc 100644 --- a/code/game/machinery/OpTable.dm +++ b/code/game/machinery/OpTable.dm @@ -8,6 +8,7 @@ use_power = 1 idle_power_usage = 1 active_power_usage = 5 + surgery_odds = 100 var/mob/living/carbon/human/victim = null var/strapped = 0.0 var/obj/machinery/computer/operating/computer = null diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index 8f91f12b26..1b9d897b99 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -203,6 +203,7 @@ icon = 'icons/obj/rollerbed.dmi' icon_state = "down" anchored = 0 + surgery_odds = 75 /obj/structure/bed/roller/update_icon() return // Doesn't care about material or anything else. diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 27bf4c0ab7..2d53277590 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -526,9 +526,9 @@ obj/structure/cable/proc/cableColor(var/colorC) if(!S || S.robotic < ORGAN_ROBOT || S.open == 3) return ..() - var/use_amt = min(src.amount, ceil(S.burn_dam/3), 5) + var/use_amt = min(src.amount, ceil(S.burn_dam/5), 5) if(can_use(use_amt)) - if(S.robo_repair(3*use_amt, BURN, "some damaged wiring", src, user)) + if(S.robo_repair(5*use_amt, BURN, "some damaged wiring", src, user)) src.use(use_amt) else diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index 38b919823f..b9fe362031 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -1,5 +1,8 @@ /* SURGERY STEPS */ +/obj/ + var/surgery_odds = 0 // Used for tables/etc which can have surgery done of them. + /datum/surgery_step var/priority = 0 //steps with higher priority would be attempted first @@ -111,13 +114,29 @@ return 1 M.op_stage.in_progress += zone S.begin_step(user, M, zone, src) //start on it - //We had proper tools! (or RNG smiled.) and user did not move or change hands. - if(prob(S.tool_quality(src)) && do_mob(user, M, rand(S.min_duration, S.max_duration))) - S.end_step(user, M, zone, src) //finish successfully - else if ((src in user.contents) && user.Adjacent(M)) //or - S.fail_step(user, M, zone, src) //malpractice~ - else // This failing silently was a pain. - user << "You must remain close to your patient to conduct surgery." + var/success = TRUE + + // Bad tools make it less likely to succeed. + if(!prob(S.tool_quality(src))) + success = FALSE + + // Bad or no surface may mean failure as well. + var/obj/surface = M.get_surgery_surface() + if(!surface || !prob(surface.surgery_odds)) + success = FALSE + + // Not staying still fails you too. + if(success) + if(!do_mob(user, M, rand(S.min_duration, S.max_duration))) + success = FALSE + else + to_chat(user, "You must remain close to your patient to conduct surgery.") + + if(success) + S.end_step(user, M, zone, src) + else + S.fail_step(user, M, zone, src) + M.op_stage.in_progress -= zone // Clear the in-progress flag. if (ishuman(M)) var/mob/living/carbon/human/H = M diff --git a/code/modules/tables/tables.dm b/code/modules/tables/tables.dm index 72cc6dbf8b..db445e9f50 100644 --- a/code/modules/tables/tables.dm +++ b/code/modules/tables/tables.dm @@ -8,6 +8,7 @@ climbable = 1 layer = 2.8 throwpass = 1 + surgery_odds = 66 var/flipped = 0 var/maxhealth = 10 var/health = 10 From 6ada64082b4a3344905047bb27ac95bf8fccb1b2 Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Wed, 31 May 2017 16:03:34 -0400 Subject: [PATCH 41/84] Adds Trash Piles Replaces some lockers and racks in maintenance with trash piles. They are presistent loot piles for people who just can't help but greytide. It allows people who join later in the shift to still get goodies. Each is searchable once per shift by each ckey. They have three loot lists: alpha, beta, and gamma. Alpha has the highest chance and just random maint stuff. All usable items (no random empty beer cans) but nothing you couldn't find elsewhere. Beta has a lower chance of spawning and is usually contraband, mechaically useful stuff. Radio jammers and the like. Gamma is dangerous or highly illegal contraband, and is unique. Guns (nonlethal!), teleporters, syndicate IDs, etc. Gamma items have special handling: all of the trash piles share a gamma list, and when an item is given out from the gamma list to someone, it's de-pooled so that another trash pile won't hand it out. The pile-collective maintains a reference to it as an 'allocated' gamma item though. Then, when the gamma list runs out, it reviews allocated gamma items to find any that it might be able to 're'-distribute. Namely ones that have been deleted, or are in cryopod computers because the user left with them. It can then hand that item out again. If it cannot hand out a new gamma item, it gives beta instead. You can also just manually put gamma-list items back into the piles if you're leaving. Or, if you find a translocator, but already made yourself one in R&D (or later make one), or you're the RD and find a bluespace harpoon, you can stuff the translocator/whatever back into any trash pile and it'll be re-pooled into all of them. You can only return gamma items this way, not beta/alpha. Additionally, if you find yourself playing a simple animal mob for an event (or you're a mouse), you can hide in trash piles by clicking them. There's a 50% chance you're revealed if the pile is searched. You can climb out by clicking the pile again. I dunno if that'll ever get used but it was easy to code, so eh. --- code/game/machinery/cryopod.dm | 2 +- code/game/objects/random/random_vr.dm | 22 +- code/game/objects/structures/trash_pile.dm | 238 ++++++++++++++++ .../projectiles/guns/projectile/dartgun.dm | 2 +- icons/obj/trash_piles.dmi | Bin 0 -> 1588 bytes maps/tether/tether-01-surface.dmm | 258 +++++++++--------- maps/tether/tether-03-station.dmm | 151 +++++----- vorestation.dme | 1 + 8 files changed, 451 insertions(+), 223 deletions(-) create mode 100644 code/game/objects/structures/trash_pile.dm create mode 100644 icons/obj/trash_piles.dmi diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index a11e94c451..6f9c37ef66 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -432,7 +432,7 @@ else if(control_computer && control_computer.allow_items) control_computer.frozen_items += W - W.loc = null + W.loc = control_computer //VOREStation Edit else W.forceMove(src.loc) diff --git a/code/game/objects/random/random_vr.dm b/code/game/objects/random/random_vr.dm index 072b853445..cad9efe36e 100644 --- a/code/game/objects/random/random_vr.dm +++ b/code/game/objects/random/random_vr.dm @@ -157,16 +157,12 @@ prob(2);/obj/item/weapon/reagent_containers/syringe/drugs, prob(1);/obj/item/weapon/reagent_containers/syringe/steroid) -/obj/random_multi/single_item/teleport - name = "Multi Point - Random Teleport Item" - id = "Single Teleporter" - item_path = null - - New() - item_path = pick(list(/obj/item/device/perfect_tele,/obj/item/weapon/bluespace_harpoon)) - ..() - -/obj/random_multi/single_item/netgun - name = "Multi Point - Random Hunter Netgun" - id = "Single Netgun" - item_path = /obj/item/weapon/gun/energy/netgun +//A random thing so that the spawn_nothing_percentage can be used w/o duplicating code. +/obj/random/trash_pile + name = "Random Trash Pile" + desc = "Hot Garbage." + icon = 'icons/obj/trash_piles.dmi' + icon_state = "randompile" + spawn_nothing_percentage = 0 +/obj/random/trash_pile/item_to_spawn() + return /obj/structure/trash_pile \ No newline at end of file diff --git a/code/game/objects/structures/trash_pile.dm b/code/game/objects/structures/trash_pile.dm new file mode 100644 index 0000000000..434b4cc852 --- /dev/null +++ b/code/game/objects/structures/trash_pile.dm @@ -0,0 +1,238 @@ +/obj/structure/trash_pile + name = "trash pile" + desc = "A heap of garbage, but maybe there's something interesting inside?" + icon = 'icons/obj/trash_piles.dmi' + icon_state = "randompile" + density = 1 + anchored = 1.0 + + var/list/searchedby = list()// Characters that have searched this trashpile, with values of searched time. + var/mob/living/hider // A simple animal that might be hiding in the pile + + var/chance_alpha = 79 // Alpha list is junk items and normal random stuff. + var/chance_beta = 20 // Beta list is actually maybe some useful illegal items. If it's not alpha or gamma, it's beta. + var/chance_gamma = 1 // Gamma list is unique items only, and will only spawn one of each. This is a sub-chance of beta chance. + + //These are types that can only spawn once, and then will be removed from this list. + //Alpha and beta lists are in their respective procs. + var/global/list/unique_gamma = list( + /obj/item/device/perfect_tele, + /obj/item/weapon/bluespace_harpoon, + /obj/item/weapon/gun/energy/netgun, + /obj/item/weapon/card/id/syndicate, + /obj/item/weapon/moneybag/vault, + /obj/item/weapon/permit, + /obj/item/weapon/gun/projectile/dartgun + ) + + var/global/list/allocated_gamma = list() + +/obj/structure/trash_pile/initialize() + ..() + icon_state = pick("pile1","pile2","pilechair","piletable","pilevending") + +/obj/structure/trash_pile/attackby(obj/item/W as obj, mob/user as mob) + var/w_type = W.type + if(w_type in allocated_gamma) + to_chat(user,"You feel \the [W] slip from your hand, and disappear into the trash pile.") + user.unEquip(W) + W.forceMove(src) + allocated_gamma -= w_type + unique_gamma += w_type + qdel(W) + + else + return ..() + +/obj/structure/trash_pile/attack_generic(mob/user) + //Simple Animal + if(isanimal(user)) + var/mob/living/L = user + //They're in it, and want to get out. + if(L.loc == src) + var/choice = alert("Do you want to exit \the [src]?","Un-Hide?","Exit","Stay") + if(choice == "Exit") + if(L == hider) + hider = null + L.forceMove(get_turf(src)) + else if(!hider) + var/choice = alert("Do you want to hide in \the [src]?","Un-Hide?","Hide","Stay") + if(choice == "Hide" && !hider) //Check again because PROMPT + L.forceMove(src) + hider = L + else + return ..() + +/obj/structure/trash_pile/attack_hand(mob/user) + //Human mob + if(ishuman(user)) + var/mob/living/carbon/human/H = user + H.visible_message("[user] searches through \the [src].","You search through \the [src].") + if(hider) + to_chat(hider,"[user] is searching the trash pile you're in!") + + //Do the searching + if(do_after(user,rand(4 SECONDS,6 SECONDS),src)) + + //If there was a hider, chance to reveal them + if(hider && prob(50)) + to_chat(hider,"You've been discovered!") + hider.forceMove(get_turf(src)) + hider = null + to_chat(user,"Some sort of creature leaps out of \the [src]!") + + //You already searched this one bruh + else if(user.ckey in searchedby) + to_chat(H,"There's nothing else for you in \the [src]!") + + //You found an item! + else + var/luck = rand(1,100) + var/obj/item/I + if(luck <= chance_alpha) + I = produce_alpha_item() + else if(luck <= chance_alpha+chance_beta) + I = produce_beta_item() + else if(luck <= chance_alpha+chance_beta+chance_gamma) + I = produce_gamma_item() + + //We either have an item to hand over or we don't, at this point! + if(I) + searchedby += user.ckey + I.forceMove(get_turf(src)) + to_chat(H,"You found \a [I]!") + + else + return ..() + +//Random lists +/obj/structure/trash_pile/proc/produce_alpha_item() + var/path = pick(prob(4);/obj/item/broken_device, + prob(2);/obj/item/weapon/contraband/poster, + prob(2);/obj/item/device/flashlight/flare, + prob(2);/obj/item/device/flashlight/glowstick, + prob(2);/obj/item/device/flashlight/glowstick/blue, + prob(1);/obj/item/device/flashlight/glowstick/orange, + prob(1);/obj/item/device/flashlight/glowstick/red, + prob(1);/obj/item/device/flashlight/glowstick/yellow, + prob(1);/obj/item/device/flashlight/pen, + prob(4);/obj/item/weapon/cell, + prob(4);/obj/item/weapon/cell/device, + prob(3);/obj/item/weapon/cell/high, + prob(2);/obj/item/weapon/cell/super, + prob(5);/obj/random/cigarettes, + prob(3);/obj/item/clothing/mask/gas, + prob(2);/obj/item/clothing/mask/gas/half, + prob(4);/obj/item/clothing/mask/breath, + prob(2);/obj/item/weapon/reagent_containers/glass/rag, + prob(4);/obj/item/weapon/reagent_containers/food/snacks/liquidfood, + prob(2);/obj/item/weapon/storage/secure/briefcase, + prob(4);/obj/item/weapon/storage/briefcase, + prob(5);/obj/item/weapon/storage/backpack, + prob(5);/obj/item/weapon/storage/backpack/satchel/norm, + prob(4);/obj/item/weapon/storage/backpack/satchel, + prob(3);/obj/item/weapon/storage/backpack/dufflebag, + prob(1);/obj/item/weapon/storage/backpack/dufflebag/syndie, + prob(5);/obj/item/weapon/storage/box, + prob(3);/obj/item/weapon/storage/box/donkpockets, + prob(2);/obj/item/weapon/storage/box/sinpockets, + prob(1);/obj/item/weapon/storage/box/cups, + prob(3);/obj/item/weapon/storage/box/mousetraps, + prob(3);/obj/item/weapon/storage/box/engineer, + prob(3);/obj/item/weapon/storage/wallet, + prob(1);/obj/item/device/paicard, + prob(2);/obj/item/clothing/shoes/galoshes, + prob(1);/obj/item/clothing/shoes/syndigaloshes, + prob(4);/obj/item/clothing/shoes/black, + prob(4);/obj/item/clothing/shoes/laceup, + prob(4);/obj/item/clothing/shoes/black, + prob(4);/obj/item/clothing/shoes/leather, + prob(1);/obj/item/clothing/gloves/yellow, + prob(3);/obj/item/clothing/gloves/botanic_leather, + prob(2);/obj/item/clothing/gloves/sterile/latex, + prob(5);/obj/item/clothing/gloves/white, + prob(5);/obj/item/clothing/gloves/rainbow, + prob(2);/obj/item/clothing/gloves/fyellow, + prob(1);/obj/item/clothing/glasses/sunglasses, + prob(3);/obj/item/clothing/glasses/meson, + prob(2);/obj/item/clothing/glasses/meson/prescription, + prob(1);/obj/item/clothing/glasses/welding, + prob(1);/obj/item/clothing/head/bio_hood/general, + prob(4);/obj/item/clothing/head/hardhat, + prob(3);/obj/item/clothing/head/hardhat/red, + prob(1);/obj/item/clothing/head/ushanka, + prob(2);/obj/item/clothing/head/welding, + prob(4);/obj/item/clothing/suit/storage/hazardvest, + prob(1);/obj/item/clothing/suit/space/emergency, + prob(3);/obj/item/clothing/suit/storage/toggle/bomber, + prob(1);/obj/item/clothing/suit/bio_suit/general, + prob(3);/obj/item/clothing/suit/storage/toggle/hoodie/black, + prob(3);/obj/item/clothing/suit/storage/toggle/hoodie/blue, + prob(3);/obj/item/clothing/suit/storage/toggle/hoodie/red, + prob(3);/obj/item/clothing/suit/storage/toggle/hoodie/yellow, + prob(3);/obj/item/clothing/suit/storage/toggle/brown_jacket, + prob(3);/obj/item/clothing/suit/storage/toggle/leather_jacket, + prob(1);/obj/item/clothing/suit/storage/vest/press, + prob(3);/obj/item/clothing/suit/storage/apron, + prob(4);/obj/item/clothing/under/color/grey, + prob(2);/obj/item/clothing/under/syndicate/tacticool, + prob(2);/obj/item/clothing/under/pants/camo, + prob(1);/obj/item/clothing/under/harness, + prob(1);/obj/item/clothing/under/tactical, + prob(3);/obj/item/clothing/accessory/storage/webbing, + prob(4);/obj/item/weapon/spacecash/c1, + prob(3);/obj/item/weapon/spacecash/c10, + prob(3);/obj/item/weapon/spacecash/c20, + prob(1);/obj/item/weapon/spacecash/c50, + prob(1);/obj/item/weapon/spacecash/c100, + prob(3);/obj/item/weapon/camera_assembly, + prob(4);/obj/item/weapon/caution, + prob(3);/obj/item/weapon/caution/cone, + prob(2);/obj/item/weapon/card/emag_broken, + prob(1);/obj/item/weapon/card/emag, + prob(2);/obj/item/device/camera, + prob(3);/obj/item/device/pda, + prob(3);/obj/item/device/radio/headset) + + var/obj/item/I = new path() + return I + +/obj/structure/trash_pile/proc/produce_beta_item() + var/path = pick(prob(6);/obj/item/weapon/storage/pill_bottle/tramadol, + prob(4);/obj/item/weapon/storage/pill_bottle/happy, + prob(4);/obj/item/weapon/storage/pill_bottle/zoom, + prob(4);/obj/item/weapon/material/butterfly, + prob(2);/obj/item/weapon/material/butterfly/switchblade, + prob(2);/obj/item/weapon/material/knuckledusters, + prob(1);/obj/item/weapon/material/hatchet/tacknife, + prob(1);/obj/item/clothing/suit/storage/vest/heavy/merc, + prob(1);/obj/item/weapon/beartrap, + prob(1);/obj/item/weapon/handcuffs/fuzzy, + prob(1);/obj/item/weapon/legcuffs, + prob(2);/obj/item/weapon/reagent_containers/syringe/drugs, + prob(1);/obj/item/weapon/reagent_containers/syringe/steroid, + prob(4);/obj/item/device/radio_jammer, + prob(2);/obj/item/weapon/storage/box/syndie_kit/spy, + prob(2);/obj/item/weapon/grenade/anti_photon, + prob(1);/obj/item/weapon/cell/hyper/empty) + + var/obj/item/I = new path() + return I + +/obj/structure/trash_pile/proc/produce_gamma_item() + var/path = pick_n_take(unique_gamma) + if(!path) //Tapped out, reallocate? + for(var/P in allocated_gamma) + var/obj/item/I = allocated_gamma[P] + if(!I || istype(I.loc,/obj/machinery/computer/cryopod) || I.gcDestroyed) + allocated_gamma -= P + path = P + break + + if(path) + var/obj/item/I = new path() + allocated_gamma[path] = I + return I + else + return produce_beta_item() + diff --git a/code/modules/projectiles/guns/projectile/dartgun.dm b/code/modules/projectiles/guns/projectile/dartgun.dm index 8c64b297d1..c998e152f1 100644 --- a/code/modules/projectiles/guns/projectile/dartgun.dm +++ b/code/modules/projectiles/guns/projectile/dartgun.dm @@ -62,7 +62,7 @@ var/container_type = /obj/item/weapon/reagent_containers/glass/beaker var/list/starting_chems = null -/obj/item/weapon/gun/projectile/dartgun/dartgun/New() +/obj/item/weapon/gun/projectile/dartgun/New() //VOREStation Edit - Think this was a typo ..() if(starting_chems) for(var/chem in starting_chems) diff --git a/icons/obj/trash_piles.dmi b/icons/obj/trash_piles.dmi new file mode 100644 index 0000000000000000000000000000000000000000..e1b3527c652892d3eb5ed84fc7771631a307b4ce GIT binary patch literal 1588 zcmV-42Fv-0P) zae#;b9C(bJGc*6}>)(%bWB&j%sE&YuaB3qQ7-j$z&&{vB$Ihp;zK@@+oRoubgqC}A zVq3(-qjF9&G)-JyiC$x-oSnRzj89%yN=P{|d2K#sFpGWw0004WQchCV=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6# za*U0*I5Sc+(=$pSoZ^zil2jm5sVFfoB|op^*4;psmy+=^+3kaQbcAHdZ(O+iOSw zfX3)hHwl1V2EhKL*47ibX(oacmDH*Ht%saOaa2`igCyKaMa{%in(H$?L z4S?mm036bVh6Y&T6(9uK3u;-TMo+Qh&zDh!4({+<05t>F;Xw$fW1PQuuXwUYe%Ilb zHUWTufb&E1FA4(G>+URz6m_zvsB@j&Ir^7?)0Y5-K{h)J;1s^Zei(*a@B5z3>Foue z4g|o_!$G!dGyszU>f<=Fez1B^aq=++i46c+j0hM<9IgN`8IX=ntb3~qKw~(c59jka zha>?ymqsr~xfg8jmGni)ysv zWtocq6cL&3*qqutoU>SS@Rdt|2>~uQ;2lo^sE>v2;~Fgi>Hgrc>eNBWpeF#1_txJ@ zhuJ?SV0156f*X$NOmRF8832GRVh;d(30QSk=UtI9{0|BGbcW$?Xoa5u z@AYIG!|lX4?kS(??xp+x@m~&j|CPUq_11!`km6qeKy>F#Q6Qf@^?eo~0JWzr^Ku#S zZ}39^&H$X+({`hPAL@+(^btTc`Z$H_b{K$DKp!J^`ok2ixBLBuuRJmWr7$M@UUy}) zyk7aU`|V~J^Gt*y1qEoMKL^Za{&S2H;4(nW!0Yj`sDBVp4a*26LV2Sfbge<0Y&RGg#zXAZ44Fc|S z1pHG1(A;C$ziIOLTEe3MM9*d1VCqL0;EGw1Hcd7afvEOo6H@M z`rj6x1Ykm%0RkwgT>uz@ z`FKs|GC2`qNfhvSJifm@oumZ-Xx=7(D*-V!u4Drkxe>8MxQwXjmw5MVCbm>K9Dmo%Y35UU4D1floI z@h&aE#M=CS+yV6;ykVr;OW3K+!yLbvQ5tt%Vbdom&J0km^_C9L?JEy+E07$DFlEXQyg9Fke zWtoDkhma<2r+m0+$26|?Jri4|mvPv}qe7n$DcAR;ia3B4{O)b^uS6ycInW~)CFoe} z?d5Aj?9oXUy`q*4X83C$uQ%RJUttZiDB=SgOvPVoXl0gP5V3PdmN_~8@nIpwSM(LC zk=Tgvxi>X5G>wkkntM+84|9sl5;AKzcHmh6`qUg|aVDp7Fkwu5DOQO$;JWX>lvy^W ztwuk*%L-q&8|;Wlk!m2`?UNtmjq2$>S*(_Z;M5t`a8pM%Nj+ED`pUV) zo{P|? zX)FHf5uUNmnt!6_yaabQ^!4JdKVB=HFvs@L_iDum`O;_SUc8w&YevYRF)odP!xGgq4to*8?8H*Esy M%34ab3YL-o4dufxbN~PV literal 0 HcmV?d00001 From c4bdc4c02705e6061f8255c4ffe1c6fde9b5b544 Mon Sep 17 00:00:00 2001 From: Leshana Date: Fri, 2 Jun 2017 12:01:49 -0400 Subject: [PATCH 48/84] Updated VOREStation specific files for the ammo path reorganization. * Updated paths in dm files * Updated references in all dmm files for tether, virgo, and randomz --- code/datums/autolathe/arms_vr.dm | 14 +-- code/game/machinery/autolathe_vr.dm | 8 +- code/game/machinery/vending_vr.dm | 2 +- code/game/objects/random/random_vr.dm | 54 +++++------ .../crates_lockers/closets/secure/security.dm | 7 +- code/modules/awaymissions/loot_vr.dm | 54 +++++------ .../guns/projectile/automatic_vr.dm | 2 +- .../projectiles/guns/projectile/sniper_vr.dm | 6 +- .../vore/fluffstuff/custom_boxes_vr.dm | 4 +- .../modules/vore/fluffstuff/custom_guns_vr.dm | 92 +++++++++---------- maps/RandomZLevels/carpfarm.dmm | 2 +- maps/RandomZLevels/listeningpost.dmm | 2 +- maps/RandomZLevels/snowfield.dmm | 2 +- maps/RandomZLevels/zresearchlabs.dmm | 20 ++-- maps/tether/tether-03-station.dmm | 12 +-- maps/tether/tether-06-colony.dmm | 14 +-- maps/tether/tether-07-misc.dmm | 12 +-- maps/virgo/virgo-1.dmm | 10 +- maps/virgo/virgo-2.dmm | 18 ++-- 19 files changed, 168 insertions(+), 167 deletions(-) diff --git a/code/datums/autolathe/arms_vr.dm b/code/datums/autolathe/arms_vr.dm index 9db276b678..e517c557e0 100644 --- a/code/datums/autolathe/arms_vr.dm +++ b/code/datums/autolathe/arms_vr.dm @@ -1,34 +1,34 @@ /datum/category_item/autolathe/arms/speedloader_357_flash name = "speedloader (.357 flash)" - path =/obj/item/ammo_magazine/a357/flash + path =/obj/item/ammo_magazine/m357/flash hidden = 1 /datum/category_item/autolathe/arms/speedloader_357_stun name = "speedloader (.357 stun)" - path =/obj/item/ammo_magazine/a357/stun + path =/obj/item/ammo_magazine/m357/stun hidden = 1 /datum/category_item/autolathe/arms/speedloader_357_rubber name = "speedloader (.357 rubber)" - path =/obj/item/ammo_magazine/a357/rubber + path =/obj/item/ammo_magazine/m357/rubber hidden = 1 /datum/category_item/autolathe/arms/speedloader_44 name = "speedloader (.44)" - path =/obj/item/ammo_magazine/a44sl + path =/obj/item/ammo_magazine/m44sl hidden = 1 /datum/category_item/autolathe/arms/speedloader_44_rubber name = "speedloader (.44 rubber)" - path =/obj/item/ammo_magazine/a44sl/rubber + path =/obj/item/ammo_magazine/m44sl/rubber hidden = 1 /datum/category_item/autolathe/arms/mag_44 name = "magazine (.44)" - path =/obj/item/ammo_magazine/a44 + path =/obj/item/ammo_magazine/m44 hidden = 1 /datum/category_item/autolathe/arms/mag_44_rubber name = "magazine (.44 rubber)" - path =/obj/item/ammo_magazine/a44/rubber + path =/obj/item/ammo_magazine/m44/rubber hidden = 1 diff --git a/code/game/machinery/autolathe_vr.dm b/code/game/machinery/autolathe_vr.dm index 0a22326d44..252a31e6af 100644 --- a/code/game/machinery/autolathe_vr.dm +++ b/code/game/machinery/autolathe_vr.dm @@ -1,16 +1,16 @@ /datum/category_item/autolathe/arms/classic_smg_9mm name = "SMG magazine (9mm)" - path = /obj/item/ammo_magazine/mc9mml + path = /obj/item/ammo_magazine/m9mml hidden = 1 /datum/category_item/autolathe/arms/classic_smg_9mmr name = "SMG magazine (9mm rubber)" - path = /obj/item/ammo_magazine/mc9mml/rubber + path = /obj/item/ammo_magazine/m9mml/rubber /datum/category_item/autolathe/arms/classic_smg_9mmp name = "SMG magazine (9mm practice)" - path = /obj/item/ammo_magazine/mc9mml/practice + path = /obj/item/ammo_magazine/m9mml/practice /datum/category_item/autolathe/arms/classic_smg_9mmf name = "SMG magazine (9mm flash)" - path = /obj/item/ammo_magazine/mc9mml/flash + path = /obj/item/ammo_magazine/m9mml/flash diff --git a/code/game/machinery/vending_vr.dm b/code/game/machinery/vending_vr.dm index e7541bc5b1..dd51fc712d 100644 --- a/code/game/machinery/vending_vr.dm +++ b/code/game/machinery/vending_vr.dm @@ -6,7 +6,7 @@ /obj/machinery/vending/security/New() products += list(/obj/item/weapon/gun/energy/taser = 8,/obj/item/weapon/gun/energy/stunrevolver = 4, /obj/item/weapon/reagent_containers/spray/pepper = 6,/obj/item/taperoll/police = 6, - /obj/item/weapon/gun/projectile/sec/flash = 4, /obj/item/ammo_magazine/c45m/flash = 8, + /obj/item/weapon/gun/projectile/sec/flash = 4, /obj/item/ammo_magazine/m45/flash = 8, /obj/item/clothing/glasses/omnihud/sec = 6) ..() diff --git a/code/game/objects/random/random_vr.dm b/code/game/objects/random/random_vr.dm index cad9efe36e..dd873ddd24 100644 --- a/code/game/objects/random/random_vr.dm +++ b/code/game/objects/random/random_vr.dm @@ -88,35 +88,35 @@ item_to_spawn() return pick(prob(5);/obj/item/weapon/storage/box/shotgunammo,\ prob(5);/obj/item/weapon/storage/box/shotgunshells,\ - prob(5);/obj/item/ammo_magazine/a357,\ - prob(5);/obj/item/ammo_magazine/clip/a762,\ - prob(5);/obj/item/ammo_magazine/c45m,\ - prob(5);/obj/item/ammo_magazine/c45m/rubber,\ - prob(5);/obj/item/ammo_magazine/c38,\ - prob(5);/obj/item/ammo_magazine/c38/rubber,\ + prob(5);/obj/item/ammo_magazine/m357,\ + prob(5);/obj/item/ammo_magazine/clip/c762,\ + prob(5);/obj/item/ammo_magazine/m45,\ + prob(5);/obj/item/ammo_magazine/m45/rubber,\ + prob(5);/obj/item/ammo_magazine/s38,\ + prob(5);/obj/item/ammo_magazine/s38/rubber,\ prob(5);/obj/item/weapon/storage/box/flashbangs,\ - prob(5);/obj/item/ammo_magazine/c556,\ - prob(4);/obj/item/ammo_magazine/clip/a556,\ + prob(5);/obj/item/ammo_magazine/m556,\ + prob(4);/obj/item/ammo_magazine/clip/c556,\ prob(4);/obj/item/ammo_magazine/clip/c45,\ prob(4);/obj/item/ammo_magazine/clip/c9mm,\ - prob(4);/obj/item/ammo_magazine/c45uzi,\ - prob(4);/obj/item/ammo_magazine/c556/ext,\ - prob(4);/obj/item/ammo_magazine/mc9mm,\ - prob(4);/obj/item/ammo_magazine/mc9mml,\ - prob(4);/obj/item/ammo_magazine/mc9mmt,\ - prob(4);/obj/item/ammo_magazine/mc9mmt/rubber,\ - prob(4);/obj/item/ammo_magazine/a10mm,\ - prob(4);/obj/item/ammo_magazine/p90,\ + prob(4);/obj/item/ammo_magazine/m45uzi,\ + prob(4);/obj/item/ammo_magazine/m556/ext,\ + prob(4);/obj/item/ammo_magazine/m9mm,\ + prob(4);/obj/item/ammo_magazine/m9mml,\ + prob(4);/obj/item/ammo_magazine/m9mmt,\ + prob(4);/obj/item/ammo_magazine/m9mmt/rubber,\ + prob(4);/obj/item/ammo_magazine/m10mm,\ + prob(4);/obj/item/ammo_magazine/m9mmp90,\ /* prob(4);/obj/item/ammo_magazine/m14,\ prob(4);/obj/item/ammo_magazine/m14/large,\ */ - prob(4);/obj/item/ammo_magazine/c556/ext,\ - prob(4);/obj/item/ammo_magazine/s762,\ - prob(4);/obj/item/ammo_magazine/c762,\ - prob(3);/obj/item/ammo_magazine/clip/a10mm,\ - prob(3);/obj/item/ammo_magazine/clip/a50,\ - prob(3);/obj/item/ammo_magazine/c556,\ - prob(2);/obj/item/ammo_magazine/a50,\ - prob(2);/obj/item/ammo_magazine/a556,\ + prob(4);/obj/item/ammo_magazine/m556/ext,\ + prob(4);/obj/item/ammo_magazine/m762,\ + prob(4);/obj/item/ammo_magazine/m762,\ + prob(3);/obj/item/ammo_magazine/clip/c10mm,\ + prob(3);/obj/item/ammo_magazine/clip/c50,\ + prob(3);/obj/item/ammo_magazine/m556,\ + prob(2);/obj/item/ammo_magazine/m50,\ + prob(2);/obj/item/ammo_magazine/m556,\ prob(1);/obj/item/weapon/storage/box/frags,\ /* prob(1);/obj/item/ammo_magazine/battlerifle,\ */ prob(1);/obj/item/ammo_casing/rocket,\ @@ -126,9 +126,9 @@ prob(1);/obj/item/weapon/storage/box/practiceshells,\ prob(1);/obj/item/weapon/storage/box/stunshells,\ prob(1);/obj/item/weapon/storage/box/blanks,\ - prob(1);/obj/item/ammo_magazine/stg,\ - prob(1);/obj/item/ammo_magazine/tommydrum,\ - prob(1);/obj/item/ammo_magazine/tommymag + prob(1);/obj/item/ammo_magazine/mtg,\ + prob(1);/obj/item/ammo_magazine/m45tommydrum,\ + prob(1);/obj/item/ammo_magazine/m45tommy ) /obj/random/cargopod diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index e8c6713582..e4c9aa7320 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -143,14 +143,15 @@ new /obj/item/device/flash(src) new /obj/item/weapon/melee/baton/loaded(src) new /obj/item/weapon/gun/projectile/lamia(src) - new /obj/item/ammo_magazine/a44/rubber(src) - new /obj/item/ammo_magazine/a44(src) - new /obj/item/ammo_magazine/a44(src) + new /obj/item/ammo_magazine/m44/rubber(src) + new /obj/item/ammo_magazine/m44(src) + new /obj/item/ammo_magazine/m44(src) new /obj/item/weapon/gun/energy/gun(src) new /obj/item/weapon/cell/device/weapon(src) new /obj/item/weapon/melee/telebaton(src) new /obj/item/device/flashlight/maglight(src) return +//VOREStation Edit End /obj/structure/closet/secure_closet/warden name = "warden's locker" diff --git a/code/modules/awaymissions/loot_vr.dm b/code/modules/awaymissions/loot_vr.dm index 5d22422513..b6be0c0b5d 100644 --- a/code/modules/awaymissions/loot_vr.dm +++ b/code/modules/awaymissions/loot_vr.dm @@ -185,35 +185,35 @@ var/new_ammo = pick( // Copied from Random.dm prob(5);/obj/item/weapon/storage/box/shotgunammo,\ prob(5);/obj/item/weapon/storage/box/shotgunshells,\ - prob(5);/obj/item/ammo_magazine/a357,\ - prob(5);/obj/item/ammo_magazine/clip/a762,\ - prob(5);/obj/item/ammo_magazine/c45m,\ - prob(5);/obj/item/ammo_magazine/c45m/rubber,\ - prob(5);/obj/item/ammo_magazine/c38,\ - prob(5);/obj/item/ammo_magazine/c38/rubber,\ + prob(5);/obj/item/ammo_magazine/m357,\ + prob(5);/obj/item/ammo_magazine/clip/c762,\ + prob(5);/obj/item/ammo_magazine/m45,\ + prob(5);/obj/item/ammo_magazine/m45/rubber,\ + prob(5);/obj/item/ammo_magazine/s38,\ + prob(5);/obj/item/ammo_magazine/s38/rubber,\ prob(5);/obj/item/weapon/storage/box/flashbangs,\ - prob(5);/obj/item/ammo_magazine/c556,\ - prob(4);/obj/item/ammo_magazine/clip/a556,\ + prob(5);/obj/item/ammo_magazine/m556,\ + prob(4);/obj/item/ammo_magazine/clip/c556,\ prob(4);/obj/item/ammo_magazine/clip/c45,\ prob(4);/obj/item/ammo_magazine/clip/c9mm,\ - prob(4);/obj/item/ammo_magazine/c45uzi,\ - prob(4);/obj/item/ammo_magazine/c556/ext,\ - prob(4);/obj/item/ammo_magazine/mc9mm,\ - prob(4);/obj/item/ammo_magazine/mc9mml,\ - prob(4);/obj/item/ammo_magazine/mc9mmt,\ - prob(4);/obj/item/ammo_magazine/mc9mmt/rubber,\ - prob(4);/obj/item/ammo_magazine/a10mm,\ - prob(4);/obj/item/ammo_magazine/p90,\ + prob(4);/obj/item/ammo_magazine/m45uzi,\ + prob(4);/obj/item/ammo_magazine/m556/ext,\ + prob(4);/obj/item/ammo_magazine/m9mm,\ + prob(4);/obj/item/ammo_magazine/m9mml,\ + prob(4);/obj/item/ammo_magazine/m9mmt,\ + prob(4);/obj/item/ammo_magazine/m9mmt/rubber,\ + prob(4);/obj/item/ammo_magazine/m10mm,\ + prob(4);/obj/item/ammo_magazine/m9mmp90,\ /* prob(4);/obj/item/ammo_magazine/m14,\ prob(4);/obj/item/ammo_magazine/m14/large,\ */ - prob(4);/obj/item/ammo_magazine/c556/ext,\ - prob(4);/obj/item/ammo_magazine/s762,\ - prob(4);/obj/item/ammo_magazine/c556/ext,\ - prob(3);/obj/item/ammo_magazine/clip/a10mm,\ - prob(3);/obj/item/ammo_magazine/clip/a50,\ - prob(3);/obj/item/ammo_magazine/c556,\ - prob(2);/obj/item/ammo_magazine/a50,\ - prob(2);/obj/item/ammo_magazine/a556,\ + prob(4);/obj/item/ammo_magazine/m556/ext,\ + prob(4);/obj/item/ammo_magazine/m762,\ + prob(4);/obj/item/ammo_magazine/m556/ext,\ + prob(3);/obj/item/ammo_magazine/clip/c10mm,\ + prob(3);/obj/item/ammo_magazine/clip/c50,\ + prob(3);/obj/item/ammo_magazine/m556,\ + prob(2);/obj/item/ammo_magazine/m50,\ + prob(2);/obj/item/ammo_magazine/m556,\ prob(1);/obj/item/weapon/storage/box/frags,\ /* prob(1);/obj/item/ammo_magazine/battlerifle,\ */ prob(1);/obj/item/ammo_casing/rocket,\ @@ -223,9 +223,9 @@ prob(1);/obj/item/weapon/storage/box/practiceshells,\ prob(1);/obj/item/weapon/storage/box/stunshells,\ prob(1);/obj/item/weapon/storage/box/blanks,\ - prob(1);/obj/item/ammo_magazine/stg,\ - prob(1);/obj/item/ammo_magazine/tommydrum,\ - prob(1);/obj/item/ammo_magazine/tommymag) + prob(1);/obj/item/ammo_magazine/mtg,\ + prob(1);/obj/item/ammo_magazine/m45tommydrum,\ + prob(1);/obj/item/ammo_magazine/m45tommy) new new_ammo(C) if("spacesuit") var/obj/structure/closet/syndicate/C = new(src.loc) diff --git a/code/modules/projectiles/guns/projectile/automatic_vr.dm b/code/modules/projectiles/guns/projectile/automatic_vr.dm index 9b7fc0c726..79789292ee 100644 --- a/code/modules/projectiles/guns/projectile/automatic_vr.dm +++ b/code/modules/projectiles/guns/projectile/automatic_vr.dm @@ -1,2 +1,2 @@ /obj/item/weapon/gun/projectile/automatic/wt550/lethal - magazine_type = /obj/item/ammo_magazine/mc9mmt \ No newline at end of file + magazine_type = /obj/item/ammo_magazine/m9mmt \ No newline at end of file diff --git a/code/modules/projectiles/guns/projectile/sniper_vr.dm b/code/modules/projectiles/guns/projectile/sniper_vr.dm index ecfe070eca..8ed8962319 100644 --- a/code/modules/projectiles/guns/projectile/sniper_vr.dm +++ b/code/modules/projectiles/guns/projectile/sniper_vr.dm @@ -17,12 +17,12 @@ // requires_two_hands = 1 one_handed_penalty = 4 // The weapon itself is heavy, and the long barrel makes it hard to hold steady with just one hand. fire_sound = 'sound/weapons/SVD_shot.ogg' - magazine_type = /obj/item/ammo_magazine/s762 - allowed_magazines = list(/obj/item/ammo_magazine/s762, /obj/item/ammo_magazine/c762) + magazine_type = /obj/item/ammo_magazine/m762 + allowed_magazines = list(/obj/item/ammo_magazine/m762, /obj/item/ammo_magazine/m762) /obj/item/weapon/gun/projectile/SVD/update_icon() ..() -// if(istype(ammo_magazine,/obj/item/ammo_magazine/c762) +// if(istype(ammo_magazine,/obj/item/ammo_magazine/m762) // icon_state = "SVD-bigmag" //No icon for this exists yet. if(ammo_magazine) icon_state = "SVD" diff --git a/code/modules/vore/fluffstuff/custom_boxes_vr.dm b/code/modules/vore/fluffstuff/custom_boxes_vr.dm index 5681714595..92ec145d5f 100644 --- a/code/modules/vore/fluffstuff/custom_boxes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_boxes_vr.dm @@ -181,8 +181,8 @@ name = "Sebastian's Lumoco Arms P3 Box" has_items = list( /obj/item/weapon/gun/projectile/pistol, - /obj/item/ammo_magazine/mc9mm/flash, - /obj/item/ammo_magazine/mc9mm/flash, + /obj/item/ammo_magazine/m9mm/flash, + /obj/item/ammo_magazine/m9mm/flash, /obj/item/fluff/permit/sebastian_aji) /obj/item/weapon/storage/box/fluff/briana_moore diff --git a/code/modules/vore/fluffstuff/custom_guns_vr.dm b/code/modules/vore/fluffstuff/custom_guns_vr.dm index 3d72379097..e6f562987a 100644 --- a/code/modules/vore/fluffstuff/custom_guns_vr.dm +++ b/code/modules/vore/fluffstuff/custom_guns_vr.dm @@ -67,7 +67,7 @@ item_state = "haloshotgun_i" item_icons = null - ammo_type = /obj/item/ammo_casing/shotgun + ammo_type = /obj/item/ammo_casing/a12g max_shells = 12 // jertheace : Jeremiah 'Ace' Acacius @@ -75,7 +75,7 @@ name = "Ace's M45D Tactical Shotgun" // D-model holds half as many shells as the normal version so as not to be OP as shit. Better than shotgun, worse than combat shotgun. desc = "Owned by the respected (or feared?) veteran Captain of VORE Station. Inscribed on the barrel are the words \"Speak softly, and carry a big stick.\" It has a folding stock so it can fit into bags." w_class = ITEMSIZE_NORMAL // Because collapsable stock so it fits in backpacks. - ammo_type = /obj/item/ammo_casing/shotgun/stunshell + ammo_type = /obj/item/ammo_casing/a12g/stunshell max_shells = 6 // bwoincognito:Tasald Corlethian @@ -146,7 +146,7 @@ icon_state = "jury" item_state = "gun" accuracy = 0 // Because I know you're not an idiot who needs to be nerfed. -Ace - ammo_type = /obj/item/ammo_casing/shotgun/beanbag + ammo_type = /obj/item/ammo_casing/a12g/beanbag // Dhaeleena : Dhaeleena M'iar /obj/item/weapon/gun/projectile/revolver/mateba/fluff/dhael @@ -166,7 +166,7 @@ icon_state = "model10" fire_sound = 'sound/weapons/deagle.ogg' origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) - ammo_type = /obj/item/ammo_casing/c38r //Rubber rounds. + ammo_type = /obj/item/ammo_casing/a38r //Rubber rounds. // For general use @@ -180,8 +180,8 @@ max_shells = 30 caliber = "kurz" origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2, TECH_ILLEGAL = 6) - magazine_type = /obj/item/ammo_magazine/stg - allowed_magazines = list(/obj/item/ammo_magazine/stg) + magazine_type = /obj/item/ammo_magazine/mtg + allowed_magazines = list(/obj/item/ammo_magazine/mtg) load_method = MAGAZINE /obj/item/weapon/gun/projectile/automatic/stg/update_icon(var/ignore_inhands) @@ -238,8 +238,8 @@ origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2) slot_flags = SLOT_BELT load_method = MAGAZINE - magazine_type = /obj/item/ammo_magazine/mc9mml - allowed_magazines = list(/obj/item/ammo_magazine/mc9mm, /obj/item/ammo_magazine/mc9mml) + magazine_type = /obj/item/ammo_magazine/m9mml + allowed_magazines = list(/obj/item/ammo_magazine/m9mm, /obj/item/ammo_magazine/m9mml) firemodes = list( list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null), @@ -248,7 +248,7 @@ /obj/item/weapon/gun/projectile/automatic/pdw/update_icon(var/ignore_inhands) ..() - if(istype(ammo_magazine,/obj/item/ammo_magazine/mc9mm)) + if(istype(ammo_magazine,/obj/item/ammo_magazine/m9mm)) icon_state = "pdw-short" else icon_state = (ammo_magazine)? "pdw" : "pdw-empty" @@ -279,8 +279,8 @@ auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg' hitsound = null caliber = "s762" - magazine_type = /obj/item/ammo_magazine/s762 - allowed_magazines = list(/obj/item/ammo_magazine/s762) + magazine_type = /obj/item/ammo_magazine/m762 + allowed_magazines = list(/obj/item/ammo_magazine/m762) /obj/item/weapon/gun/projectile/automatic/fluff/crestrose/attack_self(mob/user as mob) on = !on @@ -379,7 +379,7 @@ /obj/item/weapon/gun/projectile/automatic/carbine/fluff/g44/update_icon(var/ignore_inhands) ..() - // TODO - Fix this for spriting different size magazines + // TODO - Fix this for spriting different size magazines icon_state = (ammo_magazine)? "g44" : "g44-empty" item_state = (ammo_magazine)? "bullpup" : "bullpup-empty" if(!ignore_inhands) update_held_icon() @@ -462,8 +462,8 @@ icon = 'icons/obj/gun_vr.dmi' icon_state = "khipistol" item_state = "gun" // Placeholder - magazine_type = /obj/item/ammo_magazine/c45m/flash //Dun wanna KILL all the people. - allowed_magazines = list(/obj/item/ammo_magazine/c45m) + magazine_type = /obj/item/ammo_magazine/m45/flash //Dun wanna KILL all the people. + allowed_magazines = list(/obj/item/ammo_magazine/m45) caliber = ".45" handle_casings = CYCLE_CASINGS origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 5) @@ -485,8 +485,8 @@ slot_flags = SLOT_BELT load_method = MAGAZINE handle_casings = CYCLE_CASINGS - magazine_type = /obj/item/ammo_magazine/mc9mml - allowed_magazines = list(/obj/item/ammo_magazine/mc9mm, /obj/item/ammo_magazine/mc9mml) + magazine_type = /obj/item/ammo_magazine/m9mml + allowed_magazines = list(/obj/item/ammo_magazine/m9mm, /obj/item/ammo_magazine/m9mml) dna_lock = 1 firemodes = list( @@ -583,8 +583,8 @@ caliber = ".44" ammo_type = /obj/item/ammo_casing/a44/rubber - magazine_type = /obj/item/ammo_magazine/a44/rubber - allowed_magazines = list(/obj/item/ammo_magazine/a44,/obj/item/ammo_magazine/a44/rubber) + magazine_type = /obj/item/ammo_magazine/m44/rubber + allowed_magazines = list(/obj/item/ammo_magazine/m44,/obj/item/ammo_magazine/m44/rubber) load_method = MAGAZINE auto_eject = 1 auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg' @@ -610,8 +610,8 @@ caliber = ".32" ammo_type = /obj/item/ammo_casing/a32 - magazine_type = /obj/item/ammo_magazine/a32 - allowed_magazines = list(/obj/item/ammo_magazine/a32) + magazine_type = /obj/item/ammo_magazine/m32 + allowed_magazines = list(/obj/item/ammo_magazine/m32) load_method = MAGAZINE fire_delay = 0.6 accuracy = 1 @@ -639,8 +639,8 @@ caliber = ".32" ammo_type = /obj/item/ammo_casing/a32 - magazine_type = /obj/item/ammo_magazine/a32 - allowed_magazines = list(/obj/item/ammo_magazine/a32) + magazine_type = /obj/item/ammo_magazine/m32 + allowed_magazines = list(/obj/item/ammo_magazine/m32) fire_delay = 1.2 load_method = MAGAZINE accuracy = 2 @@ -699,9 +699,9 @@ slot_flags = SLOT_BELT caliber = "9mm" - ammo_type = /obj/item/ammo_casing/c9mm - magazine_type = /obj/item/ammo_magazine/c9mm - allowed_magazines = list(/obj/item/ammo_magazine/c9mm) + ammo_type = /obj/item/ammo_casing/a9mm + magazine_type = /obj/item/ammo_magazine/m9mm + allowed_magazines = list(/obj/item/ammo_magazine/m9mm) load_method = MAGAZINE multi_aim = 1 burst_delay = 2 @@ -866,7 +866,7 @@ impact_type = /obj/effect/projectile/laser_omni/impact //--------------- StG-60 ---------------- -/obj/item/ammo_magazine/stg +/obj/item/ammo_magazine/mtg name = "box mag (7.92x33mm Kurz)" icon = 'icons/obj/ammo_vr.dmi' icon_state = "stg_30rnd" @@ -881,7 +881,7 @@ caliber = "kurz" projectile_type = /obj/item/projectile/bullet/rifle/a762 -/obj/item/ammo_magazine/stg/empty +/obj/item/ammo_magazine/mtg/empty initial_ammo = 0 //------------- Battlerifle ------------- @@ -909,7 +909,7 @@ initial_ammo = 0 //---------------- PDW ------------------ -/obj/item/ammo_magazine/mc9mml +/obj/item/ammo_magazine/m9mml name = "\improper SMG magazine (9mm)" icon = 'icons/obj/ammo_vr.dmi' icon_state = "smg" @@ -917,31 +917,31 @@ mag_type = MAGAZINE matter = list(DEFAULT_WALL_MATERIAL = 1800) caliber = "9mm" - ammo_type = /obj/item/ammo_casing/c9mm + ammo_type = /obj/item/ammo_casing/a9mm max_ammo = 30 multiple_sprites = 1 -/obj/item/ammo_magazine/mc9mml/empty +/obj/item/ammo_magazine/m9mml/empty initial_ammo = 0 -/obj/item/ammo_magazine/mc9mml/ap +/obj/item/ammo_magazine/m9mml/ap name = "\improper SMG magazine (9mm armor-piercing)" - ammo_type = /obj/item/ammo_casing/c9mm/ap + ammo_type = /obj/item/ammo_casing/a9mm/ap -/obj/item/ammo_magazine/mc9mml/flash +/obj/item/ammo_magazine/m9mml/flash name = "\improper SMG magazine (9mm flash)" - ammo_type = /obj/item/ammo_casing/c9mmf + ammo_type = /obj/item/ammo_casing/a9mmf -/obj/item/ammo_magazine/mc9mml/rubber +/obj/item/ammo_magazine/m9mml/rubber name = "\improper SMG magazine (9mm rubber)" - ammo_type = /obj/item/ammo_casing/c9mmr + ammo_type = /obj/item/ammo_casing/a9mmr -/obj/item/ammo_magazine/mc9mml/practice +/obj/item/ammo_magazine/m9mml/practice name = "\improper SMG magazine (9mm practice)" - ammo_type = /obj/item/ammo_casing/c9mmp + ammo_type = /obj/item/ammo_casing/a9mmp //.357 special ammo -/obj/item/ammo_magazine/a357/stun +/obj/item/ammo_magazine/m357/stun name = "speedloader (.357 stun)" desc = "A speedloader for .357 revolvers." icon = 'icons/obj/ammo_vr.dmi' @@ -957,7 +957,7 @@ icon_state = "stun357" projectile_type = /obj/item/projectile/energy/electrode/stunshot/strong -/obj/item/ammo_magazine/a357/rubber +/obj/item/ammo_magazine/m357/rubber name = "speedloader (.357 rubber)" desc = "A speedloader for .357 revolvers." icon = 'icons/obj/ammo_vr.dmi' @@ -973,7 +973,7 @@ icon_state = "rubber357" projectile_type = /obj/item/projectile/bullet/pistol/rubber/strong -/obj/item/ammo_magazine/a357/flash +/obj/item/ammo_magazine/m357/flash name = "speedloader (.357 flash)" desc = "A speedloader for .357 revolvers." icon = 'icons/obj/ammo_vr.dmi' @@ -995,7 +995,7 @@ caliber = ".32" projectile_type = /obj/item/projectile/bullet/pistol -/obj/item/ammo_magazine/a32 +/obj/item/ammo_magazine/m32 icon_state = "a762" caliber = ".32" ammo_type = /obj/item/ammo_casing/a32 @@ -1016,7 +1016,7 @@ desc = "A .44 rubber bullet casing." projectile_type = /obj/item/projectile/bullet/pistol/rubber/strong -/obj/item/ammo_magazine/a44 +/obj/item/ammo_magazine/m44 desc = "A magazine for .44 ammo." icon = 'icons/obj/ammo_vr.dmi' icon_state = "44lethal" @@ -1026,13 +1026,13 @@ max_ammo = 8 mag_type = MAGAZINE -/obj/item/ammo_magazine/a44/rubber +/obj/item/ammo_magazine/m44/rubber desc = "A magazine for .44 less-than-lethal ammo." icon_state = "44rubber" ammo_type = /obj/item/ammo_casing/a44/rubber //.44 speedloaders -/obj/item/ammo_magazine/a44sl +/obj/item/ammo_magazine/m44sl name = "speedloader (.44)" desc = "A speedloader for .44 revolvers." icon = 'icons/obj/ammo_vr.dmi' @@ -1044,7 +1044,7 @@ multiple_sprites = 1 mag_type = SPEEDLOADER -/obj/item/ammo_magazine/a44sl/rubber +/obj/item/ammo_magazine/m44sl/rubber name = "speedloader (.44 rubber)" icon_state = "r357" ammo_type = /obj/item/ammo_casing/a44/rubber diff --git a/maps/RandomZLevels/carpfarm.dmm b/maps/RandomZLevels/carpfarm.dmm index 612ac1f7e3..8d32d655b9 100644 --- a/maps/RandomZLevels/carpfarm.dmm +++ b/maps/RandomZLevels/carpfarm.dmm @@ -80,7 +80,7 @@ "bB" = (/obj/machinery/vending/cigarette{prices = list()},/obj/effect/floor_decal/corner/white/diagonal,/turf/simulated/floor/tiled,/area/awaymission/carpfarm/base) "bC" = (/obj/machinery/vending/dinnerware,/obj/machinery/light{dir = 1},/obj/effect/floor_decal/corner/white/diagonal,/turf/simulated/floor/tiled,/area/awaymission/carpfarm/base) "bD" = (/obj/structure/closet/crate/secure/weapon,/obj/item/weapon/gun/projectile/shotgun/pump/rifle/mosin,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled/dark,/area/awaymission/carpfarm/base) -"bE" = (/obj/structure/closet/crate/secure/weapon,/obj/item/ammo_magazine/clip/a762,/obj/item/ammo_magazine/clip/a762,/obj/item/ammo_magazine/clip/a762,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled/dark,/area/awaymission/carpfarm/base) +"bE" = (/obj/structure/closet/crate/secure/weapon,/obj/item/ammo_magazine/clip/c762,/obj/item/ammo_magazine/clip/c762,/obj/item/ammo_magazine/clip/c762,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled/dark,/area/awaymission/carpfarm/base) "bF" = (/obj/structure/dispenser/oxygen,/obj/machinery/atmospherics/unary/vent_pump/on,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/awaymission/carpfarm/base) "bG" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/tiled,/area/awaymission/carpfarm/base) "bH" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/carpfarm/base) diff --git a/maps/RandomZLevels/listeningpost.dmm b/maps/RandomZLevels/listeningpost.dmm index 287066256e..5bd0a74608 100644 --- a/maps/RandomZLevels/listeningpost.dmm +++ b/maps/RandomZLevels/listeningpost.dmm @@ -50,7 +50,7 @@ "aX" = (/obj/machinery/vending/snack,/turf/simulated/floor/tiled,/area/awaymission/listeningpost) "aY" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/mineral,/area/mine/unexplored) "aZ" = (/obj/structure/disposalpipe/segment,/turf/simulated/mineral,/area/mine/unexplored) -"ba" = (/obj/structure/closet,/obj/item/weapon/gun/projectile/pistol,/obj/item/weapon/silencer,/obj/item/ammo_magazine/mc9mm,/obj/item/ammo_magazine/mc9mm,/obj/item/weapon/paper/listneningpost/reciept,/turf/simulated/floor/tiled,/area/awaymission/listeningpost) +"ba" = (/obj/structure/closet,/obj/item/weapon/gun/projectile/pistol,/obj/item/weapon/silencer,/obj/item/ammo_magazine/m9mm,/obj/item/ammo_magazine/m9mm,/obj/item/weapon/paper/listneningpost/reciept,/turf/simulated/floor/tiled,/area/awaymission/listeningpost) "bb" = (/obj/structure/filingcabinet,/obj/item/weapon/paper/listneningpost/mission,/obj/item/weapon/paper/listneningpost/year2558/april,/obj/item/weapon/paper/listneningpost/year2558/may,/obj/item/weapon/paper/listneningpost/year2558/june,/obj/item/weapon/paper/listneningpost/year2558/july,/obj/item/weapon/paper/listneningpost/year2558/august,/obj/item/weapon/paper/listneningpost/year2558/september,/obj/item/weapon/paper/listneningpost/year2558/october,/obj/item/weapon/paper/listneningpost/year2558/november,/obj/item/weapon/paper/listneningpost/year2558/december,/obj/item/weapon/paper/listneningpost/year2559/january,/obj/item/weapon/paper/listneningpost/year2559/february,/obj/item/weapon/paper/listneningpost/year2559/march,/obj/item/weapon/paper/listneningpost/year2559/april,/obj/item/weapon/paper/listneningpost/year2559/may,/obj/item/weapon/paper/listneningpost/year2559/june,/obj/item/weapon/paper/listneningpost/year2559/july,/obj/item/weapon/paper/listneningpost/year2559/august,/obj/item/weapon/paper/listneningpost/year2559/september,/obj/item/weapon/paper/listneningpost/year2559/october,/obj/item/weapon/paper/listneningpost/year2559/november,/obj/item/weapon/paper/listneningpost/year2559/december,/obj/item/weapon/paper/listneningpost/year2560/january,/obj/item/weapon/paper/listneningpost/year2560/february,/obj/item/weapon/paper/listneningpost/year2560/march,/obj/item/weapon/paper/listneningpost/year2560/april,/turf/simulated/floor/tiled,/area/awaymission/listeningpost) "bc" = (/obj/effect/landmark/loot_spawn{live_cargo = 0; name = "loot spawner (no live cargo)"},/turf/simulated/floor/tiled,/area/awaymission/listeningpost) "bd" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/listeningpost) diff --git a/maps/RandomZLevels/snowfield.dmm b/maps/RandomZLevels/snowfield.dmm index ddff964834..6c13854f49 100644 --- a/maps/RandomZLevels/snowfield.dmm +++ b/maps/RandomZLevels/snowfield.dmm @@ -204,7 +204,7 @@ "dV" = (/obj/machinery/power/port_gen/pacman,/turf/simulated/floor/tiled/neutral,/area/awaymission/snowfield/base) "dW" = (/obj/machinery/door/airlock/highsecurity{locked = 1; name = "Secure Armoury Section"; req_access = list(150)},/turf/simulated/floor/tiled/dark,/area/awaymission/snowfield/base) "dX" = (/obj/structure/closet,/obj/item/clothing/under/soviet,/obj/item/clothing/shoes/boots/jackboots,/obj/item/clothing/head/ushanka,/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo,/turf/simulated/floor/tiled/dark,/area/awaymission/snowfield/base) -"dY" = (/obj/structure/closet/crate/secure/gear,/obj/item/ammo_magazine/clip/a762,/obj/item/ammo_magazine/clip/a762,/obj/item/ammo_magazine/clip/a762,/obj/item/ammo_magazine/clip/a762,/obj/item/ammo_magazine/clip/a762,/turf/simulated/floor/tiled/dark,/area/awaymission/snowfield/base) +"dY" = (/obj/structure/closet/crate/secure/gear,/obj/item/ammo_magazine/clip/c762,/obj/item/ammo_magazine/clip/c762,/obj/item/ammo_magazine/clip/c762,/obj/item/ammo_magazine/clip/c762,/obj/item/ammo_magazine/clip/c762,/turf/simulated/floor/tiled/dark,/area/awaymission/snowfield/base) "dZ" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/closet/crate,/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo,/turf/simulated/floor/tiled/neutral,/area/awaymission/snowfield/base) "ea" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/clothing/suit/space/syndicate,/obj/item/clothing/head/helmet/space/syndicate,/obj/structure/closet/crate/internals,/turf/simulated/floor/tiled/neutral,/area/awaymission/snowfield/base) "eb" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/clothing/suit/hgpirate,/obj/item/clothing/head/hgpiratecap,/obj/structure/closet/crate/secure/gear,/turf/simulated/floor/tiled/neutral,/area/awaymission/snowfield/base) diff --git a/maps/RandomZLevels/zresearchlabs.dmm b/maps/RandomZLevels/zresearchlabs.dmm index bf373d621e..90faea3d06 100644 --- a/maps/RandomZLevels/zresearchlabs.dmm +++ b/maps/RandomZLevels/zresearchlabs.dmm @@ -287,7 +287,7 @@ "fA" = (/obj/machinery/chem_dispenser,/turf/simulated/floor{icon_state = "white"},/area/awaymission/labs/militarydivision) "fB" = (/obj/machinery/chem_master,/turf/simulated/floor{icon_state = "white"},/area/awaymission/labs/militarydivision) "fC" = (/obj/machinery/sleep_console,/obj/machinery/camera{c_tag = "North Solars"; dir = 8; network = "Tcomsat"},/turf/simulated/floor{icon_state = "white"},/area/awaymission/labs/militarydivision) -"fD" = (/obj/machinery/power/apc{dir = 8; environ = 0; equipment = 0; lighting = 0; locked = 0; name = "Worn-out APC"; pixel_x = -24; pixel_y = 0},/obj/structure/closet/crate/secure/weapon,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/item/ammo_magazine/c45,/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/labs/militarydivision) +"fD" = (/obj/machinery/power/apc{dir = 8; environ = 0; equipment = 0; lighting = 0; locked = 0; name = "Worn-out APC"; pixel_x = -24; pixel_y = 0},/obj/structure/closet/crate/secure/weapon,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/item/ammo_magazine/m45,/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/labs/militarydivision) "fE" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/labs/militarydivision) "fF" = (/obj/structure/table/reinforced,/obj/machinery/recharger{pixel_y = 2},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/labs/militarydivision) "fG" = (/obj/machinery/door_control{id = "miningdorm2"; name = "Gateway Door Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/structure/table/reinforced,/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/labs/militarydivision) @@ -302,7 +302,7 @@ "fP" = (/obj/effect/landmark/corpse/doctor{mobname = "Amando Cruz"; name = "Amando Cruz"},/obj/effect/decal/cleanable/blood/splatter,/turf/simulated/floor{icon_state = "white"},/area/awaymission/labs/militarydivision) "fQ" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/awaymission/labs/militarydivision) "fR" = (/obj/structure/table/reinforced,/obj/item/weapon/paper{icon_state = "paper_words"; info = "As per your request, Director, I have documented my findings on the odd mutation growing from Commander Karl's arm. First of all, in this state he cannot go on any kind of missions. The alien flesh is incredibly painful to him and he can barely hold a rifle properly, no less fit into a tight hardsuit. Early analysis of the tissue shows a DNA structure unlike anything I've seen in my fourty-some odd years of medical practice. It's neither human nor Soghun, I can tell you that much. It has a quality you would expect from the lining of internal organs and is incredibly sensitive. Yet, it is also very resilient. It took me about five tries before I was able to stick a syringe through it. And even then I got just enough blood for a test, not a drop more. The wound healed quickly afterwards, as well. Whatever you boys in science are doing, you've stumbled across something, that's for sure."; name = "Unfinished Form"},/turf/simulated/floor{icon_state = "white"},/area/awaymission/labs/militarydivision) -"fS" = (/obj/structure/closet/crate/secure/weapon,/obj/item/ammo_magazine/a357,/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/labs/militarydivision) +"fS" = (/obj/structure/closet/crate/secure/weapon,/obj/item/ammo_magazine/m357,/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/labs/militarydivision) "fT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/labs/militarydivision) "fU" = (/obj/machinery/door/window{dir = 8},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/labs/militarydivision) "fV" = (/obj/machinery/atmospherics/unary/vent_pump,/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/labs/militarydivision) @@ -434,7 +434,7 @@ "ir" = (/obj/structure/table/woodentable,/obj/item/weapon/melee/classic_baton,/turf/simulated/floor{icon_state = "wood"},/area/awaymission/labs/militarydivision) "is" = (/obj/effect/decal/cleanable/blood/splatter,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/awaymission/labs/militarydivision) "it" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor,/area/awaymission/labs/militarydivision) -"iu" = (/obj/item/ammo_casing/c9mm{pixel_x = 25; pixel_y = -60},/turf/simulated/floor,/area/awaymission/labs/militarydivision) +"iu" = (/obj/item/ammo_casing/a9mm{pixel_x = 25; pixel_y = -60},/turf/simulated/floor,/area/awaymission/labs/militarydivision) "iv" = (/obj/structure/stool/bed/chair/comfy/beige,/turf/simulated/floor,/area/awaymission/labs/militarydivision) "iw" = (/obj/structure/bookcase,/turf/simulated/floor,/area/awaymission/labs/militarydivision) "ix" = (/obj/machinery/camera{c_tag = "Dormitory South"; c_tag_order = 999; dir = 4},/turf/simulated/floor,/area/awaymission/labs/command) @@ -460,7 +460,7 @@ "iR" = (/obj/structure/table/woodentable,/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/awaymission/labs/militarydivision) "iS" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/awaymission/labs/militarydivision) "iT" = (/obj/structure/stool/bed/chair,/turf/simulated/floor,/area/awaymission/labs/militarydivision) -"iU" = (/obj/item/ammo_casing/c9mm{pixel_x = 3; pixel_y = -22},/turf/simulated/floor,/area/awaymission/labs/militarydivision) +"iU" = (/obj/item/ammo_casing/a9mm{pixel_x = 3; pixel_y = -22},/turf/simulated/floor,/area/awaymission/labs/militarydivision) "iV" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "green"; dir = 8},/area/awaymission/labs/command) "iW" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor,/area/awaymission/labs/command) "iX" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/awaymission/labs/command) @@ -486,8 +486,8 @@ "jr" = (/obj/machinery/camera{c_tag = "Central Hallway South-West"; dir = 8},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/awaymission/labs/militarydivision) "js" = (/obj/structure/table/standard,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/labs/militarydivision) "jt" = (/obj/structure/table/standard,/obj/item/weapon/paper{icon_state = "paper_words"; info = "We got back from another ship-out today. Those idiots on the NSV Icarus somehow managed to land themselves in the middle of a fleet of pirates. Frigates were downed easily, and they boarded with the intent to take the artillery cannon. Thankfully, those implants the doctors gave us worked like a charm. I think they made me sick, though, I've got this terrible rash on my arm that is a pain to scratch. Making my skin look all pink and nasty. Gonna go see Doc Brown in the monring, I need some rest after all we've been through."; name = "Journal Page"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/labs/militarydivision) -"ju" = (/obj/item/ammo_casing/c9mm{pixel_y = -8},/turf/simulated/floor,/area/awaymission/labs/militarydivision) -"jv" = (/obj/item/ammo_casing/c9mm{pixel_x = -28; pixel_y = -4},/turf/simulated/floor,/area/awaymission/labs/militarydivision) +"ju" = (/obj/item/ammo_casing/a9mm{pixel_y = -8},/turf/simulated/floor,/area/awaymission/labs/militarydivision) +"jv" = (/obj/item/ammo_casing/a9mm{pixel_x = -28; pixel_y = -4},/turf/simulated/floor,/area/awaymission/labs/militarydivision) "jw" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/hos,/turf/simulated/floor,/area/awaymission/labs/militarydivision) "jx" = (/turf/simulated/floor{icon_state = "green"; dir = 8},/area/awaymission/labs/command) "jy" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/awaymission/labs/command) @@ -856,7 +856,7 @@ "qx" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "bar"},/area/awaymission/labs/civilian) "qy" = (/obj/structure/barricade/wooden,/turf/simulated/floor{icon_state = "bar"},/area/awaymission/labs/civilian) "qz" = (/obj/machinery/door/airlock/glass{name = "Mess Hall"},/turf/simulated/floor{icon_state = "bar"},/area/awaymission/labs/civilian) -"qA" = (/obj/effect/decal/cleanable/blood,/obj/item/ammo_casing/c9mm{pixel_x = 0; pixel_y = -4},/turf/simulated/floor,/area/awaymission/labs/command) +"qA" = (/obj/effect/decal/cleanable/blood,/obj/item/ammo_casing/a9mm{pixel_x = 0; pixel_y = -4},/turf/simulated/floor,/area/awaymission/labs/command) "qB" = (/obj/structure/stool/bed/chair/comfy/brown{dir = 1},/turf/simulated/floor{icon_state = "wood"},/area/awaymission/labs/command) "qC" = (/obj/structure/table/woodentable,/obj/item/weapon/paper{icon_state = "paper_words"; info = "
    Research Weekly Report


    As of this day (Dec 26, 2556), the research division of Outpost Zeta has made signifcant strides in the development of safe-to-use nanoaugmentations based upon Soghun genetic structure. Though the unfortunate death of Commander Karl was a result of an earlier, more potent batch, his passing has brought great wisdom to our division and through his dead, infected tissue, we are very close to isolating the gene responsible for the fatal abnormal mutation.

    Should current schedules and effort remain steady, we are expected to produce a far safer serum in no less than seven days. All data has been saved and uploaded to the main company development server via the nearby telecommunications satellite.

    In our firearms department, development of a weapon that fires x-ray beams has proved successful. The weapon is not to be confused with a laser weapon - lasers are primitive tools that simply burn flesh. This weapon is capable of firing toxic beams that poison and harm the target's biological functions, much more painful than a laser burn. Similarly, even after the firefight is over with, or in the event of a retreat, the harmful toxins will remain in the affected individual's bloodstream and cause great discomfort. Your signature and stamp will be required for field tests with the emergency response commandos, Overseer.

    End report.

    -Doctor Jenkins"; name = "Report"},/turf/simulated/floor{icon_state = "wood"},/area/awaymission/labs/command) "qD" = (/obj/effect/decal/cleanable/blood/tracks,/turf/simulated/floor{icon_state = "wood"},/area/awaymission/labs/command) @@ -866,7 +866,7 @@ "qH" = (/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/awaymission/labs/command) "qI" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/awaymission/labs/command) "qJ" = (/obj/machinery/power/apc{dir = 4; name = "Worn-out APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/awaymission/labs/command) -"qK" = (/obj/item/ammo_casing/c9mm{pixel_x = 1; pixel_y = 0},/turf/simulated/floor,/area/awaymission/labs/command) +"qK" = (/obj/item/ammo_casing/a9mm{pixel_x = 1; pixel_y = 0},/turf/simulated/floor,/area/awaymission/labs/command) "qL" = (/obj/effect/decal/cleanable/blood/gibs/body,/turf/unsimulated/desert,/area/awaymission/labs/cave) "qM" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "bar"},/area/awaymission/labs/civilian) "qN" = (/obj/structure/stool/bed/chair,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "bar"},/area/awaymission/labs/civilian) @@ -1047,8 +1047,8 @@ "ug" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Virology APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable,/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/labs/security) "uh" = (/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/labs/security) "ui" = (/obj/structure/closet/secure_closet/warden,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/labs/security) -"uj" = (/obj/structure/rack,/obj/item/ammo_magazine/c45,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/awaymission/labs/security) -"uk" = (/obj/structure/rack,/obj/item/ammo_magazine/c45,/obj/item/weapon/gun/projectile/silenced/sc_silenced{desc = "A sidearm commonly favored by terrestrial security forces."; icon_state = "g115 Pistol"; name = "Pistol"; silenced = 0},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/awaymission/labs/security) +"uj" = (/obj/structure/rack,/obj/item/ammo_magazine/m45,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/awaymission/labs/security) +"uk" = (/obj/structure/rack,/obj/item/ammo_magazine/m45,/obj/item/weapon/gun/projectile/silenced/sc_silenced{desc = "A sidearm commonly favored by terrestrial security forces."; icon_state = "g115 Pistol"; name = "Pistol"; silenced = 0},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/awaymission/labs/security) "ul" = (/obj/structure/table/standard,/obj/item/weapon/storage/backpack/satchel/med,/turf/simulated/floor{icon_state = "white"},/area/awaymission/labs/medical) "um" = (/obj/machinery/computer/prisoner,/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/labs/security) "un" = (/obj/machinery/computer/security,/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/labs/security) diff --git a/maps/tether/tether-03-station.dmm b/maps/tether/tether-03-station.dmm index 9f2500853e..221a24b85b 100644 --- a/maps/tether/tether-03-station.dmm +++ b/maps/tether/tether-03-station.dmm @@ -3368,7 +3368,7 @@ "bmN" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/flasher/portable,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/tiled/dark,/area/security/security_equiptment_storage) "bmO" = (/obj/machinery/camera/network/security,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/floor/tiled/dark,/area/security/security_equiptment_storage) "bmP" = (/obj/structure/table/rack,/obj/item/clothing/suit/armor/vest/alt,/obj/item/clothing/suit/armor/vest/alt,/obj/item/clothing/suit/armor/vest/alt,/obj/item/clothing/suit/armor/vest/alt,/obj/item/clothing/suit/armor/vest/alt,/obj/item/clothing/suit/armor/vest/alt,/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/turf/simulated/floor/tiled/dark,/area/security/security_equiptment_storage) -"bmQ" = (/obj/machinery/light{dir = 1},/obj/structure/table/rack,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/floor/tiled/dark,/area/security/security_equiptment_storage) +"bmQ" = (/obj/machinery/light{dir = 1},/obj/structure/table/rack,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/floor/tiled/dark,/area/security/security_equiptment_storage) "bmR" = (/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/turf/simulated/floor/tiled/dark,/area/security/security_equiptment_storage) "bmS" = (/obj/structure/table/steel,/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/red/border{dir = 1},/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/simulated/floor/tiled,/area/security/lobby) "bmT" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/clothing/suit/storage/vest/heavy/officer,/obj/item/clothing/suit/storage/vest/heavy/officer,/obj/item/clothing/suit/storage/vest/heavy/officer,/obj/item/clothing/suit/storage/vest/heavy/officer,/obj/item/clothing/suit/storage/vest/heavy/officer,/obj/item/clothing/suit/storage/vest/heavy/officer,/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/floor/tiled/dark,/area/security/security_equiptment_storage) @@ -3460,9 +3460,9 @@ "boB" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/floor/tiled/dark,/area/security/security_equiptment_storage) "boC" = (/obj/structure/table/rack,/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/turf/simulated/floor/tiled/dark,/area/security/security_equiptment_storage) "boD" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/seccarts{pixel_x = 3; pixel_y = 2},/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/storage/box/flashbangs{pixel_x = -2; pixel_y = -2},/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/floor/tiled/dark,/area/security/security_equiptment_storage) -"boE" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/machinery/door/window/brigdoor/northleft{name = "Ammo"; req_access = list(1)},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled/dark,/area/security/armoury) +"boE" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/machinery/door/window/brigdoor/northleft{name = "Ammo"; req_access = list(1)},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled/dark,/area/security/armoury) "boF" = (/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/brigdoor/northright{name = "Ammo"},/obj/structure/table/rack,/obj/item/weapon/storage/box/flashshells,/obj/item/weapon/storage/box/beanbags,/obj/item/weapon/storage/box/beanbags,/obj/item/weapon/storage/box/stunshells,/obj/item/weapon/storage/box/stunshells,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled/dark,/area/security/armoury) -"boG" = (/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/table/rack,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/structure/window/reinforced{dir = 8},/obj/item/ammo_magazine/mc9mmt,/obj/machinery/door/window/brigdoor/northleft{name = "LETHALS"; req_access = list(1)},/turf/simulated/floor/tiled/dark,/area/security/armoury) +"boG" = (/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/table/rack,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/structure/window/reinforced{dir = 8},/obj/item/ammo_magazine/m9mmt,/obj/machinery/door/window/brigdoor/northleft{name = "LETHALS"; req_access = list(1)},/turf/simulated/floor/tiled/dark,/area/security/armoury) "boH" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/item/weapon/storage/box/shotgunshells,/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunammo,/obj/machinery/door/window/brigdoor/northright{name = "LETHALS"; req_access = list(1)},/turf/simulated/floor/tiled/dark,/area/security/armoury) "boI" = (/obj/machinery/light,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/door/window/brigdoor/eastleft{dir = 1},/obj/item/weapon/gun/projectile/shotgun/pump{pixel_x = -3; pixel_y = 3},/obj/item/weapon/gun/projectile/shotgun/pump,/turf/simulated/floor/tiled/dark,/area/security/armoury) "boJ" = (/obj/machinery/camera/network/security{dir = 1},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/door/window/brigdoor/northright,/obj/item/weapon/gun/projectile/automatic/wt550,/turf/simulated/floor/tiled/dark,/area/security/armoury) @@ -3888,7 +3888,7 @@ "bwN" = (/obj/machinery/door/airlock/maintenance/cargo{req_access = list(50); req_one_access = list(48)},/obj/machinery/door/firedoor/glass,/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/quartermaster/delivery) "bwO" = (/turf/simulated/wall,/area/quartermaster/office) "bwP" = (/obj/machinery/door/window/northright,/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/camera/network/security{dir = 4},/turf/simulated/floor/tiled/dark,/area/security/range) -"bwQ" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/item/weapon/gun/projectile/shotgun/pump/rifle/practice,/obj/item/ammo_magazine/clip/a762/practice,/obj/item/ammo_magazine/clip/a762/practice,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/security/range) +"bwQ" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/item/weapon/gun/projectile/shotgun/pump/rifle/practice,/obj/item/ammo_magazine/clip/c762/practice,/obj/item/ammo_magazine/clip/c762/practice,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/security/range) "bwR" = (/obj/machinery/door/window/northright,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled/dark,/area/security/range) "bwS" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/item/weapon/gun/energy/laser/practice,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/dark,/area/security/range) "bwT" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/item/weapon/gun/energy/laser/practice,/turf/simulated/floor/tiled/dark,/area/security/range) @@ -4000,8 +4000,8 @@ "byV" = (/obj/structure/bed/chair/comfy/brown,/obj/structure/noticeboard{pixel_y = 27},/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/brown/border{dir = 5},/turf/simulated/floor/tiled,/area/quartermaster/office) "byW" = (/obj/effect/floor_decal/steeldecal/steel_decals6{dir = 8},/obj/structure/disposalpipe/junction,/turf/simulated/floor/tiled/white,/area/medical/reception) "byX" = (/obj/structure/table/reinforced,/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = -28},/obj/item/clothing/ears/earmuffs{pixel_x = -3; pixel_y = -2},/obj/item/clothing/ears/earmuffs,/obj/item/clothing/ears/earmuffs,/turf/simulated/floor/tiled,/area/security/range) -"byY" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/blanks{pixel_x = 2; pixel_y = -2},/obj/item/weapon/storage/box/blanks,/obj/item/ammo_magazine/clip/a762/practice,/turf/simulated/floor/tiled,/area/security/range) -"byZ" = (/obj/structure/table/reinforced,/obj/item/ammo_magazine/mc9mmt/practice,/obj/item/ammo_magazine/mc9mmt/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/device/radio/intercom{dir = 1; pixel_y = -24},/turf/simulated/floor/tiled,/area/security/range) +"byY" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/blanks{pixel_x = 2; pixel_y = -2},/obj/item/weapon/storage/box/blanks,/obj/item/ammo_magazine/clip/c762/practice,/turf/simulated/floor/tiled,/area/security/range) +"byZ" = (/obj/structure/table/reinforced,/obj/item/ammo_magazine/m9mmt/practice,/obj/item/ammo_magazine/m9mmt/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/device/radio/intercom{dir = 1; pixel_y = -24},/turf/simulated/floor/tiled,/area/security/range) "bza" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/flashbangs{pixel_x = -2; pixel_y = -2},/turf/simulated/floor/tiled,/area/security/range) "bzb" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/tiled,/area/security/range) "bzc" = (/obj/effect/floor_decal/borderfloor{dir = 10},/obj/effect/floor_decal/corner/red/border{dir = 10},/obj/effect/floor_decal/borderfloor/corner2{dir = 9},/obj/effect/floor_decal/corner/red/bordercorner2{dir = 9},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/security/hallway) diff --git a/maps/tether/tether-06-colony.dmm b/maps/tether/tether-06-colony.dmm index 692c9c2e78..9c04bd82cf 100644 --- a/maps/tether/tether-06-colony.dmm +++ b/maps/tether/tether-06-colony.dmm @@ -257,12 +257,12 @@ "eW" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) "eX" = (/obj/structure/table/reinforced,/turf/unsimulated/floor/steel,/area/centcom/control) "eY" = (/obj/structure/table/reinforced,/obj/machinery/recharger{pixel_y = 4},/turf/unsimulated/floor/steel,/area/centcom/control) -"eZ" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556/ap,/obj/item/ammo_magazine/a556/ap,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"eZ" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/m556,/obj/item/ammo_magazine/m556,/obj/item/ammo_magazine/m556,/obj/item/ammo_magazine/m556/ap,/obj/item/ammo_magazine/m556/ap,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "fa" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/weapon/gun/projectile/automatic/l6_saw,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "fb" = (/obj/machinery/door/blast/regular{id = "HEAVY"; name = "HEAVY ORDINANCE"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "fc" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"fd" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/mc9mml,/obj/item/ammo_magazine/mc9mml,/obj/item/ammo_magazine/mc9mml,/obj/item/ammo_magazine/mc9mml,/obj/item/ammo_magazine/mc9mml,/obj/item/ammo_magazine/mc9mml,/obj/item/ammo_magazine/mc9mml/ap,/obj/item/ammo_magazine/mc9mml/ap,/obj/item/ammo_magazine/mc9mml/ap,/obj/item/ammo_magazine/mc9mml/ap,/obj/machinery/button/remote/blast_door{id = "ArmouryC4"; name = "Armoury Access"; pixel_x = 0; pixel_y = 28; req_access = list(3)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"fe" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"fd" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/m9mml,/obj/item/ammo_magazine/m9mml,/obj/item/ammo_magazine/m9mml,/obj/item/ammo_magazine/m9mml,/obj/item/ammo_magazine/m9mml,/obj/item/ammo_magazine/m9mml,/obj/item/ammo_magazine/m9mml/ap,/obj/item/ammo_magazine/m9mml/ap,/obj/item/ammo_magazine/m9mml/ap,/obj/item/ammo_magazine/m9mml/ap,/obj/machinery/button/remote/blast_door{id = "ArmouryC4"; name = "Armoury Access"; pixel_x = 0; pixel_y = 28; req_access = list(3)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"fe" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "ff" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/battlerifle,/obj/item/ammo_magazine/battlerifle,/obj/item/ammo_magazine/battlerifle,/obj/item/ammo_magazine/battlerifle,/obj/item/ammo_magazine/battlerifle,/obj/item/ammo_magazine/battlerifle,/obj/item/ammo_magazine/battlerifle,/obj/item/ammo_magazine/battlerifle,/obj/item/ammo_magazine/battlerifle,/obj/item/ammo_magazine/battlerifle,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "fg" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/weapon/storage/box/shotgunammo/large,/obj/item/weapon/storage/box/shotgunammo/large,/obj/item/weapon/storage/box/shotgunammo/large,/obj/item/weapon/storage/box/shotgunammo/large,/obj/item/weapon/storage/box/shotgunammo/large,/obj/item/weapon/storage/box/shotgunammo/large,/obj/item/weapon/storage/box/shotgunammo/large,/obj/item/weapon/storage/box/shotgunammo/large,/obj/item/weapon/storage/box/shotgunammo/large,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "fh" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/beanbags/large,/obj/item/weapon/storage/box/beanbags/large,/obj/item/weapon/storage/box/beanbags/large,/obj/item/weapon/storage/box/beanbags/large,/obj/item/weapon/storage/box/beanbags/large,/obj/item/weapon/storage/box/beanbags/large,/obj/item/weapon/storage/box/beanbags/large,/obj/item/weapon/storage/box/beanbags/large,/obj/effect/floor_decal/industrial/outline/yellow,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) @@ -306,9 +306,9 @@ "fT" = (/turf/simulated/shuttle/wall/hard_corner,/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid}) "fU" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/weapon/storage/box/sniperammo,/obj/item/weapon/storage/box/sniperammo,/obj/item/weapon/storage/box/sniperammo,/obj/item/weapon/storage/box/sniperammo,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "fV" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/weapon/gun/projectile/heavysniper,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"fW" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"fX" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) -"fY" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"fW" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"fX" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"fY" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "fZ" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/weapon/storage/box/shotgunshells/large,/obj/item/weapon/storage/box/shotgunshells/large,/obj/item/weapon/storage/box/shotgunshells/large,/obj/item/weapon/storage/box/shotgunshells/large,/obj/item/weapon/storage/box/shotgunshells/large,/obj/item/weapon/storage/box/shotgunshells/large,/obj/item/weapon/storage/box/shotgunshells/large,/obj/item/weapon/storage/box/shotgunshells/large,/obj/item/weapon/storage/box/shotgunshells/large,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "ga" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/weapon/gun/energy/netgun,/obj/item/weapon/gun/energy/netgun,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "gb" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/frags,/obj/effect/floor_decal/industrial/outline/yellow,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) @@ -332,7 +332,7 @@ "gt" = (/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/shuttle/large_escape_pod1/centcom) "gu" = (/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/shuttle/large_escape_pod1/centcom) "gv" = (/obj/effect/floor_decal/industrial/warning/dust/corner{dir = 8},/obj/machinery/light/flamp/noshade,/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/centcom/evac) -"gw" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762/ap,/obj/item/ammo_magazine/s762/ap,/obj/item/ammo_magazine/s762/ap,/obj/item/ammo_magazine/s762/ap,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) +"gw" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762/ap,/obj/item/ammo_magazine/m762/ap,/obj/item/ammo_magazine/m762/ap,/obj/item/ammo_magazine/m762/ap,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "gx" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/weapon/gun/projectile/automatic/z8,/obj/item/weapon/gun/projectile/automatic/z8,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "gy" = (/obj/machinery/button/remote/blast_door{id = "HEAVY"; name = "SHIT IS LIT"; pixel_x = 0; pixel_y = -28; req_access = list(3)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) "gz" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/weapon/cell/device/weapon{pixel_x = -2; pixel_y = -2},/obj/item/weapon/cell/device/weapon{pixel_x = -2; pixel_y = -2},/obj/item/weapon/cell/device/weapon{pixel_x = -2; pixel_y = -2},/obj/item/weapon/cell/device/weapon{pixel_x = -2; pixel_y = -2},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security) diff --git a/maps/tether/tether-07-misc.dmm b/maps/tether/tether-07-misc.dmm index 3b9a89a288..49ebea0ce3 100644 --- a/maps/tether/tether-07-misc.dmm +++ b/maps/tether/tether-07-misc.dmm @@ -785,14 +785,14 @@ "pe" = (/turf/unsimulated/mineral{icon = 'icons/turf/transit_vr.dmi'; icon_state = "rock"},/area/space) "pf" = (/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) "pg" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/xray,/obj/item/weapon/gun/energy/xray,/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) -"ph" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/carbine,/obj/item/weapon/gun/projectile/automatic/carbine,/obj/effect/floor_decal/corner/red{dir = 5},/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762/ap,/obj/item/ammo_magazine/c762/ap,/obj/item/ammo_magazine/c762/ap,/obj/item/ammo_magazine/c762/ap,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) +"ph" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/carbine,/obj/item/weapon/gun/projectile/automatic/carbine,/obj/effect/floor_decal/corner/red{dir = 5},/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762/ap,/obj/item/ammo_magazine/m762/ap,/obj/item/ammo_magazine/m762/ap,/obj/item/ammo_magazine/m762/ap,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) "pi" = (/obj/structure/table/glass,/obj/item/weapon/handcuffs/fuzzy,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/antag/antag_base) "pj" = (/turf/unsimulated/wall{icon = 'icons/turf/transit_vr.dmi'},/area/space) "pk" = (/obj/effect/floor_decal/transit/orange{dir = 8},/turf/unsimulated/floor/techfloor_grid{icon = 'icons/turf/transit_vr.dmi'},/area/space) "pl" = (/turf/unsimulated/floor/techfloor_grid{icon = 'icons/turf/transit_vr.dmi'},/area/space) "pm" = (/obj/effect/floor_decal/transit/orange{dir = 4},/turf/unsimulated/floor/techfloor_grid{icon = 'icons/turf/transit_vr.dmi'},/area/space) "pn" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/red{dir = 10},/obj/item/weapon/storage/box/sniperammo,/obj/item/weapon/storage/box/sniperammo,/obj/item/weapon/storage/box/sniperammo,/obj/item/weapon/storage/box/sniperammo,/obj/item/weapon/storage/box/sniperammo,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) -"po" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/gyropistol,/obj/item/weapon/gun/projectile/gyropistol,/obj/item/ammo_magazine/a75,/obj/item/ammo_magazine/a75,/obj/effect/floor_decal/corner/red{dir = 10},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) +"po" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/gyropistol,/obj/item/weapon/gun/projectile/gyropistol,/obj/item/ammo_magazine/m75,/obj/item/ammo_magazine/m75,/obj/effect/floor_decal/corner/red{dir = 10},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) "pp" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/sniperrifle,/obj/item/weapon/gun/energy/sniperrifle,/obj/effect/floor_decal/corner/red{dir = 10},/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) "pq" = (/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/antag/antag_base) "pr" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"; name = "Clothing Storage"},/obj/item/clothing/shoes/boots/combat,/obj/item/clothing/shoes/boots/combat,/obj/item/clothing/shoes/boots/combat,/obj/item/clothing/shoes/boots/combat,/obj/item/clothing/shoes/boots/combat,/obj/item/clothing/shoes/boots/combat,/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/gloves/combat,/obj/item/clothing/gloves/combat,/obj/item/clothing/gloves/combat,/obj/item/clothing/gloves/combat,/obj/item/clothing/gloves/combat,/obj/item/clothing/gloves/combat,/turf/unsimulated/floor{icon_state = "lino"},/area/antag/antag_base) @@ -814,7 +814,7 @@ "pH" = (/turf/space/transit/north/shuttlespace_ns7,/area/shuttle/antag_space/transit) "pI" = (/obj/structure/table/rack,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) "pJ" = (/obj/effect/floor_decal/corner/red{dir = 5},/obj/structure/table/rack,/obj/item/weapon/gun/launcher/rocket,/obj/item/ammo_casing/rocket,/obj/item/ammo_casing/rocket,/obj/item/ammo_casing/rocket,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) -"pK" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/l6_saw,/obj/item/weapon/gun/projectile/automatic/l6_saw,/obj/effect/floor_decal/corner/red{dir = 5},/obj/item/ammo_magazine/a556/ap,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) +"pK" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/l6_saw,/obj/item/weapon/gun/projectile/automatic/l6_saw,/obj/effect/floor_decal/corner/red{dir = 5},/obj/item/ammo_magazine/m556/ap,/obj/item/ammo_magazine/m556,/obj/item/ammo_magazine/m556,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) "pL" = (/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = 32},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) "pM" = (/obj/structure/flora/pottedplant{icon_state = "plant-21"},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) "pN" = (/obj/machinery/door/airlock/centcom{name = "Barracks"; req_one_access = list(150)},/turf/unsimulated/floor{icon_state = "lino"},/area/antag/antag_base) @@ -825,7 +825,7 @@ "pS" = (/turf/space/transit/north/shuttlespace_ns1,/area/shuttle/antag_space/transit) "pT" = (/obj/effect/floor_decal/transit/orange{dir = 8},/obj/effect/transit/light{dir = 8},/turf/unsimulated/floor/techfloor_grid{icon = 'icons/turf/transit_vr.dmi'},/area/space) "pU" = (/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) -"pV" = (/obj/structure/table/rack,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/effect/floor_decal/corner/red{dir = 9},/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) +"pV" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/effect/floor_decal/corner/red{dir = 9},/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) "pW" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/silenced,/obj/item/weapon/gun/projectile/silenced,/obj/item/weapon/gun/projectile/silenced,/obj/item/weapon/gun/projectile/silenced,/obj/item/weapon/gun/projectile/silenced,/obj/item/weapon/gun/projectile/silenced,/obj/item/weapon/gun/projectile/silenced,/obj/effect/floor_decal/corner/red{dir = 9},/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) "pX" = (/obj/effect/floor_decal/corner/red{dir = 9},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) "pY" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/void/merc,/obj/item/clothing/mask/gas/syndicate,/obj/item/clothing/head/helmet/space/void/merc,/obj/effect/floor_decal/borderfloorblack{dir = 9},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) @@ -837,7 +837,7 @@ "qe" = (/turf/simulated/shuttle/wall/dark/hard_corner,/area/shuttle/antag_ground/base) "qf" = (/turf/simulated/shuttle/wall/dark/hard_corner,/area/shuttle/antag_space/base) "qg" = (/obj/effect/floor_decal/transit/orange{dir = 4},/obj/effect/transit/light{dir = 4},/turf/unsimulated/floor/techfloor_grid{icon = 'icons/turf/transit_vr.dmi'},/area/space) -"qh" = (/obj/structure/table/rack,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/effect/floor_decal/corner/red{dir = 9},/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) +"qh" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/effect/floor_decal/corner/red{dir = 9},/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) "qi" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/laser,/obj/item/weapon/gun/energy/laser,/obj/item/weapon/gun/energy/laser,/obj/item/weapon/gun/energy/laser,/obj/effect/floor_decal/corner/red{dir = 9},/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) "qj" = (/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 4},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) "qk" = (/obj/effect/floor_decal/borderfloorblack/corner{dir = 1},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) @@ -973,7 +973,7 @@ "sK" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/unsimulated/floor{icon_state = "white"},/area/antag/antag_base) "sL" = (/obj/machinery/atmospherics/unary/cryo_cell,/obj/effect/floor_decal/industrial/outline/yellow,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) "sM" = (/obj/machinery/atmospherics/unary/freezer,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) -"sN" = (/obj/effect/floor_decal/corner/red{dir = 10},/obj/structure/table/rack,/obj/item/weapon/gun/projectile/deagle,/obj/item/ammo_magazine/a50,/obj/item/ammo_magazine/a50,/obj/item/ammo_magazine/a50,/obj/item/ammo_magazine/a50,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) +"sN" = (/obj/effect/floor_decal/corner/red{dir = 10},/obj/structure/table/rack,/obj/item/weapon/gun/projectile/deagle,/obj/item/ammo_magazine/m50,/obj/item/ammo_magazine/m50,/obj/item/ammo_magazine/m50,/obj/item/ammo_magazine/m50,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) "sO" = (/obj/machinery/chemical_dispenser/full,/turf/unsimulated/floor{icon_state = "white"},/area/antag/antag_base) "sP" = (/obj/machinery/chem_master,/turf/unsimulated/floor{icon_state = "white"},/area/antag/antag_base) "sQ" = (/obj/structure/closet/athletic_mixed,/turf/unsimulated/floor{icon_state = "steel"},/area/antag/antag_base) diff --git a/maps/virgo/virgo-1.dmm b/maps/virgo/virgo-1.dmm index 80a0a1ccf0..77cc044fa7 100644 --- a/maps/virgo/virgo-1.dmm +++ b/maps/virgo/virgo-1.dmm @@ -1274,7 +1274,7 @@ "ayz" = (/turf/simulated/wall,/area/maintenance/pool) "ayA" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/pool) "ayB" = (/obj/structure/closet/crate,/obj/item/weapon/tank/emergency/oxygen/engi,/obj/item/weapon/tank/emergency/oxygen/double,/obj/effect/decal/cleanable/cobweb2,/obj/effect/landmark{name = "blobstart"},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/pool) -"ayC" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/red/full,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/machinery/door/window/brigdoor/northleft{name = "Ammo"; req_access = list(2)},/turf/simulated/floor/tiled/dark,/area/security/armoury) +"ayC" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/red/full,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/machinery/door/window/brigdoor/northleft{name = "Ammo"; req_access = list(2)},/turf/simulated/floor/tiled/dark,/area/security/armoury) "ayD" = (/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/brigdoor/northright{name = "Ammo"},/obj/structure/table/rack,/obj/effect/floor_decal/corner/red/full{dir = 4},/obj/item/weapon/storage/box/flashshells,/obj/item/weapon/storage/box/beanbags,/obj/item/weapon/storage/box/beanbags,/obj/item/weapon/storage/box/stunshells,/obj/item/weapon/storage/box/stunshells,/turf/simulated/floor/tiled/dark,/area/security/armoury) "ayE" = (/obj/machinery/camera/network/security{c_tag = "SEC - Secure Armory Fore"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/dark,/area/security/armoury) "ayF" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/tiled,/area/security/security_equiptment_storage) @@ -1358,7 +1358,7 @@ "aAf" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/red{dir = 9},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/security/brig) "aAg" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/security/brig) "aAh" = (/obj/effect/floor_decal/corner/red,/obj/structure/closet/secure_closet/brig,/turf/simulated/floor/tiled,/area/security/brig) -"aAi" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/machinery/door/window/brigdoor/eastright{name = "Spare Equipment"; req_access = list(3)},/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/clothing/suit/armor/vest/alt,/obj/item/clothing/suit/armor/vest/alt,/obj/item/clothing/suit/armor/vest/alt,/obj/item/clothing/suit/armor/vest/alt,/turf/simulated/floor/tiled,/area/security/security_equiptment_storage) +"aAi" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/machinery/door/window/brigdoor/eastright{name = "Spare Equipment"; req_access = list(3)},/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/clothing/suit/armor/vest/alt,/obj/item/clothing/suit/armor/vest/alt,/obj/item/clothing/suit/armor/vest/alt,/obj/item/clothing/suit/armor/vest/alt,/turf/simulated/floor/tiled,/area/security/security_equiptment_storage) "aAj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green,/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/prison) "aAk" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/window/brigdoor/southleft{id = "Cell 1"; name = "Cell 1"; req_access = list(2)},/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled,/area/security/prison) "aAl" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green,/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/security/prison) @@ -1797,7 +1797,7 @@ "aIC" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/obj/item/weapon/gun/energy/laser/practice,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/security/range) "aID" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled,/area/security/range) "aIE" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled,/area/security/range) -"aIF" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 4},/obj/item/ammo_magazine/mc9mmt/practice,/obj/item/ammo_magazine/mc9mmt/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/turf/simulated/floor/tiled,/area/security/range) +"aIF" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 4},/obj/item/ammo_magazine/m9mmt/practice,/obj/item/ammo_magazine/m9mmt/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/turf/simulated/floor/tiled,/area/security/range) "aIG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/security/lobby) "aIH" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/camera/network/security{c_tag = "SEC - Lobby"; dir = 4},/obj/effect/floor_decal/corner/red{dir = 9},/turf/simulated/floor/tiled,/area/security/lobby) "aII" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/security/lobby) @@ -2493,7 +2493,7 @@ "aVW" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/central_two) "aVX" = (/obj/structure/extinguisher_cabinet{pixel_x = 25},/obj/machinery/atm{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/tiled/dark,/area/hallway/primary/central_two) "aVY" = (/turf/simulated/wall,/area/crew_quarters/coffee_shop) -"aVZ" = (/obj/effect/floor_decal/corner/green/full{dir = 4},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 4},/obj/structure/table/rack,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/machinery/door/window/brigdoor/northright{name = "Ammo"; req_access = list(3)},/obj/structure/window/reinforced{dir = 8},/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/tactical) +"aVZ" = (/obj/effect/floor_decal/corner/green/full{dir = 4},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 4},/obj/structure/table/rack,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/machinery/door/window/brigdoor/northright{name = "Ammo"; req_access = list(3)},/obj/structure/window/reinforced{dir = 8},/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/tactical) "aWa" = (/turf/simulated/wall,/area/ai_monitored/storage/emergency/eva) "aWb" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/ai_monitored/storage/emergency/eva) "aWc" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/ai_monitored/storage/emergency/eva) @@ -3110,7 +3110,7 @@ "bhP" = (/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = -25; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak) "bhQ" = (/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak) "bhR" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak) -"bhS" = (/obj/structure/closet/crate,/obj/item/target,/obj/item/target,/obj/item/target,/obj/item/target,/obj/item/target,/obj/item/weapon/gun/projectile/shotgun/pump/rifle/practice,/obj/item/weapon/gun/projectile/shotgun/pump/rifle/practice,/obj/item/ammo_magazine/clip/a762/practice,/obj/item/ammo_magazine/clip/a762/practice,/obj/item/ammo_magazine/clip/a762/practice,/obj/item/ammo_magazine/clip/a762/practice,/turf/simulated/floor/tiled,/area/security/range) +"bhS" = (/obj/structure/closet/crate,/obj/item/target,/obj/item/target,/obj/item/target,/obj/item/target,/obj/item/target,/obj/item/weapon/gun/projectile/shotgun/pump/rifle/practice,/obj/item/weapon/gun/projectile/shotgun/pump/rifle/practice,/obj/item/ammo_magazine/clip/c762/practice,/obj/item/ammo_magazine/clip/c762/practice,/obj/item/ammo_magazine/clip/c762/practice,/obj/item/ammo_magazine/clip/c762/practice,/turf/simulated/floor/tiled,/area/security/range) "bhT" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/drinks/britcup,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/random/medical,/obj/item/weapon/reagent_containers/food/drinks/britcup,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak) "bhU" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak) "bhV" = (/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak) diff --git a/maps/virgo/virgo-2.dmm b/maps/virgo/virgo-2.dmm index f9b08bf922..659333b29d 100644 --- a/maps/virgo/virgo-2.dmm +++ b/maps/virgo/virgo-2.dmm @@ -918,7 +918,7 @@ "arH" = (/obj/structure/table/rack,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "arI" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/gun/energy/ionrifle,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "arJ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"arK" = (/obj/structure/table/rack,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"arK" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "arL" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/gun/launcher/grenade,/obj/item/weapon/gun/launcher/grenade,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "arM" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/storage/box/emps{pixel_x = 4; pixel_y = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/storage/box/frags,/obj/item/weapon/storage/box/smokes,/obj/item/weapon/storage/box/smokes,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "arN" = (/obj/machinery/vending/security,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) @@ -934,11 +934,11 @@ "arX" = (/obj/machinery/door/airlock/centcom,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "arY" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_shuttle_fore"; name = "forward docking hatch controller"; pixel_x = 0; pixel_y = -25; tag_door = "specops_shuttle_fore_hatch"},/turf/simulated/shuttle/floor{tag = "icon-floor_red"; icon_state = "floor_red"},/area/shuttle/specops/centcom) "arZ" = (/obj/structure/table/standard,/obj/item/stack/material/glass{amount = 15},/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) -"asa" = (/obj/structure/table/rack,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asa" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "asb" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/z8,/obj/item/weapon/gun/projectile/automatic/z8,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "asc" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/sniperrifle,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"asd" = (/obj/structure/table/rack,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/weapon/gun/projectile/automatic/p90,/obj/item/weapon/gun/projectile/automatic/p90,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"ase" = (/obj/structure/table/rack,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/weapon/gun/projectile/automatic/l6_saw,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asd" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/weapon/gun/projectile/automatic/p90,/obj/item/weapon/gun/projectile/automatic/p90,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"ase" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m556,/obj/item/ammo_magazine/m556,/obj/item/ammo_magazine/m556,/obj/item/ammo_magazine/m556,/obj/item/weapon/gun/projectile/automatic/l6_saw,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "asf" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops) "asg" = (/obj/structure/closet/crate,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "ash" = (/obj/machinery/autolathe{desc = "Your typical Autolathe. It appears to have much more options than your regular one, however..."; hacked = 1; name = "Unlocked Autolathe"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) @@ -964,7 +964,7 @@ "asB" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunammo,/obj/item/weapon/storage/box/shotgunammo,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "asC" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "asD" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/weapon/gun/projectile/automatic/z8,/obj/item/weapon/gun/projectile/automatic/z8,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"asE" = (/obj/structure/table/rack,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"asE" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "asF" = (/obj/machinery/deployable/barrier,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "asG" = (/obj/structure/table/reinforced,/obj/item/device/pda/ert,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "asH" = (/obj/effect/floor_decal/corner/purple{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) @@ -1022,7 +1022,7 @@ "atH" = (/obj/structure/table/rack,/obj/item/weapon/melee/energy/sword/blue,/obj/item/weapon/melee/energy/sword/blue,/obj/item/weapon/melee/energy/sword/blue,/obj/item/weapon/melee/energy/sword/blue,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "atI" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/xray,/obj/item/weapon/gun/energy/xray,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "atJ" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/laser,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) -"atK" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/flash,/obj/item/ammo_magazine/c45m/flash,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) +"atK" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/flash,/obj/item/ammo_magazine/m45/flash,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "atL" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/item/weapon/gun/projectile/sec,/obj/item/weapon/gun/projectile/sec,/obj/item/weapon/gun/projectile/sec,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "atM" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "atN" = (/obj/structure/table/reinforced,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) @@ -1142,7 +1142,7 @@ "avX" = (/obj/structure/closet/secure_closet/medical_wall{pixel_x = -32; pixel_y = 0; req_access = list(150)},/obj/item/stack/medical/splint,/obj/item/stack/medical/ointment,/obj/item/stack/medical/ointment,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/obj/item/weapon/storage/belt/medical/emt,/obj/item/weapon/storage/belt/medical/emt,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "avY" = (/obj/structure/closet/hydrant{pixel_y = 32},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "avZ" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) -"awa" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/security,/obj/item/weapon/storage/belt/security,/obj/item/ammo_magazine/mc9mm/flash,/obj/item/weapon/gun/projectile/pistol/flash,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) +"awa" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/security,/obj/item/weapon/storage/belt/security,/obj/item/ammo_magazine/m9mm/flash,/obj/item/weapon/gun/projectile/pistol/flash,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "awb" = (/obj/structure/bed/chair{dir = 8},/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "awc" = (/obj/structure/bed/chair/comfy/black,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership) "awd" = (/obj/machinery/door/airlock/centcom{name = "Kitchen"; opacity = 1; req_access = list(150)},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership) @@ -1294,8 +1294,8 @@ "ayT" = (/obj/structure/table/rack,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "ayU" = (/obj/structure/table/rack,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "ayV" = (/obj/structure/table/rack,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"ayW" = (/obj/structure/table/rack,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) -"ayX" = (/obj/structure/table/rack,/obj/item/ammo_magazine/c556/ext,/obj/item/ammo_magazine/c556/ext,/obj/item/ammo_magazine/c556/ext,/obj/item/ammo_magazine/c556/ext,/obj/item/weapon/gun/projectile/automatic/sts35,/obj/item/weapon/gun/projectile/automatic/sts35,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"ayW" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) +"ayX" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m556/ext,/obj/item/ammo_magazine/m556/ext,/obj/item/ammo_magazine/m556/ext,/obj/item/ammo_magazine/m556/ext,/obj/item/weapon/gun/projectile/automatic/sts35,/obj/item/weapon/gun/projectile/automatic/sts35,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership) "ayY" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops) "ayZ" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) "aza" = (/obj/machinery/vending/assist{contraband = null; name = "AntagCorpVend"; products = list(/obj/item/device/assembly/prox_sensor = 5, /obj/item/device/assembly/signaler = 4, /obj/item/device/assembly/infra = 4, /obj/item/device/assembly/prox_sensor = 4, /obj/item/weapon/handcuffs = 8, /obj/item/device/flash = 4, /obj/item/weapon/cartridge/signal = 4, /obj/item/clothing/glasses/sunglasses = 4)},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start) From 56268171d4ba1a259967b0bba0876befd595ab24 Mon Sep 17 00:00:00 2001 From: Leshana Date: Fri, 2 Jun 2017 07:56:09 -0400 Subject: [PATCH 49/84] Fix issues with radiation controller on multi-z maps. Radiation sources are by design z-level specific, the ray trace check needs to respect this. --- code/datums/repositories/radiation.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/datums/repositories/radiation.dm b/code/datums/repositories/radiation.dm index 5471282026..0245bb801c 100644 --- a/code/datums/repositories/radiation.dm +++ b/code/datums/repositories/radiation.dm @@ -46,6 +46,8 @@ var/global/repository/radiation/radiation_repository = new() var/datum/radiation_source/source = value if(source.rad_power < .) continue // Already being affected by a stronger source + if(source.source_turf.z != T.z) + continue // Radiation is not multi-z var/dist = get_dist(source.source_turf, T) if(dist > source.range) continue // Too far to possibly affect From de30b00c9e685ee1a5cdd2128e8c2f0ef4688b1d Mon Sep 17 00:00:00 2001 From: Leshana Date: Fri, 2 Jun 2017 13:39:44 -0400 Subject: [PATCH 50/84] Fixed damaged and burnt plating icons. * We are using eris sprites, which have a shared overlay for broken/burnt between all tile types. --- code/game/turfs/simulated/floor_icon.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/turfs/simulated/floor_icon.dm b/code/game/turfs/simulated/floor_icon.dm index 007108c72e..dadb173d99 100644 --- a/code/game/turfs/simulated/floor_icon.dm +++ b/code/game/turfs/simulated/floor_icon.dm @@ -71,9 +71,9 @@ var/list/flooring_cache = list() icon_state = "dmg[rand(1,4)]" else if(flooring) if(!isnull(broken) && (flooring.flags & TURF_CAN_BREAK)) - overlays |= get_flooring_overlay("[flooring.icon_base]-broken-[broken]","[flooring.icon_base]_broken[broken]") + overlays |= get_flooring_overlay("[flooring.icon_base]-broken-[broken]","broken[broken]") // VOREStation Edit - Eris overlays if(!isnull(burnt) && (flooring.flags & TURF_CAN_BURN)) - overlays |= get_flooring_overlay("[flooring.icon_base]-burned-[burnt]","[flooring.icon_base]_burned[burnt]") + overlays |= get_flooring_overlay("[flooring.icon_base]-burned-[burnt]","burned[burnt]") // VOREStation Edit - Eris overlays if(weather_overlay) overlays += weather_overlay From 7a9a12959269d1c54f2532c618f366d4c1e80523 Mon Sep 17 00:00:00 2001 From: Yoshax Date: Fri, 2 Jun 2017 19:08:30 +0100 Subject: [PATCH 51/84] Adds a set of new traits regarding susceptibility to electric shocks --- .../human/species/station/traits_vr/negative.dm | 12 ++++++++++++ .../human/species/station/traits_vr/positive.dm | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm index 647a070dff..704cd21199 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm @@ -56,6 +56,18 @@ cost = -2 var_changes = list("burn_mod" = 1.30) +/datum/trait/conductive + name = "Conductive (Minor)" + desc = "Increases your susceptibility to electric shocks by a small amount." + cost = -1 + var_changes = list("siemens_coefficient" = 1.15) + +/datum/trait/conductiveplus + name = "Non-Conductive (Major)" + desc = "Increases your susceptibility to electric shocks by a moderate amount." + cost = -2 + var_changes = list("siemens_coefficient" = 1.3) + /datum/trait/photosensitive name = "Photosensitive" desc = "Increases stun duration from flashes and other light-based stuns." diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm index 93a9d1911f..e92f667867 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm @@ -32,6 +32,18 @@ ..(S,H) H.setMaxHealth(S.total_health) +/datum/trait/nonconductive + name = "Non-Conductive (Minor)" + desc = "Decreases your susceptibility to electric shocks by a small amount." + cost = 1 + var_changes = list("siemens_coefficient" = 0.85) + +/datum/trait/nonconductiveplus + name = "Non-Conductive (Major)" + desc = "Decreases your susceptibility to electric shocks by a moderate amount." + cost = 2 + var_changes = list("siemens_coefficient" = 0.7) + /datum/trait/darksight name = "Darksight" desc = "Allows you to see a short distance in the dark." From 57354a539bcc3f48fb6b4d930365bf90cb745159 Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Sat, 3 Jun 2017 00:36:30 -0400 Subject: [PATCH 52/84] Fix Airlock Pills Copy-paste error! --- maps/tether/tether_things.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maps/tether/tether_things.dm b/maps/tether/tether_things.dm index 3c2cc0ad02..7652317582 100644 --- a/maps/tether/tether_things.dm +++ b/maps/tether/tether_things.dm @@ -307,7 +307,7 @@ var/global/list/latejoin_tram = list() desc = "Neutralizes toxins and provides a mild alangesic effect." icon_state = "pill2" -/obj/item/weapon/reagent_containers/pill/antitox/New() +/obj/item/weapon/reagent_containers/pill/airlock/New() ..() reagents.add_reagent("anti_toxin", 15) reagents.add_reagent("paracetamol", 5) From fc1bffdfb6c2fcab4f4c87043fd5dc8a7cd6cd81 Mon Sep 17 00:00:00 2001 From: SpoopyLizz Date: Sat, 3 Jun 2017 15:59:45 +0200 Subject: [PATCH 53/84] Egg laying implant, yo! --- code/modules/food/recipes_microwave_vr.dm | 21 +++ .../vore/fluffstuff/custom_items_vr.dm | 134 ++++++++++++++++++ icons/vore/custom_items_vr.dmi | Bin 39226 -> 40277 bytes 3 files changed, 155 insertions(+) diff --git a/code/modules/food/recipes_microwave_vr.dm b/code/modules/food/recipes_microwave_vr.dm index 641f02d31f..8375e4e964 100644 --- a/code/modules/food/recipes_microwave_vr.dm +++ b/code/modules/food/recipes_microwave_vr.dm @@ -93,3 +93,24 @@ /obj/item/weapon/reagent_containers/food/snacks/meat ) result = /obj/item/weapon/reagent_containers/food/snacks/generalschicken + +/datum/recipe/chocroizegg + items = list( + /obj/item/weapon/reagent_containers/food/snacks/chocolatebar, + /obj/item/weapon/reagent_containers/food/snacks/egg/roiz + ) + result = /obj/item/weapon/reagent_containers/food/snacks/chocolateegg/roiz + +/datum/recipe/friedroizegg + reagents = list("sodiumchloride" = 1, "blackpepper" = 1) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/egg/roiz + ) + result = /obj/item/weapon/reagent_containers/food/snacks/friedegg/roiz + +/datum/recipe/boiledroizegg + reagents = list("water" = 5) + items = list( + /obj/item/weapon/reagent_containers/food/snacks/egg/roiz + ) + result = /obj/item/weapon/reagent_containers/food/snacks/boiledegg/roiz \ No newline at end of file diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm index 12ba4639a1..9a93138c23 100644 --- a/code/modules/vore/fluffstuff/custom_items_vr.dm +++ b/code/modules/vore/fluffstuff/custom_items_vr.dm @@ -710,6 +710,140 @@ obj/item/weapon/material/hatchet/tacknife/combatknife/fluff/katarina/handle_shie do_reagent_implant(usr) +//SpoopyLizz: Roiz Lizden +//I made this! Woo! +//implant +//-------------------- +/obj/item/weapon/implant/reagent_generator/roiz + name = "egg laying implant" + desc = "This is an implant that allows the user to lay eggs." + generated_reagent = "egg" + usable_volume = 500 + transfer_amount = 50 + + empty_message = list("Your lower belly feels smooth and empty. Sorry, we're out of eggs!", "The reduced pressure in your lower belly tells you there are no more eggs.") + full_message = list("Your lower belly looks swollen with irregular bumps, and it feels heavy.", "Your lower abdomen feels really heavy, making it a bit hard to walk.") + emote_descriptor = list("an egg right out of Roiz's lower belly!", "into Roiz' belly firmly, forcing him to lay an egg!", "Roiz really tight, who promptly lays an egg!") + var/verb_descriptor = list("squeezes", "pushes", "hugs") + var/self_verb_descriptor = list("squeeze", "push", "hug") + var/short_emote_descriptor = list("lays", "forces out", "pushes out") + self_emote_descriptor = list("lay", "force out", "push out") + random_emote = list("hisses softly with a blush on his face", "yelps in embarrassment", "grunts a little") + assigned_proc = /mob/living/carbon/human/proc/use_reagent_implant_roiz + +/obj/item/weapon/implanter/reagent_generator/roiz + implant_type = /obj/item/weapon/implant/reagent_generator/roiz + +/mob/living/carbon/human/proc/use_reagent_implant_roiz() + set name = "Lay Egg" + set desc = "Force Roiz to lay an egg by squeezing into his lower body! This makes the lizard extremely embarrassed, and it looks funny." + set category = "Object" + set src in view(1) + + //do_reagent_implant(usr) + if(!isliving(usr) || !usr.canClick()) + return + + if(usr.incapacitated() || usr.stat > CONSCIOUS) + return + + var/obj/item/weapon/implant/reagent_generator/roiz/rimplant + for(var/I in src.contents) + if(istype(I, /obj/item/weapon/implant/reagent_generator)) + rimplant = I + break + if (rimplant) + if(rimplant.reagents.total_volume <= rimplant.transfer_amount) + to_chat(src, "[pick(rimplant.empty_message)]") + return + + var/obj/item/weapon/reagent_containers/food/snacks/egg/roiz/egg = new(get_turf(src)) + + var/index = rand(0,3) + + if (usr != src) + var/emote = rimplant.emote_descriptor[index] + var/verb_desc = rimplant.verb_descriptor[index] + var/self_verb_desc = rimplant.self_verb_descriptor[index] + usr.visible_message("[usr] [verb_desc] [emote]", + "You [self_verb_desc] [emote]") + else + src.visible_message("[src] [pick(rimplant.short_emote_descriptor)] an egg.", + "You [pick(rimplant.self_emote_descriptor)] an egg.") + if(prob(15)) + src.visible_message("[src] [pick(rimplant.random_emote)].") // M-mlem. + + rimplant.reagents.remove_reagent(rimplant.generated_reagent, rimplant.transfer_amount) + +//Egg item +//------------- +/obj/item/weapon/reagent_containers/food/snacks/egg/roiz + name = "lizard egg" + desc = "It's a large lizard egg." + icon = 'icons/vore/custom_items_vr.dmi' + icon_state = "egg_roiz" + filling_color = "#FDFFD1" + volume = 12 + center_of_mass = list("x"=16, "y"=13) + +/obj/item/weapon/reagent_containers/food/snacks/egg/roiz/New() + ..() + reagents.add_reagent("egg", 9) + bitesize = 4 + +/obj/item/weapon/reagent_containers/food/snacks/egg/roiz/afterattack(obj/O as obj, mob/user as mob, proximity) + if(istype(O,/obj/machinery/microwave)) + return ..() + if(!(proximity && O.is_open_container())) + return + user << "You crack \the [src] into \the [O]." + reagents.trans_to(O, reagents.total_volume) + user.drop_from_inventory(src) + qdel(src) + +/obj/item/weapon/reagent_containers/food/snacks/egg/roiz/throw_impact(atom/hit_atom) + ..() + +/obj/item/weapon/reagent_containers/food/snacks/friedegg/roiz + name = "fried lizard egg" + desc = "A large, fried lizard egg, with a touch of salt and pepper. It looks rather chewy." + icon = 'icons/vore/custom_items_vr.dmi' + icon_state = "friedegg" + center_of_mass = list("x"=16, "y"=14) + +/obj/item/weapon/reagent_containers/food/snacks/friedegg/roiz/New() + ..() + reagents.add_reagent("protein", 9) + bitesize = 4 + +/obj/item/weapon/reagent_containers/food/snacks/boiledegg/roiz + name = "boiled lizard egg" + desc = "A hard boiled lizard egg. Be careful, a lizard detective may hatch!" + icon = 'icons/vore/custom_items_vr.dmi' + icon_state = "egg_roiz" + +/obj/item/weapon/reagent_containers/food/snacks/boiledegg/roiz/New() + ..() + reagents.add_reagent("protein", 6) + bitesize = 4 + +/obj/item/weapon/reagent_containers/food/snacks/chocolateegg/roiz + name = "chocolate lizard egg" + desc = "Such huge, sweet, fattening food." + icon = 'icons/vore/custom_items_vr.dmi' + icon_state = "chocolateegg_roiz" + filling_color = "#7D5F46" + center_of_mass = list("x"=16, "y"=13) + nutriment_amt = 3 + nutriment_desc = list("chocolate" = 5) + +/obj/item/weapon/reagent_containers/food/snacks/chocolateegg/roiz/New() + ..() + reagents.add_reagent("sugar", 6) + reagents.add_reagent("coco", 6) + reagents.add_reagent("milk", 2) + bitesize = 6 + //PontifexMinimus: Lucius/Lucia Null /obj/item/weapon/fluff/dragor_dot name = "supplemental battery" diff --git a/icons/vore/custom_items_vr.dmi b/icons/vore/custom_items_vr.dmi index 1131ce4a1a337797609fb40b71fccf5df99e48bb..2212f07472d60339888878abf1489101dcaa8fb8 100644 GIT binary patch delta 19836 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 From 70dc75496deda712019628314e8e5bfa3f5566bf Mon Sep 17 00:00:00 2001 From: Dhaeleena Date: Sun, 4 Jun 2017 10:55:32 -0300 Subject: [PATCH 54/84] Fixes pipes on the recreation area showers. Adds extra mining locker to mining, Fixes telecom access areas and areas naming also fixes one turret that was lethal instead of stun. Syndi-fox is now called Rick, Aronai is butted. --- maps/tether/tether-01-surface.dmm | 216 +++++++++++++++--------------- maps/tether/tether-04-mining.dmm | 8 +- maps/tether/tether-07-misc.dmm | 2 +- 3 files changed, 113 insertions(+), 113 deletions(-) diff --git a/maps/tether/tether-01-surface.dmm b/maps/tether/tether-01-surface.dmm index 582960bcc9..a9046f15e7 100644 --- a/maps/tether/tether-01-surface.dmm +++ b/maps/tether/tether-01-surface.dmm @@ -101,7 +101,7 @@ "abW" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/obj/machinery/firealarm{dir = 2; layer = 3.3; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/tiled,/area/tether/surfacebase/mining_main/storage) "abX" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 28},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/tiled,/area/tether/surfacebase/mining_main/storage) "abY" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/obj/machinery/light_switch{pixel_y = 25},/turf/simulated/floor/tiled,/area/tether/surfacebase/mining_main/storage) -"abZ" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/turf/simulated/floor/tiled,/area/tether/surfacebase/mining_main/storage) +"abZ" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/obj/structure/closet/secure_closet/miner,/turf/simulated/floor/tiled,/area/tether/surfacebase/mining_main/storage) "aca" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/obj/machinery/alarm{pixel_y = 22},/obj/machinery/washing_machine,/turf/simulated/floor/tiled,/area/tether/surfacebase/mining_main/storage) "acb" = (/obj/machinery/light{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/obj/item/device/radio/intercom{pixel_y = 24; req_access = list()},/obj/machinery/washing_machine,/turf/simulated/floor/tiled,/area/tether/surfacebase/mining_main/storage) "acc" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/tiled,/area/tether/surfacebase/mining_main/storage) @@ -1727,8 +1727,8 @@ "aHk" = (/obj/structure/ladder/up,/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/steel_dirty,/area/maintenance/lower/research) "aHl" = (/obj/structure/railing{dir = 8},/obj/structure/railing,/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/random/junk,/obj/random/junk,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit) "aHm" = (/turf/simulated/mineral,/area/rnd/external) -"aHn" = (/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 9},/turf/simulated/floor/outdoors/grass/sif/virgo3b,/area/rnd/external) -"aHo" = (/obj/machinery/camera/network/research{dir = 2},/obj/machinery/floodlight,/turf/simulated/floor/outdoors/grass/sif/virgo3b,/area/rnd/external) +"aHn" = (/turf/simulated/wall,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"}) +"aHo" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"}) "aHp" = (/obj/structure/railing,/obj/structure/railing{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit) "aHq" = (/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/industrial/warning,/obj/random/junk,/obj/random/junk,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit) "aHr" = (/turf/simulated/wall/r_wall,/area/engineering/atmos/processing) @@ -2740,7 +2740,7 @@ "baJ" = (/obj/structure/cable{icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/lower/rnd) "baK" = (/obj/effect/floor_decal/corner_techfloor_grid/full{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south) "baL" = (/obj/effect/floor_decal/corner_techfloor_grid{dir = 5},/obj/structure/cable{icon_state = "2-4"},/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south) -"baM" = (/obj/effect/floor_decal/corner_techfloor_grid{dir = 5},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south) +"baM" = (/obj/machinery/light_switch{pixel_y = 25},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"}) "baN" = (/obj/effect/floor_decal/corner_techfloor_grid{dir = 5},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/mob/living/simple_animal/mouse,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south) "baO" = (/obj/structure/railing{dir = 4},/obj/effect/floor_decal/corner_techfloor_grid{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south) "baP" = (/obj/structure/catwalk,/obj/structure/cable{icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/machinery/atmospherics/pipe/simple/visible/supply,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south) @@ -2874,7 +2874,7 @@ "bdn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/command{name = "Server Room"; req_access = list(30)},/turf/simulated/floor/tiled/steel_grid,/area/server) "bdo" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/yellow/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/tiled,/area/engineering/atmos/hallway) "bdp" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/yellow/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 1},/obj/machinery/light_switch{pixel_x = 25},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/engineering/atmos/hallway) -"bdq" = (/turf/simulated/wall,/area/engineering/drone_fabrication) +"bdq" = (/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"}) "bdr" = (/obj/effect/floor_decal/corner/yellow{dir = 6},/obj/effect/floor_decal/corner/yellow{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 1},/obj/machinery/vending/engivend,/turf/simulated/floor/tiled/monotile,/area/engineering/atmos/hallway) "bds" = (/obj/effect/floor_decal/corner/yellow{dir = 6},/obj/effect/floor_decal/corner/yellow{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 1},/obj/machinery/vending/tool,/turf/simulated/floor/tiled/monotile,/area/engineering/atmos/hallway) "bdt" = (/turf/simulated/wall,/area/engineering/lower/atmos_lockers) @@ -3327,7 +3327,7 @@ "blY" = (/obj/machinery/power/sensor{name = "Powernet Sensor - Telecomms Subgrid"; name_tag = "Telecomms Subgrid"},/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/structure/cable/green{icon_state = "0-8"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/substation/tcomms) "blZ" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/light/small,/turf/simulated/floor/plating,/area/maintenance/substation/tcomms) "bma" = (/turf/simulated/wall/r_wall,/area/maintenance/substation/tcomms) -"bmb" = (/turf/simulated/wall/r_wall,/area/tcommsat/entrance) +"bmb" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"}) "bmc" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor/tiled/dark,/area/tcommsat/computer) "bmd" = (/obj/structure/filingcabinet,/obj/machinery/status_display{pixel_y = 30},/turf/simulated/floor/tiled/dark,/area/tcommsat/computer) "bme" = (/obj/structure/table/standard,/obj/item/weapon/folder/yellow,/obj/item/weapon/folder/yellow,/obj/machinery/light{dir = 1},/obj/machinery/firealarm{dir = 2; layer = 3.3; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/tiled/dark,/area/tcommsat/computer) @@ -3335,27 +3335,27 @@ "bmg" = (/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/tiled/dark,/area/tcommsat/computer) "bmh" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp,/turf/simulated/floor/tiled/dark,/area/tcommsat/computer) "bmi" = (/obj/effect/floor_decal/techfloor,/obj/machinery/camera/network/engineering{dir = 1},/obj/structure/dispenser{phorontanks = 0},/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos) -"bmj" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/tcommsat/entrance) +"bmj" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"}) "bmk" = (/turf/simulated/mineral,/area/space) -"bml" = (/turf/simulated/wall/r_wall,/area/tcomfoyer) -"bmm" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall/r_wall,/area/tcomfoyer) +"bml" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"}) +"bmm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/super; dir = 8; name = "west bump"; pixel_x = -30},/obj/structure/cable{icon_state = "0-2"},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"}) "bmn" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/turf/simulated/floor/tiled,/area/tcommsat/computer) "bmo" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/computer) "bmp" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/computer) "bmq" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/turf/simulated/floor/tiled,/area/tcommsat/computer) "bmr" = (/obj/machinery/computer/telecomms/monitor{dir = 8; network = "tcommsat"},/turf/simulated/floor/tiled/dark,/area/tcommsat/computer) "bms" = (/obj/machinery/door/airlock/maintenance/rnd{name = "Elavator Maintenance Access"},/obj/machinery/door/firedoor/glass,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/rnd/breakroom) -"bmt" = (/obj/structure/sign/department/telecoms,/turf/simulated/wall/r_wall,/area/tcommsat/entrance) -"bmu" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/effect/decal/cleanable/cobweb,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bmv" = (/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bmw" = (/obj/machinery/porta_turret{dir = 6},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/dark,/area/tcomfoyer) -"bmx" = (/obj/machinery/camera/network/telecom,/turf/simulated/floor/tiled/dark,/area/tcomfoyer) -"bmy" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/tcomfoyer) -"bmz" = (/obj/machinery/turretid/lethal{ailock = 1; check_synth = 1; control_area = "\improper Telecomms Central Compartment"; desc = "A firewall prevents AIs from interacting with this device."; name = "Telecoms lethal turret control"; pixel_x = 29; pixel_y = 0; req_access = list(61)},/obj/structure/extinguisher_cabinet{pixel_y = 30},/obj/effect/decal/cleanable/cobweb2,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/dark,/area/tcommsat/chamber) -"bmA" = (/obj/machinery/turretid/stun{ailock = 1; check_synth = 1; control_area = "\improper Telecoms Foyer"; desc = "A firewall prevents AIs from interacting with this device."; name = "Telecoms Foyer turret control"; pixel_x = 29; pixel_y = 0; req_access = list(61)},/obj/machinery/firealarm{dir = 2; layer = 3.3; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/tiled,/area/tcomfoyer) -"bmB" = (/obj/machinery/camera/network/telecom,/obj/structure/sign/electricshock{pixel_y = 32},/turf/simulated/floor/tiled,/area/tcomfoyer) -"bmC" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled,/area/tcomfoyer) -"bmD" = (/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/tiled,/area/tcomfoyer) +"bmt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Unisex Showers"},/obj/structure/cable{icon_state = "4-8"},/turf/simulated/floor/tiled/steel_grid,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"}) +"bmu" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"}) +"bmv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"}) +"bmw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{icon_state = "1-8"},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"}) +"bmx" = (/obj/machinery/alarm{dir = 1; pixel_y = -25},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"}) +"bmy" = (/obj/item/weapon/bikehorn/rubberducky,/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"}) +"bmz" = (/obj/effect/floor_decal/corner_techfloor_grid{dir = 5},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/table/rack,/obj/random/maintenance/research,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south) +"bmA" = (/turf/simulated/wall/r_wall,/area/engineering/drone_fabrication) +"bmB" = (/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 9},/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/rnd/external) +"bmC" = (/obj/machinery/camera/network/research{dir = 2},/obj/machinery/floodlight,/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/rnd/external) +"bmD" = (/turf/simulated/wall/r_wall,/area/tcomsat{name = "\improper Telecomms Lobby"}) "bmE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/camera/network/telecom{dir = 4},/obj/item/device/radio/intercom{dir = 4; pixel_x = -24},/turf/simulated/floor/tiled,/area/tcommsat/computer) "bmF" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/tiled,/area/tcommsat/computer) "bmG" = (/turf/simulated/floor/tiled,/area/tcommsat/computer) @@ -3364,18 +3364,18 @@ "bmJ" = (/obj/machinery/computer/telecomms/server{dir = 8; network = "tcommsat"},/turf/simulated/floor/tiled/dark,/area/tcommsat/computer) "bmK" = (/obj/structure/catwalk,/obj/effect/floor_decal/techfloor/corner,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south) "bmL" = (/obj/structure/catwalk,/obj/effect/floor_decal/techfloor{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 5},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south) -"bmM" = (/obj/machinery/door/airlock/highsecurity{name = "Telecomms Access"; req_one_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bmN" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bmO" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bmP" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bmQ" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/hatch{name = "Telecomms Foyer"; req_one_access = list(61)},/obj/machinery/door/firedoor,/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bmR" = (/turf/simulated/floor/tiled,/area/tcomfoyer) -"bmS" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled,/area/tcomfoyer) -"bmT" = (/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/tcomfoyer) -"bmU" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled,/area/tcomfoyer) -"bmV" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/tcomfoyer) -"bmW" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled,/area/tcomfoyer) -"bmX" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/tcomfoyer) +"bmM" = (/turf/simulated/wall/r_wall,/area/tcommsat/entrance{name = "\improper Telecomms Entrance"}) +"bmN" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall/r_wall,/area/tcomsat{name = "\improper Telecomms Lobby"}) +"bmO" = (/obj/machinery/porta_turret{dir = 6},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/dark,/area/tcomsat{name = "\improper Telecomms Lobby"}) +"bmP" = (/obj/machinery/camera/network/telecom,/turf/simulated/floor/tiled/dark,/area/tcomsat{name = "\improper Telecomms Lobby"}) +"bmQ" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/tcomsat{name = "\improper Telecomms Lobby"}) +"bmR" = (/obj/machinery/turretid/lethal{ailock = 1; check_synth = 1; control_area = "\improper Telecomms Central Compartment"; desc = "A firewall prevents AIs from interacting with this device."; name = "Telecoms lethal turret control"; pixel_x = 29; pixel_y = 0; req_access = list(61); req_one_access = list(12)},/obj/structure/extinguisher_cabinet{pixel_y = 30},/obj/effect/decal/cleanable/cobweb2,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/dark,/area/tcommsat/chamber) +"bmS" = (/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor/tiled,/area/tcommsat/entrance{name = "\improper Telecomms Entrance"}) +"bmT" = (/obj/machinery/turretid/stun{ailock = 1; check_synth = 1; control_area = "\improper Telecoms Foyer"; desc = "A firewall prevents AIs from interacting with this device."; name = "Telecoms Foyer turret control"; pixel_x = 29; pixel_y = 0; req_access = list(61); req_one_access = list(12)},/obj/machinery/firealarm{dir = 2; layer = 3.3; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"}) +"bmU" = (/obj/structure/sign/department/telecoms,/turf/simulated/wall/r_wall,/area/tcommsat/entrance{name = "\improper Telecomms Entrance"}) +"bmV" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/effect/decal/cleanable/cobweb,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/tcommsat/entrance{name = "\improper Telecomms Entrance"}) +"bmW" = (/obj/machinery/camera/network/telecom,/obj/structure/sign/electricshock{pixel_y = 32},/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"}) +"bmX" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"}) "bmY" = (/obj/machinery/door/airlock/hatch{name = "Telecoms Control Room"; req_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/computer) "bmZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/computer) "bna" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/computer) @@ -3385,15 +3385,15 @@ "bne" = (/turf/simulated/wall/r_wall,/area/tcommsat/chamber) "bnf" = (/obj/structure/railing{dir = 1},/obj/effect/floor_decal/techfloor{dir = 10},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south) "bng" = (/obj/structure/railing{dir = 1},/obj/effect/floor_decal/techfloor{dir = 6},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south) -"bnh" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/item/device/radio/intercom{dir = 1; pixel_y = -24},/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bni" = (/obj/machinery/camera/network/telecom{dir = 1},/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bnj" = (/obj/machinery/alarm{dir = 1; pixel_y = -25},/turf/simulated/floor/tiled,/area/tcommsat/entrance) -"bnk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/tcomfoyer) -"bnl" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/tcomfoyer) -"bnm" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/tcomfoyer) -"bnn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/glass{req_access = list(61)},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/tcomfoyer) -"bno" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/tcomfoyer) -"bnp" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/tcomfoyer) +"bnh" = (/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"}) +"bni" = (/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"}) +"bnj" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"}) +"bnk" = (/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/tcomsat{name = "\improper Telecomms Lobby"}) +"bnl" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"}) +"bnm" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/tcommsat/entrance{name = "\improper Telecomms Entrance"}) +"bnn" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/entrance{name = "\improper Telecomms Entrance"}) +"bno" = (/obj/machinery/door/airlock/highsecurity{name = "Telecomms Access"; req_one_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/tiled,/area/tcommsat/entrance{name = "\improper Telecomms Entrance"}) +"bnp" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/tiled,/area/tcommsat/entrance{name = "\improper Telecomms Entrance"}) "bnq" = (/obj/machinery/light{dir = 8},/obj/structure/table/standard,/obj/item/device/multitool,/obj/structure/sign/electricshock{pixel_x = -32},/turf/simulated/floor/tiled/dark,/area/tcommsat/computer) "bnr" = (/obj/machinery/atmospherics/unary/freezer{dir = 2; icon_state = "freezer_1"; set_temperature = 73; use_power = 1},/turf/simulated/floor/tiled/dark,/area/tcommsat/computer) "bns" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/dark,/area/tcommsat/computer) @@ -3401,20 +3401,20 @@ "bnu" = (/obj/machinery/door/airlock/maintenance_hatch{frequency = 1381; icon_state = "door_locked"; id_tag = "server_access_outer"; locked = 1; name = "Telecoms Server Access"; req_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/chamber) "bnv" = (/obj/machinery/airlock_sensor{frequency = 1381; id_tag = "server_access_sensor"; pixel_x = 12; pixel_y = 25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1381; id_tag = "server_access_pump"},/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller{frequency = 1381; id_tag = "server_access_airlock"; name = "Server Access Airlock"; pixel_x = 0; pixel_y = 25; tag_airpump = "server_access_pump"; tag_chamber_sensor = "server_access_sensor"; tag_exterior_door = "server_access_outer"; tag_exterior_sensor = "server_access_ex_sensor"; tag_interior_door = "server_access_inner"; tag_interior_sensor = "server_access_in_sensor"; tag_secure = 1},/turf/simulated/floor/plating,/area/tcommsat/chamber) "bnw" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/tcommsat/chamber) -"bnx" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled,/area/tcomfoyer) -"bny" = (/obj/machinery/porta_turret{dir = 6},/turf/simulated/floor/tiled,/area/tcomfoyer) -"bnz" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -28},/obj/structure/cable/green,/turf/simulated/floor/tiled,/area/tcomfoyer) -"bnA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/door/firedoor,/obj/structure/cable/green,/turf/simulated/floor/plating,/area/tcomfoyer) +"bnx" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"}) +"bny" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"}) +"bnz" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/hatch{name = "Telecomms Foyer"; req_access = list(61); req_one_access = list(12)},/obj/machinery/door/firedoor,/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"}) +"bnA" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"}) "bnB" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/black{dir = 6},/turf/simulated/floor/plating,/area/tcommsat/chamber) "bnC" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/manifold/hidden/black,/turf/simulated/floor/plating,/area/tcommsat/chamber) "bnD" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/black{dir = 4},/turf/simulated/floor/plating,/area/tcommsat/chamber) "bnE" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/black{dir = 4},/turf/simulated/floor/plating,/area/tcommsat/chamber) "bnF" = (/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/black{dir = 10},/turf/simulated/floor/plating,/area/tcommsat/chamber) -"bnG" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/tiled,/area/tcomfoyer) +"bnG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"}) "bnH" = (/obj/effect/floor_decal/industrial/warning/dust{dir = 10},/obj/effect/floor_decal/industrial/warning/dust/corner{dir = 4},/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/engineering/atmos/intake) "bnI" = (/obj/effect/floor_decal/industrial/warning/dust,/obj/effect/floor_decal/industrial/warning/dust{dir = 1},/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/engineering/atmos/intake) -"bnJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/tcommsat/entrance) -"bnK" = (/obj/machinery/door/airlock/glass{name = "Telecomms Storage"; req_access = list(61); req_one_access = newlist()},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/tcommsat/entrance) +"bnJ" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"}) +"bnK" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"}) "bnL" = (/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "bnM" = (/obj/structure/cable/green{icon_state = "0-4"},/obj/machinery/power/apc/super/critical{dir = 1; name = "north bump"; pixel_y = 24},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "bnN" = (/obj/machinery/atmospherics/pipe/simple/hidden/black,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) @@ -3426,30 +3426,30 @@ "bnT" = (/obj/machinery/airlock_sensor/airlock_interior{frequency = 1381; id_tag = "server_access_in_sensor"; name = "interior sensor"; pixel_y = 25},/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 32},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "bnU" = (/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "bnV" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 32},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"bnW" = (/turf/simulated/floor/tiled/dark,/area/tcomfoyer) -"bnX" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/tcomfoyer) -"bnY" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/porta_turret{dir = 6},/turf/simulated/floor/tiled/dark,/area/tcomfoyer) -"bnZ" = (/obj/machinery/porta_turret/stationary,/turf/simulated/floor/tiled/dark,/area/tcomfoyer) +"bnW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/glass{req_access = list(61)},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"}) +"bnX" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"}) +"bnY" = (/obj/machinery/camera/network/telecom{dir = 1},/turf/simulated/floor/tiled,/area/tcommsat/entrance{name = "\improper Telecomms Entrance"}) +"bnZ" = (/obj/machinery/alarm{dir = 1; pixel_y = -25},/turf/simulated/floor/tiled,/area/tcommsat/entrance{name = "\improper Telecomms Entrance"}) "boa" = (/obj/machinery/atmospherics/pipe/simple/hidden/black,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "bob" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "boc" = (/obj/machinery/door/airlock/maintenance_hatch{frequency = 1381; icon_state = "door_locked"; id_tag = "server_access_inner"; locked = 1; name = "Telecoms Server Access"; req_access = list(61)},/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"bod" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/molten_item,/turf/simulated/floor/tiled/techmaint,/area/tcomsat) -"boe" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/tiled/techmaint,/area/tcomsat) -"bof" = (/turf/simulated/wall/r_wall,/area/tcomsat) +"bod" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/tcommsat/entrance{name = "\improper Telecomms Entrance"}) +"boe" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/item/device/radio/intercom{dir = 1; pixel_y = -24},/turf/simulated/floor/tiled,/area/tcommsat/entrance{name = "\improper Telecomms Entrance"}) +"bof" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"}) "bog" = (/obj/machinery/telecomms/server/presets/supply,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "boh" = (/obj/machinery/telecomms/server/presets/service,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "boi" = (/obj/machinery/telecomms/server/presets/unused,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "boj" = (/obj/machinery/telecomms/server/presets/common,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "bok" = (/obj/machinery/telecomms/server/presets/engineering,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"bol" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled/techmaint,/area/tcomsat) -"bom" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/ansible,/obj/item/weapon/stock_parts/subspace/ansible,/obj/item/weapon/stock_parts/subspace/ansible,/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled/techmaint,/area/tcomsat) -"bon" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/techmaint,/area/tcomsat) +"bol" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"}) +"bom" = (/obj/machinery/porta_turret{dir = 6},/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"}) +"bon" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -28},/obj/structure/cable/green,/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"}) "boo" = (/obj/machinery/camera/network/telecom{dir = 4},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "bop" = (/obj/machinery/exonet_node{anchored = 1},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "boq" = (/obj/machinery/camera/network/telecom{dir = 8},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"bor" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled/techmaint,/area/tcomsat) -"bos" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/transmitter,/obj/item/weapon/stock_parts/subspace/transmitter,/obj/structure/cable/green{icon_state = "0-4"},/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/super; dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor/tiled/techmaint,/area/tcomsat) -"bot" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/machinery/firealarm{dir = 4; pixel_x = 26},/turf/simulated/floor/tiled/techmaint,/area/tcomsat) +"bor" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/door/firedoor,/obj/structure/cable/green,/turf/simulated/floor/plating,/area/tcomsat{name = "\improper Telecomms Lobby"}) +"bos" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"}) +"bot" = (/turf/simulated/floor/tiled/dark,/area/tcomsat{name = "\improper Telecomms Lobby"}) "bou" = (/obj/structure/sign/nosmoking_2{pixel_x = -32; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "bov" = (/obj/machinery/telecomms/processor/preset_two,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "bow" = (/obj/machinery/telecomms/bus/preset_two,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) @@ -4239,9 +4239,9 @@ "bDA" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/firealarm{dir = 2; layer = 3.3; pixel_x = 0; pixel_y = 26},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7,/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three) "bDB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7,/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three) "bDC" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/lightgrey/border{dir = 5},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three) -"bDD" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom) -"bDE" = (/obj/machinery/light_switch{pixel_y = 25},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom) -"bDF" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom) +"bDD" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/tcomsat{name = "\improper Telecomms Lobby"}) +"bDE" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/porta_turret{dir = 6},/turf/simulated/floor/tiled/dark,/area/tcomsat{name = "\improper Telecomms Lobby"}) +"bDF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/tcomfoyer{name = "\improper Telecomms Storage"}) "bDG" = (/obj/random/junk,/turf/simulated/floor/plating,/area/maintenance/lower/atrium) "bDH" = (/turf/simulated/floor/plating,/area/tether/surfacebase/atrium_three) "bDI" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three) @@ -4263,9 +4263,9 @@ "bDY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "1-2"},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three) "bDZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/disposalpipe/junction,/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three) "bEa" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three) -"bEb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/super; dir = 8; name = "west bump"; pixel_x = -30},/obj/structure/cable{icon_state = "0-2"},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom) -"bEc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom) -"bEd" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom) +"bEb" = (/obj/machinery/door/airlock/glass{name = "Telecomms Storage"; req_access = list(61); req_one_access = newlist()},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/tcomfoyer{name = "\improper Telecomms Storage"}) +"bEc" = (/turf/simulated/wall/r_wall,/area/tcomfoyer{name = "\improper Telecomms Storage"}) +"bEd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/molten_item,/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"}) "bEe" = (/obj/structure/cable{icon_state = "32-4"},/obj/structure/lattice,/obj/machinery/light/small{dir = 8; pixel_x = 0},/obj/machinery/door/firedoor/glass,/turf/simulated/open,/area/tether/surfacebase/atrium_three) "bEf" = (/obj/structure/cable{icon_state = "4-8"},/turf/simulated/floor/plating,/area/tether/surfacebase/atrium_three) "bEg" = (/obj/machinery/door/airlock/maintenance/engi,/obj/machinery/door/firedoor/glass,/obj/structure/cable{icon_state = "4-8"},/turf/simulated/floor/plating,/area/tether/surfacebase/atrium_three) @@ -4304,10 +4304,10 @@ "bEN" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "4-8"},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three) "bEO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{icon_state = "4-8"},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three) "bEP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{icon_state = "4-8"},/obj/effect/floor_decal/steeldecal/steel_decals4,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 10},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three) -"bEQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Unisex Showers"},/obj/structure/cable{icon_state = "4-8"},/turf/simulated/floor/tiled/steel_grid,/area/crew_quarters/recreation_area_restroom) -"bER" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{icon_state = "1-8"},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom) -"bES" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom) -"bET" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom) +"bEQ" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"}) +"bER" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"}) +"bES" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/ansible,/obj/item/weapon/stock_parts/subspace/ansible,/obj/item/weapon/stock_parts/subspace/ansible,/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"}) +"bET" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"}) "bEU" = (/turf/simulated/wall/r_wall,/area/maintenance/lower/atmos) "bEV" = (/obj/structure/extinguisher_cabinet{dir = 4; icon_state = "extinguisher_closed"; pixel_x = -30; tag = "icon-extinguisher_closed (EAST)"},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three) "bEW" = (/obj/structure/cable{icon_state = "1-2"},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three) @@ -4332,8 +4332,8 @@ "bFp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/extinguisher_cabinet{pixel_x = 27},/turf/simulated/floor/tiled,/area/crew_quarters/pool) "bFq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three) "bFr" = (/obj/structure/extinguisher_cabinet{pixel_x = 27},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 6},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three) -"bFs" = (/obj/item/weapon/bikehorn/rubberducky,/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom) -"bFt" = (/obj/machinery/alarm{dir = 1; pixel_y = -25},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom) +"bFs" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"}) +"bFt" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/transmitter,/obj/item/weapon/stock_parts/subspace/transmitter,/obj/structure/cable/green{icon_state = "0-4"},/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/super; dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"}) "bFu" = (/obj/machinery/camera/network/northern_star{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three) "bFv" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three) "bFw" = (/obj/structure/railing{dir = 8},/obj/effect/floor_decal/techfloor{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/structure/table/rack,/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/maintenance/clean,/obj/random/drinkbottle,/turf/simulated/floor/tiled/techfloor,/area/maintenance/asmaint2) @@ -4895,8 +4895,8 @@ "bQg" = (/obj/machinery/atmospherics/pipe/simple/visible/blue{dir = 4},/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation) "bQh" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation) "bQi" = (/obj/machinery/atmospherics/pipe/simple/visible/blue{dir = 10},/obj/structure/railing{dir = 1},/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation) -"bQj" = (/turf/simulated/floor/tiled/techmaint,/area/tcomsat) -"bQk" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/treatment,/obj/item/weapon/stock_parts/subspace/treatment,/obj/item/weapon/stock_parts/subspace/treatment,/turf/simulated/floor/tiled/techmaint,/area/tcomsat) +"bQj" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/machinery/firealarm{dir = 4; pixel_x = 26},/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"}) +"bQk" = (/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"}) "bQl" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Surface Civilian Substation Bypass"},/turf/simulated/floor/plating,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"}) "bQm" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/locker_room) "bQn" = (/obj/effect/decal/cleanable/dirt,/obj/structure/table/rack,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/obj/random/junk,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/lower/rnd) @@ -5142,7 +5142,7 @@ "bUT" = (/obj/structure/table/glass,/obj/machinery/computer/skills,/turf/simulated/floor/tiled,/area/rnd/rdoffice) "bUU" = (/turf/simulated/floor/tiled,/area/rnd/rdoffice) "bUV" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/mauve/border{dir = 4},/turf/simulated/floor/tiled,/area/rnd/rdoffice) -"bUW" = (/obj/structure/table/rack,/obj/item/weapon/circuitboard/telecomms/processor,/obj/item/weapon/circuitboard/telecomms/processor,/obj/item/weapon/circuitboard/telecomms/receiver,/obj/item/weapon/circuitboard/telecomms/server,/obj/item/weapon/circuitboard/telecomms/server,/obj/item/weapon/circuitboard/telecomms/bus,/obj/item/weapon/circuitboard/telecomms/bus,/obj/item/weapon/circuitboard/telecomms/broadcaster,/obj/item/weapon/circuitboard/telecomms/exonet_node,/obj/machinery/light/small,/turf/simulated/floor/tiled/techmaint,/area/tcomsat) +"bUW" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/treatment,/obj/item/weapon/stock_parts/subspace/treatment,/obj/item/weapon/stock_parts/subspace/treatment,/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"}) "bUX" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/mauve/border{dir = 8},/obj/structure/bed/chair{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/corner/mauve/bordercorner2{dir = 10},/turf/simulated/floor/tiled/steel_grid,/area/assembly/robotics) "bUY" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/tiled/steel_grid,/area/assembly/robotics) "bUZ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/steel_grid,/area/assembly/robotics) @@ -5302,7 +5302,7 @@ "bXX" = (/obj/effect/decal/cleanable/dirt,/obj/random/trash_pile,/turf/simulated/floor,/area/maintenance/lower/south) "bXY" = (/obj/effect/floor_decal/corner_techfloor_grid/full{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south) "bXZ" = (/obj/structure/closet/firecloset,/obj/structure/sign/warning/high_voltage{pixel_x = -32},/obj/random/maintenance/clean,/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/turf/simulated/floor/plating,/area/maintenance/lower/atrium) -"bYa" = (/obj/effect/decal/cleanable/dirt,/obj/structure/table/rack,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/research,/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south) +"bYa" = (/obj/structure/table/rack,/obj/item/weapon/circuitboard/telecomms/processor,/obj/item/weapon/circuitboard/telecomms/processor,/obj/item/weapon/circuitboard/telecomms/receiver,/obj/item/weapon/circuitboard/telecomms/server,/obj/item/weapon/circuitboard/telecomms/server,/obj/item/weapon/circuitboard/telecomms/bus,/obj/item/weapon/circuitboard/telecomms/bus,/obj/item/weapon/circuitboard/telecomms/broadcaster,/obj/item/weapon/circuitboard/telecomms/exonet_node,/obj/machinery/light/small,/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"}) "bYb" = (/obj/machinery/door/airlock/maintenance/engi{name = "Engineering Pump Station"},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation) "bYc" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/decal/cleanable/dirt,/obj/random/junk,/turf/simulated/floor/plating,/area/maintenance/lower/atrium) "bYd" = (/obj/machinery/power/sensor{name = "Powernet Sensor - Surface Civilian Subgrid"; name_tag = "Surface Civilian Subgrid"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/turf/simulated/floor/plating,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"}) @@ -5329,10 +5329,13 @@ "bYy" = (/obj/effect/floor_decal/rust,/obj/effect/decal/cleanable/dirt,/obj/structure/catwalk,/obj/structure/closet/crate,/obj/random/maintenance/engineering,/obj/random/maintenance/research,/obj/random/maintenance/clean,/obj/random/junk,/turf/simulated/floor,/area/maintenance/lower/south) "bYz" = (/obj/structure/railing{dir = 4},/obj/effect/floor_decal/techfloor,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south) "bYA" = (/obj/effect/floor_decal/rust,/obj/structure/table/rack,/obj/structure/catwalk,/obj/random/maintenance/research,/obj/random/maintenance/clean,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south) +"bYB" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/machinery/camera/network/telecom{dir = 1},/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"}) "bYC" = (/obj/structure/railing{dir = 8},/obj/effect/floor_decal/corner_techfloor_grid{dir = 10},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south) "bYD" = (/obj/structure/catwalk,/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/research) "bYE" = (/turf/simulated/wall/r_wall,/area/maintenance/lower/south) "bYF" = (/obj/machinery/door/airlock/multi_tile/metal/mait,/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/catwalk,/turf/simulated/floor/tiled/techfloor/grid,/area/maintenance/lower/south) +"bYG" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/crystal,/obj/item/weapon/stock_parts/subspace/crystal,/obj/item/weapon/stock_parts/subspace/crystal,/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"}) +"bYH" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/micro_laser,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"}) "bYI" = (/obj/effect/floor_decal/techfloor{dir = 4},/obj/effect/floor_decal/techfloor{dir = 6},/obj/structure/railing,/obj/structure/railing{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/structure/closet/crate,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/research,/obj/random/maintenance/research,/turf/simulated/floor/tiled/techfloor,/area/maintenance/asmaint2) "bYJ" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/maintenance/rnd{name = "Science Maintenance"},/obj/structure/catwalk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/research) "bYK" = (/obj/effect/floor_decal/rust,/obj/random/junk,/turf/simulated/floor/tiled/steel_dirty,/area/maintenance/lower/research) @@ -5357,7 +5360,6 @@ "bZg" = (/obj/structure/railing,/turf/simulated/floor/water/pool,/area/tether/surfacebase/atrium_one) "bZh" = (/obj/structure/railing{dir = 8},/obj/structure/railing,/turf/simulated/floor/water/pool,/area/tether/surfacebase/atrium_one) "bZi" = (/obj/structure/railing,/obj/structure/railing{dir = 4},/turf/simulated/floor/water/pool,/area/tether/surfacebase/atrium_one) -"bZj" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/machinery/camera/network/telecom{dir = 1},/turf/simulated/floor/tiled/techmaint,/area/tcomsat) "bZk" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled/white,/area/crew_quarters/bar) "bZl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"},/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three) "bZm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled,/area/crew_quarters/locker/laundry_arrival) @@ -5396,8 +5398,6 @@ "bZT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/lightgrey/border,/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 1},/obj/effect/floor_decal/borderfloor/corner2,/obj/effect/floor_decal/corner/lightgrey/bordercorner2,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 1},/turf/simulated/floor/tiled,/area/tether/surfacebase/north_stairs_one) "bZU" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals6{dir = 5},/turf/simulated/floor/tiled,/area/tether/surfacebase/north_stairs_three) "bZV" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals6{dir = 10},/turf/simulated/floor/tiled,/area/tether/surfacebase/north_staires_two) -"bZW" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/crystal,/obj/item/weapon/stock_parts/subspace/crystal,/obj/item/weapon/stock_parts/subspace/crystal,/turf/simulated/floor/tiled/techmaint,/area/tcomsat) -"bZX" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/micro_laser,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/turf/simulated/floor/tiled/techmaint,/area/tcomsat) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaacaacaacaacaacaacaacaacaacaacaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -5423,7 +5423,7 @@ aaaaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaa aaaaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagabTacQacRacSabnajZabnacUacVacWacXacYacZadaacWadbadcaddadeadfadfadgadfadhadiadjadkadladmabPacOadnabHabHabHabHabHaaUaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaaa aaaaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagabTacQacRadoabTadpabnadqadracxadsadradtaduacxadvabMadwadxadxadyadzadAadBadxadCadDadEadFabPadGadHadIadIadIadJabHaaUaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaaa aaaaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagabTadKadLadMadNadOabnadPadQadRadSadTadUadVadWadXabLadYadZadZaeaabLaebaecaedaeeabLaefaegabPamWamFanoanmaelaemabHaaUaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaaa -aaaaadaadaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagabTabTabTabTabTaenabnabnaeoaeoaepaeoaeoaeqaeoaeoabLabLabLabLabLabLabMaeraesabMabLabPabPabPaaUaaUaaUaaUaaUaaUaetaaUaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaa +aaaaadaadaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagabTabTabTabTabTaenabnabnaeoaeoaepaeoaeoaeqaeoaeoabLabLabLabLabLabLabLaeraesabLabLabPabPabPaaUaaUaaUaaUaaUaaUaetaaUaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaa aaaaadaadaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaeuaeuaeuaeuaevaewaexaoJaeoaezaeAaeBaeCaeDaeEaeFaeGaeHaeIaeIaeJaeKaeLaeMaeNaeOaePaeQaeRaeGaagaagaagaagaagaaUabHaaUaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaa aaaaadaadaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaeSaeSaeSaeSaeSaeSaeSaeSaeSaagaagaagaeuaeTaeUaeVaeWaeXapsapoaeoafaafbaeCaeCafcaeCaeCafdafeaffafgafhafiafiafjafkafkafkafkaflaeGaagaagaagaagaagaaUafmaaUaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaa aaaaadaadaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaeSafnafoafpafqafrafsafnaeSaagaagaagaeuaftafuafvaeuafwasFaqJaeoafaafzaeCaeCafAafBafCafDafEafFafFafGafFafHafIafJafJafKafkafLaeGaagaagaagaagaagaaUasGaaUaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaa @@ -5471,13 +5471,13 @@ aEzaadaadaadaadaadaadaadaadaadaadaadaadaagayTazsazsaEAaEBaECaClaAWaEDaEEayTayTaE aEWaEXaadaadaadaadaadaadaadaadaadaadaadaagayTazsazsazsaEYaAjaAkaCTaEZaFaaFbaFcaFdaFeaFfaFgaFhaFiatmaFjaFkaEJaFlaFmaFnaFoaFpaFqaFqaEJaagaEpaFraEpaagaagaEpaFsaEOaEpaEpaEpaEpaEpaEpbEUaFtaFuaFvaFwaFxbYoaFxaFzbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaaa aEWaEXaadaadaadaadaadaadaadaadaadaadaagaagayTaARaASaASaFAaAUaAVaAWaEZaAmaAmaAmaFBaFCaFDaCVaFEbYsatmaFFaFGaEJaEJaEJaEJaEKaELaFqaFqaEJaagaEpaFHaEpaagaagaEpbMraEQaEOaEpaagaagaagaagbEUbEUbEUbYvbYxbEUbEUbEUbEUbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaaa aEWaEXaadaadaadaadaadaadaadaadaadaadaagaagayTayTayTayTayTayTaFLaAWaFMaFNaFNaFNaFOaFPaFQazAaFRaFSaFTaFUaFVaFWaFXaEJaFYaFZaGaaGbaGcaEJaagaEpaFraEpaagaagaEpaEpaEpaEOaEpaagaagaagaagaagaagbEUaGdaEqbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaaa -aEWaEXaadaadaadaadaadaadaadaadaadaadaagaagayTazsazsaEAaGeaECaClaAWaAmaAmaAmaGfaGgaGhaGiayTaGjaGkatmaGlaGlaGmaGmaEJaGnaGoaGpaGqaGraEJaagaEpaFraEpaEpaagaagaagaEpbYDbgibdqbdqbdqbdqbdqaagbEUaGdaEqbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa -aEWaEXaadaadaadaadaadaadaadaadaadaadaagaagayTazsazsazsaGsaAjaAkaGtaAmaAmaGuaGvayTaGwaGwaGwaGxaGyaGzaGzaGzaGzaGzaEJaGAaGBaGCaGDaGDaEJaagaEpaGEaGFaEpaagaagaagaEpaEObgibdqbdVbgGbdXbdqbdqbEUaGGaGHbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa -aEWaEXaadaadaadaadaadaadaadaadaadaadaagaagayTaARaASaASaGIaAUaGJaGKaGLaGMaGNaGOayTaGPaGQaGRaGSaGTaGUaGVaGPaGzaagaEJaGWaGWaGCaGXaGXaEJaGYaEpaEpaGZaEpaEpaEpaagaEpaEObgibdqbeEbhibeGbeHbeIbEUaGdaDfbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa -aEWaadaadaadaadaadaadaadaadaadaadaadaagaagayTayTayTayTayTayTayTayTayTayTayTayTayTaGzaGzaHaaHbaHcaHdaGVaGPaGzaagaEJaGWaGWaHeaGXaGXaEJaGYaGYaGYaHfaHfaHgaEpaEpaEpaEQbgibdqbhAbhIbhCbhMbhLbiybYlaDfbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa -aEWaEXaEXaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaGzaGzaHhaHiaGzaGzaGzaGzaagaEJaEJaHjaEJaHjaEJaEJaGYaGYaGZaHfaHkaHfbYJaEOaEQaEQbgibdqbfKbfLbfMbfNbfObEUaGdaDfbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa -aEWaEXaEXaEXaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaHmaHnaHnaHoaagaagaagaagaagaEJaFlaEJaFlaEJaagaGYbYMbYKaHfaGZbYNaEpaEpaEpaEpaEpbdqbdqaHraHraHraHraHrbYObYPaHraHraHraHraHraHraHraHraHraHraHraHraHraHraagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa -aEWaadaadaadaadaEXaadaEXaadaadaadaadaadaadaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaEJaEJaEJaEJaEJaagaEpaEpaEpaEpaEpaEpaEpaagaagaagaagaagaagaHraHuaHvaHwaHxaHyaHzaHAaHBaHCaHDaHEaHFaHGaHHaHxaHIaHEaHEaHJaHraagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa +aEWaEXaadaadaadaadaadaadaadaadaadaadaagaagayTazsazsaEAaGeaECaClaAWaAmaAmaAmaGfaGgaGhaGiayTaGjaGkatmaGlaGlaGmaGmaEJaGnaGoaGpaGqaGraEJaagaEpaFraEpaEpaagaagaagaEpbYDaEpbmAbmAbmAbmAbmAaagbEUaGdaEqbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa +aEWaEXaadaadaadaadaadaadaadaadaadaadaagaagayTazsazsazsaGsaAjaAkaGtaAmaAmaGuaGvayTaGwaGwaGwaGxaGyaGzaGzaGzaGzaGzaEJaGAaGBaGCaGDaGDaEJaagaEpaGEaGFaEpaagaagaagaEpaEObgibmAbdVbgGbdXbmAbmAbEUaGGaGHbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa +aEWaEXaadaadaadaadaadaadaadaadaadaadaagaagayTaARaASaASaGIaAUaGJaGKaGLaGMaGNaGOayTaGPaGQaGRaGSaGTaGUaGVaGPaGzaagaEJaGWaGWaGCaGXaGXaEJaGYaEpaEpaGZaEpaEpaEpaagaEpaEObgibmAbeEbhibeGbeHbeIbEUaGdaDfbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa +aEWaadaadaadaadaadaadaadaadaadaadaadaagaagayTayTayTayTayTayTayTayTayTayTayTayTayTaGzaGzaHaaHbaHcaHdaGVaGPaGzaagaEJaGWaGWaHeaGXaGXaEJaGYaGYaGYaHfaHfaHgaEpaEpaEpaEQbgibmAbhAbhIbhCbhMbhLbiybYlaDfbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa +aEWaEXaEXaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaGzaGzaHhaHiaGzaGzaGzaGzaagaEJaEJaHjaEJaHjaEJaEJaGYaGYaGZaHfaHkaHfbYJaEOaEQaEQbgibmAbfKbfLbfMbfNbfObEUaGdaDfbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa +aEWaEXaEXaEXaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaHmbmBbmBbmCaagaagaagaagaagaEJaFlaEJaFlaEJaagaGYbYMbYKaHfaGZbYNaEpaEpaEpaEpaEpbmAbmAaHraHraHraHraHrbYObYPaHraHraHraHraHraHraHraHraHraHraHraHraHraHraagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa +aEWaadaadaadaadaEXaadaEXaadaadaadaadaadaadaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadajUajUajUajUaagaagaagaagaagaEJaEJaEJaEJaEJaagaEpaEpaEpaEpaEpaEpaEpaagaagaagaagaagaagaHraHuaHvaHwaHxaHyaHzaHAaHBaHCaHDaHEaHFaHGaHHaHxaHIaHEaHEaHJaHraagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa aEWaEXaadaadaadaadaadaadaadaadaadaadaadaadaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaHraHKaHLaHMaHNaHOaHNaHPaHQaHRaHSaHSaHSaHTaHNaHNaHNaHUaHVaHWaHraagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa aEzaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaHraHXaHYaHYaHYaHZaHYaHYaIaaIbaIcaIcaIcaIdaIeaIfaIgaIhaIiaIjaHraagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa aaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaHraHKaHYaHraHraIkaHYaHYaIlaImaInaIoaIcaIdaIpaIqaIraIhaIiaIsaHraagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa @@ -5587,8 +5587,8 @@ aJHaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJ aJHaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaThaSUaSUbFwaVtaXSaXTaXUaXVaXWaXXaXYaXZaXZaYaaYbaYcaYdaYeaYfaYgaYhaYiaYiaYjaVaaYkaYlaQMaJJaJJaJJaJJaVyaYmaWRaYnaYoaYpaXDaYqaWhaYraXGaXGaXIaWWaYsaVCaYtaVEaYuaYvaYvaYwaYxaYyaYzaYAaVEaXdaYBaPHaPHaYCaYCbKWbKZaYCaYCaJJaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaYFaSUaSUaTjaVtaYGaYHaYIaYJaYKaYLaYMaYNaYOaYaaYPaYQaYRaYSaYTaYUaYVaYWaYiaYXaVabLcaYZaQMaJJaJJaJJaJJaVyaZaaZbaZcaWRaZdaWRaZeaWTaZfaZgaZgaWUaZhaZiaVCaYtaVEaVEaVEaVEaVEaVEaVEaZjaVEaVEbNDaZlaMWaMWaYCaZmaZnaZoaZpaYCaJJaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaThaZqaTFaTGaVtaZraYHaZsaZtaZuaZvaZwaYNaYOaYaaYPaZxaZyaZzaZAaZBaZCaZBaZDaZEaVaaZFaZGaQMaJJaJJaJJaJJaVyaZaaZHaZIaZJaZKaZLaZMaZNaZOaZPaZQaZRaZSaZTaVCbPIaZUaZUaZVaYtaYtaYtaYtaYtaZWaYCaYCaYCaYCaYCaYCaZXaZYaZZbaaaYCaJJaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmbabaUSaSUaTjaVtbacbadbaeaVtbafbagbahbaibajbakaYPbalaUYbambanbaobapbaqbarbasaVabatbQnaQMbavbavbavbavaVyaZabawbaxbaybazbaAbaBaVCbaCbaDbaEbaFbaGbaHaVCahvahvahvahvaYCaYCaYCaYCaYCbaIbtqaYCbaKbaLbaMbaNbaObaPaZZbaQaYCaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmbtraSUaTFbaSaVtbaTbaUbaVaVtbaWbaXbaYbaZbaZbaZbbabbbaUYbbcbanbbdbbebbfbarbbgaVabbhbavbavbavbbibavbavbavbavbavbbjbbkbblbavbavbbmbbnbbobbpbbmbbmbbmbbmbbqaisbbrahvaJJaJJaJJaJJaYCaZUaZVaYCbbsbbtbYaaYtbbvbbwbbxbaQaYCaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmbabaUSaSUaTjaVtbacbadbaeaVtbafbagbahbaibajbakaYPbalaUYbambanbaobapbaqbarbasaVabatbQnaQMbavbavbavbavaVyaZabawbaxbaybazbaAbaBaVCbaCbaDbaEbaFbaGbaHaVCahvahvahvahvaYCaYCaYCaYCaYCbaIbtqaYCbaKbaLbmzbaNbaObaPaZZbaQaYCaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmbtraSUaTFbaSaVtbaTbaUbaVaVtbaWbaXbaYbaZbaZbaZbbabbbaUYbbcbanbbdbbebbfbarbbgaVabbhbavbavbavbbibavbavbavbavbavbbjbbkbblbavbavbbmbbnbbobbpbbmbbmbbmbbmbbqaisbbrahvaJJaJJaJJaJJaYCaZUaZVaYCbbsbbtaYtaYtbbvbbwbbxbaQaYCaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaThaSUaSUbbyaVtbbzbbAbbBaVtbbCbbDbbEbbFbbGbbHbbEbbIaUYbbJbbKbbLbbMbbNbbObbPaVabbQbbRbbTbbVbbUbbSbbWbbXbbYbbZbcabcbbccbcdbcebbmbcfbcgbchbcibcjbckbclbcmbcnbcoahvaJJaJJaJJaJJaYCaZUbaIbcpbbsbcqbcrbcsbctbbwaZZbaQaYCaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmbcuaSUaSUbwkaVtbcwbcxbcyaVtaUXbYfaUXaUXaUXaUXaUXaUXaUYbcAbcBbcCbcDbcEbcFbcGaVabcHbcIbcJbcKbcLbcMbcPbcObcNbcQbcRbiObcTbcUbcVbcWbcXbcYbcZbdabcgbdbbbmajRbdcbddahvaJJaJJaJJaJJaYCbdebYnaYCbbsbcqbdgbdhbdhbdiaZZbaQaYCaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaThaSUaSUbcvaVtaVtaVtaVtaVtaGmbdjbdkaGmaJJaJJaJJaJJaUYbdlbdlbdmbdnbdmbdlbdlbdlbdobdpbavbavbdtbdvbdWbdvbdtbdrbdsbeFbdYbdZbeJbbobdwbdxbdybdzbdxbdAbbmahvahvahvahvaYCaYCaYCaYCaYCbYraZZaYCbdBbdCbdDaZZbbxaZZaZZbaQaYCaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH @@ -5615,18 +5615,18 @@ aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJ aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJJaJJaJJaJJaJJbggblublwbmiblxblyblzblAblBblCblDblEbkKbkLbkMblFbkObkPbkQblGblHbYVaZZblIaZZaZZaZZaZZaZZblJblKaZZaZZbYEbYEbYEbYEbYEbYEbYEbYEbYEbYEbYEbYEbYEaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJJaJJaJJbggbggbggbggbggbggbggbggbggbggbggbggbggbggbggbggbggbggbggbggbggbYEaZZblLbYEbYEbYEbYEbYZblNbYYbmabmabmaaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEaZZblQbYEaJJaJJaJJbmablRblSblTblUbmaaJJaJJaJJblVblVblVblVblVblVblVblVaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJbmkaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEaZZbZabYEaJJaJJaJJbmablWblXblYblZbmabmlbmlbmlblVbmcbmdbmebmfbmgbmhblVaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEaZZblQbmbbmbbmbbmbbmbbmlbmlbmmbmybmlbmwbmxbmzblVbmnbmobmpbmobmqbmrblVaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEaZZbZbbmtbmubmvbmAbmlbmDbmBbmCbmSbmTbmRbmRbmUblVbmEbmFbmGbmHbmIbmJblVaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbmKbmLbmMbmNbmObmPbmQbmXbmVbmWbnmbnnbnkbnlbnobmYbmZbnabnbbncbndbnebnebnebneaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbnfbngbmjbnhbnibnjbmbbnxbmRbnpbmRbnAbnybnzbnGblVbnqbnrbnsbmGbntbnubnvbnwbneaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbYEbYEbmbbmbbmbbmbbmbbnYbnWbnXbnZbnebnebnebnebnebnBbnCbnDbnEbnFbnebnebocbnebneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbnHbnIbnIbnIbnIbnIbnIbnIbnIbnIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbmbbnJbnJbnKbnJbnebnLbnLbnLbnMbnNbnObnPbnQbnRbnSbnTbnUbnVbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbofbolbodboebombnebnLbnUbnUbnUboabnUbobbnUboabnUbnUbnUbnLbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbofbosbonborbotbnebnLbogbohboiboabnUbnLbnUboabnUbojbokbnLbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbofbQkbQjbQjbUWbneboobnUbnUbnUboabnUbopbnUboabnUbnUbnUboqbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbofbZXbZjbZWbofbneboubovbowboxbnRboybozboAbnRboBboCboDboEbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH -aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbofbofbofbofbofbnebnLboFboGbnUboabnUbnLbnUboabnUboHboIbnLbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJbmkaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEaZZbZabYEaJJaJJaJJbmablWblXblYblZbmabmDbmDbmDblVbmcbmdbmebmfbmgbmhblVaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEaZZblQbmMbmMbmMbmMbmDbmDbmDbmNbmQbmDbmObmPbmRblVbmnbmobmpbmobmqbmrblVaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEaZZbZbbmUbmVbmSbmTbmDbnhbmWbmXbnjbnkbnibnibnlblVbmEbmFbmGbmHbmIbmJblVaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbmKbmLbnobnpbnmbnnbnzbnAbnxbnybnKbnWbnGbnJbnXbmYbmZbnabnbbncbndbnebnebnebneaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbnfbngbodboebnYbnZbmDbolbnibofbniborbombonbosblVbnqbnrbnsbmGbntbnubnvbnwbneaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbYEbYEbmMbmMbmMbmMbmDbDEbotbDDbDEbnebnebnebnebnebnBbnCbnDbnEbnFbnebnebocbnebneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbnHbnIbnIbnIbnIbnIbnIbnIbnIbnIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbEcbDFbDFbEbbDFbnebnLbnLbnLbnMbnNbnObnPbnQbnRbnSbnTbnUbnVbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbEcbERbEdbEQbESbnebnLbnUbnUbnUboabnUbobbnUboabnUbnUbnUbnLbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbEcbFtbETbFsbQjbnebnLbogbohboiboabnUbnLbnUboabnUbojbokbnLbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbEcbUWbQkbQkbYabneboobnUbnUbnUboabnUbopbnUboabnUbnUbnUboqbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbEcbYHbYBbYGbEcbneboubovbowboxbnRboybozboAbnRboBboCboDboEbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH +aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbEcbEcbEcbEcbEcbnebnLboFboGbnUboabnUbnLbnUboabnUboHboIbnLbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbneboJbnUbnUbnUboabnUboKbnUboabnUbnUbnUbnLbneaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbnebnLboLboMboNboObnUboPbnUboQboRboSboTbnLbneaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbnebnQboUbnLboVbnLbnLboWbnLbnLboXbnLboUbnQbneaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH @@ -5686,12 +5686,12 @@ boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabp boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzhbBEbAWbBFbBGbBGbBHbBHbBHbBHbBHbBIbBJbAFbAGbBKbBLbAHbAHbAHbPybAHbBNbBObBkbpabpabBPbpabzrbBQbBRbBSbBnbBnbzrbBTbBqbzwbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbvEbBUbBVbwSbBWbBXbBYbBZbCabCbbCcbCdbCebCdbCfbCgbChbwSbpabpaboZboZboZboZboZboZboZboZboZboZboZboZboY boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabqfbzhbCibAWbBFbBGbBGbBHbBHbBHbBHbBHbBIbBJbAFbAGbCjbznbCkbClbClbCmbCnbAHbCobznbpabpabpabpabzrbBnbCpbzrbCqbCqbzrbCrbBqbzwbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbvEbCsbCtbCubCubCubCvbCubCwbCxbCwbCwbCwbCwbCybCybCybCybpabpaboZboZboZboZboZboZboZboZboZboZboZboZboY boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzhbCzbAWbBFbBGbBGbCAbzObCBbBHbBHbBIbBJbAFbAGbCCbznbCDbCEbCFbCGbCHbAHbCIbznbpabpabpabpabzrbCJbCKbzrbCqbCqbzrbCLbBqbzwbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbvEbBUbCMbCNaMZaNybCQbCRbCSbCTbCUbCVbCWbCSbCXbCYbCZbDabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY -boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzGbAVbAWbBFbBGbBGbDbbDcbDdbBHbBHbBIbBJbAFbAGbCjbznbznbznbznbDebDfbzobznbznbwObwObtSbtSbzrbzrbzrbzrbzrbzrbzrbDgbDhbzwbIIbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbvEbDibDjbDkbDlbDmbDnbDobCSbDpbCTbCTbDqbCSbDrbDsbDtbDabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY -boYboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzGbDubDvbBFbBGbBGbBGbBGbBGbBHbBHbBIbBJbAFbAGbAGbzibDwbwVbDxbDybDzbxbbxobDAbDBbDCbtSbDDbvibDEbDFbwsaPTaPFbwsbDIbBqaQRaQQbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbvEbBUbDJbwsbwsbDKbDLbDMbCSbDNbCTbCTbDObCSbDsbDsbDPbDabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY -boYboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzGbAVbDQbBFbBGbBGbBGbBGbBGbBHbBHbBIbDRbDSbDTbDUbDVbDWbyobyobDXbDYbyxbyxbDZbygbEabtSbEbbEcbEcbEdbwsbEebEfbEgbEhbEiaRsaRrbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbEkbElbEmbEnbEobEpbEqaRGbCSbEsbEtbEubEvbCSbEwbExbDsbDabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY -boYboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzhbEybDQbEzbEAbEAbEAbEAbEAbEBbEBbECbEDbEEbEFbEGbEHbEIbEJbEJbEJbEKbELbEMbENbEObEPbEQbERbESbESbETbwsaRZbDHbwsbEVbzvaSdaSabAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbEXbBUbEYbEZbwsaSCbCQaSBbCSbFcbFdbFebFfbCSbFgbFhbFibDabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY -boYboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzhbFjbFkbFlbFlbFlbFlbFlbFlbFlbFlbFlbFmbFnbFobFpbzhbwsbzZbzZbzZbwsbwsbvEbyVbFqbFrbtSbDDbFsbFtbDFbwsbwsbwsbwsbFubzvaTeaTabAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbEXbBUbFvbDkbDkbDkaTybDkbCSbCSbFxbFybCSbCSbFzbFAbFzbFBbpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY -boYboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzhbFCbFDbFDbFDbFDbFEbFDbFDbFDbFFbFDbFGbFHbFIbFJbFKbpabpabpabpabpabuVbvEbyVbFqbvGbtSbtSbtSbtSbtSbtSbFLbFMbwsbDIbzvbEWbzxbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbEXbBUbFNbFObFPbFQbFRbFSbFTbFBbFUbFVbFWbFXbFYbFZbGabFBbpabpaboZboZboZboZboZboZboZboZboZboZboZboZboY +boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzGbAVbAWbBFbBGbBGbDbbDcbDdbBHbBHbBIbBJbAFbAGbCjbznbznbznbznbDebDfbzobznbznbwObwOaHnaHnbzrbzrbzrbzrbzrbzrbzrbDgbDhbzwbIIbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbvEbDibDjbDkbDlbDmbDnbDobCSbDpbCTbCTbDqbCSbDrbDsbDtbDabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY +boYboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzGbDubDvbBFbBGbBGbBGbBGbBGbBHbBHbBIbBJbAFbAGbAGbzibDwbwVbDxbDybDzbxbbxobDAbDBbDCaHnbmbbdqbaMaHobwsaPTaPFbwsbDIbBqaQRaQQbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbvEbBUbDJbwsbwsbDKbDLbDMbCSbDNbCTbCTbDObCSbDsbDsbDPbDabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY +boYboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzGbAVbDQbBFbBGbBGbBGbBGbBGbBHbBHbBIbDRbDSbDTbDUbDVbDWbyobyobDXbDYbyxbyxbDZbygbEaaHnbmmbmlbmlbmjbwsbEebEfbEgbEhbEiaRsaRrbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbEkbElbEmbEnbEobEpbEqaRGbCSbEsbEtbEubEvbCSbEwbExbDsbDabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY +boYboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzhbEybDQbEzbEAbEAbEAbEAbEAbEBbEBbECbEDbEEbEFbEGbEHbEIbEJbEJbEJbEKbELbEMbENbEObEPbmtbmwbmvbmvbmubwsaRZbDHbwsbEVbzvaSdaSabAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbEXbBUbEYbEZbwsaSCbCQaSBbCSbFcbFdbFebFfbCSbFgbFhbFibDabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY +boYboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzhbFjbFkbFlbFlbFlbFlbFlbFlbFlbFlbFlbFmbFnbFobFpbzhbwsbzZbzZbzZbwsbwsbvEbyVbFqbFraHnbmbbmybmxaHobwsbwsbwsbwsbFubzvaTeaTabAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbEXbBUbFvbDkbDkbDkaTybDkbCSbCSbFxbFybCSbCSbFzbFAbFzbFBbpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY +boYboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzhbFCbFDbFDbFDbFDbFEbFDbFDbFDbFFbFDbFGbFHbFIbFJbFKbpabpabpabpabpabuVbvEbyVbFqbvGaHnaHnaHnaHnaHnaHnbFLbFMbwsbDIbzvbEWbzxbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbEXbBUbFNbFObFPbFQbFRbFSbFTbFBbFUbFVbFWbFXbFYbFZbGabFBbpabpaboZboZboZboZboZboZboZboZboZboZboZboZboY boYboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabGbbGcbzhbzhbzhbGcbGcbGcbzhbzhbzhbGcbGcbGcbzhbzhbzhbpabpabpabpabpabuVbvEbyVbGdbGebGfbGgbxjbGhbGibGjbGibGibGkbGlbGmbGnbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbGobBUbygbGpbGqbFQbGrbGsbGubFBbGtbGvbGwbGwbGxbGybGzbFBbpabpaboZboZboZboZboZboZboZboZboZboZboZboZboY boYboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabwsbGAbGBbyobGCbGDbyubGEbGFbyobyobyobyobGGbyobGHbEWbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbGIbGJbyubGKbGLbGMbGNbGObGObGPbGQbGRbGSbGTbGUbGVbGWbGXbpabpaboZboZboZboZboZboZboZboZboZboZboZboZboY boYboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabwsbGYbyQbyQbyQbyQbyQbyQbyQbyQbyQbyQbyQbyTbGZbzvbEWbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbHabBUbygbygbHbbHcbHdbHebHebHfbHgbFVbHhbFBbHibGVbHjbGXbpabpaboZboZboZboZboZboZboZboZboZboZboZboZboY diff --git a/maps/tether/tether-04-mining.dmm b/maps/tether/tether-04-mining.dmm index 8cf511d3ed..0846dea547 100644 --- a/maps/tether/tether-04-mining.dmm +++ b/maps/tether/tether-04-mining.dmm @@ -74,7 +74,7 @@ "bv" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled/steel_grid,/area/outpost/mining_main/break_room) "bw" = (/turf/simulated/wall/r_wall,/area/outpost/mining_main/dorms) "bx" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/brown/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/corner/brown/bordercorner2{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/outpost/mining_main/break_room) -"by" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/brown/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/brown/bordercorner2{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/structure/closet/excavation,/obj/item/weapon/storage/bag/ore,/turf/simulated/floor/tiled,/area/outpost/mining_main/break_room) +"by" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/brown/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/item/weapon/storage/bag/ore,/obj/structure/closet/secure_closet/miner,/turf/simulated/floor/tiled,/area/outpost/mining_main/break_room) "bz" = (/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{frequency = 1379; scrub_id = "mining_outpost_airlock_scrubber"},/turf/simulated/floor/tiled/techfloor/grid,/area/outpost/mining_main/airlock) "bA" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{icon_state = "0-2"},/turf/simulated/floor/bluegrid,/area/outpost/mining_main/airlock) "bB" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/bluegrid,/area/outpost/mining_main/airlock) @@ -88,7 +88,7 @@ "bJ" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/effect/floor_decal/techfloor{dir = 4},/turf/simulated/floor/tiled/techfloor,/area/outpost/engineering/atmospherics) "bK" = (/obj/structure/table/woodentable,/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/wood,/area/outpost/mining_main/dorms) "bL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/light_switch{dir = 1; pixel_x = 12; pixel_y = 24},/obj/structure/cable/green{icon_state = "0-4"},/turf/simulated/floor/wood,/area/outpost/mining_main/dorms) -"bM" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/brown/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/structure/closet/excavation,/obj/item/weapon/storage/bag/ore,/turf/simulated/floor/tiled,/area/outpost/mining_main/break_room) +"bM" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/brown/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/brown/bordercorner2{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/item/weapon/storage/bag/ore,/obj/structure/closet/secure_closet/miner,/turf/simulated/floor/tiled,/area/outpost/mining_main/break_room) "bN" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/tiled/steel_grid,/area/outpost/mining_main/break_room) "bO" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/steel_grid,/area/outpost/mining_main/break_room) "bP" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/effect/floor_decal/techfloor{dir = 4},/turf/simulated/floor/tiled/techfloor,/area/outpost/engineering/atmospherics) @@ -236,8 +236,8 @@ aaababababababababababaxawaDaCaoabababababababababababalalalabababababababacacac aaababayayayayayayayayazazazaEaAaAaBabababababababababalalafabababababababacacacacababababacababababababababababababababababababababababababacacacacacababababababababababababababababababababababababababababababababababababababababababababaa aaababayaFaHaGaLaJaVayaIaYaKbgaMaNaOabababababababababalalalabababababababababababababababacababababababababababababababababababababababababacababababababababababababababababababababababababababababababababababababababababababababababababaa aaababayaPaQaRaSaTaUbmaWaWaXbvaZbaaOabababababababababafalalabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa -aaababaybbbcbdbebfbJaybhbibjbkblbMbnbnbnbnbnbnbnabababalalalabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa -aaabbobpbqbrbsbtbubPaybwbwbwbxblbybnbzbzbAbBbCbnbDalalalalalalalalalafalalbEafababababafabababababababababababafabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa +aaababaybbbcbdbebfbJaybhbibjbkblbybnbnbnbnbnbnbnabababalalalabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa +aaabbobpbqbrbsbtbubPaybwbwbwbxblbMbnbzbzbAbBbCbnbDalalalalalalalalalafalalbEafababababafabababababababababababafabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa aaababaybFbGbHbIbIbWaybKbLbXbNbObObYbQbRbSbTbUbVbDalafalalalalalalafafalalababafabafababababafababababafabafafabafafabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa aaababaybZcacacscrctaycbccbwcdcecfbnbzbzcgchcibncjalalalckclalalafalalababababababababababafabababafabababababababababafafababafabababababababababababababababababababababababababababababababababababababababababababababababababababababababaa aaababayayayayayayayaybwbwbwazazazbnbnbnbnbnbnbnababababalalabababalalababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa diff --git a/maps/tether/tether-07-misc.dmm b/maps/tether/tether-07-misc.dmm index 49ebea0ce3..9f4b9f4d35 100644 --- a/maps/tether/tether-07-misc.dmm +++ b/maps/tether/tether-07-misc.dmm @@ -1028,7 +1028,7 @@ "tN" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/syndie_kit/ewar_voice,/obj/item/weapon/storage/box/syndie_kit/ewar_voice,/obj/item/weapon/storage/box/syndie_kit/ewar_voice,/obj/item/weapon/storage/box/syndie_kit/ewar_voice,/obj/machinery/recharger/wallcharger{pixel_x = 5; pixel_y = -32},/obj/item/weapon/card/emag,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) "tO" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/syndie_kit/chameleon,/obj/item/weapon/storage/box/syndie_kit/chameleon,/obj/item/weapon/storage/box/syndie_kit/chameleon,/obj/item/weapon/storage/box/syndie_kit/chameleon,/obj/item/weapon/storage/box/syndie_kit/chameleon,/obj/item/weapon/storage/box/syndie_kit/chameleon,/obj/machinery/recharger/wallcharger{pixel_x = 5; pixel_y = -32},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) "tP" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/syndie_kit/spy,/obj/item/weapon/storage/box/syndie_kit/spy,/obj/item/weapon/storage/box/syndie_kit/spy,/obj/item/weapon/storage/box/syndie_kit/spy,/obj/item/weapon/storage/box/syndie_kit/spy,/obj/item/device/radio_jammer,/obj/item/device/radio_jammer,/obj/item/device/radio_jammer,/obj/item/device/radio_jammer,/obj/item/device/radio_jammer,/obj/item/device/chameleon,/obj/item/device/chameleon,/obj/item/device/chameleon,/obj/machinery/recharger/wallcharger{pixel_x = 5; pixel_y = -32},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) -"tQ" = (/mob/living/simple_animal/fox/syndicate,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) +"tQ" = (/mob/living/simple_animal/fox/syndicate{name = "Rick"},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) "tR" = (/obj/item/device/defib_kit,/obj/item/device/defib_kit,/obj/structure/table/standard,/obj/machinery/recharger,/obj/item/weapon/screwdriver,/turf/unsimulated/floor{icon_state = "white"},/area/antag/antag_base) "tS" = (/obj/machinery/washing_machine,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/antag/antag_base) "tT" = (/obj/machinery/shower{dir = 1},/obj/structure/curtain/open/shower,/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 10},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/antag/antag_base) From a9851ace2d1357c8d6e57e49862d930c5b00bfaa Mon Sep 17 00:00:00 2001 From: PontifexMinimus <2vs_5fetab8ix85s@byom.de> Date: Sun, 4 Jun 2017 17:26:43 +0200 Subject: [PATCH 55/84] Update giant_spider.dm With the normal spider toxin. Because right now, every bite causes 7 units pumped into a person. That brings it to 21 units with only three bites, enough to knock down a person for +20 minutes. Which won't fucking do. --- code/modules/mob/living/simple_animal/animals/giant_spider.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/animals/giant_spider.dm b/code/modules/mob/living/simple_animal/animals/giant_spider.dm index e2c833000e..e0a8b130d6 100644 --- a/code/modules/mob/living/simple_animal/animals/giant_spider.dm +++ b/code/modules/mob/living/simple_animal/animals/giant_spider.dm @@ -56,7 +56,7 @@ melee_damage_lower = 5 melee_damage_upper = 10 poison_per_bite = 7 - poison_type = "stoxin" + poison_type = "spidertoxin" // VOREStation edit, original is stoxin. (sleep toxins) var/fed = 0 var/atom/cocoon_target From 3634624a8e235b4b7edd8cec354dcccb0efa47c2 Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Sun, 4 Jun 2017 12:09:49 -0400 Subject: [PATCH 56/84] More trash pile sprites What it says yo --- code/game/objects/structures/trash_pile.dm | 13 ++++++++++++- icons/obj/trash_piles.dmi | Bin 1768 -> 9367 bytes 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/code/game/objects/structures/trash_pile.dm b/code/game/objects/structures/trash_pile.dm index 434b4cc852..5490251280 100644 --- a/code/game/objects/structures/trash_pile.dm +++ b/code/game/objects/structures/trash_pile.dm @@ -29,7 +29,18 @@ /obj/structure/trash_pile/initialize() ..() - icon_state = pick("pile1","pile2","pilechair","piletable","pilevending") + icon_state = pick( + "pile1", + "pile2", + "pilechair", + "piletable", + "pilevending", + "brtrashpile", + "microwavepile", + "rackpile", + "boxfort", + "trashbag", + "brokecomp") /obj/structure/trash_pile/attackby(obj/item/W as obj, mob/user as mob) var/w_type = W.type diff --git a/icons/obj/trash_piles.dmi b/icons/obj/trash_piles.dmi index b87fdc16df760d1c6c5b7c2fb8561bc8053c938b..a8eea0b14edc146e39f605fd4bf1603d538b2c6f 100644 GIT binary patch literal 9367 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
    vu(xz$H{?5)^PmmVo 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 IUe-M9e}GSu-v9sr literal 1768 zcmVP){YvQo0004WQchCV=-0C=2J zR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5 zsVFfoB|oil=+!$a4PCv^s%gFOL0052AA?%MR0&skkfk}D<$Q-~HC^b0& zfDi;2bp&WNHsd7a3@~|o1OeC*ah%xbpQjnpz%Za=iExT$JWhCq_>{C zV2QF%luR!jjXDFA#u3SwWY=m8;5diJeU%SKp9X&)Q23380Bk`65JG_(js};P1h~5T z{J9%|wo!r(s`w&+lmX37H9}Bdzn~`5;c#%7kJ|Rgr~i%v009Q)hvrif0n+AlmPLwj zvY%dGUk?Yvt6_M0kFCnHfbmoSvzZ)rA%Ihuiv73m--k4PA1}+2&FSF`ATp_6CDAdMTLN>DhlNQ5M+ScxI(9@LVF#?1>iKBOp3{5 z5<@%yhm(Z>G(gycyno^2I*MDsyr2Xo0uV+EfaB|$Ef@eFLqI>jXyR2IxBi9rI{+b^ z0WDMV#}ctcQibDHA9Zo@8~N835ycgDpqLlf=Gi1tlY>r_2h<2qu>sXY5?})PM{$iy zc#i%pzzw$3jZYMHP%|)zW2W!AlN@DP7r^3dSd@L?sl;*XsOyE zk-dMHU4n-IAOHEsAs|rUrB0}-PDMnIkLTm+to#4^FAH9O%X`#(wBRZw{R057?)P-MBEr4p&Ifdur3INIhN-Nvxjww8^ zH=8y7#EJ-%LgnpCcWMXA>zqHkuh#)%yCp&^1qX1A?he=n^WR#v0V)F6476Lnk$@Ee zwnr)y0(1=UCDQWY+cKvI6*8W;#}xp0Q?+}5(s7OaFJNKE0kDHZ0GScs#f!FGRYBkm zZIXR>mWqI@(hhd567d$U2!O_TkKFBc2%uhgK&$Lg3Iy2Fq}MomZuAC2n;-+(Vww`z z+4&BiuF2d1ssB0z=mx+yTU<#t0|wx$_>cWF$XGqs+BN{(+Fyq~ z@aH{QmDFjjjs;*sE&~KmQYQfr5Q3-A{$3_GMl6W~?DzYZ7fm;50RWn39-!I)t0Ox( z094!vTOwRW)by48^z6xBqq6;Oxm*HWbHSz3G#!qd*S Date: Sun, 4 Jun 2017 12:31:05 -0400 Subject: [PATCH 57/84] Modify fluff gun to 10mm Instead of mateba megarounds. --- code/modules/vore/fluffstuff/custom_boxes_vr.dm | 2 +- code/modules/vore/fluffstuff/custom_guns_vr.dm | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/code/modules/vore/fluffstuff/custom_boxes_vr.dm b/code/modules/vore/fluffstuff/custom_boxes_vr.dm index 92ec145d5f..6908a68e95 100644 --- a/code/modules/vore/fluffstuff/custom_boxes_vr.dm +++ b/code/modules/vore/fluffstuff/custom_boxes_vr.dm @@ -188,7 +188,7 @@ /obj/item/weapon/storage/box/fluff/briana_moore name = "Briana's Derringer Box" has_items = list( - /obj/item/weapon/gun/projectile/derringer, + /obj/item/weapon/gun/projectile/derringer/fluff/briana, /obj/item/fluff/permit/briana_moore) diff --git a/code/modules/vore/fluffstuff/custom_guns_vr.dm b/code/modules/vore/fluffstuff/custom_guns_vr.dm index e6f562987a..400c327c75 100644 --- a/code/modules/vore/fluffstuff/custom_guns_vr.dm +++ b/code/modules/vore/fluffstuff/custom_guns_vr.dm @@ -168,6 +168,12 @@ origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2) ammo_type = /obj/item/ammo_casing/a38r //Rubber rounds. +// LuminescentRing : Briana Moore +/obj/item/weapon/gun/projectile/derringer/fluff/briana + name = "second-hand derringer" + desc = "It's a palm sized gun. One of the few things that won't break an angel's wrists." + caliber = "10mm" + ammo_type = /obj/item/ammo_casing/a10mm // For general use /obj/item/weapon/gun/projectile/automatic/stg From 7e253921d4dfca0f2ff14ac43df3159356598c56 Mon Sep 17 00:00:00 2001 From: Yoshax Date: Sat, 3 Jun 2017 13:06:37 +0100 Subject: [PATCH 58/84] Fixes the stuff --- .../carbon/human/species/station/traits_vr/negative.dm | 6 +++--- .../carbon/human/species/station/traits_vr/positive.dm | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm index 704cd21199..ed66abb5aa 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm @@ -57,13 +57,13 @@ var_changes = list("burn_mod" = 1.30) /datum/trait/conductive - name = "Conductive (Minor)" + name = "Conductive" desc = "Increases your susceptibility to electric shocks by a small amount." cost = -1 var_changes = list("siemens_coefficient" = 1.15) -/datum/trait/conductiveplus - name = "Non-Conductive (Major)" +/datum/trait/conductive_plus + name = "Conductive (Plus)" desc = "Increases your susceptibility to electric shocks by a moderate amount." cost = -2 var_changes = list("siemens_coefficient" = 1.3) diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm index e92f667867..984f886acb 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm @@ -33,13 +33,13 @@ H.setMaxHealth(S.total_health) /datum/trait/nonconductive - name = "Non-Conductive (Minor)" + name = "Non-Conductive" desc = "Decreases your susceptibility to electric shocks by a small amount." cost = 1 var_changes = list("siemens_coefficient" = 0.85) -/datum/trait/nonconductiveplus - name = "Non-Conductive (Major)" +/datum/trait/nonconductive_plus + name = "Non-Conductive (Plus)" desc = "Decreases your susceptibility to electric shocks by a moderate amount." cost = 2 var_changes = list("siemens_coefficient" = 0.7) From 5fbb93551dcb0a00f60a19f71a9287f2fff2dec6 Mon Sep 17 00:00:00 2001 From: Pear120 Date: Sun, 4 Jun 2017 17:41:41 -0400 Subject: [PATCH 59/84] Allows soap and rags to be wet using buckets --- code/modules/reagents/reagent_containers/glass.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index bd670cc8bc..7fccddecd1 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -249,7 +249,7 @@ user.drop_from_inventory(src) qdel(src) return - else if(istype(D, /obj/item/weapon/mop)) + else if(istype(D, /obj/item/weapon/mop) || istype(D, /obj/item/weapon/soap) || istype(D, /obj/item/weapon/reagent_containers/glass/rag)) if(reagents.total_volume < 1) user << "\The [src] is empty!" else From ae1d77cad00ffc84c7f9ecf2aeaab383d8760157 Mon Sep 17 00:00:00 2001 From: Pear120 Date: Sun, 4 Jun 2017 17:43:38 -0400 Subject: [PATCH 60/84] Allows soap and rags to be wet using mopbuckets --- code/game/objects/structures/mop_bucket.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/structures/mop_bucket.dm b/code/game/objects/structures/mop_bucket.dm index 5e0c0d5abb..6093dd497f 100644 --- a/code/game/objects/structures/mop_bucket.dm +++ b/code/game/objects/structures/mop_bucket.dm @@ -20,7 +20,7 @@ user << "[src] \icon[src] contains [reagents.total_volume] unit\s of water!" /obj/structure/mopbucket/attackby(obj/item/I, mob/user) - if(istype(I, /obj/item/weapon/mop)) + if(istype(I, /obj/item/weapon/mop) || istype(I, /obj/item/weapon/soap) || istype(I, /obj/item/weapon/reagent_containers/glass/rag)) if(reagents.total_volume < 1) user << "\The [src] is out of water!" else From 84f17a4b006e8cfba01ea907fc60a47a68a6e050 Mon Sep 17 00:00:00 2001 From: Pear120 Date: Sun, 4 Jun 2017 17:47:28 -0400 Subject: [PATCH 61/84] Rags clean dirt from floors now And can be wet from buckets --- code/modules/detectivework/tools/rag.dm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/code/modules/detectivework/tools/rag.dm b/code/modules/detectivework/tools/rag.dm index 57af12525d..a09e2db571 100644 --- a/code/modules/detectivework/tools/rag.dm +++ b/code/modules/detectivework/tools/rag.dm @@ -102,6 +102,10 @@ if(do_after(user,30)) user.visible_message("\The [user] finishes wiping off the [A]!") A.clean_blood() + if(istype(A, /turf) || istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/overlay) || istype(A, /obj/effect/rune)) + var/turf/T = get_turf(A) + if(T) + T.clean(src, user) /obj/item/weapon/reagent_containers/glass/rag/attack(atom/target as obj|turf|area, mob/user as mob , flag) if(isliving(target)) @@ -132,7 +136,7 @@ if(!proximity) return - if(istype(A, /obj/structure/reagent_dispensers)) + if(istype(A, /obj/structure/reagent_dispensers) || istype(A, /obj/item/weapon/reagent_containers/glass/bucket) || istype(A, /obj/structure/mopbucket)) if(!reagents.get_free_space()) user << "\The [src] is already soaked." return From 7a875b796b81ea76fad5da0bd8e832f75bf1f688 Mon Sep 17 00:00:00 2001 From: Pear120 Date: Sun, 4 Jun 2017 18:24:13 -0400 Subject: [PATCH 62/84] Update mop_bucket.dm --- code/game/objects/structures/mop_bucket.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/structures/mop_bucket.dm b/code/game/objects/structures/mop_bucket.dm index 6093dd497f..54218cc847 100644 --- a/code/game/objects/structures/mop_bucket.dm +++ b/code/game/objects/structures/mop_bucket.dm @@ -20,7 +20,7 @@ user << "[src] \icon[src] contains [reagents.total_volume] unit\s of water!" /obj/structure/mopbucket/attackby(obj/item/I, mob/user) - if(istype(I, /obj/item/weapon/mop) || istype(I, /obj/item/weapon/soap) || istype(I, /obj/item/weapon/reagent_containers/glass/rag)) + if(istype(I, /obj/item/weapon/mop) || istype(I, /obj/item/weapon/soap) || istype(I, /obj/item/weapon/reagent_containers/glass/rag)) //VOREStation Edit - "Allows soap and rags to be used on mopbuckets" if(reagents.total_volume < 1) user << "\The [src] is out of water!" else From cf2195f3701e41503cc17ea1f2ed05e1505a7b94 Mon Sep 17 00:00:00 2001 From: Pear120 Date: Sun, 4 Jun 2017 18:26:28 -0400 Subject: [PATCH 63/84] Update rag.dm --- code/modules/detectivework/tools/rag.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/detectivework/tools/rag.dm b/code/modules/detectivework/tools/rag.dm index a09e2db571..bafdddf4ff 100644 --- a/code/modules/detectivework/tools/rag.dm +++ b/code/modules/detectivework/tools/rag.dm @@ -102,10 +102,10 @@ if(do_after(user,30)) user.visible_message("\The [user] finishes wiping off the [A]!") A.clean_blood() - if(istype(A, /turf) || istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/overlay) || istype(A, /obj/effect/rune)) + if(istype(A, /turf) || istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/overlay) || istype(A, /obj/effect/rune)) //VOREStation Edit - "Allows rags to clean dirt from turfs" var/turf/T = get_turf(A) if(T) - T.clean(src, user) + T.clean(src, user) //VOREStation Edit End /obj/item/weapon/reagent_containers/glass/rag/attack(atom/target as obj|turf|area, mob/user as mob , flag) if(isliving(target)) @@ -136,7 +136,7 @@ if(!proximity) return - if(istype(A, /obj/structure/reagent_dispensers) || istype(A, /obj/item/weapon/reagent_containers/glass/bucket) || istype(A, /obj/structure/mopbucket)) + if(istype(A, /obj/structure/reagent_dispensers) || istype(A, /obj/item/weapon/reagent_containers/glass/bucket) || istype(A, /obj/structure/mopbucket)) //VOREStation Edit - "Allows rags to be used on buckets and mopbuckets" if(!reagents.get_free_space()) user << "\The [src] is already soaked." return From 7b65a8836faecd6e66b250916da179d9e84c6358 Mon Sep 17 00:00:00 2001 From: Pear120 Date: Sun, 4 Jun 2017 18:26:59 -0400 Subject: [PATCH 64/84] Update glass.dm --- code/modules/reagents/reagent_containers/glass.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 7fccddecd1..f84a6ff407 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -249,7 +249,7 @@ user.drop_from_inventory(src) qdel(src) return - else if(istype(D, /obj/item/weapon/mop) || istype(D, /obj/item/weapon/soap) || istype(D, /obj/item/weapon/reagent_containers/glass/rag)) + else if(istype(D, /obj/item/weapon/mop) || istype(D, /obj/item/weapon/soap) || istype(D, /obj/item/weapon/reagent_containers/glass/rag)) //VOREStation Edit - "Allows soap and rags to be used on buckets" if(reagents.total_volume < 1) user << "\The [src] is empty!" else From 13c431a84951fa6c131b99128277c15568dd57ef Mon Sep 17 00:00:00 2001 From: SpoopyLizz Date: Mon, 5 Jun 2017 00:47:50 +0200 Subject: [PATCH 65/84] Changes as requested by Aronai fulfilled. https://github.com/VOREStation/VOREStation/pull/1614 --- .../vore/fluffstuff/custom_items_vr.dm | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm index 9a93138c23..f0c21ce237 100644 --- a/code/modules/vore/fluffstuff/custom_items_vr.dm +++ b/code/modules/vore/fluffstuff/custom_items_vr.dm @@ -784,32 +784,18 @@ obj/item/weapon/material/hatchet/tacknife/combatknife/fluff/katarina/handle_shie icon_state = "egg_roiz" filling_color = "#FDFFD1" volume = 12 - center_of_mass = list("x"=16, "y"=13) /obj/item/weapon/reagent_containers/food/snacks/egg/roiz/New() ..() reagents.add_reagent("egg", 9) bitesize = 4 -/obj/item/weapon/reagent_containers/food/snacks/egg/roiz/afterattack(obj/O as obj, mob/user as mob, proximity) - if(istype(O,/obj/machinery/microwave)) - return ..() - if(!(proximity && O.is_open_container())) - return - user << "You crack \the [src] into \the [O]." - reagents.trans_to(O, reagents.total_volume) - user.drop_from_inventory(src) - qdel(src) - -/obj/item/weapon/reagent_containers/food/snacks/egg/roiz/throw_impact(atom/hit_atom) - ..() - /obj/item/weapon/reagent_containers/food/snacks/friedegg/roiz name = "fried lizard egg" desc = "A large, fried lizard egg, with a touch of salt and pepper. It looks rather chewy." icon = 'icons/vore/custom_items_vr.dmi' icon_state = "friedegg" - center_of_mass = list("x"=16, "y"=14) + volume = 12 /obj/item/weapon/reagent_containers/food/snacks/friedegg/roiz/New() ..() @@ -821,6 +807,7 @@ obj/item/weapon/material/hatchet/tacknife/combatknife/fluff/katarina/handle_shie desc = "A hard boiled lizard egg. Be careful, a lizard detective may hatch!" icon = 'icons/vore/custom_items_vr.dmi' icon_state = "egg_roiz" + volume = 12 /obj/item/weapon/reagent_containers/food/snacks/boiledegg/roiz/New() ..() @@ -833,9 +820,9 @@ obj/item/weapon/material/hatchet/tacknife/combatknife/fluff/katarina/handle_shie icon = 'icons/vore/custom_items_vr.dmi' icon_state = "chocolateegg_roiz" filling_color = "#7D5F46" - center_of_mass = list("x"=16, "y"=13) nutriment_amt = 3 nutriment_desc = list("chocolate" = 5) + volume = 18 /obj/item/weapon/reagent_containers/food/snacks/chocolateegg/roiz/New() ..() From 9f2292ce36c5822717b5562cba90f8fbc8dd0eba Mon Sep 17 00:00:00 2001 From: Cameron653 Date: Sun, 4 Jun 2017 20:33:49 -0400 Subject: [PATCH 66/84] Update rig.dm --- code/modules/clothing/spacesuits/rig/rig.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 403e29f662..b586f04d27 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -199,7 +199,7 @@ if(!piece) continue piece.icon_state = "[initial(icon_state)]" if(airtight) - piece.item_flags &= ~(STOPPRESSUREDAMAGE|AIRTIGHT|PHORONGUARD) //VOREStation edit + piece.item_flags &= ~(STOPPRESSUREDAMAGE|AIRTIGHT) update_icon(1) /obj/item/weapon/rig/proc/toggle_seals(var/mob/living/carbon/human/M,var/instant) From 8889eb485de79fe311d220b2bf1555b706a4bc88 Mon Sep 17 00:00:00 2001 From: Cameron653 Date: Sun, 4 Jun 2017 20:34:30 -0400 Subject: [PATCH 67/84] Update rig_pieces_vr.dm --- code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm b/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm index 4724ebce5e..ec36224801 100644 --- a/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm +++ b/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm @@ -322,4 +322,13 @@ update_icon() return 1 else - return 1 \ No newline at end of file + return 1 + +/obj/item/clothing/head/helmet/space/rig + phoronproof = 1 +/obj/item/clothing/gloves/gauntlets/rig + phoronproof = 1 +/obj/item/clothing/shoes/magboots/rig + phoronproof = 1 +/obj/item/clothing/suit/space/rig + phoronproof = 1 From 4ca9cdb49103ed0339a051be85152060070a2545 Mon Sep 17 00:00:00 2001 From: SpoopyLizz Date: Mon, 5 Jun 2017 16:07:22 +0200 Subject: [PATCH 68/84] custom_items.txt file updated to include the implanter --- config/custom_items.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/config/custom_items.txt b/config/custom_items.txt index 5e142ea5eb..e59e46dc6d 100644 --- a/config/custom_items.txt +++ b/config/custom_items.txt @@ -539,6 +539,12 @@ character_name: Fortune Bloise item_path: /obj/item/weapon/storage/backpack/satchel/fluff/swat43bag } +{ +ckey: SpoopyLizz +character_name: Roiz Lizden +item_path: /obj/item/weapon/implanter/reagent_generator/roiz +} + # ######## T CKEYS { ckey: tonyvld From 50accd426c6b264d25bac206043eb5c8a3af93bc Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Sat, 3 Jun 2017 00:35:48 -0400 Subject: [PATCH 69/84] Initial NIF Commit --- .../mob/living/carbon/human/examine_vr.dm | 28 ++++-- code/modules/mob/living/carbon/human/life.dm | 6 +- .../mob/living/carbon/human/life_vr.dm | 6 ++ code/modules/surgery/implant.dm | 2 + code/modules/vore/persist/persist_vr.dm | 90 +++++++++++------- icons/obj/device_alt.dmi | Bin 54134 -> 54630 bytes icons/obj/vending_vr.dmi | Bin 62894 -> 67287 bytes vorestation.dme | 7 ++ 8 files changed, 92 insertions(+), 47 deletions(-) diff --git a/code/modules/mob/living/carbon/human/examine_vr.dm b/code/modules/mob/living/carbon/human/examine_vr.dm index 1d6d77c5ab..a9b6390782 100644 --- a/code/modules/mob/living/carbon/human/examine_vr.dm +++ b/code/modules/mob/living/carbon/human/examine_vr.dm @@ -114,15 +114,23 @@ //For OmniHUD records access for appropriate models /proc/hasHUD_vr(mob/living/carbon/human/H, hudtype) - if(!(istype(H.glasses, /obj/item/clothing/glasses/omnihud))) - return 0 //Not wearing omnis, don't care. + if(H.nif) + switch(hudtype) + if("security") + if(H.nif.flag_check(NIF_V_AR_SECURITY,NIF_FLAGS_VISION)) + return TRUE + if("medical") + if(H.nif.flag_check(NIF_V_AR_MEDICAL,NIF_FLAGS_VISION)) + return TRUE - var/obj/item/clothing/glasses/omnihud/omni = H.glasses + if(istype(H.glasses, /obj/item/clothing/glasses/omnihud)) + var/obj/item/clothing/glasses/omnihud/omni = H.glasses + switch(hudtype) + if("security") + if(omni.mode == "sec" || omni.mode == "best") + return TRUE + if("medical") + if(omni.mode == "med" || omni.mode == "best") + return TRUE - switch(hudtype) - if("security") - return omni.mode == "sec" || omni.mode == "best" - if("medical") - return omni.mode == "med" || omni.mode == "best" - else - return 0 \ No newline at end of file + return FALSE diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index a0cfc6f0a8..753cf3255e 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -82,7 +82,7 @@ handle_medical_side_effects() handle_heartbeat() - + handle_nif() //VOREStation Add if(!client) species.handle_npc(src) @@ -1336,10 +1336,10 @@ var/obj/item/clothing/glasses/omnihud/S = G O = S.hud //VOREStation Add End - if(istype(G, /obj/item/clothing/glasses/sunglasses/sechud)) + else if(istype(G, /obj/item/clothing/glasses/sunglasses/sechud)) //VOREStation Edit - Added else var/obj/item/clothing/glasses/sunglasses/sechud/S = G O = S.hud - if(istype(G, /obj/item/clothing/glasses/sunglasses/medhud)) + else if(istype(G, /obj/item/clothing/glasses/sunglasses/medhud)) //VOREStation Edit - Added else var/obj/item/clothing/glasses/sunglasses/medhud/M = G O = M.hud if(istype(O)) diff --git a/code/modules/mob/living/carbon/human/life_vr.dm b/code/modules/mob/living/carbon/human/life_vr.dm index 9e655d2672..a04232c401 100644 --- a/code/modules/mob/living/carbon/human/life_vr.dm +++ b/code/modules/mob/living/carbon/human/life_vr.dm @@ -43,3 +43,9 @@ vantag.icon_state = vantag_pref else vantag.icon_state = "hudblank" + +/mob/living/carbon/human/proc/handle_nif() + if(!nif) return + + //Process regular life stuff + nif.life() \ No newline at end of file diff --git a/code/modules/surgery/implant.dm b/code/modules/surgery/implant.dm index 3e49482c75..8c2fbfbbc0 100644 --- a/code/modules/surgery/implant.dm +++ b/code/modules/surgery/implant.dm @@ -136,6 +136,7 @@ user.drop_item() affected.implants += tool tool.loc = affected + if(istype(tool,/obj/item/device/nif)){var/obj/item/device/nif/N = tool;N.implant(target)} //VOREStation Add - NIF support affected.cavity = 0 ////////////////////////////////////////////////////////////////// @@ -207,6 +208,7 @@ var/obj/item/weapon/implant/imp = obj imp.imp_in = null imp.implanted = 0 + else if(istype(tool,/obj/item/device/nif)){var/obj/item/device/nif/N = tool;N.unimplant(target)} //VOREStation Add - NIF support else user.visible_message("\blue [user] removes \the [tool] from [target]'s [affected.name].", \ "\blue There's something inside [target]'s [affected.name], but you just missed it this time." ) diff --git a/code/modules/vore/persist/persist_vr.dm b/code/modules/vore/persist/persist_vr.dm index a6ff22d4e4..977473812a 100644 --- a/code/modules/vore/persist/persist_vr.dm +++ b/code/modules/vore/persist/persist_vr.dm @@ -35,6 +35,32 @@ persist_interround_data(Player, /datum/spawnpoint/cryo) return 1 +/** + * Prep for save: returns a preferences object if we're ready and allowed to save this mob. + */ +/proc/prep_for_persist(var/mob/persister) + ASSERT(istype(persister)) + + // Find out of this mob is a proper mob! + if (persister.mind && persister.mind.loaded_from_ckey) + // Okay this mob has a real loaded-from-savefile mind in it! + var/datum/preferences/prefs = preferences_datums[persister.mind.loaded_from_ckey] + if(!prefs) + WARNING("mind [persister.mind] was loaded from ckey [persister.mind.loaded_from_ckey] but no prefs datum found") + return + + // Okay, lets do a few checks to see if we should really save tho! + if(!prefs.load_character(persister.mind.loaded_from_slot)) + WARNING("mind [persister.mind] was loaded from slot [persister.mind.loaded_from_slot] but loading prefs failed.") + return // Failed to load character + + // For now as a safety measure we will only save if the name matches. + if(prefs.real_name != persister.real_name) + log_debug("Skipping persist for [persister] becuase [persister.real_name] != [prefs.real_name]") + return + + return prefs + /** * Called when mob despawns early (via cryopod)! */ @@ -47,42 +73,28 @@ /proc/persist_interround_data(var/mob/occupant, var/datum/spawnpoint/new_spawn_point_type) ASSERT(istype(occupant)) - // Find out of this mob is a proper mob! - if (occupant.mind && occupant.mind.loaded_from_ckey) - // Okay this mob has a real loaded-from-savefile mind in it! - var/datum/preferences/prefs = preferences_datums[occupant.mind.loaded_from_ckey] - if(!prefs) - WARNING("mind [occupant.mind] was loaded from ckey [occupant.mind.loaded_from_ckey] but no prefs datum found") - return + var/datum/preferences/prefs = prep_for_persist(occupant) + if(!prefs) + WARNING("persist_interround_data failed to prep [occupant] for persisting") + return - // Okay, lets do a few checks to see if we should really save tho! - if(!prefs.load_character(occupant.mind.loaded_from_slot)) - WARNING("mind [occupant.mind] was loaded from slot [occupant.mind.loaded_from_slot] but loading prefs failed.") - return // Failed to load character + if(!prefs.persistence_settings) + return // Persistence disabled by preference settings - // For now as a safety measure we will only save if the name matches. - if(prefs.real_name != occupant.real_name) - log_debug("Skipping persist for [occupant] becuase [occupant.real_name] != [prefs.real_name]") - return - - if(!prefs.persistence_settings) - return // Persistence disabled by preference settings - - // Okay we can start saving the data - if(new_spawn_point_type && prefs.persistence_settings & PERSIST_SPAWN) - prefs.spawnpoint = initial(new_spawn_point_type.display_name) - if(ishuman(occupant) && occupant.stat != DEAD) - var/mob/living/carbon/human/H = occupant - testing("About to try saving stuff from [H] to [prefs] (\ref[prefs])") - if(prefs.persistence_settings & PERSIST_ORGANS) - apply_organs_to_prefs(H, prefs) - if(prefs.persistence_settings & PERSIST_MARKINGS) - apply_markings_to_prefs(H, prefs) - if(prefs.persistence_settings & PERSIST_WEIGHT) - resolve_excess_nutrition(H) - prefs.weight_vr = H.weight - prefs.save_character() - return + // Okay we can start saving the data + if(new_spawn_point_type && prefs.persistence_settings & PERSIST_SPAWN) + prefs.spawnpoint = initial(new_spawn_point_type.display_name) + if(ishuman(occupant) && occupant.stat != DEAD) + var/mob/living/carbon/human/H = occupant + testing("About to try saving stuff from [H] to [prefs] (\ref[prefs])") + if(prefs.persistence_settings & PERSIST_ORGANS) + apply_organs_to_prefs(H, prefs) + if(prefs.persistence_settings & PERSIST_MARKINGS) + apply_markings_to_prefs(H, prefs) + if(prefs.persistence_settings & PERSIST_WEIGHT) + resolve_excess_nutrition(H) + prefs.weight_vr = H.weight + prefs.save_character() // Saves mob's current coloration state to prefs // This basically needs to be the reverse of /datum/category_item/player_setup_item/general/body/copy_to_mob() ~Leshana @@ -194,3 +206,13 @@ // Weight Loss! var/loss = (MAX_NUTRITION_TO_LOSE - C.nutrition) * weight_per_nutrition * C.weight_loss/100 C.weight = max(MIN_MOB_WEIGHT, C.weight - loss) + +/** +* Persist any NIF data that needs to be persisted. It's stored in a list to make it more malleable +* towards future shenanigans such as upgradable NIFs or different types or things of that nature, +* without invoking the need for a bunch of different save file variables. +*/ +/proc/persist_nif_data(var/mob/living/carbon/human/H) + if(!istype(H)) + CRASH("persist_nif_data given a nonhuman: [H]") + diff --git a/icons/obj/device_alt.dmi b/icons/obj/device_alt.dmi index fed11b212b275f656fdeaf9796f2e98a739a018c..e434cfb7ac01894ee75a512cc54237a3467628b6 100644 GIT binary patch delta 14029 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 Tw4w+=f397*dAV5ABH(`jJvCUv delta 13529 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 diff --git a/icons/obj/vending_vr.dmi b/icons/obj/vending_vr.dmi index 1feb5f36c55e76a8a6e91ff26f6305bc351b4e81..7d71132986ffbedefd210283f7fd41a7a4938c21 100644 GIT binary patch literal 67287 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

    NJ}|LV@2qt>lPC8=9Wa&3p0iC>4x-37kF* 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 Date: Sat, 3 Jun 2017 00:36:03 -0400 Subject: [PATCH 70/84] Polaris-able surgery fix --- code/modules/surgery/implant.dm | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/code/modules/surgery/implant.dm b/code/modules/surgery/implant.dm index 8c2fbfbbc0..5b26489049 100644 --- a/code/modules/surgery/implant.dm +++ b/code/modules/surgery/implant.dm @@ -13,22 +13,22 @@ return affected && affected.open == (affected.encased ? 3 : 2) && !(affected.status & ORGAN_BLEEDING) proc/get_max_wclass(var/obj/item/organ/external/affected) - switch (affected.name) - if ("head") - return 1 - if ("upper body") - return 3 - if ("lower body") - return 2 + switch (affected.organ_tag) + if (BP_HEAD) + return ITEMSIZE_TINY + if (BP_TORSO) + return ITEMSIZE_NORMAL + if (BP_GROIN) + return ITEMSIZE_SMALL return 0 proc/get_cavity(var/obj/item/organ/external/affected) - switch (affected.name) - if ("head") + switch (affected.organ_tag) + if (BP_HEAD) return "cranial" - if ("upper body") + if (BP_TORSO) return "thoracic" - if ("lower body") + if (BP_GROIN) return "abdominal" return "" From 58ee6891f2b668293c7882bac295312da33b3a21 Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Sat, 3 Jun 2017 00:55:01 -0400 Subject: [PATCH 71/84] Additional Work on NIFs Squashed commits: [9563a9a] All the stuff I forgot to commit --- code/ZAS/Phoron.dm | 4 + code/__defines/nifsoft.dm | 103 ++++ code/game/objects/items/devices/flash.dm | 10 +- code/game/objects/items/weapons/tools.dm | 1 + code/modules/mob/living/carbon/breathe.dm | 7 + code/modules/mob/living/carbon/carbon.dm | 1 + .../mob/living/carbon/human/human_organs.dm | 3 +- code/modules/mob/living/carbon/human/life.dm | 3 +- .../mob/living/carbon/human/life_vr.dm | 3 +- code/modules/nifsoft/nif.dm | 481 ++++++++++++++++++ code/modules/nifsoft/nif_softshop.dm | 111 ++++ code/modules/nifsoft/nif_statpanel.dm | 77 +++ code/modules/nifsoft/nifsoft.dm | 110 ++++ code/modules/nifsoft/software/01_vision.dm | 253 +++++++++ code/modules/nifsoft/software/05_health.dm | 184 +++++++ code/modules/nifsoft/software/10_combat.dm | 7 + code/modules/nifsoft/software/15_misc.dm | 9 + code/modules/organs/organ_external.dm | 2 +- icons/obj/device_alt.dmi | Bin 54630 -> 54974 bytes icons/obj/vending_vr.dmi | Bin 67287 -> 67288 bytes vorestation.dme | 6 +- 21 files changed, 1368 insertions(+), 7 deletions(-) create mode 100644 code/__defines/nifsoft.dm create mode 100644 code/modules/nifsoft/nif.dm create mode 100644 code/modules/nifsoft/nif_softshop.dm create mode 100644 code/modules/nifsoft/nif_statpanel.dm create mode 100644 code/modules/nifsoft/nifsoft.dm create mode 100644 code/modules/nifsoft/software/01_vision.dm create mode 100644 code/modules/nifsoft/software/05_health.dm create mode 100644 code/modules/nifsoft/software/10_combat.dm create mode 100644 code/modules/nifsoft/software/15_misc.dm diff --git a/code/ZAS/Phoron.dm b/code/ZAS/Phoron.dm index acee6a8b65..1f7ed8c04a 100644 --- a/code/ZAS/Phoron.dm +++ b/code/ZAS/Phoron.dm @@ -117,6 +117,10 @@ obj/var/phoronproof = 0 if(burn_eyes && head && (head.body_parts_covered & EYES) && (head.item_flags & AIRTIGHT)) burn_eyes = 0 + //VOREStation Edit - NIF Support + if(nif && nif.flag_check(NIF_V_UVFILTER,NIF_FLAGS_VISION)) + burn_eyes = 0 + //If we still need to, burn their eyes if(burn_eyes) burn_eyes() diff --git a/code/__defines/nifsoft.dm b/code/__defines/nifsoft.dm new file mode 100644 index 0000000000..e4d4f12293 --- /dev/null +++ b/code/__defines/nifsoft.dm @@ -0,0 +1,103 @@ +// List indexes for software datum references on mobs +// This also controls the order they are displayed in the NIF stat panel +//AR Overlays +#define NIF_CIVILIAN_AR 1 +#define NIF_MEDICAL_AR 2 +#define NIF_SECURITY_AR 3 +#define NIF_ENGINE_AR 4 +#define NIF_SCIENCE_AR 5 +#define NIF_OMNI_AR 6 +//Misc Vision +#define NIF_CORRECTIVE_GLASS 7 +#define NIF_MESONS 8 +#define NIF_MATERIAL 9 +#define NIF_THERMALS 10 +#define NIF_NIGHTVIS 11 +#define NIF_UVFILTER 12 +#define NIF_FLASHPROT 13 +//Health-related +#define NIF_ORGANIC_HEAL 14 +#define NIF_SYNTH_HEAL 15 +#define NIF_AUTOSTASIS 16 //These two are just part of +#define NIF_MED_ALARM 17 //medichines right now +#define NIF_TOXHEAL 18 +#define NIF_SPAREBREATH 19 +//Combat Related +#define NIF_BRUTEARMOR 20 +#define NIF_BURNARMOR 21 +#define NIF_PAINKILLERS 22 +#define NIF_HARDCLAWS 23 +#define NIF_HIDDENLASER 24 +//Other +#define NIF_COMMLINK 25 +#define NIF_SUITSENSORS 26 +#define NIF_APCCHARGE 27 +#define NIF_PRESSURE 28 +#define NIF_HEATSINK 29 + +// Must be equal to the highest number above +#define TOTAL_NIF_SOFTWARE 29 + +////////////////////// +// NIF flag list hints +#define NIF_FLAGS_VISION 1 +#define NIF_FLAGS_HEALTH 2 +#define NIF_FLAGS_COMBAT 3 +#define NIF_FLAGS_OTHER 4 + +// NIF flags +//Vision +#define NIF_V_AR_CIVILIAN 0x1 +#define NIF_V_AR_MEDICAL 0x2 +#define NIF_V_AR_SECURITY 0x4 +#define NIF_V_AR_ENGINE 0x8 +#define NIF_V_AR_SCIENCE 0x10 +#define NIF_V_AR_OMNI 0x20 +#define NIF_V_CORRECTIVE 0x40 +#define NIF_V_MESONS 0x80 +#define NIF_V_MATERIAL 0x100 +#define NIF_V_THERMALS 0x200 +#define NIF_V_NIGHTVIS 0x400 +#define NIF_V_UVFILTER 0x800 +#define NIF_V_FLASHPROT 0x1000 + +//Health +#define NIF_H_ORGREPAIR 0x1 +#define NIF_H_SYNTHREPAIR 0x2 +#define NIF_H_AUTOSTASIS 0x4 //These two are just part of +#define NIF_H_ALERTMED 0x8 //medichines right now +#define NIF_H_TOXREGEN 0x10 +#define NIF_H_SPAREBREATH 0x20 + +//Combat +#define NIF_C_BRUTEARMOR 0x1 +#define NIF_C_BURNARMOR 0x2 +#define NIF_C_PAINKILLERS 0x4 +#define NIF_C_HARDCLAWS 0x8 +#define NIF_C_HIDELASER 0x10 + +//Other +#define NIF_O_COMMLINK 0x1 +#define NIF_O_SENSORS 0x2 +#define NIF_O_APCCHARGE 0x4 +#define NIF_O_PRESSURESEAL 0x8 +#define NIF_O_HEATSINKS 0x10 + +/////////////////// +// applies_to flags +#define NIF_ORGANIC 0x1 +#define NIF_SYNTHETIC 0x2 + +///////////// +// stat flags +#define NIF_WORKING 0 +#define NIF_POWFAIL 1 +#define NIF_TEMPFAIL 2 +#define NIF_INSTALLING 3 +#define NIF_PREINSTALL 4 + +/////////////////// +// tick_flags flags +#define NIF_NEVERTICK 0 +#define NIF_ALWAYSTICK 1 +#define NIF_ACTIVETICK 2 diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index 632f9afdfd..758678bed9 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -81,7 +81,15 @@ playsound(src.loc, 'sound/weapons/flash.ogg', 100, 1) var/flashfail = 0 - if(iscarbon(M)) + //VOREStation Add - NIF + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.nif && H.nif.flag_check(NIF_V_FLASHPROT,NIF_FLAGS_VISION)) + flashfail = 1 + H.nif.notify("High intensity light detected, and blocked!",TRUE) + //VOREStation Add End + + if(iscarbon(M) && !flashfail) //VOREStation Add - NIF var/mob/living/carbon/C = M if(C.stat != DEAD) var/safety = C.eyecheck() diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 8c4067187f..555488cd89 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -376,6 +376,7 @@ var/obj/item/organ/internal/eyes/E = H.internal_organs_by_name[O_EYES] if(!E) return + if(H.nif && H.nif.flag_check(NIF_V_UVFILTER,NIF_FLAGS_VISION)) return //VOREStation Add - NIF switch(safety) if(1) usr << "Your eyes sting a little." diff --git a/code/modules/mob/living/carbon/breathe.dm b/code/modules/mob/living/carbon/breathe.dm index 354a26221c..403088dc4b 100644 --- a/code/modules/mob/living/carbon/breathe.dm +++ b/code/modules/mob/living/carbon/breathe.dm @@ -22,6 +22,13 @@ else //Okay, we can breathe, now check if we can get air breath = get_breath_from_internal() //First, check for air from internals + //VOREStation Add - Respirocytes as a NIF implant + if(ishuman(src)) + var/mob/living/carbon/human/H = src + if(H.nif && H.nif.flag_check(NIF_H_SPAREBREATH,NIF_FLAGS_HEALTH)) + var/datum/nifsoft/spare_breath/SB = H.nif.imp_check(NIF_SPAREBREATH) + breath = SB.resp_breath() + //VOREStation Add End if(!breath) breath = get_breath_from_environment() //No breath from internals so let's try to get air from our location if(!breath) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 47da8c88f8..47e12f3f6d 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -254,6 +254,7 @@ src.sleeping = max(0,src.sleeping-5) if(src.sleeping == 0) src.resting = 0 + if(H) H.in_stasis = 0 //VOREStation Add - Just In Case M.visible_message("[M] shakes [src] trying to wake [t_him] up!", \ "You shake [src] trying to wake [t_him] up!") else diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm index 4fa6ae1117..4331b05407 100644 --- a/code/modules/mob/living/carbon/human/human_organs.dm +++ b/code/modules/mob/living/carbon/human/human_organs.dm @@ -32,7 +32,7 @@ if(force_process) bad_external_organs.Cut() for(var/obj/item/organ/external/Ex in organs) - bad_external_organs |= Ex + bad_external_organs += Ex //VOREStation Edit - Silly and slow to |= this //processing internal organs is pretty cheap, do that first. for(var/obj/item/organ/I in internal_organs) @@ -44,6 +44,7 @@ if(!force_process && !bad_external_organs.len) return + number_wounds = 0 //VOREStation Add - You have to reduce this at some point... for(var/obj/item/organ/external/E in bad_external_organs) if(!E) continue diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 753cf3255e..75d598fb69 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1267,7 +1267,7 @@ var/obj/item/clothing/glasses/G = glasses if(!G.prescription) set_fullscreen(disabilities & NEARSIGHTED, "impaired", /obj/screen/fullscreen/impaired, 1) - else + else if (!nif || !nif.flag_check(NIF_V_CORRECTIVE,NIF_FLAGS_VISION)) //VOREStation Edit - NIF set_fullscreen(disabilities & NEARSIGHTED, "impaired", /obj/screen/fullscreen/impaired, 1) set_fullscreen(eye_blurry, "blurry", /obj/screen/fullscreen/blurry) @@ -1282,6 +1282,7 @@ var/obj/item/clothing/glasses/welding/O = glasses if(!O.up) found_welder = 1 + if(!found_welder && nif && nif.flag_check(NIF_V_UVFILTER,NIF_FLAGS_VISION)) found_welder = 1 //VOREStation Add - NIF if(!found_welder && istype(head, /obj/item/clothing/head/welding)) var/obj/item/clothing/head/welding/O = head if(!O.up) diff --git a/code/modules/mob/living/carbon/human/life_vr.dm b/code/modules/mob/living/carbon/human/life_vr.dm index a04232c401..0a3d2fcb3f 100644 --- a/code/modules/mob/living/carbon/human/life_vr.dm +++ b/code/modules/mob/living/carbon/human/life_vr.dm @@ -44,8 +44,9 @@ else vantag.icon_state = "hudblank" +//Our call for the NIF to do whatever /mob/living/carbon/human/proc/handle_nif() if(!nif) return //Process regular life stuff - nif.life() \ No newline at end of file + nif.life() diff --git a/code/modules/nifsoft/nif.dm b/code/modules/nifsoft/nif.dm new file mode 100644 index 0000000000..b4ef9eafd7 --- /dev/null +++ b/code/modules/nifsoft/nif.dm @@ -0,0 +1,481 @@ +//Holder on humans to prevent having to 'find' it every time +/mob/living/carbon/human/var/obj/item/device/nif/nif + +//Nanotech Implant Foundation +/obj/item/device/nif + name = "nanotech implant foundation" + desc = "A somewhat degraded copy of a Kitsuhana working surface, in a box. Can print new \ + implants inside living hosts on the fly based on software uploads. Must be surgically \ + implanted in the head to work. May eventually wear out and break." + + icon = 'icons/obj/device_alt.dmi' + icon_state = "nif_0" + + w_class = ITEMSIZE_TINY + + var/durability = 100 // Durability remaining + var/burn_factor = 100 // Divisor for power charge from nutrition (efficiency basically) + + var/tmp/power_usage = 0 // Nifsoft adds to this + var/tmp/mob/living/carbon/human/human // Our owner! + var/tmp/list/nifsofts[TOTAL_NIF_SOFTWARE] // All our nifsofts + var/tmp/list/nifsofts_life = list() // Ones that want to be talked to on life() + var/owner // Owner character name + + var/tmp/vision_flags = 0 // Flags implants set for faster lookups + var/tmp/health_flags = 0 + var/tmp/combat_flags = 0 + var/tmp/other_flags = 0 + + var/tmp/stat = NIF_PREINSTALL // Status of the NIF + var/tmp/install_done // Time when install will finish + var/tmp/open = FALSE // If it's open for maintenance (1-3) + + var/obj/item/clothing/glasses/hud/nif_hud/nif_hud + + var/global/icon/big_icon + var/global/click_sound = 'sound/effects/pop.ogg' + +//Constructor comes with a free AR HUD +/obj/item/device/nif/New(var/newloc,var/wear) + ..(newloc) + new /datum/nifsoft/ar_civ(src) + nif_hud = new(src) + + if(!big_icon) + big_icon = new(icon,icon_state = "nif_full") + + //Probably loading from a save + if(ishuman(newloc)) + var/mob/living/carbon/human/H = newloc + implant(H) + owner = H.mind.name + name = initial(name) + " ([owner])" + stat = NIF_WORKING + + if(wear) + durability = wear + + update_icon() + +//Destructor cleans up references +/obj/item/device/nif/Destroy() + if(human) + human.nif = null + human = null + for(var/S in nifsofts) + if(S) + qdel(S) + nifsofts.Cut() + ..() + +//Being implanted in some mob +/obj/item/device/nif/proc/implant(var/mob/living/carbon/human/H) + if(istype(H) && !H.nif && H.species && !(H.species.flags & NO_SCAN) && (loc == H.get_organ(BP_HEAD))) //NO_SCAN is the default 'too complicated' flag. + human = H + human.nif = src + stat = NIF_INSTALLING + return TRUE + + return FALSE + +//For debug or antag purposes +/obj/item/device/nif/proc/quick_implant(var/mob/living/carbon/human/H) + if(istype(H)) + var/obj/item/organ/external/head = H.get_organ(BP_HEAD) + if(!head) + return FALSE + src.forceMove(head) + head.implants += src + owner = H.real_name + return implant(H) + + return FALSE + +//Being implanted in some mob +/obj/item/device/nif/proc/unimplant(var/mob/living/carbon/human/H) + human = null + stat = NIF_PREINSTALL + install_done = null + if(istype(H)) + H.nif = null + update_icon() + +//EMP adds wear and disables all nifsoft +/obj/item/device/nif/emp_act(var/severity) + notify("Danger! Significant electromagnetic interference!",TRUE) + for(var/nifsoft in nifsofts) + if(nifsoft) + var/datum/nifsoft/NS = nifsoft + NS.deactivate() + + switch (severity) + if (1) + wear(rand(30,40)) + if (2) + wear(rand(15,25)) + if (3) + wear(rand(8,15)) + if (4) + wear(rand(1,8)) + +//Wear update/check proc +/obj/item/device/nif/proc/wear(var/wear = 0) + if(wear) + durability -= wear * rand(0.85,1.15) // Also +/- 15% + + if(durability <= 0) + stat = NIF_TEMPFAIL + update_icon() + notify("Danger! General system insta#^!($",TRUE) + to_chat(human,"Your NIF vision overlays disappear and your head suddenly seems very quiet...") + +//Attackby proc, for maintenance +/obj/item/device/nif/attackby(obj/item/weapon/W, mob/user as mob) + if(open == 0 && istype(W,/obj/item/weapon/screwdriver)) + if(do_after(user, 4 SECONDS, src) && open == 0) + user.visible_message("[user] unscrews and pries open \the [src].","You unscrew and pry open \the [src].") + playsound(user, 'sound/items/Screwdriver.ogg', 50, 1) + open = 1 + update_icon() + else if(open == 1 && istype(W,/obj/item/stack/cable_coil)) + var/obj/item/stack/cable_coil/C = W + if(C.get_amount() < 3) + to_chat(user,"You need at least three coils of wire to add them to \the [src].") + return + if(do_after(user, 6 SECONDS, src) && open == 1 && C.use(3)) + user.visible_message("[user] replaces some wiring in \the [src].","You replace any burned out wiring in \the [src].") + playsound(user, 'sound/items/Deconstruct.ogg', 50, 1) + open = 2 + update_icon() + else if(open == 2 && istype(W,/obj/item/device/multitool)) + if(do_after(user, 8 SECONDS, src) && open == 2) + user.visible_message("[user] resets several circuits in \the [src].","You find and repair any faulty circuits in \the [src].") + open = 3 + update_icon() + else if(open == 3 && istype(W,/obj/item/weapon/screwdriver)) + if(do_after(user, 3 SECONDS, src) && open == 3) + user.visible_message("[user] closes up \the [src].","You re-seal \the [src] for use once more.") + playsound(user, 'sound/items/Screwdriver.ogg', 50, 1) + open = FALSE + durability = initial(durability) + stat = NIF_PREINSTALL + update_icon() + +//Wear update/check proc +/obj/item/device/nif/update_icon() + if(open) + icon_state = "nif_open[open]" + else + switch(stat) + if(NIF_PREINSTALL) + icon_state = "nif_1" + if(NIF_INSTALLING) + icon_state = "nif_0" + if(NIF_WORKING) + icon_state = "nif_0" + if(NIF_TEMPFAIL) + icon_state = "nif_2" + else + icon_state = "nif_2" + +//The (dramatic) install process +/obj/item/device/nif/proc/handle_install() + if(human.stat) //No stuff while KO. Sleeping it off is viable, and doesn't start until you wake up from surgery + return FALSE + + //Firsties + if(!install_done) + if(human.real_name == owner) + install_done = world.time + 1 MINUTE + notify("Welcome back, [owner]! Performing quick-calibration...") + else + install_done = world.time + 30 MINUTES + notify("Adapting to new user...") + sleep(5 SECONDS) + notify("Adjoining optic [human.isSynthetic() ? "interface" : "nerve"], please be patient.",TRUE) + + var/percent_done = (world.time - (install_done - (30 MINUTES))) / (30 MINUTES) + + human.client.screen.Add(global_hud.whitense) + + switch(percent_done) //This is 0.0 to 1.0 kinda percent. + //Connecting to optical nerves + if(0.0 to 0.1) + human.eye_blind = 5 + + //Mapping brain + if(0.2 to 0.9) + if(prob(99)) return TRUE + var/incident = rand(1,3) + switch(incident) + if(1) + var/message = pick(list( + "Your head throbs around your new implant.", + "The skin around your recent surgery itches.", + "A wave of nausea overtakes you as the world seems to spin.", + "The floor suddenly seems to come up at you.", + "There's a throbbing lump of ice behind your eyes.", + "A wave of pain shoots down your neck." + )) + to_chat(human,"[message]") + if(2) + human.Weaken(5) + to_chat(human,"A wave of weakness rolls over you.") + if(3) + human.Sleeping(5) + to_chat(human,"You suddenly black out!") + + //Finishing up + if(1.0 to INFINITY) + stat = NIF_WORKING + owner = human.real_name + name = initial(name) + " ([owner])" + notify("Calibration complete! User data stored!") + +//Called each life() tick on the mob +/obj/item/device/nif/proc/life() + if(!human || loc != human.get_organ(BP_HEAD)) + unimplant(human) + return FALSE + + switch(stat) + if(NIF_WORKING) + //Perform our passive drain + if(!use_charge(power_usage)) + stat = NIF_POWFAIL + notify("Insufficient energy!",TRUE) + return FALSE + + //HUD update! + nif_hud.process_hud(human,1) + + //Process all the ones that want that + for(var/S in nifsofts_life) + var/datum/nifsoft/nifsoft = S + nifsoft.life(human) + + if(NIF_POWFAIL) + if(human && human.nutrition < 100) + return FALSE + else + stat = NIF_WORKING + notify("System Reboot Complete.") + + if(NIF_TEMPFAIL) + //Something else has to take us out of tempfail + return FALSE + + if(NIF_INSTALLING) + handle_install() + return FALSE + +//Prints 'AR' messages to the user +/obj/item/device/nif/proc/notify(var/message,var/alert = 0) + if(!human) return + + to_chat(human,"\[\icon[src.big_icon]NIF\] displays, \"[message]\"") + +//Called to spend nutrition, returns 1 if it was able to +/obj/item/device/nif/proc/use_charge(var/use_charge) + //You don't want us to take any? Well okay. + if(!use_charge) + return TRUE + + //Not enough nutrition/charge left. + if(!human || human.nutrition < use_charge) + return FALSE + + //Was enough, reduce and return. + human.nutrition -= use_charge + return TRUE + +//Install a piece of software +/obj/item/device/nif/proc/install(var/datum/nifsoft/new_soft) + if(nifsofts[new_soft.list_pos]) + return FALSE + + if(human) + var/applies_to = new_soft.applies_to + var/synth = human.isSynthetic() + if(synth && !(applies_to & NIF_SYNTHETIC)) + notify("The software \"[new_soft]\" is not supported on your chassis type.",TRUE) + return FALSE + if(!synth && !(applies_to & NIF_ORGANIC)) + notify("The software \"[new_soft]\" is not supported in organic life.",TRUE) + return FALSE + + nifsofts[new_soft.list_pos] = new_soft + power_usage += new_soft.p_drain + + if(new_soft.tick_flags == NIF_ALWAYSTICK) + nifsofts_life += new_soft + + if(new_soft.vision_flags) + vision_flags |= new_soft.vision_flags + if(new_soft.health_flags) + health_flags |= new_soft.health_flags + if(new_soft.combat_flags) + combat_flags |= new_soft.combat_flags + if(new_soft.other_flags) + other_flags |= new_soft.other_flags + + wear(new_soft.wear) + return TRUE + +//Uninstall a piece of software +/obj/item/device/nif/proc/uninstall(var/datum/nifsoft/old_soft) + var/datum/nifsoft/NS = old_soft.list_pos + if(!NS || NS != old_soft) + return FALSE //what?? + + nifsofts[old_soft.list_pos] = null + power_usage -= old_soft.p_drain + + if(old_soft.tick_flags == NIF_ALWAYSTICK) + nifsofts_life -= old_soft + + if(old_soft.active) + power_usage -= old_soft.a_drain + if(old_soft.tick_flags == NIF_ACTIVETICK) + nifsofts_life -= old_soft + + if(old_soft.vision_flags) + vision_flags &= ~old_soft.vision_flags + if(old_soft.health_flags) + health_flags &= ~old_soft.health_flags + if(old_soft.combat_flags) + combat_flags &= ~old_soft.combat_flags + if(old_soft.other_flags) + other_flags &= ~old_soft.other_flags + + return TRUE + +//Activate a nifsoft +/obj/item/device/nif/proc/activate(var/datum/nifsoft/soft) + if(human) + var/applies_to = soft.applies_to + var/synth = human.isSynthetic() + if(synth && !(applies_to & NIF_SYNTHETIC)) + notify("The software \"[soft]\" is not supported on your chassis type and will be uninstalled.",TRUE) + uninstall(soft) + return FALSE + if(!synth && !(applies_to & NIF_ORGANIC)) + notify("The software \"[soft]\" is not supported in organic life and will be uninstalled.",TRUE) + uninstall(soft) + return FALSE + + if(!use_charge(soft.a_drain)) + return FALSE + + if(soft.tick_flags == NIF_ACTIVETICK) + nifsofts_life += soft + + power_usage += soft.a_drain + human << click_sound + + return TRUE + +//Deactivate a nifsoft +/obj/item/device/nif/proc/deactivate(var/datum/nifsoft/soft) + if(soft.tick_flags == NIF_ACTIVETICK) + nifsofts_life -= soft + + power_usage -= soft.a_drain + human << click_sound + + return TRUE + +//Deactivate several nifsofts +/obj/item/device/nif/proc/deactivate_these(var/list/turn_off) + for(var/N in turn_off) + var/datum/nifsoft/NS = nifsofts[N] + if(NS) + NS.deactivate() + +//Add a flag to one of the holders +/obj/item/device/nif/proc/set_flag(var/flag,var/hint) + ASSERT(flag && hint) + + switch(hint) + if(NIF_FLAGS_VISION) + vision_flags |= flag + if(NIF_FLAGS_HEALTH) + health_flags |= flag + if(NIF_FLAGS_COMBAT) + combat_flags |= flag + if(NIF_FLAGS_OTHER) + other_flags |= flag + else + CRASH("Not a valid NIF flag hint: [hint]") + +//Clear a flag from one of the holders +/obj/item/device/nif/proc/clear_flag(var/flag,var/hint) + ASSERT(flag && hint) + + switch(hint) + if(NIF_FLAGS_VISION) + vision_flags &= ~flag + if(NIF_FLAGS_HEALTH) + health_flags &= ~flag + if(NIF_FLAGS_COMBAT) + combat_flags &= ~flag + if(NIF_FLAGS_OTHER) + other_flags &= ~flag + else + CRASH("Not a valid NIF flag hint: [hint]") + +//Check for an installed implant +/obj/item/device/nif/proc/imp_check(var/soft) + if(!stat == NIF_WORKING) return FALSE + ASSERT(soft) + + if(ispath(soft)) + var/datum/nifsoft/path = soft + soft = initial(path.list_pos) + var/entry = nifsofts[soft] + if(entry) + return entry + +//Check for a set flag +/obj/item/device/nif/proc/flag_check(var/flag,var/hint) + if(!stat == NIF_WORKING) return FALSE + ASSERT(flag && hint) + + var/result = FALSE + switch(hint) + if(NIF_FLAGS_VISION) + if(flag & vision_flags) result = TRUE + if(NIF_FLAGS_HEALTH) + if(flag & health_flags) result = TRUE + if(NIF_FLAGS_COMBAT) + if(flag & combat_flags) result = TRUE + if(NIF_FLAGS_OTHER) + if(flag & other_flags) result = TRUE + else + CRASH("Not a valid NIF flag hint: [hint]") + + return result + +//NIF HUD object becasue HUD handling is trash and should be rewritten +/obj/item/clothing/glasses/hud/nif_hud/var/obj/item/device/nif/nif + +/obj/item/clothing/glasses/hud/nif_hud/New(var/newloc) + ..(newloc) + nif = newloc + +/obj/item/clothing/glasses/hud/nif_hud/process_hud(M,var/thing) + //Faster checking with local var, and this is called often so I want fast. + var/visflags = nif.vision_flags + if(NIF_V_AR_OMNI & visflags) + process_omni_hud(nif.human, "best") + else if(NIF_V_AR_SECURITY & visflags) + process_omni_hud(nif.human, "sec") + else if(NIF_V_AR_MEDICAL & visflags) + process_omni_hud(nif.human, "med") + else if(NIF_V_AR_ENGINE & visflags) + process_omni_hud(nif.human, "eng") + else if(NIF_V_AR_SCIENCE & visflags) + process_omni_hud(nif.human, "sci") + else if(NIF_V_AR_CIVILIAN & visflags) + process_omni_hud(nif.human, "civ") diff --git a/code/modules/nifsoft/nif_softshop.dm b/code/modules/nifsoft/nif_softshop.dm new file mode 100644 index 0000000000..3680b47786 --- /dev/null +++ b/code/modules/nifsoft/nif_softshop.dm @@ -0,0 +1,111 @@ +//Custom vendors +/obj/machinery/vending/nifsoft_shop + name = "NIFSoft Shop" + desc = "For all your mindware and mindware accessories." + product_ads = "Let us get into your head!;Looking for an upgrade?;Surpass Humanity!;Why be normal when you can be SUPERnormal?;Jack in with NIFSoft!" + icon_state = "nifsoft" + icon_vend = "nifsoft-purchase" + icon_deny = "nifsoft-problem" + products = list() + contraband = list() + premium = list() + var/global/list/starting_legal_nifsoft + var/global/list/starting_illegal_nifsoft + +// Special Treatment! +/obj/machinery/vending/nifsoft_shop/build_inventory() + //Firsties + if(!starting_legal_nifsoft) + starting_legal_nifsoft = list() + starting_illegal_nifsoft = list() + for(var/P in subtypesof(/datum/nifsoft) - /datum/nifsoft/package) + var/datum/nifsoft/NS = P + if(initial(NS.initial)) + switch(initial(NS.illegal)) + if(TRUE) + starting_illegal_nifsoft += NS + if(FALSE) + starting_legal_nifsoft += NS + + products = starting_legal_nifsoft.Copy() + contraband = starting_illegal_nifsoft.Copy() + + var/list/all_products = list( + list(products, CAT_NORMAL), + list(contraband, CAT_HIDDEN), + list(premium, CAT_COIN)) + + for(var/current_list in all_products) + var/category = current_list[2] + + for(var/entry in current_list[1]) + var/datum/nifsoft/NS = entry + var/name = initial(NS.name) + var/datum/stored_item/vending_product/product = new/datum/stored_item/vending_product(src, entry, name) + + product.price = initial(NS.cost) + product.amount = 10 + product.category = category + + product_records.Add(product) + +/obj/machinery/vending/nifsoft_shop/allowed(mob/user) + if(!ishuman(user)) + return FALSE + + var/mob/living/carbon/human/H = user + if(!H.nif || !H.nif.stat == NIF_WORKING) + to_chat(H,"[src] seems unable to connect to your NIF...") + flick(icon_deny,src) + return FALSE + + return ..() + +// Also special treatment! +/obj/machinery/vending/nifsoft_shop/vend(datum/stored_item/vending_product/R, mob/user) + var/mob/living/carbon/human/H = user + if((!allowed(usr)) && !emagged && scan_id && istype(H)) //For SECURE VENDING MACHINES YEAH + usr << "Purchase not allowed." //Unless emagged of course + flick(icon_deny,src) + return + vend_ready = 0 //One thing at a time!! + status_message = "Installing..." + status_error = 0 + nanomanager.update_uis(src) + + if(R.category & CAT_COIN) + if(!coin) + user << "You need to insert a coin to get this item." + return + if(coin.string_attached) + if(prob(50)) + user << "You successfully pull the coin out before \the [src] could swallow it." + else + user << "You weren't able to pull the coin out fast enough, the machine ate it, string and all." + qdel(coin) + coin = null + categories &= ~CAT_COIN + else + qdel(coin) + coin = null + categories &= ~CAT_COIN + + if(((last_reply + (vend_delay + 200)) <= world.time) && vend_reply) + spawn(0) + speak(vend_reply) + last_reply = world.time + + use_power(vend_power_usage) //actuators and stuff + spawn(vend_delay) + R.amount-- + new R.item_path(H.nif) + flick(icon_vend,src) + if(has_logs) + do_logging(R, user, 1) + + status_message = "" + status_error = 0 + vend_ready = 1 + currently_vending = null + nanomanager.update_uis(src) + return 1 diff --git a/code/modules/nifsoft/nif_statpanel.dm b/code/modules/nifsoft/nif_statpanel.dm new file mode 100644 index 0000000000..990bf43565 --- /dev/null +++ b/code/modules/nifsoft/nif_statpanel.dm @@ -0,0 +1,77 @@ +/mob/living/carbon/human/Stat() + . = ..() + if(nif && statpanel("NIF")) + SetupNifStat() + +/mob/living/carbon/human/proc/SetupNifStat() + var/nif_status + switch(nif.stat) + if(NIF_WORKING) + nif_status = "Operating Normally" + if(NIF_POWFAIL) + nif_status = "Insufficient Energy!" + if(NIF_TEMPFAIL) + nif_status = "Needs Maintenance!" + if(NIF_INSTALLING) + nif_status = "Adapting To User" + else + nif_status = "Unknown - Error" + stat("NIF Status", nif_status) + + if(!nif.stat) + stat("- Modules -", "LMB: Toggle, Shift+LMB: Info/Uninstall") + for(var/nifsoft in nif.nifsofts) + if(!nifsoft) continue + var/datum/nifsoft/NS = nifsoft + var/obj/effect/nif_stat/stat_line = NS.stat_line + stat("[stat_line.nifsoft_name]",stat_line.atom_button_text()) + +/////////////////// +// Stat Line Object +/obj/effect/nif_stat + name = "" + var/nifsoft_name //Prevents deeper lookups, and the name won't change + var/datum/nifsoft/nifsoft //Reference to our nifsoft + var/toggleable = FALSE //Won't change, prevents looking it up deeper + +/obj/effect/nif_stat/New(var/datum/nifsoft/new_soft) + ..() + nifsoft = new_soft + nifsoft_name = new_soft.name + name = new_soft.name + toggleable = new_soft.activates + +/obj/effect/nif_stat/Destroy() + nifsoft = null + ..() + +/obj/effect/nif_stat/proc/atom_button_text() + if(!toggleable) + name = "Always On" + else + name = "[nifsoft.active ? "Active" : "Disabled"]" + return src + +/obj/effect/nif_stat/Click(var/location, var/control, var/params) + if(usr != nifsoft.nif.human) return + + var/list/clickprops = params2list(params) + var/opts = clickprops["shift"] + + if(opts) + var/choice = alert("Select an option","[nifsoft_name]","Display Info","Cancel","Uninstall") + switch(choice) + if("Display Info") + nifsoft.nif.notify("[nifsoft_name]: [nifsoft.desc] - It consumes [nifsoft.p_drain] energy units \ + while installed, and [nifsoft.a_drain] additionally while active. It is [nifsoft.illegal ? "NOT " : ""]\ + a legal software package. The MSRP of the package is [nifsoft.cost] Thalers. The difficulty to construct \ + the associated implant is Rating [nifsoft.wear].") + if("Uninstall") + var/confirm = alert("Really uninstall [nifsoft_name]?","Are you sure?","Cancel","Uninstall","Cancel") + if(confirm == "Uninstall") + nifsoft.uninstall() + else if(nifsoft.activates) + if(nifsoft.active) + nifsoft.deactivate() + else + nifsoft.activate() diff --git a/code/modules/nifsoft/nifsoft.dm b/code/modules/nifsoft/nifsoft.dm new file mode 100644 index 0000000000..453e00d79b --- /dev/null +++ b/code/modules/nifsoft/nifsoft.dm @@ -0,0 +1,110 @@ +//A single piece of NIF software +/datum/nifsoft + var/name = "Prototype" + var/desc = "Contact a dev!" + + var/obj/item/device/nif/nif //The NIF that the software is stored in + + var/list_pos // List position in the nifsoft list + + var/cost = 1000 // Cost in cash of buying this software from a terminal + //TODO - While coding + var/initial = TRUE // This is available in NIFSoft Shops at the start of the game + var/wear = 1 // The wear (+/- 10% when applied) that this causes to the NIF + var/list/req_one_access // What access they need to buy it + var/illegal = FALSE // If this is a black-market nifsoft (emag option) + + var/active = FALSE // Whether the active mode of this implant is on + var/p_drain = 0 // Passive power drain, can be used in various ways from the software + var/a_drain = 0 // Active power drain, same purpose as above, software can treat however + var/activates = TRUE // Whether or not this has an active power consumption mode + var/tick_flags = 0 // Flags to tell when we'd like to be ticked + + var/empable = TRUE // If the implant can be destroyed via EMP attack + + var/expiring = FALSE // Trial software! Or self-deleting illegal ones! + var/expires_at // World.time for when they expire + + var/applies_to = (NIF_ORGANIC|NIF_SYNTHETIC) // Who this software is useful for + + var/vision_flags = 0 // Various flags for fast lookups that are settable on the NIF + var/health_flags = 0 // These are added as soon as the implant is installed + var/combat_flags = 0 // Otherwise use set_flag on the nif in your activate/deactivate + var/other_flags = 0 + + var/obj/effect/nif_stat/stat_line + + +//Constructor accepts the NIF it's being loaded into +/datum/nifsoft/New(var/obj/item/device/nif/nif_load) + ASSERT(nif_load) + + nif = nif_load + stat_line = new(src) + if(!install(nif)) + qdel(src) + +//Destructor cleans up the software and nif reference +/datum/nifsoft/Destroy() + if(nif) + uninstall(nif) + nif = null + qdel(stat_line) + stat_line = null + ..() + +//Called when the software is installed in the NIF +/datum/nifsoft/proc/install() + return nif.install(src) + +//Called when the software is removed from the NIF +/datum/nifsoft/proc/uninstall() + if(active) + deactivate() + if(nif) + . = nif.uninstall(src) + qdel(src) + +//Called every life() tick on a mob on active implants +/datum/nifsoft/proc/life(var/mob/living/carbon/human/human) + return TRUE + +//Called when attempting to activate an implant (could be a 'pulse' activation or toggling it on) +/datum/nifsoft/proc/activate() + var/nif_result = nif.activate(src) + if(nif_result) + active = TRUE + return nif_result + +//Called when attempting to deactivate an implant +/datum/nifsoft/proc/deactivate() + var/nif_result = nif.deactivate(src) + if(nif_result) + active = FALSE + return nif_result + +//Called when an implant expires +/datum/nifsoft/proc/expire() + uninstall() + return + +////////////////////// +//A package of NIF software +/datum/nifsoft/package + var/list/software = list() + wear = 0 //Packages don't cause wear themselves, the software does + +//Constructor accepts a NIF and loads all the software +/datum/nifsoft/package/New(var/obj/item/device/nif/nif_load) + ASSERT(nif_load) + + for(var/P in software) + new P(nif_load) + + qdel(src) + +//Clean self up +/datum/nifsoft/package/Destroy() + software.Cut() + software = null + ..() diff --git a/code/modules/nifsoft/software/01_vision.dm b/code/modules/nifsoft/software/01_vision.dm new file mode 100644 index 0000000000..15f253d9b2 --- /dev/null +++ b/code/modules/nifsoft/software/01_vision.dm @@ -0,0 +1,253 @@ +////////////////// +// AR HUD Overlays +/datum/nifsoft/ar_civ + name = "AR Overlay (Civ)" + desc = "Provides a general identification and health status overlay on your vision with no frills." + list_pos = NIF_CIVILIAN_AR + cost = 500 + initial = TRUE + a_drain = 0.05 + + activate() + if(..()) + nif.deactivate_these(NIF_MEDICAL_AR,NIF_SECURITY_AR,NIF_ENGINE_AR,NIF_SCIENCE_AR,NIF_OMNI_AR) + nif.set_flag(NIF_V_AR_CIVILIAN,NIF_FLAGS_VISION) + + deactivate() + if(..()) + nif.clear_flag(NIF_V_AR_CIVILIAN,NIF_FLAGS_VISION) + +/datum/nifsoft/ar_med + name = "AR Overlay (Med)" + desc = "Like the civilian model, but provides medical records access and virus database lookup." + list_pos = NIF_MEDICAL_AR + cost = 750 + initial = TRUE + req_one_access = list(access_medical) + a_drain = 0.05 + + activate() + if(..()) + nif.deactivate_these(NIF_CIVILIAN_AR,NIF_SECURITY_AR,NIF_ENGINE_AR,NIF_SCIENCE_AR,NIF_OMNI_AR) + nif.set_flag(NIF_V_AR_MEDICAL,NIF_FLAGS_VISION) + + deactivate() + if(..()) + nif.clear_flag(NIF_V_AR_MEDICAL,NIF_FLAGS_VISION) + +/datum/nifsoft/ar_sec + name = "AR Overlay (Sec)" + desc = "Like the civilian model, but provides access to arrest status and security records." + list_pos = NIF_SECURITY_AR + cost = 750 + initial = TRUE + req_one_access = list(access_security) + a_drain = 0.05 + + activate() + if(..()) + nif.deactivate_these(NIF_CIVILIAN_AR,NIF_MEDICAL_AR,NIF_ENGINE_AR,NIF_SCIENCE_AR,NIF_OMNI_AR) + nif.set_flag(NIF_V_AR_SECURITY,NIF_FLAGS_VISION) + + deactivate() + if(..()) + nif.clear_flag(NIF_V_AR_SECURITY,NIF_FLAGS_VISION) + +/datum/nifsoft/ar_eng + name = "AR Overlay (Eng)" + desc = "Like the civilian model, but provides station alert notices." + list_pos = NIF_ENGINE_AR + cost = 750 + initial = TRUE + req_one_access = list(access_engine) + a_drain = 0.05 + + activate() + if(..()) + nif.deactivate_these(NIF_CIVILIAN_AR,NIF_MEDICAL_AR,NIF_SECURITY_AR,NIF_SCIENCE_AR,NIF_OMNI_AR) + nif.set_flag(NIF_V_AR_ENGINE,NIF_FLAGS_VISION) + + deactivate() + if(..()) + nif.clear_flag(NIF_V_AR_ENGINE,NIF_FLAGS_VISION) + +/datum/nifsoft/ar_science + name = "AR Overlay (Sci)" + desc = "Like the civilian model, but provides ... well, nothing. For now." + list_pos = NIF_SCIENCE_AR + cost = 750 + initial = TRUE + req_one_access = list(access_research) + a_drain = 0.05 + + activate() + if(..()) + nif.deactivate_these(NIF_CIVILIAN_AR,NIF_MEDICAL_AR,NIF_SECURITY_AR,NIF_ENGINE_AR,NIF_OMNI_AR) + nif.set_flag(NIF_V_AR_SCIENCE,NIF_FLAGS_VISION) + + deactivate() + if(..()) + nif.clear_flag(NIF_V_AR_SCIENCE,NIF_FLAGS_VISION) + +/datum/nifsoft/ar_omni + name = "AR Overlay (Omni)" + desc = "Like the civilian model, but provides most of the features of the medical and security overlays as well." + list_pos = NIF_OMNI_AR + cost = 750 + initial = TRUE + req_one_access = list(access_captain) + a_drain = 0.05 + + activate() + if(..()) + nif.deactivate_these(NIF_CIVILIAN_AR,NIF_MEDICAL_AR,NIF_SECURITY_AR,NIF_ENGINE_AR,NIF_SCIENCE_AR) + nif.set_flag(NIF_V_AR_OMNI,NIF_FLAGS_VISION) + + deactivate() + if(..()) + nif.clear_flag(NIF_V_AR_OMNI,NIF_FLAGS_VISION) + +////////////// +// Misc Vision +/datum/nifsoft/corrective + name = "Corrective AR" + desc = "Subtly alters perception to compensate for cataracts and retinal misalignment, among other common disabilities." + list_pos = NIF_CORRECTIVE_GLASS + cost = 200 + a_drain = 0.025 + + activate() + if(..()) + nif.set_flag(NIF_V_CORRECTIVE,NIF_FLAGS_VISION) + + deactivate() + if(..()) + nif.clear_flag(NIF_V_CORRECTIVE,NIF_FLAGS_VISION) + +/datum/nifsoft/uvblocker + name = "Nictating Membrane" + desc = "A synthetic nictating membrane (aka 'third eyelid') that protects the eyes from UV or hostile atmospheres. Does not protect from photonic stun weapons." + list_pos = NIF_UVFILTER + cost = 450 + a_drain = 0.2 + + activate() + if(..()) + nif.set_flag(NIF_V_UVFILTER,NIF_FLAGS_VISION) + + deactivate() + if(..()) + nif.clear_flag(NIF_V_UVFILTER,NIF_FLAGS_VISION) + +/datum/nifsoft/flashprot + name = "Responsive Filter" + desc = "Enables a high-speed shielding response to intense light, such as flashes, to block them." + list_pos = NIF_FLASHPROT + cost = 600 + req_one_access = list(access_security) + a_drain = 0.05 + + activate() + if(..()) + nif.set_flag(NIF_V_FLASHPROT,NIF_FLAGS_VISION) + + deactivate() + if(..()) + nif.clear_flag(NIF_V_FLASHPROT,NIF_FLAGS_VISION) + +//////////////// +// Goggle-alikes +/datum/nifsoft/mesons + name = "Meson Scanner" + desc = "Similar to the worn Optical Meson Scanner Goggles, these allow you to see the base structure and terrain through walls." + list_pos = NIF_MESONS + cost = 1000 + a_drain = 0.1 + tick_flags = NIF_ACTIVETICK + + activate() + if(..()) + nif.deactivate_these(NIF_MATERIAL,NIF_THERMALS,NIF_NIGHTVIS) + nif.set_flag(NIF_V_MESONS,NIF_FLAGS_VISION) + + deactivate() + if(..()) + nif.clear_flag(NIF_V_MESONS,NIF_FLAGS_VISION) + + life() + if(..()) + var/mob/living/carbon/human/H = nif.human + H.client.screen |= global_hud.meson + H.sight |= SEE_TURFS + +/datum/nifsoft/material + name = "Material Scanner" + desc = "Similar to the worn Optical Material Scanner Goggles, these allow you to see objects through walls." + list_pos = NIF_MATERIAL + cost = 1000 + a_drain = 0.1 + tick_flags = NIF_ACTIVETICK + + activate() + if(..()) + nif.deactivate_these(NIF_MESONS,NIF_THERMALS,NIF_NIGHTVIS) + nif.set_flag(NIF_V_MATERIAL,NIF_FLAGS_VISION) + + deactivate() + if(..()) + nif.clear_flag(NIF_V_MATERIAL,NIF_FLAGS_VISION) + + life() + if(..()) + nif.human.sight |= SEE_OBJS + +/datum/nifsoft/thermals + name = "Thermal Scanner" + desc = "Similar to the worn Thermal Goggles, these allow you to see heat-emitting creatures through walls." + list_pos = NIF_THERMALS + cost = 1000 + req_one_access = list(access_security) + a_drain = 0.1 + tick_flags = NIF_ACTIVETICK + + activate() + if(..()) + nif.deactivate_these(NIF_MESONS,NIF_MATERIAL,NIF_NIGHTVIS) + nif.set_flag(NIF_V_THERMALS,NIF_FLAGS_VISION) + + deactivate() + if(..()) + nif.clear_flag(NIF_V_THERMALS,NIF_FLAGS_VISION) + + life() + if(..()) + var/mob/living/carbon/human/H = nif.human + H.sight |= SEE_MOBS + H.client.screen |= global_hud.thermal + H.see_invisible = SEE_INVISIBLE_NOLIGHTING + +/datum/nifsoft/nightvis + name = "Low-Light Amp" + desc = "Similar to the worn Night Vision Goggles, these allow you to see in complete darkness." + list_pos = NIF_NIGHTVIS + cost = 1000 + req_one_access = list(access_security) + a_drain = 0.1 + tick_flags = NIF_ACTIVETICK + + activate() + if(..()) + nif.deactivate_these(NIF_MESONS,NIF_MATERIAL,NIF_THERMALS) + nif.set_flag(NIF_V_NIGHTVIS,NIF_FLAGS_VISION) + + deactivate() + if(..()) + nif.clear_flag(NIF_V_NIGHTVIS,NIF_FLAGS_VISION) + + life() + if(..()) + var/mob/living/carbon/human/H = nif.human + H.see_in_dark += 7 + H.client.screen |= global_hud.nvg + H.see_invisible = SEE_INVISIBLE_NOLIGHTING + diff --git a/code/modules/nifsoft/software/05_health.dm b/code/modules/nifsoft/software/05_health.dm new file mode 100644 index 0000000000..4bc83c407f --- /dev/null +++ b/code/modules/nifsoft/software/05_health.dm @@ -0,0 +1,184 @@ +/* +#define NIF_SPAREBREATH 17 +*/ + +/datum/nifsoft/medichines_org + name = "Medichines (Org)" + desc = "An internal swarm of nanites to make sure you stay in good shape and to promote healing, or to preserve you if you are critically injured." + list_pos = NIF_ORGANIC_HEAL + cost = 2500 + p_drain = 0.05 + a_drain = 0.1 //This is messed with manually below. + activates = FALSE //It is automatic in emergencies, not manually controllable. + tick_flags = NIF_ALWAYSTICK + applies_to = NIF_ORGANIC + var/mode = 0 + + //These self-activate on their own, these aren't user-settable to on/off. + activate() + if(..()) + nif.set_flag(NIF_H_ORGREPAIR,NIF_FLAGS_HEALTH) + mode = 1 + + deactivate() + if(..()) + nif.clear_flag(NIF_H_ORGREPAIR,NIF_FLAGS_HEALTH) + a_drain = initial(a_drain) + mode = initial(mode) + nif.human.in_stasis = 0 + + life() + if(..()) + var/mob/living/carbon/human/H = nif.human + var/HP_percent = H.health/H.getMaxHealth() + + //Mode changing state machine + if(HP_percent >= 0.9) + if(mode) + nif.notify("User Status: NORMAL. Medichines deactivating.") + deactivate() + return TRUE + else if(!mode && HP_percent < 0.8) + nif.notify("User Status: INJURED. Commencing medichine routines.",TRUE) + activate() + else if(mode == 1 && HP_percent < 0.2) + nif.notify("User Status: DANGER. Seek medical attention!",TRUE) + mode = 2 + else if(mode == 2 && HP_percent < -0.4) + nif.notify("User Status: CRITICAL. Notifying medical, and starting emergency stasis!",TRUE) + mode = 3 + if(!ishuman(H.loc)) //Not notified in case of vore, for gameplay purposes. + var/turf/T = get_turf(H) + var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset/heads/captain(null) + a.autosay("[H.real_name] has been put in emergency stasis, located at ([T.x],[T.y],[T.z])!", "[H.real_name]'s NIF", "Medical") + qdel(a) + + //Handle the actions in each mode + + //Injured but not critical + if(mode) + H.adjustToxLoss(-0.1 * mode) + H.adjustBruteLoss(-0.1 * mode) + H.adjustFireLoss(-0.1 * mode) + + if(mode >= 2) + nif.use_charge(a_drain) //A second drain if we're in level 2+ + + //Patient critical - emergency stasis + if(mode >= 3) + if(HP_percent <= 0) + H.in_stasis = 3 + if(HP_percent > 0.2) + H.in_stasis = 0 + nif.notify("Ending emergency stasis.",TRUE) + mode = 2 + + return TRUE + +/datum/nifsoft/medichines_syn + name = "Medichines (Syn)" + desc = "A swarm of mechanical repair nanites, able to repair relatively minor damage to synthetic bodies. Large repairs must still be performed manually." + list_pos = NIF_SYNTH_HEAL + cost = 2500 + p_drain = 0.05 + a_drain = 0.00 //This is manually drained below. + activates = FALSE //It is automatic in emergencies, not manually controllable. + tick_flags = NIF_ALWAYSTICK + applies_to = NIF_SYNTHETIC + var/mode = 0 + + //These self-activate on their own, these aren't user-settable to on/off. + activate() + if(..()) + nif.set_flag(NIF_H_SYNTHREPAIR,NIF_FLAGS_HEALTH) + mode = 1 + + deactivate() + if(..()) + nif.clear_flag(NIF_H_SYNTHREPAIR,NIF_FLAGS_HEALTH) + mode = 0 + + life() + if(..()) + //We're good! + if(!nif.human.bad_external_organs.len) + if(mode || active) + nif.notify("User Status: NORMAL. Medichines deactivating.") + deactivate() + return TRUE + + if(!mode && !active) + nif.notify("User Status: DAMAGED. Medichines performing minor repairs.",TRUE) + activate() + + for(var/eo in nif.human.bad_external_organs) + var/obj/item/organ/external/EO = eo + for(var/w in EO.wounds) + var/datum/wound/W = w + if(W.damage <= 5) + W.heal_damage(0.1) + EO.update_damages() + if(EO.update_icon()) + nif.human.UpdateDamageIcon(1) + nif.use_charge(0.1) + return TRUE //Return entirely, we only heal one at a time. + else if(mode == 1) + mode = 2 + nif.notify("Medichines unable to repair all damage. Perform manual repairs.",TRUE) + + return TRUE + +/datum/nifsoft/spare_breath + name = "Respirocytes" + desc = "Nanites simulating red blood cells will filter and recycle oxygen for a short time, preventing suffocation in hostile environments. NOTE: Only capable of supplying OXYGEN." + list_pos = NIF_SPAREBREATH + cost = 650 + p_drain = 0.05 + a_drain = 0.1 + tick_flags = NIF_ALWAYSTICK + applies_to = NIF_ORGANIC + var/filled = 100 //Tracks the internal tank 'refilling', which still uses power + + activate() + if(!(filled > 50)) + nif.notify("Respirocytes not saturated!",TRUE) + return FALSE + if(..()) + nif.set_flag(NIF_H_SPAREBREATH,NIF_FLAGS_HEALTH) + nif.notify("Now taking air from reserves.") + + deactivate() + if(..()) + nif.clear_flag(NIF_H_SPAREBREATH,NIF_FLAGS_HEALTH) + nif.notify("Now taking air from environment and refilling reserves.") + + life() + if(..()) + if(active) //Supplying air, not recharging it + switch(filled) //Text warnings + if(75) + nif.notify("Respirocytes at 75% saturation.",TRUE) + if(50) + nif.notify("Respirocytes at 50% saturation!",TRUE) + if(25) + nif.notify("Respirocytes at 25% saturation, seek a habitable environment!",TRUE) + if(5) + nif.notify("Respirocytes at 5% saturation! Failure imminent!",TRUE) + + if(filled == 0) //Ran out + deactivate() + else //Drain a little + filled-- + + else //Recharging air, not supplying it + if(filled == 100) + return TRUE + else if(nif.use_charge(0.1) && ++filled == 100) + nif.notify("Respirocytes now fully saturated.") + + proc/resp_breath() + if(!active) return null + var/datum/gas_mixture/breath = new() + breath.adjust_gas("oxygen", 300) + breath.temperature = T20C + return breath diff --git a/code/modules/nifsoft/software/10_combat.dm b/code/modules/nifsoft/software/10_combat.dm new file mode 100644 index 0000000000..64f3ae9a25 --- /dev/null +++ b/code/modules/nifsoft/software/10_combat.dm @@ -0,0 +1,7 @@ +/* +#define NIF_BRUTEARMOR 18 +#define NIF_BURNARMOR 19 +#define NIF_PAINKILLERS 20 +#define NIF_HARDCLAWS 21 +#define NIF_HIDDENLASER 22 +*/ \ No newline at end of file diff --git a/code/modules/nifsoft/software/15_misc.dm b/code/modules/nifsoft/software/15_misc.dm new file mode 100644 index 0000000000..a20e26c3a6 --- /dev/null +++ b/code/modules/nifsoft/software/15_misc.dm @@ -0,0 +1,9 @@ +/* +#define NIF_COMMLINK 23 +#define NIF_SUITSENSORS 24 +#define NIF_APCCHARGE 25 +#define NIF_PRESSURE 26 +#define NIF_HEATSINK 27 +#define NIF_UVFILTER 28 +#define NIF_FLASHPROT 29 +*/ \ No newline at end of file diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 583b56921d..63a1d2ff50 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -546,7 +546,7 @@ This function completely restores a damaged organ to perfect condition. /obj/item/organ/external/proc/need_process() if(status & (ORGAN_CUT_AWAY|ORGAN_BLEEDING|ORGAN_BROKEN|ORGAN_DESTROYED|ORGAN_DEAD|ORGAN_MUTATED)) return 1 - if((brute_dam || burn_dam) && (robotic < ORGAN_ROBOT)) //Robot limbs don't autoheal and thus don't need to process when damaged + if(brute_dam || burn_dam)//VOREStation Edit - But they do for medichines! ---&& (robotic < ORGAN_ROBOT)) //Robot limbs don't autoheal and thus don't need to process when damaged return 1 if(last_dam != brute_dam + burn_dam) // Process when we are fully healed up. last_dam = brute_dam + burn_dam diff --git a/icons/obj/device_alt.dmi b/icons/obj/device_alt.dmi index e434cfb7ac01894ee75a512cc54237a3467628b6..1a256c07b06305fe229aaedbd3d57976a32eac9f 100644 GIT binary patch delta 14085 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 sy5P zeA?}J=FEg`6rz{g!8mF?;aI-b0km2Z{cuDWYHD0fx1h9cR9Km)R{U*!(8OltDPdaN zXlDua#y-6hg!&%p&;~_>N%rmc>?}88G|6|IBWh}6xDImPc_r(rtpYtIpMZqSyADRd zQrjXEb;K7%z7P?H^M77`WpAKA%_oqbq!Lg;0fa?=Z&=>sAuO;b;)d`G&5{^JPqzRm zC)d7g?e>u4>h)9){@q?VBi-u~+b5*ev7@s6Xc-=`^f4cM*=uEClQ{SNDUg~Be$kZ~ z-N;E}enNW*FxUNlIX$enjkVKYn!#JcQ&WK_XESH3WY)|5%*IiwoCKhZ62_LYjy zcQ2nT4DhNp{t1nyGCvVoJ3{TJpsq-1!jB#5dL}qNFq#WgoZkL<@`aV#A`^%jq_068 zkI}gtXsDPXe~O8IG;%2Shs|`~x#999p>g~hu4bFgrI;&&F&i4AN}3vbj)ujmP!s5b zz&)T8KcXKVyZC(Bw*Kdg91wUZAgS$6E1h5`J@sVOF0uNjkG<^Ns%#>5@OHqR_V``( z>!`plJZ5_!(=DZ$C%^bpEs#;9E){(D4-5iNIoK)!iqNP9T6QCmRuw#f_V1)io{r&_ zKeRI{*`5)7aPQmIC2+M{yH;!-|6+4MFY^M8`pY$8fjfpIS>ztsX7)hr${re$?B#@E$^lNa#(F<>LjqvrR5#dt<6TO)x;!*||Ug zd11f<&uvp(s@sZjhJRc4#*T%G(HpTlMSYhz z1i#|d%~OM@c7HI)d5#dF|B7}q}rd4y( z-P)9~(un5z6`j%G;qHM_SoYB- zh(Bst(KI(@wlU>pvm$5UdEemsR3CUfwvA^|FAu8GkDf3O9M8KhAhO9t~6i0B?)p02_ zDXGsm8|;}N8A>%ye)BNP$hUfU3zIk6$5y|8!#KiM98_07vb3}m8yg!)IF@LYUWMn; z>&t049*sDM0G;D58OA;nUidN(xvW>RTsspAsc zGfA7=61Y${tf!}E`i=)2EZof~v~u-NKou4;9v)ksL6%uz&}qz`w0&9x!mAbm=pEm? zm;m0ZtiJFUAqZ!DeZyDR6;=w~b^4@0T|wX7?s-5RJYA+2je3Q5aBxt=F!5#7L$G$j zDC7}v?JN_O^;Ml+X%}@ZlgHx>@&Hg%;|2@FsIEZX20&HF@0C?C+qYpMu{#~8#cGPf zZu7O^Gt$rv(*;BCkRmwukXU4P-1ee)@DZukzg=_}D5c$|F6!*&u2jKgpyKmJUZF#!Et*SLMP JP~H03{{czbwHyEd delta 13672 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 diff --git a/icons/obj/vending_vr.dmi b/icons/obj/vending_vr.dmi index 7d71132986ffbedefd210283f7fd41a7a4938c21..b6c7cbb8e6c6294aa6a2d7c84a3cb0f334d672d9 100644 GIT binary patch delta 913 zcmV;C18)4+jRe?@1dt?uS9(-fbVOxyV{&P5bZKvH004NLotRB;;xG_~&+sd(_G+qx zkam0E(rvZsf$n9sS7ee&uo^tbF`(|R-va~!iIX>#)kCFcCi7vBUvn>B-hRD*h}XsY zcu%&}Y{Xp59)j`cpi{RNa}iC)qc!P#?T-JHPB{{DahGtG5#5b{N2#`@n2T^c%BS4o6WTBkNX&|REl%b4eEJGQ} z=kcgu-d?*kJ7@JWCG*uAf!R5$dy5jvsw_8_P?kp$tX^qU^4S~E(=q!<-dYa&4Avu^ zmk+Gx$L z+_DpM5e9M^%XUXSB^d6nqyCt)74tu0Z_j^Rrpi=atri#1Zn)6kcDNY$r{AzJvHt($ zLM<06S!?6n0Il#h{6m$yG60KrP>$>}VJ^t_!V8t_zkZR|1UsXs-MwK$mYqEyiJxJt zu&FkN>_ORo{awVr~0E!Lv3l8svqVOuECI>}Pu^lS@@kSukq{fZ- zXu2Ji8Mr_GtVucGIGni2Z=enpJ1Bz53znW^?)T}K3#es|xxn=7REG5d>X-|(BaXQM zi$NyW9Z$<9*tOYOXrv}*7)y(@DQ-t-y{f zpFG2&#R-z}83waH^PsL*wqGkJ%63VY{)`i4F=>@33#+O`SyTx5Z?9?Xc^%03+627C z@cXOeR1FAuxXfQBYufalzDPzgYPa8O%LV8C!>P>(E<>9wRO{Ni0jte{)Rqk<1db?r zVUyZ_GKzu0X4)AleN!m#sgRq)cJcz{T(Mx%6%IaCbyjlb881=XkxtOeuYWZ@j6Lm7 zEc*Mx3E%E)vR0)>pFdycc9DruTbNtRtHO6|A6s3uIO%H1y?Fb06|al;@qgZV)*f&O na%KPkAOJ~3K~#90?45ah6h->~-;-o=UlS&SoCCL<0|7e&DYD1G delta 913 zcmV;C18)4-jRe_Q~tEmz~ z+UH)!>I51M2?zJwPCkIGI#d50&Ok-nYlxiv@>h-|voYlQa31yX*8%rq4BNEJBX;kvr>(J9N`bged4*CpMBb}EJ z2xdcl%*l||35tV%zF%QM7dGT+%-N+Dv&Ot^D21HaP&)Bd#+ENtYY7 z5eyz;>HCYSz2P~L*D`pBubn}1SJIFoPPWQW0g+Wy+R5MQhtyK>7; z%taW;X)N1`dQvc)uOt5$*^2oevA5=!uP3q|2oN=+Q(MTPB9@sBqGsU|gU#7C2M zSY%*-{8^K7z&M<6lixrdD(oN+CNEfcj=7)HF&9wD9CLx`*{KZc3)C?eXhj@z0Vab? zt~;KVO<-5EwV;uloWWptXFMJv1p3xHgG`RSaLMF<@B^1jjtV8qD|R~RSFIJWBg!Yw zvS=YeB0ht`sLyy%*DKqvl@n#Vq)UIqiL#iqN|c3FRiZ2^g#5SHwD!CXWPEJ`-eUOu zRdT8ZxIA3uFOxNGdZ#avk&N2y_u6v7dH-^1GlJ95W((!I_HMv(b0D>4g9(8n6uq!X zZ5f4sfzD>y87h5SDDbI}n_)Y#KrvTXFz5;nK2>#Aa^_htQQQ$u(2TGDG(LDc9!B^ynVci*TwtzKZ9b@*h`^n nB>(^*07*naRCt{1oq2o|Mf(5WlVoyV6D9 Date: Sun, 4 Jun 2017 18:00:16 -0400 Subject: [PATCH 72/84] Communicator QOL Tweak Call/Msg buttons on contacts list --- code/game/objects/items/devices/communicator/communicator.dm | 4 ++-- nano/templates/communicator.tmpl | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/devices/communicator/communicator.dm b/code/game/objects/items/devices/communicator/communicator.dm index 0bfe99bbb7..4fa3e1efcd 100644 --- a/code/game/objects/items/devices/communicator/communicator.dm +++ b/code/game/objects/items/devices/communicator/communicator.dm @@ -261,7 +261,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list() // Proc: ui_interact() // Parameters: 4 (standard NanoUI arguments) // Description: Uses a bunch of for loops to turn lists into lists of lists, so they can be displayed in nanoUI, then displays various buttons to the user. -/obj/item/device/communicator/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) +/obj/item/device/communicator/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/key_state = null) // this is the data which will be sent to the ui var/data[0] //General nanoUI information var/communicators[0] //List of communicators @@ -356,7 +356,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list() if(!ui) // the ui does not exist, so we'll create a new() one // for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm - ui = new(user, src, ui_key, "communicator.tmpl", "Communicator", 475, 700) + ui = new(user, src, ui_key, "communicator.tmpl", "Communicator", 475, 700, state = key_state) // when the ui is first opened this is the data it will use ui.set_initial_data(data) // open the new ui window diff --git a/nano/templates/communicator.tmpl b/nano/templates/communicator.tmpl index 58b86a30d7..6157f45d61 100644 --- a/nano/templates/communicator.tmpl +++ b/nano/templates/communicator.tmpl @@ -152,7 +152,10 @@ Used In File(s): code\game\objects\items\devices\communicator\communicator.dm {{:value.name}}

    -
    {{:value.address}}
    {{:helper.link('Copy', 'pencil', {'copy' : value.address, 'switch_tab' : 2})}} +
    {{:value.address}}
    + {{:helper.link('Copy', 'pencil', {'copy' : value.address, 'switch_tab' : 2})}} + {{:helper.link('Call', 'phone', {'dial' : value.address, 'copy' : value.address, 'switch_tab' : 2})}} + {{:helper.link('Msg', 'mail-closed', {'copy' : value.address, 'copy_name' : value.name, 'switch_tab' : 40})}}
    {{/for}} From 26e817981a7ce2fb2592075c0316a6b82dc84bb5 Mon Sep 17 00:00:00 2001 From: Screemonster Date: Tue, 6 Jun 2017 12:23:03 +0100 Subject: [PATCH 73/84] chimera bugfixes and tweaks --- .../mob/living/carbon/human/human_damage.dm | 6 ++++-- .../station/station_special_abilities_vr.dm | 21 +++++++++++++------ .../species/station/station_special_vr.dm | 21 +++++++++---------- .../Chemistry-Reagents-Food-Drinks.dm | 3 +++ 4 files changed, 32 insertions(+), 19 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 30ee7c64d6..cca82b578b 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -186,13 +186,15 @@ ..() /mob/living/carbon/human/proc/Stasis(amount) - if((species.flags & NO_SCAN) || isSynthetic()) + //if((species.flags & NO_SCAN) || isSynthetic()) vorestation removal + if(((species.flags & NO_SCAN) && !istype(species, /datum/species/xenochimera)) || isSynthetic()) //vorestation addition in_stasis = 0 else in_stasis = amount /mob/living/carbon/human/proc/getStasis() - if((species.flags & NO_SCAN) || isSynthetic()) + //if((species.flags & NO_SCAN) || isSynthetic()) vorestation removal + if(((species.flags & NO_SCAN) && !istype(species, /datum/species/xenochimera)) || isSynthetic()) //vorestation addition return 0 return in_stasis diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm index 8feb3e5b97..acb293fef0 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm @@ -17,13 +17,13 @@ return if(C.stat == DEAD) //Uh oh, you died! - if(C.reagents.has_reagent("nutriment")) //Let's hope you have nutriment in you.... If not + if(C.hasnutriment()) //Let's hope you have nutriment in you.... If not var/time = (500+1/((nutrition_used/100+1)/1300)) C.weakened = 10000 //Since it takes 1 tick to lose one weaken. Due to prior rounding errors, you'd sometimes unweaken before regenning. This fixes that. C.reviving = 1 C.canmove = 0 //Make them unable to move. In case they somehow get up before the delay. C << "You begin to reconstruct your form. You will not be able to move during this time. It should take aproximately [round(time)] seconds." - C.in_stasis = 1 + C.Stasis(10000) //ensure complete stasis. This will put them to sleep as well. spawn(time SECONDS) if(C) //Runtime prevention. @@ -42,7 +42,7 @@ C.reviving = 1 C.canmove = 0 //Make them unable to move. In case they somehow get up before the delay. C << "You begin to reconstruct your form. You will not be able to move during this time. It should take aproximately [round(time)] seconds." - C.in_stasis = 1 + C.Stasis(10000) spawn(time SECONDS) if(C.stat != DEAD) //If they're still alive after regenning. @@ -50,11 +50,12 @@ C.verbs += /mob/living/carbon/human/proc/hatch return else if(C.stat == DEAD) - if(C.reagents.has_reagent("nutriment")) //Let's hope you have nutriment in you.... If not + if(C.hasnutriment()) //Let's hope you have nutriment in you.... If not C << "Consciousness begins to stir as your new body awakens, ready to hatch.." C.verbs += /mob/living/carbon/human/proc/hatch else //Dead until nutrition injected. C << "Your body was unable to regenerate, what few living cells remain require additional nutrients to complete the process." + C.reviving = 0 // so they can try again when they're given a kickstart return else return //Something went wrong @@ -63,6 +64,14 @@ +/mob/living/carbon/human/proc/hasnutriment() + if (src.bloodstr.has_reagent("nutriment", 30) || src.bloodstr.has_reagent("protein", 15)) //protein needs half as much. For reference, a steak contains 9u protein. + return 1 + else if (src.ingested.has_reagent("nutriment", 60) || src.ingested.has_reagent("protein", 30)) //try forcefeeding them, why not. Less effective. + return 1 + else return 0 + + /mob/living/carbon/human/proc/hatch() set name = "Hatch" set category = "Abilities" @@ -85,7 +94,7 @@ var/T = get_turf(src) new /obj/effect/gibspawner/human/scree(T) var/braindamage = C.brainloss/2 //If you have 100 brainloss, it gives you 50. - C.in_stasis = 0 + C.Stasis(0) C.revive() // I did have special snowflake code, but this is easier. C.weakened = 2 //Not going to let you get up immediately. 2 ticks before you get up. Overrides the above 10000 weaken. C.nutrition = old_nutrition @@ -119,7 +128,7 @@ C.drop_from_inventory(W) spawn(3600 SECONDS) //1 hour wait until you can revive again. C.reviving = 0 - C.in_stasis = 0 + C.Stasis(0) C.verbs -= /mob/living/carbon/human/proc/hatch return else diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm index 4301f45ccd..e785518b17 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm @@ -73,7 +73,7 @@ H.feral = min(150-H.nutrition, H.feral+1) //Feralness increases while this hungry, capped at 50-150 depending on hunger. // If they're hurt, chance of snapping. Not if they're straight-up KO'd though. - if (H.stat == CONSCIOUS && H.traumatic_shock >=36 && H.in_stasis == 0) //30 brute/burn, or 18 halloss. + if (H.stat == CONSCIOUS && H.traumatic_shock >=36 && !H.inStasisNow()) //30 brute/burn, or 18 halloss. if (2.5*H.halloss >= H.traumatic_shock) //If the majority of their shock is due to halloss, greater chance of snapping. if(prob(min(10,(0.2 * H.traumatic_shock)))) if(H.feral == 0) @@ -111,6 +111,8 @@ if(H.feral > 0) //do the following if feral, otherwise no effects. var/light_amount = H.getlightlevel() //how much light there is in the place + H.shock_stage = max(H.shock_stage-(H.feral/20), 0) //if they lose enough health to hit softcrit, handle_shock() will keep resetting this. Otherwise, pissed off critters will lose shock faster than they gain it. + for(var/mob/living/M in viewers(H)) if(M != H) // someone in view if(prob(0.5)) // 1 in 200 chance of doing something so as not to interrupt scenes @@ -160,28 +162,25 @@ var/pressure2 = environment.return_pressure() var/adjusted_pressure2 = H.calculate_affecting_pressure(pressure2) - if(adjusted_pressure2 <= 20 && H.in_stasis == 1) //If they're in a enviroment with no pressure and are in stasis (See: regenerating), don't kill them. + if(adjusted_pressure2 <= 20 && H.inStasisNow()) //If they're in a enviroment with no pressure and are in stasis (See: regenerating), don't kill them. //This is just to prevent them from taking damage if they're in stasis. else if(adjusted_pressure2 <= 20) //If they're in an enviroment with no pressure and are NOT in stasis, damage them. H.take_overall_damage(brute=LOW_PRESSURE_DAMAGE, used_weapon = "Low Pressure") - if(H.bodytemperature <= 260 && H.in_stasis == 1) //If they're in stasis, don't give them them the negative cold effects + if(H.bodytemperature <= 260 && H.inStasisNow()) //If they're in stasis, don't give them them the negative cold effects //This is just here to prevent them from getting cold effects else if(H.bodytemperature <= 260) //If they're not in stasis and are cold. Don't really have to add in an exception to cryo cells, as the effects aren't anything /too/ horrible. - var/colddamage = 0 + var/coldshock = 0 if(H.bodytemperature <= 260 && H.bodytemperature >= 200) //Chilly. - colddamage = 4 //This will begin to knock them out until they run out of oxygen and suffocate or until someone finds them. + coldshock = 4 //This will begin to knock them out until they run out of oxygen and suffocate or until someone finds them. H.eye_blurry = 5 //Blurry vision in the cold. if(H.bodytemperature <= 199 && H.bodytemperature >= 100) //Extremely cold. Even in somewhere like the server room it takes a while for bodytemp to drop this low. - colddamage = 8 + coldshock = 8 H.eye_blurry = 5 if(H.bodytemperature <= 99) //Insanely cold. - colddamage = 20 + coldshock = 16 H.eye_blurry = 5 - if(H.paralysis) //stops weaken spam from being repeatedly taken over max halloss when already KO'd. - H.halloss = min(H.halloss+colddamage, H.species.total_health - 1) //if already stunned, only take them up to the point of restunning - else - H.halloss += colddamage //Harsh punishment for staying in space, and it'll take them a while to fully thaw out when they get retrieved. + H.shock_stage = min(H.shock_stage + coldshock, 160) //cold hurts and gives them pain messages, eventually weakening and paralysing, but doesn't damage or trigger feral. return diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm index 88d059ed96..a847a5e222 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -77,6 +77,9 @@ if(alien && alien == IS_SKRELL) M.adjustToxLoss(2 * removed) return + else if(istype(M.species, /datum/species/xenochimera)) //vorestation addition + affect_ingest(M, alien, removed) //like hell are chimera of all things going to be poisoned by injecting them with meat + return ..() /datum/reagent/nutriment/protein/egg // Also bad for skrell. From b481482a62e76f0174c04899cf79cb9ec0035a0b Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Tue, 6 Jun 2017 12:17:06 -0400 Subject: [PATCH 74/84] Removes access restrictions on maintenance airlocks The non-department ones. All the department-specific ones stay locked for obvious reasons. Allows preds to nom more people in private, and exploring the z2 maintenance labyrinth, which, honestly, I'll probably add more to. Instead of adding access_maint_tunnels to every job (thus making the access almost pointless), we can leave access_maint_tunnels on super deep dark maint areas or something. --- code/game/machinery/doors/airlock.dm | 2 +- code/game/machinery/doors/multi_tile.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index b1cbd21dfd..fbef08cd30 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -103,7 +103,7 @@ /obj/machinery/door/airlock/maintenance name = "Maintenance Access" icon = 'icons/obj/doors/Doormaint.dmi' - req_one_access = list(access_maint_tunnels) + //req_one_access = list(access_maint_tunnels) //VOREStation Edit - Maintenance is open access assembly_type = /obj/structure/door_assembly/door_assembly_mai /obj/machinery/door/airlock/maintenance/cargo diff --git a/code/game/machinery/doors/multi_tile.dm b/code/game/machinery/doors/multi_tile.dm index a7c75e6253..aef0fbe7a4 100644 --- a/code/game/machinery/doors/multi_tile.dm +++ b/code/game/machinery/doors/multi_tile.dm @@ -82,4 +82,4 @@ /obj/machinery/door/airlock/multi_tile/metal/mait icon = 'icons/obj/doors/Door2x1_Maint.dmi' - req_one_access = list(access_maint_tunnels) + //req_one_access = list(access_maint_tunnels) //VOREStaiton Edit - Maintenance is open access From c45ddb6d27110bfeba7ef7bb12dc85adb10bc9a5 Mon Sep 17 00:00:00 2001 From: Screemonster Date: Tue, 6 Jun 2017 21:04:51 +0100 Subject: [PATCH 75/84] further fixes --- code/modules/mob/living/carbon/human/human_damage.dm | 6 ++---- .../species/station/station_special_abilities_vr.dm | 8 ++++---- .../carbon/human/species/station/station_special_vr.dm | 6 +++--- .../Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm | 9 ++++----- 4 files changed, 13 insertions(+), 16 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index cca82b578b..30ee7c64d6 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -186,15 +186,13 @@ ..() /mob/living/carbon/human/proc/Stasis(amount) - //if((species.flags & NO_SCAN) || isSynthetic()) vorestation removal - if(((species.flags & NO_SCAN) && !istype(species, /datum/species/xenochimera)) || isSynthetic()) //vorestation addition + if((species.flags & NO_SCAN) || isSynthetic()) in_stasis = 0 else in_stasis = amount /mob/living/carbon/human/proc/getStasis() - //if((species.flags & NO_SCAN) || isSynthetic()) vorestation removal - if(((species.flags & NO_SCAN) && !istype(species, /datum/species/xenochimera)) || isSynthetic()) //vorestation addition + if((species.flags & NO_SCAN) || isSynthetic()) return 0 return in_stasis diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm index acb293fef0..d65519f15f 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm @@ -23,7 +23,7 @@ C.reviving = 1 C.canmove = 0 //Make them unable to move. In case they somehow get up before the delay. C << "You begin to reconstruct your form. You will not be able to move during this time. It should take aproximately [round(time)] seconds." - C.Stasis(10000) //ensure complete stasis. This will put them to sleep as well. + C.does_not_breathe = 1 //effectively makes them spaceworthy while regenning spawn(time SECONDS) if(C) //Runtime prevention. @@ -42,7 +42,7 @@ C.reviving = 1 C.canmove = 0 //Make them unable to move. In case they somehow get up before the delay. C << "You begin to reconstruct your form. You will not be able to move during this time. It should take aproximately [round(time)] seconds." - C.Stasis(10000) + C.does_not_breathe = 1 //effectively makes them spaceworthy while regenning spawn(time SECONDS) if(C.stat != DEAD) //If they're still alive after regenning. @@ -94,7 +94,7 @@ var/T = get_turf(src) new /obj/effect/gibspawner/human/scree(T) var/braindamage = C.brainloss/2 //If you have 100 brainloss, it gives you 50. - C.Stasis(0) + C.does_not_breathe = 0 //start breathing again C.revive() // I did have special snowflake code, but this is easier. C.weakened = 2 //Not going to let you get up immediately. 2 ticks before you get up. Overrides the above 10000 weaken. C.nutrition = old_nutrition @@ -128,7 +128,7 @@ C.drop_from_inventory(W) spawn(3600 SECONDS) //1 hour wait until you can revive again. C.reviving = 0 - C.Stasis(0) + C.does_not_breathe = 0 //start breathing again C.verbs -= /mob/living/carbon/human/proc/hatch return else diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm index e785518b17..d1ad3dce6f 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm @@ -73,7 +73,7 @@ H.feral = min(150-H.nutrition, H.feral+1) //Feralness increases while this hungry, capped at 50-150 depending on hunger. // If they're hurt, chance of snapping. Not if they're straight-up KO'd though. - if (H.stat == CONSCIOUS && H.traumatic_shock >=36 && !H.inStasisNow()) //30 brute/burn, or 18 halloss. + if (H.stat == CONSCIOUS && H.traumatic_shock >=36) //30 brute/burn, or 18 halloss. if (2.5*H.halloss >= H.traumatic_shock) //If the majority of their shock is due to halloss, greater chance of snapping. if(prob(min(10,(0.2 * H.traumatic_shock)))) if(H.feral == 0) @@ -162,13 +162,13 @@ var/pressure2 = environment.return_pressure() var/adjusted_pressure2 = H.calculate_affecting_pressure(pressure2) - if(adjusted_pressure2 <= 20 && H.inStasisNow()) //If they're in a enviroment with no pressure and are in stasis (See: regenerating), don't kill them. + if(adjusted_pressure2 <= 20 && H.does_not_breathe) //If they're in a enviroment with no pressure and are not breathing (See: regenerating), don't kill them. //This is just to prevent them from taking damage if they're in stasis. else if(adjusted_pressure2 <= 20) //If they're in an enviroment with no pressure and are NOT in stasis, damage them. H.take_overall_damage(brute=LOW_PRESSURE_DAMAGE, used_weapon = "Low Pressure") - if(H.bodytemperature <= 260 && H.inStasisNow()) //If they're in stasis, don't give them them the negative cold effects + if(H.bodytemperature <= 260 && H.does_not_breathe) //If they're regenerating, don't give them them the negative cold effects //This is just here to prevent them from getting cold effects else if(H.bodytemperature <= 260) //If they're not in stasis and are cold. Don't really have to add in an exception to cryo cells, as the effects aren't anything /too/ horrible. diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm index a847a5e222..0a208fd0a3 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -34,10 +34,12 @@ data -= taste /datum/reagent/nutriment/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - if(!injectable) + /* if(!injectable) vorestation removal M.adjustToxLoss(0.1 * removed) return - affect_ingest(M, alien, removed) + affect_ingest(M, alien, removed) */ + if(injectable) //vorestation addition/replacement + affect_ingest(M, alien, removed) /datum/reagent/nutriment/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) switch(alien) @@ -77,9 +79,6 @@ if(alien && alien == IS_SKRELL) M.adjustToxLoss(2 * removed) return - else if(istype(M.species, /datum/species/xenochimera)) //vorestation addition - affect_ingest(M, alien, removed) //like hell are chimera of all things going to be poisoned by injecting them with meat - return ..() /datum/reagent/nutriment/protein/egg // Also bad for skrell. From 08e7703e4f1d77592d7cc43e00c3f32b297ab484 Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Mon, 5 Jun 2017 00:11:48 -0400 Subject: [PATCH 76/84] Finishing Up NIFs Squashed commit: [4b18ca1] Finishing up NIFs [e4adb4a] Tons more NIF work All the implants are done! --- code/__defines/nifsoft.dm | 37 ++-- code/game/objects/structures/trash_pile.dm | 3 +- .../client/preference_setup/vore/08_nif.dm | 45 +++++ .../living/carbon/human/human_attackhand.dm | 1 + .../mob/living/carbon/human/human_damage.dm | 4 + code/modules/mob/living/carbon/human/life.dm | 6 +- code/modules/nano/interaction/inventory_vr.dm | 22 +- code/modules/nifsoft/nif.dm | 140 ++++++++++--- code/modules/nifsoft/nif_softshop.dm | 108 +++++++++- code/modules/nifsoft/nif_statpanel.dm | 9 +- code/modules/nifsoft/nifsoft.dm | 75 ++++++- code/modules/nifsoft/software/01_vision.dm | 84 ++++---- code/modules/nifsoft/software/05_health.dm | 63 ++++-- code/modules/nifsoft/software/10_combat.dm | 143 ++++++++++++- code/modules/nifsoft/software/14_commlink.dm | 132 ++++++++++++ code/modules/nifsoft/software/15_misc.dm | 191 +++++++++++++++++- code/modules/organs/organ_external.dm | 2 + code/modules/research/designs_vr.dm | 8 + code/modules/resleeving/implant.dm | 3 +- code/modules/resleeving/infocore.dm | 20 +- code/modules/resleeving/machines.dm | 6 + code/modules/vore/persist/persist_vr.dm | 30 ++- icons/obj/vending_vr.dmi | Bin 67288 -> 67274 bytes maps/tether/tether-01-surface.dmm | 8 +- maps/tether/tether-03-station.dmm | 2 +- maps/tether/tether-06-colony.dmm | 6 +- maps/tether/tether-07-misc.dmm | 2 +- sound/items/nif_click.ogg | Bin 0 -> 7990 bytes sound/items/nif_tone_bad.ogg | Bin 0 -> 11552 bytes sound/items/nif_tone_good.ogg | Bin 0 -> 33960 bytes vorestation.dme | 2 + 31 files changed, 1003 insertions(+), 149 deletions(-) create mode 100644 code/modules/client/preference_setup/vore/08_nif.dm create mode 100644 code/modules/nifsoft/software/14_commlink.dm create mode 100644 sound/items/nif_click.ogg create mode 100644 sound/items/nif_tone_bad.ogg create mode 100644 sound/items/nif_tone_good.ogg diff --git a/code/__defines/nifsoft.dm b/code/__defines/nifsoft.dm index e4d4f12293..06d1b0c7aa 100644 --- a/code/__defines/nifsoft.dm +++ b/code/__defines/nifsoft.dm @@ -16,27 +16,29 @@ #define NIF_UVFILTER 12 #define NIF_FLASHPROT 13 //Health-related -#define NIF_ORGANIC_HEAL 14 -#define NIF_SYNTH_HEAL 15 -#define NIF_AUTOSTASIS 16 //These two are just part of -#define NIF_MED_ALARM 17 //medichines right now -#define NIF_TOXHEAL 18 -#define NIF_SPAREBREATH 19 +#define NIF_CREWMONITOR 14 +#define NIF_ORGANIC_HEAL 15 +#define NIF_SYNTH_HEAL 16 +#define NIF_AUTOSTASIS 17 //These two are just part of +#define NIF_MED_ALARM 18 //medichines right now +#define NIF_TOXHEAL 19 //And this, for organics +#define NIF_SPAREBREATH 20 //Combat Related -#define NIF_BRUTEARMOR 20 -#define NIF_BURNARMOR 21 -#define NIF_PAINKILLERS 22 -#define NIF_HARDCLAWS 23 -#define NIF_HIDDENLASER 24 +#define NIF_BRUTEARMOR 21 +#define NIF_BURNARMOR 22 +#define NIF_PAINKILLERS 23 +#define NIF_HARDCLAWS 24 +#define NIF_HIDDENLASER 25 //Other -#define NIF_COMMLINK 25 -#define NIF_SUITSENSORS 26 +#define NIF_COMMLINK 26 #define NIF_APCCHARGE 27 #define NIF_PRESSURE 28 #define NIF_HEATSINK 29 +#define NIF_COMPLIANCE 30 +#define NIF_SIZECHANGE 31 // Must be equal to the highest number above -#define TOTAL_NIF_SOFTWARE 29 +#define TOTAL_NIF_SOFTWARE 31 ////////////////////// // NIF flag list hints @@ -78,10 +80,9 @@ //Other #define NIF_O_COMMLINK 0x1 -#define NIF_O_SENSORS 0x2 -#define NIF_O_APCCHARGE 0x4 -#define NIF_O_PRESSURESEAL 0x8 -#define NIF_O_HEATSINKS 0x10 +#define NIF_O_APCCHARGE 0x2 +#define NIF_O_PRESSURESEAL 0x4 +#define NIF_O_HEATSINKS 0x8 /////////////////// // applies_to flags diff --git a/code/game/objects/structures/trash_pile.dm b/code/game/objects/structures/trash_pile.dm index 5490251280..0959f93004 100644 --- a/code/game/objects/structures/trash_pile.dm +++ b/code/game/objects/structures/trash_pile.dm @@ -225,7 +225,8 @@ prob(4);/obj/item/device/radio_jammer, prob(2);/obj/item/weapon/storage/box/syndie_kit/spy, prob(2);/obj/item/weapon/grenade/anti_photon, - prob(1);/obj/item/weapon/cell/hyper/empty) + prob(1);/obj/item/weapon/cell/hyper/empty, + prob(1);/obj/item/weapon/disk/nifsoft/compliance) var/obj/item/I = new path() return I diff --git a/code/modules/client/preference_setup/vore/08_nif.dm b/code/modules/client/preference_setup/vore/08_nif.dm new file mode 100644 index 0000000000..52586d3bcf --- /dev/null +++ b/code/modules/client/preference_setup/vore/08_nif.dm @@ -0,0 +1,45 @@ +//Pretty small file, mostly just for storage. +/datum/preferences + var/obj/item/device/nif/nif_path + var/nif_durability + +// Definition of the stuff for NIFs +/datum/category_item/player_setup_item/vore/nif + name = "NIF Data" + sort_order = 8 + +/datum/category_item/player_setup_item/vore/nif/load_character(var/savefile/S) + S["nif_path"] >> pref.nif_path + S["nif_durability"] >> pref.nif_durability + +/datum/category_item/player_setup_item/vore/nif/save_character(var/savefile/S) + S["nif_path"] << pref.nif_path + S["nif_durability"] << pref.nif_durability + +/datum/category_item/player_setup_item/vore/nif/sanitize_character() + if(pref.nif_path && !ispath(pref.nif_path)) //We have at least a text string that should be a path. + pref.nif_path = text2path(pref.nif_path) //Try to convert it to a hard path. + if(!pref.nif_path) //If we couldn't, kill it. + pref.nif_path = null //Kill! + WARNING("Loaded a NIF but it was an invalid path, [pref.real_name]") + + if(ispath(pref.nif_path) && !pref.nif_durability) //How'd you lose this? + pref.nif_durability = initial(pref.nif_path.durability) //Well, have a new one, my bad. + WARNING("Loaded a NIF but with no durability, [pref.real_name]") + +/datum/category_item/player_setup_item/vore/nif/copy_to_mob(var/mob/living/carbon/human/character) + //If you had a NIF... + if((character.type == /mob/living/carbon/human) && ispath(pref.nif_path) && pref.nif_durability) + new pref.nif_path(character,pref.nif_durability) + + //And now here's the trick. We wipe these so that if they die, they lose the NIF. + //Backup implants will start saving this again periodically, and so will cryo'ing out. + pref.nif_path = null + pref.nif_durability = null + var/savefile/S = new /savefile(pref.path) + if(!S) WARNING ("Couldn't load NIF save savefile? [pref.real_name]") + S.cd = "/character[pref.default_slot]" + save_character(S) + +/datum/category_item/player_setup_item/vore/nif/content(var/mob/user) + . += "NIF: [ispath(pref.nif_path) ? "Present" : "None"]" diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 3af1a52bf6..b321d288fb 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -1,5 +1,6 @@ /mob/living/carbon/human/proc/get_unarmed_attack(var/mob/living/carbon/human/target, var/hit_zone) // VOREStation Edit - Begin + if(nif && nif.flag_check(NIF_C_HARDCLAWS,NIF_FLAGS_COMBAT)){return unarmed_hardclaws} if(src.default_attack && src.default_attack.is_usable(src, target, hit_zone)) if(pulling_punches) var/datum/unarmed_attack/soft_type = src.default_attack.get_sparring_variant() diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm index 30ee7c64d6..d1f468500b 100644 --- a/code/modules/mob/living/carbon/human/human_damage.dm +++ b/code/modules/mob/living/carbon/human/human_damage.dm @@ -104,6 +104,7 @@ amount *= M.incoming_damage_percent if(!isnull(M.incoming_brute_damage_percent)) amount *= M.incoming_brute_damage_percent + if(nif && nif.flag_check(NIF_C_BRUTEARMOR,NIF_FLAGS_COMBAT)){amount *= 0.7} //VOREStation Edit - NIF mod for damage resistance for this type of damage take_overall_damage(amount, 0) else for(var/datum/modifier/M in modifiers) @@ -120,6 +121,7 @@ amount *= M.incoming_damage_percent if(!isnull(M.incoming_fire_damage_percent)) amount *= M.incoming_fire_damage_percent + if(nif && nif.flag_check(NIF_C_BURNARMOR,NIF_FLAGS_COMBAT)){amount *= 0.7} //VOREStation Edit - NIF mod for damage resistance for this type of damage take_overall_damage(0, amount) else for(var/datum/modifier/M in modifiers) @@ -139,6 +141,7 @@ amount *= M.incoming_damage_percent if(!isnull(M.incoming_brute_damage_percent)) amount *= M.incoming_brute_damage_percent + if(nif && nif.flag_check(NIF_C_BRUTEARMOR,NIF_FLAGS_COMBAT)){amount *= 0.7} //VOREStation Edit - NIF mod for damage resistance for this type of damage O.take_damage(amount, 0, sharp=is_sharp(damage_source), edge=has_edge(damage_source), used_weapon=damage_source) else for(var/datum/modifier/M in modifiers) @@ -160,6 +163,7 @@ amount *= M.incoming_damage_percent if(!isnull(M.incoming_fire_damage_percent)) amount *= M.incoming_fire_damage_percent + if(nif && nif.flag_check(NIF_C_BURNARMOR,NIF_FLAGS_COMBAT)){amount *= 0.7} //VOREStation Edit - NIF mod for damage resistance for this type of damage O.take_damage(0, amount, sharp=is_sharp(damage_source), edge=has_edge(damage_source), used_weapon=damage_source) else for(var/datum/modifier/M in modifiers) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 75d598fb69..fd21301044 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -666,7 +666,8 @@ pressure_alert = -1 else if( !(COLD_RESISTANCE in mutations)) - take_overall_damage(brute=LOW_PRESSURE_DAMAGE, used_weapon = "Low Pressure") + if(!isSynthetic() || !nif || !nif.flag_check(NIF_O_PRESSURESEAL,NIF_FLAGS_OTHER)) //VOREStation Edit - NIF pressure seals + take_overall_damage(brute=LOW_PRESSURE_DAMAGE, used_weapon = "Low Pressure") if(getOxyLoss() < 55) // 11 OxyLoss per 4 ticks when wearing internals; unconsciousness in 16 ticks, roughly half a minute adjustOxyLoss(4) // 16 OxyLoss per 4 ticks when no internals present; unconsciousness in 13 ticks, roughly twenty seconds pressure_alert = -2 @@ -703,7 +704,8 @@ // FBPs will overheat, prosthetic limbs are fine. if(robobody_count) - bodytemperature += round(robobody_count*1.75) + if(!nif || !nif.flag_check(NIF_O_HEATSINKS,NIF_FLAGS_OTHER)) //VOREStation Edit - NIF heatsinks + bodytemperature += round(robobody_count*1.75) var/body_temperature_difference = species.body_temperature - bodytemperature diff --git a/code/modules/nano/interaction/inventory_vr.dm b/code/modules/nano/interaction/inventory_vr.dm index 373e9f382b..21ee1ca590 100644 --- a/code/modules/nano/interaction/inventory_vr.dm +++ b/code/modules/nano/interaction/inventory_vr.dm @@ -1,7 +1,7 @@ /* This state checks that the src_object is on the user's glasses slot. */ -/var/global/datum/topic_state/inventory_state/glasses_state = new() +/var/global/datum/topic_state/glasses_state/glasses_state = new() /datum/topic_state/glasses_state/can_use_topic(var/src_object, var/mob/user) if(ishuman(user)) @@ -10,3 +10,23 @@ return user.shared_nano_interaction() return STATUS_CLOSE + +/var/global/datum/topic_state/nif_state/nif_state = new() + +/datum/topic_state/nif_state/can_use_topic(var/src_object, var/mob/user) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + if(H.nif && H.nif.stat == NIF_WORKING && src_object == H.nif) + return user.shared_nano_interaction() + + return STATUS_CLOSE + +/var/global/datum/topic_state/commlink_state/commlink_state = new() + +/datum/topic_state/commlink_state/can_use_topic(var/src_object, var/mob/user) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + if(H.nif && H.nif.stat == NIF_WORKING && H.nif.comm == src_object) + return user.shared_nano_interaction() + + return STATUS_CLOSE diff --git a/code/modules/nifsoft/nif.dm b/code/modules/nifsoft/nif.dm index b4ef9eafd7..dc958718cc 100644 --- a/code/modules/nifsoft/nif.dm +++ b/code/modules/nifsoft/nif.dm @@ -3,8 +3,8 @@ //Nanotech Implant Foundation /obj/item/device/nif - name = "nanotech implant foundation" - desc = "A somewhat degraded copy of a Kitsuhana working surface, in a box. Can print new \ + name = "nanite implant framework" + desc = "A somewhat diminished knockoff of a Kitsuhana nano working surface, in a box. Can print new \ implants inside living hosts on the fly based on software uploads. Must be surgically \ implanted in the head to work. May eventually wear out and break." @@ -14,7 +14,7 @@ w_class = ITEMSIZE_TINY var/durability = 100 // Durability remaining - var/burn_factor = 100 // Divisor for power charge from nutrition (efficiency basically) + var/bioadap = FALSE // If it'll work in fancy species var/tmp/power_usage = 0 // Nifsoft adds to this var/tmp/mob/living/carbon/human/human // Our owner! @@ -31,31 +31,51 @@ var/tmp/install_done // Time when install will finish var/tmp/open = FALSE // If it's open for maintenance (1-3) - var/obj/item/clothing/glasses/hud/nif_hud/nif_hud + var/obj/item/clothing/glasses/hud/nif_hud/nif_hud // The AR ones require this + var/obj/item/device/communicator/commlink/comm // The commlink requires this var/global/icon/big_icon - var/global/click_sound = 'sound/effects/pop.ogg' + var/global/click_sound = 'sound/items/nif_click.ogg' + var/global/bad_sound = 'sound/items/nif_tone_bad.ogg' + var/global/good_sound = 'sound/items/nif_tone_good.ogg' + var/global/list/look_messages = list( + "flicks their eyes around", + "looks at something unseen", + "reads some invisible text", + "seems to be daydreaming", + "focuses elsewhere for a moment") //Constructor comes with a free AR HUD /obj/item/device/nif/New(var/newloc,var/wear) ..(newloc) - new /datum/nifsoft/ar_civ(src) + + //Required for AR stuff. nif_hud = new(src) + //First one to spawn in the game, make a big icon if(!big_icon) big_icon = new(icon,icon_state = "nif_full") - //Probably loading from a save + //If given a human on spawn (probably from persistence) if(ishuman(newloc)) var/mob/living/carbon/human/H = newloc - implant(H) - owner = H.mind.name - name = initial(name) + " ([owner])" - stat = NIF_WORKING + if(!quick_implant(H)) + WARNING("NIF spawned in [H] failed to implant") + spawn(0) + qdel(src) + else + //Free commlink for return customers + new /datum/nifsoft/commlink(src) + //Free civilian AR included + new /datum/nifsoft/ar_civ(src) + + //If given wear (like when spawned) then done if(wear) durability = wear + wear(0) //Just make it update. + //Draw me yo. update_icon() //Destructor cleans up references @@ -66,12 +86,20 @@ for(var/S in nifsofts) if(S) qdel(S) + if(nif_hud) + qdel(nif_hud) + if(comm) + qdel(comm) + nifsofts.Cut() ..() //Being implanted in some mob /obj/item/device/nif/proc/implant(var/mob/living/carbon/human/H) - if(istype(H) && !H.nif && H.species && !(H.species.flags & NO_SCAN) && (loc == H.get_organ(BP_HEAD))) //NO_SCAN is the default 'too complicated' flag. + if(istype(H) && !H.nif && H.species && (loc == H.get_organ(BP_HEAD))) + if(!bioadap && (H.species.flags & NO_SCAN)) //NO_SCAN is the default 'too complicated' flag + return FALSE + human = H human.nif = src stat = NIF_INSTALLING @@ -87,8 +115,10 @@ return FALSE src.forceMove(head) head.implants += src - owner = H.real_name - return implant(H) + spawn(0) //Let the character finish spawning yo. + owner = H.mind.name + implant(H) + return TRUE return FALSE @@ -121,20 +151,20 @@ //Wear update/check proc /obj/item/device/nif/proc/wear(var/wear = 0) - if(wear) - durability -= wear * rand(0.85,1.15) // Also +/- 15% + wear *= (rand(85,115) / 100) //Apparently rand() only takes integers. + durability -= wear if(durability <= 0) - stat = NIF_TEMPFAIL - update_icon() notify("Danger! General system insta#^!($",TRUE) to_chat(human,"Your NIF vision overlays disappear and your head suddenly seems very quiet...") + stat = NIF_TEMPFAIL + update_icon() //Attackby proc, for maintenance /obj/item/device/nif/attackby(obj/item/weapon/W, mob/user as mob) if(open == 0 && istype(W,/obj/item/weapon/screwdriver)) if(do_after(user, 4 SECONDS, src) && open == 0) - user.visible_message("[user] unscrews and pries open \the [src].","You unscrew and pry open \the [src].") + user.visible_message("[user] unscrews and pries open \the [src].","You unscrew and pry open \the [src].") playsound(user, 'sound/items/Screwdriver.ogg', 50, 1) open = 1 update_icon() @@ -144,25 +174,25 @@ to_chat(user,"You need at least three coils of wire to add them to \the [src].") return if(do_after(user, 6 SECONDS, src) && open == 1 && C.use(3)) - user.visible_message("[user] replaces some wiring in \the [src].","You replace any burned out wiring in \the [src].") + user.visible_message("[user] replaces some wiring in \the [src].","You replace any burned out wiring in \the [src].") playsound(user, 'sound/items/Deconstruct.ogg', 50, 1) open = 2 update_icon() else if(open == 2 && istype(W,/obj/item/device/multitool)) if(do_after(user, 8 SECONDS, src) && open == 2) - user.visible_message("[user] resets several circuits in \the [src].","You find and repair any faulty circuits in \the [src].") + user.visible_message("[user] resets several circuits in \the [src].","You find and repair any faulty circuits in \the [src].") open = 3 update_icon() else if(open == 3 && istype(W,/obj/item/weapon/screwdriver)) if(do_after(user, 3 SECONDS, src) && open == 3) - user.visible_message("[user] closes up \the [src].","You re-seal \the [src] for use once more.") + user.visible_message("[user] closes up \the [src].","You re-seal \the [src] for use once more.") playsound(user, 'sound/items/Screwdriver.ogg', 50, 1) open = FALSE durability = initial(durability) stat = NIF_PREINSTALL update_icon() -//Wear update/check proc +//Icon updating /obj/item/device/nif/update_icon() if(open) icon_state = "nif_open[open]" @@ -181,19 +211,24 @@ //The (dramatic) install process /obj/item/device/nif/proc/handle_install() - if(human.stat) //No stuff while KO. Sleeping it off is viable, and doesn't start until you wake up from surgery + if(human.stat || !human.mind) //No stuff while KO or not sleeved return FALSE //Firsties if(!install_done) - if(human.real_name == owner) + if(human.mind.name == owner) install_done = world.time + 1 MINUTE notify("Welcome back, [owner]! Performing quick-calibration...") - else + else if(!owner) install_done = world.time + 30 MINUTES notify("Adapting to new user...") sleep(5 SECONDS) notify("Adjoining optic [human.isSynthetic() ? "interface" : "nerve"], please be patient.",TRUE) + else + notify("You are not an authorized user for this device. Please contact [owner].",TRUE) + unimplant() + stat = NIF_TEMPFAIL + return FALSE var/percent_done = (world.time - (install_done - (30 MINUTES))) / (30 MINUTES) @@ -229,7 +264,7 @@ //Finishing up if(1.0 to INFINITY) stat = NIF_WORKING - owner = human.real_name + owner = human.mind.name name = initial(name) + " ([owner])" notify("Calibration complete! User data stored!") @@ -272,12 +307,19 @@ //Prints 'AR' messages to the user /obj/item/device/nif/proc/notify(var/message,var/alert = 0) - if(!human) return + if(!human || stat == NIF_TEMPFAIL) return to_chat(human,"\[\icon[src.big_icon]NIF\] displays, \"[message]\"") + if(prob(1)) human.visible_message("\The [human] [pick(look_messages)].") + if(alert) + human << bad_sound + else + human << good_sound //Called to spend nutrition, returns 1 if it was able to /obj/item/device/nif/proc/use_charge(var/use_charge) + if(stat != NIF_WORKING) return FALSE + //You don't want us to take any? Well okay. if(!use_charge) return TRUE @@ -292,6 +334,8 @@ //Install a piece of software /obj/item/device/nif/proc/install(var/datum/nifsoft/new_soft) + if(stat == NIF_TEMPFAIL) return FALSE + if(nifsofts[new_soft.list_pos]) return FALSE @@ -305,6 +349,7 @@ notify("The software \"[new_soft]\" is not supported in organic life.",TRUE) return FALSE + wear(new_soft.wear) nifsofts[new_soft.list_pos] = new_soft power_usage += new_soft.p_drain @@ -320,7 +365,6 @@ if(new_soft.other_flags) other_flags |= new_soft.other_flags - wear(new_soft.wear) return TRUE //Uninstall a piece of software @@ -353,7 +397,10 @@ //Activate a nifsoft /obj/item/device/nif/proc/activate(var/datum/nifsoft/soft) + if(stat != NIF_WORKING) return FALSE + if(human) + if(prob(5)) human.visible_message("\The [human] [pick(look_messages)].") var/applies_to = soft.applies_to var/synth = human.isSynthetic() if(synth && !(applies_to & NIF_SYNTHETIC)) @@ -366,6 +413,7 @@ return FALSE if(!use_charge(soft.a_drain)) + notify("Not enough power to activate \"[soft]\" NIFsoft!",TRUE) return FALSE if(soft.tick_flags == NIF_ACTIVETICK) @@ -378,6 +426,9 @@ //Deactivate a nifsoft /obj/item/device/nif/proc/deactivate(var/datum/nifsoft/soft) + if(human) + if(prob(5)) human.visible_message("\The [human] [pick(look_messages)].") + if(soft.tick_flags == NIF_ACTIVETICK) nifsofts_life -= soft @@ -427,7 +478,7 @@ //Check for an installed implant /obj/item/device/nif/proc/imp_check(var/soft) - if(!stat == NIF_WORKING) return FALSE + if(stat != NIF_WORKING) return FALSE ASSERT(soft) if(ispath(soft)) @@ -439,7 +490,8 @@ //Check for a set flag /obj/item/device/nif/proc/flag_check(var/flag,var/hint) - if(!stat == NIF_WORKING) return FALSE + if(stat != NIF_WORKING) return FALSE + ASSERT(flag && hint) var/result = FALSE @@ -457,6 +509,7 @@ return result +/////////////////////////////////////////////////////////////////////////////////////// //NIF HUD object becasue HUD handling is trash and should be rewritten /obj/item/clothing/glasses/hud/nif_hud/var/obj/item/device/nif/nif @@ -464,6 +517,12 @@ ..(newloc) nif = newloc +/obj/item/clothing/glasses/hud/nif_hud/Destroy() + if(nif) + nif.nif_hud = null + nif = null + ..() + /obj/item/clothing/glasses/hud/nif_hud/process_hud(M,var/thing) //Faster checking with local var, and this is called often so I want fast. var/visflags = nif.vision_flags @@ -479,3 +538,22 @@ process_omni_hud(nif.human, "sci") else if(NIF_V_AR_CIVILIAN & visflags) process_omni_hud(nif.human, "civ") + +// Alternate NIFs +/obj/item/device/nif/bad + name = "second-hand NIF" + desc = "A copy of a copy of a copy of a copy of... this can't be any good, right? Surely?" + durability = 10 + +/obj/item/device/nif/authentic + name = "\improper Kitsuhana NIF" + desc = "An actual Kitsuhana working surface, in a box. From a society slightly less afraid \ + of self-replicating nanotechnology. Basically just a high-endurance NIF." + durability = 1000 + +/obj/item/device/nif/bioadap + name = "bioadaptive NIF" + desc = "A NIF that goes out of it's way to accomidate strange body types. \ + Will function in species where it normally wouldn't." + durability = 25 + bioadap = TRUE diff --git a/code/modules/nifsoft/nif_softshop.dm b/code/modules/nifsoft/nif_softshop.dm index 3680b47786..4d0da46843 100644 --- a/code/modules/nifsoft/nif_softshop.dm +++ b/code/modules/nifsoft/nif_softshop.dm @@ -20,7 +20,7 @@ starting_illegal_nifsoft = list() for(var/P in subtypesof(/datum/nifsoft) - /datum/nifsoft/package) var/datum/nifsoft/NS = P - if(initial(NS.initial)) + if(initial(NS.vended)) switch(initial(NS.illegal)) if(TRUE) starting_illegal_nifsoft += NS @@ -40,7 +40,13 @@ for(var/entry in current_list[1]) var/datum/nifsoft/NS = entry - var/name = initial(NS.name) + var/applies_to = initial(NS.applies_to) + var/context = "" + if(!(applies_to & NIF_SYNTHETIC)) + context = " (Org Only)" + else if(!(applies_to & NIF_ORGANIC)) + context = " (Syn Only)" + var/name = "[initial(NS.name)][context]" var/datum/stored_item/vending_product/product = new/datum/stored_item/vending_product(src, entry, name) product.price = initial(NS.cost) @@ -61,6 +67,104 @@ return ..() +/* +/obj/proc/allowed(mob/M) + //check if it doesn't require any access at all + if(src.check_access(null)) + return 1 + + var/id = M.GetIdCard() + if(id) + return check_access(id) + return 0 + +///obj/item/proc/GetAccess() +// return list() + +/atom/movable/proc/GetAccess() + var/obj/item/weapon/card/id/id = GetIdCard() + return id ? id.GetAccess() : list() + +/obj/proc/GetID() + return null + +/obj/proc/check_access(obj/item/I) + return check_access_list(I ? I.GetAccess() : list()) + +/obj/proc/check_access_list(var/list/L) + if(!req_access) req_access = list() + if(!req_one_access) req_one_access = list() + if(!L) return 0 + if(!istype(L, /list)) return 0 + return has_access(req_access, req_one_access, L) +*/ + +//Had to override this too +/obj/machinery/vending/nifsoft_shop/Topic(href, href_list) + if(stat & (BROKEN|NOPOWER)) + return + if(usr.stat || usr.restrained()) + return + + if(href_list["remove_coin"] && !istype(usr,/mob/living/silicon)) + if(!coin) + usr << "There is no coin in this machine." + return + + coin.forceMove(src.loc) + if(!usr.get_active_hand()) + usr.put_in_hands(coin) + usr << "You remove \the [coin] from \the [src]" + coin = null + categories &= ~CAT_COIN + + if((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf)))) + if((href_list["vend"]) && (vend_ready) && (!currently_vending)) + if((!allowed(usr)) && !emagged && scan_id) //For SECURE VENDING MACHINES YEAH + usr << "Access denied." //Unless emagged of course + flick(icon_deny,src) + return + + var/key = text2num(href_list["vend"]) + var/datum/stored_item/vending_product/R = product_records[key] + + // This should not happen unless the request from NanoUI was bad + if(!(R.category & categories)) + return + + //Specific soft access checking + var/datum/nifsoft/path = R.item_path + if(initial(path.access)) + var/list/soft_access = list(initial(path.access)) + var/list/usr_access = usr.GetAccess() + if(!has_access(soft_access, list(), usr_access) && !emagged) + usr << "You aren't authorized to buy [initial(path.name)]." + flick(icon_deny,src) + return + + if(R.price <= 0) + vend(R, usr) + else if(istype(usr,/mob/living/silicon)) //If the item is not free, provide feedback if a synth is trying to buy something. + usr << "Artificial unit recognized. Artificial units cannot complete this transaction. Purchase canceled." + return + else + currently_vending = R + if(!vendor_account || vendor_account.suspended) + status_message = "This machine is currently unable to process payments due to problems with the associated account." + status_error = 1 + else + status_message = "[initial(path.desc)]

    Please swipe a card or insert cash to pay for the item." + status_error = 0 + + else if(href_list["cancelpurchase"]) + currently_vending = null + + else if((href_list["togglevoice"]) && (panel_open)) + shut_up = !shut_up + + add_fingerprint(usr) + nanomanager.update_uis(src) + // Also special treatment! /obj/machinery/vending/nifsoft_shop/vend(datum/stored_item/vending_product/R, mob/user) var/mob/living/carbon/human/H = user diff --git a/code/modules/nifsoft/nif_statpanel.dm b/code/modules/nifsoft/nif_statpanel.dm index 990bf43565..4ddba7a3c9 100644 --- a/code/modules/nifsoft/nif_statpanel.dm +++ b/code/modules/nifsoft/nif_statpanel.dm @@ -4,7 +4,7 @@ SetupNifStat() /mob/living/carbon/human/proc/SetupNifStat() - var/nif_status + var/nif_status = "" switch(nif.stat) if(NIF_WORKING) nif_status = "Operating Normally" @@ -16,6 +16,7 @@ nif_status = "Adapting To User" else nif_status = "Unknown - Error" + nif_status += " ([round((nif.durability/initial(nif.durability))*100)]%)" stat("NIF Status", nif_status) if(!nif.stat) @@ -39,17 +40,13 @@ nifsoft = new_soft nifsoft_name = new_soft.name name = new_soft.name - toggleable = new_soft.activates /obj/effect/nif_stat/Destroy() nifsoft = null ..() /obj/effect/nif_stat/proc/atom_button_text() - if(!toggleable) - name = "Always On" - else - name = "[nifsoft.active ? "Active" : "Disabled"]" + name = nifsoft.stat_text() return src /obj/effect/nif_stat/Click(var/location, var/control, var/params) diff --git a/code/modules/nifsoft/nifsoft.dm b/code/modules/nifsoft/nifsoft.dm index 453e00d79b..f86e0150e3 100644 --- a/code/modules/nifsoft/nifsoft.dm +++ b/code/modules/nifsoft/nifsoft.dm @@ -9,9 +9,9 @@ var/cost = 1000 // Cost in cash of buying this software from a terminal //TODO - While coding - var/initial = TRUE // This is available in NIFSoft Shops at the start of the game + var/vended = TRUE // This is available in NIFSoft Shops at the start of the game var/wear = 1 // The wear (+/- 10% when applied) that this causes to the NIF - var/list/req_one_access // What access they need to buy it + var/access // What access they need to buy it, can only set one for ~reasons~ var/illegal = FALSE // If this is a black-market nifsoft (emag option) var/active = FALSE // Whether the active mode of this implant is on @@ -63,6 +63,7 @@ deactivate() if(nif) . = nif.uninstall(src) + nif = null qdel(src) //Called every life() tick on a mob on active implants @@ -88,6 +89,17 @@ uninstall() return +//Called when installed from a disk +/datum/nifsoft/proc/disk_install(var/mob/living/carbon/human/target,var/mob/living/carbon/human/user) + return TRUE + +//Stat-line clickable text +/datum/nifsoft/proc/stat_text() + if(activates) + return "[active ? "Active" : "Disabled"]" + + return "Always On" + ////////////////////// //A package of NIF software /datum/nifsoft/package @@ -108,3 +120,62 @@ software.Cut() software = null ..() + +///////////////// +// A NIFSoft Disk +/obj/item/weapon/disk/nifsoft + name = "NIFSoft Disk" + desc = "It has a small label: \n\ + \"Portable NIFSoft Disk. \n\ + Insert directly into brain.\"" + icon = 'icons/obj/cloning.dmi' + icon_state = "datadisk2" + item_state = "card-id" + w_class = ITEMSIZE_SMALL + var/datum/nifsoft/stored = null + var/laws = "" + +/obj/item/weapon/disk/nifsoft/afterattack(var/A, mob/user, flag, params) + if(!in_range(user, A)) + return + + if(!ishuman(user) || !ishuman(A)) + return + + var/mob/living/carbon/human/Ht = A + var/mob/living/carbon/human/Hu = user + + if(!Ht.nif || Ht.nif.stat != NIF_WORKING) + to_chat(user,"Either they don't have a NIF, or the disk can't connect.") + return + + Ht.visible_message("[Hu] begins uploading new NIFSoft into [Ht]!","[Hu] is uploading new NIFSoft into you!") + if(do_after(Ht,10 SECONDS,Hu)) + var/extra = extra_params() + new stored(Ht.nif,extra) + qdel(src) + +//So disks can pass fancier stuff. +/obj/item/weapon/disk/nifsoft/proc/extra_params() + return null + +/obj/item/weapon/disk/nifsoft/compliance + name = "NIFSoft Disk (Compliance)" + desc = "Wow, adding laws to people? That seems illegal. It probably is. Okay, it really is." + stored = /datum/nifsoft/compliance + +/obj/item/weapon/disk/nifsoft/compliance/afterattack(var/A, mob/user, flag, params) + if(!laws) + to_chat(user,"You haven't set any laws yet. Use the disk in-hand first.") + return + ..(A,user,flag,params) + +/obj/item/weapon/disk/nifsoft/compliance/attack_self(mob/user) + var/newlaws = input(user,"Please Input Laws","Compliance Laws",laws) as message + newlaws = sanitize(newlaws,2048) + if(newlaws) + to_chat(user,"You set the laws to:
    [newlaws]") + laws = newlaws + +/obj/item/weapon/disk/nifsoft/compliance/extra_params() + return laws diff --git a/code/modules/nifsoft/software/01_vision.dm b/code/modules/nifsoft/software/01_vision.dm index 15f253d9b2..d222cd67dd 100644 --- a/code/modules/nifsoft/software/01_vision.dm +++ b/code/modules/nifsoft/software/01_vision.dm @@ -5,16 +5,15 @@ desc = "Provides a general identification and health status overlay on your vision with no frills." list_pos = NIF_CIVILIAN_AR cost = 500 - initial = TRUE a_drain = 0.05 activate() - if(..()) + if((. = ..())) nif.deactivate_these(NIF_MEDICAL_AR,NIF_SECURITY_AR,NIF_ENGINE_AR,NIF_SCIENCE_AR,NIF_OMNI_AR) nif.set_flag(NIF_V_AR_CIVILIAN,NIF_FLAGS_VISION) deactivate() - if(..()) + if((. = ..())) nif.clear_flag(NIF_V_AR_CIVILIAN,NIF_FLAGS_VISION) /datum/nifsoft/ar_med @@ -22,17 +21,16 @@ desc = "Like the civilian model, but provides medical records access and virus database lookup." list_pos = NIF_MEDICAL_AR cost = 750 - initial = TRUE - req_one_access = list(access_medical) + access = access_medical a_drain = 0.05 activate() - if(..()) + if((. = ..())) nif.deactivate_these(NIF_CIVILIAN_AR,NIF_SECURITY_AR,NIF_ENGINE_AR,NIF_SCIENCE_AR,NIF_OMNI_AR) nif.set_flag(NIF_V_AR_MEDICAL,NIF_FLAGS_VISION) deactivate() - if(..()) + if((. = ..())) nif.clear_flag(NIF_V_AR_MEDICAL,NIF_FLAGS_VISION) /datum/nifsoft/ar_sec @@ -40,17 +38,16 @@ desc = "Like the civilian model, but provides access to arrest status and security records." list_pos = NIF_SECURITY_AR cost = 750 - initial = TRUE - req_one_access = list(access_security) + access = access_security a_drain = 0.05 activate() - if(..()) + if((. = ..())) nif.deactivate_these(NIF_CIVILIAN_AR,NIF_MEDICAL_AR,NIF_ENGINE_AR,NIF_SCIENCE_AR,NIF_OMNI_AR) nif.set_flag(NIF_V_AR_SECURITY,NIF_FLAGS_VISION) deactivate() - if(..()) + if((. = ..())) nif.clear_flag(NIF_V_AR_SECURITY,NIF_FLAGS_VISION) /datum/nifsoft/ar_eng @@ -58,17 +55,16 @@ desc = "Like the civilian model, but provides station alert notices." list_pos = NIF_ENGINE_AR cost = 750 - initial = TRUE - req_one_access = list(access_engine) + access = access_engine a_drain = 0.05 activate() - if(..()) + if((. = ..())) nif.deactivate_these(NIF_CIVILIAN_AR,NIF_MEDICAL_AR,NIF_SECURITY_AR,NIF_SCIENCE_AR,NIF_OMNI_AR) nif.set_flag(NIF_V_AR_ENGINE,NIF_FLAGS_VISION) deactivate() - if(..()) + if((. = ..())) nif.clear_flag(NIF_V_AR_ENGINE,NIF_FLAGS_VISION) /datum/nifsoft/ar_science @@ -76,17 +72,16 @@ desc = "Like the civilian model, but provides ... well, nothing. For now." list_pos = NIF_SCIENCE_AR cost = 750 - initial = TRUE - req_one_access = list(access_research) + access = access_research a_drain = 0.05 activate() - if(..()) + if((. = ..())) nif.deactivate_these(NIF_CIVILIAN_AR,NIF_MEDICAL_AR,NIF_SECURITY_AR,NIF_ENGINE_AR,NIF_OMNI_AR) nif.set_flag(NIF_V_AR_SCIENCE,NIF_FLAGS_VISION) deactivate() - if(..()) + if((. = ..())) nif.clear_flag(NIF_V_AR_SCIENCE,NIF_FLAGS_VISION) /datum/nifsoft/ar_omni @@ -94,17 +89,16 @@ desc = "Like the civilian model, but provides most of the features of the medical and security overlays as well." list_pos = NIF_OMNI_AR cost = 750 - initial = TRUE - req_one_access = list(access_captain) + access = access_captain a_drain = 0.05 activate() - if(..()) + if((. = ..())) nif.deactivate_these(NIF_CIVILIAN_AR,NIF_MEDICAL_AR,NIF_SECURITY_AR,NIF_ENGINE_AR,NIF_SCIENCE_AR) nif.set_flag(NIF_V_AR_OMNI,NIF_FLAGS_VISION) deactivate() - if(..()) + if((. = ..())) nif.clear_flag(NIF_V_AR_OMNI,NIF_FLAGS_VISION) ////////////// @@ -117,11 +111,11 @@ a_drain = 0.025 activate() - if(..()) + if((. = ..())) nif.set_flag(NIF_V_CORRECTIVE,NIF_FLAGS_VISION) deactivate() - if(..()) + if((. = ..())) nif.clear_flag(NIF_V_CORRECTIVE,NIF_FLAGS_VISION) /datum/nifsoft/uvblocker @@ -132,11 +126,11 @@ a_drain = 0.2 activate() - if(..()) + if((. = ..())) nif.set_flag(NIF_V_UVFILTER,NIF_FLAGS_VISION) deactivate() - if(..()) + if((. = ..())) nif.clear_flag(NIF_V_UVFILTER,NIF_FLAGS_VISION) /datum/nifsoft/flashprot @@ -144,15 +138,15 @@ desc = "Enables a high-speed shielding response to intense light, such as flashes, to block them." list_pos = NIF_FLASHPROT cost = 600 - req_one_access = list(access_security) + access = access_security a_drain = 0.05 activate() - if(..()) + if((. = ..())) nif.set_flag(NIF_V_FLASHPROT,NIF_FLAGS_VISION) deactivate() - if(..()) + if((. = ..())) nif.clear_flag(NIF_V_FLASHPROT,NIF_FLAGS_VISION) //////////////// @@ -163,19 +157,20 @@ list_pos = NIF_MESONS cost = 1000 a_drain = 0.1 + access = access_engine tick_flags = NIF_ACTIVETICK activate() - if(..()) + if((. = ..())) nif.deactivate_these(NIF_MATERIAL,NIF_THERMALS,NIF_NIGHTVIS) nif.set_flag(NIF_V_MESONS,NIF_FLAGS_VISION) deactivate() - if(..()) + if((. = ..())) nif.clear_flag(NIF_V_MESONS,NIF_FLAGS_VISION) life() - if(..()) + if((. = ..())) var/mob/living/carbon/human/H = nif.human H.client.screen |= global_hud.meson H.sight |= SEE_TURFS @@ -186,19 +181,20 @@ list_pos = NIF_MATERIAL cost = 1000 a_drain = 0.1 + access = access_research tick_flags = NIF_ACTIVETICK activate() - if(..()) + if((. = ..())) nif.deactivate_these(NIF_MESONS,NIF_THERMALS,NIF_NIGHTVIS) nif.set_flag(NIF_V_MATERIAL,NIF_FLAGS_VISION) deactivate() - if(..()) + if((. = ..())) nif.clear_flag(NIF_V_MATERIAL,NIF_FLAGS_VISION) life() - if(..()) + if((. = ..())) nif.human.sight |= SEE_OBJS /datum/nifsoft/thermals @@ -206,21 +202,21 @@ desc = "Similar to the worn Thermal Goggles, these allow you to see heat-emitting creatures through walls." list_pos = NIF_THERMALS cost = 1000 - req_one_access = list(access_security) a_drain = 0.1 + access = access_captain tick_flags = NIF_ACTIVETICK activate() - if(..()) + if((. = ..())) nif.deactivate_these(NIF_MESONS,NIF_MATERIAL,NIF_NIGHTVIS) nif.set_flag(NIF_V_THERMALS,NIF_FLAGS_VISION) deactivate() - if(..()) + if((. = ..())) nif.clear_flag(NIF_V_THERMALS,NIF_FLAGS_VISION) life() - if(..()) + if((. = ..())) var/mob/living/carbon/human/H = nif.human H.sight |= SEE_MOBS H.client.screen |= global_hud.thermal @@ -231,21 +227,21 @@ desc = "Similar to the worn Night Vision Goggles, these allow you to see in complete darkness." list_pos = NIF_NIGHTVIS cost = 1000 - req_one_access = list(access_security) a_drain = 0.1 + access = access_security tick_flags = NIF_ACTIVETICK activate() - if(..()) + if((. = ..())) nif.deactivate_these(NIF_MESONS,NIF_MATERIAL,NIF_THERMALS) nif.set_flag(NIF_V_NIGHTVIS,NIF_FLAGS_VISION) deactivate() - if(..()) + if((. = ..())) nif.clear_flag(NIF_V_NIGHTVIS,NIF_FLAGS_VISION) life() - if(..()) + if((. = ..())) var/mob/living/carbon/human/H = nif.human H.see_in_dark += 7 H.client.screen |= global_hud.nvg diff --git a/code/modules/nifsoft/software/05_health.dm b/code/modules/nifsoft/software/05_health.dm index 4bc83c407f..1d606d2653 100644 --- a/code/modules/nifsoft/software/05_health.dm +++ b/code/modules/nifsoft/software/05_health.dm @@ -1,14 +1,41 @@ -/* -#define NIF_SPAREBREATH 17 -*/ +// #define NIF_CREWMONITOR 14 +/datum/nifsoft/crewmonitor + name = "Crew Monitor" + desc = "A link to the local crew monitor sensors. Useful for finding people in trouble." + list_pos = NIF_CREWMONITOR + access = access_medical + cost = 1250 + p_drain = 0.025 + var/datum/nano_module/crew_monitor/arscreen + + New() + ..() + arscreen = new(nif) + + Destroy() + qdel(arscreen) + ..() + + activate() + if((. = ..())) + arscreen.ui_interact(nif.human,"main",null,1,nif_state) + return TRUE + + deactivate() + if((. = ..())) + return TRUE + + stat_text() + return "Show Monitor" /datum/nifsoft/medichines_org - name = "Medichines (Org)" + name = "Medichines" desc = "An internal swarm of nanites to make sure you stay in good shape and to promote healing, or to preserve you if you are critically injured." list_pos = NIF_ORGANIC_HEAL cost = 2500 p_drain = 0.05 a_drain = 0.1 //This is messed with manually below. + wear = 2 activates = FALSE //It is automatic in emergencies, not manually controllable. tick_flags = NIF_ALWAYSTICK applies_to = NIF_ORGANIC @@ -16,19 +43,19 @@ //These self-activate on their own, these aren't user-settable to on/off. activate() - if(..()) + if((. = ..())) nif.set_flag(NIF_H_ORGREPAIR,NIF_FLAGS_HEALTH) mode = 1 deactivate() - if(..()) + if((. = ..())) nif.clear_flag(NIF_H_ORGREPAIR,NIF_FLAGS_HEALTH) a_drain = initial(a_drain) mode = initial(mode) - nif.human.in_stasis = 0 + nif.human.Stasis(0) life() - if(..()) + if((. = ..())) var/mob/living/carbon/human/H = nif.human var/HP_percent = H.health/H.getMaxHealth() @@ -67,21 +94,22 @@ //Patient critical - emergency stasis if(mode >= 3) if(HP_percent <= 0) - H.in_stasis = 3 + H.Stasis(3) if(HP_percent > 0.2) - H.in_stasis = 0 + H.Stasis(0) nif.notify("Ending emergency stasis.",TRUE) mode = 2 return TRUE /datum/nifsoft/medichines_syn - name = "Medichines (Syn)" + name = "Medichines" desc = "A swarm of mechanical repair nanites, able to repair relatively minor damage to synthetic bodies. Large repairs must still be performed manually." list_pos = NIF_SYNTH_HEAL cost = 2500 p_drain = 0.05 a_drain = 0.00 //This is manually drained below. + wear = 2 activates = FALSE //It is automatic in emergencies, not manually controllable. tick_flags = NIF_ALWAYSTICK applies_to = NIF_SYNTHETIC @@ -89,17 +117,17 @@ //These self-activate on their own, these aren't user-settable to on/off. activate() - if(..()) + if((. = ..())) nif.set_flag(NIF_H_SYNTHREPAIR,NIF_FLAGS_HEALTH) mode = 1 deactivate() - if(..()) + if((. = ..())) nif.clear_flag(NIF_H_SYNTHREPAIR,NIF_FLAGS_HEALTH) mode = 0 life() - if(..()) + if((. = ..())) //We're good! if(!nif.human.bad_external_organs.len) if(mode || active) @@ -135,6 +163,7 @@ cost = 650 p_drain = 0.05 a_drain = 0.1 + wear = 2 tick_flags = NIF_ALWAYSTICK applies_to = NIF_ORGANIC var/filled = 100 //Tracks the internal tank 'refilling', which still uses power @@ -143,17 +172,17 @@ if(!(filled > 50)) nif.notify("Respirocytes not saturated!",TRUE) return FALSE - if(..()) + if((. = ..())) nif.set_flag(NIF_H_SPAREBREATH,NIF_FLAGS_HEALTH) nif.notify("Now taking air from reserves.") deactivate() - if(..()) + if((. = ..())) nif.clear_flag(NIF_H_SPAREBREATH,NIF_FLAGS_HEALTH) nif.notify("Now taking air from environment and refilling reserves.") life() - if(..()) + if((. = ..())) if(active) //Supplying air, not recharging it switch(filled) //Text warnings if(75) diff --git a/code/modules/nifsoft/software/10_combat.dm b/code/modules/nifsoft/software/10_combat.dm index 64f3ae9a25..38fe1b86e2 100644 --- a/code/modules/nifsoft/software/10_combat.dm +++ b/code/modules/nifsoft/software/10_combat.dm @@ -1,7 +1,140 @@ /* -#define NIF_BRUTEARMOR 18 -#define NIF_BURNARMOR 19 -#define NIF_PAINKILLERS 20 -#define NIF_HARDCLAWS 21 #define NIF_HIDDENLASER 22 -*/ \ No newline at end of file +*/ + +/datum/nifsoft/brute_armor + name = "Bullhide Mod" + desc = "A difficult-to-produce thickening of the dermis and skeletal structure, allowing a user to absorb more external trauma from physical sources." + list_pos = NIF_BRUTEARMOR + cost = 3200 + p_drain = 0.05 + illegal = TRUE + wear = 3 + access = 999 //Prevents anyone from buying it without an emag. + activates = FALSE //It's armor. + + install() + if((. = ..())) + nif.set_flag(NIF_C_BRUTEARMOR,NIF_FLAGS_COMBAT) + + uninstall() + . = ..() + nif.clear_flag(NIF_C_BRUTEARMOR,NIF_FLAGS_COMBAT) + +/datum/nifsoft/burn_armor + name = "Dragon's Skin" + desc = "A thin layer of material under the skin provides heat disappation for burns, reducing the trauma from lasers and fire. Not effective against ongoing environmental heat." + list_pos = NIF_BURNARMOR + cost = 3200 + p_drain = 0.05 + illegal = TRUE + wear = 3 + access = 999 //Prevents anyone from buying it without an emag. + activates = FALSE //It's armor. + + install() + if((. = ..())) + nif.set_flag(NIF_C_BURNARMOR,NIF_FLAGS_COMBAT) + + uninstall() + . = ..() + nif.clear_flag(NIF_C_BURNARMOR,NIF_FLAGS_COMBAT) + +/datum/nifsoft/painkillers + name = "Nova Shock" + desc = "A constant stream of high-grade painkillers numb the user's body to all pain. Generally results in extreme addiction or overdose." + list_pos = NIF_PAINKILLERS + cost = 2600 + a_drain = 1 //Gotta produce them drugs, yo. + illegal = TRUE + wear = 2 + access = 999 //Prevents anyone from buying it without an emag. + tick_flags = NIF_ACTIVETICK + + activate() + if((. = ..())) + nif.set_flag(NIF_C_PAINKILLERS,NIF_FLAGS_COMBAT) + + deactivate() + if((. = ..())) + nif.clear_flag(NIF_C_PAINKILLERS,NIF_FLAGS_COMBAT) + + life() + if((. = ..())) + var/mob/living/carbon/human/H = nif.human + H.bloodstr.add_reagent("numbenzyme",0.5) + +/datum/nifsoft/hardclaws + name = "Bloodletters" + desc = "Generates monofilament wires from one's fingertips, allowing one to slash through almost any armor with relative ease. The monofilaments need to be replaced constantly, though, which does use power." + list_pos = NIF_HARDCLAWS + cost = 2200 + a_drain = 0.5 + illegal = TRUE + wear = 4 + access = 999 //Prevents anyone from buying it without an emag. + + activate() + if((. = ..())) + nif.set_flag(NIF_C_HARDCLAWS,NIF_FLAGS_COMBAT) + + deactivate() + if((. = ..())) + nif.clear_flag(NIF_C_HARDCLAWS,NIF_FLAGS_COMBAT) + +// The unarmed attack to go with the hardclaws +var/global/datum/unarmed_attack/hardclaws/unarmed_hardclaws = new() +/datum/unarmed_attack/hardclaws + attack_verb = list("claws") + attack_noun = list("talons") + damage = 15 + attack_sound = "punch" + miss_sound = 'sound/weapons/punchmiss.ogg' + sharp = 1 + edge = 1 + sparring_variant_type = /datum/unarmed_attack/hardclaws + +/datum/nifsoft/hidelaser + name = "Dazzle" + desc = "Fabricates a 2-shot holdout laser inside your body, which can be deployed (somewhat painfully) on demand. Only enough materials to generate one." + list_pos = NIF_HIDDENLASER + cost = 2200 + //a_drain = 50 //Done manually below. + illegal = TRUE + wear = 6 + access = 999 //Prevents anyone from buying it without an emag. + var/used = FALSE + + activate() + if((. = ..())) + nif.set_flag(NIF_C_HIDELASER,NIF_FLAGS_COMBAT) + if(used) + nif.notify("You do not have a hidden weapon to deploy anymore!",TRUE) + deactivate() + return FALSE + if(!nif.use_charge(50)) + nif.notify("Insufficient energy to deploy weapon!",TRUE) + deactivate() + return FALSE + + var/mob/living/carbon/human/H = nif.human + H.adjustHalLoss(30) + var/obj/item/weapon/gun/energy/gun/martin/dazzle/dgun = new(get_turf(H)) + H.put_in_hands(dgun) + nif.notify("Weapon deployed!",TRUE) + used = TRUE + spawn(0) + uninstall() + + deactivate() + if((. = ..())) + nif.clear_flag(NIF_C_HIDELASER,NIF_FLAGS_COMBAT) + +//The gun to go with this implant +/obj/item/weapon/gun/energy/gun/martin/dazzle + name = "Microlaser" + desc = "A tiny nanofabricated laser." + + icon = 'icons/obj/gun_vr.dmi' + icon_state = "PDW" + item_state = "gun" diff --git a/code/modules/nifsoft/software/14_commlink.dm b/code/modules/nifsoft/software/14_commlink.dm new file mode 100644 index 0000000000..4380c53952 --- /dev/null +++ b/code/modules/nifsoft/software/14_commlink.dm @@ -0,0 +1,132 @@ +/////////// +// Commlink - Has a bunch of extra stuff due to communicator defines. +/datum/nifsoft/commlink + name = "Commlink" + desc = "An internal communicator for keeping in touch with people." + list_pos = NIF_COMMLINK + cost = 500 + wear = 0 + p_drain = 0.01 + + install() + if((. = ..())) + nif.comm = new(nif,src) + + activate() + if((. = ..())) + nif.set_flag(NIF_O_COMMLINK,NIF_FLAGS_OTHER) + nif.comm.initialize_exonet(nif.human) + nif.comm.ui_interact(nif.human,key_state = commlink_state) + spawn(0) + deactivate() + + deactivate() + if((. = ..())) + nif.clear_flag(NIF_O_COMMLINK,NIF_FLAGS_OTHER) + + stat_text() + return "Show Commlink" + +/datum/nifsoft/commlink/Topic(href, href_list) + if(href_list["open"]) + activate() + +/obj/item/device/communicator/commlink + name = "commlink" + desc = "An internal communicator, basically." + occupation = "\[Commlink\]" + var/obj/item/device/nif/nif + var/datum/nifsoft/commlink/nifsoft + + New(var/newloc,var/soft) + ..() + nif = newloc + nifsoft = soft + register_device(nif.human) + qdel(camera) //Not supported on internal one. + + Destroy() + if(nif) + nif.comm = null + nif = null + ..() + +//So that only the owner's chat is relayed to others. +/obj/item/device/communicator/commlink/hear_talk(mob/living/M, text, verb, datum/language/speaking) + if(M != nif.human) return + for(var/obj/item/device/communicator/comm in communicating) + + var/turf/T = get_turf(comm) + if(!T) return + + var/icon_object = src + + var/list/mobs_to_relay + if(istype(comm,/obj/item/device/communicator/commlink)) + var/obj/item/device/communicator/commlink/CL = comm + mobs_to_relay = list(CL.nif.human) + icon_object = CL.nif.big_icon + else + var/list/in_range = get_mobs_and_objs_in_view_fast(T,world.view,0) + mobs_to_relay = in_range["mobs"] + + for(var/mob/mob in mobs_to_relay) + //Can whoever is hearing us understand? + if(!mob.say_understands(M, speaking)) + if(speaking) + text = speaking.scramble(text) + else + text = stars(text) + var/name_used = M.GetVoice() + var/rendered = null + if(speaking) //Language being used + rendered = "\icon[icon_object] [name_used] [speaking.format_message(text, verb)]" + else + rendered = "\icon[icon_object] [name_used] [verb], \"[text]\"" + mob.show_message(rendered, 2) + +//Not supported by the internal one +/obj/item/device/communicator/commlink/show_message(msg, type, alt, alt_type) + return + +//The silent treatment +/obj/item/device/communicator/commlink/request(var/atom/candidate) + if(candidate in voice_requests) + return + var/who = null + if(isobserver(candidate)) + who = candidate.name + else if(istype(candidate, /obj/item/device/communicator)) + var/obj/item/device/communicator/comm = candidate + who = comm.owner + comm.voice_invites |= src + + if(!who) + return + + voice_requests |= candidate + + if(ringer && nif.human) + nif.notify("New commlink call from [who]. (
    Open)") + +//Similar reason +/obj/item/device/communicator/commlink/request_im(var/atom/candidate, var/origin_address, var/text) + var/who = null + if(isobserver(candidate)) + var/mob/observer/dead/ghost = candidate + who = ghost + im_list += list(list("address" = origin_address, "to_address" = exonet.address, "im" = text)) + else if(istype(candidate, /obj/item/device/communicator)) + var/obj/item/device/communicator/comm = candidate + who = comm.owner + comm.im_contacts |= src + im_list += list(list("address" = origin_address, "to_address" = exonet.address, "im" = text)) + else return + + im_contacts |= candidate + + if(!who) + return + + if(ringer && nif.human) + nif.notify("Commlink message from [who]: \"[text]\" (Open)") diff --git a/code/modules/nifsoft/software/15_misc.dm b/code/modules/nifsoft/software/15_misc.dm index a20e26c3a6..cc8d6b8b10 100644 --- a/code/modules/nifsoft/software/15_misc.dm +++ b/code/modules/nifsoft/software/15_misc.dm @@ -1,9 +1,182 @@ -/* -#define NIF_COMMLINK 23 -#define NIF_SUITSENSORS 24 -#define NIF_APCCHARGE 25 -#define NIF_PRESSURE 26 -#define NIF_HEATSINK 27 -#define NIF_UVFILTER 28 -#define NIF_FLASHPROT 29 -*/ \ No newline at end of file +/datum/nifsoft/apc_recharge + name = "APC Connector" + desc = "A small attachment that allows synthmorphs to recharge themselves from APCs." + list_pos = NIF_APCCHARGE + cost = 1250 + wear = 2 + applies_to = NIF_SYNTHETIC + tick_flags = NIF_ACTIVETICK + var/obj/machinery/power/apc/apc + + activate() + if((. = ..())) + var/mob/living/carbon/human/H = nif.human + nif.set_flag(NIF_O_APCCHARGE,NIF_FLAGS_OTHER) + apc = locate(/obj/machinery/power/apc) in get_step(H,H.dir) + if(!apc) + apc = locate(/obj/machinery/power/apc) in get_step(H,0) + if(!apc) + nif.notify("You must be facing an APC to connect to.",TRUE) + spawn(0) + deactivate() + return FALSE + + H.visible_message("Thin snakelike tendrils grow from [H] and connect to \the [apc].","Thin snakelike tendrils grow from you and connect to \the [apc].") + + deactivate() + if((. = ..())) + nif.clear_flag(NIF_O_APCCHARGE,NIF_FLAGS_OTHER) + apc = null + + life() + if((. = ..())) + var/mob/living/carbon/human/H = nif.human + if(apc && (get_dist(H,apc) <= 1) && H.nutrition < 450) + H.nutrition = min(H.nutrition+10, 450) + apc.drain_power(7000/450*10) //This is from the large rechargers. No idea what the math is. + return TRUE + else + nif.notify("APC charging has ended.") + H.visible_message("[H]'s snakelike tendrils whip back into their body from \the [apc].","The APC connector tendrils return to your body.") + deactivate() + return FALSE + +/datum/nifsoft/pressure + name = "Pressure Seals" + desc = "Creates pressure seals around important synthetic components to protect them from vacuum. Almost impossible on organics." + list_pos = NIF_PRESSURE + cost = 1750 + a_drain = 0.5 + wear = 3 + applies_to = NIF_SYNTHETIC + + activate() + if((. = ..())) + nif.set_flag(NIF_O_PRESSURESEAL,NIF_FLAGS_OTHER) + + deactivate() + if((. = ..())) + nif.clear_flag(NIF_O_PRESSURESEAL,NIF_FLAGS_OTHER) + +/datum/nifsoft/heatsinks + name = "Heat Sinks" + desc = "Advanced heat sinks for internal heat storage of heat on a synth until able to vent it in atmosphere." + list_pos = NIF_HEATSINK + cost = 1450 + a_drain = 0.25 + wear = 3 + var/used = 0 + tick_flags = NIF_ALWAYSTICK + applies_to = NIF_SYNTHETIC + + activate() + if((. = ..())) + if(used >= 50) + nif.notify("Heat sinks not safe to operate again yet!",TRUE) + spawn(0) + deactivate() + return FALSE + nif.set_flag(NIF_O_HEATSINKS,NIF_FLAGS_OTHER) + + deactivate() + if((. = ..())) + nif.clear_flag(NIF_O_HEATSINKS,NIF_FLAGS_OTHER) + + life() + if((. = ..())) + //Not being used, all clean. + if(!active && !used) + return TRUE + + //Being used, and running out. + else if(active && ++used == 100) + nif.notify("Heat sinks overloaded! Shutting down!",TRUE) + deactivate() + + //Being cleaned, and finishing empty. + else if(!active && --used == 0) + nif.notify("Heat sinks re-chilled.") + +/datum/nifsoft/compliance + name = "Compliance Module" + desc = "A system that allows one to apply 'laws' to sapient life. Extremely illegal, of course." + list_pos = NIF_COMPLIANCE + cost = 8200 + wear = 4 + illegal = TRUE + vended = FALSE + access = 999 //Prevents anyone from buying it without an emag. + var/laws = "Be nice to people!" + + New(var/newloc,var/newlaws) + laws = newlaws //Sanitize before this (the disk does) + ..(newloc) + + activate() + if((. = ..())) + to_chat(nif.human,"You are compelled to follow these rules: \n[laws]") + + install() + if((. = ..())) + to_chat(nif.human,"You feel suddenly compelled to follow these rules: \n[laws]") + + uninstall() + nif.notify("ERROR! Unable to comply!",TRUE) + return FALSE //NOPE. + + stat_text() + return "Show Laws" + +/datum/nifsoft/sizechange + name = "Mass Alteration" + desc = "A system that allows one to change their size, through drastic mass rearrangement. Causes significant wear when installed." + list_pos = NIF_SIZECHANGE + cost = 750 + wear = 6 + + activate() + if((. = ..())) + var/choice = alert(nif.human,"Change which way?","Mass Alteration","Size Up","Cancel", "Size Down") + if(choice == "Cancel") + spawn(0) deactivate() + return FALSE + + if(!nif.use_charge(100)) + nif.notify("Insufficient energy to resize!",TRUE) + spawn(0) deactivate() + return FALSE + + if(choice == "Size Up") + switch(nif.human.size_multiplier) + if(RESIZE_BIG to RESIZE_HUGE) + nif.human.resize(RESIZE_HUGE) + if(RESIZE_NORMAL to RESIZE_BIG) + nif.human.resize(RESIZE_BIG) + if(RESIZE_SMALL to RESIZE_NORMAL) + nif.human.resize(RESIZE_NORMAL) + if((0 - INFINITY) to RESIZE_TINY) + nif.human.resize(RESIZE_SMALL) + + else if(choice == "Size Down") + switch(nif.human.size_multiplier) + if(RESIZE_HUGE to INFINITY) + nif.human.resize(RESIZE_BIG) + if(RESIZE_BIG to RESIZE_HUGE) + nif.human.resize(RESIZE_NORMAL) + if(RESIZE_NORMAL to RESIZE_BIG) + nif.human.resize(RESIZE_SMALL) + if((0 - INFINITY) to RESIZE_NORMAL) + nif.human.resize(RESIZE_TINY) + + nif.human.visible_message("Swirling grey mist envelops [nif.human] as they change size!","Swirling streams of nanites wrap around you as you change size!") + nif.human.update_icons() + + spawn(0) + deactivate() + + deactivate() + if((. = ..())) + return TRUE + + stat_text() + return "Change Size" \ No newline at end of file diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 63a1d2ff50..478ebc4d38 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -98,6 +98,8 @@ while(null in owner.organs) owner.organs -= null + implants.Cut() //VOREStation Add - Remove these too! + return ..() /obj/item/organ/external/emp_act(severity) diff --git a/code/modules/research/designs_vr.dm b/code/modules/research/designs_vr.dm index 07285cf921..64ed9b5d30 100644 --- a/code/modules/research/designs_vr.dm +++ b/code/modules/research/designs_vr.dm @@ -77,6 +77,14 @@ build_path = /obj/item/device/universal_translator/ear sort_string = "HABBB" +/datum/design/item/nif + name = "nanite implant framework" + id = "nif" + req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 8000, "uranium" = 6000, "diamond" = 6000) + build_path = /obj/item/device/nif + sort_string = "HABBC" + // Resleeving Circuitboards /datum/design/circuit/transhuman_clonepod diff --git a/code/modules/resleeving/implant.dm b/code/modules/resleeving/implant.dm index d5e2dfac6a..e6dd47b705 100644 --- a/code/modules/resleeving/implant.dm +++ b/code/modules/resleeving/implant.dm @@ -49,7 +49,8 @@ BITSET(H.hud_updateflag, BACKUP_HUD) //Okay we've got a mind at least if(H == imp_in && H.mind && H.stat < DEAD) - transcore.m_backup(H.mind) + transcore.m_backup(H.mind,H.nif) + persist_nif_data(H) spawn(attempt_delay) backup() diff --git a/code/modules/resleeving/infocore.dm b/code/modules/resleeving/infocore.dm index e03e3291a9..dc0b06d8bd 100644 --- a/code/modules/resleeving/infocore.dm +++ b/code/modules/resleeving/infocore.dm @@ -40,7 +40,7 @@ var/datum/transhuman/infocore/transcore = new/datum/transhuman/infocore spawn(process_time) process() -/datum/transhuman/infocore/proc/m_backup(var/datum/mind/mind) +/datum/transhuman/infocore/proc/m_backup(var/datum/mind/mind,var/obj/item/device/nif/nif) ASSERT(mind) if(!mind.name || core_dumped) return 0 @@ -50,6 +50,20 @@ var/datum/transhuman/infocore/transcore = new/datum/transhuman/infocore if(mind.name in backed_up) MR = backed_up[mind.name] MR.last_update = world.time + if(nif) + MR.nif_path = nif.type + MR.nif_durability = nif.durability + var/list/nifsofts = list() + for(var/N in nif.nifsofts) + if(N) + var/datum/nifsoft/nifsoft = N + nifsofts += nifsoft.type + MR.nif_software = nifsofts + else + MR.nif_path = null + MR.nif_durability = null + MR.nif_software = null + else MR = new(mind, mind.current, 1) @@ -114,6 +128,10 @@ var/datum/transhuman/infocore/transcore = new/datum/transhuman/infocore var/languages var/mind_oocnotes + var/nif_path + var/nif_durability + var/list/nif_software + /datum/transhuman/mind_record/New(var/datum/mind/mind,var/mob/living/carbon/human/M,var/obj/item/weapon/implant/backup/imp,var/add_to_db = 1) ASSERT(mind && M && imp) diff --git a/code/modules/resleeving/machines.dm b/code/modules/resleeving/machines.dm index abab41e929..4216f6fb0a 100644 --- a/code/modules/resleeving/machines.dm +++ b/code/modules/resleeving/machines.dm @@ -504,6 +504,12 @@ occupant.ooc_notes = MR.mind_oocnotes occupant.apply_vore_prefs() //Cheap hack for now to give them SOME bellies. + //Re-supply a NIF if one was backed up with them. + if(MR.nif_path) + var/obj/item/device/nif/nif = new MR.nif_path(occupant,MR.nif_durability) + for(var/path in MR.nif_software) + new path(nif) + // If it was a custom sleeve (not owned by anyone), update namification sequences if(!occupant.original_player) occupant.real_name = occupant.mind.name diff --git a/code/modules/vore/persist/persist_vr.dm b/code/modules/vore/persist/persist_vr.dm index 977473812a..bddd9bc7b9 100644 --- a/code/modules/vore/persist/persist_vr.dm +++ b/code/modules/vore/persist/persist_vr.dm @@ -78,6 +78,10 @@ WARNING("persist_interround_data failed to prep [occupant] for persisting") return + //This one doesn't rely on persistence prefs + if(ishuman(occupant) && occupant.stat != DEAD) + persist_nif_data(occupant, prefs) + if(!prefs.persistence_settings) return // Persistence disabled by preference settings @@ -94,6 +98,7 @@ if(prefs.persistence_settings & PERSIST_WEIGHT) resolve_excess_nutrition(H) prefs.weight_vr = H.weight + prefs.save_character() // Saves mob's current coloration state to prefs @@ -212,7 +217,30 @@ * towards future shenanigans such as upgradable NIFs or different types or things of that nature, * without invoking the need for a bunch of different save file variables. */ -/proc/persist_nif_data(var/mob/living/carbon/human/H) +/proc/persist_nif_data(var/mob/living/carbon/human/H,var/datum/preferences/prefs) if(!istype(H)) CRASH("persist_nif_data given a nonhuman: [H]") + if(!prefs) + prefs = prep_for_persist(H) + + if(!prefs) + WARNING("persist_nif_data failed to prep [H] for persisting") + return + + var/obj/item/device/nif/nif = H.nif + + if(nif) + prefs.nif_path = nif.type + prefs.nif_durability = nif.durability + else + prefs.nif_path = null + prefs.nif_durability = null + + var/datum/category_group/player_setup_category/vore_cat = prefs.player_setup.categories_by_name["VORE"] + var/datum/category_item/player_setup_item/vore/nif/nif_prefs = vore_cat.items_by_name["NIF Data"] + + var/savefile/S = new /savefile(prefs.path) + if(!S) WARNING ("Couldn't load NIF save savefile? [prefs.real_name]") + S.cd = "/character[prefs.default_slot]" + nif_prefs.save_character(S) diff --git a/icons/obj/vending_vr.dmi b/icons/obj/vending_vr.dmi index b6c7cbb8e6c6294aa6a2d7c84a3cb0f334d672d9..e7f1f48d3235d93a22fbe92a9fb9ac67b7b31279 100644 GIT binary patch delta 8490 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 diff --git a/maps/tether/tether-01-surface.dmm b/maps/tether/tether-01-surface.dmm index a9046f15e7..564f67fe31 100644 --- a/maps/tether/tether-01-surface.dmm +++ b/maps/tether/tether-01-surface.dmm @@ -1152,7 +1152,7 @@ "awh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_one) "awi" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"},/obj/effect/floor_decal/industrial/danger{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_one) "awj" = (/obj/machinery/status_display{pixel_y = 30},/obj/machinery/vending/fitness,/obj/effect/floor_decal/corner/lightgrey{dir = 9},/obj/effect/floor_decal/corner/lightgrey{dir = 6},/turf/simulated/floor/tiled/monotile,/area/crew_quarters/locker/laundry_arrival) -"awk" = (/obj/machinery/vending/cola,/obj/effect/floor_decal/corner/lightgrey{dir = 9},/obj/effect/floor_decal/corner/lightgrey{dir = 6},/turf/simulated/floor/tiled/monotile,/area/crew_quarters/locker/laundry_arrival) +"awk" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7,/obj/machinery/vending/nifsoft_shop,/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three) "awl" = (/obj/machinery/vending/snack,/obj/effect/floor_decal/corner/lightgrey{dir = 9},/obj/effect/floor_decal/corner/lightgrey{dir = 6},/turf/simulated/floor/tiled/monotile,/area/crew_quarters/locker/laundry_arrival) "awm" = (/obj/machinery/camera/network/civilian,/obj/machinery/vending/coffee,/obj/effect/floor_decal/corner/lightgrey{dir = 9},/obj/effect/floor_decal/corner/lightgrey{dir = 6},/turf/simulated/floor/tiled/monotile,/area/crew_quarters/locker/laundry_arrival) "awn" = (/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/lightgrey/border{dir = 9},/turf/simulated/floor/tiled,/area/crew_quarters/locker/laundry_arrival) @@ -4237,7 +4237,7 @@ "bDy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three) "bDz" = (/obj/structure/cable{icon_state = "1-2"},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/effect/floor_decal/borderfloor/corner2{dir = 4},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7,/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three) "bDA" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/firealarm{dir = 2; layer = 3.3; pixel_x = 0; pixel_y = 26},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7,/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three) -"bDB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7,/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three) +"bDB" = (/obj/effect/floor_decal/corner/lightgrey{dir = 9},/obj/effect/floor_decal/corner/lightgrey{dir = 6},/obj/machinery/vending/nifsoft_shop,/turf/simulated/floor/tiled/monotile,/area/crew_quarters/locker/laundry_arrival) "bDC" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/lightgrey/border{dir = 5},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three) "bDD" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/tcomsat{name = "\improper Telecomms Lobby"}) "bDE" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/porta_turret{dir = 6},/turf/simulated/floor/tiled/dark,/area/tcomsat{name = "\improper Telecomms Lobby"}) @@ -5455,7 +5455,7 @@ aaaaadaadaadaadaadaadaadaadaadaagaagamGasrassastasuasuasuasuasuasuasvaswasxasyas aaaaadaadaadaadaadaadaadaadaadaagamGamGamGamGatcaoZaoZatdateatfatgathaoZatiatjatkatlatmatnatoatparpatqatratratratratsasLattatuatvatwatxatxatxatyasLatzatAasOatBatCatCatCatCatCatCagIagIagIaagaagaagaagaagaagaagagIatDatEatFatGatGatGatGatGatHatGatGatGatGatGatGatIatJanRatKaoTaoTatLatMatNatOaoTaoWaslanRaagapCapCapCapCatPataaqWaqnaqoarCarBarCarCarCarCarBarCaqrapCaaa aaaaadaadaadaadaadaadaadaadaagaagamGatQatRatSatTaoZaquaotatQamGatUatVatWamGatXatYarparparparparparpatZauaauaauaauaauaasLaubaucaudaueaufaufaufaugasLbeQauibeSaukatCaulaulaulaulatCaumaunagIagIagIagIauoagIagIagIagIaupakuauqaurausautautauuauvauwauxautautautauyajPajQanRauzauzauAauBauCauDauEauFauGauHanRaagapCauIauIapCauJataaqWaqnaqoarCarBarCarCarCarCarBarCaqrapCaaa aaaaadaadaadaadaadaadaadaadaagaagamGauKaoZaoZatTaoZauLaotauMamGatUauNauOamGauPauQbfxarXarXarXarXauSauTauaauUauVauWauXauYauZavaavbavcavdavdavdaveasLaZkavgasOavhatCaulaulaulaulaulaviavjavkavlavmavnavnavoavpavqavravsavtavuagIagIavvavvavvavvavvavvavwavvavvavxajPajQanRanRanRanRavyavzanRanRanRanRanRavAagIapCavBavBapCavCavDaqWaqnaqoarCarBarCarCarCarCarBarCaqYapCaaa -aaaaadaadaadaadaadaadaadaadaadaagamGavEavFavGavHbhtavJaotatQamGavKavLavMamGavNavOauaauaauaauaauaauaauaauaavPavQavRavSavTavUavVavWavXavYavYavZawaasLawbavgasOavhatCaulaulaulaulaulaviaviaviawcaviaviawdaviaweatGawfawgawhawiamgagXavvawjawkawlawmawnawoawpavvawqawrawsawtawuawvawwawxawyawzawAawBawCawDawEawuawFawGawGawHawIawJaqWaqnaqoarCarBarCarCarCarCarBarCaqrapCaaa +aaaaadaadaadaadaadaadaadaadaadaagamGavEavFavGavHbhtavJaotatQamGavKavLavMamGavNavOauaauaauaauaauaauaauaauaavPavQavRavSavTavUavVavWavXavYavYavZawaasLawbavgasOavhatCaulaulaulaulaulaviaviaviawcaviaviawdaviaweatGawfawgawhawiamgagXavvawjbDBawlawmawnawoawpavvawqawrawsawtawuawvawwawxawyawzawAawBawCawDawEawuawFawGawGawHawIawJaqWaqnaqoarCarBarCarCarCarCarBarCaqrapCaaa aaaaadaadaadaadaadaadaadaadaadaagawKawKawKawKawKawKawKawKawKawKawKawKawKawKawLavOauaawMawNawOawPawQawRawSawTawUawVawWauYawXawYawZaxaaxbaxcaxdaxeblMaxgblPasOavhatCaxiaulaulaulatCaxjaxkaxlaxmaxnaxoaxpaxqaxraxsaxtaxuaxvaxwagIagIavvaxxaxyaxzaxzaxAbZmaxCaxDaxEasRawgaxFatGatGaxGatGaxHaxIatGatGawgatGatGaxJaxKaxLaxMaxNaxKaxOaqWaqnaqoarCarBarCarCarCarCarBarCaqratbaaa aaaaadaadaadaadaadaadaadaadaadaagarpaxPaxQaxRaxRaxSaxRaxTaxUaxRaxRaxUaxRbphaxWavOauaaxXaxYaxZayaaybayaayaayaayaaycaydauYayeayfaygayhayiayjaykaylasLakYaymasObpiatCatCatCatCatCatCayoaypagIagIagIagIagIagIayqagIagIagIagIagIagIaagavvayraysaytayuayvaywayxayyayzayAayBayCayDayEayFayDayGayHayHayIayJayKayHayHayLayMayNayOayPayQaqWaqnaqoarCarBarCarCarCarCarBarCaqrapCaaa aaaaadaadaadaadaadaadaadaadaadaagarpayRaySayTayTayTayTayTayTayTayTayTayTayTayUayVauaayWawUayXayYayZayZayZazaazbazcazdasLasLasLauYauYazeasLasLasLasLaagazfasOasOasPasPasPasPasPasPagIagIagIaagaagaagaagazgazhazgaagaagaagaagaagaagavvaziazjazkazkavvazlazmavvagIagIaznagIagIagIagIagIazoagIagIagIagIagIauoagIapCazpazpapCavCazqaqWaqnaqoarCarBarCarCarCarCarBarCaqYapCaaa @@ -5687,7 +5687,7 @@ boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabp boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabqfbzhbCibAWbBFbBGbBGbBHbBHbBHbBHbBHbBIbBJbAFbAGbCjbznbCkbClbClbCmbCnbAHbCobznbpabpabpabpabzrbBnbCpbzrbCqbCqbzrbCrbBqbzwbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbvEbCsbCtbCubCubCubCvbCubCwbCxbCwbCwbCwbCwbCybCybCybCybpabpaboZboZboZboZboZboZboZboZboZboZboZboZboY boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzhbCzbAWbBFbBGbBGbCAbzObCBbBHbBHbBIbBJbAFbAGbCCbznbCDbCEbCFbCGbCHbAHbCIbznbpabpabpabpabzrbCJbCKbzrbCqbCqbzrbCLbBqbzwbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbvEbBUbCMbCNaMZaNybCQbCRbCSbCTbCUbCVbCWbCSbCXbCYbCZbDabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzGbAVbAWbBFbBGbBGbDbbDcbDdbBHbBHbBIbBJbAFbAGbCjbznbznbznbznbDebDfbzobznbznbwObwOaHnaHnbzrbzrbzrbzrbzrbzrbzrbDgbDhbzwbIIbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbvEbDibDjbDkbDlbDmbDnbDobCSbDpbCTbCTbDqbCSbDrbDsbDtbDabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY -boYboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzGbDubDvbBFbBGbBGbBGbBGbBGbBHbBHbBIbBJbAFbAGbAGbzibDwbwVbDxbDybDzbxbbxobDAbDBbDCaHnbmbbdqbaMaHobwsaPTaPFbwsbDIbBqaQRaQQbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbvEbBUbDJbwsbwsbDKbDLbDMbCSbDNbCTbCTbDObCSbDsbDsbDPbDabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY +boYboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzGbDubDvbBFbBGbBGbBGbBGbBGbBHbBHbBIbBJbAFbAGbAGbzibDwbwVbDxbDybDzbxbbxobDAawkbDCaHnbmbbdqbaMaHobwsaPTaPFbwsbDIbBqaQRaQQbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbvEbBUbDJbwsbwsbDKbDLbDMbCSbDNbCTbCTbDObCSbDsbDsbDPbDabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY boYboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzGbAVbDQbBFbBGbBGbBGbBGbBGbBHbBHbBIbDRbDSbDTbDUbDVbDWbyobyobDXbDYbyxbyxbDZbygbEaaHnbmmbmlbmlbmjbwsbEebEfbEgbEhbEiaRsaRrbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbEkbElbEmbEnbEobEpbEqaRGbCSbEsbEtbEubEvbCSbEwbExbDsbDabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY boYboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzhbEybDQbEzbEAbEAbEAbEAbEAbEBbEBbECbEDbEEbEFbEGbEHbEIbEJbEJbEJbEKbELbEMbENbEObEPbmtbmwbmvbmvbmubwsaRZbDHbwsbEVbzvaSdaSabAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbEXbBUbEYbEZbwsaSCbCQaSBbCSbFcbFdbFebFfbCSbFgbFhbFibDabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY boYboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzhbFjbFkbFlbFlbFlbFlbFlbFlbFlbFlbFlbFmbFnbFobFpbzhbwsbzZbzZbzZbwsbwsbvEbyVbFqbFraHnbmbbmybmxaHobwsbwsbwsbwsbFubzvaTeaTabAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbEXbBUbFvbDkbDkbDkaTybDkbCSbCSbFxbFybCSbCSbFzbFAbFzbFBbpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY diff --git a/maps/tether/tether-03-station.dmm b/maps/tether/tether-03-station.dmm index 221a24b85b..3c0a2abc28 100644 --- a/maps/tether/tether-03-station.dmm +++ b/maps/tether/tether-03-station.dmm @@ -2680,7 +2680,7 @@ "aZB" = (/obj/machinery/door/firedoor/glass,/obj/structure/disposalpipe/segment,/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "englockdown"; name = "Engineering Lockdown"; opacity = 0},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Mezzenine"; req_one_access = list()},/turf/simulated/floor/tiled/steel_grid,/area/engineering/foyer_mezzenine) "aZC" = (/obj/machinery/door/airlock/maintenance/engi,/obj/structure/cable{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/hallway/station/port) "aZD" = (/obj/machinery/vending/snack,/obj/effect/floor_decal/corner/lightgrey{dir = 9},/obj/effect/floor_decal/corner/lightgrey{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/turf/simulated/floor/tiled,/area/hallway/station/port) -"aZE" = (/obj/machinery/vending/cola,/obj/effect/floor_decal/corner/lightgrey{dir = 9},/obj/effect/floor_decal/corner/lightgrey{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/turf/simulated/floor/tiled,/area/hallway/station/starboard) +"aZE" = (/obj/effect/floor_decal/corner/lightgrey{dir = 9},/obj/effect/floor_decal/corner/lightgrey{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/machinery/vending/nifsoft_shop,/turf/simulated/floor/tiled,/area/hallway/station/starboard) "aZF" = (/obj/machinery/vending/coffee,/obj/effect/floor_decal/corner/lightgrey{dir = 9},/obj/effect/floor_decal/corner/lightgrey{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/turf/simulated/floor/tiled,/area/hallway/station/starboard) "aZG" = (/turf/simulated/wall/r_wall,/area/hallway/station/starboard) "aZH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/turf/simulated/floor/tiled,/area/hallway/station/starboard) diff --git a/maps/tether/tether-06-colony.dmm b/maps/tether/tether-06-colony.dmm index 9c04bd82cf..45192898b2 100644 --- a/maps/tether/tether-06-colony.dmm +++ b/maps/tether/tether-06-colony.dmm @@ -1363,6 +1363,8 @@ "Ak" = (/obj/structure/table/reinforced,/obj/item/device/camera,/obj/item/weapon/storage/box/ids,/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 10},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) "Al" = (/obj/structure/table/reinforced,/obj/machinery/computer/skills,/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 5},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) "Am" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/obj/effect/floor_decal/borderfloorblack/corner2{dir = 9},/obj/effect/floor_decal/borderfloorblack/corner2,/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 9},/obj/effect/floor_decal/corner/blue/bordercorner2,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"}) +"An" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/blue/border,/obj/machinery/vending/nifsoft_shop,/turf/unsimulated/floor/steel,/area/centcom/security) +"Ao" = (/obj/machinery/vending/nifsoft_shop,/turf/unsimulated/floor/steel{icon = 'icons/turf/floors_vr.dmi'; icon_state = "wood"},/area/centcom/restaurant) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -1441,7 +1443,7 @@ aaababababababababababababababababababababababababababjMkikhkhkikjkkjMababababab aaababababababababababababababababababababababababababjMlLkhkhkikjkkjMababababababacgGgGgGgGgGgGgGnHnInJnKnLhrhrnMnNnOkHnPnQnRlUlUnSnTlUnSnTlUlUnUnVnWkHltlololololonXnYnZlololololooakHahahahejobocodoeofogmdmdejkJhlhlhlhlnEohnFohnFnFoinGkKeS aaabababababababababababababababojokokokokokokokokokokolomononomomomomababababababacacacacacacacgGgGgGgGhthtoohrgGgGgGkHkHkHkHopoqkHkHorkHkHosoqkHkHkHotototototototototototototototototahahahouejejejejejovjKjKejkJhlkFkDkEhlowowowowowowhlkKeS aaabababababababababababababababomoxoyozoyoyoyoyozoyoAoBoCoCoCoDoEabababababababababacacacacacacgGoFoGoHoGoIhrhroJoGoKkHoLoMoNlUlUoOoPlUoQoRlUlUoSoToLotoUoVoWoXotoYoZpaoZoYotpbpbpbpbotahahahpclGkekelHkekdhlhlkclFhlkKejkJhlhlhlhlhlhlhlhlkKeS -aaabababababababababababababababomoxoyfyeWeWeWeWfyoyoAoBoCoCoCpfoEabababababababababacacacacacacgGpglPhrlPphhrhrhrhrpikHpjlUlUlUlUpklTnwlXpllUlUlUlUpmotoUpnoWoXotpopopopopootppppppppotahahahpckFkChlkBkDkDkChlkBkChlpqejprkDkDkDkEkFkDpsptpueS +aaabababababababababababababababomoxoyfyeWeWeWeWfyoyoAoBoCoCoCpfoEabababababababababacacacacacacgGpglPhrlPphhrhrhrhrpikHpjlUlUlUlUpklTnwlXpllUlUlUlUpmotoUpnoWoXotpopopopopootppppppppotahahahpckFkChlkBkDkDkChlkBkChlpqejprAnkDkDkEkFkDpsptpueS aaabababababababababababababababomoxfyfTfRhchcipfTfyoAoBoCoCoCpzoEabababababababababacacacacacacgGpAmkpBpCmkhrhrhrhrpDkHpjlUlUlUlUpEpFpFpFpGlUlUlUlUpHotoUpnoWpnpIpopopopopopJpopopopKotahahahouejejpcejejejejpLejejpcejejpMpNpNpNlFlGpNpNpNpOeS aaabababababababababababababababompPeWpdkMhchckMpeeWoAoBoCoCoCpzoEabababababababababacacacacacacgGmKhrhrhrhrhrhrhrhrpTkHpjlUlUlUlUlUlUlUlUlUlUlUlUlUpmotoUpnpnpnpIpopopopopopJpopopopKotbHahahjJpUpVhlpWpXjJsfhlpvpwhlqbejqcqdqdqdhlhlqdqdqdqeeS aaabababababababababababababababomoxeWpxpxhchcpxpxeWoAoBoCoCoCpzoEabababababababababababacacacacgGmKhrhrhrhrhrhrhrhrqgkHpjlUlUlUlUlUlUlUlUlUlUlUlUlUpmotoUpnpnqhotpoqipoqipootqjqjqjqjotahahahjJqknGhlhlqlqmqnhlhlqoqpqqejqrqsqsqsqsqsqsqsqsqteS @@ -1452,7 +1454,7 @@ aaabababababababababababababababomoxqfpxpxhchcpxpxqfoAoBoCoCahrKahahahahahahahah aaabababababababababababababababomoxqfipiphchcipipqfoAoBoCoCrTrKahahahahahahahahahahahahahahahahahrpahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahjDahahahjDahahahahahrLahrMrMrMrMahrNrzrzrzrzrOrUrQrRrRrSrI aaabababababababababababababababomoxeWqvkMhchckMqweWoAoBoCoCadriahahahahahahahahahrMrMrMrMrMrMahahqUahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahjDahahahjDahahahahahrXrYrYrYrYrYrYrZrzrzrzrzrCrDsasbsbscrI aaabababababababababababababababomoxfyqVpxhchcpxrgfyoAoBoCoCqWqXqXqXqXqXqXqXqXqXqXqXqXqXrhrVrJrJrVrhqXqXqXqXshjDqXqXshjDqXqXqXqXsisjsksjsisislslsisislslsijDjDjDotototsmototototslslslsijDjDjDejejejejejejousnsnsnsnsnsnouejejejejejejejejejejeS -aaabababababababababababababababquoxpyhchchchchchcpQoAoBoCoCoCoDoEabababababababababababrhsdrWsesdrhsrsrsraiahahssstahahaisrsrsrsisisisisisusvswsxswsyszsisAahahotsBsCsDsDsEsFotsGsHsIslahahahejsJsKsKsKsLejhlpYhlhlpYhlejsMsNsOsPsQejsRsSsTsUeS +aaabababababababababababababababquoxpyhchchchchchcpQoAoBoCoCoCoDoEabababababababababababrhsdrWsesdrhsrsrsraiahahssstahahaisrsrsrsisisisisisusvAosxswsyszsisAahahotsBsCsDsDsEsFotsGsHsIslahahahejsJsKsKsKsLejhlpYhlhlpYhlejsMsNsOsPsQejsRsSsTsUeS aaabababababababababababababababomoxsopxhcipiphcspsooAoBoCoCoCpzoEabababababababababababrhsVsqsXsWrhahtbtctctctctctctctctctctdahsiszsytetfswswswswswswswsiahahahottgsDsDthototottitjtkslahahahejtltmtmtmtnejejovtotoovejejtpfcfcfcfctqfcfcfctreS aaabababababababababababababababompPsosYhcipiphcsZsooAoBoCoCoCpzoEabababababababababababrhtstatattrhahtwtxtxtxtytxtxtytxtxtxtzahsiswswtAtAswswswtAtAswswsiahahahottgsDsDsDtBsFottCtDtEslahahahejtFfcfcfcfctGtHtIfcfctJtKtLfcfcfcfctMejtNfcfctreS aaabababababababababababababababomoxfyfTtupxtvhcfTfyoAoBoCoCoCpzoEabababababababababababrhtPtOuHtQrhtTtwtxtUtVtVtVtVtVtVtUtxtztWslswtXtYtZuaswtXubucuaswslahahahotudsDsDthotototuetDtEsiahahahejufugfcuhuiujukulfcfculumunuoupfcuqurejusututuueS diff --git a/maps/tether/tether-07-misc.dmm b/maps/tether/tether-07-misc.dmm index 9f4b9f4d35..c1189bb371 100644 --- a/maps/tether/tether-07-misc.dmm +++ b/maps/tether/tether-07-misc.dmm @@ -930,7 +930,7 @@ "rT" = (/obj/structure/table/rack,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/effect/floor_decal/borderfloorblack,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) "rU" = (/obj/structure/table/rack,/obj/item/weapon/pinpointer/nukeop,/obj/item/weapon/pinpointer/nukeop,/obj/item/weapon/pinpointer/nukeop,/obj/item/weapon/pinpointer/nukeop,/obj/item/weapon/pinpointer/nukeop,/obj/item/weapon/pinpointer/nukeop,/obj/effect/floor_decal/borderfloorblack,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) "rV" = (/obj/structure/table/rack,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/effect/floor_decal/borderfloorblack{dir = 6},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) -"rW" = (/obj/effect/floor_decal/borderfloorblack{dir = 8},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) +"rW" = (/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/machinery/vending/nifsoft_shop{categories = 111; emagged = 1; name = "Hacked NIFSoft Shop"; prices = list()},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) "rX" = (/obj/machinery/telecomms/allinone{intercept = 1},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base) "rY" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "antag_ground_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor/black,/area/shuttle/antag_ground/base) "rZ" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "antag_space_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor/black,/area/shuttle/antag_space/base) diff --git a/sound/items/nif_click.ogg b/sound/items/nif_click.ogg new file mode 100644 index 0000000000000000000000000000000000000000..4bb8db9f30f9ac5c90086780b30d30e3f6400b00 GIT binary patch literal 7990 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 literal 0 HcmV?d00001 diff --git a/sound/items/nif_tone_bad.ogg b/sound/items/nif_tone_bad.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d2c237acf3f35e4f70c759e2795d1a3ba926d9d2 GIT binary patch literal 11552 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 z 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 Date: Tue, 6 Jun 2017 02:02:28 -0400 Subject: [PATCH 77/84] Make NIFs survive Rejuve --- code/modules/organs/organ_external.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 478ebc4d38..638d2354b2 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -450,7 +450,7 @@ This function completely restores a damaged organ to perfect condition. // remove embedded objects and drop them on the floor for(var/obj/implanted_object in implants) - if(!istype(implanted_object,/obj/item/weapon/implant)) // We don't want to remove REAL implants. Just shrapnel etc. + if(!istype(implanted_object,/obj/item/weapon/implant) && !istype(implanted_object,/obj/item/device/nif)) // We don't want to remove REAL implants. Just shrapnel etc. //VOREStation Edit - NIFs pls implanted_object.loc = get_turf(src) implants -= implanted_object From be62d7693eebd87fcb55b459dbac7e9078ccc0bd Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Tue, 6 Jun 2017 15:13:36 -0400 Subject: [PATCH 78/84] Make syndie NIFSoft Shop free And remove a silly old comment I was referencing. --- code/modules/nifsoft/nif_softshop.dm | 32 ---------------------------- 1 file changed, 32 deletions(-) diff --git a/code/modules/nifsoft/nif_softshop.dm b/code/modules/nifsoft/nif_softshop.dm index 4d0da46843..67e786bf18 100644 --- a/code/modules/nifsoft/nif_softshop.dm +++ b/code/modules/nifsoft/nif_softshop.dm @@ -67,38 +67,6 @@ return ..() -/* -/obj/proc/allowed(mob/M) - //check if it doesn't require any access at all - if(src.check_access(null)) - return 1 - - var/id = M.GetIdCard() - if(id) - return check_access(id) - return 0 - -///obj/item/proc/GetAccess() -// return list() - -/atom/movable/proc/GetAccess() - var/obj/item/weapon/card/id/id = GetIdCard() - return id ? id.GetAccess() : list() - -/obj/proc/GetID() - return null - -/obj/proc/check_access(obj/item/I) - return check_access_list(I ? I.GetAccess() : list()) - -/obj/proc/check_access_list(var/list/L) - if(!req_access) req_access = list() - if(!req_one_access) req_one_access = list() - if(!L) return 0 - if(!istype(L, /list)) return 0 - return has_access(req_access, req_one_access, L) -*/ - //Had to override this too /obj/machinery/vending/nifsoft_shop/Topic(href, href_list) if(stat & (BROKEN|NOPOWER)) From c9915cca56f12ef827676e74091d46faec259da3 Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Tue, 6 Jun 2017 15:15:23 -0400 Subject: [PATCH 79/84] Adds the terrible quality NIF to trash piles --- code/game/objects/structures/trash_pile.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/objects/structures/trash_pile.dm b/code/game/objects/structures/trash_pile.dm index 0959f93004..c05c22d84f 100644 --- a/code/game/objects/structures/trash_pile.dm +++ b/code/game/objects/structures/trash_pile.dm @@ -226,7 +226,8 @@ prob(2);/obj/item/weapon/storage/box/syndie_kit/spy, prob(2);/obj/item/weapon/grenade/anti_photon, prob(1);/obj/item/weapon/cell/hyper/empty, - prob(1);/obj/item/weapon/disk/nifsoft/compliance) + prob(1);/obj/item/weapon/disk/nifsoft/compliance, + prob(1);/obj/item/device/nif/bad) var/obj/item/I = new path() return I From a333c8131b3b4d1a0ad3b013599072c3a22b4af8 Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Tue, 6 Jun 2017 19:51:00 -0400 Subject: [PATCH 80/84] Workaround for openspace turf corruption. It's an unresolved byond bug. --- code/modules/multiz/turf.dm | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/code/modules/multiz/turf.dm b/code/modules/multiz/turf.dm index 0b637d90bf..68c002b0b9 100644 --- a/code/modules/multiz/turf.dm +++ b/code/modules/multiz/turf.dm @@ -104,7 +104,12 @@ temp2.overlays += O.overlays // TODO Is pixelx/y needed? o_img += temp2 + var/overlay_count = overlays.len overlays += o_img + if(overlays.len != overlay_count + 1) //Here we go! + world.log << "Corrupted openspace turf at [x],[y],[z] being replaced." + new /turf/simulated/open(src) + return //Let's get out of here. if(!below_is_open) overlays += over_OS_darkness From 379e1ad12d46b9814d940d0b9cc8e23df5cccc0f Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Tue, 6 Jun 2017 20:18:57 -0400 Subject: [PATCH 81/84] Roiz Egg Tweak Stahp giving me compile warnings --- code/modules/vore/fluffstuff/custom_items_vr.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm index f0c21ce237..43fab87519 100644 --- a/code/modules/vore/fluffstuff/custom_items_vr.dm +++ b/code/modules/vore/fluffstuff/custom_items_vr.dm @@ -757,7 +757,7 @@ obj/item/weapon/material/hatchet/tacknife/combatknife/fluff/katarina/handle_shie to_chat(src, "[pick(rimplant.empty_message)]") return - var/obj/item/weapon/reagent_containers/food/snacks/egg/roiz/egg = new(get_turf(src)) + new /obj/item/weapon/reagent_containers/food/snacks/egg/roiz(get_turf(src)) var/index = rand(0,3) From 5ea2e30234c81f4f56d6a6c8eb0a353efd722f25 Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Tue, 6 Jun 2017 21:11:25 -0400 Subject: [PATCH 82/84] Leshana-suggested changes --- code/modules/mob/living/carbon/breathe.dm | 2 +- code/modules/nifsoft/nif.dm | 7 ++++--- code/modules/nifsoft/nif_statpanel.dm | 2 +- code/modules/nifsoft/nifsoft.dm | 8 ++++++-- code/modules/nifsoft/software/05_health.dm | 1 - code/modules/nifsoft/software/10_combat.dm | 4 ---- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/code/modules/mob/living/carbon/breathe.dm b/code/modules/mob/living/carbon/breathe.dm index 403088dc4b..8dffa60d1e 100644 --- a/code/modules/mob/living/carbon/breathe.dm +++ b/code/modules/mob/living/carbon/breathe.dm @@ -23,7 +23,7 @@ //Okay, we can breathe, now check if we can get air breath = get_breath_from_internal() //First, check for air from internals //VOREStation Add - Respirocytes as a NIF implant - if(ishuman(src)) + if(!breath && ishuman(src)) var/mob/living/carbon/human/H = src if(H.nif && H.nif.flag_check(NIF_H_SPAREBREATH,NIF_FLAGS_HEALTH)) var/datum/nifsoft/spare_breath/SB = H.nif.imp_check(NIF_SPAREBREATH) diff --git a/code/modules/nifsoft/nif.dm b/code/modules/nifsoft/nif.dm index dc958718cc..e8f4976f48 100644 --- a/code/modules/nifsoft/nif.dm +++ b/code/modules/nifsoft/nif.dm @@ -63,6 +63,7 @@ WARNING("NIF spawned in [H] failed to implant") spawn(0) qdel(src) + return FALSE else //Free commlink for return customers new /datum/nifsoft/commlink(src) @@ -122,7 +123,7 @@ return FALSE -//Being implanted in some mob +//Being removed from some mob /obj/item/device/nif/proc/unimplant(var/mob/living/carbon/human/H) human = null stat = NIF_PREINSTALL @@ -232,7 +233,7 @@ var/percent_done = (world.time - (install_done - (30 MINUTES))) / (30 MINUTES) - human.client.screen.Add(global_hud.whitense) + human.client.screen.Add(global_hud.whitense) //This is the camera static switch(percent_done) //This is 0.0 to 1.0 kinda percent. //Connecting to optical nerves @@ -369,7 +370,7 @@ //Uninstall a piece of software /obj/item/device/nif/proc/uninstall(var/datum/nifsoft/old_soft) - var/datum/nifsoft/NS = old_soft.list_pos + var/datum/nifsoft/NS = nifsofts[old_soft.list_pos] if(!NS || NS != old_soft) return FALSE //what?? diff --git a/code/modules/nifsoft/nif_statpanel.dm b/code/modules/nifsoft/nif_statpanel.dm index 4ddba7a3c9..23b5aca0b1 100644 --- a/code/modules/nifsoft/nif_statpanel.dm +++ b/code/modules/nifsoft/nif_statpanel.dm @@ -19,7 +19,7 @@ nif_status += " ([round((nif.durability/initial(nif.durability))*100)]%)" stat("NIF Status", nif_status) - if(!nif.stat) + if(nif.stat == NIF_WORKING) stat("- Modules -", "LMB: Toggle, Shift+LMB: Info/Uninstall") for(var/nifsoft in nif.nifsofts) if(!nifsoft) continue diff --git a/code/modules/nifsoft/nifsoft.dm b/code/modules/nifsoft/nifsoft.dm index f86e0150e3..0703adfab4 100644 --- a/code/modules/nifsoft/nifsoft.dm +++ b/code/modules/nifsoft/nifsoft.dm @@ -8,7 +8,7 @@ var/list_pos // List position in the nifsoft list var/cost = 1000 // Cost in cash of buying this software from a terminal - //TODO - While coding + var/vended = TRUE // This is available in NIFSoft Shops at the start of the game var/wear = 1 // The wear (+/- 10% when applied) that this causes to the NIF var/access // What access they need to buy it, can only set one for ~reasons~ @@ -72,6 +72,8 @@ //Called when attempting to activate an implant (could be a 'pulse' activation or toggling it on) /datum/nifsoft/proc/activate() + if(active) + return var/nif_result = nif.activate(src) if(nif_result) active = TRUE @@ -79,6 +81,8 @@ //Called when attempting to deactivate an implant /datum/nifsoft/proc/deactivate() + if(!active) + return var/nif_result = nif.deactivate(src) if(nif_result) active = FALSE @@ -150,7 +154,7 @@ return Ht.visible_message("[Hu] begins uploading new NIFSoft into [Ht]!","[Hu] is uploading new NIFSoft into you!") - if(do_after(Ht,10 SECONDS,Hu)) + if(do_after(Hu,10 SECONDS,Ht)) var/extra = extra_params() new stored(Ht.nif,extra) qdel(src) diff --git a/code/modules/nifsoft/software/05_health.dm b/code/modules/nifsoft/software/05_health.dm index 1d606d2653..70b28bce52 100644 --- a/code/modules/nifsoft/software/05_health.dm +++ b/code/modules/nifsoft/software/05_health.dm @@ -1,4 +1,3 @@ -// #define NIF_CREWMONITOR 14 /datum/nifsoft/crewmonitor name = "Crew Monitor" desc = "A link to the local crew monitor sensors. Useful for finding people in trouble." diff --git a/code/modules/nifsoft/software/10_combat.dm b/code/modules/nifsoft/software/10_combat.dm index 38fe1b86e2..fa5e40f393 100644 --- a/code/modules/nifsoft/software/10_combat.dm +++ b/code/modules/nifsoft/software/10_combat.dm @@ -1,7 +1,3 @@ -/* -#define NIF_HIDDENLASER 22 -*/ - /datum/nifsoft/brute_armor name = "Bullhide Mod" desc = "A difficult-to-produce thickening of the dermis and skeletal structure, allowing a user to absorb more external trauma from physical sources." From 2a19272f4a9bc2ab20a88f7f61321ed2756ccbf3 Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Tue, 6 Jun 2017 21:25:24 -0400 Subject: [PATCH 83/84] Openspace Bass Ackwards That math, yo. It's hard. --- code/modules/multiz/turf.dm | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/code/modules/multiz/turf.dm b/code/modules/multiz/turf.dm index 68c002b0b9..6248eb8993 100644 --- a/code/modules/multiz/turf.dm +++ b/code/modules/multiz/turf.dm @@ -94,7 +94,7 @@ // VOREStation Edit End // get objects (not mobs, they are handled by /obj/zshadow) - var/image/o_img = list() + var/list/o_img = list() for(var/obj/O in below) if(O.invisibility) continue // Ignore objects that have any form of invisibility if(O.loc != below) continue // Ignore multi-turf objects not directly below @@ -104,10 +104,11 @@ temp2.overlays += O.overlays // TODO Is pixelx/y needed? o_img += temp2 - var/overlay_count = overlays.len + var/overlays_pre = overlays.len overlays += o_img - if(overlays.len != overlay_count + 1) //Here we go! - world.log << "Corrupted openspace turf at [x],[y],[z] being replaced." + var/overlays_post = overlays.len + if(overlays_post != (overlays_pre + o_img.len)) //Here we go! + world.log << "Corrupted openspace turf at [x],[y],[z] being replaced. Pre: [overlays_pre], Post: [overlays_post]" new /turf/simulated/open(src) return //Let's get out of here. From 5b9d37ffec2f8dabaab830410b2a9473105c1af4 Mon Sep 17 00:00:00 2001 From: Cameron653 Date: Tue, 6 Jun 2017 21:57:51 -0400 Subject: [PATCH 84/84] Fluff item - Ruda Lizden (Hisstective's Badge) (#1632) * Adds Roiz's items * Adds Item --- .../vore/fluffstuff/custom_items_vr.dm | 27 ++++++++++++++++++ config/custom_items.txt | 6 ++++ icons/vore/custom_items_vr.dmi | Bin 40277 -> 40486 bytes 3 files changed, 33 insertions(+) diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm index 43fab87519..50179ed45e 100644 --- a/code/modules/vore/fluffstuff/custom_items_vr.dm +++ b/code/modules/vore/fluffstuff/custom_items_vr.dm @@ -1202,3 +1202,30 @@ obj/item/weapon/material/hatchet/tacknife/combatknife/fluff/katarina/handle_shie B.internal_contents |= src user.visible_message("[user] eats a telebeacon!","You eat the the beacon!") playsound(user, B.vore_sound, 70, 1) + +//InterroLouis: Ruda Lizden +/obj/item/clothing/accessory/badge/holo/detective/ruda + name = "Hisstective's Badge" + desc = "This is Ruda Lizden's personal Detective's badge. The polish is dull, as if it's simply been huffed upon and wiped against a coat. Labeled 'Hisstective.'" + icon = 'icons/vore/custom_items_vr.dmi' + icon_state = "hisstective_badge" + //slot_flags = SLOT_TIE | SLOT_BELT + +/obj/item/clothing/accessory/badge/holo/detective/ruda/attack(mob/living/carbon/human/M, mob/living/user) + if(isliving(user)) + user.visible_message("[user] invades [M]'s personal space, thrusting [src] into their face with an insistent huff.","You invade [M]'s personal space, thrusting [src] into their face with an insistent huff.") + user.do_attack_animation(M) + user.setClickCooldown(DEFAULT_QUICK_COOLDOWN) //to prevent spam + +/obj/item/clothing/accessory/badge/holo/detective/ruda/attack_self(mob/user as mob) + + if(!stored_name) + user << "You huff along the front of your badge, then rub your sleeve on it to polish it up." + set_name(user.real_name) + return + + if(isliving(user)) + if(stored_name) + user.visible_message("[user] displays their [src.name].\nIt reads: [stored_name], [badge_string].","You display your [src.name].\nIt reads: [stored_name], [badge_string].") + else + user.visible_message("[user] displays their [src.name].\nIt reads: [badge_string].","You display your [src.name]. It reads: [badge_string].") \ No newline at end of file diff --git a/config/custom_items.txt b/config/custom_items.txt index 9c85df2394..7609e02719 100644 --- a/config/custom_items.txt +++ b/config/custom_items.txt @@ -219,6 +219,12 @@ item_path: /obj/item/weapon/implanter/reagent_generator/belle # ######## I CKEYS +{ +ckey: interrolouis +character_name: Ruda Lizden +item_path:/obj/item/clothing/accessory/badge/holo/detective/ruda +} + { ckey: ivymoomoo character_name: Ivy Baladeva diff --git a/icons/vore/custom_items_vr.dmi b/icons/vore/custom_items_vr.dmi index 2212f07472d60339888878abf1489101dcaa8fb8..dcf96c8d47ed1bb0a767b8027040c3f78d7ce52d 100644 GIT binary patch delta 19781 zcmZ5{1yoc~*Y+JiIz{PLDd|Q!6cHo@q?C{pq(PcH2oh3)DBTiDN+U5ti*zG3bPY(? z0K(~X_o#D zzaNWKAi4?8lM(#xc+S^hEmd?!O125{!x87&L0LdeJ}T5cn}W&yiBtAnnpYw`oTw;K zQ?lXs-PzQVW6t@v`%Y3i_Bqrf!pyXvMm-wBZ|b*qv)+oHzzZ-^Y9(yiat;}-l9Rh- zXv-g(9kbj2>&BZp1A(96MvwMBypMbRnemg+MEvj8Akf%;MbzgBmC4Gep{c!f4Dp@2 zpN1bYDBXCc;<<#`bcSChz2CdV!-g)ckLtV?k{1qCW`x;JNt}^sT5p&!6=f1*%Yjwpz?#uEuMJmUvv;$;6LmjHf zM(QncTnaKthR&9r-+moqkSmq@bB$s_A=Ny;ek?3K-VdP3j zZcrPusZvlav!c8+0ki7RTMECLzWN>Q^-j;XEctm(QI*lv>w?yHC1ZpiVsO$PJrXHz zGEoa5W(+dYPvx!rC^SnZc}yM(5cU^7v$#UW~=lsC)qH7^}1696Fa@uAepmI zt9_jyjZi4~#QA!}Hl;_b|6-Lop-*#7S~O$DchLV!%9stmjL<8*o7B`flW3}oUcvs< z@~gYDmX?-J{dRHR37@{6q8&Uu^Oyyt3NeKx@^`khUvCg@l(n4E>zZ$CEc65dBBK)S z_wLI0 za>eWYWtv0O(YDon$)*a|dqA{l<*NZZ?LL#9YLksIhoaxVkr#W@d^|k9N$cmB#Kgqk zN+I|*jx{DUH*e-@X=tP!tX*|yV46%}$mRCB^RM{Ds&T&N*<)_%`S%Uaxx9>fRjULA z1ZwGahVvdU$?<*_-07#K3|j){{CAsyp^i{mak{-;vYG<~tIV2b0dmKedTM32rTuid zYccWjM50wUC3%iH{5~d*NhZvV(w6Mj=+y)!?(}brOFAAK|Bus=(HD+oS5eVS^mjC3 z0yGw7|L%g5xo>_^YG%nZ+o*&sq_l?I?un2RJy(A@QAq~&>uSTn1p0}0F+;U4lI!1HkPk9R!RzUcOr^2R|CZ3-i`fqzk10Dt=kqO=S;=g zC)(J>Dap2DPJGzJEVN{F5^w0j$QW&fE#s-k1_e!T!1_0%%EMje-{esc9%5uhvfQ`n zs^jFhbXX}1aNa&d@c+P$d1?)KUVdrwO+Q{n=XT#Z&v3N`51ynV zMD1K>2(FJS6P?=|L~d8CJ@tzV-Ux|)ruRf#z=J=gmbIzYQrsfJ) zk|^VZ7yC@iH+%wW#60#eR7YrL+$wRDzNY~ z!tM{^`eU7K(94dhZ4|1me;Vhi%RQCw z@`qoJ{(>_k&|1U}nJ4OF1 zDL|e7ODJ1Ydkb#%m=Y3EOzSb338uO+g)eKzgpJPI++5}+bba@AO|Y_Qol`)1G5;#{ zhZVT2tkOy!BNP^@Xkbjl-<=~bMaO6kTH0KF;Ri#aKCqq|Z=o`O3_iLf9=pW!Y%4V0 z(^tT?PI0K+qIn{W;4|nYeifw^?Y~k;JPsV z>|F~VGE)#2zYSPSHPP2ezBx2e0RhEdlo2McSc4q^#*#i%dt=e||9MM3Rs0ItLIgSn-ph2=p8xr3Kg*6jWMyP#a?VX$>|C$| zM|pX9{AlOuEn0xk_Bu8L8CMMazyp563Ae&2$TL5J#{%}O8j9x$8-nY@%C%HL4D`N^VS*BizmCmQvL9
    SQ<20L0&~DX$?~Fh6BV(S82>B;Bk$Ze5DpubE|W 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 delta 19553 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