From 3fbdc99079e877ded4bdc9ed14b8f58529c2f248 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Wed, 28 Aug 2013 03:33:04 +0100 Subject: [PATCH 01/11] Standardises logging. All attack logs now print in main logs. Added stripping and syringe logging. Added Jump commands to most attack logs. --- code/__HELPERS/logging.dm | 2 +- code/game/atoms.dm | 3 +- code/game/gamemodes/cult/ritual.dm | 4 +-- code/game/gamemodes/wizard/soulstone.dm | 4 +-- code/game/machinery/kitchen/gibber.dm | 2 +- code/game/objects/items.dm | 8 ++--- code/game/objects/items/devices/aicard.dm | 3 +- code/game/objects/items/devices/flash.dm | 4 +-- code/game/objects/items/robot/robot_items.dm | 3 +- .../objects/items/weapons/dna_injector.dm | 7 ++-- code/game/objects/items/weapons/explosives.dm | 4 +-- .../objects/items/weapons/gift_wrappaper.dm | 4 +-- .../items/weapons/grenades/chem_grenade.dm | 8 ++--- .../objects/items/weapons/grenades/grenade.dm | 4 +-- code/game/objects/items/weapons/handcuffs.dm | 4 +-- .../game/objects/items/weapons/hydroponics.dm | 4 +-- .../items/weapons/implants/implanter.dm | 3 +- code/game/objects/items/weapons/kitchen.dm | 7 ++-- .../items/weapons/storage/briefcase.dm | 3 +- code/game/objects/items/weapons/stunbaton.dm | 12 +++++-- .../objects/items/weapons/swords_axes_etc.dm | 2 +- code/game/objects/items/weapons/weaponry.dm | 2 +- code/modules/admin/admin.dm | 4 +-- code/modules/mob/living/carbon/carbon.dm | 3 +- .../living/carbon/human/human_attackhand.dm | 8 ++--- .../mob/living/carbon/human/inventory.dm | 36 +++++++++++++++++++ code/modules/mob/living/living_defense.dm | 3 +- code/modules/mob/mob_grab.dm | 4 +-- code/modules/paperwork/pen.dm | 5 ++- code/modules/projectiles/projectile.dm | 6 ++-- code/modules/reagents/dartgun.dm | 10 +++--- .../reagents/reagent_containers/dropper.dm | 15 ++++---- .../reagent_containers/food/condiment.dm | 3 +- .../reagent_containers/food/drinks.dm | 3 +- .../reagent_containers/food/drinks/bottle.dm | 2 +- .../reagent_containers/food/snacks.dm | 3 +- .../reagents/reagent_containers/glass.dm | 16 ++++----- .../reagents/reagent_containers/hypospray.dm | 5 ++- .../reagents/reagent_containers/pill.dm | 3 +- .../reagent_containers/robodropper.dm | 14 ++++---- .../reagents/reagent_containers/syringes.dm | 11 ++++-- code/modules/reagents/syringe_gun.dm | 4 +-- code/modules/recycling/disposal.dm | 9 +++-- code/modules/surgery/braincore.dm | 5 +-- 44 files changed, 145 insertions(+), 124 deletions(-) diff --git a/code/__HELPERS/logging.dm b/code/__HELPERS/logging.dm index 8a5b496328..3519417dd7 100644 --- a/code/__HELPERS/logging.dm +++ b/code/__HELPERS/logging.dm @@ -55,7 +55,7 @@ /proc/log_attack(text) if (config.log_attack) - diaryofmeanpeople << "\[[time_stamp()]]ATTACK: [text]" + diary << "\[[time_stamp()]]ATTACK: [text]" //Seperate attack logs? Why? /proc/log_adminsay(text) if (config.log_adminchat) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 784ba44c18..b8e9f1799f 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -26,7 +26,8 @@ var/mob/living/M = hit_atom M.hitby(src,speed) - log_attack("[hit_atom] ([M.ckey]) was hit by [src] thrown by ([src.fingerprintslast])") + M.attack_log += text("\[[time_stamp()]\] Has been hit with [src], last touched by [src.fingerprintslast]") + msg_admin_attack("[hit_atom] ([M.ckey]) was hit by [src] last touched by ([src.fingerprintslast]) (JMP)") else if(isobj(hit_atom)) var/obj/O = hit_atom diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index 8e3a0e0251..2d408a1a4f 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -338,10 +338,10 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology", // usr << browse(null, "window=tank") attack(mob/living/M as mob, mob/living/user as mob) + M.attack_log += text("\[[time_stamp()]\] Has had the [name] used on him by [user.name] ([user.ckey])") user.attack_log += text("\[[time_stamp()]\] Used [name] on [M.name] ([M.ckey])") - - log_attack("[user.name] ([user.ckey]) used [name] on [M.name] ([M.ckey])") + msg_admin_attack("[user.name] ([user.ckey]) used [name] on [M.name] ([M.ckey]) (JMP)") if(istype(M,/mob/dead)) M.invisibility = 0 diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index 90d48fb840..70c655ce57 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -18,10 +18,10 @@ return ..() if(istype(M, /mob/living/carbon/human/dummy)) return..() + M.attack_log += text("\[[time_stamp()]\] Has had their soul captured with [src.name] by [user.name] ([user.ckey])") user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to capture the soul of [M.name] ([M.ckey])") - - log_attack("[user.name] ([user.ckey]) used the [src.name] to capture the soul of [M.name] ([M.ckey])") + msg_admin_attack("[user.name] ([user.ckey]) used the [src.name] to capture the soul of [M.name] ([M.ckey]) (JMP)") transfer_soul("VICTIM", M, user) return diff --git a/code/game/machinery/kitchen/gibber.dm b/code/game/machinery/kitchen/gibber.dm index 0a8bde59dd..5441576b20 100644 --- a/code/game/machinery/kitchen/gibber.dm +++ b/code/game/machinery/kitchen/gibber.dm @@ -155,7 +155,7 @@ src.occupant.attack_log += "\[[time_stamp()]\] Was gibbed by [user]/[user.ckey]" //One shall not simply gib a mob unnoticed! user.attack_log += "\[[time_stamp()]\] Gibbed [src.occupant]/[src.occupant.ckey]" - log_attack("\[[time_stamp()]\] [user]/[user.ckey] gibbed [src.occupant]/[src.occupant.ckey]") + msg_admin_attack("[user.name] ([user.ckey]) gibbed [src.occupant] ([src.occupant.ckey]) (JMP)") src.occupant.death(1) src.occupant.ghostize() diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index c55684eb19..21936e52f1 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -224,10 +224,9 @@ user.lastattacked = M M.lastattacker = user - user.attack_log += "\[[time_stamp()]\] Attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(src.damtype)])" M.attack_log += "\[[time_stamp()]\] Attacked by [user.name] ([user.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(src.damtype)])" - log_attack("[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(src.damtype)])" ) - msg_admin_attack("ATTACK: [user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") //BS12 EDIT ALG + user.attack_log += "\[[time_stamp()]\] Attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(src.damtype)])" + msg_admin_attack("ATTACK: [user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(src.damtype)]) (JMP)") //BS12 EDIT ALG //spawn(1800) // this wont work right // M.lastattacker = null @@ -646,8 +645,7 @@ user.attack_log += "\[[time_stamp()]\] Attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])" M.attack_log += "\[[time_stamp()]\] Attacked by [user.name] ([user.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])" - msg_admin_attack("ATTACK: [user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") //BS12 EDIT ALG - log_attack(" [user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") + msg_admin_attack("ATTACK: [user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (JMP)") //BS12 EDIT ALG src.add_fingerprint(user) //if((CLUMSY in user.mutations) && prob(50)) diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm index 810bb7f4ef..43daf35b32 100644 --- a/code/game/objects/items/devices/aicard.dm +++ b/code/game/objects/items/devices/aicard.dm @@ -16,8 +16,7 @@ M.attack_log += text("\[[time_stamp()]\] Has been carded with [src.name] by [user.name] ([user.ckey])") user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to card [M.name] ([M.ckey])") - - log_attack("[user.name] ([user.ckey]) used the [src.name] to card [M.name] ([M.ckey])") + msg_admin_attack("[user.name] ([user.ckey]) used the [src.name] to card [M.name] ([M.ckey]) (JMP)") transfer_ai("AICORE", "AICARD", M, user) return diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index 119f056813..41565dbe63 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -34,10 +34,10 @@ /obj/item/device/flash/attack(mob/living/M as mob, mob/user as mob) if(!user || !M) return //sanity + M.attack_log += text("\[[time_stamp()]\] Has been flashed (attempt) with [src.name] by [user.name] ([user.ckey])") user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to flash [M.name] ([M.ckey])") - - log_attack("[user.name] ([user.ckey]) Used the [src.name] to flash [M.name] ([M.ckey])") + msg_admin_attack("[user.name] ([user.ckey]) Used the [src.name] to flash [M.name] ([M.ckey]) (JMP)") if(!clown_check(user)) return if(broken) diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index d6f18c57e7..8021570b22 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -12,8 +12,7 @@ attack(mob/M as mob, mob/living/silicon/robot/user as mob) M.attack_log += text("\[[time_stamp()]\] Has been attacked with [src.name] by [user.name] ([user.ckey])") user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to attack [M.name] ([M.ckey])") - - log_attack(" [user.name] ([user.ckey]) used the [src.name] to attack [M.name] ([M.ckey])") + msg_admin_attack("[user.name] ([user.ckey]) used the [src.name] to attack [M.name] ([M.ckey]) (JMP)") user.cell.charge -= 30 diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm index a58629cda9..5bf10ccd20 100644 --- a/code/game/objects/items/weapons/dna_injector.dm +++ b/code/game/objects/items/weapons/dna_injector.dm @@ -66,10 +66,10 @@ if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") user << "\red You don't have the dexterity to do this!" return + M.attack_log += text("\[[time_stamp()]\] Has been injected with [name] by [user.name] ([user.ckey])") user.attack_log += text("\[[time_stamp()]\] Used the [name] to inject [M.name] ([M.ckey])") - - log_attack("[user.name] ([user.ckey]) used the [name] to inject [M.name] ([M.ckey])") + log_attack("[user.name] ([user.ckey]) used the [name] to inject [M.name] ([M.ckey])") if (user) if (istype(M, /mob/living/carbon/human)) @@ -87,8 +87,7 @@ M.requests += O if (dnatype == "se") if (isblockon(getblock(dna, 14,3),14) && istype(M, /mob/living/carbon/human)) - message_admins("[key_name_admin(user)] injected [key_name_admin(M)] with the [name] \red(MONKEY)") - log_attack("[key_name(user)] injected [key_name(M)] with the [name] (MONKEY)") + msg_admin_attack("[key_name_admin(user)] injected [key_name_admin(M)] with the [name] \red(MONKEY) (JMP)") else // message_admins("[key_name_admin(user)] injected [key_name_admin(M)] with the [name]") log_attack("[key_name(user)] injected [key_name(M)] with the [name]") diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm index 4f35194f9d..3c4f97c130 100644 --- a/code/game/objects/items/weapons/explosives.dm +++ b/code/game/objects/items/weapons/explosives.dm @@ -13,11 +13,9 @@ user << "Planting explosives..." if(ismob(target)) user.attack_log += "\[[time_stamp()]\] [user.real_name] tried planting [name] on [target:real_name] ([target:ckey])" - log_attack(" [user.real_name] ([user.ckey]) tried planting [name] on [target:real_name] ([target:ckey])") + msg_admin_attack("[user.real_name] ([user.ckey]) tried planting [name] on [target:real_name] ([target:ckey]) (JMP)") user.visible_message("\red [user.name] is trying to plant some kind of explosive on [target.name]!") - log_attack("ATTACK: [user.real_name] ([user.ckey]) tried planting [name] on [target:real_name] ([target:ckey])") - if(do_after(user, 50) && in_range(user, target)) user.drop_item() target = target diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm index e15ce7fc8c..afd6349707 100644 --- a/code/game/objects/items/weapons/gift_wrappaper.dm +++ b/code/game/objects/items/weapons/gift_wrappaper.dm @@ -182,10 +182,10 @@ H.client.eye = present H.loc = present + H.attack_log += text("\[[time_stamp()]\] Has been wrapped with [src.name] by [user.name] ([user.ckey])") user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to wrap [H.name] ([H.ckey])") - - log_attack("[user.name] ([user.ckey]) used the [src.name] to wrap [H.name] ([H.ckey])") + log_attack("[user.name] ([user.ckey]) used the [src.name] to wrap [H.name] ([H.ckey])") else user << "\blue You need more paper." diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 0c075c5725..f70aca0c29 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -36,9 +36,7 @@ if(stage > 1 && !active && clown_check(user)) user << "You prime \the [name]!" - log_attack("[user.name] ([user.ckey]) primed \a [src].") - log_admin("ATTACK: [user] ([user.ckey]) primed \a [src].") - message_admins("ATTACK: [user] ([user.ckey]) primed \a [src].") + msg_admin_attack("[user.name] ([user.ckey]) primed \a [src]. (JMP)") activate() add_fingerprint(user) @@ -126,9 +124,7 @@ icon_state = initial(icon_state) + "_active" if(user) - log_attack("[user.name] ([user.ckey]) primed \a [src]") - log_admin("ATTACK: [user] ([user.ckey]) primed \a [src]") - message_admins("ATTACK: [user] ([user.ckey]) primed \a [src]") + msg_admin_attack("[user.name] ([user.ckey]) primed \a [src] (JMP)") return diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm index 99466a9d2a..93f93c5e4b 100644 --- a/code/game/objects/items/weapons/grenades/grenade.dm +++ b/code/game/objects/items/weapons/grenades/grenade.dm @@ -69,9 +69,7 @@ return if(user) - log_attack("[user.name] ([user.ckey]) primed \a [src]") - log_admin("ATTACK: [user] ([user.ckey]) primed \a [src]") - message_admins("ATTACK: [user] ([user.ckey]) primed \a [src]") + msg_admin_attack("[user.name] ([user.ckey]) primed \a [src] (JMP)") icon_state = initial(icon_state) + "_active" active = 1 diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index e95338168d..80b3403a9b 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -51,10 +51,10 @@ return if (istype(C, /mob/living/carbon/human)) if(!C.handcuffed) + C.attack_log += text("\[[time_stamp()]\] Has been handcuffed (attempt) by [user.name] ([user.ckey])") user.attack_log += text("\[[time_stamp()]\] Attempted to handcuff [C.name] ([C.ckey])") - - log_attack("[user.name] ([user.ckey]) Attempted to handcuff [C.name] ([C.ckey])") + log_attack("[user.name] ([user.ckey]) Attempted to handcuff [C.name] ([C.ckey])") var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human( ) O.source = user diff --git a/code/game/objects/items/weapons/hydroponics.dm b/code/game/objects/items/weapons/hydroponics.dm index daebf114d2..b18766b09a 100644 --- a/code/game/objects/items/weapons/hydroponics.dm +++ b/code/game/objects/items/weapons/hydroponics.dm @@ -178,10 +178,10 @@ if(!..()) return if(istype(M, /mob/living)) M << "\red You are stunned by the powerful acid of the Deathnettle!" + M.attack_log += text("\[[time_stamp()]\] Had the [src.name] used on them by [user.name] ([user.ckey])") user.attack_log += text("\[[time_stamp()]\] Used the [src.name] on [M.name] ([M.ckey])") - - log_attack(" [user.name] ([user.ckey]) used the [src.name] on [M.name] ([M.ckey])") + msg_admin_attack("[user.name] ([user.ckey]) used the [src.name] on [M.name] ([M.ckey]) (JMP)") playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1) diff --git a/code/game/objects/items/weapons/implants/implanter.dm b/code/game/objects/items/weapons/implants/implanter.dm index 785997a3db..28eeaaf5b8 100644 --- a/code/game/objects/items/weapons/implants/implanter.dm +++ b/code/game/objects/items/weapons/implants/implanter.dm @@ -31,9 +31,10 @@ if(user && M && (get_turf(M) == T1) && src && src.imp) for (var/mob/O in viewers(M, null)) O.show_message("\red [M] has been implanted by [user].", 1) + M.attack_log += text("\[[time_stamp()]\] Implanted with [src.name] ([src.imp.name]) by [user.name] ([user.ckey])") user.attack_log += text("\[[time_stamp()]\] Used the [src.name] ([src.imp.name]) to implant [M.name] ([M.ckey])") - log_attack("[user.name] ([user.ckey]) implanted [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") + msg_admin_attack("[user.name] ([user.ckey]) implanted [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (JMP)") user.show_message("\red You implanted the implant into [M].") if(src.imp.implanted(M)) diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index 6fbdba918e..d70c2615aa 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -218,10 +218,10 @@ user.take_organ_damage(10) user.Paralyse(2) return + M.attack_log += text("\[[time_stamp()]\] Has been attacked with [src.name] by [user.name] ([user.ckey])") user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to attack [M.name] ([M.ckey])") - - log_attack("[user.name] ([user.ckey]) used the [src.name] to attack [M.name] ([M.ckey])") + msg_admin_attack("[user.name] ([user.ckey]) used the [src.name] to attack [M.name] ([M.ckey]) (JMP)") var/t = user:zone_sel.selecting if (t == "head") @@ -318,8 +318,7 @@ M.attack_log += text("\[[time_stamp()]\] Has been attacked with [src.name] by [user.name] ([user.ckey])") user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to attack [M.name] ([M.ckey])") - - log_attack("[user.name] ([user.ckey]) used the [src.name] to attack [M.name] ([M.ckey])") + msg_admin_attack("[user.name] ([user.ckey]) used the [src.name] to attack [M.name] ([M.ckey]) (JMP)") if(prob(15)) M.Weaken(3) diff --git a/code/game/objects/items/weapons/storage/briefcase.dm b/code/game/objects/items/weapons/storage/briefcase.dm index add0029887..6fa791782d 100644 --- a/code/game/objects/items/weapons/storage/briefcase.dm +++ b/code/game/objects/items/weapons/storage/briefcase.dm @@ -25,8 +25,7 @@ M.attack_log += text("\[[time_stamp()]\] Has been attacked with [src.name] by [user.name] ([user.ckey])") user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to attack [M.name] ([M.ckey])") - - log_attack("[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") + msg_admin_attack("[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (?)") if (M.stat < 2 && M.health < 50 && prob(90)) var/mob/H = M diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index bac563a071..5d6bd479c4 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -62,6 +62,11 @@ if(!..()) return //H.apply_effect(5, WEAKEN, 0) H.visible_message("[M] has been beaten with the [src] by [user]!") + + user.attack_log += "\[[time_stamp()]\] Beat [H.name] ([H.ckey]) with [src.name]" + H.attack_log += "\[[time_stamp()]\] Beaten by [user.name] ([user.ckey]) with [src.name]" + msg_admin_attack("[user.name] ([user.ckey]) beat [H.name] ([H.ckey]) with [src.name] (JMP)") + playsound(src.loc, "swing_hit", 50, 1, -1) else if(!status) H.visible_message("[M] has been prodded with the [src] by [user]. Luckily it was off.") @@ -80,9 +85,10 @@ else charges-- H.visible_message("[M] has been stunned with the [src] by [user]!") + user.attack_log += "\[[time_stamp()]\] Stunned [H.name] ([H.ckey]) with [src.name]" H.attack_log += "\[[time_stamp()]\] Stunned by [user.name] ([user.ckey]) with [src.name]" - log_attack("[user.name] ([user.ckey]) stunned [H.name] ([H.ckey]) with [src.name]" ) + log_attack("[user.name] ([user.ckey]) stunned [H.name] ([H.ckey]) with [src.name]") playsound(src.loc, 'sound/weapons/Egloves.ogg', 50, 1, -1) if(charges < 1) @@ -107,8 +113,8 @@ H.visible_message("[src], thrown by [foundmob.name], strikes [H] and stuns them!") - H.attack_log += "\[[time_stamp()]\] Stunned by thrown [src.name] (([src.fingerprintslast]))" - log_attack("Flying [src.name], thrown by ([src.fingerprintslast]) stunned [H.name] ([H.ckey])" ) + H.attack_log += "\[[time_stamp()]\] Stunned by thrown [src.name] last touched by ([src.fingerprintslast])" + log_attack("Flying [src.name], last touched by ([src.fingerprintslast]) stunned [H.name] ([H.ckey])" ) return return ..() diff --git a/code/game/objects/items/weapons/swords_axes_etc.dm b/code/game/objects/items/weapons/swords_axes_etc.dm index 60ea831245..4e8f0bd821 100644 --- a/code/game/objects/items/weapons/swords_axes_etc.dm +++ b/code/game/objects/items/weapons/swords_axes_etc.dm @@ -97,7 +97,7 @@ M.Weaken(5) M.attack_log += text("\[[time_stamp()]\] Has been attacked with [src.name] by [user.name] ([user.ckey])") user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to attack [M.name] ([M.ckey])") - log_attack("[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") + log_attack("[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") src.add_fingerprint(user) for(var/mob/O in viewers(M)) diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index 92e6b78d75..530246ccf7 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -39,7 +39,7 @@ log_admin("ATTACK: [user] ([user.ckey]) attacked [M] ([M.ckey]) with [src].") message_admins("ATTACK: [user] ([user.ckey]) attacked [M] ([M.ckey]) with [src].") - log_attack("[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") + msg_admin_attack("[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (JMP)") if (!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") user << "\red You don't have the dexterity to do this!" diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index bb1717a8f5..f2b02d9f29 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -12,8 +12,8 @@ var/global/floorIsLava = 0 C << msg /proc/msg_admin_attack(var/text) //Toggleable Attack Messages - var/rendered = "ADMIN LOG: [text]" - log_adminwarn(rendered) + log_attack(text) + var/rendered = "ATTACK: [text]" for(var/client/C in admins) if(R_ADMIN & C.holder.rights) if(C.prefs.toggles & CHAT_ATTACKLOGS) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 061f06fe7d..d9d6fdc070 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -371,8 +371,7 @@ M.attack_log += text("\[[time_stamp()]\] Has been thrown by [usr.name] ([usr.ckey]) from [start_T_descriptor] with the target [end_T_descriptor]") usr.attack_log += text("\[[time_stamp()]\] Has thrown [M.name] ([M.ckey]) from [start_T_descriptor] with the target [end_T_descriptor]") - - log_attack("[usr.name] ([usr.ckey]) Has thrown [M.name] ([M.ckey]) from [start_T_descriptor] with the target [end_T_descriptor]") + msg_admin_attack("[usr.name] ([usr.ckey]) has thrown [M.name] ([M.ckey]) from [start_T_descriptor] with the target [end_T_descriptor] (JMP)") if(!item) return //Grab processing has a chance of returning null diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index cb161b9d94..73f0a354c1 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -27,7 +27,7 @@ M.attack_log += text("\[[time_stamp()]\] Stungloved [src.name] ([src.ckey])") src.attack_log += text("\[[time_stamp()]\] Has been stungloved by [M.name] ([M.ckey])") - log_attack("[M.name] ([M.ckey]) stungloved [src.name] ([src.ckey])") + msg_admin_attack("[M.name] ([M.ckey]) stungloved [src.name] ([src.ckey]) (JMP)") var/armorblock = run_armor_check(M.zone_sel.selecting, "energy") apply_effects(5,5,0,0,5,0,0,armorblock) @@ -106,7 +106,7 @@ M.attack_log += text("\[[time_stamp()]\] [M.species.attack_verb]ed [src.name] ([src.ckey])") src.attack_log += text("\[[time_stamp()]\] Has been [M.species.attack_verb]ed by [M.name] ([M.ckey])") - log_attack("[M.name] ([M.ckey]) [M.species.attack_verb]ed [src.name] ([src.ckey])") + log_attack("[M.name] ([M.ckey]) [M.species.attack_verb]ed [src.name] ([src.ckey])") var/damage = rand(0, 5)//BS12 EDIT if(!damage) @@ -144,9 +144,7 @@ M.attack_log += text("\[[time_stamp()]\] Disarmed [src.name] ([src.ckey])") src.attack_log += text("\[[time_stamp()]\] Has been disarmed by [M.name] ([M.ckey])") - log_admin("ATTACK: [M.name] ([M.ckey]) disarmed [src.name] ([src.ckey])") - log_attack("[M.name] ([M.ckey]) disarmed [src.name] ([src.ckey])") - + log_attack("[M.name] ([M.ckey]) disarmed [src.name] ([src.ckey])") if(w_uniform) w_uniform.add_fingerprint(M) diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index 8e5938fffd..9c71f2efdd 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -372,60 +372,88 @@ if("dnainjector") message = "\red [source] is trying to inject [target] with the [item]!" if("mask") + target.attack_log += text("\[[time_stamp()]\] Had their mask removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) mask") if(target.wear_mask && !target.wear_mask.canremove) message = "\red [source] fails to take off \a [target.wear_mask] from [target]'s head!" return else message = "\red [source] is trying to take off \a [target.wear_mask] from [target]'s head!" if("l_hand") + target.attack_log += text("\[[time_stamp()]\] Has had their left hand item ([target.l_hand]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) left hand item ([target.l_hand])") message = "\red [source] is trying to take off \a [target.l_hand] from [target]'s left hand!" if("r_hand") + target.attack_log += text("\[[time_stamp()]\] Has had their right hand item ([target.r_hand]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) right hand item ([target.r_hand])") message = "\red [source] is trying to take off \a [target.r_hand] from [target]'s right hand!" if("gloves") + target.attack_log += text("\[[time_stamp()]\] Has had their gloves ([target.gloves]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) gloves ([target.gloves])") if(target.gloves && !target.gloves.canremove) message = "\red [source] fails to take off \a [target.gloves] from [target]'s hands!" return else message = "\red [source] is trying to take off the [target.gloves] from [target]'s hands!" if("eyes") + target.attack_log += text("\[[time_stamp()]\] Has had their eyewear ([target.glasses]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) eyewear ([target.glasses])") if(target.glasses && !target.glasses.canremove) message = "\red [source] fails to take off \a [target.glasses] from [target]'s eyes!" return else message = "\red [source] is trying to take off the [target.glasses] from [target]'s eyes!" if("ears") + target.attack_log += text("\[[time_stamp()]\] Has had their ear item ([target.ears]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) ear item ([target.ears])") if(target.ears && !target.ears.canremove) message = "\red [source] fails to take off \a [target.ears] from [target]'s ears!" return else message = "\red [source] is trying to take off the [target.ears] from [target]'s ears!" if("head") + target.attack_log += text("\[[time_stamp()]\] Has had their hat ([target.head]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) hat ([target.head])") if(target.head && !target.head.canremove) message = "\red [source] fails to take off \a [target.head] from [target]'s head!" return else message = "\red [source] is trying to take off the [target.head] from [target]'s head!" if("shoes") + target.attack_log += text("\[[time_stamp()]\] Has had their shoes ([target.shoes]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) shoes ([target.shoes])") if(target.shoes && !target.shoes.canremove) message = "\red [source] fails to take off \a [target.shoes] from [target]'s feet!" return else message = "\red [source] is trying to take off the [target.shoes] from [target]'s feet!" if("belt") + target.attack_log += text("\[[time_stamp()]\] Has had their belt item ([target.belt]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) belt item ([target.belt])") message = "\red [source] is trying to take off the [target.belt] from [target]'s belt!" if("suit") + target.attack_log += text("\[[time_stamp()]\] Has had their suit ([target.wear_suit]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) suit ([target.wear_suit])") if(target.wear_suit && !target.wear_suit.canremove) message = "\red [source] fails to take off \a [target.wear_suit] from [target]'s body!" return else message = "\red [source] is trying to take off \a [target.wear_suit] from [target]'s body!" if("back") + target.attack_log += text("\[[time_stamp()]\] Has had their back item ([target.back]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) back item ([target.back])") message = "\red [source] is trying to take off \a [target.back] from [target]'s back!" if("handcuff") + target.attack_log += text("\[[time_stamp()]\] Was unhandcuffed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to unhandcuff [target.name]'s ([target.ckey])") message = "\red [source] is trying to unhandcuff [target]!" if("legcuff") + target.attack_log += text("\[[time_stamp()]\] Was unlegcuffed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to unlegcuff [target.name]'s ([target.ckey])") message = "\red [source] is trying to unlegcuff [target]!" if("uniform") + target.attack_log += text("\[[time_stamp()]\] Has had their uniform ([target.w_uniform]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) uniform ([target.w_uniform])") for(var/obj/item/I in list(target.l_store, target.r_store)) if(I.on_found(source)) return @@ -435,8 +463,12 @@ else message = "\red [source] is trying to take off \a [target.w_uniform] from [target]'s body!" if("s_store") + target.attack_log += text("\[[time_stamp()]\] Has had their suit storage item ([target.s_store]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) suit storage item ([target.s_store])") message = "\red [source] is trying to take off \a [target.s_store] from [target]'s suit!" if("pockets") + target.attack_log += text("\[[time_stamp()]\] Has had their pockets emptied by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to empty [target.name]'s ([target.ckey]) pockets") for(var/obj/item/I in list(target.l_store, target.r_store)) if(I.on_found(source)) return @@ -447,8 +479,12 @@ target.cpr_time = 0 message = "\red [source] is trying perform CPR on [target]!" if("id") + target.attack_log += text("\[[time_stamp()]\] Has had their ID ([target.wear_id]) removed by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to remove [target.name]'s ([target.ckey]) ID ([target.wear_id])") message = "\red [source] is trying to take off [target.wear_id] from [target]'s uniform!" if("internal") + target.attack_log += text("\[[time_stamp()]\] Has had their internals toggled by [source.name] ([source.ckey])") + source.attack_log += text("\[[time_stamp()]\] Attempted to toggle [target.name]'s ([target.ckey]) internals") if (target.internal) message = "\red [source] is trying to remove [target]'s internals" else diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index b7ba0a7803..dbe8cc268e 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -80,9 +80,10 @@ var/client/assailant = directory[ckey(O.fingerprintslast)] if(assailant && assailant.mob && istype(assailant.mob,/mob)) var/mob/M = assailant.mob + src.attack_log += text("\[[time_stamp()]\] Has been hit with [O], last touched by [M.name] ([assailant.ckey])") M.attack_log += text("\[[time_stamp()]\] Hit [src.name] ([src.ckey]) with [O]") - log_attack("[src.name] ([src.ckey]) was hit by [O], last touched by [M.name] ([assailant.ckey])") + msg_admin_attack("[src.name] ([src.ckey]) was hit by [O], last touched by [M.name] ([assailant.ckey]) (JMP)") // Begin BS12 momentum-transfer code. diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index 5363c05a11..d716e537e6 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -211,7 +211,7 @@ affecting.loc = assailant.loc affecting.attack_log += text("\[[time_stamp()]\] Has had their neck grabbed by [assailant.name] ([assailant.ckey])") assailant.attack_log += text("\[[time_stamp()]\] Grabbed the neck of [affecting.name] ([affecting.ckey])") - log_attack("[assailant.name] ([assailant.ckey]) grabbed the neck of [affecting.name] ([affecting.ckey])") + msg_admin_attack("[assailant.name] ([assailant.ckey]) grabbed the neck of [affecting.name] ([affecting.ckey]) (JMP)") hud1.icon_state = "disarm/kill" hud1.name = "disarm/kill" else @@ -233,7 +233,7 @@ assailant.visible_message("\red [assailant] has tightened \his grip on [affecting]'s neck!") affecting.attack_log += text("\[[time_stamp()]\] Has been strangled (kill intent) by [assailant.name] ([assailant.ckey])") assailant.attack_log += text("\[[time_stamp()]\] Strangled (kill intent) [affecting.name] ([affecting.ckey])") - log_attack("[assailant.name] ([assailant.ckey]) Strangled (kill intent) [affecting.name] ([affecting.ckey])") + msg_admin_attack("[assailant.name] ([assailant.ckey]) Strangled (kill intent) [affecting.name] ([affecting.ckey]) (JMP)") assailant.next_move = world.time + 10 affecting.losebreath += 1 diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 43eb2e40e2..2548c764ec 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -46,11 +46,10 @@ if(!ismob(M)) return user << "You stab [M] with the pen." - M << "\red You feel a tiny prick!" +// M << "\red You feel a tiny prick!" //That's a whole lot of meta! M.attack_log += text("\[[time_stamp()]\] Has been stabbed with [name] by [user.name] ([user.ckey])") user.attack_log += text("\[[time_stamp()]\] Used the [name] to stab [M.name] ([M.ckey])") - - log_attack("[user.name] ([user.ckey]) Used the [name] to stab [M.name] ([M.ckey])") + msg_admin_attack("[user.name] ([user.ckey]) Used the [name] to stab [M.name] ([M.ckey]) (JMP)") return diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 8f2ea173cf..083e10cb5f 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -107,12 +107,10 @@ if(istype(firer, /mob)) M.attack_log += "\[[time_stamp()]\] [firer]/[firer.ckey] shot [M]/[M.ckey] with a [src.type]" firer.attack_log += "\[[time_stamp()]\] [firer]/[firer.ckey] shot [M]/[M.ckey] with a [src.type]" - log_attack("[firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src.type]") - msg_admin_attack("ATTACK: [firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src]") //BS12 EDIT ALG + msg_admin_attack("[firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src] (JMP)") //BS12 EDIT ALG else M.attack_log += "\[[time_stamp()]\] UNKNOWN SUBJECT (No longer exists) shot [M]/[M.ckey] with a [src]" - log_attack("UNKNOWN shot [M] ([M.ckey]) with a [src.type]") - msg_admin_attack("ATTACK: UNKNOWN shot [M] ([M.ckey]) with a [src]") //BS12 EDIT ALG + msg_admin_attack("ATTACK: UNKNOWN shot [M] ([M.ckey]) with a [src] (JMP)") //BS12 EDIT ALG spawn(0) diff --git a/code/modules/reagents/dartgun.dm b/code/modules/reagents/dartgun.dm index e89792c62c..33e29dc809 100644 --- a/code/modules/reagents/dartgun.dm +++ b/code/modules/reagents/dartgun.dm @@ -177,13 +177,13 @@ R += A.id + " (" R += num2text(A.volume) + ")," if (istype(M, /mob)) - M.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] shot [M]/[M.ckey] with a syringegun ([R])" - user.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] shot [M]/[M.ckey] with a syringegun ([R])" - log_attack("[user] ([user.ckey]) shot [M] ([M.ckey]) with a syringegun ([R])") + M.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] shot [M]/[M.ckey] with a dartgun ([R])" + user.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] shot [M]/[M.ckey] with a dartgun ([R])" + msg_admin_attack("[user] ([user.ckey]) shot [M] ([M.ckey]) with a dartgun ([R]) (JMP)") else - M.attack_log += "\[[time_stamp()]\] UNKNOWN SUBJECT (No longer exists) shot [M]/[M.ckey] with a syringegun ([R])" - log_attack("UNKNOWN shot [M] ([M.ckey]) with a syringegun ([R])") + M.attack_log += "\[[time_stamp()]\] UNKNOWN SUBJECT (No longer exists) shot [M]/[M.ckey] with a dartgun ([R])" + msg_admin_attack("UNKNOWN shot [M] ([M.ckey]) with a dartgun ([R]) (JMP)") if(D.reagents) D.reagents.trans_to(M, 15) diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm index 22ea087b13..7455e8118b 100644 --- a/code/modules/reagents/reagent_containers/dropper.dm +++ b/code/modules/reagents/reagent_containers/dropper.dm @@ -63,15 +63,12 @@ for(var/mob/O in viewers(world.view, user)) O.show_message(text("\red [] squirts something into []'s eyes!", user, target), 1) src.reagents.reaction(target, TOUCH) - var/mob/M = target - var/R - if(src.reagents) - for(var/datum/reagent/A in src.reagents.reagent_list) - R += A.id + " (" - R += num2text(A.volume) + ")," - user.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] squirted [M]/[M.ckey] with ([R])" - M.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] squirted [M]/[M.ckey] with ([R])" - log_attack("\[[time_stamp()]\] [user]/[user.ckey] squirted [M]/[M.ckey] with ([R])") + + var/mob/living/M = target + var/contained = english_list(src.reagents) + M.attack_log += text("\[[time_stamp()]\] Has been squirted ([contained]) with [src.name] by [user.name] ([user.ckey])") + user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to squirt [M.name] ([M.key]) with [contained]") + msg_admin_attack("[user.name] ([user.ckey]) squirted [M.name] ([M.key]) with [src.name], which had [contained] (INTENT: [uppertext(user.a_intent)]) (JMP)") trans = src.reagents.trans_to(target, amount_per_transfer_from_this) user << "\blue You transfer [trans] units of the solution." diff --git a/code/modules/reagents/reagent_containers/food/condiment.dm b/code/modules/reagents/reagent_containers/food/condiment.dm index e360062fec..9d16f0b356 100644 --- a/code/modules/reagents/reagent_containers/food/condiment.dm +++ b/code/modules/reagents/reagent_containers/food/condiment.dm @@ -45,8 +45,7 @@ M.attack_log += text("\[[time_stamp()]\] Has been fed [src.name] by [user.name] ([user.ckey]) Reagents: [reagentlist(src)]") user.attack_log += text("\[[time_stamp()]\] Fed [src.name] by [M.name] ([M.ckey]) Reagents: [reagentlist(src)]") - - log_attack("[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") + msg_admin_attack("ATTACK: [user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (JMP)") if(reagents.total_volume) reagents.reaction(M, INGEST) diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index dfa67cdef2..66a1b3e343 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -45,8 +45,7 @@ M.attack_log += text("\[[time_stamp()]\] Has been fed [src.name] by [user.name] ([user.ckey]) Reagents: [reagentlist(src)]") user.attack_log += text("\[[time_stamp()]\] Fed [M.name] by [M.name] ([M.ckey]) Reagents: [reagentlist(src)]") - - log_attack("[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") + log_attack("[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] Reagents: [reagentlist(src)] (INTENT: [uppertext(user.a_intent)]) (JMP)") if(reagents.total_volume) reagents.reaction(M, INGEST) diff --git a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm index 36016e92c1..c958b351fa 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/bottle.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/bottle.dm @@ -99,7 +99,7 @@ //Attack logs user.attack_log += text("\[[time_stamp()]\] Has attacked [target.name] ([target.ckey]) with a bottle!") target.attack_log += text("\[[time_stamp()]\] Has been smashed with a bottle by [user.name] ([user.ckey])") - log_attack("[user.name] ([user.ckey]) attacked [target.name] with a bottle. ([target.ckey])") + msg_admin_attack("[user.name] ([user.ckey]) attacked [target.name] ([target.ckey]) with a bottle. (INTENT: [uppertext(user.a_intent)]) (JMP)") //The reagents in the bottle splash all over the target, thanks for the idea Nodrak if(src.reagents) diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index f15c341094..664a436344 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -66,8 +66,7 @@ M.attack_log += text("\[[time_stamp()]\] Has been fed [src.name] by [user.name] ([user.ckey]) Reagents: [reagentlist(src)]") user.attack_log += text("\[[time_stamp()]\] Fed [src.name] by [M.name] ([M.ckey]) Reagents: [reagentlist(src)]") - - log_attack("[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") + log_attack("[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] Reagents: [reagentlist(src)] (INTENT: [uppertext(user.a_intent)])") for(var/mob/O in viewers(world.view, user)) O.show_message("\red [user] feeds [M] [src].", 1) diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 9c8b004c47..79c64304d5 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -72,16 +72,14 @@ return if(ismob(target) && target.reagents && reagents.total_volume) - var/mob/M = target user << "\blue You splash the solution onto [target]." - var/R - if(src.reagents) - for(var/datum/reagent/A in src.reagents.reagent_list) - R += A.id + " (" - R += num2text(A.volume) + ")," - user.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] splashed [M]/[M.ckey] with ([R])" - M.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] splashed [M]/[M.ckey] with ([R])" - log_attack("\[[time_stamp()]\] [user]/[user.ckey] splashed [M]/[M.ckey] with ([R])") + + var/mob/living/M = target + var/contained = english_list(src.reagents) + M.attack_log += text("\[[time_stamp()]\] Has been splashed ([contained]) with [src.name] by [user.name] ([user.ckey])") + user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to splash [M.name] ([M.key]) with [contained]") + msg_admin_attack("[user.name] ([user.ckey]) splashed [M.name] ([M.key]) with [src.name], which had [contained] (INTENT: [uppertext(user.a_intent)]) (JMP)") + for(var/mob/O in viewers(world.view, user)) O.show_message(text("\red [] has been splashed with something by []!", target, user), 1) src.reagents.reaction(target, TOUCH) diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 0b4a3c1e7e..bdecdece51 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -44,10 +44,9 @@ user << "\blue [trans] units injected. [reagents.total_volume] units remaining in [src]." var/contained = english_list(injected) - - log_attack("[user.name] ([user.ckey]) injected [M.name] ([M.ckey]) with [src.name], which had [contained] (INTENT: [uppertext(user.a_intent)])") M.attack_log += text("\[[time_stamp()]\] Has been injected ([contained]) with [src.name] by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to inject [M.name] ([M.ckey]) with [contained]") + user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to inject [M.name] ([M.key]) with [contained]") + msg_admin_attack("[user.name] ([user.ckey]) injected [M.name] ([M.key]) with [src.name], which had [contained] (INTENT: [uppertext(user.a_intent)]) (JMP)") return diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm index 0f89ad7348..3c4bbcdb7d 100644 --- a/code/modules/reagents/reagent_containers/pill.dm +++ b/code/modules/reagents/reagent_containers/pill.dm @@ -43,8 +43,7 @@ M.attack_log += text("\[[time_stamp()]\] Has been fed [src.name] by [user.name] ([user.ckey]) Reagents: [reagentlist(src)]") user.attack_log += text("\[[time_stamp()]\] Fed [M.name] by [M.name] ([M.ckey]) Reagents: [reagentlist(src)]") - - log_attack("[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") + msg_admin_attack("[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] Reagents: [reagentlist(src)] (INTENT: [uppertext(user.a_intent)]) (JMP)") if(reagents.total_volume) reagents.reaction(M, INGEST) diff --git a/code/modules/reagents/reagent_containers/robodropper.dm b/code/modules/reagents/reagent_containers/robodropper.dm index a42d588f4b..4b199d2011 100644 --- a/code/modules/reagents/reagent_containers/robodropper.dm +++ b/code/modules/reagents/reagent_containers/robodropper.dm @@ -61,15 +61,13 @@ for(var/mob/O in viewers(world.view, user)) O.show_message(text("\red [] squirts something into []'s eyes!", user, target), 1) src.reagents.reaction(target, TOUCH) + var/mob/M = target - var/R - if(src.reagents) - for(var/datum/reagent/A in src.reagents.reagent_list) - R += A.id + " (" - R += num2text(A.volume) + ")," - user.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] squirted [M]/[M.ckey] with ([R])" - M.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] squirted [M]/[M.ckey] with ([R])" - log_attack("\[[time_stamp()]\] [user]/[user.ckey] squirted [M]/[M.ckey] with ([R])") + var/contained = english_list(src.reagents) + M.attack_log += text("\[[time_stamp()]\] Has been squirted ([contained]) with [src.name] by [user.name] ([user.ckey])") + user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to squirt [M.name] ([M.key]) with [contained]") + msg_admin_attack("[user.name] ([user.ckey]) squirted [M.name] ([M.key]) with [src.name], which had [contained] (INTENT: [uppertext(user.a_intent)]) (JMP)") + trans = src.reagents.trans_to(target, amount_per_transfer_from_this) user << "\blue You transfer [trans] units of the solution." diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 38e9c6f688..1aba4f4934 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -145,6 +145,14 @@ for(var/mob/O in viewers(world.view, user)) O.show_message(text("\red [] injects [] with the syringe!", user, target), 1) + + if(istype(target,/mob/living)) + var/mob/living/M = target + var/contained = english_list(src.reagents) + M.attack_log += text("\[[time_stamp()]\] Has been injected ([contained]) with [src.name] by [user.name] ([user.ckey])") + user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to inject [M.name] ([M.key]) with [contained]") + msg_admin_attack("[user.name] ([user.ckey]) injected [M.name] ([M.key]) with [src.name], which had [contained] (INTENT: [uppertext(user.a_intent)]) (JMP)") + src.reagents.reaction(target, INGEST) if(ismob(target) && target == user) src.reagents.reaction(target, INGEST) @@ -197,8 +205,7 @@ user.attack_log += "\[[time_stamp()]\] Attacked [target.name] ([target.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])" target.attack_log += "\[[time_stamp()]\] Attacked by [user.name] ([user.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])" - - log_attack(" [user.name] ([user.ckey]) attacked [target.name] ([target.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])") + msg_admin_attack("ATTACK: [user.name] ([user.ckey]) attacked [target.name] ([target.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (JMP)") if(istype(target, /mob/living/carbon/human)) diff --git a/code/modules/reagents/syringe_gun.dm b/code/modules/reagents/syringe_gun.dm index eaa372bd45..2600d11676 100644 --- a/code/modules/reagents/syringe_gun.dm +++ b/code/modules/reagents/syringe_gun.dm @@ -87,11 +87,11 @@ if (istype(M, /mob)) M.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] shot [M]/[M.ckey] with a syringegun ([R])" user.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] shot [M]/[M.ckey] with a syringegun ([R])" - log_attack("[user] ([user.ckey]) shot [M] ([M.ckey]) with a syringegun ([R])") + msg_admin_attack("[user] ([user.ckey]) shot [M] ([M.ckey]) with a syringegun ([R]) (JMP)") else M.attack_log += "\[[time_stamp()]\] UNKNOWN SUBJECT (No longer exists) shot [M]/[M.ckey] with a syringegun ([R])" - log_attack("UNKNOWN shot [M] ([M.ckey]) with a syringegun ([R])") + msg_admin_attack("UNKNOWN shot [M] ([M.ckey]) with a syringegun ([R]) (JMP)") if(D.reagents) D.reagents.trans_to(M, 15) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 9f7d9f9c8e..de028bd296 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -114,7 +114,9 @@ for (var/mob/C in viewers(src)) C.show_message("\red [GM.name] has been placed in the [src] by [user].", 3) del(G) - log_attack("[usr] ([usr.ckey]) placed [GM] ([GM.ckey]) in a disposals unit.") + usr.attack_log += text("\[[time_stamp()]\] Has placed [GM.name] ([GM.ckey]) in disposals.") + GM.attack_log += text("\[[time_stamp()]\] Has been placed in disposals by [usr.name] ([usr.ckey])") + msg_admin_attack("[usr] ([usr.ckey]) placed [GM] ([GM.ckey]) in a disposals unit. (JMP)") return if(!I) return @@ -157,7 +159,10 @@ else if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis) msg = "[user.name] stuffs [target.name] into the [src]!" user << "You stuff [target.name] into the [src]!" - log_attack("[user] ([user.ckey]) placed [target] ([target.ckey]) in a disposals unit.") + + user.attack_log += text("\[[time_stamp()]\] Has placed [target.name] ([target.ckey]) in disposals.") + target.attack_log += text("\[[time_stamp()]\] Has been placed in disposals by [user.name] ([user.ckey])") + msg_admin_attack("[user] ([user.ckey]) placed [target] ([target.ckey]) in a disposals unit. (JMP)") else return if (target.client) diff --git a/code/modules/surgery/braincore.dm b/code/modules/surgery/braincore.dm index 977f90489e..f4d81d37f5 100644 --- a/code/modules/surgery/braincore.dm +++ b/code/modules/surgery/braincore.dm @@ -87,10 +87,7 @@ user.attack_log += "\[[time_stamp()]\] Debrained [target.name] ([target.ckey]) with [tool.name] (INTENT: [uppertext(user.a_intent)])" target.attack_log += "\[[time_stamp()]\] Debrained by [user.name] ([user.ckey]) with [tool.name] (INTENT: [uppertext(user.a_intent)])" - - log_admin("ATTACK: [user] ([user.ckey]) debrained [target] ([target.ckey]) with [tool].") - message_admins("ATTACK: [user] ([user.ckey]) debrained [target] ([target.ckey]) with [tool].") - log_attack("[user.name] ([user.ckey]) debrained [target.name] ([target.ckey]) with [tool.name] (INTENT: [uppertext(user.a_intent)])") + msg_admin_attack("[user.name] ([user.ckey]) debrained [target.name] ([target.ckey]) with [tool.name] (INTENT: [uppertext(user.a_intent)]) (JMP)") var/obj/item/brain/B = new(target.loc) B.transfer_identity(target) From 0cb361f737c2b2224a0e40fa7ae33a7cc157bf1a Mon Sep 17 00:00:00 2001 From: Erthilo Date: Wed, 28 Aug 2013 03:37:11 +0100 Subject: [PATCH 02/11] Removed undeeded "ATTACK:" --- code/game/objects/items.dm | 4 ++-- code/game/objects/items/weapons/explosives.dm | 2 ++ code/game/objects/items/weapons/weaponry.dm | 2 -- code/modules/organs/organ_external.dm | 3 +-- code/modules/projectiles/projectile.dm | 2 +- code/modules/reagents/reagent_containers/food/condiment.dm | 2 +- code/modules/reagents/reagent_containers/syringes.dm | 2 +- 7 files changed, 8 insertions(+), 9 deletions(-) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 21936e52f1..7bea0644e7 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -226,7 +226,7 @@ M.attack_log += "\[[time_stamp()]\] Attacked by [user.name] ([user.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(src.damtype)])" user.attack_log += "\[[time_stamp()]\] Attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(src.damtype)])" - msg_admin_attack("ATTACK: [user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(src.damtype)]) (JMP)") //BS12 EDIT ALG + msg_admin_attack("[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (DAMTYE: [uppertext(src.damtype)]) (JMP)") //BS12 EDIT ALG //spawn(1800) // this wont work right // M.lastattacker = null @@ -645,7 +645,7 @@ user.attack_log += "\[[time_stamp()]\] Attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])" M.attack_log += "\[[time_stamp()]\] Attacked by [user.name] ([user.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])" - msg_admin_attack("ATTACK: [user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (JMP)") //BS12 EDIT ALG + msg_admin_attack("[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (JMP)") //BS12 EDIT ALG src.add_fingerprint(user) //if((CLUMSY in user.mutations) && prob(50)) diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm index 3c4f97c130..d9a72058ae 100644 --- a/code/game/objects/items/weapons/explosives.dm +++ b/code/game/objects/items/weapons/explosives.dm @@ -12,8 +12,10 @@ return user << "Planting explosives..." if(ismob(target)) + user.attack_log += "\[[time_stamp()]\] [user.real_name] tried planting [name] on [target:real_name] ([target:ckey])" msg_admin_attack("[user.real_name] ([user.ckey]) tried planting [name] on [target:real_name] ([target:ckey]) (JMP)") + user.visible_message("\red [user.name] is trying to plant some kind of explosive on [target.name]!") if(do_after(user, 50) && in_range(user, target)) diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm index 530246ccf7..922d926376 100644 --- a/code/game/objects/items/weapons/weaponry.dm +++ b/code/game/objects/items/weapons/weaponry.dm @@ -37,8 +37,6 @@ M.attack_log += text("\[[time_stamp()]\] Has been attacked with [src.name] by [user.name] ([user.ckey])") user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to attack [M.name] ([M.ckey])") - log_admin("ATTACK: [user] ([user.ckey]) attacked [M] ([M.ckey]) with [src].") - message_admins("ATTACK: [user] ([user.ckey]) attacked [M] ([M.ckey]) with [src].") msg_admin_attack("[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (JMP)") if (!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index de03750000..7441ac88e1 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -884,8 +884,7 @@ obj/item/weapon/organ/head/attackby(obj/item/weapon/W as obj, mob/user as mob) user.attack_log += "\[[time_stamp()]\] Debrained [brainmob.name] ([brainmob.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])" brainmob.attack_log += "\[[time_stamp()]\] Debrained by [user.name] ([user.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])" - log_admin("ATTACK: [brainmob] ([brainmob.ckey]) debrained [user] ([user.ckey]).") - message_admins("ATTACK: [brainmob] ([brainmob.ckey]) debrained [user] ([user.ckey]).") + msg_admin_attack("[brainmob] ([brainmob.ckey]) debrained [user] ([user.ckey]) (INTENT: [uppertext(user.a_intent)]) (JMP)") var/obj/item/brain/B = new(loc) B.transfer_identity(brainmob) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 083e10cb5f..c12f900bc0 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -110,7 +110,7 @@ msg_admin_attack("[firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src] (JMP)") //BS12 EDIT ALG else M.attack_log += "\[[time_stamp()]\] UNKNOWN SUBJECT (No longer exists) shot [M]/[M.ckey] with a [src]" - msg_admin_attack("ATTACK: UNKNOWN shot [M] ([M.ckey]) with a [src] (JMP)") //BS12 EDIT ALG + msg_admin_attack("UNKNOWN shot [M] ([M.ckey]) with a [src] (JMP)") //BS12 EDIT ALG spawn(0) diff --git a/code/modules/reagents/reagent_containers/food/condiment.dm b/code/modules/reagents/reagent_containers/food/condiment.dm index 9d16f0b356..73e44a85f0 100644 --- a/code/modules/reagents/reagent_containers/food/condiment.dm +++ b/code/modules/reagents/reagent_containers/food/condiment.dm @@ -45,7 +45,7 @@ M.attack_log += text("\[[time_stamp()]\] Has been fed [src.name] by [user.name] ([user.ckey]) Reagents: [reagentlist(src)]") user.attack_log += text("\[[time_stamp()]\] Fed [src.name] by [M.name] ([M.ckey]) Reagents: [reagentlist(src)]") - msg_admin_attack("ATTACK: [user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (JMP)") + msg_admin_attack("[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (JMP)") if(reagents.total_volume) reagents.reaction(M, INGEST) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 1aba4f4934..e36037ef25 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -205,7 +205,7 @@ user.attack_log += "\[[time_stamp()]\] Attacked [target.name] ([target.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])" target.attack_log += "\[[time_stamp()]\] Attacked by [user.name] ([user.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])" - msg_admin_attack("ATTACK: [user.name] ([user.ckey]) attacked [target.name] ([target.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (JMP)") + msg_admin_attack("[user.name] ([user.ckey]) attacked [target.name] ([target.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)]) (JMP)") if(istype(target, /mob/living/carbon/human)) From 3557e12943e666e8809e58d50d17ae33782459c9 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Wed, 28 Aug 2013 12:49:23 +0100 Subject: [PATCH 03/11] Suits with shoes protect against glass shards. --- code/game/objects/items/stacks/sheets/glass.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 0169f5d894..a7e6d57bb3 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -283,7 +283,7 @@ playsound(src.loc, 'sound/effects/glass_step.ogg', 50, 1) if(ishuman(M)) var/mob/living/carbon/human/H = M - if(!H.shoes) + if(!H.shoes && !(H.wear_suit.body_parts_covered & FEET)) var/datum/organ/external/affecting = H.get_organ(pick("l_foot", "r_foot")) if(affecting.status & ORGAN_ROBOT) return From f0eecb3892cc7f7b11bf0afc011c9656b8c945ae Mon Sep 17 00:00:00 2001 From: Erthilo Date: Wed, 28 Aug 2013 13:16:30 +0100 Subject: [PATCH 04/11] Prison ID tag fix #3597 master version. --- maps/tgstation2.dmm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index 90d411b234..cbed9685bb 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -72,8 +72,8 @@ "abt" = (/obj/machinery/magnetic_module,/obj/structure/target_stake,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/range) "abu" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/security/range) "abv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plating,/area/security/prison) -"abw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{id_tag = "Prsion"; name = "Prison Wing"; req_access_txt = "2"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/prison) -"abx" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{id_tag = "Prsion"; name = "Prison Wing"; req_access_txt = "2"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/prison) +"abw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{id_tag = "Prison"; name = "Prison Wing"; req_access_txt = "2"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/prison) +"abx" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{id_tag = "Prison"; name = "Prison Wing"; req_access_txt = "2"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/prison) "aby" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/wall/r_wall,/area/security/prison) "abz" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/table,/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/security/prison) "abA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/table,/obj/item/weapon/storage/box/cups,/turf/simulated/floor{icon_state = "cafeteria"; dir = 5},/area/security/prison) From 8ee601aa9af945f8f263a02f76a10c13a690691b Mon Sep 17 00:00:00 2001 From: Erthilo Date: Wed, 28 Aug 2013 13:27:07 +0100 Subject: [PATCH 05/11] Fixes thermite runtimes. --- code/game/turfs/simulated/walls.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index f06eb81ba3..a8d7326366 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -337,10 +337,12 @@ O.density = 1 O.layer = 5 - var/turf/simulated/floor/F = ChangeTurf(/turf/simulated/floor/plating) + src.ChangeTurf(/turf/simulated/floor/plating) + + var/turf/simulated/floor/F = src F.burn_tile() F.icon_state = "wall_thermite" - user << "The thermite melts through the wall." + user << "The thermite starts melting through the wall." spawn(100) if(O) del(O) From 9fed22c056baaecd595680e732227a19da66e224 Mon Sep 17 00:00:00 2001 From: Mloc-Argent Date: Wed, 28 Aug 2013 18:49:00 +0100 Subject: [PATCH 06/11] Space no longer freezes mobs. Signed-off-by: Mloc-Argent --- code/game/turfs/space/space.dm | 2 +- code/modules/mob/living/carbon/human/life.dm | 57 ++++++++++---------- 2 files changed, 29 insertions(+), 30 deletions(-) diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index 95720295c8..4323ee0adb 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -3,7 +3,7 @@ name = "\proper space" icon_state = "0" - temperature = TCMB + temperature = T0C thermal_conductivity = OPEN_HEAT_TRANSFER_COEFFICIENT // heat_capacity = 700000 No. diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index d61cdd1cc7..f531495406 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -526,38 +526,37 @@ proc/handle_environment(datum/gas_mixture/environment) if(!environment) return - var/loc_temp = T0C - if(istype(loc, /obj/mecha)) - var/obj/mecha/M = loc - loc_temp = M.return_temperature() - else if(istype(get_turf(src), /turf/space)) - var/turf/heat_turf = get_turf(src) - loc_temp = heat_turf.temperature - else if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) - loc_temp = loc:air_contents.temperature - else - loc_temp = environment.temperature + if(!istype(get_turf(src), /turf/space)) //space is not meant to change your body temperature. + var/loc_temp = T0C + if(istype(loc, /obj/mecha)) + var/obj/mecha/M = loc + loc_temp = M.return_temperature() + else if(istype(get_turf(src), /turf/space)) + else if(istype(loc, /obj/machinery/atmospherics/unary/cryo_cell)) + loc_temp = loc:air_contents.temperature + else + loc_temp = environment.temperature - //world << "Loc temp: [loc_temp] - Body temp: [bodytemperature] - Fireloss: [getFireLoss()] - Thermal protection: [get_thermal_protection()] - Fire protection: [thermal_protection + add_fire_protection(loc_temp)] - Heat capacity: [environment_heat_capacity] - Location: [loc] - src: [src]" + //world << "Loc temp: [loc_temp] - Body temp: [bodytemperature] - Fireloss: [getFireLoss()] - Thermal protection: [get_thermal_protection()] - Fire protection: [thermal_protection + add_fire_protection(loc_temp)] - Heat capacity: [environment_heat_capacity] - Location: [loc] - src: [src]" - //Body temperature is adjusted in two steps. Firstly your body tries to stabilize itself a bit. - if(stat != 2) - stabilize_temperature_from_calories() + //Body temperature is adjusted in two steps. Firstly your body tries to stabilize itself a bit. + if(stat != 2) + stabilize_temperature_from_calories() -// log_debug("Adjusting to atmosphere.") - //After then, it reacts to the surrounding atmosphere based on your thermal protection - if(loc_temp < BODYTEMP_COLD_DAMAGE_LIMIT) //Place is colder than we are - var/thermal_protection = get_cold_protection(loc_temp) //This returns a 0 - 1 value, which corresponds to the percentage of protection based on what you're wearing and what you're exposed to. - if(thermal_protection < 1) - var/amt = min((1-thermal_protection) * ((loc_temp - bodytemperature) / BODYTEMP_COLD_DIVISOR), BODYTEMP_COOLING_MAX) -// log_debug("[loc_temp] is Cold. Cooling by [amt]") - bodytemperature += amt - else if (loc_temp > BODYTEMP_HEAT_DAMAGE_LIMIT) //Place is hotter than we are - var/thermal_protection = get_heat_protection(loc_temp) //This returns a 0 - 1 value, which corresponds to the percentage of protection based on what you're wearing and what you're exposed to. - if(thermal_protection < 1) - var/amt = min((1-thermal_protection) * ((loc_temp - bodytemperature) / BODYTEMP_HEAT_DIVISOR), BODYTEMP_HEATING_MAX) -// log_debug("[loc_temp] is Heat. Heating up by [amt]") - bodytemperature += amt + // log_debug("Adjusting to atmosphere.") + //After then, it reacts to the surrounding atmosphere based on your thermal protection + if(loc_temp < BODYTEMP_COLD_DAMAGE_LIMIT) //Place is colder than we are + var/thermal_protection = get_cold_protection(loc_temp) //This returns a 0 - 1 value, which corresponds to the percentage of protection based on what you're wearing and what you're exposed to. + if(thermal_protection < 1) + var/amt = min((1-thermal_protection) * ((loc_temp - bodytemperature) / BODYTEMP_COLD_DIVISOR), BODYTEMP_COOLING_MAX) + // log_debug("[loc_temp] is Cold. Cooling by [amt]") + bodytemperature += amt + else if (loc_temp > BODYTEMP_HEAT_DAMAGE_LIMIT) //Place is hotter than we are + var/thermal_protection = get_heat_protection(loc_temp) //This returns a 0 - 1 value, which corresponds to the percentage of protection based on what you're wearing and what you're exposed to. + if(thermal_protection < 1) + var/amt = min((1-thermal_protection) * ((loc_temp - bodytemperature) / BODYTEMP_HEAT_DIVISOR), BODYTEMP_HEATING_MAX) + // log_debug("[loc_temp] is Heat. Heating up by [amt]") + bodytemperature += amt // +/- 50 degrees from 310.15K is the 'safe' zone, where no damage is dealt. if(bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT) From 8d1fdd87b3cd04903a361e043b4d3be1aa1a62d4 Mon Sep 17 00:00:00 2001 From: Segrain Date: Thu, 29 Aug 2013 02:24:40 +0300 Subject: [PATCH 07/11] Typecheck fix. --- code/game/mecha/mecha.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 63f4151779..96789249fd 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -1574,7 +1574,7 @@ return if(href_list["dna_lock"]) if(usr != src.occupant) return - if(istype(src, /obj/item/device/mmi)) + if(istype(occupant, /mob/living/carbon/brain)) occupant_message("You are a brain. No.") return if(src.occupant) From 62c14facc472dcf6dd8ccc330a28db5f9954b789 Mon Sep 17 00:00:00 2001 From: Mloc-Argent Date: Thu, 29 Aug 2013 15:01:54 +0100 Subject: [PATCH 08/11] Moved atmospherics control computer into atmos proper. Signed-off-by: Mloc-Argent --- maps/tgstation2.dmm | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index cbed9685bb..e5638e26e7 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -5051,7 +5051,7 @@ "bTg" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/window/northleft{dir = 4; icon_state = "left"; name = "Engineering Desk"; req_access_txt = "32"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/break_room) "bTh" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor,/area/engine/break_room) "bTi" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/engine/break_room) -"bTj" = (/obj/machinery/computer/atmoscontrol,/turf/simulated/floor,/area/engine/break_room) +"bTj" = (/obj/machinery/atmospherics/pipe/simple{color = "red"; dir = 6; icon_state = "intact-r"; level = 2},/obj/machinery/power/apc{dir = 8; name = "Atmospherics APC"; pixel_x = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/table,/obj/item/clothing/head/welding{pixel_x = 1; pixel_x = -5; pixel_y = 3},/obj/item/stack/sheet/glass{amount = 50},/obj/item/clothing/head/welding{pixel_x = 0; pixel_x = -5; pixel_y = 3},/obj/item/clothing/glasses/welding,/turf/simulated/floor,/area/atmos) "bTk" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/table/reinforced,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/t_scanner,/turf/simulated/floor,/area/engine/break_room) "bTl" = (/obj/machinery/computer/general_air_control{frequency = 1441; name = "Tank Monitor"; sensors = list("n2_sensor" = "Nitrogen", "o2_sensor" = "Oxygen", "co2_sensor" = "Carbon Dioxide", "tox_sensor" = "Toxins", "n2o_sensor" = "Nitrous Oxide", "waste_sensor" = "Gas Mix Tank")},/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 4; name = "Atmos RC"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "caution"; dir = 4},/area/engine/break_room) "bTm" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall,/area/atmos) @@ -5380,8 +5380,8 @@ "bZx" = (/obj/machinery/atmospherics/pipe/simple{color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/obj/structure/closet/fireaxecabinet{pixel_y = -32},/obj/machinery/space_heater,/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/atmos) "bZy" = (/obj/machinery/atmospherics/pipe/simple{color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/space_heater,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/atmos) "bZz" = (/obj/machinery/atmospherics/pipe/simple{color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/obj/structure/sign/securearea,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/atmos) -"bZA" = (/obj/machinery/atmospherics/pipe/simple{color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/obj/structure/table,/obj/item/clothing/head/welding{pixel_x = 1; pixel_x = -5; pixel_y = 3},/obj/item/stack/sheet/glass{amount = 50},/obj/item/clothing/head/welding{pixel_x = 0; pixel_x = -5; pixel_y = 3},/obj/item/clothing/glasses/welding,/turf/simulated/floor,/area/atmos) -"bZB" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/weapon/wrench,/obj/machinery/atmospherics/pipe/simple{color = "red"; dir = 9; icon_state = "intact-r"; level = 2},/turf/simulated/floor,/area/atmos) +"bZA" = (/obj/machinery/atmospherics/pipe/simple{color = "red"; icon_state = "intact-r"; level = 2},/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/weapon/wrench,/turf/simulated/floor,/area/atmos) +"bZB" = (/obj/machinery/atmospherics/pipe/simple{color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor,/area/atmos) "bZC" = (/obj/structure/table,/obj/item/device/t_scanner,/obj/item/device/multitool{pixel_x = 5},/obj/item/device/radio/headset/headset_eng,/obj/item/weapon/cartridge/atmos,/obj/item/weapon/cartridge/atmos,/obj/item/device/pipe_painter,/turf/simulated/floor,/area/atmos) "bZD" = (/obj/machinery/atmospherics/tvalve/mirrored/digital,/turf/simulated/floor,/area/atmos) "bZE" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "Waste to Port"},/turf/simulated/floor,/area/atmos) @@ -5691,7 +5691,7 @@ "cfw" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/turf/simulated/floor,/area/engine/break_room) "cfx" = (/obj/effect/landmark/start{name = "Atmospheric Technician"},/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor,/area/engine/break_room) "cfy" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/turf/simulated/floor,/area/engine/break_room) -"cfz" = (/obj/machinery/atmospherics/pipe/simple{color = "red"; dir = 6; icon_state = "intact-r"; level = 2},/obj/machinery/power/apc{dir = 8; name = "Atmospherics APC"; pixel_x = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor,/area/atmos) +"cfz" = (/obj/machinery/atmospherics/pipe/simple{color = "red"; dir = 9; icon_state = "intact-r"; level = 2},/obj/machinery/computer/atmoscontrol,/turf/simulated/floor,/area/atmos) "cfA" = (/obj/machinery/atmospherics/pipe/simple{color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/atmos) "cfB" = (/obj/machinery/atmospherics/pipe/simple{color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/obj/machinery/meter,/turf/simulated/floor,/area/atmos) "cfC" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; icon_state = "manifold-r"; level = 2},/turf/simulated/floor,/area/atmos) @@ -10283,21 +10283,21 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaafbGrbGrbGrbGrbGrbPTbGraaaaaaaaaaaabGtbPUbPVbPWbPXbGtbPYbGtbPZbQabQbbQcbQcbQdbQebQfbQgbQhbQibQjbQjbQjbQkbQlbQjbQjbQmbQibQnbQjbQjbQjbQkbQjbGybGybGybGybGybGybGybGybGybGXbsabQobQpapYapZbQsbzTbQtaqkaqzbQwbQxbQybqDbGWbQzbQAbQBbQCbQDbQEbQFbQGbQGbQHbQIbQJbQKboabQLboabPBbLGboabQMaafbPDbQNbQNbQObQPbQQbQRbQSbQTbHfbQUbHkbAvbINbINbINbINbINaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabEDbKpbKpbKpbKpbKpbKpbQVbGbbKobKpbQWbGbbGbbGbbGbbEDaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabQXbQYbMfbGrbGrbGrbGrbGrbGtbGtbGtbGtbGtbGtbGtbGtbQZbRabRbbRcbRdbRebRfbRfbRgbRhbRibRjbRkbRlbRmbRnbRobRpbRqbRrbRsbRtbRubRvbRwbRxaafaaaaaaaaaaaaaaaaaabGybRybGXbsabNXbqDbsabqDbNXbRzbsabqDbqDbqDbqDbqDbqDbGWbRAbGYbRBbRBbRCbRDbREbRFbRDbRGbRHbRIbRJbRKboabRLbPBbLGbRMbRNaafbPDbQNbRObPGbRPbPGbRQbRRbRSbHfbQUbHkbRTbRUbyMaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbEDbGbbGbbGbbGbbGbbGbbNlbGbbQWbGbbGbbGbbGbbGbbEDbEDaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafbRVbRWbRXbRYbRYbRZbSabSbbScbSdbSebSfbSgbSfbShbScbSibSjbSkbSlbSmbSnbSobSobSpbSqbRibSrbRkbRlbSsbRnbStbSubSvbSwbSxbSybSxbSzbSAbSBaafbSCbSCbSCbSCbSCaaabGybSDbSEbPbbPcbPdbPbbSFbSGbSHbSIbSFbPdbPdbPdbPdbPdbSJbSKbGYbSLbSMbSNbSObSPbSQbSRbGYbGYbqXbSSbqXbqXbqXbSTbSUbSVbqXbHfbHfbHfbHfbHfbSWbHfbHfbHfbHfbHfbQUbHkbSXbRUbyMaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabEDbEDbLYbGbbGbbGbbGbbGbbGbbGbbGbbGbbGbbGbbEDbEDaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabSYaaaaafaafbSZbSZbSZbSZbSZbSZbSZbSZbTabTbbScbTcbSdbSdbSfbTdbShbScbTebTfbSkbTgbThbRfbTibTjbTkbTlbTmbTnbTobTpbSxbRnbTqbSubTrbTsbTtbTubTvbTwbTxbTybTzbTAbTBbTCbTDbSCaaabGybTEbTFbTGbTHbTIbTJbTKbTLbTMbTNbTKbTKbTObTPbTKbTKbTQbGXbGYbGYbGYbGYbGYbGYbTRbGYbGYbTSbTTbTUbTVbTWbqXbSSbTXbTYbqXbTZbUabUbbUcbUdbQUbAvbAvbUebAvbUfbQUbHkbUgbyMbyMbyMaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbECbEDbOybOwbOwbGbbGbbGbbGbbGbbGbbGbbGbbEDbEDaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabSYaaaaafaafbSZbSZbSZbSZbSZbSZbSZbSZbTabTbbScbTcbSdbSdbSfbTdbShbScbTebTfbSkbTgbThbRfbTibRfbTkbTlbTmbTnbTobTpbSxbRnbTqbSubTrbTsbTtbTubTvbTwbTxbTybTzbTAbTBbTCbTDbSCaaabGybTEbTFbTGbTHbTIbTJbTKbTLbTMbTNbTKbTKbTObTPbTKbTKbTQbGXbGYbGYbGYbGYbGYbGYbTRbGYbGYbTSbTTbTUbTVbTWbqXbSSbTXbTYbqXbTZbUabUbbUcbUdbQUbAvbAvbUebAvbUfbQUbHkbUgbyMbyMbyMaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbECbEDbOybOwbOwbGbbGbbGbbGbbGbbGbbGbbGbbEDbEDaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabUhbUibUjbUkbUkbUkbUlbUmbUnbUobUpbUqbUrbSZbUsbTbbScbUtbSdbSebSdbSfbUubScbUvbTfbSkbSlbUwbRfbRfbRfbUxbUybUzbUAbUBbSxbUCbUDbSxbUEbTrbTsbUFbUGbUGbUHbUIbUJaafbUKbULbTDbUMbSCaafbGybUNbUObGyaaaaafaaabUPbUQbURbUSbUPaafaafaaaaafbGybUTbUUbPdbPdbPdbPdbPdbPdbPbbPdbPdbPdbPdbPcbUVbPdbUWbUXbUYbUZbVabVbbVcbVcbVcbVdbVebVcbVcbVcbVcbVfbVgbVhbVibVjbVkbyMbyMbyMbyMaaaaafaaaaaaaaaankankankaafaaaaaaaafaaaaaaaafaaaaaabIObEDbHmbEDbEDbGbbGbbGbbGbbGbbGbbGbbEDbEDaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVlbVlbVlbVlbVlbVmbVnbVobVpbVpbVqbSZbVrbVsbVtbVubVvbVwbSdbSdbVxbScbVybVzbVAbVBbVBbVCbVDbVEbVFbVGbVHbVIbVJbSxbRnbSxbVKbVLbVMbVNbVObVPbVQbVRbVSbVTbVUbTAbVVbTDbTDbSCaafbGybTVbTVbGyaaaaafaaabVWbVXbVYbVZbVWaafaafaaaaafbGybWabWbbWcbWdbKZbWebWebWfbWgbWhbWibTKbTKbTObTPbTKbTKbWjbWkbWlbWmbWmbWnbWobWobWpbWmbWmbWnbWobWobWpbWmbWqbAvbWrbWsbWtbWubWvbWwbWxbWybWybWybWybWybWybWybWybWybWybWybWybWybWybWybWybWzbWAbWAbWBbEDbEDbGbbGbbWCbGbbGbbEDbEDaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaafaafbWDbWEbWFbWGbWFbWHbWIbWJbWKbWKbWLbSZbWMbIWbScbWNbSdbWObSdbSdbSdbWPbUvbTfbSkbWQbQcbWRbWSbWTbWUbWVbRibWWbWXbSxbRnbSxbWYbWSaqMbXabXbbXcbXdbXebXdbXfaafbSCbSCbSCbSCbSCaafbGybGybXgbGyaafaafaafbXhbXibXjbXkbXhaafaaaaaaaafbGybGybGybGybGybXlbGybGybXmbXnbXobGybGyaaaaaaaaaaaabXpbXqbXrbXsbXpaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaabyMbXtbXubXvbyMbyMbyMbyMaaaaafaaaaaaaaaankankankaafaaaaaaaafaaaaaaaafaafaafbXwbXxbXybHnbECbEDbEDbGbbGcbGbbEDbEDaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbWDbXzbXAbXBbXCbVobXDbVobXEbVobXFbXGbXHbXIbScbXJbSdbWObSdbSdbXKbScbXLbXMbSkbXNbQcbRfbXObXPbTobXQbRibXRbVKbXSbXTbXUbXVbXWbXXbXYbXZbYabTtbYbbYcbYdbTzbTAbYebYfbYfbSCaafaafbTVbYgbTVaaaaafaaabYhbYibYjbYkbYhaafaaaaaaaafaaaaaaaaabGybYlbTVbYmbGyaaaaafaaaaaaaafaaaaaaaaaaaabYnbYobYpbYqbYnaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaabYrbYrbYsbYtbYraaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbYubEAbEAbEBbECbECbEDbEDbEDbEDbEEaafaafaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafbWDbYvbYwbYxbYwbYybYzbYAbYBbYCbYDbSZbMfbIWbScbYEbSdbYFbYGbYHbYIbScbYJbTfbSkbYKbYLbYMbYNbSAbYObYPbYQbSAbYRbYSbYTbSAbYUbYVbYWbYXbYYbSxbYZbZabZbbUJaafbUKbZcbZdbZebSCaafaaaaaaaaaaaaaaaaaaaaabZfbUPbZgbZhbZfaafaafaafaafaafaafaaabGybZibZjbZkbGyaaaaafaaaaaaaafaaaaaaaaaaaabZlbZmbZnbZobZlaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaabYrbZpbZqbZrbYraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafbVlbVlbVlbVlbVlbSZbSZbSZbSZbSZbSZbSZbMfbIWbScbScbScbScbScbScbScbScbYJbTfbSkbZsbZtbZubZvbZwbZxbZybZzbZAbZBbZCbRnbSxbZDbZEbZFbZGbZHbSxbYZbZIbZJbZKbVUbTAbZLbYfbYfbSCaafaaaaaaaaaaafaafaafaaabUPbZMbZNbZObUPbUPbUPbUPbUPbUPbUPaafbGybGybGybGybGyaaaaafaaaaaaaafaaaaaaaaaaaabZPbZQbZRbZSbZPaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaabYrbZTbZUbZVbYraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafbVlbVlbVlbVlbVlbSZbSZbSZbSZbSZbSZbSZbMfbIWbScbScbScbScbScbScbScbScbYJbTfbSkbZsbZtbZubZvbZwbZxbZybZzbZBcfzbZCbRnbSxbZDbZEbZFbZGbZHbSxbYZbZIbZJbZKbVUbTAbZLbYfbYfbSCaafaaaaaaaaaaafaafaafaaabUPbZMbZNbZObUPbUPbUPbUPbUPbUPbUPaafbGybGybGybGybGyaaaaafaaaaaaaafaaaaaaaaaaaabZPbZQbZRbZSbZPaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaabYrbZTbZUbZVbYraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbIWbGrbGrbGrbGrbZWbIWbIWbZXbZYbZYbZYbZYbZZcaacaacabcaccaccaccaccaccaccacbSbbGrcadbTfbSkcaecafcagbQkbQjcahcaicajcaicakcalbRnbSxbTrcamcancaocapbSxbYZbZacaqbUJaafbSCbSCbSCbSCbSCaafaaabUPbUPbUPbUPbUPbUPbUPcarcascatcaucavcawcaxcaycavbUPaafaafaafaafaafaafaafcazaafaafaafaafaafaafaafcaAbXpcaBcaCcaAaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaabYrcaDcaEcaFbYraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcaGcaHcaIcaJcaKcaLbIWbIWbTacaMbIWbGrbGrcaNcaObGrbGrcaPcaQcaObGrbGrcaRbIWbTbbGrbYJbTfbSkcaScaTbRfcaUbQccaVcaWcaXcaYbQicaZbRnbSxbWYcbabZFbWXcbbcbccbdcbecbfbYdbTzbTAcbgcbhcbibSCaafaaabUPcbjcbkcblcbmbUPcbncbocascbpcaubXicbqcbrcbsbXibUPaaaaaaaaaaafaaaaaaaaaaafaaaaaaaafaaaaaaaaaaaabXpcbtcbucbvbXpaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaacbwcbxcbycbzcbAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaabIWbGrbGrbGrbGrcbBcbCcbCcbDcbEcbFcbEaaacbGaaaaaaaaaaaaaaaaaaaaabGrcbHbIWbTbbGrcbIcbJcbKcbLcbMcbNcbOcbPcbQcbRcbSbRfcbTcbUcbVbSxbWYcbacbWbWXcbbcbXbYZbZacbYbUJaafbUKcbZccaccbbSCaafaaabUPcccccdccecaubUPccfcauccgccfcaucchcciccjcckcclbUPaaaaaaaaaaafaaaaaaaaabXpbXpbXpbXpbXpbXpbXpbXpbXpccmccnccobXpaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaafccpccqccpaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafbGrccrcbEcbEccscbEcctcbEcbEccuccvcbEcbEccwccxccvcbEcbEcbEcbEccycczccAccBbSkccCccDbRfbRgbRfbRfbRfbRfbRfccEccFccGbSxbWYcbabZFbWXccHccIccJccKccLbZKbVUbTAccMcbhcbhbSCaafccNccOccPccQccRccSccRccTccUccVccWccXccYccZccRcdacdbbUPaaaaaaaaaaafaaaaaaaaabXpcdccddcdecdfcdgcdhcdicdjcdkcdlcdmcdncdoaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaafcdpcdqcdpaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalOalOalOalNalNalOalNalNalNamnalNalNalNalOalOaaaaaaaafaafaaaaaaaaaaaaaaaaaaaafbIZccrcdrcdscdtcducdvcdwcdxcdycdzcdAcbEcdzcdBcdCcdDcdDcdEcbEcdFcdGcdHcdIbSkccCcdJcdKbRgbRfbTibRfcdLcdMcdNcdOcdPbSxbWYbSxcdQbSxcdRcdSbYZbZacdTbUJaafbSCbSCbSCbSCbSCaafaaabUPcdUbVXcdVcdWcdXbVZcdYcdZceacdVcebceccdVbVZcedbUPaafaafaafaafaafaafaafbXpceecefceecegcehbZmceicdjcejcekcejbXpbXpaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaafaaacelaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalOaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaalOaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaabKEccrcemcenceocepceqceqceqceqcercescetcdDceucdDcdDcevcdDcewcexceycezcdIbSkccCceAceBbRgceCceDceEbRgceDceFceGceHbSxbWYbSxbTrcamceIceJceKceLceMbYdbTzbTAceNceOceObSCaafaaabZfcchcePceQbUPceRceScecceTceUceVceWcckceXceYceZbUPaaaaaaaaaaafaaaaaaaaabXpceeceeceecfacfbcdhcfccfdcfecffcfgcfhbXpaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaacfiaaaaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalOaaacfjcfkcflaaacfjcfkcflaaacfjcfkcflaafcfmaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaabKEccrcemcfncdDcevcfocdDcdDcdDcdDcdDcfncfncdDcdDcdDcdDcfpcfqcexcfrcexcfscftceAceAcfubRgcfvcfwcfxbRgcfybQicfzcfAcfBcfCbXUbVMcfDcfEbTtbVObZacfFbUJaafbUKcfGcfHcfIbSCaafaafaafaafaafaafbUPcfJbXibXkcfKcfLbXhcdYcfMbXhcfMcdYbUPaaaaaaaaaaafaaaaaaaaabXpcdjcdjcdjcdjcfNbZmcfOcfPcfQcfRcfScfTbXpaaaaaaaaaaaaaaacfUcfUcfUcfVaafaafaafaafcfiaafaafaafaafaafamncfUcfUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalOaaacfjcfWcflaaacfjcfWcflaaacfjcfWcflaafaafaafaafaaaaaaaaaaaaaaaaaaaafaafaafbKEccrcfXcfncfYcdDcfZcgacgbcgbceucdDcfncgccdDcdDcdDcdDcgdcgecgfcggbKPcghcgicgjcgkcglbRgcfvceDcgmbRgcgnbQibWYbSxbSxcfDbSAcgobYOcgpcgqbRvcgrcgsbZKbVUbTAcgtceOceObSCaafaaaaaaaafaaaaaabUPcgubXibXkbXicgvbXhbXibXkbXhbXkcgwbUPaaaaaaaaaaafaaaaaaaaabXpcdccddcdecgxcgycdhcgzcgAcgBcgCbZmcgDbXpaaaaaaaaaaaaaaacfUaaaaafaaaaafaaaaaaaaacgEaaaaafaafaaaaaaaaaaaacfUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalOaaacfjcfkcflaaacfjcfkcflaaacfjcfkcflaafcfmaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaabKEccrcemcfncdDcevcfocdDcdDcdDcdDcdDcfncfncdDcdDcdDcdDcfpcfqcexcfrcexcfscftceAceAcfubRgcfvcfwcfxbRgcfybQibTjcfAcfBcfCbXUbVMcfDcfEbTtbVObZacfFbUJaafbUKcfGcfHcfIbSCaafaafaafaafaafaafbUPcfJbXibXkcfKcfLbXhcdYcfMbXhcfMcdYbUPaaaaaaaaaaafaaaaaaaaabXpcdjcdjcdjcdjcfNbZmcfOcfPcfQcfRcfScfTbXpaaaaaaaaaaaaaaacfUcfUcfUcfVaafaafaafaafcfiaafaafaafaafaafamncfUcfUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalOaaacfjcfWcflaaacfjcfWcflaaacfjcfWcflaafaafaafaafaaaaaaaaaaaaaaaaaaaafaafaafbKEccrcfXcfncfYcdDcfZcgacgbcgbceucdDcfncgccdDcdDcdDcdDcgdcgecgfcggbKPcghcgicgjcgkcglbRgcfvceDcgmbRgcgnbQibZAbSxbSxcfDbSAcgobYOcgpcgqbRvcgrcgsbZKbVUbTAcgtceOceObSCaafaaaaaaaafaaaaaabUPcgubXibXkbXicgvbXhbXibXkbXhbXkcgwbUPaaaaaaaaaaafaaaaaaaaabXpcdccddcdecgxcgycdhcgzcgAcgBcgCbZmcgDbXpaaaaaaaaaaaaaaacfUaaaaafaaaaafaaaaaaaaacgEaaaaafaafaaaaaaaaaaaacfUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaalNaafcfjcfWcflaaacfjcfWcflaafcfjcfWcflaafaaaaaaaafaafaaaaaaaaaaaaaaaaafaaaaaabOCccrcbEcgFcdDcgGcgHcgIcgJcgKcgJcgLcgJcgMcgNcdzcgOcfncfncfqbMqcgPcgQcgRcgScgTcgUcgVcgWcgXcgYbLschachbbQichcbSxbSxchdbSxbSxbSxbSzbYVchdbZacaqbUJaafbSCbSCbSCbSCbSCaafaaaaaaaafaaaaaabUPchechfchgchhchichjchkchlchjchlchkbUPaafaafaafaafaafaafaafbXpceeceeceechmcehbZmchnchochpchqbZmchrbXpbXpbXpbXpaaaaaacfUaaachschschschschsaafchtaafchschschschschsaaacfUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaacfjcfWcflaafcfjcfWcflaaacfjcfWcflaaaaaaaaaaaaaaaaafaaaaafaaaaafaafaaaaaabGrccrcbEchuchvchvchwcbEcbEcbEcbEcbEcbEcbEcbEcbEcbEcbEcbEcbEbGrchxbGrchybGrbQcchzchAchBchCchDchEchFchGbQichHchIchJchKchLchMchLchKchNchKchOcfDchPaafaafaafaafaafaafaafaaaaaaaaaaaaaaabUPbUPchQchRchSbUPbUPchTbUPbUPbUPchTbZfaaaaaaaaaaaaaaaaaaaaabXpceeceeceecgxchUcdhchVchWchXchYchZchZciacibcicbXpaafaafcfUaafcidcieciecieciecifchtcigcihcihcihcihciiaafcfUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalOalOalNaafaaacfjcfWcflaafcfjcfWcflaaacfjcfWcflaafaaaaaaaaaaaaaafaafcijcikcikcikcikbGrbGrccrcbEcilcimcimcinciocipciqciqciqciqciqciqcirciqciqciscisciqcitciucivciwbQccixciycizciAciBciCbRfciDcahbTnciEciFciGciHciIciJciKbSxciLciMciNbSuaafaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafbUPcchcePciObUPaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaabXpcdjcdjcdjcdjciPbZmchnciQciRchqbZmbZmciSbZmciTbXpaaaaaacfUaafciUciUciUciUciUaaachtaaaciUciUciUciUciUaafcfUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From d2d08208a87ff38ff3ae3f04215f5115a7cd09e6 Mon Sep 17 00:00:00 2001 From: Mloc-Argent Date: Thu, 29 Aug 2013 22:06:27 +0100 Subject: [PATCH 09/11] made zburn/firelevel more predictable. Probably won't change much ingame, but it's a start. Signed-off-by: Mloc-Argent --- code/ZAS/Fire.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/ZAS/Fire.dm b/code/ZAS/Fire.dm index 0a9240faee..cd767b850b 100644 --- a/code/ZAS/Fire.dm +++ b/code/ZAS/Fire.dm @@ -262,7 +262,7 @@ datum/gas_mixture/proc/calculate_firelevel(obj/effect/decal/cleanable/liquid_fue //slows down the burning when the concentration of the reactants is low var/dampening_multiplier = total_combustables / (total_combustables + nitrogen + carbon_dioxide) //calculates how close the mixture of the reactants is to the optimum - var/mix_multiplier = 1 / (1 + (5 * ((oxygen / total_combustables) ^2))) + var/mix_multiplier = 1 / (1 + (5 * ((oxygen / total_combustables) ** 2))) //toss everything together firelevel = vsc.fire_firelevel_multiplier * mix_multiplier * dampening_multiplier From a7f1b50f1be179435a4d00de3277393bd5ea09a7 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Fri, 30 Aug 2013 00:38:10 +0100 Subject: [PATCH 10/11] Fixes reagent and throw logging. --- code/game/atoms.dm | 3 --- code/modules/mob/living/living_defense.dm | 6 +++--- code/modules/reagents/reagent_containers/dropper.dm | 12 ++++++++---- code/modules/reagents/reagent_containers/glass.dm | 11 +++++++---- .../modules/reagents/reagent_containers/hypospray.dm | 11 +++++------ .../reagents/reagent_containers/robodropper.dm | 11 +++++++---- code/modules/reagents/reagent_containers/syringes.dm | 11 +++++++---- 7 files changed, 37 insertions(+), 28 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index b8e9f1799f..44440e8288 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -26,9 +26,6 @@ var/mob/living/M = hit_atom M.hitby(src,speed) - M.attack_log += text("\[[time_stamp()]\] Has been hit with [src], last touched by [src.fingerprintslast]") - msg_admin_attack("[hit_atom] ([M.ckey]) was hit by [src] last touched by ([src.fingerprintslast]) (JMP)") - else if(isobj(hit_atom)) var/obj/O = hit_atom if(!O.anchored) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index dbe8cc268e..1ebb3ca358 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -81,9 +81,9 @@ if(assailant && assailant.mob && istype(assailant.mob,/mob)) var/mob/M = assailant.mob - src.attack_log += text("\[[time_stamp()]\] Has been hit with [O], last touched by [M.name] ([assailant.ckey])") - M.attack_log += text("\[[time_stamp()]\] Hit [src.name] ([src.ckey]) with [O]") - msg_admin_attack("[src.name] ([src.ckey]) was hit by [O], last touched by [M.name] ([assailant.ckey]) (JMP)") + src.attack_log += text("\[[time_stamp()]\] Has been hit with a thrown [O], last touched by [M.name] ([assailant.ckey])") + M.attack_log += text("\[[time_stamp()]\] Hit [src.name] ([src.ckey]) with a thrown [O]") + msg_admin_attack("[src.name] ([src.ckey]) was hit by a thrown [O], last touched by [M.name] ([assailant.ckey]) (JMP)") // Begin BS12 momentum-transfer code. diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm index 7455e8118b..09da254712 100644 --- a/code/modules/reagents/reagent_containers/dropper.dm +++ b/code/modules/reagents/reagent_containers/dropper.dm @@ -65,10 +65,14 @@ src.reagents.reaction(target, TOUCH) var/mob/living/M = target - var/contained = english_list(src.reagents) - M.attack_log += text("\[[time_stamp()]\] Has been squirted ([contained]) with [src.name] by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to squirt [M.name] ([M.key]) with [contained]") - msg_admin_attack("[user.name] ([user.ckey]) squirted [M.name] ([M.key]) with [src.name], which had [contained] (INTENT: [uppertext(user.a_intent)]) (JMP)") + + var/list/injected = list() + for(var/datum/reagent/R in src.reagents.reagent_list) + injected += R.name + var/contained = english_list(injected) + M.attack_log += text("\[[time_stamp()]\] Has been squirted with [src.name] by [user.name] ([user.ckey]). Reagents: [contained]") + user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to squirt [M.name] ([M.key]). Reagents: [contained]") + msg_admin_attack("[user.name] ([user.ckey]) squirted [M.name] ([M.key]) with [src.name]. Reagents: [contained] (INTENT: [uppertext(user.a_intent)]) (JMP)") trans = src.reagents.trans_to(target, amount_per_transfer_from_this) user << "\blue You transfer [trans] units of the solution." diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm index 79c64304d5..000a671e0d 100644 --- a/code/modules/reagents/reagent_containers/glass.dm +++ b/code/modules/reagents/reagent_containers/glass.dm @@ -75,10 +75,13 @@ user << "\blue You splash the solution onto [target]." var/mob/living/M = target - var/contained = english_list(src.reagents) - M.attack_log += text("\[[time_stamp()]\] Has been splashed ([contained]) with [src.name] by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to splash [M.name] ([M.key]) with [contained]") - msg_admin_attack("[user.name] ([user.ckey]) splashed [M.name] ([M.key]) with [src.name], which had [contained] (INTENT: [uppertext(user.a_intent)]) (JMP)") + var/list/injected = list() + for(var/datum/reagent/R in src.reagents.reagent_list) + injected += R.name + var/contained = english_list(injected) + M.attack_log += text("\[[time_stamp()]\] Has been splashed with [src.name] by [user.name] ([user.ckey]). Reagents: [contained]") + user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to splash [M.name] ([M.key]). Reagents: [contained]") + msg_admin_attack("[user.name] ([user.ckey]) splashed [M.name] ([M.key]) with [src.name]. Reagents: [contained] (INTENT: [uppertext(user.a_intent)]) (JMP)") for(var/mob/O in viewers(world.view, user)) O.show_message(text("\red [] has been splashed with something by []!", target, user), 1) diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index bdecdece51..c7875b7fe6 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -39,14 +39,13 @@ var/list/injected = list() for(var/datum/reagent/R in src.reagents.reagent_list) injected += R.name + var/contained = english_list(injected) + M.attack_log += text("\[[time_stamp()]\] Has been injected with [src.name] by [user.name] ([user.ckey]). Reagents: [contained]") + user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to inject [M.name] ([M.key]). Reagents: [contained]") + msg_admin_attack("[user.name] ([user.ckey]) injected [M.name] ([M.key]) with [src.name]. Reagents: [contained] (INTENT: [uppertext(user.a_intent)]) (JMP)") var/trans = reagents.trans_to(M, amount_per_transfer_from_this) - user << "\blue [trans] units injected. [reagents.total_volume] units remaining in [src]." - - var/contained = english_list(injected) - M.attack_log += text("\[[time_stamp()]\] Has been injected ([contained]) with [src.name] by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to inject [M.name] ([M.key]) with [contained]") - msg_admin_attack("[user.name] ([user.ckey]) injected [M.name] ([M.key]) with [src.name], which had [contained] (INTENT: [uppertext(user.a_intent)]) (JMP)") + user << "\blue [trans] units injected. [reagents.total_volume] units remaining in [src]." return diff --git a/code/modules/reagents/reagent_containers/robodropper.dm b/code/modules/reagents/reagent_containers/robodropper.dm index 4b199d2011..475a29c331 100644 --- a/code/modules/reagents/reagent_containers/robodropper.dm +++ b/code/modules/reagents/reagent_containers/robodropper.dm @@ -63,10 +63,13 @@ src.reagents.reaction(target, TOUCH) var/mob/M = target - var/contained = english_list(src.reagents) - M.attack_log += text("\[[time_stamp()]\] Has been squirted ([contained]) with [src.name] by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to squirt [M.name] ([M.key]) with [contained]") - msg_admin_attack("[user.name] ([user.ckey]) squirted [M.name] ([M.key]) with [src.name], which had [contained] (INTENT: [uppertext(user.a_intent)]) (JMP)") + var/list/injected = list() + for(var/datum/reagent/R in src.reagents.reagent_list) + injected += R.name + var/contained = english_list(injected) + M.attack_log += text("\[[time_stamp()]\] Has been squirted with [src.name] by [user.name] ([user.ckey]). Reagents: [contained]") + user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to squirt [M.name] ([M.key]). Reagents: [contained]") + msg_admin_attack("[user.name] ([user.ckey]) squirted [M.name] ([M.key]) with [src.name]. Reagents: [contained] (INTENT: [uppertext(user.a_intent)]) (JMP)") trans = src.reagents.trans_to(target, amount_per_transfer_from_this) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index e36037ef25..ebb4cb5844 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -148,10 +148,13 @@ if(istype(target,/mob/living)) var/mob/living/M = target - var/contained = english_list(src.reagents) - M.attack_log += text("\[[time_stamp()]\] Has been injected ([contained]) with [src.name] by [user.name] ([user.ckey])") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to inject [M.name] ([M.key]) with [contained]") - msg_admin_attack("[user.name] ([user.ckey]) injected [M.name] ([M.key]) with [src.name], which had [contained] (INTENT: [uppertext(user.a_intent)]) (JMP)") + var/list/injected = list() + for(var/datum/reagent/R in src.reagents.reagent_list) + injected += R.name + var/contained = english_list(injected) + M.attack_log += text("\[[time_stamp()]\] Has been injected with [src.name] by [user.name] ([user.ckey]). Reagents: [contained]") + user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to inject [M.name] ([M.key]). Reagents: [contained]") + msg_admin_attack("[user.name] ([user.ckey]) injected [M.name] ([M.key]) with [src.name]. Reagents: [contained] (INTENT: [uppertext(user.a_intent)]) (JMP)") src.reagents.reaction(target, INGEST) if(ismob(target) && target == user) From 7dae19a3f91d2521e7ae1f997fb16342c6203b5f Mon Sep 17 00:00:00 2001 From: Segrain Date: Fri, 30 Aug 2013 04:40:39 +0300 Subject: [PATCH 11/11] Fix for #3498. --- code/game/machinery/computer/camera.dm | 2 +- .../structures/stool_bed_chair_nest/chairs.dm | 17 +++++++---------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index 857d4169ea..5352d3d833 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -162,7 +162,7 @@ T = get_step(T,direct) console.jump_on_click(src,T) return - ..(n,direct) + return ..(n,direct) /obj/machinery/computer/security/telescreen name = "Telescreen" diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 762888a4b4..adc1e637a7 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -35,17 +35,8 @@ src.layer = FLY_LAYER else src.layer = OBJ_LAYER - if(buckled_mob) - if(buckled_mob.loc != src.loc) - buckled_mob.buckled = null //Temporary, so Move() succeeds. - if(!buckled_mob.Move(loc)) - unbuckle() - buckled_mob = null - else - buckled_mob.buckled = src //Restoring - if(buckled_mob) - buckled_mob.dir = dir + buckled_mob.dir = dir /obj/structure/stool/bed/chair/verb/rotate() set name = "Rotate Chair" @@ -114,6 +105,12 @@ /obj/structure/stool/bed/chair/office/Move() ..() + if(buckled_mob) + buckled_mob.buckled = null //Temporary, so Move() succeeds. + var/moved = buckled_mob.Move(src.loc) + buckled_mob.buckled = src + if(!moved) + unbuckle() handle_rotation() /obj/structure/stool/bed/chair/office/light