From b66f3effae91c151321764991a45f4101aefbc8a Mon Sep 17 00:00:00 2001 From: Markolie Date: Thu, 27 Nov 2014 21:00:58 +0100 Subject: [PATCH] Bug fixes, implements new copying/faxing system from Bay --- baystation12.dme | 2 +- code/WorkInProgress/Mini/atmos_control.dm | 2 + code/WorkInProgress/kilakk/fax.dm | 197 ------- code/game/dna/dna_modifier.dm | 2 +- code/game/gamemodes/mutiny/mutiny_fluff.dm | 2 +- code/game/jobs/job/medical.dm | 4 + code/game/machinery/Freezer.dm | 8 +- code/game/machinery/atmoalter/pump.dm | 3 +- code/game/machinery/cloning.dm | 2 +- code/game/machinery/computer/cloning.dm | 8 +- code/game/machinery/vending.dm | 3 +- .../objects/items/weapons/cigs_lighters.dm | 2 + code/game/objects/items/weapons/handcuffs.dm | 19 + .../objects/items/weapons/storage/bags.dm | 4 +- code/game/objects/items/weapons/stunbaton.dm | 5 +- code/game/objects/items/weapons/tools.dm | 2 + .../closets/secure/engineering.dm | 1 + .../structures/transit_tubes/station.dm | 29 +- code/modules/admin/topic.dm | 110 ++-- code/modules/mob/living/living.dm | 2 +- code/modules/paperwork/faxmachine.dm | 215 ++++++++ code/modules/paperwork/paper.dm | 238 +++++++-- code/modules/paperwork/paper_bundle.dm | 166 +++--- code/modules/paperwork/photocopier.dm | 485 ++++++++---------- code/modules/paperwork/photography.dm | 151 +++--- code/modules/paperwork/stamps.dm | 2 +- icons/mob/hud.dmi | Bin 5665 -> 5715 bytes icons/obj/bureaucracy.dmi | Bin 10886 -> 10985 bytes icons/obj/weapons.dmi | Bin 35943 -> 36645 bytes maps/cyberiad.dmm | 25 +- maps/cyberiad.dmm.backup | 36 +- 31 files changed, 987 insertions(+), 738 deletions(-) delete mode 100644 code/WorkInProgress/kilakk/fax.dm create mode 100644 code/modules/paperwork/faxmachine.dm diff --git a/baystation12.dme b/baystation12.dme index 6a8df597986..8b9441aa048 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1296,6 +1296,7 @@ #include "code\modules\organs\wound.dm" #include "code\modules\paperwork\carbonpaper.dm" #include "code\modules\paperwork\clipboard.dm" +#include "code\modules\paperwork\faxmachine.dm" #include "code\modules\paperwork\filingcabinet.dm" #include "code\modules\paperwork\folders.dm" #include "code\modules\paperwork\handlabeler.dm" @@ -1602,7 +1603,6 @@ #include "code\WorkInProgress\computer3\computers\robot.dm" #include "code\WorkInProgress\computer3\computers\security.dm" #include "code\WorkInProgress\computer3\computers\welcome.dm" -#include "code\WorkInProgress\kilakk\fax.dm" #include "code\WorkInProgress\Mini\atmos_control.dm" #include "code\WorkInProgress\Ported\policetape.dm" #include "code\WorkInProgress\Sayu\belt.dm" diff --git a/code/WorkInProgress/Mini/atmos_control.dm b/code/WorkInProgress/Mini/atmos_control.dm index de8e47c9c64..e05afe6cd23 100644 --- a/code/WorkInProgress/Mini/atmos_control.dm +++ b/code/WorkInProgress/Mini/atmos_control.dm @@ -64,6 +64,8 @@ for(var/obj/machinery/alarm/alarm in sortAtom(alarm_list)) if(!is_in_filter(alarm.alarm_area.type)) continue // NO ACCESS 4 U + if(!alarm.remote_control) + continue var/turf/pos = get_turf(alarm) var/list/alarm_data=list() alarm_data["ID"]="\ref[alarm]" diff --git a/code/WorkInProgress/kilakk/fax.dm b/code/WorkInProgress/kilakk/fax.dm deleted file mode 100644 index 3559c3cf54e..00000000000 --- a/code/WorkInProgress/kilakk/fax.dm +++ /dev/null @@ -1,197 +0,0 @@ -var/list/obj/machinery/faxmachine/allfaxes = list() -var/list/alldepartments = list("Central Command") - -/obj/machinery/faxmachine - name = "fax machine" - icon = 'icons/obj/library.dmi' - icon_state = "fax" - req_one_access = list(access_lawyer, access_heads) - anchored = 1 - density = 1 - use_power = 1 - idle_power_usage = 30 - active_power_usage = 200 - power_channel = EQUIP - - var/obj/item/weapon/card/id/scan = null // identification - var/authenticated = 0 - - var/obj/item/weapon/paper/tofax = null // what we're sending - var/sendcooldown = 0 // to avoid spamming fax messages - - var/department = "Unknown" // our department - - var/dpt = "Central Command" // the department we're sending to - -/obj/machinery/faxmachine/New() - ..() - allfaxes += src - - if( !("[department]" in alldepartments) ) - alldepartments += department - -/obj/machinery/faxmachine/process() - return 0 - -/obj/machinery/faxmachine/attack_ai(mob/user as mob) - return attack_hand(user) - -/obj/machinery/faxmachine/attack_paw(mob/user as mob) - return attack_hand(user) - -/obj/machinery/faxmachine/attack_hand(mob/user as mob) - user.set_machine(src) - - var/dat = "Fax Machine
" - - var/scan_name - if(scan) - scan_name = scan.name - else - scan_name = "--------" - - dat += "Confirm Identity: [scan_name]
" - - if(authenticated) - dat += "{Log Out}" - else - dat += "{Log In}" - - dat += "
" - - if(authenticated) - dat += "Logged in to: Central Command Quantum Entanglement Network

" - - if(tofax) - dat += "Remove Paper

" - - if(sendcooldown) - dat += "Transmitter arrays realigning. Please stand by.
" - - else - dat += "Send
" - dat += "Currently sending: [tofax.name]
" - dat += "Sending to: [dpt]
" - - else - if(sendcooldown) - dat += "Please insert paper to send via secure connection.

" - dat += "Transmitter arrays realigning. Please stand by.
" - else - dat += "Please insert paper to send via secure connection.

" - - else - dat += "Proper authentication is required to use this device.

" - - if(tofax) - dat += "Remove Paper
" - - user << browse(dat, "window=copier") - onclose(user, "copier") - return - -/obj/machinery/faxmachine/Topic(href, href_list) - if(href_list["send"]) - if(tofax) - - if(dpt == "Central Command") - Centcomm_fax(tofax.info, tofax.name, usr) - sendcooldown = 1800 - - else - SendFax(tofax.info, tofax.name, usr, dpt) - sendcooldown = 600 - - usr << "Message transmitted successfully." - - spawn(sendcooldown) // cooldown time - sendcooldown = 0 - - if(href_list["remove"]) - if(tofax) - tofax.loc = usr.loc - usr.put_in_hands(tofax) - usr << "You take the paper out of \the [src]." - tofax = null - - if(href_list["scan"]) - if (scan) - if(ishuman(usr)) - scan.loc = usr.loc - if(!usr.get_active_hand()) - usr.put_in_hands(scan) - scan = null - else - scan.loc = src.loc - scan = null - else - var/obj/item/I = usr.get_active_hand() - if (istype(I, /obj/item/weapon/card/id)) - usr.drop_item() - I.loc = src - scan = I - authenticated = 0 - - if(href_list["dept"]) - var/lastdpt = dpt - dpt = input(usr, "Which department?", "Choose a department", "") as null|anything in alldepartments - if(!dpt) dpt = lastdpt - - if(href_list["auth"]) - if ( (!( authenticated ) && (scan)) ) - if (check_access(scan)) - authenticated = 1 - - if(href_list["logout"]) - authenticated = 0 - - updateUsrDialog() - -/obj/machinery/faxmachine/attackby(obj/item/O as obj, mob/user as mob) - - if(istype(O, /obj/item/weapon/paper)) - if(!tofax) - user.drop_item() - tofax = O - O.loc = src - user << "You insert the paper into \the [src]." - flick("faxsend", src) - updateUsrDialog() - else - user << "There is already something in \the [src]." - - else if(istype(O, /obj/item/weapon/card/id)) - - var/obj/item/weapon/card/id/idcard = O - if(!scan) - usr.drop_item() - idcard.loc = src - scan = idcard - - else if(istype(O, /obj/item/weapon/wrench)) - playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) - anchored = !anchored - user << "You [anchored ? "wrench" : "unwrench"] \the [src]." - return - -/proc/Centcomm_fax(var/sent, var/sentname, var/mob/Sender) - - var/msg = "\blue CENTCOMM FAX: [key_name(Sender, 1)] (PP) (VV) (SM) (JMP) (CA) (RPLY): Receiving '[sentname]' via secure connection ... view message" - admins << msg - -proc/SendFax(var/sent, var/sentname, var/mob/Sender, var/dpt) - - for(var/obj/machinery/faxmachine/F in allfaxes) - if( F.department == dpt ) - if(! (F.stat & (BROKEN|NOPOWER) ) ) - - flick("faxreceive", F) - - // give the sprite some time to flick - spawn(20) - var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( F.loc ) - P.name = "[sentname]" - P.info = "[sent]" - P.update_icon() - - playsound(F.loc, "sound/items/polaroid1.ogg", 50, 1) diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm index fd5fbc96e3e..8ffe4d57791 100644 --- a/code/game/dna/dna_modifier.dm +++ b/code/game/dna/dna_modifier.dm @@ -639,7 +639,7 @@ if (href_list["selectUIBlock"] && href_list["selectUISubblock"]) // This chunk of code updates selected block / sub-block based on click var/select_block = text2num(href_list["selectUIBlock"]) var/select_subblock = text2num(href_list["selectUISubblock"]) - if ((select_block <= 13) && (select_block >= 1)) + if ((select_block <= DNA_UI_LENGTH) && (select_block >= 1)) src.selected_ui_block = select_block if ((select_subblock <= DNA_BLOCK_SIZE) && (select_subblock >= 1)) src.selected_ui_subblock = select_subblock diff --git a/code/game/gamemodes/mutiny/mutiny_fluff.dm b/code/game/gamemodes/mutiny/mutiny_fluff.dm index 598624b784c..7bb1681b989 100644 --- a/code/game/gamemodes/mutiny/mutiny_fluff.dm +++ b/code/game/gamemodes/mutiny/mutiny_fluff.dm @@ -5,7 +5,7 @@ mode = M proc/announce_directives() - for (var/obj/machinery/faxmachine/fax in world) + for (var/obj/machinery/photocopier/faxmachine/fax in world) if (fax.department == "Captain's Office") var/obj/item/weapon/paper/directive_x = new(fax.loc) directive_x.name = "emergency action message" diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index 1c6b1d84687..b62b846dae1 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -63,6 +63,10 @@ if("Mortician") H.equip_or_collect(new /obj/item/clothing/under/rank/medical/mortician(H), slot_w_uniform) H.equip_or_collect(new /obj/item/clothing/suit/storage/labcoat/mortician(H), slot_wear_suit) + if(H.backbag != 1) + H.equip_or_collect(new /obj/item/weapon/autopsy_scanner(H.back), slot_in_backpack) + H.equip_or_collect(new /obj/item/device/mass_spectrometer(H.back), slot_in_backpack) + H.equip_or_collect(new /obj/item/weapon/storage/box/bodybags(H.back), slot_in_backpack) if("Surgeon") H.equip_or_collect(new /obj/item/clothing/under/rank/medical/blue(H), slot_w_uniform) H.equip_or_collect(new /obj/item/clothing/suit/storage/labcoat(H), slot_wear_suit) diff --git a/code/game/machinery/Freezer.dm b/code/game/machinery/Freezer.dm index 38ddfa88c42..349e69494f3 100644 --- a/code/game/machinery/Freezer.dm +++ b/code/game/machinery/Freezer.dm @@ -49,12 +49,12 @@ playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) dir = pick(WEST,EAST,SOUTH,NORTH) var/node_connect = dir - + initialize_directions = dir for(var/obj/machinery/atmospherics/target in get_step(src,node_connect)) if(target.initialize_directions & get_dir(target,src)) node = target break - + build_network() update_icon() /obj/machinery/atmospherics/unary/cold_sink/freezer/update_icon() @@ -184,12 +184,12 @@ playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) dir = pick(WEST,EAST,SOUTH,NORTH) var/node_connect = dir - + initialize_directions = dir for(var/obj/machinery/atmospherics/target in get_step(src,node_connect)) if(target.initialize_directions & get_dir(target,src)) node = target break - + build_network() update_icon() /obj/machinery/atmospherics/unary/heat_reservoir/heater/update_icon() diff --git a/code/game/machinery/atmoalter/pump.dm b/code/game/machinery/atmoalter/pump.dm index 4a906099bf0..4c86909c05e 100644 --- a/code/game/machinery/atmoalter/pump.dm +++ b/code/game/machinery/atmoalter/pump.dm @@ -106,8 +106,9 @@ holding_text = {"
Tank Pressure: [holding.air_contents.return_pressure()] KPa
Remove Tank
"} + var/pumppressure = max(0,air_contents.return_pressure()) var/output_text = {"[name]
-Pressure: [air_contents.return_pressure()] KPa
+Pressure: [pumppressure] KPa
Port Status: [(connected_port)?("Connected"):("Disconnected")] [holding_text]
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 2ffffad0879..2ccdf994de8 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -195,7 +195,7 @@ spawn(30) src.eject_wait = 0 - var/mob/living/carbon/human/H = new /mob/living/carbon/human(src, delay_ready_dna=1) + var/mob/living/carbon/human/H = new /mob/living/carbon/human(src, R.dna.species) occupant = H if(!R.dna.real_name) //to prevent null names diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index c8ae03e2c26..32ec516f64c 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -325,10 +325,10 @@ scantemp = "Error: Subject's brain is not responding to scanning stimuli." nanomanager.update_uis(src) return - if ((!subject.ckey) || (!subject.client)) - scantemp = "Error: Mental interface failure." - nanomanager.update_uis(src) - return + //if ((!subject.ckey) || (!subject.client)) + //scantemp = "Error: Mental interface failure." + //nanomanager.update_uis(src) + //return if ((M_NOCLONE in subject.mutations) && src.scanner.scan_level < 2) scantemp = "Error: Mental interface failure." nanomanager.update_uis(src) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 2da84916a1d..4030ab7162e 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -354,7 +354,8 @@ if (src.product_records.len == 0) dat += "No product loaded!" else - var/list/display_records = src.product_records + var/list/display_records = list() + display_records += src.product_records if(src.extended_inventory) display_records += src.hidden_records diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index 57c4217568e..284877bf68f 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -396,6 +396,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(user.r_hand == src || user.l_hand == src) if(!lit) lit = 1 + w_class = 4 icon_state = icon_on item_state = icon_on if(istype(src, /obj/item/weapon/lighter/zippo) ) @@ -413,6 +414,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM processing_objects.Add(src) else lit = 0 + w_class = 1 icon_state = icon_off item_state = icon_off if(istype(src, /obj/item/weapon/lighter/zippo) ) diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index 07b506d4d50..3c9dc65f8fe 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -112,6 +112,25 @@ var/last_chew = 0 /obj/item/weapon/handcuffs/cyborg dispenser = 1 + +/obj/item/weapon/handcuffs/cyborg/attack(mob/living/carbon/C as mob, mob/user as mob) + if(!C.handcuffed) + var/turf/p_loc = user.loc + var/turf/p_loc_m = C.loc + playsound(src.loc, 'sound/weapons/handcuffs.ogg', 30, 1, -2) + user.visible_message("\red [user] is trying to put handcuffs on [C]!") + + if (ishuman(C)) + var/mob/living/carbon/human/H = C + if (!H.has_organ_for_slot(slot_handcuffed)) + user << "\red \The [H] needs at least two wrists before you can cuff them together!" + return + + spawn(30) + if(!C) return + if(p_loc == user.loc && p_loc_m == C.loc) + C.handcuffed = new /obj/item/weapon/handcuffs(C) + C.update_inv_handcuffed() /obj/item/weapon/handcuffs/pinkcuffs name = "fluffy pink handcuffs" diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index af5785af609..90b0b268a22 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -64,7 +64,7 @@ icon_state = "plasticbag" item_state = "plasticbag" slot_flags = SLOT_HEAD|SLOT_BELT - + throwforce = 0 w_class = 4 max_w_class = 2 storage_slots = 21 @@ -91,6 +91,8 @@ if(is_equipped() && head) if(ishuman(loc)) var/mob/living/carbon/human/H = loc + if(H.internal) + return H.losebreath += 1 else head = 0 diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index dee1abe8b29..857ea9694c2 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -15,7 +15,7 @@ var/status = 0 //whether the thing is on or not var/obj/item/weapon/cell/high/bcell = null var/mob/foundmob = "" //Used in throwing proc. - var/hitcost = 1500 //oh god why do power cells carry so much charge? We probably need to make a distinction between "industrial" sized power cells for APCs and power cells for everything else. + var/hitcost = 1000 //oh god why do power cells carry so much charge? We probably need to make a distinction between "industrial" sized power cells for APCs and power cells for everything else. var/allowharm = 1 // Allow or disallow harming with the stunbaton /obj/item/weapon/melee/baton/suicide_act(mob/user) @@ -219,6 +219,9 @@ ..() //secborg stun baton module +/obj/item/weapon/melee/baton/robot + hitcost = 500 + /obj/item/weapon/melee/baton/robot/attack_self(mob/user) //try to find our power cell var/mob/living/silicon/robot/R = loc diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 030028eae67..9500c238da2 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -339,6 +339,7 @@ if (src.welding) if (remove_fuel(1)) usr << "\blue You switch the [src] on." + src.w_class = 4 src.force = 15 src.damtype = "fire" src.icon_state = "welder1" @@ -352,6 +353,7 @@ usr << "\blue You switch the [src] off." else usr << "\blue The [src] shuts off!" + src.w_class = 2 src.force = 3 src.damtype = "brute" src.icon_state = "welder" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index 0fd03578ac8..7425b4afa5d 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -145,6 +145,7 @@ else new /obj/item/clothing/tie/storage/webbing(src) new /obj/item/clothing/suit/fire/firefighter(src) + new /obj/item/clothing/head/hardhat/red(src) new /obj/item/device/flashlight(src) new /obj/item/weapon/extinguisher(src) new /obj/item/device/radio/headset/headset_eng(src) diff --git a/code/game/objects/structures/transit_tubes/station.dm b/code/game/objects/structures/transit_tubes/station.dm index 327b1aa5906..c1026c4e207 100644 --- a/code/game/objects/structures/transit_tubes/station.dm +++ b/code/game/objects/structures/transit_tubes/station.dm @@ -35,7 +35,10 @@ /obj/structure/transit_tube/station/Bumped(mob/AM as mob|obj) if(!pod_moving && icon_state == "open" && istype(AM, /mob)) for(var/obj/structure/transit_tube_pod/pod in loc) - if(!pod.moving && pod.dir in directions()) + if(pod.contents.len) + AM << "" + return + else if(!pod.moving && pod.dir in directions()) AM.loc = pod return @@ -96,19 +99,29 @@ /obj/structure/transit_tube/station/proc/launch_pod() - if(launch_cooldown >= world.time) - return for(var/obj/structure/transit_tube_pod/pod in loc) - if(!pod.moving && turn(pod.dir, (reverse_launch ? 180 : 0)) in directions()) - spawn(0) + if(!pod.moving && pod.dir in directions()) + spawn(5) pod_moving = 1 close_animation() sleep(CLOSE_DURATION + 2) + + //reverse directions for automated cycling + var/turf/next_loc = get_step(loc, pod.dir) + var/obj/structure/transit_tube/nexttube + for(var/obj/structure/transit_tube/tube in next_loc) + if(tube.has_entrance(pod.dir)) + nexttube = tube + break + if(!nexttube) + pod.dir = turn(pod.dir, 180) + if(icon_state == "closed" && pod) - pod.follow_tube(reverse_launch) + pod.follow_tube() + pod_moving = 0 - return 1 - return 0 + + return /obj/structure/transit_tube/station/process() if(!pod_moving) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 6cdf128e213..86fe645d2f7 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1600,45 +1600,89 @@ log_admin("[src.owner] replied to [key_name(H)]'s HONKplanet message with the message [input].") H << "You hear something crackle in your headset for a moment before a voice speaks. \"Please stand by for a message from your HONKbrothers. Message as follows, HONK. [input]. Message ends, HONK.\"" - else if(href_list["CentcommFaxView"]) - var/info = locate(href_list["CentcommFaxView"]) - - usr << browse("Centcomm Fax Message[info]", "window=Centcomm Fax Message") + else if(href_list["AdminFaxView"]) + var/obj/item/fax = locate(href_list["AdminFaxView"]) + if (istype(fax, /obj/item/weapon/paper)) + var/obj/item/weapon/paper/P = fax + P.show_content(usr) + else if (istype(fax, /obj/item/weapon/photo)) + var/obj/item/weapon/photo/H = fax + H.show(usr) + else if (istype(fax, /obj/item/weapon/paper_bundle)) + //having multiple people turning pages on a paper_bundle can cause issues + //open a browse window listing the contents instead + var/data = "" + var/obj/item/weapon/paper_bundle/B = fax + + for (var/page = 1, page <= B.amount + 1, page++) + var/obj/pageobj = B.contents[page] + data += "Page [page] - [pageobj.name]
" + + world << data + world << "Sent by: [usr]" + + usr << browse(data, "window=[B.name]") + else + usr << "\red The faxed item is not viewable. This is probably a bug, and should be reported on the tracker: [fax.type]" + else if (href_list["AdminFaxViewPage"]) + var/page = text2num(href_list["AdminFaxViewPage"]) + var/obj/item/weapon/paper_bundle/bundle = locate(href_list["paper_bundle"]) + + if (!bundle) return + + if (istype(bundle.contents[page], /obj/item/weapon/paper)) + var/obj/item/weapon/paper/P = bundle.contents[page] + P.show_content(src.owner, 1) + else if (istype(bundle.contents[page], /obj/item/weapon/photo)) + var/obj/item/weapon/photo/H = bundle.contents[page] + H.show(src.owner) + return + else if(href_list["CentcommFaxReply"]) - var/mob/living/carbon/human/H = locate(href_list["CentcommFaxReply"]) + var/mob/sender = locate(href_list["CentcommFaxReply"]) + var/obj/machinery/photocopier/faxmachine/fax = locate(href_list["originfax"]) - var/input = input(src.owner, "Please enter a message to reply to [key_name(H)] via secure connection. NOTE: BBCode does not work, but HTML tags do! Use
for line breaks.", "Outgoing message from Centcomm", "") as message|null - if(!input) return + var/input = input(src.owner, "Please enter a message to reply to [key_name(sender)] via secure connection. NOTE: BBCode does not work, but HTML tags do! Use
for line breaks.", "Outgoing message from Centcomm", "") as message|null + if(!input) return var/customname = input(src.owner, "Pick a title for the report", "Title") as text|null + + // Create the reply message + var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( null ) //hopefully the null loc won't cause trouble for us + P.name = "[command_name()]- [customname]" + P.info = input + P.update_icon() + P.stamps += "
This paper has been stamped by the Central Command Quantum Relay." + var/image/stampoverlay = image('icons/obj/bureaucracy.dmi') + P.x = rand(-2, 0) + P.y = rand(-1, 2) + P.offset_x += P.x + P.offset_y += P.y + stampoverlay.pixel_x = P.x + stampoverlay.pixel_y = P.y + + if(!P.ico) + P.ico = new + P.ico += "paper_stamp_cent" + stampoverlay.icon_state = "paper_stamp_cent" + + // Stamps + if(!P.stamped) + P.stamped = new + P.stamped += /obj/item/weapon/stamp/centcom + P.overlays += stampoverlay - for(var/obj/machinery/faxmachine/F in machines) - if(! (F.stat & (BROKEN|NOPOWER) ) ) - // animate! it's alive! - flick("faxreceive", F) - - // give the sprite some time to flick - spawn(20) - var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( F.loc ) - P.name = "[command_name()]- [customname]" - P.info = input - P.update_icon() - - playsound(F.loc, "sound/items/polaroid1.ogg", 50, 1) - - // Stamps - var/image/stampoverlay = image('icons/obj/bureaucracy.dmi') - stampoverlay.icon_state = "paper_stamp-cent" - if(!P.stamped) - P.stamped = new - P.stamped += /obj/item/weapon/stamp - P.overlays += stampoverlay - P.stamps += "
This paper has been stamped by the Central Command Quantum Relay." - - src.owner << "Message reply to transmitted successfully." - log_admin("[key_name(src.owner)] replied to a fax message from [key_name(H)]: [input]") - message_admins("[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(H)]", 1) + if(fax.recievefax(P)) + src.owner << "\blue Message reply to transmitted successfully." + log_admin("[key_name(src.owner)] replied to a fax message from [key_name(sender)]: [input]") + message_admins("[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(sender)]", 1) + else + src.owner << "\red Message reply failed." + + spawn(100) + del(P) + return else if(href_list["jumpto"]) if(!check_rights(R_ADMIN)) return diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 10320acf482..f92158764f3 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -489,7 +489,7 @@ return //resisting grabs (as if it helps anyone...) - if ((!( L.stat ) && L.canmove && !( L.restrained() ))) + if ((!( L.stat ) && !( L.restrained() ))) var/resisting = 0 for(var/obj/O in L.requests) L.requests.Remove(O) diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm new file mode 100644 index 00000000000..a727a3f59c3 --- /dev/null +++ b/code/modules/paperwork/faxmachine.dm @@ -0,0 +1,215 @@ +var/list/obj/machinery/photocopier/faxmachine/allfaxes = list() +var/list/admin_departments = list("Central Command") +var/list/alldepartments = list() + +var/list/adminfaxes = list() //cache for faxes that have been sent to admins + +/obj/machinery/photocopier/faxmachine + name = "fax machine" + icon = 'icons/obj/library.dmi' + icon_state = "fax" + insert_anim = "faxsend" + req_one_access = list(access_lawyer, access_heads, access_armory) + + use_power = 1 + idle_power_usage = 30 + active_power_usage = 200 + + var/obj/item/weapon/card/id/scan = null // identification + var/authenticated = 0 + var/sendcooldown = 0 // to avoid spamming fax messages + + var/department = "Unknown" // our department + + var/destination = "Central Command" // the department we're sending to + +/obj/machinery/photocopier/faxmachine/New() + ..() + allfaxes += src + + if( !(("[department]" in alldepartments) || ("[department]" in admin_departments)) ) + alldepartments |= department + +/obj/machinery/photocopier/faxmachine/attack_hand(mob/user as mob) + user.set_machine(src) + + var/dat = "Fax Machine
" + + var/scan_name + if(scan) + scan_name = scan.name + else + scan_name = "--------" + + dat += "Confirm Identity: [scan_name]
" + + if(authenticated) + dat += "{Log Out}" + else + dat += "{Log In}" + + dat += "
" + + if(authenticated) + dat += "Logged in to: Central Command Quantum Entanglement Network

