From c62e38b4cd5a324571aa45986bf161c9f3dba574 Mon Sep 17 00:00:00 2001 From: Hubblenaut Date: Sun, 20 Jul 2014 18:38:08 +0200 Subject: [PATCH 01/22] Vending machines don't vend on suspended accounts --- code/game/machinery/vending.dm | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 009ab4c809c..a0404c6be9e 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -189,16 +189,19 @@ visible_message("[usr] swipes a card through [src].") var/datum/money_account/CH = get_account(C.associated_account_number) if (CH) // Only proceed if card contains proper account number. - if(CH.security_level != 0) //If card requires pin authentication (ie seclevel 1 or 2) - if(vendor_account) - var/attempt_pin = input("Enter pin code", "Vendor transaction") as num - var/datum/money_account/D = attempt_account_access(C.associated_account_number, attempt_pin, 2) - transfer_and_vend(D) + if(!CH.suspended) + if(CH.security_level != 0) //If card requires pin authentication (ie seclevel 1 or 2) + if(vendor_account) + var/attempt_pin = input("Enter pin code", "Vendor transaction") as num + var/datum/money_account/D = attempt_account_access(C.associated_account_number, attempt_pin, 2) + transfer_and_vend(D) + else + usr << "\icon[src]Unable to access account. Check security settings and try again." else - usr << "\icon[src]Unable to access account. Check security settings and try again." + //Just Vend it. + transfer_and_vend(CH) else - //Just Vend it. - transfer_and_vend(CH) + usr << "\icon[src]Connected account has been suspended." else usr << "\icon[src]Error: Unable to access your account. Please contact technical support if problem persists." From 48f967bc024b98a3fede70bd330409992e1cf3f9 Mon Sep 17 00:00:00 2001 From: Walter0o Date: Mon, 21 Jul 2014 07:39:46 +0200 Subject: [PATCH 02/22] removes second sleeping notification --- code/modules/mob/living/carbon/human/examine.dm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 026ef891a98..e10c35efa7a 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -237,9 +237,7 @@ msg += "" - if(stat == UNCONSCIOUS) - msg += "[t_He] [t_is]n't responding to anything around [t_him] and seems to be asleep.\n" - else if(getBrainLoss() >= 60) + if(getBrainLoss() >= 60) msg += "[t_He] [t_has] a stupid expression on [t_his] face.\n" if(!key && brain_op_stage != 4 && stat != DEAD) From d02e370830767c06c5f7b559f30924f970636953 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Mon, 21 Jul 2014 19:02:38 +0930 Subject: [PATCH 03/22] Integrated crossbows/pneumatic cannons into launcher gun type, added back sprites. --- baystation12.dme | 3 +- code/modules/admin/verbs/vox_raiders.dm | 2 +- code/modules/projectiles/gun.dm | 2 +- code/modules/projectiles/guns/alien.dm | 105 +++------ .../guns/projectile/{bow.dm => crossbow.dm} | 212 ++++++++---------- .../projectiles/guns/projectile/launcher.dm | 91 ++++++++ .../projectiles/guns/projectile/pneumatic.dm | 130 +++++------ icons/mob/back.dmi | Bin 36425 -> 38973 bytes maps/tgstation2.dmm | 4 +- 9 files changed, 279 insertions(+), 270 deletions(-) rename code/modules/projectiles/guns/projectile/{bow.dm => crossbow.dm} (61%) create mode 100644 code/modules/projectiles/guns/projectile/launcher.dm diff --git a/baystation12.dme b/baystation12.dme index 365ed1718bb..cc76085482a 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1158,7 +1158,8 @@ #include "code\modules\projectiles\guns\energy\stun.dm" #include "code\modules\projectiles\guns\energy\temperature.dm" #include "code\modules\projectiles\guns\projectile\automatic.dm" -#include "code\modules\projectiles\guns\projectile\bow.dm" +#include "code\modules\projectiles\guns\projectile\crossbow.dm" +#include "code\modules\projectiles\guns\projectile\launcher.dm" #include "code\modules\projectiles\guns\projectile\pistol.dm" #include "code\modules\projectiles\guns\projectile\pneumatic.dm" #include "code\modules\projectiles\guns\projectile\revolver.dm" diff --git a/code/modules/admin/verbs/vox_raiders.dm b/code/modules/admin/verbs/vox_raiders.dm index d100720102c..9f736e3ae40 100644 --- a/code/modules/admin/verbs/vox_raiders.dm +++ b/code/modules/admin/verbs/vox_raiders.dm @@ -18,7 +18,7 @@ var/global/vox_tick = 1 equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(src), slot_glasses) // REPLACE WITH CODED VOX ALTERNATIVE. equip_to_slot_or_del(new /obj/item/device/chameleon(src), slot_l_store) - var/obj/item/weapon/spikethrower/W = new(src) + var/obj/item/weapon/gun/launcher/spikethrower/W = new(src) equip_to_slot_or_del(W, slot_r_hand) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index b1b3df0672e..3d4ea67c3ba 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -218,7 +218,7 @@ //Point blank shooting if on harm intent or target we were targeting. if(user.a_intent == "hurt") user.visible_message("\red \The [user] fires \the [src] point blank at [M]!") - in_chamber.damage *= 1.3 + if(istype(in_chamber)) in_chamber.damage *= 1.3 Fire(M,user) return else if(target && M in target) diff --git a/code/modules/projectiles/guns/alien.dm b/code/modules/projectiles/guns/alien.dm index f1928730908..855312da7e4 100644 --- a/code/modules/projectiles/guns/alien.dm +++ b/code/modules/projectiles/guns/alien.dm @@ -1,19 +1,5 @@ //Vox pinning weapon. - -//Ammo. -/obj/item/weapon/spike - name = "alloy spike" - desc = "It's about a foot of weird silver metal with a wicked point." - sharp = 1 - edge = 0 - throwforce = 5 - w_class = 2 - icon = 'icons/obj/weapons.dmi' - icon_state = "metal-rod" - item_state = "bolt" - -//Launcher. -/obj/item/weapon/spikethrower +/obj/item/weapon/gun/launcher/spikethrower name = "Vox spike thrower" desc = "A vicious alien projectile weapon. Parts of it quiver gelatinously, as though the thing is insectile and alive." @@ -22,97 +8,60 @@ var/spike_gen_time = 100 var/max_spikes = 3 var/spikes = 3 - var/obj/item/weapon/spike/spike - var/fire_force = 30 - - //Going to make an effort to get this compatible with the threat targetting system. - var/tmp/list/mob/living/target - var/tmp/mob/living/last_moved_mob - + release_force = 30 icon = 'icons/obj/gun.dmi' icon_state = "spikethrower3" item_state = "spikethrower" + fire_sound_text = "a strange noise" + fire_sound = 'sound/weapons/bladeslice.ogg' -/obj/item/weapon/spikethrower/New() +/obj/item/weapon/gun/launcher/spikethrower/New() ..() processing_objects.Add(src) last_regen = world.time -/obj/item/weapon/spikethrower/Del() +/obj/item/weapon/gun/launcher/spikethrower/Del() processing_objects.Remove(src) ..() -/obj/item/weapon/spikethrower/process() +/obj/item/weapon/gun/launcher/spikethrower/process() if(spikes < max_spikes && world.time > last_regen + spike_gen_time) spikes++ last_regen = world.time update_icon() -/obj/item/weapon/spikethrower/examine() +/obj/item/weapon/gun/launcher/spikethrower/examine() ..() usr << "It has [spikes] [spikes == 1 ? "spike" : "spikes"] remaining." -/obj/item/weapon/spikethrower/update_icon() +/obj/item/weapon/gun/launcher/spikethrower/update_icon() icon_state = "spikethrower[spikes]" -/obj/item/weapon/spikethrower/afterattack(atom/A as mob|obj|turf|area, mob/living/user as mob|obj, flag, params) - if(flag) return - if(user && user.client && user.client.gun_mode && !(A in target)) - //TODO: Make this compatible with targetting (prolly have to actually make it a gun subtype, ugh.) - //PreFire(A,user,params) - else - Fire(A,user,params) - -/obj/item/weapon/spikethrower/attack(mob/living/M as mob, mob/living/user as mob, def_zone) - - if (M == user && user.zone_sel.selecting == "mouth") - M.visible_message("\red [user] attempts without success to fit [src] into their mouth.") - return - - if (spikes > 0) - if(user.a_intent == "hurt") - user.visible_message("\red \The [user] fires \the [src] point blank at [M]!") - Fire(M,user) - return - else if(target && M in target) - Fire(M,user) - return - else - return ..() - -/obj/item/weapon/spikethrower/proc/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0) - - add_fingerprint(user) - - var/turf/curloc = get_turf(user) - var/turf/targloc = get_turf(target) - if (!istype(targloc) || !istype(curloc)) - return +/obj/item/weapon/gun/launcher/spikethrower/emp_act(severity) + return +/obj/item/weapon/gun/launcher/spikethrower/special_check(user) if(istype(user,/mob/living/carbon/human)) var/mob/living/carbon/human/H = user - if(H.species && H.species.name != "Vox") - user << "\red The weapon does not respond to you!" - return - else - user << "\red The weapon does not respond to you!" - return + if(H.species && H.species.name != "Vox" && H.species.name != "Vox Armalis") + user << "\red \The [src] does not respond to you!" + return 0 + return 1 - if(spikes <= 0) - user << "\red The weapon has nothing to fire!" - return +/obj/item/weapon/gun/launcher/spikethrower/update_release_force() + return - if(!spike) - spike = new(src) //Create a spike. - spike.add_fingerprint(user) - spikes-- +/obj/item/weapon/gun/launcher/spikethrower/load_into_chamber() + if(in_chamber) return 1 + if(spikes < 1) return 0 - user.visible_message("\red [user] fires [src]!", "\red You fire [src]!") - spike.loc = get_turf(src) - spike.throw_at(target,10,fire_force) - spike = null - update_icon() + spikes-- + in_chamber = new /obj/item/weapon/spike(src) + return 1 + +/obj/item/weapon/gun/launcher/spikethrower/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0) + if(..()) update_icon() //This gun only functions for armalis. The on-sprite is too huge to render properly on other sprites. /obj/item/weapon/gun/energy/noisecannon diff --git a/code/modules/projectiles/guns/projectile/bow.dm b/code/modules/projectiles/guns/projectile/crossbow.dm similarity index 61% rename from code/modules/projectiles/guns/projectile/bow.dm rename to code/modules/projectiles/guns/projectile/crossbow.dm index 912b5f2f1ee..e9bfb12b84c 100644 --- a/code/modules/projectiles/guns/projectile/bow.dm +++ b/code/modules/projectiles/guns/projectile/crossbow.dm @@ -1,3 +1,5 @@ +//AMMUNITION + /obj/item/weapon/arrow name = "bolt" @@ -14,6 +16,17 @@ /obj/item/weapon/arrow/proc/removed() //Helper for metal rods falling apart. return +/obj/item/weapon/spike + name = "alloy spike" + desc = "It's about a foot of weird silver metal with a wicked point." + sharp = 1 + edge = 0 + throwforce = 5 + w_class = 2 + icon = 'icons/obj/weapons.dmi' + icon_state = "metal-rod" + item_state = "bolt" + /obj/item/weapon/arrow/quill name = "vox quill" @@ -36,86 +49,50 @@ S.loc = get_turf(src) src.Del() -/obj/item/weapon/crossbow +/obj/item/weapon/gun/launcher/crossbow name = "powered crossbow" desc = "A 2557AD twist on an old classic. Pick up that can." - icon = 'icons/obj/weapons.dmi' icon_state = "crossbow" item_state = "crossbow-solid" - w_class = 5.0 - flags = FPRINT | TABLEPASS | CONDUCT - slot_flags = SLOT_BELT | SLOT_BACK + fire_sound = 'sound/weapons/punchmiss.ogg' // TODO: Decent THWOK noise. + ejectshell = 0 // No spent shells. + mouthshoot = 1 // No suiciding with this weapon, causes runtimes. + fire_sound_text = "a solid thunk" + fire_delay = 25 - w_class = 3.0 + var/tension = 0 // Current draw on the bow. + var/max_tension = 5 // Highest possible tension. + var/release_speed = 5 // Speed per unit of tension. + var/obj/item/weapon/cell/cell = null // Used for firing superheated rods. + var/current_user // Used to check if the crossbow has changed hands since being drawn. - var/tension = 0 // Current draw on the bow. - var/max_tension = 5 // Highest possible tension. - var/release_speed = 5 // Speed per unit of tension. - var/mob/living/current_user = null // Used to see if the person drawing the bow started drawing it. - var/obj/item/weapon/arrow = null // Nocked arrow. - var/obj/item/weapon/cell/cell = null // Used for firing special projectiles like rods. +/obj/item/weapon/gun/launcher/crossbow/emp_act(severity) + if(cell && severity) + cell.use(100*severity) -/obj/item/weapon/crossbow/attackby(obj/item/W as obj, mob/user as mob) - if(!arrow) - if (istype(W,/obj/item/weapon/arrow)) - user.drop_item() - arrow = W - arrow.loc = src - user.visible_message("[user] slides [arrow] into [src].","You slide [arrow] into [src].") - icon_state = "crossbow-nocked" - return - else if(istype(W,/obj/item/stack/rods)) - var/obj/item/stack/rods/R = W - R.use(1) - arrow = new /obj/item/weapon/arrow/rod(src) - arrow.fingerprintslast = src.fingerprintslast - arrow.loc = src - icon_state = "crossbow-nocked" - user.visible_message("[user] haphazardly jams [arrow] into [src].","You jam [arrow] into [src].") - if(cell) - if(cell.charge >= 500) - user << "[arrow] plinks and crackles as it begins to glow red-hot." - arrow.throwforce = 15 - arrow.icon_state = "metal-rod-superheated" - cell.use(500) - return +/obj/item/weapon/gun/launcher/crossbow/special_check(user) + if(tension <= 0) + user << "\red \The [src] is not drawn back!" + return 0 + return 1 - if(istype(W, /obj/item/weapon/cell)) - if(!cell) - user.drop_item() - W.loc = src - cell = W - user << "You jam [cell] into [src] and wire it to the firing coil." - if(arrow) - if(istype(arrow,/obj/item/weapon/arrow/rod) && arrow.throwforce < 15 && cell.charge >= 500) - user << "[arrow] plinks and crackles as it begins to glow red-hot." - arrow.throwforce = 15 - arrow.icon_state = "metal-rod-superheated" - cell.use(500) - else - user << "[src] already has a cell installed." +/obj/item/weapon/gun/launcher/crossbow/update_release_force() + release_force = tension*release_speed - else if(istype(W, /obj/item/weapon/screwdriver)) - if(cell) - var/obj/item/C = cell - C.loc = get_turf(user) - cell = null - user << "You jimmy [cell] out of [src] with [W]." - else - user << "[src] doesn't have a cell installed." +/obj/item/weapon/gun/launcher/crossbow/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0) - else - ..() + if(!..()) return //Only do this on a successful shot. + icon_state = "crossbow" -/obj/item/weapon/crossbow/attack_self(mob/living/user as mob) +/obj/item/weapon/gun/launcher/crossbow/attack_self(mob/living/user as mob) if(tension) - if(arrow) - user.visible_message("[user] relaxes the tension on [src]'s string and removes [arrow].","You relax the tension on [src]'s string and remove [arrow].") - var/obj/item/weapon/arrow/A = arrow - A.loc = get_turf(src) + if(in_chamber && in_chamber.loc == src) //Just in case they click it the tick after firing. + user.visible_message("[user] relaxes the tension on [src]'s string and removes [in_chamber].","You relax the tension on [src]'s string and remove [in_chamber].") + in_chamber.loc = get_turf(src) + var/obj/item/weapon/arrow/A = in_chamber + in_chamber = null A.removed(user) - arrow = null else user.visible_message("[user] relaxes the tension on [src]'s string.","You relax the tension on [src]'s string.") tension = 0 @@ -123,9 +100,9 @@ else draw(user) -/obj/item/weapon/crossbow/proc/draw(var/mob/user as mob) +/obj/item/weapon/gun/launcher/crossbow/proc/draw(var/mob/user as mob) - if(!arrow) + if(!in_chamber) user << "You don't have anything nocked to [src]." return @@ -133,14 +110,13 @@ return current_user = user - user.visible_message("[user] begins to draw back the string of [src].","You begin to draw back the string of [src].") tension = 1 - spawn(25) increase_tension(user) + spawn(25) increase_tension(user) //TODO: This needs to be changed to something less shit. -/obj/item/weapon/crossbow/proc/increase_tension(var/mob/user as mob) +/obj/item/weapon/gun/launcher/crossbow/proc/increase_tension(var/mob/user as mob) - if(!arrow || !tension || current_user != user) //Arrow has been fired, bow has been relaxed or user has changed. + if(!in_chamber || !tension || current_user != user) //Arrow has been fired, bow has been relaxed or user has changed. return tension++ @@ -153,60 +129,62 @@ user.visible_message("[usr] draws back the string of [src]!","You continue drawing back the string of [src]!") spawn(25) increase_tension(user) -/obj/item/weapon/crossbow/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag, params) +/obj/item/weapon/gun/launcher/crossbow/attackby(obj/item/W as obj, mob/user as mob) + if(!in_chamber) + if (istype(W,/obj/item/weapon/arrow)) + user.drop_item() + in_chamber = W + in_chamber.loc = src + user.visible_message("[user] slides [in_chamber] into [src].","You slide [in_chamber] into [src].") + icon_state = "crossbow-nocked" + return + else if(istype(W,/obj/item/stack/rods)) + var/obj/item/stack/rods/R = W + R.use(1) + in_chamber = new /obj/item/weapon/arrow/rod(src) + in_chamber.fingerprintslast = src.fingerprintslast + in_chamber.loc = src + icon_state = "crossbow-nocked" + user.visible_message("[user] jams [in_chamber] into [src].","You jam [in_chamber] into [src].") + superheat_rod(user) + return - if (istype(target, /obj/item/weapon/storage/backpack )) - src.dropped() - return + if(istype(W, /obj/item/weapon/cell)) + if(!cell) + user.drop_item() + W.loc = src + cell = W + user << "You jam [cell] into [src] and wire it to the firing coil." + superheat_rod(user) + else + user << "[src] already has a cell installed." - else if (target.loc == user.loc) - return + else if(istype(W, /obj/item/weapon/screwdriver)) + if(cell) + var/obj/item/C = cell + C.loc = get_turf(user) + user << "You jimmy [cell] out of [src] with [W]." + cell = null + else + user << "[src] doesn't have a cell installed." - else if (locate (/obj/structure/table, src.loc)) - return - - else if(target == user) - return - - if(!tension) - user << "You haven't drawn back the bolt!" - return 0 - - if (!arrow) - user << "You have no arrow nocked to [src]!" - return 0 else - spawn(0) Fire(target,user,params) + ..() -/obj/item/weapon/crossbow/proc/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0) +/obj/item/weapon/gun/launcher/crossbow/proc/superheat_rod(var/mob/user) - add_fingerprint(user) + if(!user || !cell || !in_chamber) return + if(cell.charge < 500) return + if(in_chamber.throwforce >= 15) return + if(!istype(in_chamber,/obj/item/weapon/arrow/rod)) return - var/turf/curloc = get_turf(user) - var/turf/targloc = get_turf(target) - if (!istype(targloc) || !istype(curloc)) - return + user << "[in_chamber] plinks and crackles as it begins to glow red-hot." + in_chamber.throwforce = 15 + in_chamber.icon_state = "metal-rod-superheated" + cell.use(500) - user.visible_message("[user] releases [src] and sends [arrow] streaking toward [target]!","You release [src] and send [arrow] streaking toward [target]!") - - var/obj/item/weapon/arrow/A = arrow - A.loc = get_turf(user) - A.throw_at(target,10,tension*release_speed) - arrow = null - tension = 0 - icon_state = "crossbow" - -/obj/item/weapon/crossbow/dropped(mob/user) - if(arrow) - var/obj/item/weapon/arrow/A = arrow - A.loc = get_turf(src) - A.removed(user) - arrow = null - tension = 0 - icon_state = "crossbow" // Crossbow construction. - /obj/item/weapon/crossbowframe name = "crossbow frame" desc = "A half-finished crossbow." @@ -283,7 +261,7 @@ else if(istype(W,/obj/item/weapon/screwdriver)) if(buildstate == 5) user << "\blue You secure the crossbow's various parts." - new /obj/item/weapon/crossbow(get_turf(src)) + new /obj/item/weapon/gun/launcher/crossbow(get_turf(src)) del(src) return else diff --git a/code/modules/projectiles/guns/projectile/launcher.dm b/code/modules/projectiles/guns/projectile/launcher.dm new file mode 100644 index 00000000000..c367780a5e8 --- /dev/null +++ b/code/modules/projectiles/guns/projectile/launcher.dm @@ -0,0 +1,91 @@ +/obj/item/weapon/gun/launcher + + name = "launcher" + desc = "A device that launches things." + icon = 'icons/obj/weapons.dmi' + w_class = 5.0 + flags = FPRINT | TABLEPASS | CONDUCT + slot_flags = SLOT_BACK + + var/release_force = 0 + var/fire_sound_text = "a launcher firing" + +//Check if we're drawing and if the bow is loaded. +/obj/item/weapon/gun/launcher/load_into_chamber() + return (!isnull(in_chamber)) + +//This should not fit in a combat belt or holster. +/obj/item/weapon/gun/launcher/isHandgun() + return 0 + +//Launchers are mechanical, no other impact. +/obj/item/weapon/gun/launcher/emp_act(severity) + return + +//This normally uses a proc on projectiles and our ammo is not strictly speaking a projectile. +/obj/item/weapon/gun/launcher/can_hit(var/mob/living/target as mob, var/mob/living/user as mob) + return + +//Override this to avoid a runtime with suicide handling. +/obj/item/weapon/gun/launcher/attack(mob/living/M as mob, mob/living/user as mob, def_zone) + if (M == user && user.zone_sel.selecting == "mouth") + user << "\red Shooting yourself with \a [src] is pretty tricky. You can't seem to manage it." + return + ..() + +/obj/item/weapon/gun/launcher/proc/update_release_force() + return 0 + +/obj/item/weapon/gun/launcher/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0) + + if (!user.IsAdvancedToolUser()) + user << "\red You don't have the dexterity to do this!" + return 0 + + add_fingerprint(user) + + //Make sure target turfs both exist. + var/turf/curloc = get_turf(user) + var/turf/targloc = get_turf(target) + if (!istype(targloc) || !istype(curloc)) + return 0 + + if(!special_check(user)) + return 0 + + if (!ready_to_fire()) + if (world.time % 3) //to prevent spam + user << "[src] is not ready to fire again!" + return 0 + + if(!load_into_chamber()) //CHECK + return click_empty(user) + + if(!in_chamber) + return 0 + + update_release_force() + + playsound(user, fire_sound, 50, 1) + user.visible_message("[user] fires [src][reflex ? " by reflex":""]!", \ + "You fire [src][reflex ? "by reflex":""]!", \ + "You hear [fire_sound_text]!") + + in_chamber.loc = get_turf(user) + in_chamber.throw_at(target,10,release_force) + + sleep(1) + + in_chamber = null + + update_icon() + + if(user.hand) + user.update_inv_l_hand() + else + user.update_inv_r_hand() + + return 1 + +/obj/item/weapon/gun/launcher/attack_self(mob/living/user as mob) + return \ No newline at end of file diff --git a/code/modules/projectiles/guns/projectile/pneumatic.dm b/code/modules/projectiles/guns/projectile/pneumatic.dm index 43c1fed24aa..6d1855b8a7d 100644 --- a/code/modules/projectiles/guns/projectile/pneumatic.dm +++ b/code/modules/projectiles/guns/projectile/pneumatic.dm @@ -1,4 +1,4 @@ -/obj/item/weapon/storage/pneumatic +/obj/item/weapon/gun/launcher/pneumatic name = "pneumatic cannon" desc = "A large gas-powered cannon." icon = 'icons/obj/gun.dmi' @@ -6,27 +6,28 @@ item_state = "pneumatic" w_class = 5.0 flags = FPRINT | TABLEPASS | CONDUCT - slot_flags = SLOT_BELT - max_w_class = 3 - max_combined_w_class = 20 + fire_sound_text = "a loud whoosh of moving air" + fire_delay = 50 + fire_sound = 'sound/weapons/tablehit1.ogg' + var/fire_pressure // Used in fire checks/pressure checks. + var/max_w_class = 3 // Hopper intake size. + var/max_combined_w_class = 20 // Total internal storage size. var/obj/item/weapon/tank/tank = null // Tank of gas for use in firing the cannon. var/obj/item/weapon/storage/tank_container = new() // Something to hold the tank item so we don't accidentally fire it. var/pressure_setting = 10 // Percentage of the gas in the tank used to fire the projectile. var/possible_pressure_amounts = list(5,10,20,25,50) // Possible pressure settings. var/minimum_tank_pressure = 10 // Minimum pressure to fire the gun. - var/cooldown = 0 // Whether or not we're cooling down. - var/cooldown_time = 50 // Time between shots. var/force_divisor = 400 // Force equates to speed. Speed/5 equates to a damage multiplier for whoever you hit. // For reference, a fully pressurized oxy tank at 50% gas release firing a health // analyzer with a force_divisor of 10 hit with a damage multiplier of 3000+. -/obj/item/weapon/storage/pneumatic/New() +/obj/item/weapon/gun/launcher/pneumatic/New() ..() tank_container.tag = "gas_tank_holder" -/obj/item/weapon/storage/pneumatic/verb/set_pressure() //set amount of tank pressure. +/obj/item/weapon/gun/launcher/pneumatic/verb/set_pressure() //set amount of tank pressure. - set name = "Set valve pressure" + set name = "Set Valve Pressure" set category = "Object" set src in range(0) var/N = input("Percentage of tank used per shot:","[src]") as null|anything in possible_pressure_amounts @@ -34,9 +35,9 @@ pressure_setting = N usr << "You dial the pressure valve to [pressure_setting]%." -/obj/item/weapon/storage/pneumatic/verb/eject_tank() //Remove the tank. +/obj/item/weapon/gun/launcher/pneumatic/verb/eject_tank() //Remove the tank. - set name = "Eject tank" + set name = "Eject Tank" set category = "Object" set src in range(0) @@ -50,7 +51,7 @@ else usr << "There's no tank in [src]." -/obj/item/weapon/storage/pneumatic/attackby(obj/item/W as obj, mob/user as mob) +/obj/item/weapon/gun/launcher/pneumatic/attackby(obj/item/W as obj, mob/user as mob) if(!tank && istype(W,/obj/item/weapon/tank)) user.drop_item() tank = W @@ -59,10 +60,43 @@ icon_state = "pneumatic-tank" item_state = "pneumatic-tank" user.update_icons() - else - ..() + else if(W.w_class <= max_w_class) -/obj/item/weapon/storage/pneumatic/examine() + var/total_stored = 0 + for(var/obj/item/O in src.contents) + total_stored += O.w_class + if(total_stored + W.w_class <= max_combined_w_class) + user.drop_item(W) + W.loc = src + user << "You shove [W] into the hopper." + else + user << "That won't fit into the hopper - it's full." + return + else + user << "That won't fit into the hopper." + +/obj/item/weapon/gun/launcher/pneumatic/attack_self(mob/user as mob) + + if(contents.len > 0) + var/obj/item/removing = contents[contents.len] + if(removing == in_chamber) + in_chamber = null + + removing.loc = get_turf(src) + user.put_in_hands(removing) + user << "You remove [removing] from the hopper." + else + user << "There is nothing to remove in \the [src]." + return + +/obj/item/weapon/gun/launcher/pneumatic/load_into_chamber() + if(!contents.len) + return 0 + + in_chamber = contents[1] + return !isnull(in_chamber) + +/obj/item/weapon/gun/launcher/pneumatic/examine() set src in view() ..() if (!(usr in view(2)) && usr!=src.loc) return @@ -72,76 +106,32 @@ else usr << "Nothing is attached to the tank valve!" -/obj/item/weapon/storage/pneumatic/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, flag, params) - if (istype(target, /obj/item/weapon/storage/backpack )) - return - - else if (target.loc == user.loc) - return - - else if (locate (/obj/structure/table, src.loc)) - return - - else if(target == user) - return - - if (length(contents) == 0) - user << "There's nothing in [src] to fire!" - return 0 - else - spawn(0) Fire(target,user,params) - -/obj/item/weapon/storage/pneumatic/attack(mob/living/M as mob, mob/living/user as mob, def_zone) - if (length(contents) > 0) - if(user.a_intent == "hurt") - user.visible_message("\red \The [user] fires \the [src] point blank at [M]!") - Fire(M,user) - return - else - Fire(M,user) - return - -/obj/item/weapon/storage/pneumatic/proc/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0) +/obj/item/weapon/gun/launcher/pneumatic/special_check(user) if (!tank) user << "There is no gas tank in [src]!" return 0 - if (cooldown) - user << "The chamber hasn't built up enough pressure yet!" - return 0 - - add_fingerprint(user) - - var/turf/curloc = get_turf(user) - var/turf/targloc = get_turf(target) - if (!istype(targloc) || !istype(curloc)) - return - - var/fire_pressure = (tank.air_contents.return_pressure()/100)*pressure_setting - + fire_pressure = (tank.air_contents.return_pressure()/100)*pressure_setting if (fire_pressure < minimum_tank_pressure) user << "There isn't enough gas in the tank to fire [src]." return 0 - var/obj/item/object = contents[1] - var/speed = ((fire_pressure*tank.volume)/object.w_class)/force_divisor //projectile speed. - if(speed>80) speed = 80 //damage cap. + return 1 - user.visible_message("[user] fires [src] and launches [object] at [target]!","You fire [src] and launch [object] at [target]!") +/obj/item/weapon/gun/launcher/pneumatic/update_release_force() + if(!in_chamber) return + release_force = ((fire_pressure*tank.volume)/in_chamber.w_class)/force_divisor //projectile speed. + if(release_force >80) release_force = 80 //damage cap. - src.remove_from_storage(object,user.loc) - object.throw_at(target,10,speed) +/obj/item/weapon/gun/launcher/pneumatic/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0) + + if(!tank || !..()) return //Only do this on a successful shot. var/lost_gas_amount = tank.air_contents.total_moles*(pressure_setting/100) var/datum/gas_mixture/removed = tank.air_contents.remove(lost_gas_amount) user.loc.assume_air(removed) - cooldown = 1 - spawn(cooldown_time) - cooldown = 0 - user << "[src]'s gauge informs you it's ready to be fired again." - //Constructable pneumatic cannon. /obj/item/weapon/cannonframe @@ -215,7 +205,7 @@ if(!src || !T.isOn()) return playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1) user << "\blue You weld the valve into place." - new /obj/item/weapon/storage/pneumatic(get_turf(src)) + new /obj/item/weapon/gun/launcher/pneumatic(get_turf(src)) del(src) return else diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index ba5a2bc5406bf973eb0cbb06685d0f27f353985d..95df7c430f84a77d57f244065901c63b7fe3abe5 100644 GIT binary patch literal 38973 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 literal 36425 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%0AFHglqk$2ScWMl&8q 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 kub-{zY4P85hU;)N>hoVAhuf(d5b*Ee11;4O Date: Sun, 20 Jul 2014 18:41:11 +0200 Subject: [PATCH 04/22] Fixes Runtime Error, doesn't query for PIN on lowest account security level --- code/modules/economy/EFTPOS.dm | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/code/modules/economy/EFTPOS.dm b/code/modules/economy/EFTPOS.dm index 98080d3872c..e08f1bba0ca 100644 --- a/code/modules/economy/EFTPOS.dm +++ b/code/modules/economy/EFTPOS.dm @@ -175,9 +175,12 @@ var/attempt_account_num = input("Enter account number to pay EFTPOS charges into", "New account number") as num var/attempt_pin = input("Enter pin code", "Account pin") as num linked_account = attempt_account_access(attempt_account_num, attempt_pin, 1) - if(linked_account.suspended) - linked_account = null - usr << "\icon[src]Account has been suspended." + if(linked_account) + if(linked_account.suspended) + linked_account = null + usr << "\icon[src]Account has been suspended." + else + usr << "\icon[src]Account not found." if("trans_purpose") transaction_purpose = input("Enter reason for EFTPOS transaction", "Transaction purpose") if("trans_value") @@ -199,7 +202,7 @@ else if(linked_account) transaction_locked = 1 else - usr << "\icon[src] No account connected to send transactions to." + usr << "\icon[src]No account connected to send transactions to." if("scan_card") if(linked_account) var/obj/item/I = usr.get_active_hand() @@ -228,8 +231,12 @@ if(transaction_locked && !transaction_paid) if(linked_account) if(!linked_account.suspended) - var/attempt_pin = input("Enter pin code", "EFTPOS transaction") as num - var/datum/money_account/D = attempt_account_access(C.associated_account_number, attempt_pin, 2) + var/attempt_pin = "" + var/datum/money_account/D = get_account(C.associated_account_number) + if(D.security_level) + attempt_pin = input("Enter pin code", "EFTPOS transaction") as num + D = null + D = attempt_account_access(C.associated_account_number, attempt_pin, 2) if(D) if(!D.suspended) if(transaction_amount <= D.money) From 52c0d83a2c251595dc3653df0e409bc1e92a7fe5 Mon Sep 17 00:00:00 2001 From: Hubblenaut Date: Sun, 20 Jul 2014 18:42:04 +0200 Subject: [PATCH 05/22] Cans now actually make use of the new 4x4 grid --- code/modules/reagents/reagent_containers/food/cans.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/reagent_containers/food/cans.dm b/code/modules/reagents/reagent_containers/food/cans.dm index 118b8cf6a26..ecb7864c9a8 100644 --- a/code/modules/reagents/reagent_containers/food/cans.dm +++ b/code/modules/reagents/reagent_containers/food/cans.dm @@ -123,7 +123,7 @@ reagents.add_reagent(refill, trans) user << "Cyborg [src] refilled." - return + return ..() /* examine() set src in view() From c2f1a23e3e1e8b4abd5d65ae67efc9d1b9b10549 Mon Sep 17 00:00:00 2001 From: Hubblenaut Date: Sun, 20 Jul 2014 18:42:46 +0200 Subject: [PATCH 06/22] Moves paperbin to OBJ_LAYER - 0.1 to prevent clipping --- code/modules/paperwork/paperbin.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index a1ded78ed34..03c59d4a290 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -8,6 +8,7 @@ throw_speed = 3 throw_range = 7 pressure_resistance = 10 + layer = OBJ_LAYER - 0.1 var/amount = 30 //How much paper is in the bin. var/list/papers = new/list() //List of papers put in the bin for reference. From b216944eaddc731d618d32b771a7f134a8146989 Mon Sep 17 00:00:00 2001 From: Hubblenaut Date: Sun, 20 Jul 2014 18:44:37 +0200 Subject: [PATCH 07/22] Fixes some doors in Engineering to make use of Engineering-Access rather than Power-Equipment. Adds Security EFTPOS device to HoS' office. --- maps/tgstation2.dmm | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index 82877105a98..d132259056d 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -232,7 +232,7 @@ "aex" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/wall/r_wall,/area/security/hos) "aey" = (/obj/machinery/disposal,/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; frequency = 1475; listening = 1; name = "Station Intercom (Security)"; pixel_x = -30; pixel_y = 0},/obj/structure/disposalpipe/trunk,/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Security's Desk"; departmentType = 5; name = "Head of Security RC"; pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "aez" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor,/area/security/brig) -"aeA" = (/obj/structure/table/woodentable,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/reagent_containers/food/drinks/flask/barflask,/turf/simulated/floor{icon_state = "dark"},/area/security/hos) +"aeA" = (/obj/structure/table/woodentable,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/item/weapon/reagent_containers/food/drinks/flask/barflask{pixel_x = 4; pixel_y = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "aeB" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/window/southright,/obj/structure/table/reinforced,/turf/simulated/floor,/area/security/lobby) "aeC" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass_security{name = "Prison Wing"; req_access_txt = "2"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/prison) "aeD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/brig) @@ -258,7 +258,7 @@ "aeX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig) "aeY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "aeZ" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) -"afa" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/item/weapon/cartridge/detective,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) +"afa" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/item/weapon/cartridge/detective,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/item/device/eftpos{eftpos_name = "Security EFTPOS scanner"; transaction_amount = 200; transaction_purpose = "Default fine"},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "afb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/security/hos) "afc" = (/turf/space,/area/vox_station/northwest_solars) "afd" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent{filled = 0.2},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/security/prison) @@ -3657,9 +3657,9 @@ "bsq" = (/obj/machinery/atmospherics/pipe/simple{icon_state = "intact"; level = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{color = "#4444FF"; dir = 4},/turf/simulated/floor,/area/medical/sleeper) "bsr" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Medbay Diagnostics Maintenance Access"; req_access_txt = "5"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{color = "#4444FF"; dir = 4},/turf/simulated/floor/plating,/area/medical/sleeper) "bss" = (/turf/simulated/floor{icon_state = "freezerfloor"},/area/medical/patient_wing) -"bst" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Break Room"; req_one_access_txt = "11;24;5"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/engine/break_room) +"bst" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Break Room"; req_one_access_txt = "10;24;5"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/engine/break_room) "bsu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"},/area/crew_quarters/sleep/engi) -"bsv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/airlock/engineering{name = "Engineering Dormitories"; req_one_access_txt = "11;24;5"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/crew_quarters/sleep/engi) +"bsv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/airlock/engineering{name = "Engineering Dormitories"; req_one_access_txt = "10;24;5"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/crew_quarters/sleep/engi) "bsw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bsx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "bsy" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plating,/area/maintenance/incinerator) @@ -3973,8 +3973,8 @@ "byu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light/small,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "byv" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/vending/wallmed1{pixel_x = -26},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/ward) "byw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/medical/surgeryobs) -"byx" = (/obj/machinery/door/airlock/glass_engineering{name = "Engineering Break Room"; req_one_access_txt = "11;24;5"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engine/break_room) -"byy" = (/obj/machinery/door/airlock/engineering{name = "Engineering Dormitories"; req_one_access_txt = "11;24;5"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/crew_quarters/sleep/engi) +"byx" = (/obj/machinery/door/airlock/glass_engineering{name = "Engineering Break Room"; req_one_access_txt = "10;24;5"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engine/break_room) +"byy" = (/obj/machinery/door/airlock/engineering{name = "Engineering Dormitories"; req_one_access_txt = "10;24;5"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/crew_quarters/sleep/engi) "byz" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/medical/medbreak) "byA" = (/obj/machinery/light{dir = 1},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/door_control{id = "staffroom"; name = "Staff Room Shutters Control"; pixel_x = -26; pixel_y = 0},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/medbreak) "byB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/asmaint) @@ -5390,7 +5390,7 @@ "bZH" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/turf/simulated/floor/plating,/area/engine/engine_room) "bZI" = (/turf/simulated/wall,/area/engine/drone_fabrication) "bZJ" = (/obj/structure/sign/biohazard,/turf/simulated/wall/r_wall,/area/medical/virology) -"bZK" = (/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "11;24"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/engine/hallway) +"bZK" = (/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/turf/simulated/floor,/area/engine/hallway) "bZL" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor/plating{icon_state = "platebotc"; nitrogen = 0.01; oxygen = 0.01},/area/engine/engine_room) "bZM" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Genetics Research"; req_access_txt = "9"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bZN" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/medical/research{name = "Research Division"}) @@ -5561,9 +5561,9 @@ "ccW" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/atmos) "ccX" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/atmos) "ccY" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/turf/simulated/floor{dir = 1; icon_state = "whitered"},/area/medical/virology) -"ccZ" = (/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "11;24"},/turf/simulated/floor,/area/engine/hallway) +"ccZ" = (/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/turf/simulated/floor,/area/engine/hallway) "cda" = (/turf/simulated/wall/r_wall,/area/turret_protected/ai_cyborg_station) -"cdb" = (/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "11;24"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engine/hallway) +"cdb" = (/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engine/hallway) "cdc" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/wall/r_wall,/area/rnd/xenobiology) "cdd" = (/turf/simulated/wall/r_wall,/area/engine/hallway) "cde" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/atmos) @@ -6057,7 +6057,7 @@ "cmy" = (/obj/machinery/light{dir = 1},/obj/machinery/computer/centrifuge,/obj/item/weapon/storage/secure/safe{pixel_x = 5; pixel_y = 29},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cmz" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 26},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cmA" = (/obj/structure/disposalpipe/segment,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/construction) -"cmB" = (/obj/machinery/door/airlock/engineering{name = "Engineering Washroom"; req_one_access_txt = "11;24"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"},/area/crew_quarters/sleep/engi) +"cmB" = (/obj/machinery/door/airlock/engineering{name = "Engineering Washroom"; req_one_access_txt = "10;24"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"},/area/crew_quarters/sleep/engi) "cmC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/aft) "cmD" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "xenobio2"; name = "Containment Blast Doors"; opacity = 0},/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access_txt = "55"},/turf/simulated/floor/engine,/area/rnd/xenobiology) "cmE" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen"; req_access_txt = "55"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/xenobiology) @@ -6263,7 +6263,7 @@ "cqw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/hallway/primary/aft) "cqx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/effect/landmark/start{name = "Cyborg"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_cyborg_station) "cqy" = (/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = 28},/turf/simulated/floor,/area/construction) -"cqz" = (/obj/machinery/door/window/eastright{name = "Engineering Reception Desk"; req_one_access_txt = "11;24"},/obj/machinery/light,/turf/simulated/floor,/area/hallway/primary/aft) +"cqz" = (/obj/machinery/door/window/eastright{name = "Engineering Reception Desk"; req_one_access_txt = "10;24"},/obj/machinery/light,/turf/simulated/floor,/area/hallway/primary/aft) "cqA" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{tag = "icon-intact-f (EAST)"; icon_state = "intact-f"; dir = 4},/turf/simulated/floor,/area/hallway/primary/aft) "cqB" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{tag = "icon-intact-f (EAST)"; icon_state = "intact-f"; dir = 4},/obj/machinery/requests_console{announcementConsole = 0; department = "Engineering"; departmentType = 4; name = "Engineering RC"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor,/area/hallway/primary/aft) "cqC" = (/obj/structure/closet/secure_closet/atmos_personal,/obj/item/weapon/tank/emergency_oxygen/engi,/turf/simulated/floor,/area/engine/locker_room) @@ -6361,9 +6361,9 @@ "csq" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "csr" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "medbayquar"; name = "Medbay Emergency Quarantine Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/reception) "css" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "medbayquar"; name = "Medbay Emergency Quarantine Shutters"; opacity = 0},/turf/simulated/floor{dir = 5; icon_state = "whiteblue"},/area/medical/reception) -"cst" = (/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "11;24"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/turf/simulated/floor,/area/engine/hallway) -"csu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "11;24"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/turf/simulated/floor,/area/engine/hallway) -"csv" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "11;24"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/turf/simulated/floor,/area/engine/hallway) +"cst" = (/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/turf/simulated/floor,/area/engine/hallway) +"csu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/turf/simulated/floor,/area/engine/hallway) +"csv" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/turf/simulated/floor,/area/engine/hallway) "csw" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/engine/workshop) "csx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Workshop"; req_access_txt = "11"},/turf/simulated/floor,/area/engine/workshop) "csy" = (/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Workshop"; req_access_txt = "11"},/turf/simulated/floor,/area/engine/workshop) From e942ca258fa05319741105a5adbb7034663fa34d Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Mon, 21 Jul 2014 15:36:08 -0500 Subject: [PATCH 08/22] Mutineers and Loyalist will now show up properly in antagHUD. --- code/modules/mob/living/carbon/human/life.dm | 8 ++++---- icons/mob/hud.dmi | Bin 2955 -> 3531 bytes 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 211da1cdac8..5280d92de74 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1845,13 +1845,13 @@ if("Ninja") holder.icon_state = "hudninja" if("head_loyalist") - holder.icon_state = "loyalist" + holder.icon_state = "hudloyalist" if("loyalist") - holder.icon_state = "loyalist" + holder.icon_state = "hudloyalist" if("head_mutineer") - holder.icon_state = "mutineer" + holder.icon_state = "hudmutineer" if("mutineer") - holder.icon_state = "mutineer" + holder.icon_state = "hudmutineer" hud_list[SPECIALROLE_HUD] = holder hud_updateflag = 0 diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index 0ea9293c2acc6f5a8b959bed768324f0488f2767..a42aaeaeaaef8e616c40cc1395ae8bf6179a9fc8 100644 GIT binary patch delta 3259 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 V+12b7a{Pai=El}W)oAy7{{{422b=%^ delta 2661 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 From a274cd7326308c0b95c7b272355f5a49dffe8f5f Mon Sep 17 00:00:00 2001 From: Walter0o Date: Tue, 22 Jul 2014 16:49:09 +0200 Subject: [PATCH 09/22] borer mindcontrol release hotfix forgot to remove this remnant ckey check --- code/modules/mob/living/simple_animal/borer.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/borer.dm b/code/modules/mob/living/simple_animal/borer.dm index e90b13993b8..0d15aeab543 100644 --- a/code/modules/mob/living/simple_animal/borer.dm +++ b/code/modules/mob/living/simple_animal/borer.dm @@ -361,7 +361,7 @@ mob/living/simple_animal/borer/proc/detatch() host.verbs -= /mob/living/carbon/proc/spawn_larvae - if(host_brain && host_brain.ckey) + if(host_brain) // host -> self var/h2s_id = host.computer_id From 11ab2ec4127f97c4051b1657db11ddf907607bf5 Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Tue, 22 Jul 2014 18:33:54 -0500 Subject: [PATCH 10/22] Chem Master won't resize it's window by adding a scroll bar on selection. Fixes #5574 --- code/modules/reagents/Chemistry-Machinery.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 37703e09126..9c06be563bb 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -145,7 +145,7 @@ if (!ui) // the ui does not exist, so we'll create a new() one // for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm - ui = new(user, src, ui_key, "chem_dispenser.tmpl", ui_title, 380, 650) + ui = new(user, src, ui_key, "chem_dispenser.tmpl", ui_title, 390, 655) // when the ui is first opened this is the data it will use ui.set_initial_data(data) // open the new ui window From e01e081cbba107c52dfe052cfa39d001422128b0 Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Tue, 22 Jul 2014 19:05:04 -0500 Subject: [PATCH 11/22] screen_shake (meteors, etc.) made more robust and works with aiEyes Before: multiple screen_shake's could queue up prior to screenshake being set on the mob setting oldeye on the last one to queue up to be the random location from the previous screen shake so sometimes peoples clients were stuck on a location instead of back on the mob. Now we set screenshake before the spawn so we don't spawn up multiple screen_shakes on the same mob. Test: Be ghost, hammer the spawn meteors secret 10 times or so, watch as your camera returns back to your mob. Yay. --- code/modules/mob/mob_helpers.dm | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 314a4026ab1..f6a61887944 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -329,17 +329,25 @@ It's fairly easy to fix if dealing with single letters but not so much with comp /proc/shake_camera(mob/M, duration, strength=1) - if(!M || !M.client || M.shakecamera) + if(!M || !M.client || M.shakecamera) return + M.shakecamera = 1 spawn(1) - var/oldeye=M.client.eye + + var/atom/oldeye=M.client.eye + var/aiEyeFlag = 0 + if(istype(oldeye, /mob/aiEye)) + aiEyeFlag = 1 + var/x - M.shakecamera = 1 for(x=0; x Date: Tue, 22 Jul 2014 19:32:52 -0500 Subject: [PATCH 12/22] Positronic brains (and every other mob) using binary chat will no longer send their messages twice. Fixes: #5444 --- code/modules/mob/say.dm | 42 ++++++++++++++++------------------------- 1 file changed, 16 insertions(+), 26 deletions(-) diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 25696c59c1e..8bb02af6d42 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -96,35 +96,25 @@ return 0 -/mob/proc/say_quote(var/text,var/datum/language/speaking) +/* + ***Deprecated*** + let this be handled at the hear_say or hear_radio proc + This is left in for robot speaking when humans gain binary channel access until I get around to rewriting + robot_talk() proc. + There is no language handling build into it however there is at the /mob level so we accept the call + for it but just ignore it. +*/ - if(!text) - return "says, \"...\""; //not the best solution, but it will stop a large number of runtimes. The cause is somewhere in the Tcomms code - //tcomms code is still runtiming somewhere here - var/ending = copytext(text, length(text)) +/mob/proc/say_quote(var/message, var/datum/language/speaking = null) + var/verb = "says" + var/ending = copytext(message, length(message)) + if(ending=="!") + verb=pick("exclaims","shouts","yells") + else if(ending=="?") + verb="asks" - var/speech_verb = "says" - var/speech_style = "body" + return verb - if (speaking) - speech_verb = speaking.speech_verb - speech_style = speaking.colour - else if(speak_emote && speak_emote.len) - speech_verb = pick(speak_emote) - else if (src.stuttering) - speech_verb = "stammers" - else if (src.slurring) - speech_verb = "slurrs" - else if (ending == "?") - speech_verb = "asks" - else if (ending == "!") - speech_verb = "exclaims" - else if(isliving(src)) - var/mob/living/L = src - if (L.getBrainLoss() >= 60) - speech_verb = "gibbers" - - return "[speech_verb], \"[text]\"" /mob/proc/emote(var/act, var/type, var/message) if(act == "me") From 477d32ff64cca260bf44c0b58ff7e02584d7e15e Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Tue, 22 Jul 2014 19:33:56 -0500 Subject: [PATCH 13/22] Ghosts will no longer hear clientless mobs random talking unless they are in view. Experiment 97B says, 'EHEHEHEHEHEHEHE!' --- code/modules/mob/hear_say.dm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index ca0547774f9..7ccffd0fc0a 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -4,6 +4,11 @@ if(!client) return + if(speaker && !speaker.client && istype(src,/mob/dead/observer) && client.prefs.toggles & CHAT_GHOSTEARS && !speaker in view(src)) + //Does the speaker have a client? It's either random stuff that observers won't care about (Experiment 97B says, 'EHEHEHEHEHEHEHE') + //Or someone snoring. So we make it where they won't hear it. + return + if(sleeping || stat == 1) hear_sleep(message) return @@ -50,7 +55,7 @@ src << "[speaker_name][alt_name] talks but you cannot hear \him." else src << "[speaker_name][alt_name] [track][verb], \"[message]\"" - if (speech_sound) + if (speech_sound && !istype(src, /mob/dead/observer)) var/turf/source = speaker? get_turf(speaker) : get_turf(src) src.playsound_local(source, speech_sound, sound_vol, 1) From 6fd257b4dfaac14fd2adfb357082ef7411f9924f Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Tue, 22 Jul 2014 19:50:55 -0500 Subject: [PATCH 14/22] PDA ID link will no longer overflow with long names/jobs. Screw you Billybob Bo-Bob-George III, Atmospheric Technician Fixes: 5287 --- nano/templates/pda.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nano/templates/pda.tmpl b/nano/templates/pda.tmpl index 088f1cec213..87e39b19361 100644 --- a/nano/templates/pda.tmpl +++ b/nano/templates/pda.tmpl @@ -40,7 +40,7 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm ID:

- {{:~link(idLink, 'eject', {'choice' : "Authenticate"}, idInserted ? null : 'disabled', idInserted ? 'fixedLeftWidest' : 'fixedLeft')}} + {{:~link(idLink, 'eject', {'choice' : "Authenticate"}, idInserted ? null : 'disabled', idInserted ? 'floatright' : 'fixedLeft')}}

From 569e8361dc074ec83a767b3944f43c050aff9663 Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Tue, 22 Jul 2014 19:52:24 -0500 Subject: [PATCH 15/22] Crew Monitor will no longer show "weird characters" It has been talked to and feels very sorry for it's actions. Well that and NanoUI doesn't like byond text-macros (/improper) in this case, so we just sanitize it just incase the crew monitor isn't playing nice that day. --- code/game/machinery/computer/crew.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm index 528815ad07e..4d5810869b4 100644 --- a/code/game/machinery/computer/crew.dm +++ b/code/game/machinery/computer/crew.dm @@ -85,7 +85,8 @@ crewmemberData["fire"] = round(H.getFireLoss(), 1) crewmemberData["brute"] = round(H.getBruteLoss(), 1) crewmemberData["name"] = (H.wear_id ? H.wear_id.name : "Unknown") - crewmemberData["area"] = get_area(H) + var/area/A = get_area(H) + crewmemberData["area"] = sanitize(A.name) crewmemberData["x"] = pos.x crewmemberData["y"] = pos.y @@ -113,4 +114,4 @@ var/obj/item/clothing/under/C = H.w_uniform if (C.has_sensor) tracked |= C - return 1 \ No newline at end of file + return 1 From 98abc5bfc443391dbcb1ca3252ff55043b92cd8b Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Wed, 23 Jul 2014 01:48:48 -0500 Subject: [PATCH 16/22] Compromise on speach_sound, will check distance instead of just checking if ghost. --- code/modules/mob/hear_say.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index 7ccffd0fc0a..221863ce3c7 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -55,7 +55,7 @@ src << "[speaker_name][alt_name] talks but you cannot hear \him." else src << "[speaker_name][alt_name] [track][verb], \"[message]\"" - if (speech_sound && !istype(src, /mob/dead/observer)) + if (speech_sound && (get_dist(speaker, src) <= world.view && src.z == speaker.z)) var/turf/source = speaker? get_turf(speaker) : get_turf(src) src.playsound_local(source, speech_sound, sound_vol, 1) From fe9785d630442d6bbc1e0f74ff2533869fc54871 Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Wed, 23 Jul 2014 00:41:17 -0500 Subject: [PATCH 17/22] Tasers will now cause movement slow downs on the first hit Before: Tasers do 40 halloss damage and that drops to 39 on next life() tick so most people won't be slowed down by the first taser hit. After: If you have any halloss you will slow down some. I've set it at 1 delay for every 10 halloss, this might need adjusting (15 instead of 10 possibly) --- code/modules/mob/living/carbon/human/human_movement.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 7f468f5ebb5..337d32652c0 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -13,9 +13,11 @@ if(reagents.has_reagent("nuka_cola")) return -1 - var/health_deficiency = (100 - health + halloss) + var/health_deficiency = (100 - health) if(health_deficiency >= 40) tally += (health_deficiency / 25) + if(halloss >= 10) tally += (halloss / 10) + var/hungry = (500 - nutrition)/5 // So overeat would be 100 and default level would be 80 if (hungry >= 70) tally += hungry/50 From 2acf93215b05110f6755a192ceec8cffd7d3f24a Mon Sep 17 00:00:00 2001 From: Ccomp5950 Date: Wed, 23 Jul 2014 21:58:50 -0500 Subject: [PATCH 18/22] Added . and # prefix to language keys checks (like radios) Fixes #5748 --- code/__HELPERS/global_lists.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 63854ca1b51..0bc0cd986a6 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -104,6 +104,8 @@ var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Al for (var/language_name in all_languages) var/datum/language/L = all_languages[language_name] language_keys[":[lowertext(L.key)]"] = L + language_keys[".[lowertext(L.key)]"] = L + language_keys["#[lowertext(L.key)]"] = L var/rkey = 0 paths = typesof(/datum/species)-/datum/species @@ -128,4 +130,4 @@ var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Al for(var/t in L) . += " has: [t]\n" world << . -*/ \ No newline at end of file +*/ From f2f9a5afc42f4b47d977e3638ca39b07d53b0551 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Thu, 24 Jul 2014 15:21:57 +0930 Subject: [PATCH 19/22] Removes the flying baton of justice. --- code/game/objects/items/weapons/stunbaton.dm | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 9f439b2b376..2b853d0ae2b 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -97,26 +97,6 @@ add_fingerprint(user) -/obj/item/weapon/melee/baton/throw_impact(atom/hit_atom) - . = ..() - if (prob(50)) - if(istype(hit_atom, /mob/living)) - var/mob/living/carbon/human/H = hit_atom - if(status) - H.apply_effect(10, STUN, 0) - H.apply_effect(10, WEAKEN, 0) - H.apply_effect(10, STUTTER, 0) - charges-- - - for(var/mob/M in player_list) if(M.key == src.fingerprintslast) - foundmob = M - break - - H.visible_message("[src], thrown by [foundmob.name], strikes [H] and stuns them!") - - H.attack_log += "\[[time_stamp()]\] Stunned by thrown [src.name] last touched by ([src.fingerprintslast])" - msg_admin_attack("Flying [src.name], last touched by ([src.fingerprintslast]) stunned [key_name(H)]" ) - /obj/item/weapon/melee/baton/emp_act(severity) switch(severity) if(1) From 1b1e4bc1187f58df7d48242923a8ed79bf716c54 Mon Sep 17 00:00:00 2001 From: Loganbacca Date: Mon, 21 Jul 2014 21:40:22 +1200 Subject: [PATCH 20/22] Cargo train update - Adds sprites (thanks to Bishop) - Adds order-able train cargo crates --- code/datums/supplypacks.dm | 16 ++++++++++++++++ code/modules/vehicles/cargo_train.dm | 18 +++++++----------- icons/obj/vehicles.dmi | Bin 7183 -> 10289 bytes 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 7990329aa16..80cd56e8529 100755 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -232,6 +232,22 @@ var/list/all_supply_groups = list("Operations","Security","Hospitality","Enginee containername = "MULEbot Crate" group = "Operations" +/datum/supply_packs/cargotrain + name = "Cargo Train Tug" + contains = list(/obj/vehicle/train/cargo/engine) + cost = 30 + containertype = /obj/structure/largecrate + containername = "Cargo Train Tug Crate" + group = "Operations" + +/datum/supply_packs/cargotrailer + name = "Cargo Train Trolley" + contains = list(/obj/vehicle/train/cargo/trolley) + cost = 20 + containertype = /obj/structure/largecrate + containername = "Cargo Train Trolley Crate" + group = "Operations" + /datum/supply_packs/lisa name = "Corgi Crate" contains = list() diff --git a/code/modules/vehicles/cargo_train.dm b/code/modules/vehicles/cargo_train.dm index ba6318588ff..2b2e16e4293 100644 --- a/code/modules/vehicles/cargo_train.dm +++ b/code/modules/vehicles/cargo_train.dm @@ -1,8 +1,8 @@ /obj/vehicle/train/cargo/engine name = "cargo train tug" desc = "A ridable electric car designed for pulling cargo trolleys." - icon = 'icons/obj/aibots.dmi' - icon_state = "mulebot1" //mulebot icons until I get some proper icons + icon = 'icons/obj/vehicles.dmi' + icon_state = "cargo_engine" on = 0 powered = 1 locked = 0 @@ -10,7 +10,7 @@ standing_mob = 1 load_item_visible = 1 load_offset_x = 0 - load_offset_y = 9 + load_offset_y = 8 var/car_limit = 3 //how many cars an engine can pull before performance degrades active_engines = 1 @@ -25,8 +25,8 @@ /obj/vehicle/train/cargo/trolley name = "cargo train trolley" - icon = 'icons/obj/aibots.dmi' - icon_state = "mulebot0" + icon = 'icons/obj/vehicles.dmi' + icon_state = "cargo_trailer" anchored = 0 passenger_allowed = 0 locked = 0 @@ -34,7 +34,7 @@ standing_mob = 1 load_item_visible = 1 load_offset_x = 0 - load_offset_y = 9 + load_offset_y = 5 //------------------------------------------- // Standard procs @@ -76,14 +76,10 @@ /obj/vehicle/train/cargo/update_icon() if(open) - icon_state = "mulebot-hatch" + icon_state = initial(icon_state) + "_open" else icon_state = initial(icon_state) -/obj/vehicle/train/cargo/engine/Emag(mob/user as mob) - ..() - flick("mulebot-emagged", src) - /obj/vehicle/train/cargo/trolley/insert_cell(var/obj/item/weapon/cell/C, var/mob/living/carbon/human/H) return diff --git a/icons/obj/vehicles.dmi b/icons/obj/vehicles.dmi index 699a37298359c7275f214f65755bc33340922cd8..de24172c3a92762c17da8ab9a134c5fa2a056ef2 100644 GIT binary patch literal 10289 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 literal 7183 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 Date: Mon, 21 Jul 2014 21:41:09 +1200 Subject: [PATCH 21/22] Cargo trains - Adds a cargo train to cargo at round start --- maps/tgstation2.dmm | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index bbe643d68cb..5f7f2fcdd86 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -5390,7 +5390,7 @@ "bZH" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{tag = "icon-intact (SOUTHEAST)"; icon_state = "intact"; dir = 6},/turf/simulated/floor/plating,/area/engine/engine_room) "bZI" = (/turf/simulated/wall,/area/engine/drone_fabrication) "bZJ" = (/obj/structure/sign/biohazard,/turf/simulated/wall/r_wall,/area/medical/virology) -"bZK" = (/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/turf/simulated/floor,/area/engine/hallway) +"bZK" = (/obj/vehicle/train/cargo/trolley,/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) "bZL" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/turf/simulated/floor/plating{icon_state = "platebotc"; nitrogen = 0.01; oxygen = 0.01},/area/engine/engine_room) "bZM" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Genetics Research"; req_access_txt = "9"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bZN" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/medical/research{name = "Research Division"}) @@ -5561,9 +5561,9 @@ "ccW" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/atmos) "ccX" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/atmos) "ccY" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/turf/simulated/floor{dir = 1; icon_state = "whitered"},/area/medical/virology) -"ccZ" = (/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/turf/simulated/floor,/area/engine/hallway) +"ccZ" = (/obj/vehicle/train/cargo/engine,/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) "cda" = (/turf/simulated/wall/r_wall,/area/turret_protected/ai_cyborg_station) -"cdb" = (/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engine/hallway) +"cdb" = (/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/turf/simulated/floor,/area/engine/hallway) "cdc" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/wall/r_wall,/area/rnd/xenobiology) "cdd" = (/turf/simulated/wall/r_wall,/area/engine/hallway) "cde" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/atmos) @@ -6057,7 +6057,7 @@ "cmy" = (/obj/machinery/light{dir = 1},/obj/machinery/computer/centrifuge,/obj/item/weapon/storage/secure/safe{pixel_x = 5; pixel_y = 29},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cmz" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 26},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cmA" = (/obj/structure/disposalpipe/segment,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/construction) -"cmB" = (/obj/machinery/door/airlock/engineering{name = "Engineering Washroom"; req_one_access_txt = "10;24"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"},/area/crew_quarters/sleep/engi) +"cmB" = (/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/turf/simulated/floor,/area/engine/hallway) "cmC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/aft) "cmD" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "xenobio2"; name = "Containment Blast Doors"; opacity = 0},/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"; name = "Containment Pen"; req_access_txt = "55"},/turf/simulated/floor/engine,/area/rnd/xenobiology) "cmE" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen"; req_access_txt = "55"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/rnd/xenobiology) @@ -6263,7 +6263,7 @@ "cqw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/hallway/primary/aft) "cqx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/effect/landmark/start{name = "Cyborg"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_cyborg_station) "cqy" = (/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = 28},/turf/simulated/floor,/area/construction) -"cqz" = (/obj/machinery/door/window/eastright{name = "Engineering Reception Desk"; req_one_access_txt = "10;24"},/obj/machinery/light,/turf/simulated/floor,/area/hallway/primary/aft) +"cqz" = (/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engine/hallway) "cqA" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{tag = "icon-intact-f (EAST)"; icon_state = "intact-f"; dir = 4},/turf/simulated/floor,/area/hallway/primary/aft) "cqB" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{tag = "icon-intact-f (EAST)"; icon_state = "intact-f"; dir = 4},/obj/machinery/requests_console{announcementConsole = 0; department = "Engineering"; departmentType = 4; name = "Engineering RC"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor,/area/hallway/primary/aft) "cqC" = (/obj/structure/closet/secure_closet/atmos_personal,/obj/item/weapon/tank/emergency_oxygen/engi,/turf/simulated/floor,/area/engine/locker_room) @@ -6361,9 +6361,9 @@ "csq" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "csr" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "medbayquar"; name = "Medbay Emergency Quarantine Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/reception) "css" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "medbayquar"; name = "Medbay Emergency Quarantine Shutters"; opacity = 0},/turf/simulated/floor{dir = 5; icon_state = "whiteblue"},/area/medical/reception) -"cst" = (/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/turf/simulated/floor,/area/engine/hallway) -"csu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/turf/simulated/floor,/area/engine/hallway) -"csv" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/turf/simulated/floor,/area/engine/hallway) +"cst" = (/obj/machinery/door/airlock/engineering{name = "Engineering Washroom"; req_one_access_txt = "10;24"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 4; icon_state = "whiteyellowfull"},/area/crew_quarters/sleep/engi) +"csu" = (/obj/machinery/door/window/eastright{name = "Engineering Reception Desk"; req_one_access_txt = "10;24"},/obj/machinery/light,/turf/simulated/floor,/area/hallway/primary/aft) +"csv" = (/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/turf/simulated/floor,/area/engine/hallway) "csw" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/engine/workshop) "csx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Workshop"; req_access_txt = "11"},/turf/simulated/floor,/area/engine/workshop) "csy" = (/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Workshop"; req_access_txt = "11"},/turf/simulated/floor,/area/engine/workshop) @@ -8604,7 +8604,7 @@ "djx" = (/obj/item/clothing/head/bearpelt,/obj/item/xenos_claw,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) "djy" = (/obj/item/clothing/head/bowler,/obj/item/weapon/broken_bottle,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) "djz" = (/obj/structure/rack,/obj/item/clothing/tie/storage/black_vest,/obj/item/clothing/suit/space/vox/pressure,/obj/item/clothing/head/helmet/space/vox/pressure,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) -"djA" = (/obj/structure/rack,/obj/item/weapon/gun/launcher/spikethrower,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) +"djA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/turf/simulated/floor,/area/engine/hallway) "djB" = (/obj/structure/rack,/obj/item/clothing/tie/storage/black_vest,/obj/item/clothing/suit/space/vox/stealth,/obj/item/clothing/head/helmet/space/vox/stealth,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) "djC" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/turret_protected/tcomfoyer) "djD" = (/obj/structure/stool/bed/chair{dir = 4},/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) @@ -8643,7 +8643,7 @@ "dkk" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) "dkl" = (/obj/machinery/portable_atmospherics/canister/phoron,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) "dkm" = (/obj/structure/shuttle/engine/heater,/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) -"dkn" = (/obj/structure/rack,/obj/item/weapon/gun/launcher/pneumatic,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/tank/nitrogen,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) +"dkn" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/glass_engineering{name = "Engineering Hallway"; req_one_access_txt = "10;24"},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.4; name = "Engineering Firelock"},/turf/simulated/floor,/area/engine/hallway) "dko" = (/obj/structure/rack,/obj/item/clothing/tie/storage/black_vest,/obj/item/clothing/suit/space/vox/medic,/obj/item/clothing/head/helmet/space/vox/medic,/obj/item/clothing/mask/breath,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) "dkp" = (/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) "dkq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{id = "skipjack"; name = "Skipjack Blast Shielding"},/turf/simulated/shuttle/plating/vox,/area/shuttle/vox/station) @@ -9695,11 +9695,13 @@ "dEw" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/mine/explored) "dEx" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/turf/space,/area) "dEy" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor,/area/research_outpost/gearstore) +"dEz" = (/obj/structure/rack,/obj/item/weapon/gun/launcher/spikethrower,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) "dEA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/research_outpost/maintstore1) "dEB" = (/obj/machinery/hydroponics/soil,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/grass,/area/research_outpost/maintstore1) "dEC" = (/turf/simulated/floor,/area/research_outpost/gearstore) "dED" = (/obj/machinery/recharge_station,/turf/simulated/floor,/area/research_outpost/gearstore) "dEE" = (/obj/machinery/mineral/unloading_machine,/turf/simulated/floor{icon_state = "floorgrime"},/area/research_outpost/tempstorage) +"dEF" = (/obj/structure/rack,/obj/item/weapon/gun/launcher/pneumatic,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/harpoon,/obj/item/weapon/tank/nitrogen,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox/station) "dEG" = (/obj/machinery/conveyor{dir = 2; id = "anotempload"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) "dEI" = (/obj/machinery/conveyor{dir = 1; id = "anosample"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) "dEJ" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor/plating,/area/research_outpost/maint) @@ -10894,7 +10896,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabmQcOfcNOcOocOncOwcOwcOxcOGaxTbePbmSbmTbkZbmUbePbePbePaPBbmVbmWbmXbmYbmXbmXbmXbmYbmXaPBaPBbalbalbalcFHbalblpblpblpblpblpblpblpblpbnbbVobndbcSbWebWdbWdbWdbWabWcbVYbVcbVgbWibWncrRbWfbWfbWhbWgbWqbWpbVsbWrbWobnxbnybnzbnAbnBbnCbnzbnDbnxbPVbTybnFbnGbnFbaDbaDbaDbWAbaDdUZaIObDbcgQcqOcgPdVadVbbWBbgUdUSdUTdUXdUYdUVdUWdVndVmdVldVkcmTdVpdUEdVodVfdVedVddVccONdVidVhdVgdVidVqbUedVrdVsdTXbnYdTYboabobbocbodboebofbofbogbkCbohbhlbWvbojbokbNtbVZbVAbVzbUJbVVbVXbNtbmPbkSborbhgaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaabmQcLFcIHcInaxSaxSaxSbosaxSaxSbePbotboubovbkZbePaaaaaaaaaaafaafbowbowbowbowbowbowbowaaaaaaboxboybozdzaboBblpblpblpblpblpblpblpblpbUNbjzbUOdYAboEboFbarbarbVGbVHbaraUnboHboIbVEaUnboLboMboMbNsboMbVFbUGboMabLboQboRbnzboSbnBboSbnzboTboQbPVbVkboVbfuboWbVybVBbVDbUFbnFdzjaIObvUbgUbWmcqndUQdURdUNbixdUOdUPdUJdUKdULbVWdUGdUFdUIdUHcmTckbdUEdUDdUAckbdUCdUBdUydUxdUzdUzdUvdUwbktcggbiSdUubkxbkxboabpybpzbpAbpBbpCbpCbpDbpEbpFbhlbpGbojbpHbNtbUYbUTbUPbUJbNHbUIbNtbkRbkSbpMbhgaaaaaaaaaaaaaafbpNbpObMebpObMebpObpQaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHGaxRcHMcHMbpRaTPbpSazQasSbpTbpSbePbpUbpVbpWbpXbePaaaaaaaaaaaaaaabowbowbowbowbowbowbowaaaaaabpYbpZblpdzKbqbbqbbqbbqbbqbbqcbqbbqbbqbbqdbqebqfbUHbqhbqibarbqjbPhbqkbqlbtfbffbqnbqoaUnaUnboMbqpbVdbqrbXdbTuboMbTwbVfbVhbqxbqybqzbqybqAbVibVjbTxbVkbqEbfubqFbaDbqGbnFbTIbnFdzVaIOcHTbgUdUjdUkdUhdUidUgbixdUedUfdUcdUddUadUbbZzdUsdUrdUqdUpbPZdUodUnbPZbPZbPZbPZdUmdUlbPZbPZbktdTZbktcggbiSdTXbnYdTYbrabrbbrcbrdbrebrebrebpDbkCbrfbrgbrhbkJbVlbNtbUEbUAbUzbUDbNHbUvbNtbUwbmrbhgbhgaaaaaaaaaaaaaafbrobrpbrqbrrbrrbrsbroaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbrubrvbrwbrxblpbnablpbrybrybrybryboAblpblpblpbnbbqgbqTbrzboZbrCbrDbrEbPhbcSbrFbRgbffbqnbrHbrIbrJbNNbrLbPPbrNbPObNMboMaafbrQbrRbnzbqybrSbqybnzbrTbrUbPVbPWbrWbrXbrYbaDbrZbnFbOlaUnbpcbNycfEbNzbNAbNCbNDbPKbIibixbPMbPQbLDbPRbPubPSbLDbLDbPYbPUbPZbPZbQxbQpbQFbIrbQIbQHbQSbQJbQVbPZbJqbRabQWbQXbRfbRhbRbbRbbPGbsEbkBbsFbrebrebrebsGbkCbsHbrhbsIbsIbPHbrhbNEbNKbNJbNIbNHbNLbNtbmPbsPbhgaaaaaaaaaaaaaaaaafbsQbsRbrqbrrbrqcfLbMeaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbrubrvbrwbrxblpbnablpbZKbZKbZKccZboAblpblpblpbnbbqgbqTbrzboZbrCbrDbrEbPhbcSbrFbRgbffbqnbrHbrIbrJbNNbrLbPPbrNbPObNMboMaafbrQbrRbnzbqybrSbqybnzbrTbrUbPVbPWbrWbrXbrYbaDbrZbnFbOlaUnbpcbNycfEbNzbNAbNCbNDbPKbIibixbPMbPQbLDbPRbPubPSbLDbLDbPYbPUbPZbPZbQxbQpbQFbIrbQIbQHbQSbQJbQVbPZbJqbRabQWbQXbRfbRhbRbbRbbPGbsEbkBbsFbrebrebrebsGbkCbsHbrhbsIbsIbPHbrhbNEbNKbNJbNIbNHbNLbNtbmPbsPbhgaaaaaaaaaaaaaaaaafbsQbsRbrqbrrbrqcfLbMeaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowcfDbsUcfDbsVbsWblpblpblpblpblpblpboAblpbsXbalbalbsYbcSbndboCbtabtbbtcbPhbcSbcSbtdaIObqnbtebtfbtgbPrbtibtjbtkbPqbNxboMaafbrUbrUbIgbtobtpbnzbtqbOvbNgbPpbNqbtvbtvbtvbtvbtvbtvbXJawGbLTaHfaHfawGbMcbMmbLUcfbbPfbixcfdbOYbPubPvbPsbPtbOibOhcdQbNUbOybOubOkbOjbOCbOBbOAbOzceFbOFbOEbODbNubPAbPAboDbPCbPDbPDbPDbtZbHWbkBbubbkCbkCbucbPgbkCbuebkIcffbugbORbkIbMtbMCbMvcfhbHFbrhbNtbuobhgbhgbupbuqbuqbuqburbkIbrobrrbrqbrrbrrcfjbroaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaeaaaaaaaaabowbowbowbowbowbowbowcdKbutcdKbuublpblpblpbrybrybrybryboAblpbuvbuwbalbuxbcSbndboCbuybuzbtcbOxbuBbqfbuCbuDbuEbpcbuFbtgbuGbuHbuIbuJbOmdAeboMbOpbOobNBbOnbuRbrSbuRbOvcdpcdacdabNqbuUbuVbuWbuXbuYbuZbMkawGbvcaIOaIOawGbLSbMnbMrbMBbMSbMTbMUbnebMLbMPbZGbMRbNabMZbwubNbbApbHvbMYbMWbNlbNkbNGbNobNfbNebNibNhbMjbMlbMhbMibiSbvybvzbMgbvBbvBbkBbvCbvDbvEbkBbNVbkCbvGbYubvIbvJbOebvLbvMbOfbvObvPbvQbsIbkJbYPbYBcbncbpcbZbvVbvVccabvWbvXbpObMeccRbMebpObvZaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtbrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabowbowbowbowbowbowbowbwabrvbwbbXSblpblpblpblpblpblpblpboAblpbuvbwdbalbwebegbndbncbqfbwgbqfbNFbcSbrFbRdbffaIObpcbuFbtgboMbwibwjbwkbwlbMdboMbwpbwnbHhbzzbNgbNjbNmbUSbUZbVebXubNqbGCbwybwzbwAbwBbwBbnTbUcbambdDaIRbgUbSkbLRbLNbLPbeZbixbLYbLZbLDbLXcbObLWbFNbLDbLAbLzbDcbDcbDcbDcbDcbHfbIIbHfbAqbLJbLGbAqbAqbAqbAqbLybiSbiSbkIbkIbkIbxbbkBbkBbkBbkBbkBbMMbxebxfbxgbxhbxibMobRJbMpbMqbojbojbxnbxobxpbSibSebStbSKbMpbSrbMpbTobkIbupbuqburbTGbkIbTOaaaaafaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10919,12 +10921,12 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbsBbsBbsKbsMbsLbthbtlbsNbsOccgbqvbqsbqubqCbqDbqwbyobyTbqQbqIbqKbqVbqUbeYbqSbstbrMbrGbribsdbsebsdbsvbsubsjbjpbshbfNbkjbqZbqYbqWbqRbqXbqWbwcbqLbqPbqNbpxbppbqJbqJbsmbiDbsnbsobsibwUbhebqqbqtbiKbsfbsgbiGbrObrVbsbbiGbssbidbvKboNbrkbrkbsaboJboGboibnRbnKbwQbwwbyUbAZbypbxrbykbxtbyjbxrbxsbZPbOwcdqbvYbvYbvYbvYcoTbOwcdqbvYbvYbAEbnkbnmbnlbWWbvSbWYbWZbXabXabXabXabXabXabXabXabXabXabXabXabXabXabXabXabpKbpLbpLbpPbjBbjBbjSbjSbqmbjSbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabSFbSFbSFbSFbSFbSFbSFbuibujccgccgccgccgccgbukbuAbuKbuKbuKbuMbuNbYpbjqbjxbtsbjybttbtxbtubtEbtCbtGbfNbtVbtHbtYbtWbfNbzIbqZbzxbzsbzsbzcbtMbkObqZbzbbyZbiDbtIbtFbqJbtDbiDbtAbtBbtzbwUbhebqHbtJbiKbszbsAbiGbiGbiGbiGbiGbBPbidbidbidbfMcmHbBObGKbXObXPbXQbGKbwwbBNbBvbAJctibudbuhbFqbtUbudbAIbyYbyYbyYbAGbzJbzQbADbyYbyYbyYbyXbvYbXVbswbXXbyVbyVbyVbyVaaaaafaaaaaaaaaanmanmanmaafaaaaaaaafaaaaaaaafaafaafbtrbtwbtmbtnbtybjBbjBbjSbmLbjSbjBbjBaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbSFbSGcnjcngcnhcnQbSFdgmdgldgkdgjcrEcrCcrrcrrcrucnEcnEcnDcnFbAkbYpbjqbjxcnCbwMcnzctfcnBcnwcnxcnybfNbtVcnpcnqdTTbfNbkjbqZdZLdZOdZOdZMdZNbqZdYtdgpdZQbiDdZTdZRdZSdZHbiDdZGbtBcrVbwUbxPbtKbxQbiKdZKdZJbiKcrXbPwbiddgCbssdZVdZWbidbfMdWwdXGbGKaaaaafaaaaaabwwctuctjdgrdgqdgtdgsdgvdgudgxdgwdgzdgydgodgAdfQdfQdgBdgodgodgodgndfTbYUcoebYWbYUaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcrLbEQbEQbFgbtybtybjBbjBbjBbjBbEOaafaafaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaafaafaafbTebTebTebTebTebTebTebTebTebTebTebTebTeaaaaaacmobSGbSGbSGbSGcmAbSFdfNdfMdfLdfKcqdcpVcqccpVcpUcpTcpScpQcpOcpLcqjcqwcmCdfPbgXbgXbgXbgXbgXbgXbgXbfNbfNcmBbfNbfNbfNbkjbqZbqZdZrdZsdZtdZubqZdfUcqDcqTbiDbkdbiDbiDbiDbiDbwUdZydZzbwUcqXcqWcqXbiKbXLdZBbiKbPybPybiddZDbssbidbidbidbfMcpWcmNbGKaaaaafaaaaaedfXdfVdfWdgbdgadfZdfYdggdgfdgedgcdfQdfQdfQdfQdgidghdfQdfQdfQdfRdfSdfTcqQcmGbZVbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaafaafaafbTebTebTebTebTebTebTebTebTebTebTebTebTeaaaaaacmobSGbSGbSGbSGcmAbSFdfNdfMdfLdfKcqdcpVcqccpVcpUcpTcpScpQcpOcpLcqjcqwcmCdfPbgXbgXbgXbgXbgXbgXbgXbfNbfNcstbfNbfNbfNbkjbqZbqZdZrdZsdZtdZubqZdfUcqDcqTbiDbkdbiDbiDbiDbiDbwUdZydZzbwUcqXcqWcqXbiKbXLdZBbiKbPybPybiddZDbssbidbidbidbfMcpWcmNbGKaaaaafaaaaaedfXdfVdfWdgbdgadfZdfYdggdgfdgedgcdfQdfQdfQdfQdgidghdfQdfQdfQdfRdfSdfTcqQcmGbZVbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaabTecnScqacnSbTecnOcpYcnObTecnMcpZcnMbTeaaaaaacphbSGcpXbSGbSGcpRbSFcFVcFUcQKcFXcRqcRpcFMcFKcFRbqVbqVcFTbqVbqKcFIcFJbjxcpCcpDcpucpucpEdgZdhadgGdhbdhcdhddhedhfdgGbkjbEaeaxbMXbMXeaveaweaDeaEdLbdPueazeaAeayeaeeaeeaudXBbwUbwUbwUdhtcZLdhubiKbiKbiKbiKbPybPybiddZDbsseareasbidbfMbGKbGKbGKaaaaafaaaaaadhqdhrdhsdhldhkdhmcWQdQSdhgdhidhhdfQdfQdfQdfQdhodhndfQdhpdfQdfRdghdfTcaycqbcaAbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaabTecnScnRcnSbTecnOcnPcnObTecnMcnNcnMbTeaaaaaacphbSGbSGbSGcpicoIcoHcsOcsNcvgcuVcsWbpIcsMcsEcsmcoycoEcoDdgFbAkbYpcpdcpbcpccpgcpfcpecpfdgIcoWdgGdgHdgKdgLdgJdgHdgGbkjbEaeabbMXbOsbMXeaaeageahcCNeajeaceadeaeeafeaeeandXBciZboNcDacEycExdgYcFGboNboNboNboNcEzbidbidbidbidbidbidbfMbGKaafaafaafcbfaafaafdgRdgPdgQdgQdgQccQbudcCKcyldgTdgSdgMdgMdgMdgXdgWdgWdgVdgMdgMdgNdgOdfTcbjcpjcblbYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaabTecrgcnicrebTecrccnfcrbbTecracnccqZbTeaaaaafcphcrdbSGbSGcqqbWbbSFdPYdPVcvgcvgdPTcvgcvgcvgcvgcrzbYpcrxcrybAkbYpdRPcrlbyOcrhcricrkcridhIcrqdhKdhLdhGdhHdgGdgGdgGbkjbEadhOebrdBIebpebqebiebjdQhebhebmebnebkdBNebcdhNebadQabJNebfdQedQddhMbCTbyDbXPbXQbGKbvKboNboNboNboNboNboNciNbGKaaaaaaaaaaafaaaaaabwwdhWdhUdBXdhTbuddQidQSdQRdfTdhVbyYbyYbyYdhPcvudhQdhSbyYbyYbyYdhYdfTdhXcrNcccccdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaafaafbTecqocdMcqpbTecdWcdMcdXbTecdLcdMcdNbTeaaaaafcqrbSGbSGbSIcqqcqybSFdPAdPvcqvcqucqtcqscqAcqAdhvcqBcqAcmpcqzbAkbAkbjqcqIcqJcpDcqCcqCcqHdhBdhCdgGdhAdhydhzdhwdhxdgGbkjbEadhDeaMdCpeaOeaPbEaeaFdPDeaHdXBeaIeaJdCqeaSdhEdXBbfMbPydXFeaUeaTeaQdXFaaaaaaaaabGKbGKbGKbXObXPbXPbXQbGKbGKbGKaaaaaaaaabudbudbudbudbudbudbudbudbuddPHdPSdPPdfTdfTbZPbOwcdqdfTdfTdfTdfTcoTbOwcdqdfTdfTccSdhFccSaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachdaafaafaafaaaaafcsLaafcsLaafcdmaafcdlaafcdmaafcdlaafaafaaabSFcsKbUXcsIdbicszbQGcsBcsAbQGcsCcsDcmJcmJdTDcmJchBcsGcsFchBcsHcstcsucsvcswcaOcaOcaOcaOcsxcsycaOcjXcjXcjXcjXcjXcjXbkjbEaebRdibdCyebNebObEaeaFdTLebMdXBebKebIdCzdiaebGdXBbfMbPydXFebFebEdhZdXFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaabudcnbcmXcmYdTJdTKcdydTHcfcdTIdTFdTEdTGcrHaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaafcebceccebaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaafaafbTecqocdMcqpbTecdWcdMcdXbTecdLcdMcdNbTeaaaaafcqrbSGbSGbSIcqqcqybSFdPAdPvcqvcqucqtcqscqAcqAdhvcqBcqAcmpcsubAkbAkbjqcqIcqJcpDcqCcqCcqHdhBdhCdgGdhAdhydhzdhwdhxdgGbkjbEadhDeaMdCpeaOeaPbEaeaFdPDeaHdXBeaIeaJdCqeaSdhEdXBbfMbPydXFeaUeaTeaQdXFaaaaaaaaabGKbGKbGKbXObXPbXPbXQbGKbGKbGKaaaaaaaaabudbudbudbudbudbudbudbudbuddPHdPSdPPdfTdfTbZPbOwcdqdfTdfTdfTdfTcoTbOwcdqdfTdfTccSdhFccSaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachdaafaafaafaaaaafcsLaafcsLaafcdmaafcdlaafcdmaafcdlaafaafaaabSFcsKbUXcsIdbicszbQGcsBcsAbQGcsCcsDcmJcmJdTDcmJchBcsGcsFchBcsHcsvdjAdkncswcaOcaOcaOcaOcsxcsycaOcjXcjXcjXcjXcjXcjXbkjbEaebRdibdCyebNebObEaeaFdTLebMdXBebKebIdCzdiaebGdXBbfMbPydXFebFebEdhZdXFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaabudcnbcmXcmYdTJdTKcdydTHcfcdTIdTFdTEdTGcrHaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaafcebceccebaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaafcsgclgcshclgcshclgccWclgccUclgccWclgccUclgccVbQGbQGbQGbQGbQGbQGbQGbQGcrPcrOcrUcrTcrSdQTdQWdQVdQUchBcsadZEcrYchBcaTchwchtcaOcsdcsecsbcscchhcaPcaOdRMdRMcsfclLclLcjXbkjbEabEaebxdCJbEabEabEaebvckYebwdXBdXBdXBdDhebCdXBdXBbfMcpqdXFdYWdYcdYddXFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaafaafbudccCcoLccCdRNcmEcbWdTCcfcdRUdTAdRUbudbudaaaaaaaaaaafaafaaaaaeaaaaaaaaaaaaaafaaaceWaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcbMbSZcgtcgrcgqcgAcgGchrcgFbSZcgDcgBcgCcgAbSZcgycgzcgwcgxcgucgvceVchachgdYGcgYcgXcgZckyclWclRcmacgUcgIcgHcgKcgJchjchkchlcaOcaPcaPcaPcaPchhchicaOcoVcoVcoVclLclLcjXbkjdaTbEadXWdDidXLdXVbEadXZckYdXYdXBdYadXRdDjdYbdXBbPybfMcpqdXFcmucmtcmvdXFaaaaaaaaaaaaaaaaaabVuckZbYRceXbVuaafaaaaaaaaaaaabudccCccCccCcllclmcdyclsclNdaUclPclOclQbudaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaacfVaaaaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaafcfqcfpcfmcbDcfmcbDcfmcbDcfocbDcfmcbDcfncbkcbkcbkcflbSZbSZcfkbSZcgccbkcgbcgacfZcfTcfSckyckxckuckqcfJcfGcfFcfAcfzcducfycfxcaOcgocfvcfvcfvcftcfucaOckgcfgcfgcfgcfrcjXbkjdaLbEadXJdXKdXLdXLdXMdXNcjxdXPdXQdXRdXRdXSdXCdXBciZciNbGKbZJbVucZgbVubZJaaaaaaaafaaaaaaaaabVuceuccOccYbVuaafaafaaaaaaaaabudcfccfccfccfcckfcbWcjFcjEcjyckeckdcjWbudaaaaaaaaaaaaaaachcchcchcchdaafaafaafaafcfVaafaafaafaafaafampchcchcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10936,7 +10938,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaacbMcicbSZbSZclKckickickiclBckickickiclBckickiclDclGckiclIckiclJclhcljcliclhclnclnclnclncoPclpclocbwclAclzclxclrclbcdzccsclacldcaPcaPclccaPclecaOcqhcqhclfcqGcencjXbPybfMbTBbvhbvibVTbVSbvmbVSbvbbTBbTfbvgbGKaaaaaaaaaaaaaaaaaabVudfxdfwdfmcoGdWxdWydWzdWAdWqdWBcgidWrdWqdWpdWsbVubVubVuaaaaaabudccCcoLccCcoKcmEcbWcoFcoBcozcbUcbWcoxcfccfccfcbudaaaaaachcaaaciOciOciOciOciOaafciPaafciOciOciOciOciOaafchcaaaaaaaaaaaaaaaaaaaaaaaacmdaaaaaaaaacmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaacbMcbJcbKcbDcbIcbDcbHcbDcbGcbDcbFcbDcbEcbDcbDcbCcbBcbAcbzcbwcbvcbscbubSZcbmcbmcbqcbrcbrbWlcbhcbicbgcazcaVcaXcaYcaTcaScaUcaOcaQcaPcaRcaPcaNcaMcaOcjXcjXcjXcjXcjXcjXbPybfMbTBbyGbyIbvibYgbvibVSbyFbTBbyEbUjbGKaaaaaaaaaaaaaaaaaabVudWDdWEcaZcaZcVPdWIcVQcgTdWFbXKdWLdWMdWFbXKdWLbVuaaaaaaaaaaaabudccCccCccCccLccGcbLcbRcbScbTcbUcbWcbUcbWcbXcbWccBaafaafchcaafcjGcjHcjHcjHcjHcjIciPcjJcjKcjKcjKcjKcjLaafchcaaaaaaaaaaaaaaaaaaaaaaaacmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaafaaaaaaaaacbMbSZcctccuccvckjccJccNccPbSZccDccIccHckjbSZbSZccAccxccwcczccycchcclbSZcbrcbrcbrbSZccbbWlcbYbQGcbhccMchEcbVcaYcaTcaSccscaOccrccqccoccnccmcaPcaOcVUcVTcVTcVScVRcdVbPybfMbTBbVSbnsbnrbVSbntbnpbnobTBbnqcWmbGKaaaaaaaaaaaaaaaaaabVucsjdYFcWodWPdWQdWRdWNciFcsjbXKdWydWMdWScsRdWybVuaaaaaaaaaaaaccQbudcdcccTccTcVVcWecWicdncdocdtcdwcdrcdscdycdAcdxaaaaaachcaafckzckzckzckzckzaaaciPaafckzckzckzckzckzaaachcaaacmdaaaaaacmdaaaaaacmdcmdcmdcmdcmdcmdcmdaaaaaacmdaaaaaacmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaccXclgccUclgccWclgccUclgccWclgccUclgccWclgclgclgccUclgccWclgccVbQGbQGcdecdfcdgcdhcdibQGcdBbQGbQGbQGbQGbQGbQGcddccZbZKcdbcaOcaOcaOcaOcaOcaOcaOcaOcWpcVTcVTcWrcWqcVFbPybfMbTBbsJbsDcWtbVSdWKbYdbsybTBbSabhObGKaaaaaaaaaaaaaaaaaabVudWScsQcWscaZccKdWYdXbcaZdWZdXadWUdWTdWWdWVdWXbVuaafaafaaaaaaaaaaaaclkaaabudcWucdCcdHcdIcdGcdCcdDcdFcdGcdCcdJbudaaaaaachdaaaaafaaaaafaaaaafaaacobaaaaafaaaaafaafaafaafchcaaacmdcmdcmdcmdaaacmdcmdcmdcmdcmdcmdcmdcmdcmdaaacmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaccXclgccUclgccWclgccUclgccWclgccUclgccWclgclgclgccUclgccWclgccVbQGbQGcdecdfcdgcdhcdibQGcdBbQGbQGbQGbQGbQGbQGcddcmBcdbcqzcaOcaOcaOcaOcaOcaOcaOcaOcWpcVTcVTcWrcWqcVFbPybfMbTBbsJbsDcWtbVSdWKbYdbsybTBbSabhObGKaaaaaaaaaaaaaaaaaabVudWScsQcWscaZccKdWYdXbcaZdWZdXadWUdWTdWWdWVdWXbVuaafaafaaaaaaaaaaaaclkaaabudcWucdCcdHcdIcdGcdCcdDcdFcdGcdCcdJbudaaaaaachdaaaaafaaaaafaaaaafaaacobaaaaafaaaaafaafaafaafchcaaacmdcmdcmdcmdaaacmdcmdcmdcmdcmdcmdcmdcmdcmdaaacmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGvaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaafaafaafaaaaafcdlaafcdmaafcdlaafcdmaafcdlaafcdmaafaaaaafcdlaafcdmaafaaaaaabQGcdecdfcdvcdhcdibQGcWvcWwcdOcdPcdTcdUcdRcdScdUceHcexcepcePceLceKceoceoceocWlcWxcWxcWxcWycWxcVFbPybfMbTBbTBbVPcoicohcoibVPcojbTBbGKbXIbGKaaaaaaaaaaaaaaaaaabVudXmdXndWPcaZdXidXjcWzcaZceQceRceXceTbYXceSbYTbZJaaaaaaaaaaaaaaaaaacooaafbudcWAcficWEcfccWDcfecWCcfccWBcfscWFbudaaaaaachcaaaciOciOciOciOciOaafcfVaafciOciOciOciOciOaafchcaaacmdcmdcmdcmdaaacmdcmdcmdcmdcmdcmdcmdcmdcmdaaacmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaafaafbTecdXcdMcdWbTecdXcdMcdWbTecdNcdMcdLbTeaaabTecdNcdMcdLbTeaaaaaabQGbQGcfRcfRcfRcfRcfRcgncfRcgpceocfUcdPcgmcdPcdPcfNcfPcfOcfIcfHcWHcWGcdPcdPcWRcWPcWKcWIcWMcWLcVFbPycmHdXccmNbVPcmObYdcmPbVPcmQaafcmRcmScmRaaaaaaaaaaaaaaaaaabVudXtcghcspcWTdXqdXrdUUcbNcgOaafaaaclZaagcgLcrHaaaaaaaaaaaeaaaaaaaaaaaaaaabudcWSccCccCcfccgsccCccCcfccgsccCccCbudaafaafchcaafcjGcjHcjHcjHcjHcoQcoRcoQcjKcjKcjKcjKcjLaafchcaaacmdcmdcmdcmdaaacmdcmdcmdcmdcmdcmdcmdcmdcmdaaacmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactvctvctvctvctvctvctvctvctvctvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaabTeceicgMcejbTechDchPchJbTecekcemcelbTeaaabTecerbVqceqbTeaaaaaaaaachnbZdcgVbZpchbcgWchCdDUcrjcrjcdZcrjcgEcdYcehcegcdYcefcgEceecedceabYocgpcgpcVFcVvcWWcWVcWUcVFbGKbvKdXgdXhbVPcoicqmcoibVPcmQaafaaaaafaaaaaaaaaaaaaaaaaaaaabVudXtbYLdXzdXAdXAdVRdWydXybVuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabudcWXccCccCcfcchQccCccCcfcchQccCccCbudaaaaaachcaafckzckzckzckzckzaaacfVaaackzckzckzckzckzaaachcaaacmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdcmdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11263,9 +11265,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUscVlcVmcVmdSTcVmcVmcV aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUsdTbdTcdTccVzdTfdTgdThcVzdTddTddTecVzdTjdTicVycUsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacVcdkqdkpdksdkrdkxdkycVgdjKcVgdjKcVgdjKcVgdkvdktdkudkwdkpdkqcVcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUsdTcdTkdTbcVXdTodTndTgcVXdTmdTldTdcVXdTpcVydTqcUsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacVcdjYdkpdjkdjkdjkdjkcVgdjkdjkdjkdjkdjkcVgdjkdjkdkzdjkdkpdjYcVcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUscUscUscUscUscUscUscUscUscUscUscUscUscUscUscUscUsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacVbcVgdkcdkldkkdkidkjcVgdkhdjkdjkdjkdkgcVgdkfdkddkedkbdkccVgcVdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacWJcVgdkmdkmcVgcVgcVgcVgdkodjkdjkdjkdkncVgcVgcVgcVgdkmdkmcVgcWNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacWJcWOcWOcWNaaaaaacVgdjzdjkdjkdjkdjAcVgaaaaaacWJcWOcWOcWNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacVgdjBdjkdjkdjkdjAcVgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacWJcVgdkmdkmcVgcVgcVgcVgdkodjkdjkdjkdEFcVgcVgcVgcVgdkmdkmcVgcWNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacWJcWOcWOcWNaaaaaacVgdjzdjkdjkdjkdEzcVgaaaaaacWJcWOcWOcWNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacVgdjBdjkdjkdjkdEzcVgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacVgdjsdjtdjudjsdjtcVgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacVgdjydjvdjkdjwdjxcVgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacVgdjDdjGdjkdjEdjFcVgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 31fe0d5e346519c1a67d8e37e4301f8d54e4acc5 Mon Sep 17 00:00:00 2001 From: Loganbacca Date: Thu, 24 Jul 2014 20:14:58 +1200 Subject: [PATCH 22/22] Cargo train fixes - Visual tweak for mobs on trolleys - Fixed a teleportation bug when boarding trains from other trains - Fixed a runtime involving on_click code --- code/modules/vehicles/cargo_train.dm | 5 ++++- code/modules/vehicles/train.dm | 4 ++-- code/modules/vehicles/vehicle.dm | 2 ++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/code/modules/vehicles/cargo_train.dm b/code/modules/vehicles/cargo_train.dm index 2b2e16e4293..d38830e5e82 100644 --- a/code/modules/vehicles/cargo_train.dm +++ b/code/modules/vehicles/cargo_train.dm @@ -244,7 +244,10 @@ if(!istype(C,/obj/machinery) && !istype(C,/obj/structure/closet) && !istype(C,/obj/structure/largecrate) && !istype(C,/obj/structure/reagent_dispensers) && !istype(C,/obj/structure/ore_box) && !ismob(C)) return 0 - return ..() + ..() + + if(istype(load, /mob/living/carbon/human)) + load.pixel_y += 4 /obj/vehicle/train/cargo/engine/load(var/atom/movable/C) if(!ismob(C)) diff --git a/code/modules/vehicles/train.dm b/code/modules/vehicles/train.dm index faad42d1cc2..b7a6706deae 100644 --- a/code/modules/vehicles/train.dm +++ b/code/modules/vehicles/train.dm @@ -80,7 +80,7 @@ return 1 /obj/vehicle/train/MouseDrop_T(var/atom/movable/C, mob/user as mob) - if(!usr.canmove || usr.stat || usr.restrained() || !Adjacent(usr) || !user.Adjacent(C)) + if(user.buckled || user.stat || user.restrained() || !Adjacent(user) || !user.Adjacent(C)) return if(istype(C,/obj/vehicle/train)) latch(C, user) @@ -97,7 +97,7 @@ contents -= user else if(load) unload(user) //unload if loaded - else if(!load) + else if(!load && !user.buckled) load(user) //else try climbing on board else return 0 diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm index ef2ea18a5e3..b44f38122eb 100644 --- a/code/modules/vehicles/vehicle.dm +++ b/code/modules/vehicles/vehicle.dm @@ -157,6 +157,8 @@ /obj/vehicle/attack_ai(mob/user as mob) return +/obj/vehicle/proc/handle_rotation() + return //------------------------------------------- // Vehicle procs