" + + if(copyitem) + dat += "Remove Item

" + + if(sendcooldown) + dat += "Transmitter arrays realigning. Please stand by.
" + + else + + dat += "Send
" + dat += "Currently sending: [copyitem.name]
" + dat += "Sending to: [destination]
" + + else + if(sendcooldown) + dat += "Please insert paper to send via secure connection.

" + dat += "Transmitter arrays realigning. Please stand by.
" + else + dat += "Please insert paper to send via secure connection.

" + + else + dat += "Proper authentication is required to use this device.

" + + if(copyitem) + dat += "Remove Item
" + + user << browse(dat, "window=copier") + onclose(user, "copier") + return + +/obj/machinery/photocopier/faxmachine/Topic(href, href_list) + if(href_list["send"]) + if(copyitem) + if (destination in admin_departments) + send_admin_fax(usr, destination) + else + sendfax(destination) + + if (sendcooldown) + spawn(sendcooldown) // cooldown time + sendcooldown = 0 + + else if(href_list["remove"]) + if(copyitem) + copyitem.loc = usr.loc + usr.put_in_hands(copyitem) + usr << "You take \the [copyitem] out of \the [src]." + copyitem = null + updateUsrDialog() + + if(href_list["scan"]) + if (scan) + if(ishuman(usr)) + scan.loc = usr.loc + if(!usr.get_active_hand()) + usr.put_in_hands(scan) + scan = null + else + scan.loc = src.loc + scan = null + else + var/obj/item/I = usr.get_active_hand() + if (istype(I, /obj/item/weapon/card/id)) + usr.drop_item() + I.loc = src + scan = I + authenticated = 0 + + if(href_list["dept"]) + var/lastdestination = destination + destination = input(usr, "Which department?", "Choose a department", "") as null|anything in (alldepartments + admin_departments) + if(!destination) destination = lastdestination + + if(href_list["auth"]) + if ( (!( authenticated ) && (scan)) ) + if (check_access(scan)) + authenticated = 1 + + if(href_list["logout"]) + authenticated = 0 + + updateUsrDialog() + +/obj/machinery/photocopier/faxmachine/proc/sendfax(var/destination) + if(stat & (BROKEN|NOPOWER)) + return + + use_power(200) + + var/success = 0 + for(var/obj/machinery/photocopier/faxmachine/F in allfaxes) + if( F.department == destination ) + success = F.recievefax(copyitem) + + if (success) + visible_message("[src] beeps, \"Message transmitted successfully.\"") + //sendcooldown = 600 + else + visible_message("[src] beeps, \"Error transmitting message.\"") + +/obj/machinery/photocopier/faxmachine/proc/recievefax(var/obj/item/incoming) + if(stat & (BROKEN|NOPOWER)) + return 0 + + if(department == "Unknown") + return 0 //You can't send faxes to "Unknown" + + flick("faxreceive", src) + playsound(loc, "sound/items/polaroid1.ogg", 50, 1) + + // give the sprite some time to flick + sleep(20) + + if (istype(incoming, /obj/item/weapon/paper)) + copy(incoming) + else if (istype(incoming, /obj/item/weapon/photo)) + photocopy(incoming) + else if (istype(incoming, /obj/item/weapon/paper_bundle)) + bundlecopy(incoming) + else + return 0 + + use_power(active_power_usage) + return 1 + +/obj/machinery/photocopier/faxmachine/proc/send_admin_fax(var/mob/sender, var/destination) + if(stat & (BROKEN|NOPOWER)) + return + + use_power(200) + + var/obj/item/rcvdcopy + if (istype(copyitem, /obj/item/weapon/paper)) + rcvdcopy = copy(copyitem) + else if (istype(copyitem, /obj/item/weapon/photo)) + rcvdcopy = photocopy(copyitem) + else if (istype(copyitem, /obj/item/weapon/paper_bundle)) + rcvdcopy = bundlecopy(copyitem) + else + visible_message("[src] beeps, \"Error transmitting message.\"") + return + + rcvdcopy.loc = null //hopefully this shouldn't cause trouble + adminfaxes += rcvdcopy + + //message badmins that a fax has arrived + switch(destination) + if ("Central Command") + message_admins(sender, "CENTCOMM FAX", rcvdcopy, "CentcommFaxReply", "#006100") + + sendcooldown = 1800 + sleep(50) + visible_message("[src] beeps, \"Message transmitted successfully.\"") + + +/obj/machinery/photocopier/faxmachine/proc/message_admins(var/mob/sender, var/faxname, var/obj/item/sent, var/reply_type, font_colour="#006100") + var/msg = "\blue [faxname]: [key_name(sender, 1)] (PP) (VV) (SM) (JMP) (CA) (REPLY): Receiving '[sent.name]' via secure connection ... view message" + + for(var/client/C in admins) + if(R_ADMIN & C.holder.rights) + C << msg diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 923a5c0f014..3b099781bcd 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -16,14 +16,16 @@ pressure_resistance = 1 slot_flags = SLOT_HEAD body_parts_covered = HEAD - attack_verb = list("slapped") - autoignition_temperature = AUTOIGNITION_PAPER + attack_verb = list("bapped") var/info //What's actually written on the paper. var/info_links //A different version of the paper which includes html links at fields and EOF var/stamps //The (text for the) stamps on the paper. var/fields //Amount of user created fields var/list/stamped + var/ico[0] //Icons and + var/offset_x[0] //offsets stored for later + var/offset_y[0] //usage by the photocopier var/rigged = 0 var/spam_flag = 0 @@ -37,6 +39,16 @@ ..() pixel_y = rand(-8, 8) pixel_x = rand(-9, 9) + stamps = "" + + if(name != "paper") + desc = "This is a paper titled '" + name + "'." + + if(info != initial(info)) + info = html_encode(info) + info = replacetext(info, "\n", "
") + info = parsepencode(info) + spawn(2) update_icon() updateinfolinks() @@ -50,23 +62,21 @@ return icon_state = "paper" -/obj/item/weapon/paper/examine() - set src in oview(1) - -// ..() //We don't want them to see the dumb "this is a paper" thing every time. -// I didn't like the idea that people can read tiny pieces of paper from across the room. -// Now you need to be next to the paper in order to read it. - if(in_range(usr, src)) - if(!(istype(usr, /mob/living/carbon/human) || istype(usr, /mob/dead/observer) || istype(usr, /mob/living/silicon))) - usr << browse("[name][stars(info)]
[stamps]", "window=[name]") - onclose(usr, "[name]") - else - usr << browse("[name][info]
[stamps]", "window=[name]") - onclose(usr, "[name]") +/obj/item/weapon/paper/examine(mob/user) + if(in_range(user, src) || istype(user, /mob/dead/observer)) + show_content(usr) else - usr << "It is too far away." + user << "You have to go closer if you want to read it." return +/obj/item/weapon/paper/proc/show_content(var/mob/user, var/forceshow=0) + if(!(istype(user, /mob/living/carbon/human) || istype(user, /mob/dead/observer) || istype(user, /mob/living/silicon)) && !forceshow) + user << browse("[name][stars(info)][stamps]", "window=[name]") + onclose(usr, "[name]") + else + user << browse("[name][info][stamps]", "window=[name]") + onclose(usr, "[name]") + /obj/item/weapon/paper/verb/rename() set name = "Rename paper" set category = "Object" @@ -77,12 +87,14 @@ return var/n_name = copytext(sanitize(input(usr, "What would you like to label the paper?", "Paper Labelling", null) as text), 1, MAX_NAME_LEN) if((loc == usr && usr.stat == 0)) - name = "paper[(n_name ? text("- '[n_name]'") : null)]" + name = "[(n_name ? text("[n_name]") : initial(name))]" + if(name != "paper") + desc = "This is a paper titled '" + name + "'." add_fingerprint(usr) return /obj/item/weapon/paper/attack_self(mob/living/user as mob) - examine() + src.examine(user) if(rigged && (Holiday == "April Fool's Day")) if(spam_flag == 0) spam_flag = 1 @@ -98,13 +110,35 @@ else //cyborg or AI not seeing through a camera dist = get_dist(src, user) if(dist < 2) - usr << browse("[name][info]
[stamps]", "window=[name]") + usr << browse("[name][info][stamps]", "window=[name]") onclose(usr, "[name]") else - usr << browse("[name][stars(info)]
[stamps]", "window=[name]") + usr << browse("[name][stars(info)][stamps]", "window=[name]") onclose(usr, "[name]") return +/obj/item/weapon/paper/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) + if(user.zone_sel.selecting == "eyes") + user.visible_message("You show the paper to [M]. ", \ + " [user] holds up a paper and shows it to [M]. ") + src.examine(user) + + else if(user.zone_sel.selecting == "mouth") // lipstick wiping + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H == user) + user << "You wipe off the lipstick with [src]." + H.lip_style = null + H.update_body() + else + user.visible_message("[user] begins to wipe [H]'s lipstick off with \the [src].", \ + "You begin to wipe off [H]'s lipstick.") + if(do_after(user, 10) && do_after(H, 10, 5, 0)) //user needs to keep their active hand, H does not. + user.visible_message("[user] wipes [H]'s lipstick off with \the [src].", \ + "You wipe off [H]'s lipstick.") + H.lip_style = null + H.update_body() + /obj/item/weapon/paper/proc/addtofield(var/id, var/text, var/links = 0) var/locid = 0 var/laststart = 1 @@ -173,9 +207,16 @@ t = replacetext(t, "\[/u\]", "") t = replacetext(t, "\[large\]", "") t = replacetext(t, "\[/large\]", "") - t = replacetext(t, "\[sign\]", "[user.real_name]") + t = replacetext(t, "\[sign\]", "[user ? user.real_name : "Anonymous"]") t = replacetext(t, "\[field\]", "") + t = replacetext(t, "\[h1\]", "

") + t = replacetext(t, "\[/h1\]", "

") + t = replacetext(t, "\[h2\]", "

") + t = replacetext(t, "\[/h2\]", "

") + t = replacetext(t, "\[h3\]", "

") + t = replacetext(t, "\[/h3\]", "

") + if(!iscrayon) t = replacetext(t, "\[*\]", "
  • ") t = replacetext(t, "\[hr\]", "
    ") @@ -189,9 +230,9 @@ t = replacetext(t, "\[/grid\]", "") t = replacetext(t, "\[row\]", "") t = replacetext(t, "\[cell\]", "") - t = replacetext(t, "\[logo\]", "") + t = replacetext(t, "\[logo\]", "") - t = "[t]" + t = "[t]" else // If it is a crayon, and he still tries to use these, make them empty! t = replacetext(t, "\[*\]", "") t = replacetext(t, "\[hr\]", "") @@ -205,7 +246,7 @@ t = replacetext(t, "\[cell\]", "") t = replacetext(t, "\[logo\]", "") - t = "[t]" + t = "[t]" // t = replacetext(t, "#", "") // Junk converted to nothing! @@ -228,6 +269,9 @@
    \[br\] : Creates a linebreak.
    \[center\] - \[/center\] : Centers the text.
    + \[h1\] - \[/h1\] : Makes the text a first level heading
    + \[h2\] - \[/h2\] : Makes the text a second level heading
    + \[h3\] - \[/h3\] : Makes the text a third level heading
    \[b\] - \[/b\] : Makes the text bold.
    \[i\] - \[/i\] : Makes the text italic.
    \[u\] - \[/u\] : Makes the text underlined.
    @@ -266,6 +310,7 @@ else user << "\red You must hold \the [P] steady to burn \the [src]." + /obj/item/weapon/paper/Topic(href, href_list) ..() if(!usr || (usr.stat || usr.restrained())) @@ -308,7 +353,7 @@ info += t // Oh, he wants to edit to the end of the file, let him. updateinfolinks() - usr << browse("[name][info_links]
    [stamps]", "window=[name]") // Update the window + usr << browse("[name][info_links][stamps]", "window=[name]") // Update the window update_icon() @@ -319,28 +364,87 @@ if(user.mind && (user.mind.assigned_role == "Clown")) clown = 1 - if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon)) + if(istype(P, /obj/item/weapon/paper) || istype(P, /obj/item/weapon/photo)) + if (istype(P, /obj/item/weapon/paper/carbon)) + var/obj/item/weapon/paper/carbon/C = P + if (!C.iscopy && !C.copied) + user << "Take off the carbon copy first." + add_fingerprint(user) + return + var/obj/item/weapon/paper_bundle/B = new(src.loc) + if (name != "paper") + B.name = name + else if (P.name != "paper" && P.name != "photo") + B.name = P.name + user.drop_from_inventory(P) + if (istype(user, /mob/living/carbon/human)) + var/mob/living/carbon/human/h_user = user + if (h_user.r_hand == src) + h_user.drop_from_inventory(src) + h_user.put_in_r_hand(B) + else if (h_user.l_hand == src) + h_user.drop_from_inventory(src) + h_user.put_in_l_hand(B) + else if (h_user.l_store == src) + h_user.drop_from_inventory(src) + B.loc = h_user + B.layer = 20 + h_user.l_store = B + h_user.update_inv_pockets() + else if (h_user.r_store == src) + h_user.drop_from_inventory(src) + B.loc = h_user + B.layer = 20 + h_user.r_store = B + h_user.update_inv_pockets() + else if (h_user.head == src) + h_user.u_equip(src) + h_user.put_in_hands(B) + else if (!istype(src.loc, /turf)) + src.loc = get_turf(h_user) + if(h_user.client) h_user.client.screen -= src + h_user.put_in_hands(B) + user << "You clip the [P.name] to [(src.name == "paper") ? "the paper" : src.name]." + src.loc = B + P.loc = B + B.amount++ + B.update_icon() + + else if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon)) if ( istype(P, /obj/item/weapon/pen/robopen) && P:mode == 2 ) P:RenamePaper(user,src) else - user << browse("[name][info_links]
    [stamps]", "window=[name]") + user << browse("[name][info_links][stamps]", "window=[name]") //openhelp(user) return + else if(istype(P, /obj/item/weapon/stamp)) if((!in_range(src, usr) && loc != user && !( istype(loc, /obj/item/weapon/clipboard) ) && loc.loc != user && user.get_active_hand() != P)) return - stamps += "" + stamps += (stamps=="" ? "
    " : "
    ") + "This paper has been stamped with the [P.name]." var/image/stampoverlay = image('icons/obj/bureaucracy.dmi') - stampoverlay.pixel_x = rand(-2, 2) - stampoverlay.pixel_y = rand(-3, 2) + var/{x; y;} + if(istype(P, /obj/item/weapon/stamp/captain) || istype(P, /obj/item/weapon/stamp/centcom)) + x = rand(-2, 0) + y = rand(-1, 2) + else + x = rand(-2, 2) + y = rand(-3, 2) + offset_x += x + offset_y += y + stampoverlay.pixel_x = x + stampoverlay.pixel_y = y if(istype(P, /obj/item/weapon/stamp/clown)) if(!clown) user << "You are totally unable to use the stamp. HONK!" return + if(!ico) + ico = new + ico += "paper_[P.icon_state]" stampoverlay.icon_state = "paper_[P.icon_state]" if(!stamped) @@ -360,23 +464,23 @@ * Premade paper */ /obj/item/weapon/paper/Court - name = "paper- 'Judgement'" + name = "Judgement" info = "For crimes against the station, the offender is sentenced to:
    \n
    \n" /obj/item/weapon/paper/Toxin - name = "paper- 'Chemical Information'" - info = "Known Onboard Toxins:
    \n\tGrade A Semi-Liquid Plasma:
    \n\t\tHighly poisonous. You cannot sustain concentrations above 15 units.
    \n\t\tA gas mask fails to filter plasma after 50 units.
    \n\t\tWill attempt to diffuse like a gas.
    \n\t\tFiltered by scrubbers.
    \n\t\tThere is a bottled version which is very different
    \n\t\t\tfrom the version found in canisters!
    \n
    \n\t\tWARNING: Highly Flammable. Keep away from heat sources
    \n\t\texcept in a enclosed fire area!
    \n\t\tWARNING: It is a crime to use this without authorization.
    \nKnown Onboard Anti-Toxin:
    \n\tAnti-Toxin Type 01P: Works against Grade A Plasma.
    \n\t\tBest if injected directly into bloodstream.
    \n\t\tA full injection is in every regular Med-Kit.
    \n\t\tSpecial toxin Kits hold around 7.
    \n
    \nKnown Onboard Chemicals (other):
    \n\tRejuvenation T#001:
    \n\t\tEven 1 unit injected directly into the bloodstream
    \n\t\t\twill cure paralysis and sleep toxins.
    \n\t\tIf administered to a dying patient it will prevent
    \n\t\t\tfurther damage for about units*3 seconds.
    \n\t\t\tit will not cure them or allow them to be cured.
    \n\t\tIt can be administeredd to a non-dying patient
    \n\t\t\tbut the chemicals disappear just as fast.
    \n\tSleep Toxin T#054:
    \n\t\t5 units wilkl induce precisely 1 minute of sleep.
    \n\t\t\tThe effect are cumulative.
    \n\t\tWARNING: It is a crime to use this without authorization" + name = "Chemical Information" + info = "Known Onboard Toxins:
    \n\tGrade A Semi-Liquid Phoron:
    \n\t\tHighly poisonous. You cannot sustain concentrations above 15 units.
    \n\t\tA gas mask fails to filter phoron after 50 units.
    \n\t\tWill attempt to diffuse like a gas.
    \n\t\tFiltered by scrubbers.
    \n\t\tThere is a bottled version which is very different
    \n\t\t\tfrom the version found in canisters!
    \n
    \n\t\tWARNING: Highly Flammable. Keep away from heat sources
    \n\t\texcept in a enclosed fire area!
    \n\t\tWARNING: It is a crime to use this without authorization.
    \nKnown Onboard Anti-Toxin:
    \n\tAnti-Toxin Type 01P: Works against Grade A Phoron.
    \n\t\tBest if injected directly into bloodstream.
    \n\t\tA full injection is in every regular Med-Kit.
    \n\t\tSpecial toxin Kits hold around 7.
    \n
    \nKnown Onboard Chemicals (other):
    \n\tRejuvenation T#001:
    \n\t\tEven 1 unit injected directly into the bloodstream
    \n\t\t\twill cure paralysis and sleep phoron.
    \n\t\tIf administered to a dying patient it will prevent
    \n\t\t\tfurther damage for about units*3 seconds.
    \n\t\t\tit will not cure them or allow them to be cured.
    \n\t\tIt can be administeredd to a non-dying patient
    \n\t\t\tbut the chemicals disappear just as fast.
    \n\tSoporific T#054:
    \n\t\t5 units wilkl induce precisely 1 minute of sleep.
    \n\t\t\tThe effect are cumulative.
    \n\t\tWARNING: It is a crime to use this without authorization" /obj/item/weapon/paper/courtroom - name = "paper- 'A Crash Course in Legal SOP on SS13'" + name = "A Crash Course in Legal SOP on SS13" info = "Roles:
    \nThe Detective is basically the investigator and prosecutor.
    \nThe Staff Assistant can perform these functions with written authority from the Detective.
    \nThe Captain/HoP/Warden is ct as the judicial authority.
    \nThe Security Officers are responsible for executing warrants, security during trial, and prisoner transport.
    \n
    \nInvestigative Phase:
    \nAfter the crime has been committed the Detective's job is to gather evidence and try to ascertain not only who did it but what happened. He must take special care to catalogue everything and don't leave anything out. Write out all the evidence on paper. Make sure you take an appropriate number of fingerprints. IF he must ask someone questions he has permission to confront them. If the person refuses he can ask a judicial authority to write a subpoena for questioning. If again he fails to respond then that person is to be jailed as insubordinate and obstructing justice. Said person will be released after he cooperates.
    \n
    \nONCE the FT has a clear idea as to who the criminal is he is to write an arrest warrant on the piece of paper. IT MUST LIST THE CHARGES. The FT is to then go to the judicial authority and explain a small version of his case. If the case is moderately acceptable the authority should sign it. Security must then execute said warrant.
    \n
    \nPre-Pre-Trial Phase:
    \nNow a legal representative must be presented to the defendant if said defendant requests one. That person and the defendant are then to be given time to meet (in the jail IS ACCEPTABLE). The defendant and his lawyer are then to be given a copy of all the evidence that will be presented at trial (rewriting it all on paper is fine). THIS IS CALLED THE DISCOVERY PACK. With a few exceptions, THIS IS THE ONLY EVIDENCE BOTH SIDES MAY USE AT TRIAL. IF the prosecution will be seeking the death penalty it MUST be stated at this time. ALSO if the defense will be seeking not guilty by mental defect it must state this at this time to allow ample time for examination.
    \nNow at this time each side is to compile a list of witnesses. By default, the defendant is on both lists regardless of anything else. Also the defense and prosecution can compile more evidence beforehand BUT in order for it to be used the evidence MUST also be given to the other side.\nThe defense has time to compile motions against some evidence here.
    \nPossible Motions:
    \n1. Invalidate Evidence- Something with the evidence is wrong and the evidence is to be thrown out. This includes irrelevance or corrupt security.
    \n2. Free Movement- Basically the defendant is to be kept uncuffed before and during the trial.
    \n3. Subpoena Witness- If the defense presents god reasons for needing a witness but said person fails to cooperate then a subpoena is issued.
    \n4. Drop the Charges- Not enough evidence is there for a trial so the charges are to be dropped. The FT CAN RETRY but the judicial authority must carefully reexamine the new evidence.
    \n5. Declare Incompetent- Basically the defendant is insane. Once this is granted a medical official is to examine the patient. If he is indeed insane he is to be placed under care of the medical staff until he is deemed competent to stand trial.
    \n
    \nALL SIDES MOVE TO A COURTROOM
    \nPre-Trial Hearings:
    \nA judicial authority and the 2 sides are to meet in the trial room. NO ONE ELSE BESIDES A SECURITY DETAIL IS TO BE PRESENT. The defense submits a plea. If the plea is guilty then proceed directly to sentencing phase. Now the sides each present their motions to the judicial authority. He rules on them. Each side can debate each motion. Then the judicial authority gets a list of crew members. He first gets a chance to look at them all and pick out acceptable and available jurors. Those jurors are then called over. Each side can ask a few questions and dismiss jurors they find too biased. HOWEVER before dismissal the judicial authority MUST agree to the reasoning.
    \n
    \nThe Trial:
    \nThe trial has three phases.
    \n1. Opening Arguments- Each side can give a short speech. They may not present ANY evidence.
    \n2. Witness Calling/Evidence Presentation- The prosecution goes first and is able to call the witnesses on his approved list in any order. He can recall them if necessary. During the questioning the lawyer may use the evidence in the questions to help prove a point. After every witness the other side has a chance to cross-examine. After both sides are done questioning a witness the prosecution can present another or recall one (even the EXACT same one again!). After prosecution is done the defense can call witnesses. After the initial cases are presented both sides are free to call witnesses on either list.
    \nFINALLY once both sides are done calling witnesses we move onto the next phase.
    \n3. Closing Arguments- Same as opening.
    \nThe jury then deliberates IN PRIVATE. THEY MUST ALL AGREE on a verdict. REMEMBER: They mix between some charges being guilty and others not guilty (IE if you supposedly killed someone with a gun and you unfortunately picked up a gun without authorization then you CAN be found not guilty of murder BUT guilty of possession of illegal weaponry.). Once they have agreed they present their verdict. If unable to reach a verdict and feel they will never they call a deadlocked jury and we restart at Pre-Trial phase with an entirely new set of jurors.
    \n
    \nSentencing Phase:
    \nIf the death penalty was sought (you MUST have gone through a trial for death penalty) then skip to the second part.
    \nI. Each side can present more evidence/witnesses in any order. There is NO ban on emotional aspects or anything. The prosecution is to submit a suggested penalty. After all the sides are done then the judicial authority is to give a sentence.
    \nII. The jury stays and does the same thing as I. Their sole job is to determine if the death penalty is applicable. If NOT then the judge selects a sentence.
    \n
    \nTADA you're done. Security then executes the sentence and adds the applicable convictions to the person's record.
    \n" /obj/item/weapon/paper/hydroponics - name = "paper- 'Greetings from Billy Bob'" + name = "Greetings from Billy Bob" info = "Hey fellow botanist!
    \n
    \nI didn't trust the station folk so I left
    \na couple of weeks ago. But here's some
    \ninstructions on how to operate things here.
    \nYou can grow plants and each iteration they become
    \nstronger, more potent and have better yield, if you
    \nknow which ones to pick. Use your botanist's analyzer
    \nfor that. You can turn harvested plants into seeds
    \nat the seed extractor, and replant them for better stuff!
    \nSometimes if the weed level gets high in the tray
    \nmutations into different mushroom or weed species have
    \nbeen witnessed. On the rare occassion even weeds mutate!
    \n
    \nEither way, have fun!
    \n
    \nBest regards,
    \nBilly Bob Johnson.
    \n
    \nPS.
    \nHere's a few tips:
    \nIn nettles, potency = damage
    \nIn amanitas, potency = deadliness + side effect
    \nIn Liberty caps, potency = drug power + effect
    \nIn chilis, potency = heat
    \nNutrients keep mushrooms alive!
    \nWater keeps weeds such as nettles alive!
    \nAll other plants need both." /obj/item/weapon/paper/djstation - name = "paper - 'DJ Listening Outpost'" + name = "DJ Listening Outpost" info = "Welcome new owner!

    You have purchased the latest in listening equipment. The telecommunication setup we created is the best in listening to common and private radio fequencies. Here is a step by step guide to start listening in on those saucy radio channels:
    1. Equip yourself with a multi-tool
    2. Use the multitool on each machine, that is the broadcaster, receiver and the relay.
    3. Turn all the machines on, it has already been configured for you to listen on.
    Simple as that. Now to listen to the private channels, you'll have to configure the intercoms, located on the front desk. Here is a list of frequencies for you to listen on.
    • 145.7 - Common Channel
    • 144.7 - Private AI Channel
    • 135.9 - Security Channel
    • 135.7 - Engineering Channel
    • 135.5 - Medical Channel
    • 135.3 - Command Channel
    • 135.1 - Science Channel
    • 134.9 - Mining Channel
    • 134.7 - Cargo Channel
    • " /obj/item/weapon/paper/flag @@ -385,22 +489,68 @@ anchored = 1.0 /obj/item/weapon/paper/jobs - name = "paper- 'Job Information'" - info = "Information on all formal jobs that can be assigned on Space Station 13 can be found on this document.
      \nThe data will be in the following form.
      \nGenerally lower ranking positions come first in this list.
      \n
      \nJob Name general access>lab access-engine access-systems access (atmosphere control)
      \n\tJob Description
      \nJob Duties (in no particular order)
      \nTips (where applicable)
      \n
      \nResearch Assistant 1>1-0-0
      \n\tThis is probably the lowest level position. Anyone who enters the space station after the initial job\nassignment will automatically receive this position. Access with this is restricted. Head of Personnel should\nappropriate the correct level of assistance.
      \n1. Assist the researchers.
      \n2. Clean up the labs.
      \n3. Prepare materials.
      \n
      \nStaff Assistant 2>0-0-0
      \n\tThis position assists the security officer in his duties. The staff assisstants should primarily br\npatrolling the ship waiting until they are needed to maintain ship safety.\n(Addendum: Updated/Elevated Security Protocols admit issuing of low level weapons to security personnel)
      \n1. Patrol ship/Guard key areas
      \n2. Assist security officer
      \n3. Perform other security duties.
      \n
      \nTechnical Assistant 1>0-0-1
      \n\tThis is yet another low level position. The technical assistant helps the engineer and the statian\ntechnician with the upkeep and maintenance of the station. This job is very important because it usually\ngets to be a heavy workload on station technician and these helpers will alleviate that.
      \n1. Assist Station technician and Engineers.
      \n2. Perform general maintenance of station.
      \n3. Prepare materials.
      \n
      \nMedical Assistant 1>1-0-0
      \n\tThis is the fourth position yet it is slightly less common. This position doesn't have much power\noutside of the med bay. Consider this position like a nurse who helps to upkeep medical records and the\nmaterials (filling syringes and checking vitals)
      \n1. Assist the medical personnel.
      \n2. Update medical files.
      \n3. Prepare materials for medical operations.
      \n
      \nResearch Technician 2>3-0-0
      \n\tThis job is primarily a step up from research assistant. These people generally do not get their own lab\nbut are more hands on in the experimentation process. At this level they are permitted to work as consultants to\nthe others formally.
      \n1. Inform superiors of research.
      \n2. Perform research alongside of official researchers.
      \n
      \nDetective 3>2-0-0
      \n\tThis job is in most cases slightly boring at best. Their sole duty is to\nperform investigations of crine scenes and analysis of the crime scene. This\nalleviates SOME of the burden from the security officer. This person's duty\nis to draw conclusions as to what happened and testify in court. Said person\nalso should stroe the evidence ly.
      \n1. Perform crime-scene investigations/draw conclusions.
      \n2. Store and catalogue evidence properly.
      \n3. Testify to superiors/inquieries on findings.
      \n
      \nStation Technician 2>0-2-3
      \n\tPeople assigned to this position must work to make sure all the systems aboard Space Station 13 are operable.\nThey should primarily work in the computer lab and repairing faulty equipment. They should work with the\natmospheric technician.
      \n1. Maintain SS13 systems.
      \n2. Repair equipment.
      \n
      \nAtmospheric Technician 3>0-0-4
      \n\tThese people should primarily work in the atmospheric control center and lab. They have the very important\njob of maintaining the delicate atmosphere on SS13.
      \n1. Maintain atmosphere on SS13
      \n2. Research atmospheres on the space station. (safely please!)
      \n
      \nEngineer 2>1-3-0
      \n\tPeople working as this should generally have detailed knowledge as to how the propulsion systems on SS13\nwork. They are one of the few classes that have unrestricted access to the engine area.
      \n1. Upkeep the engine.
      \n2. Prevent fires in the engine.
      \n3. Maintain a safe orbit.
      \n
      \nMedical Researcher 2>5-0-0
      \n\tThis position may need a little clarification. Their duty is to make sure that all experiments are safe and\nto conduct experiments that may help to improve the station. They will be generally idle until a new laboratory\nis constructed.
      \n1. Make sure the station is kept safe.
      \n2. Research medical properties of materials studied of Space Station 13.
      \n
      \nScientist 2>5-0-0
      \n\tThese people study the properties, particularly the toxic properties, of materials handled on SS13.\nTechnically they can also be called Plasma Technicians as plasma is the material they routinly handle.
      \n1. Research plasma
      \n2. Make sure all plasma is properly handled.
      \n
      \nMedical Doctor (Officer) 2>0-0-0
      \n\tPeople working this job should primarily stay in the medical area. They should make sure everyone goes to\nthe medical bay for treatment and examination. Also they should make sure that medical supplies are kept in\norder.
      \n1. Heal wounded people.
      \n2. Perform examinations of all personnel.
      \n3. Moniter usage of medical equipment.
      \n
      \nSecurity Officer 3>0-0-0
      \n\tThese people should attempt to keep the peace inside the station and make sure the station is kept safe. One\nside duty is to assist in repairing the station. They also work like general maintenance personnel. They are not\ngiven a weapon and must use their own resources.
      \n(Addendum: Updated/Elevated Security Protocols admit issuing of weapons to security personnel)
      \n1. Maintain order.
      \n2. Assist others.
      \n3. Repair structural problems.
      \n
      \nHead of Security 4>5-2-2
      \n\tPeople assigned as Head of Security should issue orders to the security staff. They should\nalso carefully moderate the usage of all security equipment. All security matters should be reported to this person.
      \n1. Oversee security.
      \n2. Assign patrol duties.
      \n3. Protect the station and staff.
      \n
      \nHead of Personnel 4>4-2-2
      \n\tPeople assigned as head of personnel will find themselves moderating all actions done by personnel. \nAlso they have the ability to assign jobs and access levels.
      \n1. Assign duties.
      \n2. Moderate personnel.
      \n3. Moderate research.
      \n
      \nCaptain 5>5-5-5 (unrestricted station wide access)
      \n\tThis is the highest position youi can aquire on Space Station 13. They are allowed anywhere inside the\nspace station and therefore should protect their ID card. They also have the ability to assign positions\nand access levels. They should not abuse their power.
      \n1. Assign all positions on SS13
      \n2. Inspect the station for any problems.
      \n3. Perform administrative duties.
      \n" + name = "Job Information" + info = "Information on all formal jobs that can be assigned on Space Station 13 can be found on this document.
      \nThe data will be in the following form.
      \nGenerally lower ranking positions come first in this list.
      \n
      \nJob Name general access>lab access-engine access-systems access (atmosphere control)
      \n\tJob Description
      \nJob Duties (in no particular order)
      \nTips (where applicable)
      \n
      \nResearch Assistant 1>1-0-0
      \n\tThis is probably the lowest level position. Anyone who enters the space station after the initial job\nassignment will automatically receive this position. Access with this is restricted. Head of Personnel should\nappropriate the correct level of assistance.
      \n1. Assist the researchers.
      \n2. Clean up the labs.
      \n3. Prepare materials.
      \n
      \nStaff Assistant 2>0-0-0
      \n\tThis position assists the security officer in his duties. The staff assisstants should primarily br\npatrolling the ship waiting until they are needed to maintain ship safety.\n(Addendum: Updated/Elevated Security Protocols admit issuing of low level weapons to security personnel)
      \n1. Patrol ship/Guard key areas
      \n2. Assist security officer
      \n3. Perform other security duties.
      \n
      \nTechnical Assistant 1>0-0-1
      \n\tThis is yet another low level position. The technical assistant helps the engineer and the statian\ntechnician with the upkeep and maintenance of the station. This job is very important because it usually\ngets to be a heavy workload on station technician and these helpers will alleviate that.
      \n1. Assist Station technician and Engineers.
      \n2. Perform general maintenance of station.
      \n3. Prepare materials.
      \n
      \nMedical Assistant 1>1-0-0
      \n\tThis is the fourth position yet it is slightly less common. This position doesn't have much power\noutside of the med bay. Consider this position like a nurse who helps to upkeep medical records and the\nmaterials (filling syringes and checking vitals)
      \n1. Assist the medical personnel.
      \n2. Update medical files.
      \n3. Prepare materials for medical operations.
      \n
      \nResearch Technician 2>3-0-0
      \n\tThis job is primarily a step up from research assistant. These people generally do not get their own lab\nbut are more hands on in the experimentation process. At this level they are permitted to work as consultants to\nthe others formally.
      \n1. Inform superiors of research.
      \n2. Perform research alongside of official researchers.
      \n
      \nDetective 3>2-0-0
      \n\tThis job is in most cases slightly boring at best. Their sole duty is to\nperform investigations of crine scenes and analysis of the crime scene. This\nalleviates SOME of the burden from the security officer. This person's duty\nis to draw conclusions as to what happened and testify in court. Said person\nalso should stroe the evidence ly.
      \n1. Perform crime-scene investigations/draw conclusions.
      \n2. Store and catalogue evidence properly.
      \n3. Testify to superiors/inquieries on findings.
      \n
      \nStation Technician 2>0-2-3
      \n\tPeople assigned to this position must work to make sure all the systems aboard Space Station 13 are operable.\nThey should primarily work in the computer lab and repairing faulty equipment. They should work with the\natmospheric technician.
      \n1. Maintain SS13 systems.
      \n2. Repair equipment.
      \n
      \nAtmospheric Technician 3>0-0-4
      \n\tThese people should primarily work in the atmospheric control center and lab. They have the very important\njob of maintaining the delicate atmosphere on SS13.
      \n1. Maintain atmosphere on SS13
      \n2. Research atmospheres on the space station. (safely please!)
      \n
      \nEngineer 2>1-3-0
      \n\tPeople working as this should generally have detailed knowledge as to how the propulsion systems on SS13\nwork. They are one of the few classes that have unrestricted access to the engine area.
      \n1. Upkeep the engine.
      \n2. Prevent fires in the engine.
      \n3. Maintain a safe orbit.
      \n
      \nMedical Researcher 2>5-0-0
      \n\tThis position may need a little clarification. Their duty is to make sure that all experiments are safe and\nto conduct experiments that may help to improve the station. They will be generally idle until a new laboratory\nis constructed.
      \n1. Make sure the station is kept safe.
      \n2. Research medical properties of materials studied of Space Station 13.
      \n
      \nScientist 2>5-0-0
      \n\tThese people study the properties, particularly the toxic properties, of materials handled on SS13.\nTechnically they can also be called Phoron Technicians as phoron is the material they routinly handle.
      \n1. Research phoron
      \n2. Make sure all phoron is properly handled.
      \n
      \nMedical Doctor (Officer) 2>0-0-0
      \n\tPeople working this job should primarily stay in the medical area. They should make sure everyone goes to\nthe medical bay for treatment and examination. Also they should make sure that medical supplies are kept in\norder.
      \n1. Heal wounded people.
      \n2. Perform examinations of all personnel.
      \n3. Moniter usage of medical equipment.
      \n
      \nSecurity Officer 3>0-0-0
      \n\tThese people should attempt to keep the peace inside the station and make sure the station is kept safe. One\nside duty is to assist in repairing the station. They also work like general maintenance personnel. They are not\ngiven a weapon and must use their own resources.
      \n(Addendum: Updated/Elevated Security Protocols admit issuing of weapons to security personnel)
      \n1. Maintain order.
      \n2. Assist others.
      \n3. Repair structural problems.
      \n
      \nHead of Security 4>5-2-2
      \n\tPeople assigned as Head of Security should issue orders to the security staff. They should\nalso carefully moderate the usage of all security equipment. All security matters should be reported to this person.
      \n1. Oversee security.
      \n2. Assign patrol duties.
      \n3. Protect the station and staff.
      \n
      \nHead of Personnel 4>4-2-2
      \n\tPeople assigned as head of personnel will find themselves moderating all actions done by personnel. \nAlso they have the ability to assign jobs and access levels.
      \n1. Assign duties.
      \n2. Moderate personnel.
      \n3. Moderate research.
      \n
      \nCaptain 5>5-5-5 (unrestricted station wide access)
      \n\tThis is the highest position youi can aquire on Space Station 13. They are allowed anywhere inside the\nspace station and therefore should protect their ID card. They also have the ability to assign positions\nand access levels. They should not abuse their power.
      \n1. Assign all positions on SS13
      \n2. Inspect the station for any problems.
      \n3. Perform administrative duties.
      \n" /obj/item/weapon/paper/photograph name = "photo" icon_state = "photo" - var/photo_id = 0.0 item_state = "paper" -/obj/item/weapon/paper/customs - name = "paper - 'Customs Form'" - info = "
      Station Access Form

      Name:

      Rank:

      NanoTrasen Science Station Cyberiad





      Signature:



      Authorization
      Name:

      Rank:


      If authorized, please sign here, , and stamp the document with the Granted Stamp.
      " - /obj/item/weapon/paper/sop name = "paper- 'Standard Operating Procedure'" - info = "Alert Levels:
      \nBlue- Emergency
      \n\t1. Caused by fire
      \n\t2. Caused by manual interaction
      \n\tAction:
      \n\t\tClose all fire doors. These can only be opened by reseting the alarm
      \nRed- Ejection/Self Destruct
      \n\t1. Caused by module operating computer.
      \n\tAction:
      \n\t\tAfter the specified time the module will eject completely.
      \n
      \nEngine Maintenance Instructions:
      \n\tShut off ignition systems:
      \n\tActivate internal power
      \n\tActivate orbital balance matrix
      \n\tRemove volatile liquids from area
      \n\tWear a fire suit
      \n
      \n\tAfter
      \n\t\tDecontaminate
      \n\t\tVisit medical examiner
      \n
      \nToxin Laboratory Procedure:
      \n\tWear a gas mask regardless
      \n\tGet an oxygen tank.
      \n\tActivate internal atmosphere
      \n
      \n\tAfter
      \n\t\tDecontaminate
      \n\t\tVisit medical examiner
      \n
      \nDisaster Procedure:
      \n\tFire:
      \n\t\tActivate sector fire alarm.
      \n\t\tMove to a safe area.
      \n\t\tGet a fire suit
      \n\t\tAfter:
      \n\t\t\tAssess Damage
      \n\t\t\tRepair damages
      \n\t\t\tIf needed, Evacuate
      \n\tMeteor Shower:
      \n\t\tActivate fire alarm
      \n\t\tMove to the back of ship
      \n\t\tAfter
      \n\t\t\tRepair damage
      \n\t\t\tIf needed, Evacuate
      \n\tAccidental Reentry:
      \n\t\tActivate fire alrms in front of ship.
      \n\t\tMove volatile matter to a fire proof area!
      \n\t\tGet a fire suit.
      \n\t\tStay secure until an emergency ship arrives.
      \n
      \n\t\tIf ship does not arrive-
      \n\t\t\tEvacuate to a nearby safe area!" + info = "Alert Levels:
      \nBlue- Emergency
      \n\t1. Caused by fire
      \n\t2. Caused by manual interaction
      \n\tAction:
      \n\t\tClose all fire doors. These can only be opened by reseting the alarm
      \nRed- Ejection/Self Destruct
      \n\t1. Caused by module operating computer.
      \n\tAction:
      \n\t\tAfter the specified time the module will eject completely.
      \n
      \nEngine Maintenance Instructions:
      \n\tShut off ignition systems:
      \n\tActivate internal power
      \n\tActivate orbital balance matrix
      \n\tRemove volatile liquids from area
      \n\tWear a fire suit
      \n
      \n\tAfter
      \n\t\tDecontaminate
      \n\t\tVisit medical examiner
      \n
      \nToxin Laboratory Procedure:
      \n\tWear a gas mask regardless
      \n\tGet an oxygen tank.
      \n\tActivate internal atmosphere
      \n
      \n\tAfter
      \n\t\tDecontaminate
      \n\t\tVisit medical examiner
      \n
      \nDisaster Procedure:
      \n\tFire:
      \n\t\tActivate sector fire alarm.
      \n\t\tMove to a safe area.
      \n\t\tGet a fire suit
      \n\t\tAfter:
      \n\t\t\tAssess Damage
      \n\t\t\tRepair damages
      \n\t\t\tIf needed, Evacuate
      \n\tMeteor Shower:
      \n\t\tActivate fire alarm
      \n\t\tMove to the back of ship
      \n\t\tAfter
      \n\t\t\tRepair damage
      \n\t\t\tIf needed, Evacuate
      \n\tAccidental Reentry:
      \n\t\tActivate fire alarms in front of ship.
      \n\t\tMove volatile matter to a fire proof area!
      \n\t\tGet a fire suit.
      \n\t\tStay secure until an emergency ship arrives.
      \n
      \n\t\tIf ship does not arrive-
      \n\t\t\tEvacuate to a nearby safe area!" + +/obj/item/weapon/paper/crumpled + name = "paper scrap" + icon_state = "scrap" + +/obj/item/weapon/paper/crumpled/update_icon() + return + +/obj/item/weapon/paper/crumpled/bloody + icon_state = "scrap_bloodied" + +/* + * Premade paper + */ +/obj/item/weapon/paper/Court + name = "Judgement" + info = "For crimes against the station, the offender is sentenced to:
      \n
      \n" + +/obj/item/weapon/paper/Toxin + name = "Chemical Information" + info = "Known Onboard Toxins:
      \n\tGrade A Semi-Liquid Phoron:
      \n\t\tHighly poisonous. You cannot sustain concentrations above 15 units.
      \n\t\tA gas mask fails to filter phoron after 50 units.
      \n\t\tWill attempt to diffuse like a gas.
      \n\t\tFiltered by scrubbers.
      \n\t\tThere is a bottled version which is very different
      \n\t\t\tfrom the version found in canisters!
      \n
      \n\t\tWARNING: Highly Flammable. Keep away from heat sources
      \n\t\texcept in a enclosed fire area!
      \n\t\tWARNING: It is a crime to use this without authorization.
      \nKnown Onboard Anti-Toxin:
      \n\tAnti-Toxin Type 01P: Works against Grade A Phoron.
      \n\t\tBest if injected directly into bloodstream.
      \n\t\tA full injection is in every regular Med-Kit.
      \n\t\tSpecial toxin Kits hold around 7.
      \n
      \nKnown Onboard Chemicals (other):
      \n\tRejuvenation T#001:
      \n\t\tEven 1 unit injected directly into the bloodstream
      \n\t\t\twill cure paralysis and sleep phoron.
      \n\t\tIf administered to a dying patient it will prevent
      \n\t\t\tfurther damage for about units*3 seconds.
      \n\t\t\tit will not cure them or allow them to be cured.
      \n\t\tIt can be administeredd to a non-dying patient
      \n\t\t\tbut the chemicals disappear just as fast.
      \n\tSoporific T#054:
      \n\t\t5 units wilkl induce precisely 1 minute of sleep.
      \n\t\t\tThe effect are cumulative.
      \n\t\tWARNING: It is a crime to use this without authorization" + +/obj/item/weapon/paper/courtroom + name = "A Crash Course in Legal SOP on SS13" + info = "Roles:
      \nThe Detective is basically the investigator and prosecutor.
      \nThe Staff Assistant can perform these functions with written authority from the Detective.
      \nThe Captain/HoP/Warden is ct as the judicial authority.
      \nThe Security Officers are responsible for executing warrants, security during trial, and prisoner transport.
      \n
      \nInvestigative Phase:
      \nAfter the crime has been committed the Detective's job is to gather evidence and try to ascertain not only who did it but what happened. He must take special care to catalogue everything and don't leave anything out. Write out all the evidence on paper. Make sure you take an appropriate number of fingerprints. IF he must ask someone questions he has permission to confront them. If the person refuses he can ask a judicial authority to write a subpoena for questioning. If again he fails to respond then that person is to be jailed as insubordinate and obstructing justice. Said person will be released after he cooperates.
      \n
      \nONCE the FT has a clear idea as to who the criminal is he is to write an arrest warrant on the piece of paper. IT MUST LIST THE CHARGES. The FT is to then go to the judicial authority and explain a small version of his case. If the case is moderately acceptable the authority should sign it. Security must then execute said warrant.
      \n
      \nPre-Pre-Trial Phase:
      \nNow a legal representative must be presented to the defendant if said defendant requests one. That person and the defendant are then to be given time to meet (in the jail IS ACCEPTABLE). The defendant and his lawyer are then to be given a copy of all the evidence that will be presented at trial (rewriting it all on paper is fine). THIS IS CALLED THE DISCOVERY PACK. With a few exceptions, THIS IS THE ONLY EVIDENCE BOTH SIDES MAY USE AT TRIAL. IF the prosecution will be seeking the death penalty it MUST be stated at this time. ALSO if the defense will be seeking not guilty by mental defect it must state this at this time to allow ample time for examination.
      \nNow at this time each side is to compile a list of witnesses. By default, the defendant is on both lists regardless of anything else. Also the defense and prosecution can compile more evidence beforehand BUT in order for it to be used the evidence MUST also be given to the other side.\nThe defense has time to compile motions against some evidence here.
      \nPossible Motions:
      \n1. Invalidate Evidence- Something with the evidence is wrong and the evidence is to be thrown out. This includes irrelevance or corrupt security.
      \n2. Free Movement- Basically the defendant is to be kept uncuffed before and during the trial.
      \n3. Subpoena Witness- If the defense presents god reasons for needing a witness but said person fails to cooperate then a subpoena is issued.
      \n4. Drop the Charges- Not enough evidence is there for a trial so the charges are to be dropped. The FT CAN RETRY but the judicial authority must carefully reexamine the new evidence.
      \n5. Declare Incompetent- Basically the defendant is insane. Once this is granted a medical official is to examine the patient. If he is indeed insane he is to be placed under care of the medical staff until he is deemed competent to stand trial.
      \n
      \nALL SIDES MOVE TO A COURTROOM
      \nPre-Trial Hearings:
      \nA judicial authority and the 2 sides are to meet in the trial room. NO ONE ELSE BESIDES A SECURITY DETAIL IS TO BE PRESENT. The defense submits a plea. If the plea is guilty then proceed directly to sentencing phase. Now the sides each present their motions to the judicial authority. He rules on them. Each side can debate each motion. Then the judicial authority gets a list of crew members. He first gets a chance to look at them all and pick out acceptable and available jurors. Those jurors are then called over. Each side can ask a few questions and dismiss jurors they find too biased. HOWEVER before dismissal the judicial authority MUST agree to the reasoning.
      \n
      \nThe Trial:
      \nThe trial has three phases.
      \n1. Opening Arguments- Each side can give a short speech. They may not present ANY evidence.
      \n2. Witness Calling/Evidence Presentation- The prosecution goes first and is able to call the witnesses on his approved list in any order. He can recall them if necessary. During the questioning the lawyer may use the evidence in the questions to help prove a point. After every witness the other side has a chance to cross-examine. After both sides are done questioning a witness the prosecution can present another or recall one (even the EXACT same one again!). After prosecution is done the defense can call witnesses. After the initial cases are presented both sides are free to call witnesses on either list.
      \nFINALLY once both sides are done calling witnesses we move onto the next phase.
      \n3. Closing Arguments- Same as opening.
      \nThe jury then deliberates IN PRIVATE. THEY MUST ALL AGREE on a verdict. REMEMBER: They mix between some charges being guilty and others not guilty (IE if you supposedly killed someone with a gun and you unfortunately picked up a gun without authorization then you CAN be found not guilty of murder BUT guilty of possession of illegal weaponry.). Once they have agreed they present their verdict. If unable to reach a verdict and feel they will never they call a deadlocked jury and we restart at Pre-Trial phase with an entirely new set of jurors.
      \n
      \nSentencing Phase:
      \nIf the death penalty was sought (you MUST have gone through a trial for death penalty) then skip to the second part.
      \nI. Each side can present more evidence/witnesses in any order. There is NO ban on emotional aspects or anything. The prosecution is to submit a suggested penalty. After all the sides are done then the judicial authority is to give a sentence.
      \nII. The jury stays and does the same thing as I. Their sole job is to determine if the death penalty is applicable. If NOT then the judge selects a sentence.
      \n
      \nTADA you're done. Security then executes the sentence and adds the applicable convictions to the person's record.
      \n" + +/obj/item/weapon/paper/hydroponics + name = "Greetings from Billy Bob" + info = "Hey fellow botanist!
      \n
      \nI didn't trust the station folk so I left
      \na couple of weeks ago. But here's some
      \ninstructions on how to operate things here.
      \nYou can grow plants and each iteration they become
      \nstronger, more potent and have better yield, if you
      \nknow which ones to pick. Use your botanist's analyzer
      \nfor that. You can turn harvested plants into seeds
      \nat the seed extractor, and replant them for better stuff!
      \nSometimes if the weed level gets high in the tray
      \nmutations into different mushroom or weed species have
      \nbeen witnessed. On the rare occassion even weeds mutate!
      \n
      \nEither way, have fun!
      \n
      \nBest regards,
      \nBilly Bob Johnson.
      \n
      \nPS.
      \nHere's a few tips:
      \nIn nettles, potency = damage
      \nIn amanitas, potency = deadliness + side effect
      \nIn Liberty caps, potency = drug power + effect
      \nIn chilis, potency = heat
      \nNutrients keep mushrooms alive!
      \nWater keeps weeds such as nettles alive!
      \nAll other plants need both." + +/obj/item/weapon/paper/djstation + name = "DJ Listening Outpost" + info = "Welcome new owner!

      You have purchased the latest in listening equipment. The telecommunication setup we created is the best in listening to common and private radio fequencies. Here is a step by step guide to start listening in on those saucy radio channels:
      1. Equip yourself with a multi-tool
      2. Use the multitool on each machine, that is the broadcaster, receiver and the relay.
      3. Turn all the machines on, it has already been configured for you to listen on.
      Simple as that. Now to listen to the private channels, you'll have to configure the intercoms, located on the front desk. Here is a list of frequencies for you to listen on.
      • 145.7 - Common Channel
      • 144.7 - Private AI Channel
      • 135.9 - Security Channel
      • 135.7 - Engineering Channel
      • 135.5 - Medical Channel
      • 135.3 - Command Channel
      • 135.1 - Science Channel
      • 134.9 - Mining Channel
      • 134.7 - Cargo Channel
      • " + +/obj/item/weapon/paper/flag + icon_state = "flag_neutral" + item_state = "paper" + anchored = 1.0 + +/obj/item/weapon/paper/jobs + name = "Job Information" + info = "Information on all formal jobs that can be assigned on Space Station 13 can be found on this document.
        \nThe data will be in the following form.
        \nGenerally lower ranking positions come first in this list.
        \n
        \nJob Name general access>lab access-engine access-systems access (atmosphere control)
        \n\tJob Description
        \nJob Duties (in no particular order)
        \nTips (where applicable)
        \n
        \nResearch Assistant 1>1-0-0
        \n\tThis is probably the lowest level position. Anyone who enters the space station after the initial job\nassignment will automatically receive this position. Access with this is restricted. Head of Personnel should\nappropriate the correct level of assistance.
        \n1. Assist the researchers.
        \n2. Clean up the labs.
        \n3. Prepare materials.
        \n
        \nStaff Assistant 2>0-0-0
        \n\tThis position assists the security officer in his duties. The staff assisstants should primarily br\npatrolling the ship waiting until they are needed to maintain ship safety.\n(Addendum: Updated/Elevated Security Protocols admit issuing of low level weapons to security personnel)
        \n1. Patrol ship/Guard key areas
        \n2. Assist security officer
        \n3. Perform other security duties.
        \n
        \nTechnical Assistant 1>0-0-1
        \n\tThis is yet another low level position. The technical assistant helps the engineer and the statian\ntechnician with the upkeep and maintenance of the station. This job is very important because it usually\ngets to be a heavy workload on station technician and these helpers will alleviate that.
        \n1. Assist Station technician and Engineers.
        \n2. Perform general maintenance of station.
        \n3. Prepare materials.
        \n
        \nMedical Assistant 1>1-0-0
        \n\tThis is the fourth position yet it is slightly less common. This position doesn't have much power\noutside of the med bay. Consider this position like a nurse who helps to upkeep medical records and the\nmaterials (filling syringes and checking vitals)
        \n1. Assist the medical personnel.
        \n2. Update medical files.
        \n3. Prepare materials for medical operations.
        \n
        \nResearch Technician 2>3-0-0
        \n\tThis job is primarily a step up from research assistant. These people generally do not get their own lab\nbut are more hands on in the experimentation process. At this level they are permitted to work as consultants to\nthe others formally.
        \n1. Inform superiors of research.
        \n2. Perform research alongside of official researchers.
        \n
        \nDetective 3>2-0-0
        \n\tThis job is in most cases slightly boring at best. Their sole duty is to\nperform investigations of crine scenes and analysis of the crime scene. This\nalleviates SOME of the burden from the security officer. This person's duty\nis to draw conclusions as to what happened and testify in court. Said person\nalso should stroe the evidence ly.
        \n1. Perform crime-scene investigations/draw conclusions.
        \n2. Store and catalogue evidence properly.
        \n3. Testify to superiors/inquieries on findings.
        \n
        \nStation Technician 2>0-2-3
        \n\tPeople assigned to this position must work to make sure all the systems aboard Space Station 13 are operable.\nThey should primarily work in the computer lab and repairing faulty equipment. They should work with the\natmospheric technician.
        \n1. Maintain SS13 systems.
        \n2. Repair equipment.
        \n
        \nAtmospheric Technician 3>0-0-4
        \n\tThese people should primarily work in the atmospheric control center and lab. They have the very important\njob of maintaining the delicate atmosphere on SS13.
        \n1. Maintain atmosphere on SS13
        \n2. Research atmospheres on the space station. (safely please!)
        \n
        \nEngineer 2>1-3-0
        \n\tPeople working as this should generally have detailed knowledge as to how the propulsion systems on SS13\nwork. They are one of the few classes that have unrestricted access to the engine area.
        \n1. Upkeep the engine.
        \n2. Prevent fires in the engine.
        \n3. Maintain a safe orbit.
        \n
        \nMedical Researcher 2>5-0-0
        \n\tThis position may need a little clarification. Their duty is to make sure that all experiments are safe and\nto conduct experiments that may help to improve the station. They will be generally idle until a new laboratory\nis constructed.
        \n1. Make sure the station is kept safe.
        \n2. Research medical properties of materials studied of Space Station 13.
        \n
        \nScientist 2>5-0-0
        \n\tThese people study the properties, particularly the toxic properties, of materials handled on SS13.\nTechnically they can also be called Phoron Technicians as phoron is the material they routinly handle.
        \n1. Research phoron
        \n2. Make sure all phoron is properly handled.
        \n
        \nMedical Doctor (Officer) 2>0-0-0
        \n\tPeople working this job should primarily stay in the medical area. They should make sure everyone goes to\nthe medical bay for treatment and examination. Also they should make sure that medical supplies are kept in\norder.
        \n1. Heal wounded people.
        \n2. Perform examinations of all personnel.
        \n3. Moniter usage of medical equipment.
        \n
        \nSecurity Officer 3>0-0-0
        \n\tThese people should attempt to keep the peace inside the station and make sure the station is kept safe. One\nside duty is to assist in repairing the station. They also work like general maintenance personnel. They are not\ngiven a weapon and must use their own resources.
        \n(Addendum: Updated/Elevated Security Protocols admit issuing of weapons to security personnel)
        \n1. Maintain order.
        \n2. Assist others.
        \n3. Repair structural problems.
        \n
        \nHead of Security 4>5-2-2
        \n\tPeople assigned as Head of Security should issue orders to the security staff. They should\nalso carefully moderate the usage of all security equipment. All security matters should be reported to this person.
        \n1. Oversee security.
        \n2. Assign patrol duties.
        \n3. Protect the station and staff.
        \n
        \nHead of Personnel 4>4-2-2
        \n\tPeople assigned as head of personnel will find themselves moderating all actions done by personnel. \nAlso they have the ability to assign jobs and access levels.
        \n1. Assign duties.
        \n2. Moderate personnel.
        \n3. Moderate research.
        \n
        \nCaptain 5>5-5-5 (unrestricted station wide access)
        \n\tThis is the highest position youi can aquire on Space Station 13. They are allowed anywhere inside the\nspace station and therefore should protect their ID card. They also have the ability to assign positions\nand access levels. They should not abuse their power.
        \n1. Assign all positions on SS13
        \n2. Inspect the station for any problems.
        \n3. Perform administrative duties.
        \n" + +/obj/item/weapon/paper/photograph + name = "photo" + icon_state = "photo" + item_state = "paper" + +/obj/item/weapon/paper/sop + name = "paper- 'Standard Operating Procedure'" + info = "Alert Levels:
        \nBlue- Emergency
        \n\t1. Caused by fire
        \n\t2. Caused by manual interaction
        \n\tAction:
        \n\t\tClose all fire doors. These can only be opened by reseting the alarm
        \nRed- Ejection/Self Destruct
        \n\t1. Caused by module operating computer.
        \n\tAction:
        \n\t\tAfter the specified time the module will eject completely.
        \n
        \nEngine Maintenance Instructions:
        \n\tShut off ignition systems:
        \n\tActivate internal power
        \n\tActivate orbital balance matrix
        \n\tRemove volatile liquids from area
        \n\tWear a fire suit
        \n
        \n\tAfter
        \n\t\tDecontaminate
        \n\t\tVisit medical examiner
        \n
        \nToxin Laboratory Procedure:
        \n\tWear a gas mask regardless
        \n\tGet an oxygen tank.
        \n\tActivate internal atmosphere
        \n
        \n\tAfter
        \n\t\tDecontaminate
        \n\t\tVisit medical examiner
        \n
        \nDisaster Procedure:
        \n\tFire:
        \n\t\tActivate sector fire alarm.
        \n\t\tMove to a safe area.
        \n\t\tGet a fire suit
        \n\t\tAfter:
        \n\t\t\tAssess Damage
        \n\t\t\tRepair damages
        \n\t\t\tIf needed, Evacuate
        \n\tMeteor Shower:
        \n\t\tActivate fire alarm
        \n\t\tMove to the back of ship
        \n\t\tAfter
        \n\t\t\tRepair damage
        \n\t\t\tIf needed, Evacuate
        \n\tAccidental Reentry:
        \n\t\tActivate fire alarms in front of ship.
        \n\t\tMove volatile matter to a fire proof area!
        \n\t\tGet a fire suit.
        \n\t\tStay secure until an emergency ship arrives.
        \n
        \n\t\tIf ship does not arrive-
        \n\t\t\tEvacuate to a nearby safe area!" /obj/item/weapon/paper/crumpled name = "paper scrap" diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm index baff965cd61..231d30f1a03 100644 --- a/code/modules/paperwork/paper_bundle.dm +++ b/code/modules/paperwork/paper_bundle.dm @@ -21,6 +21,13 @@ var/obj/item/weapon/paper/P if(istype(W, /obj/item/weapon/paper)) P = W + if (istype(P, /obj/item/weapon/paper/carbon)) + var/obj/item/weapon/paper/carbon/C = P + if (!C.iscopy && !C.copied) + user << "Take off the carbon copy first." + add_fingerprint(user) + return + amount++ if(screen == 2) screen = 1 @@ -37,70 +44,103 @@ user << "You add [(W.name == "photo") ? "the photo" : W.name] to [(src.name == "paper bundle") ? "the paper bundle" : src.name]." user.drop_from_inventory(W) W.loc = src - if(istype(user,/mob/living/carbon/human)) - user:update_inv_l_hand() - user:update_inv_r_hand() + else if(istype(W, /obj/item/weapon/lighter)) + burnpaper(W, user) + else if(istype(W, /obj/item/weapon/paper_bundle)) + user.drop_from_inventory(W) + for(var/obj/O in W) + O.loc = src + O.add_fingerprint(usr) + src.amount++ + if(screen == 2) + screen = 1 + user << "You add \the [W.name] to [(src.name == "paper bundle") ? "the paper bundle" : src.name]." + del(W) else if(istype(W, /obj/item/weapon/pen) || istype(W, /obj/item/toy/crayon)) usr << browse("", "window=[name]") //Closes the dialog P = src[page] P.attackby(W, user) + + update_icon() + attack_self(usr) //Update the browsed page. add_fingerprint(usr) return -/obj/item/weapon/paper_bundle/examine() - set src in oview(1) +/obj/item/weapon/paper_bundle/proc/burnpaper(obj/item/weapon/lighter/P, mob/user) + var/class = "" - usr << desc - if(in_range(usr, src)) - src.attack_self(usr) + if(P.lit && !user.restrained()) + if(istype(P, /obj/item/weapon/lighter/zippo)) + class = "" + + user.visible_message("[class][user] holds \the [P] up to \the [src], it looks like \he's trying to burn it!", \ + "[class]You hold \the [P] up to \the [src], burning it slowly.") + + spawn(20) + if(get_dist(src, user) < 2 && user.get_active_hand() == P && P.lit) + user.visible_message("[class][user] burns right through \the [src], turning it to ash. It flutters through the air before settling on the floor in a heap.", \ + "[class]You burn right through \the [src], turning it to ash. It flutters through the air before settling on the floor in a heap.") + + if(user.get_inactive_hand() == src) + user.drop_from_inventory(src) + + new /obj/effect/decal/cleanable/ash(src.loc) + del(src) + + else + user << "\red You must hold \the [P] steady to burn \the [src]." + +/obj/item/weapon/paper_bundle/examine(mob/user) + if(..(user, 1)) + src.show_content(user) else - usr << "It is too far away." + user << "It is too far away." return +/obj/item/weapon/paper_bundle/proc/show_content(mob/user as mob) + var/dat + var/obj/item/weapon/W = src[page] + switch(screen) + if(0) + dat+= "
        " + dat+= "" + dat+= "

        " + if(1) + dat+= "" + dat+= "" + dat+= "

        " + if(2) + dat+= "" + dat+= "

        " + dat+= "
        " + if(istype(src[page], /obj/item/weapon/paper)) + var/obj/item/weapon/paper/P = W + if(!(istype(usr, /mob/living/carbon/human) || istype(usr, /mob/dead/observer) || istype(usr, /mob/living/silicon))) + dat+= "[P.name][stars(P.info)][P.stamps]" + else + dat+= "[P.name][P.info][P.stamps]" + user << browse(dat, "window=[name]") + else if(istype(src[page], /obj/item/weapon/photo)) + var/obj/item/weapon/photo/P = W + user << browse_rsc(P.img, "tmp_photo.png") + user << browse(dat + "[P.name]" \ + + "" \ + + "
        Written on the back:
        [P.scribble]" : ]"\ + + "", "window=[name]") /obj/item/weapon/paper_bundle/attack_self(mob/user as mob) - if(ishuman(user)) - var/mob/living/carbon/human/human_user = user - var/dat - var/obj/item/weapon/W = src[page] - switch(screen) - if(0) - dat+= "
        " - dat+= "" - dat+= "

        " - if(1) - dat+= "" - dat+= "" - dat+= "

        " - if(2) - dat+= "" - dat+= "

        " - dat+= "
        " - if(istype(src[page], /obj/item/weapon/paper)) - var/obj/item/weapon/paper/P = W - dat+= "[P.name][P.info][P.stamps]" - human_user << browse(dat, "window=[name]") - P.add_fingerprint(usr) - else if(istype(src[page], /obj/item/weapon/photo)) - var/obj/item/weapon/photo/P = W - human_user << browse_rsc(P.img, "tmp_photo.png") - human_user << browse(dat + "[P.name]" \ - + "" \ - + "
        Written on the back:
        [P.scribble]" : ]"\ - + "", "window=[name]") - P.add_fingerprint(usr) - add_fingerprint(usr) - update_icon() + src.show_content(user) + add_fingerprint(usr) + update_icon() return - /obj/item/weapon/paper_bundle/Topic(href, href_list) ..() - if((src in usr.contents) || (src.loc in usr.contents)) + if((src in usr.contents) || (istype(src.loc, /obj/item/weapon/folder) && (src.loc in usr.contents))) usr.set_machine(src) if(href_list["next_page"]) if(page == amount) @@ -122,44 +162,18 @@ playsound(src.loc, "pageturn", 50, 1) if(href_list["remove"]) var/obj/item/weapon/W = src[page] - W.loc = usr.loc - if(istype(usr,/mob/living/carbon)) - //Place the item in the user's hand if possible - if(!usr.r_hand) - W.loc = usr - usr.r_hand = W - W.layer = 20 - else if(!usr.l_hand) - W.loc = usr - usr.l_hand = W - W.layer = 20 + usr.put_in_hands(W) usr << "You remove the [W.name] from the bundle." - if(amount == 1) var/obj/item/weapon/paper/P = src[1] - P.loc = usr.loc - if (usr.r_hand == src) - usr.drop_from_inventory(src) - P.loc = usr - usr.r_hand = P - P.layer = 20 - else if (usr.l_hand == src) - usr.drop_from_inventory(src) - P.loc = usr - usr.l_hand = P - P.layer = 20 - if(istype(usr,/mob/living/carbon/human)) - usr:update_inv_l_hand() - usr:update_inv_r_hand() + usr.drop_from_inventory(src) + usr.put_in_hands(P) del(src) else if(page == amount) screen = 2 else if(page == amount+1) page-- - if(istype(usr,/mob/living/carbon/human)) - usr:update_inv_l_hand() - usr:update_inv_r_hand() amount-- update_icon() else @@ -190,10 +204,9 @@ usr << "You loosen the bundle." for(var/obj/O in src) O.loc = usr.loc + O.layer = initial(O.layer) + O.add_fingerprint(usr) usr.drop_from_inventory(src) - if(istype(usr,/mob/living/carbon/human)) - usr:update_inv_l_hand() - usr:update_inv_r_hand() del(src) return @@ -217,7 +230,6 @@ i++ else if(istype(O, /obj/item/weapon/photo)) var/obj/item/weapon/photo/Ph = O -// img.icon_state = "photo" img = Ph.tiny photo = 1 overlays += img diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index a43bb39bb1f..2ca5834f56b 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -2,295 +2,240 @@ name = "photocopier" icon = 'icons/obj/library.dmi' icon_state = "bigscanner" + var/insert_anim = "bigscanner1" anchored = 1 density = 1 use_power = 1 idle_power_usage = 30 active_power_usage = 200 power_channel = EQUIP - var/obj/item/weapon/paper/copy = null //what's in the copier! - var/obj/item/weapon/photo/photocopy = null + var/obj/item/copyitem = null //what's in the copier! var/copies = 1 //how many copies to print! var/toner = 30 //how much toner is left! woooooo~ var/maxcopies = 10 //how many copies can be copied at once- idea shamelessly stolen from bs12's copier! - var/mob/living/ass = null - var/busy = 0 - attack_ai(mob/user as mob) - return attack_hand(user) +/obj/machinery/photocopier/attack_ai(mob/user as mob) + return attack_hand(user) - attack_paw(mob/user as mob) - return attack_hand(user) +/obj/machinery/photocopier/attack_hand(mob/user as mob) + user.set_machine(src) - attack_hand(mob/user as mob) - user.set_machine(src) + var/dat = "Photocopier

        " + if(copyitem) + dat += "Remove Item
        " + if(toner) + dat += "Copy
        " + dat += "Printing: [copies] copies." + dat += "- " + dat += "+

        " + else if(toner) + dat += "Please insert something to copy.

        " + if(istype(user,/mob/living/silicon)) + dat += "Print photo from database

        " + dat += "Current toner level: [toner]" + if(!toner) + dat +="
        Please insert a new toner cartridge!" + user << browse(dat, "window=copier") + onclose(user, "copier") + return - var/dat = "Photocopier

        " - if(copy || photocopy || (ass && (ass.loc == src.loc))) - dat += "Remove Paper
        " - if(toner) - dat += "Copy
        " - dat += "Printing: [copies] copies." - dat += "- " - dat += "+

        " - else if(toner) - dat += "Please insert paper to copy.

        " - if(istype(user,/mob/living/silicon)) - dat += "Print photo from database

        " - dat += "Current toner level: [toner]" - if(!toner) - dat +="
        Please insert a new toner cartridge!" - user << browse(dat, "window=copier") - onclose(user, "copier") - return - - Topic(href, href_list) - if(href_list["copy"]) - if(copy) - for(var/i = 0, i < copies, i++) - if(toner > 0 && !busy && copy) - var/obj/item/weapon/paper/c = new /obj/item/weapon/paper (loc) - if(toner > 10) //lots of toner, make it dark - c.info = "" - else //no toner? shitty copies for you! - c.info = "" - var/copied = copy.info - copied = replacetext(copied, "" - c.name = copy.name // -- Doohl - c.fields = copy.fields - c.updateinfolinks() - toner-- - busy = 1 - sleep(15) - busy = 0 - else - break - updateUsrDialog() - else if(photocopy) - for(var/i = 0, i < copies, i++) - if(toner >= 5 && !busy && photocopy) - var/obj/item/weapon/photo/p = new /obj/item/weapon/photo (loc) - var/icon/I = icon(photocopy.icon, photocopy.icon_state) - var/icon/img = icon(photocopy.img) - if(toner > 10) //plenty of toner, go straight greyscale - I.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0)) //I'm not sure how expensive this is, but given the many limitations of photocopying, it shouldn't be an issue. - img.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(0,0,0)) - else //not much toner left, lighten the photo - I.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(100,100,100)) - img.MapColors(rgb(77,77,77), rgb(150,150,150), rgb(28,28,28), rgb(100,100,100)) - p.icon = I - p.img = img - p.name = photocopy.name - p.desc = photocopy.desc - p.scribble = photocopy.scribble - toner -= 5 //photos use a lot of ink! - busy = 1 - sleep(15) - busy = 0 - else - break - updateUsrDialog() - else if(ass) //ASS COPY. By Miauw - for(var/i = 0, i < copies, i++) - var/icon/temp_img - if(ishuman(ass) && (ass.get_item_by_slot(slot_w_uniform) || ass.get_item_by_slot(slot_wear_suit))) - usr << "You feel kind of silly copying [ass == usr ? "your" : ass][ass == usr ? "" : "\'s"] ass with [ass == usr ? "your" : "their"] clothes on." - else if(toner >= 5 && !busy && check_ass()) //You have to be sitting on the copier and either be a xeno or a human without clothes on. - if(isalien(ass) || istype(ass,/mob/living/simple_animal/hostile/alien)) //Xenos have their own asses, thanks to Pybro. - temp_img = icon('icons/ass/assalien.png') - else if(ishuman(ass)) //Suit checks are in check_ass - if(ass.gender == MALE) - temp_img = icon('icons/ass/assmale.png') - else if(ass.gender == FEMALE) - temp_img = icon('icons/ass/assfemale.png') - else //In case anyone ever makes the generic ass. For now I'll be using male asses. - temp_img = icon('icons/ass/assmale.png') - else - break - var/obj/item/weapon/photo/p = new /obj/item/weapon/photo (loc) - p.desc = "You see [ass]'s ass on the photo." - p.pixel_x = rand(-10, 10) - p.pixel_y = rand(-10, 10) - p.img = temp_img - var/icon/small_img = icon(temp_img) //Icon() is needed or else temp_img will be rescaled too >.> - var/icon/ic = icon('icons/obj/items.dmi',"photo") - small_img.Scale(8, 8) - ic.Blend(small_img,ICON_OVERLAY, 10, 13) - p.icon = ic - toner -= 5 - busy = 1 - sleep(15) - busy = 0 - updateUsrDialog() - else if(href_list["remove"]) - if(copy) - copy.loc = usr.loc - usr.put_in_hands(copy) - usr << "You take the paper out of \the [src]." - copy = null - updateUsrDialog() - else if(photocopy) - photocopy.loc = usr.loc - usr.put_in_hands(photocopy) - usr << "You take the photo out of \the [src]." - photocopy = null - updateUsrDialog() - else if(check_ass()) - ass << "You feel a slight pressure on your ass." - else if(href_list["min"]) - if(copies > 1) - copies-- - updateUsrDialog() - else if(href_list["add"]) - if(copies < maxcopies) - copies++ - updateUsrDialog() - else if(href_list["aipic"]) - if(!istype(usr,/mob/living/silicon)) return - if(toner >= 5) - var/mob/living/silicon/tempAI = usr - var/obj/item/device/camera/siliconcam/camera = tempAI.aiCamera - - if(!camera) - return - var/datum/picture/selection = camera.selectpicture() - if (!selection) - return - - var/obj/item/weapon/photo/p = new /obj/item/weapon/photo (src.loc) - p.construct(selection) - if (p.desc == "") - p.desc += "Copied by [tempAI.name]" - else - p.desc += " - Copied by [tempAI.name]" - toner -= 5 - sleep(15) - updateUsrDialog() - - attackby(obj/item/O as obj, mob/user as mob) - if(istype(O, /obj/item/weapon/paper)) - if(!copy && !photocopy) - user.drop_item() - copy = O - O.loc = src - user << "You insert the paper into \the [src]." - flick("bigscanner1", src) - updateUsrDialog() - else - user << "There is already something in \the [src]." - else if(istype(O, /obj/item/weapon/photo)) - if(copier_empty()) - user.drop_item() - photocopy = O - O.loc = src - user << "You insert the photo into \the [src]." - flick("bigscanner1", src) - updateUsrDialog() - else - user << "There is already something in \the [src]." - else if(istype(O, /obj/item/device/toner)) +/obj/machinery/photocopier/Topic(href, href_list) + if(href_list["copy"]) + if(stat & (BROKEN|NOPOWER)) + return + + for(var/i = 0, i < copies, i++) if(toner <= 0) - user.drop_item() - del(O) - toner = 30 - user << "You insert the toner cartridge into \the [src]." - updateUsrDialog() + break + + if (istype(copyitem, /obj/item/weapon/paper)) + copy(copyitem) + sleep(15) + else if (istype(copyitem, /obj/item/weapon/photo)) + photocopy(copyitem) + sleep(15) + else if (istype(copyitem, /obj/item/weapon/paper_bundle)) + var/obj/item/weapon/paper_bundle/B = bundlecopy(copyitem) + sleep(15*B.amount) else - user << "This cartridge is not yet ready for replacement! Use up the rest of the toner." - else if(istype(O, /obj/item/weapon/wrench)) - playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) - anchored = !anchored - user << "You [anchored ? "wrench" : "unwrench"] \the [src]." - else if(istype(O, /obj/item/weapon/grab)) //For ass-copying. - var/obj/item/weapon/grab/G = O - if(ismob(G.affecting) && G.affecting != ass) - var/mob/GM = G.affecting - visible_message("[usr] drags [GM.name] onto the photocopier!") - GM.loc = get_turf(src) - ass = GM - if(photocopy) - photocopy.loc = src.loc - photocopy = null - else if(copy) - copy.loc = src.loc - copy = null - updateUsrDialog() - return - - ex_act(severity) - switch(severity) - if(1.0) - qdel(src) - if(2.0) - if(prob(50)) - del(src) - else - if(toner > 0) - new /obj/effect/decal/cleanable/oil(get_turf(src)) - toner = 0 - else - if(prob(50)) - if(toner > 0) - new /obj/effect/decal/cleanable/oil(get_turf(src)) - toner = 0 - return - - blob_act() - if(prob(50)) - qdel(src) - else - if(toner > 0) - new /obj/effect/decal/cleanable/oil(get_turf(src)) - toner = 0 - return - -/obj/machinery/photocopier/MouseDrop_T(mob/target, mob/user) - check_ass() //Just to make sure that you can re-drag somebody onto it after they moved off. - if (!istype(target) || target.buckled || get_dist(user, src) > 1 || get_dist(user, target) > 1 || user.stat || istype(user, /mob/living/silicon/ai) || target == ass) - return - src.add_fingerprint(user) - if(target == user && !user.stat && !user.weakened && !user.stunned && !user.paralysis) - visible_message("[usr] jumps onto the photocopier!") - else if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis) - if(target.anchored) return - if(!ishuman(user) && !ismonkey(user)) return - visible_message("[usr] drags [target.name] onto the photocopier!") - target.loc = get_turf(src) - ass = target - if(photocopy) - photocopy.loc = src.loc - visible_message("[photocopy] is shoved out of the way by [ass]!") - photocopy = null - else if(copy) - copy.loc = src.loc - visible_message("[copy] is shoved out of the way by [ass]!") - copy = null - updateUsrDialog() - -/obj/machinery/photocopier/proc/check_ass() //I'm not sure wether I made this proc because it's good form or because of the name. - if(!ass) - return 0 - if(ass.loc != src.loc) - ass = null + usr << "\The [copyitem] can't be copied by \the [src]." + break + + use_power(active_power_usage) updateUsrDialog() - return 0 - else if(istype(ass,/mob/living/carbon/human)) - if(!ass.get_item_by_slot(slot_w_uniform) && !ass.get_item_by_slot(slot_wear_suit)) - return 1 - else - return 0 - else - return 1 + else if(href_list["remove"]) + if(copyitem) + copyitem.loc = usr.loc + usr.put_in_hands(copyitem) + usr << "You take \the [copyitem] out of \the [src]." + copyitem = null + updateUsrDialog() + else if(href_list["min"]) + if(copies > 1) + copies-- + updateUsrDialog() + else if(href_list["add"]) + if(copies < maxcopies) + copies++ + updateUsrDialog() + else if(href_list["aipic"]) + if(!istype(usr,/mob/living/silicon)) return + if(stat & (BROKEN|NOPOWER)) return + + if(toner >= 5) + var/mob/living/silicon/tempAI = usr + var/obj/item/device/camera/siliconcam/camera = tempAI.aiCamera -/obj/machinery/photocopier/proc/copier_empty() - if(copy || photocopy || check_ass()) - return 0 + if(!camera) + return + var/datum/picture/selection = camera.selectpicture() + if (!selection) + return + + var/obj/item/weapon/photo/p = new /obj/item/weapon/photo (src.loc) + p.construct(selection) + if (p.desc == "") + p.desc += "Copied by [tempAI.name]" + else + p.desc += " - Copied by [tempAI.name]" + toner -= 5 + sleep(15) + updateUsrDialog() + +/obj/machinery/photocopier/attackby(obj/item/O as obj, mob/user as mob) + if(istype(O, /obj/item/weapon/paper) || istype(O, /obj/item/weapon/photo) || istype(O, /obj/item/weapon/paper_bundle)) + if(!copyitem) + user.drop_item() + copyitem = O + O.loc = src + user << "You insert \the [O] into \the [src]." + flick(insert_anim, src) + updateUsrDialog() + else + user << "There is already something in \the [src]." + else if(istype(O, /obj/item/device/toner)) + if(toner <= 10) //allow replacing when low toner is affecting the print darkness + user.drop_item() + user << "You insert the toner cartridge into \the [src]." + var/obj/item/device/toner/T = O + toner += T.toner_amount + del(O) + updateUsrDialog() + else + user << "This cartridge is not yet ready for replacement! Use up the rest of the toner." + else if(istype(O, /obj/item/weapon/wrench)) + playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) + anchored = !anchored + user << "You [anchored ? "wrench" : "unwrench"] \the [src]." + return + +/obj/machinery/photocopier/ex_act(severity) + switch(severity) + if(1.0) + del(src) + if(2.0) + if(prob(50)) + del(src) + else + if(toner > 0) + new /obj/effect/decal/cleanable/oil(get_turf(src)) + toner = 0 + else + if(prob(50)) + if(toner > 0) + new /obj/effect/decal/cleanable/oil(get_turf(src)) + toner = 0 + return + +/obj/machinery/photocopier/blob_act() + if(prob(50)) + del(src) else - return 1 + if(toner > 0) + new /obj/effect/decal/cleanable/oil(get_turf(src)) + toner = 0 + return + +/obj/machinery/photocopier/proc/copy(var/obj/item/weapon/paper/copy) + var/obj/item/weapon/paper/c = new /obj/item/weapon/paper (loc) + if(toner > 10) //lots of toner, make it dark + c.info = "" + else //no toner? shitty copies for you! + c.info = "" + var/copied = html_decode(copy.info) + copied = replacetext(copied, "" + c.name = copy.name // -- Doohl + c.fields = copy.fields + c.stamps = copy.stamps + c.stamped = copy.stamped + c.ico = copy.ico + c.offset_x = copy.offset_x + c.offset_y = copy.offset_y + var/list/temp_overlays = copy.overlays //Iterates through stamps + var/image/img //and puts a matching + for (var/j = 1, j <= temp_overlays.len, j++) //gray overlay onto the copy + if(copy.ico.len) + if (findtext(copy.ico[j], "cap") || findtext(copy.ico[j], "cent")) + img = image('icons/obj/bureaucracy.dmi', "paper_stamp-circle") + else if (findtext(copy.ico[j], "deny")) + img = image('icons/obj/bureaucracy.dmi', "paper_stamp-x") + else + img = image('icons/obj/bureaucracy.dmi', "paper_stamp-dots") + img.pixel_x = copy.offset_x[j] + img.pixel_y = copy.offset_y[j] + c.overlays += img + c.updateinfolinks() + toner-- + if(toner == 0) + visible_message("A red light on \the [src] flashes, indicating that it is out of toner.") + return c + + +/obj/machinery/photocopier/proc/photocopy(var/obj/item/weapon/photo/photocopy) + var/obj/item/weapon/photo/p = new /obj/item/weapon/photo (loc) + p.name = photocopy.name + p.icon = photocopy.icon + p.tiny = photocopy.tiny + p.img = photocopy.img + p.desc = photocopy.desc + p.pixel_x = photocopy.pixel_x + p.pixel_y = photocopy.pixel_y + if(photocopy.scribble) + p.scribble = photocopy.scribble + toner -= 5 + if(toner < 0) + toner = 0 + visible_message("A red light on \the [src] flashes, indicating that it is out of toner.") + return p + +//If need_toner is 0, the copies will still be lightened when low on toner, however it will not be prevented from printing. TODO: Implement print queues for fax machines and get rid of need_toner +/obj/machinery/photocopier/proc/bundlecopy(var/obj/item/weapon/paper_bundle/bundle, var/need_toner=1) + var/obj/item/weapon/paper_bundle/p = new /obj/item/weapon/paper_bundle (src) + for(var/obj/item/weapon/W in bundle) + if(toner <= 0 && need_toner) + toner = 0 + visible_message("A red light on \the [src] flashes, indicating that it is out of toner.") + break + + if(istype(W, /obj/item/weapon/paper)) + W = copy(W) + else if(istype(W, /obj/item/weapon/photo)) + W = photocopy(W) + W.loc = p + p.amount++ + p.amount-- + p.loc = src.loc + p.update_icon() + p.icon_state = "paper_words" + p.name = bundle.name + p.pixel_y = rand(-8, 8) + p.pixel_x = rand(-9, 9) + return p /obj/item/device/toner name = "toner cartridge" icon_state = "tonercartridge" + var/toner_amount = 30 diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index 3d56957830c..ec32c90e850 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -30,9 +30,10 @@ var/icon/img //Big photo image var/scribble //Scribble on the back. var/icon/tiny + var/photo_size = 3 /obj/item/weapon/photo/attack_self(mob/user as mob) - examine() + src.examine(user) /obj/item/weapon/photo/attackby(obj/item/weapon/P as obj, mob/user as mob) if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon)) @@ -42,22 +43,21 @@ scribble = txt ..() -/obj/item/weapon/photo/examine() - set src in oview(1) - if(in_range(usr, src)) - show(usr) - usr << desc +/obj/item/weapon/photo/examine(mob/user) + if(in_range(user, src)) + show(user) + user << desc else - usr << "It is too far away." + user << "It is too far away." /obj/item/weapon/photo/proc/show(mob/user as mob) user << browse_rsc(img, "tmp_photo.png") user << browse("[name]" \ - + "" \ - + "
        Written on the back:
        [scribble]" : ]"\ - + "", "window=book;size=200x[scribble ? 400 : 200]") - onclose(user, "[name]") + + "" \ + + "" \ + + "[scribble ? "
        Written on the back:
        [scribble]" : ""]"\ + + "", "window=book;size=[64*photo_size]x[scribble ? 400 : 64*photo_size]") + onclose(usr, "[name]") return /obj/item/weapon/photo/verb/rename() @@ -119,13 +119,21 @@ w_class = 2.0 flags = FPRINT | CONDUCT | TABLEPASS slot_flags = SLOT_BELT -// matter = list("metal" = 2000) + var/list/matter = list("metal" = 2000) var/pictures_max = 10 var/pictures_left = 10 var/on = 1 var/icon_on = "camera" var/icon_off = "camera_off" + var/size = 3 +/obj/item/device/camera/verb/change_size() + set name = "Set Photo Focus" + set category = "Object" + var/nsize = input("Photo Size","Pick a size of resulting photo.") as null|anything in list(1,3,5,7) + if(nsize) + size = nsize + usr << "Camera will now take [size]x[size] photos." /obj/item/device/camera/attack(mob/living/carbon/human/M as mob, mob/user as mob) return @@ -152,41 +160,52 @@ ..() -/obj/item/device/camera/proc/get_icon(turf/the_turf as turf) +/obj/item/device/camera/proc/get_icon(list/turfs, turf/center) + //Bigger icon base to capture those icons that were shifted to the next tile //i.e. pretty much all wall-mounted machinery var/icon/res = icon('icons/effects/96x96.dmi', "") - - var/icon/turficon = build_composite_icon(the_turf) - res.Blend(turficon, ICON_OVERLAY, 33, 33) + res.Scale(size*32, size*32) + // Initialize the photograph to black. + res.Blend("#000", ICON_OVERLAY) var/atoms[] = list() - for(var/atom/A in the_turf) - if(A.invisibility) continue - atoms.Add(A) + for(var/turf/the_turf in turfs) + // Add outselves to the list of stuff to draw + atoms.Add(the_turf); + // As well as anything that isn't invisible. + for(var/atom/A in the_turf) + if(A.invisibility) continue + atoms.Add(A) - //Sorting icons based on levels - var/gap = atoms.len - var/swapped = 1 - while (gap > 1 || swapped) - swapped = 0 - if(gap > 1) - gap = round(gap / 1.247330950103979) - if(gap < 1) - gap = 1 - for(var/i = 1; gap + i <= atoms.len; i++) - var/atom/l = atoms[i] //Fucking hate - var/atom/r = atoms[gap+i] //how lists work here - if(l.layer > r.layer) //no "atoms[i].layer" for me - atoms.Swap(i, gap + i) - swapped = 1 - - for(var/i; i <= atoms.len; i++) - var/atom/A = atoms[i] + // Sort the atoms into their layers + var/list/sorted = sort_atoms_by_layer(atoms) + var/center_offset = (size-1)/2 * 32 + 1 + for(var/i; i <= sorted.len; i++) + var/atom/A = sorted[i] if(A) - var/icon/img = getFlatIcon(A, A.dir)//build_composite_icon(A) + var/icon/img = getFlatIcon(A)//build_composite_icon(A) + + // If what we got back is actually a picture, draw it. if(istype(img, /icon)) - res.Blend(new/icon(img, "", A.dir), ICON_OVERLAY, 33 + A.pixel_x, 33 + A.pixel_y) + // Check if we're looking at a mob that's lying down + if(istype(A, /mob/living) && A:lying) + // If they are, apply that effect to their picture. + img.BecomeLying() + // Calculate where we are relative to the center of the photo + var/xoff = (A.x - center.x) * 32 + center_offset + var/yoff = (A.y - center.y) * 32 + center_offset + if (istype(A,/atom/movable)) + xoff+=A:step_x + yoff+=A:step_y + res.Blend(img, blendMode2iconMode(A.blend_mode), A.pixel_x + xoff, A.pixel_y + yoff) + + // Lastly, render any contained effects on top. + for(var/turf/the_turf in turfs) + // Calculate where we are relative to the center of the photo + var/xoff = (the_turf.x - center.x) * 32 + center_offset + var/yoff = (the_turf.y - center.y) * 32 + center_offset + res.Blend(getFlatIcon(the_turf.loc), blendMode2iconMode(the_turf.blend_mode),xoff,yoff) return res @@ -236,31 +255,29 @@ return can_see /obj/item/device/camera/proc/captureimage(atom/target, mob/user, flag) - var/x_c = target.x - 1 - var/y_c = target.y + 1 + var/x_c = target.x - (size-1)/2 + var/y_c = target.y + (size-1)/2 var/z_c = target.z - - var/icon/temp = icon('icons/effects/96x96.dmi',"") - var/icon/black = icon('icons/turf/space.dmi', "black") + var/list/turfs = list() var/mobs = "" - for(var/i = 1; i <= 3; i++) - for(var/j = 1; j <= 3; j++) + for(var/i = 1; i <= size; i++) + for(var/j = 1; j <= size; j++) var/turf/T = locate(x_c, y_c, z_c) if(can_capture_turf(T, user)) - temp.Blend(get_icon(T), ICON_OVERLAY, 32 * (j-1-1), 32 - 32 * (i-1)) - mobs += get_mobs(T, user) - else - temp.Blend(black, ICON_OVERLAY, 32 * (j-1), 64 - 32 * (i-1)) + turfs.Add(T) + mobs += get_mobs(T) x_c++ y_c-- - x_c = x_c - 3 + x_c = x_c - size - var/datum/picture/P = createpicture(user, temp, mobs, flag) + var/datum/picture/P = createpicture(target, user, turfs, mobs, flag) printpicture(user, P) -/obj/item/device/camera/proc/createpicture(mob/user, icon/temp, mobs, flag) - var/icon/small_img = icon(temp) - var/icon/tiny_img = icon(temp) +/obj/item/device/camera/proc/createpicture(atom/target, mob/user, list/turfs, mobs, flag) + var/icon/photoimage = get_icon(turfs, target) + + var/icon/small_img = icon(photoimage) + var/icon/tiny_img = icon(photoimage) var/icon/ic = icon('icons/obj/items.dmi',"photo") var/icon/pc = icon('icons/obj/bureaucracy.dmi', "photo") small_img.Scale(8, 8) @@ -269,13 +286,14 @@ pc.Blend(tiny_img,ICON_OVERLAY, 12, 19) var/datum/picture/P = new() - P.fields["author"] = user + P.fields["name"] = "photo" P.fields["icon"] = ic P.fields["tiny"] = pc - P.fields["img"] = temp + P.fields["img"] = photoimage P.fields["desc"] = mobs P.fields["pixel_x"] = rand(-10, 10) P.fields["pixel_y"] = rand(-10, 10) + P.fields["size"] = size return P @@ -287,12 +305,27 @@ Photo.construct(P) /obj/item/weapon/photo/proc/construct(var/datum/picture/P) + name = P.fields["name"] icon = P.fields["icon"] tiny = P.fields["tiny"] img = P.fields["img"] desc = P.fields["desc"] pixel_x = P.fields["pixel_x"] pixel_y = P.fields["pixel_y"] + photo_size = P.fields["size"] + +/obj/item/weapon/photo/proc/copy() + var/obj/item/weapon/photo/p = new/obj/item/weapon/photo() + + p.icon = icon(icon, icon_state) + p.img = icon(img) + p.tiny = icon(tiny) + p.name = name + p.desc = desc + p.scribble = scribble + + return p + /************** *video camera * @@ -345,4 +378,4 @@ if(get_dist(src, M) <= canhear_range) talk_into(M, msg) for(var/mob/living/carbon/human/H in watcherslist) - H.show_message(text("\blue (Newscaster) [] says, '[]'",M,msg), 1) + H.show_message(text("\blue (Newscaster) [] says, '[]'",M,msg), 1) \ No newline at end of file diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm index fb2a0751744..d0543a308dd 100644 --- a/code/modules/paperwork/stamps.dm +++ b/code/modules/paperwork/stamps.dm @@ -65,7 +65,7 @@ _color = "clown" /obj/item/weapon/stamp/centcom - name = "Nanotrasen representative's rubber stamp" + name = "NanoTrasen Representative's rubber stamp" icon_state = "stamp-cent" _color = "centcom" diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index 3540046c7f3c4eb2d1a5c9e4f5b096c1ed830970..6a6f9fca4983bb01d0affe1f25125603c5e9bd73 100644 GIT binary patch delta 4998 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 delta 5014 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 literal 10886 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

        s_lutd=yM#^9lqwSe$4oP?(l#yC%t;P^6W%J c712EwP-7RT$;sLj1E7z-j-htd4ZE=a0qh1k6aWAK diff --git a/maps/cyberiad.dmm b/maps/cyberiad.dmm index 9503c48009c..92360d6d226 100644 --- a/maps/cyberiad.dmm +++ b/maps/cyberiad.dmm @@ -1289,7 +1289,7 @@ "ayO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area) "ayP" = (/obj/structure/table,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; frequency = 1475; listening = 1; name = "Station Intercom (Security)"; pixel_x = 30; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/light_switch{pixel_x = 27; pixel_y = -8},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "ayQ" = (/obj/structure/table/woodentable,/obj/item/device/taperecorder{pixel_y = 0},/turf/simulated/floor/carpet,/area/magistrateoffice) -"ayR" = (/obj/structure/table/woodentable,/obj/machinery/faxmachine{department = "Magistrate's Office"},/turf/simulated/floor/carpet,/area/magistrateoffice) +"ayR" = (/obj/structure/table/woodentable,/obj/machinery/photocopier/faxmachine{department = "Magistrate's Office"},/turf/simulated/floor/carpet,/area/magistrateoffice) "ayS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/carpet,/area/magistrateoffice) "ayT" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/unary/vent_pump,/obj/machinery/photocopier,/turf/simulated/floor/carpet,/area/magistrateoffice) "ayU" = (/obj/structure/table/reinforced,/obj/item/device/taperecorder{pixel_x = -4; pixel_y = 2},/obj/item/device/camera{pixel_x = 3; pixel_y = -4},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) @@ -1410,7 +1410,7 @@ "aBf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor/carpet,/area/magistrateoffice) "aBg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/carpet,/area/magistrateoffice) "aBh" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Magistrate's Office"; req_access_txt = "38"},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/magistrateoffice) -"aBi" = (/obj/structure/table/reinforced,/obj/machinery/faxmachine{department = "Internal Affairs"},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) +"aBi" = (/obj/structure/table/reinforced,/obj/machinery/photocopier/faxmachine{department = "Internal Affairs"},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) "aBj" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) "aBk" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/effect/landmark/start{name = "Internal Affairs Agent"},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) "aBl" = (/obj/structure/table/reinforced,/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) @@ -2275,7 +2275,7 @@ "aRM" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) "aRN" = (/obj/structure/table,/obj/machinery/light/small,/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) "aRO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/securehallway) -"aRP" = (/obj/structure/table/woodentable,/obj/machinery/faxmachine{department = "Head of Security's Office"},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) +"aRP" = (/obj/structure/table/woodentable,/obj/machinery/photocopier/faxmachine{department = "Head of Security's Office"},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "aRQ" = (/obj/machinery/camera/xray{c_tag = "Arrivals Shuttle West"; dir = 4; network = list("SS13")},/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "aRR" = (/obj/effect/landmark{name = "Observer-Start"},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "aRS" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) @@ -3298,6 +3298,7 @@ "blv" = (/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"},/turf/simulated/wall,/area) "blw" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/medical/reception) "blx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/medical{name = "Morgue"; req_access_txt = "0"; req_one_access_txt = "6,9"},/turf/simulated/floor,/area/medical/morgue) +"bly" = (/obj/machinery/computer/general_air_control{frequency = 1441; name = "Tank Monitor"; sensors = list("n2_sensor" = "Nitrogen", "o2_sensor" = "Oxygen", "co2_sensor" = "Carbon Dioxide", "tox_sensor" = "Toxins", "n2o_sensor" = "Nitrous Oxide", "waste_sensor" = "Gas Mix Tank")},/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor,/area/atmos/control) "blz" = (/obj/machinery/door/airlock{name = "Starboard Emergency Storage"; req_access_txt = "0"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/asmaint) "blA" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; level = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/flora/kirbyplants,/turf/simulated/floor,/area/hallway/primary/starboard/east) "blB" = (/turf/simulated/floor{dir = 1; icon_state = "loadingarea"; tag = "loading"},/area/hallway/primary/starboard/east) @@ -3432,7 +3433,7 @@ "bob" = (/obj/machinery/atmospherics/pipe/manifold{_color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/lattice,/turf/space,/area) "boc" = (/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; listening = 1; name = "Captain's Intercom"; pixel_x = -27; pixel_y = -3},/obj/structure/closet/secure_closet/captains,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bod" = (/obj/machinery/computer/card,/obj/item/weapon/card/id/captains_spare,/turf/simulated/floor/wood,/area/crew_quarters/captain) -"boe" = (/obj/structure/table/woodentable,/obj/machinery/faxmachine{department = "Captain's Office"},/turf/simulated/floor/wood,/area/crew_quarters/captain) +"boe" = (/obj/structure/table/woodentable,/obj/machinery/photocopier/faxmachine{department = "Captain's Office"},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bof" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bog" = (/obj/item/flag/nt,/turf/simulated/floor/wood,/area/crew_quarters/captain) "boh" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/sw) @@ -4647,7 +4648,7 @@ "bLu" = (/obj/machinery/iv_drip,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/sleeper) "bLv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door_control{id = "paramedic"; name = "Garage Door Control"; pixel_x = -1; pixel_y = 24; req_access_txt = "66"},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/paramedic) "bLw" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area) -"bLx" = (/obj/structure/disposalpipe/segment,/obj/structure/table,/obj/machinery/faxmachine{department = "Chief Medical Officer's Office"},/turf/simulated/floor{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/cmo) +"bLx" = (/obj/structure/disposalpipe/segment,/obj/structure/table,/obj/machinery/photocopier/faxmachine{department = "Chief Medical Officer's Office"},/turf/simulated/floor{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/cmo) "bLy" = (/obj/machinery/light{dir = 1},/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/cmo) "bLz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/cmo) "bLA" = (/obj/structure/closet/secure_closet/CMO,/obj/machinery/light{dir = 1},/obj/item/clothing/mask/gas,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/weapon/storage/briefcase,/turf/simulated/floor{tag = "icon-whiteblue (NORTHEAST)"; icon_state = "whiteblue"; dir = 5},/area/medical/cmo) @@ -4675,7 +4676,7 @@ "bLW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bLX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "bLY" = (/obj/machinery/power/apc{dir = 8; name = "RD Office APC"; pixel_x = -25},/obj/structure/cable,/obj/machinery/light_switch{pixel_y = -23},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/flora/kirbyplants,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) -"bLZ" = (/obj/machinery/hologram/holopad,/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table,/obj/machinery/faxmachine{department = "Research Director's Office"},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) +"bLZ" = (/obj/machinery/hologram/holopad,/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table,/obj/machinery/photocopier/faxmachine{department = "Research Director's Office"},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) "bMa" = (/obj/structure/table,/obj/item/weapon/cartridge/signal/toxins,/obj/item/weapon/cartridge/signal/toxins{pixel_x = -4; pixel_y = 2},/obj/item/weapon/cartridge/signal/toxins{pixel_x = 4; pixel_y = 6},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera{c_tag = "Research Director's Office"; dir = 1; network = list("Research","SS13")},/obj/item/clothing/glasses/welding/superior,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) "bMb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Mr. Chang's"},/turf/simulated/floor,/area/crew_quarters/mrchangs) "bMc" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) @@ -5269,7 +5270,7 @@ "bXs" = (/obj/item/device/radio/intercom{pixel_x = 29; pixel_y = -1},/obj/machinery/computer/crew,/turf/simulated/floor/wood,/area/blueshield) "bXt" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock{name = "Unisex Showers"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "bXu" = (/obj/machinery/atmospherics/unary/vent_scrubber,/obj/structure/closet,/obj/item/device/modkit/tajaran,/obj/item/stack/medical/bruise_pack/tajaran,/obj/item/stack/medical/ointment/tajaran,/obj/machinery/alarm{pixel_y = 25; target_temperature = 283.15},/turf/simulated/floor{icon_state = "wood"},/area/embassy/tajaran) -"bXv" = (/obj/machinery/camera{c_tag = "NT Representative's Office"; dir = 1; network = list("SS13")},/obj/structure/table/woodentable,/obj/machinery/faxmachine{department = "NT Representative's Office"},/turf/simulated/floor/wood,/area/ntrep) +"bXv" = (/obj/machinery/camera{c_tag = "NT Representative's Office"; dir = 1; network = list("SS13")},/obj/structure/table/woodentable,/obj/machinery/photocopier/faxmachine{department = "NT Representative's Office"},/turf/simulated/floor/wood,/area/ntrep) "bXw" = (/obj/machinery/power/apc{name = "Mime Office APC"; pixel_y = -24},/obj/structure/cable,/turf/simulated/floor/wood,/area/mimeoffice) "bXx" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/obj/machinery/computer/secure_data,/turf/simulated/floor/wood,/area/ntrep) "bXy" = (/obj/structure/disposalpipe/segment,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/camera{c_tag = "Aft Primary Hallway 1"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft) @@ -6577,7 +6578,7 @@ "cwA" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/vending/tool,/turf/simulated/floor,/area/engine/equipmentstorage) "cwB" = (/obj/structure/closet/secure_closet/engineering_chief{req_access_txt = "0"},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "cwC" = (/obj/machinery/atmospherics/pipe/manifold{_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) -"cwD" = (/obj/structure/table/reinforced,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/faxmachine{department = "Chief Engineer's Office"},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) +"cwD" = (/obj/structure/table/reinforced,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/photocopier/faxmachine{department = "Chief Engineer's Office"},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "cwE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/folder/yellow,/obj/item/weapon/stamp/ce,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "cwF" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/pen,/obj/item/weapon/lighter/zippo,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "cwG" = (/obj/machinery/autolathe,/turf/simulated/floor,/area/engine/equipmentstorage) @@ -6641,7 +6642,6 @@ "cxM" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/engine/hardsuitstorage) "cxN" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/camera{c_tag = "Engineering Equipment East"; dir = 8; network = list("SS13")},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 30; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple{_color = "blue"; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/structure/engineeringcart,/turf/simulated/floor,/area/engine/equipmentstorage) "cxO" = (/obj/machinery/atmospherics/pipe/simple{_color = "cyan"; dir = 4; icon_state = "intact-c"; level = 2},/obj/machinery/atmospherics/pipe/simple{_color = "red"; icon_state = "intact-r"; level = 2},/turf/simulated/floor,/area/atmos) -"cxP" = (/obj/machinery/atmospherics/binary/passive_gate{dir = 8; name = "Air to ext"},/turf/simulated/floor,/area/atmos) "cxQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple{_color = "cyan"; dir = 4; icon_state = "intact-c"; level = 2},/turf/simulated/floor,/area/atmos) "cxR" = (/obj/machinery/atmospherics/pipe/simple{_color = "cyan"; dir = 4; icon_state = "intact-c"; level = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/atmos) "cxS" = (/obj/machinery/atmospherics/pipe/simple{_color = "red"; icon_state = "intact-r"; level = 2},/obj/machinery/atmospherics/pipe/simple{_color = "cyan"; dir = 4; icon_state = "intact-c"; level = 2},/turf/simulated/floor,/area/atmos) @@ -6901,7 +6901,7 @@ "cCM" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/engine/reactor_core) "cCN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/closet/radiation,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/item/weapon/book/manual/supermatter_engine,/turf/simulated/floor,/area/engine/reactor_core) "cCO" = (/obj/machinery/camera{c_tag = "Engineering Supermatter Decontamination"; dir = 1; network = list("Supermatter","SS13")},/obj/machinery/light_switch{pixel_y = -25},/obj/structure/closet/radiation,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/item/weapon/book/manual/supermatter_engine,/turf/simulated/floor,/area/engine/reactor_core) -"cCP" = (/obj/structure/table,/obj/machinery/faxmachine{department = "Head of Personnel's Office"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor,/area/crew_quarters/heads) +"cCP" = (/obj/structure/table,/obj/machinery/photocopier/faxmachine{department = "Head of Personnel's Office"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor,/area/crew_quarters/heads) "cCQ" = (/obj/machinery/light,/obj/machinery/camera{c_tag = "Engineering Supermatter Monitoring"; dir = 1; network = list("SS13")},/obj/machinery/computer/general_air_control{frequency = 1443; name = "Supermatter Gas Mix Monitoring"; sensors = list("supermatter_gas" = "Supermatter Gas Mix")},/turf/simulated/floor,/area/engine/reactor_core) "cCR" = (/obj/structure/table,/obj/item/weapon/book/manual/supermatter_engine,/turf/simulated/floor,/area/engine/reactor_core) "cCS" = (/obj/machinery/shield_gen,/turf/simulated/floor/plating,/area/storage/secure) @@ -12379,7 +12379,6 @@ "eEe" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/computer/atmos_alert,/turf/simulated/floor,/area/atmos/control) "eEf" = (/obj/machinery/atmospherics/pipe/simple{_color = "red"; icon_state = "intact-r-f"; level = 1; name = "pipe"},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "atmos"; name = "Atmos Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/atmos/control) "eEg" = (/obj/machinery/computer/atmoscontrol,/turf/simulated/floor,/area/atmos/control) -"eEh" = (/obj/machinery/computer/general_air_control{frequency = 1441; name = "Tank Monitor"; sensors = list("n2_sensor" = "Nitrogen", "o2_sensor" = "Oxygen", "co2_sensor" = "Carbon Dioxide", "tox_sensor" = "Toxins", "n2o_sensor" = "Nitrous Oxide", "waste_sensor" = "Gas Mix Tank")},/turf/simulated/floor,/area/atmos/control) "eEi" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/computer/security/engineering,/obj/machinery/camera{c_tag = "Atmospherics Control Room"; network = list("SS13")},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 1; name = "Atmospherics Control APC"; pixel_y = 26},/turf/simulated/floor,/area/atmos/control) "eEj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/machinery/computer/general_air_control{frequency = 1443; level = 3; name = "Distribution and Waste Monitor"; sensors = list("mair_in_meter" = "Mixed Air In", "air_sensor" = "Mixed Air Supply Tank", "mair_out_meter" = "Mixed Air Out", "dloop_atm_meter" = "Distribution Loop", "wloop_atm_meter" = "Waste Loop")},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/atmos/control) "eEk" = (/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor,/area/atmos/control) @@ -12591,7 +12590,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachIaaaaaaaaachIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachJchJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacfBchKchLcgBchNchOchPchQchRchSchTaaqbXmchUaaiaaaaaaaaaaaaaaichVchWchXchXchYchZaaqciabXzbSDcibciccyYczMcyYcyYcyYcyWcyXcyUcyUcyRcyTaaibzXbzXaaqchdcikcilcimcincioaaqcinciocimcipciqchkaaicgieATcgjaaiciscdCceZaaiaaiaaiaaiaaiaaiaaiaaibzXbzXbzXaaiaabaaaaaaaaaaabaabaabaaaaaaaaaaaaaaaaaacrzcitciucivaaiaaiciwcixciyaaiaaiaaidTedSYdSSdSYdTbaaiaaiaaaaaaaaaciDaaaaaaaaaaabaaaaaaaaaaaqaaqaaqaabaaaaaaaabaaaaaaaabaabaabciEciFciGbQGaaqaaiaaibPqbPrbPqaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachIchIchIchIchIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHboVboVboVboVboVboVboVboVboVboVboVboVciIaaiaaqaaqaaqaaqaaqaaqciJciKaaiaaiaaiaaiaaiaaiaaqaaqaaqaaqaaqaaqaaqciLbXzbSDciMciNeByeEbeEcdZxeaeciTeBceBkeBleBmeBxaaibzXbzXaaqciZcjacilcimcimeBGaaqeBFcimcimcipcilcjdaaiaaiaaiaaiaaiciscdCcjeaaibzXbzXbzXbzXbzXbzXbzXbzXbzXbzXaaiaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaadITcjfcjgcjhaaiaaicjicjjcjkaaiaaaaaacjlcjlcjmcjlcjlaaaaaaaaaaaaaaaciDaaaaaaaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabcjnbNtbNtbNuaaqaaqaaiaaiaaiaaibNvaabaabaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachIaaachIaaaaaachIchIchIchIchIchIchIaaaaaachIaaachIaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjodfKcjqcjrcjrecUcjrcjtcjucjvdgkcjxecscjzcjAcjAcjBcjCcjDcjDcjDcjEcjFcjGcjHcjIcjHcjHcjHcjGcjHcjHcjHcjJcjKcjLbXzbSDcjMcjNdYEaqAaaicfXactatTcjPcjQactasVcaFaaibzXbzXaaqdYbcjScjTcjUcimcjVaaqdYkcimcjXcjYcjTcjZaaibzXbzXbzXeEtciscdCciseEtbzXbzXbzXbzXbzXbzXbzXbzXbzXbzXaaiaaaaaaaaaaaaaaaaabaabaabaaaaaaaaaaaaaaacaUaaickbaqAcaUayGckcckdbdbayHaaackeckfckgckhckgckfckeaaachBchCchCckiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachIchIchIaaachIchIchIchIchIchIchIchIchIaaachIchIchIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjockjckkcklckkeeBckkckjckkckncklckkeDMckpbSEckpckpckqbSEbSEbSEbSEckrckpckpckpckpckpckpckpckpckpckpckscktckuckvckwckxckyckzckAaaickBckCckDckEckFeEheEieEjacdcfeckJabHckKckLckMckNcimckOaaqckOcimckNckPcilckQaaickRacdacdckSckTcdCckUcaUayGanFanFbalaaiaaiaaianEanFanGaaiaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaickVckWckXaaiaabazGckYazGaabaaackeckZclaclbclackZckeaaaciDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachIchIchIaaachIchIchIchIchIchIchIchIchIaaachIchIchIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjockjckkcklckkeeBckkckjckkckncklckkeDMckpbSEckpckpckqbSEbSEbSEbSEckrckpckpckpckpckpckpckpckpckpckpckscktckuckvckwckxckyckzckAaaickBckCckDckEckFblyeEieEjacdcfeckJabHckKckLckMckNcimckOaaqckOcimckNckPcilckQaaickRacdacdckSckTcdCckUcaUayGanFanFbalaaiaaiaaianEanFanGaaiaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaickVckWckXaaiaabazGckYazGaabaaackeckZclaclbclackZckeaaaciDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachIchIchIaaachIchIchIchIchIchIchIchIchIaaachIchIchIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaedickkedsclccldeezcldedFclgdZMeACcljclkcktcllclmclmclnabHcloabHclpclqclpclpclpclpclpclpclpclpclpclpclrckpclscltcluclvclwclxclyclzclAclBceEclCeEfeEgeEdeEeactbWeclHaPnclIcimcilcimcimclJayOclKcimcimcipcilclLaaiclMaaiaaaaqAaaieEuaaiaaiaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaaiaaiaaiaaiaaiaaiclOclPclQaaiaabaDBclRaDBaabaaackeclSclTclUclVclSckeaaaciDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachIchIchIaaachIchIchIchIchIchIchIchIchIaaachIchIchIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiclWaaqaaqclXaaqclYaaqaaqclZanGaaqaaqanEanFanGaaqaaqaaqaaqcmacmbcmccmdcmecmfcmgcaCcmhcaCcaCcmicaCcmjeEoeEpeEqeEreBnbzXclManpcmpcmqcmrcmscmtcmuaaqcmvcmtcmwcipcmxcmyaaiclMaaiaaaeEycmAcmBcmCaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicmDcmEcmFcmGcmHcmIcmJaaqcmKcmLcmMactcmNaaacmOaaaaaaaaackecmPcmQcmQcmQcmRckeaaaciDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachIchIchIchIchIchIchIchIchIchIchIchIchIchIchIchIchIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeDaeDaeDaeEaeEaeDaeEaeEaeEafdaeEaeEaeEaeDaeDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBIcmScmTcmUcmVcmWcmXcmYcmZcnacnbcnccndcnbcnecnfcngcngcnhaaqcnicnjcnkcnlbSDcnmcnncnobZbbZacbRbZacgUcnpeEmeEneEkeElaaiaaiclManpaaiaaicnuaaiaaiabnbxDacdacdacdcnvacdbeIacdcnwaaiaaaeExcnycmBcnzaaieEwckackaeEvcaUaaibzlactactcnAactactcnAcnBaaaaaaaaicnCcnDcnCcnEcnFcitclPaaqaaJcnGaaJaaiaaiaaacnHaaaaabaaackeckeckecnIckeckeckeaaaciDaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -12605,7 +12604,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachIchIchIaaachIchIchIchIchIchIch aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachIaaaaaachIchIchIchIchIchIchIchIchIaaaaaachIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacpvcpvcpvcpvcpvcpvcpvcpvcpvaaaaaaaaaaeEaabcubcuccuccudcuecufcufcufcuecufcufcufcuecufcufcugcuccuccuccuccuccuhcuicujcukculcumcuncuocupbXmcmScuqaaqaaqaaqaaqbXmbXnaaicxBcuscutcuucxKcxJcxIcxHcxMcxLcuBcuCcuDdRZcuFcxxcxycxzciRciiciiciiciicxAckFcuIcuJcmmdQQdQUcwRdTydHidHAdMYdQGcZodczdHhcuUcuVcsDcuWcsGcsGcrEaaaaaaaabaqAeBfcBucBwaaqcuYctFcisctFaaqcuZcvactHeBdeBectKcuZcvdabnaaaaaaaaicnCcnDcnCcvecnFcitciuctNcvfcvgcitcvhaaqaaqaaqaaiaaaaaacrgaabcvicvicvicvicviaaactbaaacvicvicvicvicviaabcrgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachIchIchIchIchIchIchIchIchIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacpvcpvcpvcpvcpvcpvcpvcpvcpvaaaaaaaaaaeDaaaaabaaaaabaabcvjaabaaaaabcvjaabaaaaabcvjaabaaaaaaaaaaaaaaaaaaaaaaaactdbNtcvkcvlcvmcvnaaicvobXmcvpctkctkctkctkctkctkcvqaaicwOcvscvtcvuciXcjOckGckIciUciWcvAcvBcvCcvDcvEciSciPciOciRciQciAciiciiciCckFcvKcvLcmmcmncuKcvMaaqcsxcsvcrBcrAcsycszcsycvUaabcrEcrEcrEcrEcrEaabaabaabccpcBtcBucBwaaqcBvcvYcvZcwacwbabtayOayOcAJayOcweaCtaaqabnaaaaaaaaicnCcnCcnCctLcwfcwgcwhcptcwicrQcrQcwjcwkcwlcwmdIpaaaaaacrgaaaaabaaaaabaabaabaaactbaaaaabaaaaabaaaaabaaacrgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachIchIchIchIchIchIchIchIchIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacpvcpvcpvcpvcpvcpvcpvcpvcpvaaaaaaaaaaeDaeDaeEaabaabcoJcwncoLaaacoJcwncoLaaacoJcwncoLaabaaaaaaaaaaaaaaaaaaaaaaabaabcwoaaiaaiaaiaaiaaicwpcwqbXmcwrbXmbXmbXmcwscwtcwucwvcvtcvtcvrciXcnrclGcmlclEclFcwBcwCcwDcwEcwFcrscrrcrqcrpcpbcpacoZcofcntcwPcwQcwRcwScwTcwUcwVcwWcwXcwYcwZcxacswcxbcxccxdcsCcsDcxecxfcxfcrEaaaaaaaabaqAcBDcBucBEaaqcAxcBBcBBcCEaaqcBFcwccBycygcBxcBCczvcBAcnxaaaaaacxoancancancanccxpcxqcxrcxqcxscxqcxqcxtctNcitcitdITaaaaaacrgaaactactactactactaaabctbaabctactactactactaaabcrgaaaaaaaaaaaaaaaaaaaaacxuaaaaaaaaacxuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachIchIchIchIchIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacpvcpvcpvcpvcpvcpvcpvcpvcpvaaaaaaaaaaaaaaaaaaaaaaaacoJcwncoLaabcoJcwncoLaaacoJcwncoLaaaaaaaaaaabaaaaaaaaaaaaaabaabaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaicySboVcxwcvtcvtcvucslcsmctoctpcuraaidIWcxDcxEcxFcxGaaicsiciicskcsjcrvcrtciicshcoccodcxOcxPcxQcxRcxScxTcxUcxVcxWcmmcxXcxYcxZctzaabctAcyacybcyccrEaaaaaaaaaaqAcgpcBGcyeaaqcCDcDncBRcxmcBHcBucDvcDscygcCFcDqcDpcDrcoqaabaaadLvcyreDDcyscytcyucmIcyvcmIcywcmIcdTcmIcDocyxcitaaiaabaabcrgaabctUctVctVctVctVctWctXctYctZctZctZctZcyyaabcrgaaaaaaaaaaaaaaaaaaaaacxucxucxucxucxuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNpaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachIchIchIchIchIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacpvcpvcpvcpvcpvcpvcpvcpvcpvaaaaaaaaaaaaaaaaaaaaaaaacoJcwncoLaabcoJcwncoLaaacoJcwncoLaaaaaaaaaaabaaaaaaaaaaaaaabaabaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaicySboVcxwcvtcvtcvucslcsmctoctpcuraaidIWcxDcxEcxFcxGaaicsiciicskcsjcrvcrtciicshcoccodcxOcodcxQcxRcxScxTcxUcxVcxWcmmcxXcxYcxZctzaabctAcyacybcyccrEaaaaaaaaaaqAcgpcBGcyeaaqcCDcDncBRcxmcBHcBucDvcDscygcCFcDqcDpcDrcoqaabaaadLvcyreDDcyscytcyucmIcyvcmIcywcmIcdTcmIcDocyxcitaaiaabaabcrgaabctUctVctVctVctVctWctXctYctZctZctZctZcyyaabcrgaaaaaaaaaaaaaaaaaaaaacxucxucxucxucxuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNpaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacpvcpvcpvcpvcpvcpvcpvcpvcpvaaaaaaaaaaaaaaaaaaaeEaabcoJcwncoLaaacoJcwncoLaaacoJcwncoLaabaaaaaaaaaaaaaaaaaaaaaaabaabaaicyzcBTczZcyBcyAcyAczZcyCcyDdNqcyAcyFcyGcyHcyIcyJcyKcyJcyLcyMcyNcyOcyPcvtaaicyQcuvcBVcuGcuAboVanccyVciIcuHcuxcuwaaiaaicyZczaczbczccmncuKczdczeczfczgczhcmmcxXcziczjczkcuVcsDczlcxfcxfcrEaabaaaaaaccpcDWcDXcEOcEPcDYcEQcDYcDYcEacEbcEXcEWcEWeDEcETcEScERcqZaabaabdNscitcitciucitciucitciucjfczBctPczCctPcqaczCczDaaiaaaaaacrgaabcvicvicvicvicviaaactbaabcvicvicvicvicviaaacrgaaacxuaaacxuaaaaaacxucxucxucxucxucxucxuaaaaaacxuaaacxuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacpvcpvcpvcpvcpvcpvcpvcpvcpvaaaaaaaaaaaaaaaaaaaeEaabcoJcwncoLaaacoJcwncoLaabcoJcwncoLaabaabaabaaaaaaaaaaaaaabaabaaaaaiczEczFczGaaiczHczIczJczJczJczKczJczJczJczLactcvvczNczOczPczQczRczSczTczTczTczUczVcvtcvtcvtczWczXczYaaqcBWcAacAbcAcaaiaaiaaiaaicAdcmncuKcsucAecAfcAgcAhcmmcAicAjcAkcAlcAmcrEcrEcrEcrEcrEaaaaaaaaaaqAcHNcHOcHfcHgcGIcGJcGIcGIcHucHBcGGcGFcEReDFcGHcDpcygcrKaabaabavccAzcAAcABcACcADcAEcAFcAGcADcAEcAHaaiczpczqabnaaiaaaaaacrhaaaaabaaaaabaaaaabaaacAKaaaaabaaaaabaabaabaabcrgaaacxucxucxuaaacxucxucxucxucxucxucxucxucxuaaacxucxucxuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacpvcpvcpvcpvcpvcpvcpvcpvcpvaaaaaaaaaaaaaaaaaaafdaabcoJcALcoLaaacoJcALcoLaaacoJcALcoLaabaeEaabaabaaaaaaaaaaabaaaaaaaaicAMczFcANaaiaaicAOaaiaaiaaicAPaaiaaiaaiaaiaaiaaiaaiaaicAQcARcAScATcyMcyMcyMcAUcAVcAWcAXcyMcyMcAVcAYcAZcBacAacBbcBcaaicBdcBeactcBfcBgcBhcBicBjczhcmmcBkcBlcBmcBncBocxdcBpcsDcBqcBrcBscrEaaaaaaaaaaqAezJezPcINcIOcIPcIQcIRcygcIScITcIjcIicHPeDGcImcIlcIkcypaaaaaaavccBIcBJcBKaaqcBLcBMcBNaaqcBOcBPcBQaaicznczoabnaaaaaaaaacrgaaactactactactactaaabcriaabctactactactactaaabcrgaaacxucxucxuaaacxucxucxucxucxucxucxucxucxuaaacxucxucxuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/maps/cyberiad.dmm.backup b/maps/cyberiad.dmm.backup index b56c9e8a26a..fea5ed64ae5 100644 --- a/maps/cyberiad.dmm.backup +++ b/maps/cyberiad.dmm.backup @@ -1289,7 +1289,7 @@ "ayO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area) "ayP" = (/obj/structure/table,/obj/item/weapon/book/manual/security_space_law{pixel_x = -3; pixel_y = 5},/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; frequency = 1475; listening = 1; name = "Station Intercom (Security)"; pixel_x = 30; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/light_switch{pixel_x = 27; pixel_y = -8},/turf/simulated/floor{icon_state = "dark"},/area/security/warden) "ayQ" = (/obj/structure/table/woodentable,/obj/item/device/taperecorder{pixel_y = 0},/turf/simulated/floor/carpet,/area/magistrateoffice) -"ayR" = (/obj/structure/table/woodentable,/obj/machinery/faxmachine{department = "Magistrate's Office"},/turf/simulated/floor/carpet,/area/magistrateoffice) +"ayR" = (/obj/structure/table/woodentable,/obj/machinery/photocopier/faxmachine{department = "Magistrate's Office"},/turf/simulated/floor/carpet,/area/magistrateoffice) "ayS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/carpet,/area/magistrateoffice) "ayT" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/unary/vent_pump,/obj/machinery/photocopier,/turf/simulated/floor/carpet,/area/magistrateoffice) "ayU" = (/obj/structure/table/reinforced,/obj/item/device/taperecorder{pixel_x = -4; pixel_y = 2},/obj/item/device/camera{pixel_x = 3; pixel_y = -4},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) @@ -1410,7 +1410,7 @@ "aBf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor/carpet,/area/magistrateoffice) "aBg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/carpet,/area/magistrateoffice) "aBh" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Magistrate's Office"; req_access_txt = "38"},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/magistrateoffice) -"aBi" = (/obj/structure/table/reinforced,/obj/machinery/faxmachine{department = "Internal Affairs"},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) +"aBi" = (/obj/structure/table/reinforced,/obj/machinery/photocopier/faxmachine{department = "Internal Affairs"},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) "aBj" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) "aBk" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/obj/effect/landmark/start{name = "Internal Affairs Agent"},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) "aBl" = (/obj/structure/table/reinforced,/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) @@ -2275,7 +2275,7 @@ "aRM" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) "aRN" = (/obj/structure/table,/obj/machinery/light/small,/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main) "aRO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/securehallway) -"aRP" = (/obj/structure/table/woodentable,/obj/machinery/faxmachine{department = "Head of Security's Office"},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) +"aRP" = (/obj/structure/table/woodentable,/obj/machinery/photocopier/faxmachine{department = "Head of Security's Office"},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "aRQ" = (/obj/machinery/camera/xray{c_tag = "Arrivals Shuttle West"; dir = 4; network = list("SS13")},/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "aRR" = (/obj/effect/landmark{name = "Observer-Start"},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "aRS" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) @@ -3298,7 +3298,7 @@ "blv" = (/obj/structure/sign/redcross{desc = "The Star of Life, a symbol of Medical Aid."; icon_state = "lifestar"; name = "Medbay"},/turf/simulated/wall,/area) "blw" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/medical/reception) "blx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/medical{name = "Morgue"; req_access_txt = "0"; req_one_access_txt = "6,9"},/turf/simulated/floor,/area/medical/morgue) -"bly" = (/obj/machinery/firealarm,/turf/simulated/wall,/area) +"bly" = (/obj/machinery/computer/general_air_control{frequency = 1441; name = "Tank Monitor"; sensors = list("n2_sensor" = "Nitrogen", "o2_sensor" = "Oxygen", "co2_sensor" = "Carbon Dioxide", "tox_sensor" = "Toxins", "n2o_sensor" = "Nitrous Oxide", "waste_sensor" = "Gas Mix Tank")},/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor,/area/atmos/control) "blz" = (/obj/machinery/door/airlock{name = "Starboard Emergency Storage"; req_access_txt = "0"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/asmaint) "blA" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; level = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/flora/kirbyplants,/turf/simulated/floor,/area/hallway/primary/starboard/east) "blB" = (/turf/simulated/floor{dir = 1; icon_state = "loadingarea"; tag = "loading"},/area/hallway/primary/starboard/east) @@ -3378,7 +3378,6 @@ "bmX" = (/obj/machinery/camera{c_tag = "Medbay Morgue"; network = list("SS13")},/obj/machinery/power/apc{dir = 1; name = "Morgue APC"; pixel_y = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/morgue) "bmY" = (/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/morgue) "bmZ" = (/obj/structure/morgue{tag = "icon-morgue1 (WEST)"; icon_state = "morgue1"; dir = 8},/turf/simulated/floor,/area/medical/morgue) -"bna" = (/turf/simulated/wall/r_wall,/area/medical/morgue) "bnb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/asmaint) "bnc" = (/obj/structure/flora/kirbyplants,/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor{icon_state = "caution"; dir = 4},/area/engine/controlroom) "bnd" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/turf/simulated/floor/plating,/area) @@ -3434,7 +3433,7 @@ "bob" = (/obj/machinery/atmospherics/pipe/manifold{_color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/lattice,/turf/space,/area) "boc" = (/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; listening = 1; name = "Captain's Intercom"; pixel_x = -27; pixel_y = -3},/obj/structure/closet/secure_closet/captains,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bod" = (/obj/machinery/computer/card,/obj/item/weapon/card/id/captains_spare,/turf/simulated/floor/wood,/area/crew_quarters/captain) -"boe" = (/obj/structure/table/woodentable,/obj/machinery/faxmachine{department = "Captain's Office"},/turf/simulated/floor/wood,/area/crew_quarters/captain) +"boe" = (/obj/structure/table/woodentable,/obj/machinery/photocopier/faxmachine{department = "Captain's Office"},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bof" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bog" = (/obj/item/flag/nt,/turf/simulated/floor/wood,/area/crew_quarters/captain) "boh" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/sw) @@ -4649,7 +4648,7 @@ "bLu" = (/obj/machinery/iv_drip,/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/sleeper) "bLv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door_control{id = "paramedic"; name = "Garage Door Control"; pixel_x = -1; pixel_y = 24; req_access_txt = "66"},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/paramedic) "bLw" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "cmooffice"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area) -"bLx" = (/obj/structure/disposalpipe/segment,/obj/structure/table,/obj/machinery/faxmachine{department = "Chief Medical Officer's Office"},/turf/simulated/floor{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/cmo) +"bLx" = (/obj/structure/disposalpipe/segment,/obj/structure/table,/obj/machinery/photocopier/faxmachine{department = "Chief Medical Officer's Office"},/turf/simulated/floor{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/cmo) "bLy" = (/obj/machinery/light{dir = 1},/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/cmo) "bLz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/cmo) "bLA" = (/obj/structure/closet/secure_closet/CMO,/obj/machinery/light{dir = 1},/obj/item/clothing/mask/gas,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/weapon/storage/briefcase,/turf/simulated/floor{tag = "icon-whiteblue (NORTHEAST)"; icon_state = "whiteblue"; dir = 5},/area/medical/cmo) @@ -4677,7 +4676,7 @@ "bLW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bLX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "bLY" = (/obj/machinery/power/apc{dir = 8; name = "RD Office APC"; pixel_x = -25},/obj/structure/cable,/obj/machinery/light_switch{pixel_y = -23},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/flora/kirbyplants,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) -"bLZ" = (/obj/machinery/hologram/holopad,/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table,/obj/machinery/faxmachine{department = "Research Director's Office"},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) +"bLZ" = (/obj/machinery/hologram/holopad,/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = -24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table,/obj/machinery/photocopier/faxmachine{department = "Research Director's Office"},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) "bMa" = (/obj/structure/table,/obj/item/weapon/cartridge/signal/toxins,/obj/item/weapon/cartridge/signal/toxins{pixel_x = -4; pixel_y = 2},/obj/item/weapon/cartridge/signal/toxins{pixel_x = 4; pixel_y = 6},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/camera{c_tag = "Research Director's Office"; dir = 1; network = list("Research","SS13")},/obj/item/clothing/glasses/welding/superior,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) "bMb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Mr. Chang's"},/turf/simulated/floor,/area/crew_quarters/mrchangs) "bMc" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) @@ -5271,7 +5270,7 @@ "bXs" = (/obj/item/device/radio/intercom{pixel_x = 29; pixel_y = -1},/obj/machinery/computer/crew,/turf/simulated/floor/wood,/area/blueshield) "bXt" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock{name = "Unisex Showers"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "bXu" = (/obj/machinery/atmospherics/unary/vent_scrubber,/obj/structure/closet,/obj/item/device/modkit/tajaran,/obj/item/stack/medical/bruise_pack/tajaran,/obj/item/stack/medical/ointment/tajaran,/obj/machinery/alarm{pixel_y = 25; target_temperature = 283.15},/turf/simulated/floor{icon_state = "wood"},/area/embassy/tajaran) -"bXv" = (/obj/machinery/camera{c_tag = "NT Representative's Office"; dir = 1; network = list("SS13")},/obj/structure/table/woodentable,/obj/machinery/faxmachine{department = "NT Representative's Office"},/turf/simulated/floor/wood,/area/ntrep) +"bXv" = (/obj/machinery/camera{c_tag = "NT Representative's Office"; dir = 1; network = list("SS13")},/obj/structure/table/woodentable,/obj/machinery/photocopier/faxmachine{department = "NT Representative's Office"},/turf/simulated/floor/wood,/area/ntrep) "bXw" = (/obj/machinery/power/apc{name = "Mime Office APC"; pixel_y = -24},/obj/structure/cable,/turf/simulated/floor/wood,/area/mimeoffice) "bXx" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/obj/machinery/computer/secure_data,/turf/simulated/floor/wood,/area/ntrep) "bXy" = (/obj/structure/disposalpipe/segment,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/camera{c_tag = "Aft Primary Hallway 1"; dir = 4; network = list("SS13")},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft) @@ -6579,7 +6578,7 @@ "cwA" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/vending/tool,/turf/simulated/floor,/area/engine/equipmentstorage) "cwB" = (/obj/structure/closet/secure_closet/engineering_chief{req_access_txt = "0"},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "cwC" = (/obj/machinery/atmospherics/pipe/manifold{_color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) -"cwD" = (/obj/structure/table/reinforced,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/faxmachine{department = "Chief Engineer's Office"},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) +"cwD" = (/obj/structure/table/reinforced,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/photocopier/faxmachine{department = "Chief Engineer's Office"},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "cwE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/folder/yellow,/obj/item/weapon/stamp/ce,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "cwF" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/pen,/obj/item/weapon/lighter/zippo,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "cwG" = (/obj/machinery/autolathe,/turf/simulated/floor,/area/engine/equipmentstorage) @@ -6903,7 +6902,7 @@ "cCM" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/engine/reactor_core) "cCN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/closet/radiation,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/item/weapon/book/manual/supermatter_engine,/turf/simulated/floor,/area/engine/reactor_core) "cCO" = (/obj/machinery/camera{c_tag = "Engineering Supermatter Decontamination"; dir = 1; network = list("Supermatter","SS13")},/obj/machinery/light_switch{pixel_y = -25},/obj/structure/closet/radiation,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/item/weapon/book/manual/supermatter_engine,/turf/simulated/floor,/area/engine/reactor_core) -"cCP" = (/obj/structure/table,/obj/machinery/faxmachine{department = "Head of Personnel's Office"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor,/area/crew_quarters/heads) +"cCP" = (/obj/structure/table,/obj/machinery/photocopier/faxmachine{department = "Head of Personnel's Office"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor,/area/crew_quarters/heads) "cCQ" = (/obj/machinery/light,/obj/machinery/camera{c_tag = "Engineering Supermatter Monitoring"; dir = 1; network = list("SS13")},/obj/machinery/computer/general_air_control{frequency = 1443; name = "Supermatter Gas Mix Monitoring"; sensors = list("supermatter_gas" = "Supermatter Gas Mix")},/turf/simulated/floor,/area/engine/reactor_core) "cCR" = (/obj/structure/table,/obj/item/weapon/book/manual/supermatter_engine,/turf/simulated/floor,/area/engine/reactor_core) "cCS" = (/obj/machinery/shield_gen,/turf/simulated/floor/plating,/area/storage/secure) @@ -12381,7 +12380,6 @@ "eEe" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/computer/atmos_alert,/turf/simulated/floor,/area/atmos/control) "eEf" = (/obj/machinery/atmospherics/pipe/simple{_color = "red"; icon_state = "intact-r-f"; level = 1; name = "pipe"},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "atmos"; name = "Atmos Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/atmos/control) "eEg" = (/obj/machinery/computer/atmoscontrol,/turf/simulated/floor,/area/atmos/control) -"eEh" = (/obj/machinery/computer/general_air_control{frequency = 1441; name = "Tank Monitor"; sensors = list("n2_sensor" = "Nitrogen", "o2_sensor" = "Oxygen", "co2_sensor" = "Carbon Dioxide", "tox_sensor" = "Toxins", "n2o_sensor" = "Nitrous Oxide", "waste_sensor" = "Gas Mix Tank")},/turf/simulated/floor,/area/atmos/control) "eEi" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/computer/security/engineering,/obj/machinery/camera{c_tag = "Atmospherics Control Room"; network = list("SS13")},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 1; name = "Atmospherics Control APC"; pixel_y = 26},/turf/simulated/floor,/area/atmos/control) "eEj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/machinery/computer/general_air_control{frequency = 1443; level = 3; name = "Distribution and Waste Monitor"; sensors = list("mair_in_meter" = "Mixed Air In", "air_sensor" = "Mixed Air Supply Tank", "mair_out_meter" = "Mixed Air Out", "dloop_atm_meter" = "Distribution Loop", "wloop_atm_meter" = "Waste Loop")},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/atmos/control) "eEk" = (/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor,/area/atmos/control) @@ -12558,12 +12556,12 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayAaaiaaiaaianEanGayAanEanGaaianEanGaaiaaiaaiaaiaDHaBNaBNaBNaBOaBObbPaaibhpbhqbhrbhrbhraUTaQEbhsbbXaaibhtbhubhvbhwbhxbhyaVcbhzbhAbaFaVcbhBbhCbhDbhEbhFbhGaaibhHbhIbgBbgXbhKbhLbhMbhNbhNbhMbhObhPaaiaaibhQbhRbgKbhSbhTbhUbhVbhWbhXckmbhZbiabibbicbidbiabieaaibifbigbihbiibijbikbilbimbimbimbimbimbimbinbimbimbiobimbipbimbimbimbimbimbimbimbimbiqbirbisbisbisbisbisbisbitbikbiubivbivbiwbixbiybixbizbixbiAbiBbiCbixbiDbiEbiFbiGbiHbiHbiHbiHbiHbiHbiHbiIbiJbiKbiKbiKbiKbiLbiKbiMbiNbiObiPbiQbbHbiRaLqaLqaLqaLqaLqaLqaLqaLqaLqaLqaLqaLqaLqaaaaaaaaaaaaaaaaaaaaabhobhobhobhobhobhobhobhobhoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiSbiSbiSbiSbiSbiSbiSbiSbiSbiSaaaaaaaBIbiTaCSbiUbiVaBObiWbiXaaiaRXbiYbiYbiYbiZaaqbfqbbWaQGaaibjabgsbgrbgsbgsaaibgubjbbjcaaibgvaaibfAbjebjfbfAbjgaaibtWbhIbgBaXcbjibjjbjkbjlbjmbjnbhObjoaaiaaibjpbjqaaqaaqaaqbjrbjsaaiaqAbjtbiabiabibbjubidbiabjvaaibjwbihbihbiibijbikbimbimbimbimbimbimbimbjxbimbimbimbimbimbimbjybjzbjzbjzbjzbjzbjzbjzbjzbjzbjzbjzbjzbjzbjzbjAbjBbjCbiHbiHbjDaQdaQdaQdaQdaQdbfcaQdaQdaQdaQdaQdaQdaQdaQdaQdaQdaQdaQdbjEaQdbjFbjGaUKaUKaUKaUKaUKaUKaUKbjHbdbbakanFanFbalaLqaLqaLqaLqaLqaLqaLqaLqaLqaLqaLqaLqaLqaaaaaaaaaaaaaaaaaaaaabhobhobhobhobhobhobhobhobhoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiSbiSbiSbiSbiSbiSbiSbiSbiSbiSbiSaDEaDFaDGaaiaaiaaibjIaaiaaiaaibgmbiYbiYbiYcEzaaqaSbbbWaQGaaicEwbjJbjKbgsbgsaaibjLbjbbjMaaibjLaaicEvbjebjNbjObfAaaibjPbhIbgBcjWbjRbjjbjkbjSbjTbjnbhObjUaaieAvbjWbjXaaqeAuaaqbjZbkaeAtaqAbkcbkdbkebkfbkfbkgbiabkhaaibkibkjbihbiibijbikbimbkkbimbimbimbimbklbkmbkmbkmbkmbknbimbimbimbimbkobimbkkbkpbimbkqbkrbksbimbktbkubkubkvbkwbkxbkyaQdaQdaQdaQdaQdaQdaQdbkzbkAbkBaQdaQdaQdaQdaQdaQdaQdaQdaQdaQdbkCbkDbkDbkEbkFbkGbkHbkIbkIbkIbkJbkKbkLaDBaaaaaaaaabkMaLqaLqaLqaLqaLqaLqaaaaLqaLqaLqaLqaLqaLqaaaaaaaaaaaaaaaaaaaaabhobhobhobhobhobhobhobhobhoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiSbiSbiSbiSbiSbiSbiSbiSbiSbiSbiSbkNbkObkPbkQbkRbkSbkTbkUbkVaaibflbkWbkWbkXbkYaaqaSbbbWaQGaaiaaiaaiaaiaaiaaiaaiaaibjbbkZaaiaaiaaiaaiaqAaaiaaiaaiaaiblabhIblbaaiblcbldbhMbhMbhMbhMbhObleaaiaaiblfblgblhblibljblgblkaaiaqAaaiclfblmblnbloblpblqblraaiblsbltbltaaiaaiaaiaaiaaiaaiaaiaaqaaqblublvblwblwblvbluaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqblxblyaaqaaqaaqaaqaaiblzanpblAaQdaQdblBblBaaiaaiaaiaaiaaiblCbkDbkDbkCbkDaQdbkDbkDbkDbkDblDaaiblEaaiaaiblFaaiaaiblGblHblIaaiaaiaaiaaiaaiaaaaaaaaaaLqaLqaLqaLqaLqaLqaaaaLqaLqaLqaLqaLqaLqaaaaaaaaaaaaaaaaaaaaabhobhobhobhobhobhobhobhobhoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiSbiSbiSbiSbiSbiSbiSbiSbiSbiSbiSaFoaFpaDGblJblKblKblLblMblKaaiblNblNblNblOcheaaqaSbbbWaQGaaqblQblRblSblTblUaaiblVbjbblWaaieAsaaiblYblZbmabmbbmcaaqbmdbhIbmeaaibmfbmgbmhbmibmjbmkcElaaiaaiaaibmmbmnbmobmpbmqbmrbmsaaiaqAaaibmtbmubmvbmwblpbiabmxaaibmybmzbmAaaibmBbmCbmDbmEbmFbmGbmHbmIbmJbmKbmLbmLbmKbmMbmNbmOaaqbmPbmQbmRbmSaaqbmTbmUbmVbmWbmXbmYbmYbmZbnabnbabnaaichfaaichgchgaaibnebnfbngaaibnhbnibnhaaiblCbkDblDaaiaaibnjbnkaaibnlbnmaaibnnbnoaaibnpbnqbnrbnsbntbnubnvaaiaaaaaaaaaaLqaLqaLqaLqaLqaLqaaaaLqaLqaLqaLqaLqaLqaaaaaaaaaaaaaaaaaaaaabhobhobhobhobhobhobhobhobhoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiSbiSbiSbiSbiSbiSbiSbiSbiSbiSaaabnwaGubnxbnybkRbkRbnzbnAbnBaaiblPblPblPblPbnCaaqaSbbbWbnDaaqbnEbnFbnGbnFbnHaaibnIbnJbnKeArbnLaaicDRbnNbnObnObnPbnQbnRbhIbnSaaibnTaqAaaiaaiaaiaaicgaaaibnVactbnWbnXbgKbnYbgKbnZboaacdbobaaibocbiabodboeblpbofbogaaibohboibojaaibokbolbombonboobopboqbmLbmLbmLbmLbmLbmLbmLborbosbotboubovbowboxaaqboybozboAboBboCboDbozbmZbnabnbabnboEboFcgqboHboIaaqboJboKboJboLboMboNboOaaiaaqboPalkboQboRboSboSboSboTboUboVboWboXboVboYboZbpabpbbpcbpdbpeaaiaaaaaaaaaaLqaLqaLqaLqaLqaLqaaaaLqaLqaLqaLqaLqaLqaaaaaaaaaaaaaaaaaaaaabhobhobhobhobhobhobhobhobhoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpfayAaaiaaiaaianEanGayAanEanGaaianEanGaaiaaiaaiaaicHpbkRblKblKblLblMblKaaibpgbphblNblNblOaaqbfqbbWbpiaaqbpjbpkbplbpmbpnaaicHhbpobppbnLbnLaaibpqbprbpsbptbpubpvbpwbpxbpyabHbpzbpAbpBbpCabHbpDbpEacdbpFacdacdacdacddHSacdacdacdacdbpHacdbpIbpJbpKbpLbpMbpNbpOacdbpPbmzbmzaaibpQbpRbpSbpTbpUaaiboqbmLbmLbmLbmLbmLbmLbmLbpVbpWbpXbpYbpZbqabqbaaqbqcbqdbqeboBbmZboDbozbmZbnabqfbqgbqhbqibqibqjbqkbqlbqmbqmbqmbqnbqobqpbqqbqrbqsbqtbqubqvbqwbqxbqybqybqybqzaaibqAbqBaaibqCbqDbpabpbboZbpdbqEaaiaaaaaaaaaaaaaLqaLqaLqaLqaLqaaaaLqaLqaLqaLqaLqaaaaaaaaaaaaaaaaaaaaaaaabhobhobhobhobhobhobhobhobhoaaaaaaaaaaaaaaaaaaaaaaaaaNpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqFbqFbqFbqFbqFbqFbqFbqFbqFbqFbqFbqFbqFaaaaBIblJbkRbkRbkRbnzbnAbkRaaiblPblPbqHbiYbiYcjpaSbbbWaQGaaqbqJbqKbqLbqMbqNaaibqObqPbqQbqRbqSaaibqTbqUbqVbqWbqXbqYbqZbrabrbbrcbrdbrdbrebrfayOcGobrhactbriaFkbrjbrkbrlbrmbrnbrkbroaFkbrpaaiabnbrqaaiaaiaaiaaibrraaibrsbmzbrtactbrubrvbrwbrxbryaaibrzbrAbrBbrCbrDbrEbrFbrGborbrHaaqbrIbpZbrJbrKaaqbrLbrMboAboBbmZboDbozbmZbnabnbabnbrNbrObrPbrQbrRaFkbrSbrTbrUbrUbrVboJbrWaaibrXbrYbrZaaibsabsbbscbsdbsbbqzaaibqAbseaaibsfbsgbpabshbsibsjbskaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhobhobhobhobhobhobhobhobhoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqFbqFbqFbqFbqFbqFbqFbqFbqFbqFbqFbqFbqFaaaazGbslbsmblKblKblLblMddjaaiaaqchjcjccjbaaqaaqbfqbbWaQGaaqbsqbsrbssbstbsuaaibnLbpobsvbnLbnLaaibswbsxbsybszcFmaaqbsBbsCbsDaaqbsEaaiaaiabnaaiaqAchiaaibsGbsHbsIbrkbsJbrmbsJbrkbsKbsHbrpaaibsLbkfbsMbsNbsOabHbsPabHbsQbmzbsRaaibmBbmCbsSbsTbsUbsVbsWbsXbsYbsZbtabtbbtcbtdbtebtfblvbtgbthbticFnaaqbtkbtlbtmbtnbtobtpbtobmZbnabtqbtrbtsbttbttbtubtvbtwbtxbtybtzbtzbtAbtBbtCaaibtDbrYbtEaaibtFbsbbtGbtHbsbbtIaaibtJbtKaaibtLbsgbtMaaqaaqaaqaaqaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhobhobhobhobhobhobhobhobhoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiSbiSbiSbiSbiSbiSbiSbiSbiSbiSbiSbkNbkObkPbkQbkRbkSbkTbkUbkVaaibflbkWbkWbkXbkYaaqaSbbbWaQGaaiaaiaaiaaiaaiaaiaaiaaibjbbkZaaiaaiaaiaaiaqAaaiaaiaaiaaiblabhIblbaaiblcbldbhMbhMbhMbhMbhObleaaiaaiblfblgblhblibljblgblkaaiaqAaaiclfblmblnbloblpblqblraaiblsbltbltaaiaaiaaiaaiaaiaaiaaiaaqaaqblublvblwblwblvbluaaqaaqaaqaaqaaqaaqaaqaaqaaqaaqblxaaqaaqaaqaaqaaqaaiblzanpblAaQdaQdblBblBaaiaaiaaiaaiaaiblCbkDbkDbkCbkDaQdbkDbkDbkDbkDblDaaiblEaaiaaiblFaaiaaiblGblHblIaaiaaiaaiaaiaaiaaaaaaaaaaLqaLqaLqaLqaLqaLqaaaaLqaLqaLqaLqaLqaLqaaaaaaaaaaaaaaaaaaaaabhobhobhobhobhobhobhobhobhoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiSbiSbiSbiSbiSbiSbiSbiSbiSbiSbiSaFoaFpaDGblJblKblKblLblMblKaaiblNblNblNblOcheaaqaSbbbWaQGaaqblQblRblSblTblUaaiblVbjbblWaaieAsaaiblYblZbmabmbbmcaaqbmdbhIbmeaaibmfbmgbmhbmibmjbmkcElaaiaaiaaibmmbmnbmobmpbmqbmrbmsaaiaqAaaibmtbmubmvbmwblpbiabmxaaibmybmzbmAaaibmBbmCbmDbmEbmFbmGbmHbmIbmJbmKbmLbmLbmKbmMbmNbmOaaqbmPbmQbmRbmSaaqbmTbmUbmVbmWbmXbmYbmYbmZaaibnbabnaaichfaaichgchgaaibnebnfbngaaibnhbnibnhaaiblCbkDblDaaiaaibnjbnkaaibnlbnmaaibnnbnoaaibnpbnqbnrbnsbntbnubnvaaiaaaaaaaaaaLqaLqaLqaLqaLqaLqaaaaLqaLqaLqaLqaLqaLqaaaaaaaaaaaaaaaaaaaaabhobhobhobhobhobhobhobhobhoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiSbiSbiSbiSbiSbiSbiSbiSbiSbiSaaabnwaGubnxbnybkRbkRbnzbnAbnBaaiblPblPblPblPbnCaaqaSbbbWbnDaaqbnEbnFbnGbnFbnHaaibnIbnJbnKeArbnLaaicDRbnNbnObnObnPbnQbnRbhIbnSaaibnTaqAaaiaaiaaiaaicgaaaibnVactbnWbnXbgKbnYbgKbnZboaacdbobaaibocbiabodboeblpbofbogaaibohboibojaaibokbolbombonboobopboqbmLbmLbmLbmLbmLbmLbmLborbosbotboubovbowboxaaqboybozboAboBboCboDbozbmZaaibnbabnboEboFcgqboHboIaaqboJboKboJboLboMboNboOaaiaaqboPalkboQboRboSboSboSboTboUboVboWboXboVboYboZbpabpbbpcbpdbpeaaiaaaaaaaaaaLqaLqaLqaLqaLqaLqaaaaLqaLqaLqaLqaLqaLqaaaaaaaaaaaaaaaaaaaaabhobhobhobhobhobhobhobhobhoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpfayAaaiaaiaaianEanGayAanEanGaaianEanGaaiaaiaaiaaicHpbkRblKblKblLblMblKaaibpgbphblNblNblOaaqbfqbbWbpiaaqbpjbpkbplbpmbpnaaicHhbpobppbnLbnLaaibpqbprbpsbptbpubpvbpwbpxbpyabHbpzbpAbpBbpCabHbpDbpEacdbpFacdacdacdacddHSacdacdacdacdbpHacdbpIbpJbpKbpLbpMbpNbpOacdbpPbmzbmzaaibpQbpRbpSbpTbpUaaiboqbmLbmLbmLbmLbmLbmLbmLbpVbpWbpXbpYbpZbqabqbaaqbqcbqdbqeboBbmZboDbozbmZaaibqfbqgbqhbqibqibqjbqkbqlbqmbqmbqmbqnbqobqpbqqbqrbqsbqtbqubqvbqwbqxbqybqybqybqzaaibqAbqBaaibqCbqDbpabpbboZbpdbqEaaiaaaaaaaaaaaaaLqaLqaLqaLqaLqaaaaLqaLqaLqaLqaLqaaaaaaaaaaaaaaaaaaaaaaaabhobhobhobhobhobhobhobhobhoaaaaaaaaaaaaaaaaaaaaaaaaaNpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqFbqFbqFbqFbqFbqFbqFbqFbqFbqFbqFbqFbqFaaaaBIblJbkRbkRbkRbnzbnAbkRaaiblPblPbqHbiYbiYcjpaSbbbWaQGaaqbqJbqKbqLbqMbqNaaibqObqPbqQbqRbqSaaibqTbqUbqVbqWbqXbqYbqZbrabrbbrcbrdbrdbrebrfayOcGobrhactbriaFkbrjbrkbrlbrmbrnbrkbroaFkbrpaaiabnbrqaaiaaiaaiaaibrraaibrsbmzbrtactbrubrvbrwbrxbryaaibrzbrAbrBbrCbrDbrEbrFbrGborbrHaaqbrIbpZbrJbrKaaqbrLbrMboAboBbmZboDbozbmZaaibnbabnbrNbrObrPbrQbrRaFkbrSbrTbrUbrUbrVboJbrWaaibrXbrYbrZaaibsabsbbscbsdbsbbqzaaibqAbseaaibsfbsgbpabshbsibsjbskaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhobhobhobhobhobhobhobhobhoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqFbqFbqFbqFbqFbqFbqFbqFbqFbqFbqFbqFbqFaaaazGbslbsmblKblKblLblMddjaaiaaqchjcjccjbaaqaaqbfqbbWaQGaaqbsqbsrbssbstbsuaaibnLbpobsvbnLbnLaaibswbsxbsybszcFmaaqbsBbsCbsDaaqbsEaaiaaiabnaaiaqAchiaaibsGbsHbsIbrkbsJbrmbsJbrkbsKbsHbrpaaibsLbkfbsMbsNbsOabHbsPabHbsQbmzbsRaaibmBbmCbsSbsTbsUbsVbsWbsXbsYbsZbtabtbbtcbtdbtebtfblvbtgbthbticFnaaqbtkbtlbtmbtnbtobtpbtobmZaaibtqbtrbtsbttbttbtubtvbtwbtxbtybtzbtzbtAbtBbtCaaibtDbrYbtEaaibtFbsbbtGbtHbsbbtIaaibtJbtKaaibtLbsgbtMaaqaaqaaqaaqaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhobhobhobhobhobhobhobhobhoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqFbqFbqFbqFbqFbqFbqFbqFbqFbqFbqFbqFbqFaDEaDFbtNbtObkRbkRbnzbnAbnBaaibtPbiYbtQbiYbtRaaqaSbbbWaQGaaqaFobtSbtTbtUaQWaaieAxbtVeAwbtXbtYaaibtZbuabubbucbtZaaqbudbuebufaaqaaqaaibugbuhbuibujbukaaibulbumbunbuobupbuqbupburbusbutbuuaaibuvbkfbuwaaqbuxaaqbuyaaqbuzbmzbuAaaiaFobuBbtSbuCbuDaaqbuEbuFbuGbuHbuIbuIbuJbuKbuLbuMaaqbuNbuOanpaaqaaqaaqaaJbuPanpaaqaaiaaiaaibuQbuRabnbrNbrObrPbuSbttbuTbuUbuVbuVbuVbuWbuXbuYbuZaaiboPbvaaaibvbbvcbqybvdbvebvfaaibqAbvgaaicEAbvibvjbvkbvlbvmbvnaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhobhobhobhobhobhobhobhobhoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqFbqFbqFbqFbqFbqFbqFbqFbqFbqFbqFbqFbqFbvobvpbvqbvrblKblKblLblMblKaaibvsbiYbvtbiYbvuaaqaSbbbWaQGbvvbvwbvxbvybvzbvAaaiaaiaaiaaibvBaaiaaibvCbvDbvEbvFbvGaaqbvHbvIbvJbvKbvLbvMbvNbvObvPbvQbvRaaibsGbvSbvTbrkbupbvUbupbrkbvVaaibrpaaibvWbvXbvYaaqbvZaaqbwaaaqbwbbmzbwcaaibwdbwebwfbwgcjRabHbwibwjbwkabHbXpbXDabHbwkbwnbwoazaazdbwpbwqbwrbwsbwtbwubwvbwwbwxaaibwybwzbwAbwBabnbwCbwDbwEbwFbwGaaqbwHbuVbuVbwIbwJbuXbwKaaibwLbwLbwMaaicxnbwObwPbwQbwPbwRaaibqAbwSaaicxCbwUbwVbwWbwXbwYbwZaaiaaiaaiaaiaaiaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhobhobhobhobhobhobhobhobhoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqFbqFbqFbqFbqFbqFbqFbqFbqFbqFbqFbqFbqFaFoaFpbtNblJbkRbkRbnzbnAbkRaaibxabhqbhrbhrbWCabHaQEbhsbbXaaqbxcbnNbxdbxebxfbxgbxhbxjbxibxibxkbxlbxmbxnbxebxoeASaaqbudbmzbxqbxrbxsbWDbxubxvbxwbxxbxyaaibsGaaiaaibxzbxAbxBbrkbxCbxDacdbxEaaiabnaaiaaiaaiaaiaaibxFaaibxGbmzbwcaaibxHbxIbxIbxJbxKaaqbxLbxMbxNbxObxPbxQbxRbxNbxSbxTbxUbxVbxWbxXbxYbxZbyabybbycbydbyebyfbygbyhbyibyjbWBbylbylbymbynbyoaaqbypboJboJbyqbyrbuXbysaaqbytbyubyvaaqaFobuBaQWbywaZFaaiaaibyxaaiaaibyybyzaaibyAbyBbyCbyDbpdbpdbyEbyFbyGaaiaaaaaaaabbyHbyIbyJbyIbyJbyIbyKaaaaaaaaaaaaaaaaaaaaaaaabhobhobhobhobhobhobhobhobhoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -12593,7 +12591,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachIaaaaaaaaachIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachJchJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacfBchKchLcgBchNchOchPchQchRchSchTaaqbXmchUaaiaaaaaaaaaaaaaaichVchWchXchXchYchZaaqciabXzbSDcibciccyYczMcyYcyYcyYcyWcyXcyUcyUcyRcyTaaibzXbzXaaqchdcikcilcimcincioaaqcinciocimcipciqchkaaicgieATcgjaaiciscdCceZaaiaaiaaiaaiaaiaaiaaiaaibzXbzXbzXaaiaabaaaaaaaaaaabaabaabaaaaaaaaaaaaaaaaaacrzcitciucivaaiaaiciwcixciyaaiaaiaaidTedSYdSSdSYdTbaaiaaiaaaaaaaaaciDaaaaaaaaaaabaaaaaaaaaaaqaaqaaqaabaaaaaaaabaaaaaaaabaabaabciEciFciGbQGaaqaaiaaibPqbPrbPqaaiaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachIchIchIchIchIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciHboVboVboVboVboVboVboVboVboVboVboVboVciIaaiaaqaaqaaqaaqaaqaaqciJciKaaiaaiaaiaaiaaiaaiaaqaaqaaqaaqaaqaaqaaqciLbXzbSDciMciNeByeEbeEcdZxeaeciTeBceBkeBleBmeBxaaibzXbzXaaqciZcjacilcimcimeBGaaqeBFcimcimcipcilcjdaaiaaiaaiaaiaaiciscdCcjeaaibzXbzXbzXbzXbzXbzXbzXbzXbzXbzXaaiaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaadITcjfcjgcjhaaiaaicjicjjcjkaaiaaaaaacjlcjlcjmcjlcjlaaaaaaaaaaaaaaaciDaaaaaaaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabcjnbNtbNtbNuaaqaaqaaiaaiaaiaaibNvaabaabaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachIaaachIaaaaaachIchIchIchIchIchIchIaaaaaachIaaachIaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjodfKcjqcjrcjrecUcjrcjtcjucjvdgkcjxecscjzcjAcjAcjBcjCcjDcjDcjDcjEcjFcjGcjHcjIcjHcjHcjHcjGcjHcjHcjHcjJcjKcjLbXzbSDcjMcjNdYEaqAaaicfXactatTcjPcjQactasVcaFaaibzXbzXaaqdYbcjScjTcjUcimcjVaaqdYkcimcjXcjYcjTcjZaaibzXbzXbzXeEtciscdCciseEtbzXbzXbzXbzXbzXbzXbzXbzXbzXbzXaaiaaaaaaaaaaaaaaaaabaabaabaaaaaaaaaaaaaaacaUaaickbaqAcaUayGckcckdbdbayHaaackeckfckgckhckgckfckeaaachBchCchCckiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachIchIchIaaachIchIchIchIchIchIchIchIchIaaachIchIchIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjockjckkcklckkeeBckkckjckkckncklckkeDMckpbSEckpckpckqbSEbSEbSEbSEckrckpckpckpckpckpckpckpckpckpckpckscktckuckvckwckxckyckzckAaaickBckCckDckEckFeEheEieEjacdcfeckJabHckKckLckMckNcimckOaaqckOcimckNckPcilckQaaickRacdacdckSckTcdCckUcaUayGanFanFbalaaiaaiaaianEanFanGaaiaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaickVckWckXaaiaabazGckYazGaabaaackeckZclaclbclackZckeaaaciDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachIchIchIaaachIchIchIchIchIchIchIchIchIaaachIchIchIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjockjckkcklckkeeBckkckjckkckncklckkeDMckpbSEckpckpckqbSEbSEbSEbSEckrckpckpckpckpckpckpckpckpckpckpckscktckuckvckwckxckyckzckAaaickBckCckDckEckFblyeEieEjacdcfeckJabHckKckLckMckNcimckOaaqckOcimckNckPcilckQaaickRacdacdckSckTcdCckUcaUayGanFanFbalaaiaaiaaianEanFanGaaiaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaickVckWckXaaiaabazGckYazGaabaaackeckZclaclbclackZckeaaaciDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachIchIchIaaachIchIchIchIchIchIchIchIchIaaachIchIchIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaedickkedsclccldeezcldedFclgdZMeACcljclkcktcllclmclmclnabHcloabHclpclqclpclpclpclpclpclpclpclpclpclpclrckpclscltcluclvclwclxclyclzclAclBceEclCeEfeEgeEdeEeactbWeclHaPnclIcimcilcimcimclJayOclKcimcimcipcilclLaaiclMaaiaaaaqAaaieEuaaiaaiaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaaiaaiaaiaaiaaiaaiclOclPclQaaiaabaDBclRaDBaabaaackeclSclTclUclVclSckeaaaciDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachIchIchIaaachIchIchIchIchIchIchIchIchIaaachIchIchIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiaaiclWaaqaaqclXaaqclYaaqaaqclZanGaaqaaqanEanFanGaaqaaqaaqaaqcmacmbcmccmdcmecmfcmgcaCcmhcaCcaCcmicaCcmjeEoeEpeEqeEreBnbzXclManpcmpcmqcmrcmscmtcmuaaqcmvcmtcmwcipcmxcmyaaiclMaaiaaaeEycmAcmBcmCaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicmDcmEcmFcmGcmHcmIcmJaaqcmKcmLcmMactcmNaaacmOaaaaaaaaackecmPcmQcmQcmQcmRckeaaaciDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachIchIchIchIchIchIchIchIchIchIchIchIchIchIchIchIchIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeDaeDaeDaeEaeEaeDaeEaeEaeEafdaeEaeEaeEaeDaeDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBIcmScmTcmUcmVcmWcmXcmYcmZcnacnbcnccndcnbcnecnfcngcngcnhaaqcnicnjcnkcnlbSDcnmcnncnobZbbZacbRbZacgUcnpeEmeEneEkeElaaiaaiclManpaaiaaicnuaaiaaiabnbxDacdacdacdcnvacdbeIacdcnwaaiaaaeExcnycmBcnzaaieEwckackaeEvcaUaaibzlactactcnAactactcnAcnBaaaaaaaaicnCcnDcnCcnEcnFcitclPaaqaaJcnGaaJaaiaaiaaacnHaaaaabaaackeckeckecnIckeckeckeaaaciDaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa