From d099ebd4a14e8c523b310780fd2b83c47f21fa07 Mon Sep 17 00:00:00 2001 From: Erthilo Date: Thu, 14 Jun 2012 17:46:43 +0100 Subject: [PATCH] TG: Updated toilets. You can now crowbar open the cistern and hide stuff in there. Recoded stunbatons, and put them into their own stunbaton.dm. They should function more or less the same, there's a few differences. Recoded rechargers, they function exactly the same, but should be a bit more responsive now. Fixed issue 475 . Filing cabinets, photocopiers, and hydroponics trays are now unwrenchable (the latter by request of Cheridan. It may need balancing, or more steps to unanchor.) --- baystation12.dme | 1 + code/defines/obj/weapon.dm | 15 -- code/game/machinery/hydroponics.dm | 8 + code/game/machinery/recharger.dm | 147 ++++++++---------- code/game/objects/items/weapons/stunbaton.dm | 95 +++++++++++ .../objects/items/weapons/swords_axes_etc.dm | 100 +----------- code/game/objects/watercloset.dm | 67 ++++++-- code/modules/paperwork/filingcabinet.dm | 2 +- code/modules/paperwork/photocopier.dm | 6 +- .../projectiles/guns/projectile/shotgun.dm | 22 ++- html/changelog.html | 3 +- icons/obj/watercloset.dmi | Bin 12674 -> 13867 bytes 12 files changed, 249 insertions(+), 217 deletions(-) create mode 100644 code/game/objects/items/weapons/stunbaton.dm diff --git a/baystation12.dme b/baystation12.dme index d972490d4b..1ac2e232d6 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -732,6 +732,7 @@ #include "code\game\objects\items\weapons\plant_bag.dm" #include "code\game\objects\items\weapons\RCD.dm" #include "code\game\objects\items\weapons\RSF.dm" +#include "code\game\objects\items\weapons\stunbaton.dm" #include "code\game\objects\items\weapons\stungloves.dm" #include "code\game\objects\items\weapons\surgery_limbattachment.dm" #include "code\game\objects\items\weapons\surgery_tools.dm" diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 9d8446c066..6153895a56 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -355,21 +355,6 @@ details = 1 origin_tech = "magnets=4;biotech=2" -/obj/item/weapon/melee/baton - name = "stun baton" - desc = "The police baton of the future." - icon_state = "stunbaton" - item_state = "baton" - flags = FPRINT | TABLEPASS - slot_flags = SLOT_BELT - force = 15 - throwforce = 7 - w_class = 3 - var/charges = 10.0 - var/maximum_charges = 10.0 - var/status = 0 - origin_tech = "combat=2" - /*/obj/item/weapon/melee/chainofcommand name = "chain of command" desc = "The Captain is first and all other heads are last." diff --git a/code/game/machinery/hydroponics.dm b/code/game/machinery/hydroponics.dm index d665d3a473..33a37f568d 100644 --- a/code/game/machinery/hydroponics.dm +++ b/code/game/machinery/hydroponics.dm @@ -741,6 +741,14 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob) playsound(src.loc, 'spray3.ogg', 50, 1, -6) del(O) src.updateicon() + else if(istype(O, /obj/item/weapon/wrench)) + playsound(loc, 'Ratchet.ogg', 50, 1) + anchored = !anchored + user << "You [anchored ? "wrench" : "unwrench"] \the [src]." + else if(istype(O, /obj/item/weapon/shovel)) + if(istype(src, /obj/machinery/hydroponics/soil)) + user << "You clear up the [src]!" + del(src) return diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 6b1705eec2..7d1d6a7dd7 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -1,94 +1,85 @@ //This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 obj/machinery/recharger - anchored = 1 + name = "recharger" icon = 'stationobjs.dmi' icon_state = "recharger0" - name = "recharger" + anchored = 1 use_power = 1 idle_power_usage = 4 active_power_usage = 250 + var/obj/item/weapon/charging = null - var/obj/item/weapon/gun/energy/charging = null - var/obj/item/weapon/melee/baton/charging2 = null +obj/machinery/recharger/attackby(obj/item/weapon/G as obj, mob/user as mob) + if(issilicon(user)) + return - attackby(obj/item/weapon/G as obj, mob/user as mob) - if(issilicon(user)) + if(istype(G, /obj/item/weapon/gun/energy) || istype(G, /obj/item/weapon/melee/baton)) + if(charging) return - - if (istype(G, /obj/item/weapon/gun/energy)) - if (src.charging || src.charging2) - return - if (istype(G, /obj/item/weapon/gun/energy/gun/nuclear) || istype(G, /obj/item/weapon/gun/energy/crossbow)) - user << "Your gun's recharge port was removed to make room for a miniaturized reactor." - return - if (istype(G, /obj/item/weapon/gun/energy/staff)) - user << "It's a wooden staff, not a gun!" - return - var/area/a = loc.loc // Gets our locations location, like a dream within a dream - if(!isarea(a)) - return - if(a.power_equip == 0) // There's no APC in this area, don't try to cheat power! - user << "\red \The [src] blinks red as you try to insert the item!" - return - user.drop_item() - G.loc = src - src.charging = G - use_power = 2 - else if (istype(G, /obj/item/weapon/melee/baton)) - if (src.charging || src.charging2) - return - user.drop_item() - G.loc = src - src.charging2 = G - use_power = 2 - else if(istype(G, /obj/item/weapon/wrench)) - if (src.charging || src.charging2) - user << "\red Remove the weapon first!" - return - anchored = !anchored - user << "You [anchored ? "attach" : "detach"] the recharger [anchored ? "to" : "from"] the ground" - playsound(src.loc, 'Ratchet.ogg', 75, 1) - - attack_hand(mob/user as mob) - src.add_fingerprint(user) - if(ishuman(user)) - if(istype(user:gloves, /obj/item/clothing/gloves/space_ninja)&&user:gloves:candrain&&!user:gloves:draining) - call(/obj/item/clothing/gloves/space_ninja/proc/drain)("MACHINERY",src,user:wear_suit) - return - - if (src.charging) - src.charging.update_icon() - src.charging.loc = src.loc - src.charging = null - use_power = 1 - if(src.charging2) - src.charging2.update_icon() - src.charging2.loc = src.loc - src.charging2 = null - use_power = 1 - - attack_paw(mob/user as mob) - if ((ticker && ticker.mode.name == "monkey")) - return src.attack_hand(user) - - process() - if(stat & (NOPOWER|BROKEN) || !anchored) + var/area/a = get_area(src) + if(!isarea(a)) return + if(a.power_equip == 0) // There's no APC in this area, don't try to cheat power! + user << "\red The [name] blinks red as you try to insert the item!" + return + if (istype(G, /obj/item/weapon/gun/energy/gun/nuclear) || istype(G, /obj/item/weapon/gun/energy/crossbow)) + user << "Your gun's recharge port was removed to make room for a miniaturized reactor." + return + if (istype(G, /obj/item/weapon/gun/energy/staff)) + return + user.drop_item() + G.loc = src + charging = G + use_power = 2 + update_icon() + else if(istype(G, /obj/item/weapon/wrench)) + if(charging) + user << "\red Remove the weapon first!" + return + anchored = !anchored + user << "You [anchored ? "attached" : "detached"] the recharger." + playsound(loc, 'Ratchet.ogg', 75, 1) - if (src.charging) - if (src.charging.power_supply.charge < src.charging.power_supply.maxcharge) - src.charging.power_supply.give(100) - src.icon_state = "recharger1" +obj/machinery/recharger/attack_hand(mob/user as mob) + add_fingerprint(user) + + if(charging) + charging.update_icon() + charging.loc = loc + charging = null + use_power = 1 + update_icon() + +obj/machinery/recharger/attack_paw(mob/user as mob) + if((ticker && ticker.mode.name == "monkey")) + return attack_hand(user) + +obj/machinery/recharger/process() + if(stat & (NOPOWER|BROKEN) || !anchored) + return + + if(charging) + if(istype(charging, /obj/item/weapon/gun/energy)) + var/obj/item/weapon/gun/energy/E = charging + if(E.power_supply.charge < E.power_supply.maxcharge) + E.power_supply.give(100) + icon_state = "recharger1" use_power(250) else - src.icon_state = "recharger2" - else if (src.charging2) - if (src.charging2.charges < src.charging2.maximum_charges) - src.charging2.charges++ - src.icon_state = "recharger1" - use_power(250) + icon_state = "recharger2" + return + if(istype(charging, /obj/item/weapon/melee/baton)) + var/obj/item/weapon/melee/baton/B = charging + if(B.charges < initial(B.charges)) + B.charges++ + icon_state = "recharger1" + use_power(150) else - src.icon_state = "recharger2" - else - src.icon_state = "recharger0" + icon_state = "recharger2" + +obj/machinery/recharger/update_icon() //we have an update_icon() in addition to the stuff in process to make it feel a tiny bit snappier. + if(charging) + icon_state = "recharger1" + else + icon_state = "recharger0" \ No newline at end of file diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm new file mode 100644 index 0000000000..38fe3df3b4 --- /dev/null +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -0,0 +1,95 @@ +/obj/item/weapon/melee/baton + name = "stun baton" + desc = "A stun baton for incapacitating people with." + icon_state = "stunbaton" + item_state = "baton" + flags = FPRINT | TABLEPASS + slot_flags = SLOT_BELT + force = 10 + throwforce = 7 + w_class = 3 + var/charges = 10 + var/status = 0 + origin_tech = "combat=2" + +/obj/item/weapon/melee/baton/update_icon() + if(status) + icon_state = "stunbaton_active" + else + icon_state = "stunbaton" + +/obj/item/weapon/melee/baton/attack_self(mob/user as mob) + if(status && (CLUMSY in user.mutations) && prob(50)) + user << "\red You grab the [src] on the wrong side." + user.Weaken(30) + charges-- + if(charges < 1) + status = 0 + update_icon() + return + if(charges > 0) + status = !status + user << "\The [src] is now [status ? "on" : "off"]." + playsound(src.loc, "sparks", 75, 1, -1) + update_icon() + else + status = 0 + user << "\The [src] is out of charge." + add_fingerprint(user) + +/obj/item/weapon/melee/baton/attack(mob/M as mob, mob/user as mob) + if(status && (CLUMSY in user.mutations) && prob(50)) + user << "You accidentally hit yourself with the [src]!" + user.Weaken(30) + charges-- + if(charges < 1) + status = 0 + update_icon() + return + + var/mob/living/carbon/human/H = M + + M.attack_log += text("\[[time_stamp()]\] Has been attacked with [src.name] by [user.name] ([user.ckey]) (INTENT: [uppertext(user.a_intent)])") + user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to attack [M.name] ([M.ckey]) (INTENT: [uppertext(user.a_intent)])") + + 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)])") + + if(isrobot(M)) + ..() + return + + if(user.a_intent != "help") + if(!..()) return + H.apply_effect(5, WEAKEN, 0) + H.visible_message("[M] has been beaten with the [src] by [user]!") + 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.") + return + + if(status) + H.apply_effect(10, STUN, 0) + H.apply_effect(10, WEAKEN, 0) + H.apply_effect(10, STUTTER, 0) + user.lastattacked = M + H.lastattacker = user + charges-- + H.visible_message("[M] has been stunned with the [src] by [user]!") + playsound(src.loc, "sparks", 75, 1, -1) + if(charges < 1) + status = 0 + update_icon() + + add_fingerprint(user) + +/obj/item/weapon/melee/baton/emp_act(severity) + switch(severity) + if(1) + charges = 0 + if(2) + charges = max(0, charges - 5) + if(charges < 1) + status = 0 + update_icon() \ No newline at end of file diff --git a/code/game/objects/items/weapons/swords_axes_etc.dm b/code/game/objects/items/weapons/swords_axes_etc.dm index 764522598e..7722f7ea22 100644 --- a/code/game/objects/items/weapons/swords_axes_etc.dm +++ b/code/game/objects/items/weapons/swords_axes_etc.dm @@ -3,7 +3,7 @@ CONTAINS: SWORD BLADE AXE -STUN BATON +CLASSIC BATON ENERGY SHIELD (where else should i even put this) */ @@ -95,104 +95,6 @@ ENERGY SHIELD (where else should i even put this) src.add_fingerprint(user) return -// STUN BATON - -/obj/item/weapon/melee/baton/update_icon() - if(src.status) - icon_state = "stunbaton_active" - else - icon_state = "stunbaton" - -/obj/item/weapon/melee/baton/attack_self(mob/user as mob) - src.status = !( src.status ) - if ((CLUMSY in user.mutations) && prob(50)) - usr << "\red You grab the stunbaton on the wrong side." - usr.Paralyse(60) - return - if (src.status) - user << "\blue The baton is now on." - playsound(src.loc, "sparks", 75, 1, -1) - else - user << "\blue The baton is now off." - playsound(src.loc, "sparks", 75, 1, -1) - - update_icon() - src.add_fingerprint(user) - return - -/obj/item/weapon/melee/baton/attack(mob/M as mob, mob/user as mob) - if ((CLUMSY in usr.mutations) && prob(50)) - usr << "\red You grab the stunbaton on the wrong side." - usr.Weaken(30) - return - src.add_fingerprint(user) - var/mob/living/carbon/human/H = M - - M.attack_log += text("\[[time_stamp()]\] Has been attacked with [src.name] by [user.name] ([user.ckey]) (INTENT: [uppertext(user.a_intent)])") - user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to attack [M.name] ([M.ckey]) (INTENT: [uppertext(user.a_intent)])") - - 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)])") - - - - if(isrobot(M)) - ..() - return - - if (status == 0 || (status == 1 && charges ==0)) - if(user.a_intent == "hurt") - if(!..()) return - M.Weaken(5) - for(var/mob/O in viewers(M)) - if (O.client) O.show_message("\red [M] has been beaten with the stun baton by [user]!", 1) - if(status == 1 && charges == 0) - user << "\red Not enough charge" - return - else - for(var/mob/O in viewers(M)) - if (O.client) O.show_message("\red [M] has been prodded with the stun baton by [user]! Luckily it was off.", 1) - if(status == 1 && charges == 0) - user << "\red Not enough charge" - return - if((charges > 0 && status == 1) && (istype(H, /mob/living/carbon))) - flick("baton_active", src) - if (user.a_intent == "hurt") - if(!..()) return - playsound(src.loc, 'Genhit.ogg', 50, 1, -1) - if(isrobot(user)) - var/mob/living/silicon/robot/R = user - R.cell.charge -= 20 - else - charges-- - if (M.stuttering < 1 && (!(HULK in M.mutations) && M.canstun) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/) - M.stuttering = 1 - M.Stun(1) - M.Weaken(1) - else - playsound(src.loc, 'Egloves.ogg', 50, 1, -1) - if(isrobot(user)) - var/mob/living/silicon/robot/R = user - R.cell.charge -= 20 - else - charges-- - if (M.stuttering < 10 && (!(HULK in M.mutations) && M.canstun) /*&& (!istype(H:wear_suit, /obj/item/clothing/suit/judgerobe))*/) - M.stuttering = 10 - M.Stun(10) - M.Weaken(10) - user.lastattacked = M - M.lastattacker = user - for(var/mob/O in viewers(M)) - if (O.client) O.show_message("\red [M] has been stunned with the stun baton by [user]!", 1, "\red You hear someone fall", 2) - -/obj/item/weapon/melee/baton/emp_act(severity) - switch(severity) - if(1) - src.charges = 0 - if(2) - charges -= 5 - /obj/item/weapon/melee/classic_baton/attack(mob/M as mob, mob/living/user as mob) if ((CLUMSY in user.mutations) && prob(50)) user << "\red You club yourself over the head." diff --git a/code/game/objects/watercloset.dm b/code/game/objects/watercloset.dm index afc4138561..38b8c5ea47 100644 --- a/code/game/objects/watercloset.dm +++ b/code/game/objects/watercloset.dm @@ -4,28 +4,56 @@ name = "toilet" desc = "The HT-451, a torque rotation-based, waste disposal unit for small matter. This one seems remarkably clean." icon = 'watercloset.dmi' - icon_state = "toilet0" + icon_state = "toilet00" density = 0 anchored = 1 - var/open = 0 - var/mob/swirlie = null + var/open = 0 //if the lid is up + var/cistern = 0 //if the cistern bit is open + var/w_items = 0 //the combined w_class of all the items in the cistern + var/mob/swirlie = null //the mob being given a swirlie /obj/structure/toilet/New() open = round(rand(0, 1)) update_icon() -/obj/structure/toilet/attack_hand() - if(!swirlie) - open = !open - update_icon() - else - usr.visible_message("[usr] slams the toilet seat onto [swirlie.name]'s head!", "You slam the toilet seat onto [swirlie.name]'s head!", "You hear reverberating porcelain.") +/obj/structure/toilet/attack_hand(mob/user as mob) + if(swirlie) + usr.visible_message("[user] slams the toilet seat onto [swirlie.name]'s head!", "You slam the toilet seat onto [swirlie.name]'s head!", "You hear reverberating porcelain.") swirlie.adjustBruteLoss(8) + return + + if(cistern && !open) + if(!contents.len) + user << "The cistern is empty." + return + else + var/obj/item/I = pick(contents) + if(ishuman(user)) + if(!user.get_active_hand()) + I.loc = user.loc + user.put_in_hand(I) + else + I.loc = get_turf(src) + user << "You find \an [I] in the cistern." + w_items -= I.w_class + return + + open = !open + update_icon() /obj/structure/toilet/update_icon() - icon_state = "toilet[open]" + icon_state = "toilet[open][cistern]" + +/obj/structure/toilet/attackby(obj/item/I as obj, mob/user as mob) + if(istype(I, /obj/item/weapon/crowbar)) + user << "You start to [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"]." + playsound(loc, 'stonedoor_openclose.ogg', 50, 1) + if(do_after(user, 30)) + user.visible_message("[user] [cistern ? "replaces the lid on the cistern" : "lifts the lid off the cistern"]!", "You [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"]!", "You hear grinding porcelain.") + cistern = !cistern + update_icon() + return -/obj/structure/toilet/attackby(var/obj/item/I, var/mob/user) if(istype(I, /obj/item/weapon/grab)) var/obj/item/weapon/grab/G = I var/mob/GM = G.affecting @@ -45,6 +73,19 @@ else user << "You need a tighter grip." + if(cistern) + if(I.w_class > 3) + user << "\The [I] does not fit." + return + if(w_items + I.w_class > 5) + user << "The cistern is full." + return + user.drop_item() + I.loc = src + w_items += I.w_class + user << "You carefully place \the [I] into the cistern." + return + /obj/structure/urinal @@ -55,7 +96,7 @@ density = 0 anchored = 1 -/obj/structure/urinal/attackby(var/obj/item/I, var/mob/user) +/obj/structure/urinal/attackby(obj/item/I as obj, mob/user as mob) if(istype(I, /obj/item/weapon/grab)) var/obj/item/weapon/grab/G = I var/mob/GM = G.affecting @@ -97,7 +138,7 @@ wash(M) check_heat(M) -/obj/machinery/shower/attackby(var/obj/item/I, var/mob/user) +/obj/machinery/shower/attackby(var/obj/item/I as obj, var/mob/user as mob) if(I.type == /obj/item/device/analyzer) user << "The water temperature seems to be [watertemp]." if(istype(I, /obj/item/weapon/wrench)) diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index c7292180f4..36e7e87edc 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -19,7 +19,7 @@ else if(istype(P, /obj/item/weapon/wrench)) playsound(loc, 'Ratchet.ogg', 50, 1) anchored = !anchored - user << "You [anchored ? "wrench" : "unwrench"] the [src]." + user << "You [anchored ? "wrench" : "unwrench"] \the [src]." else user << "You can't put a [P] in the [src]!" diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 3f0fbb7b3c..bfe980e4dc 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -1,4 +1,4 @@ -//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05 +//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 /obj/machinery/photocopier name = "Photocopier" @@ -102,6 +102,10 @@ updateUsrDialog() else user << "This cartridge is not yet ready for replacement! Use up the rest of the toner." + else if(istype(O, /obj/item/weapon/wrench)) + playsound(loc, 'Ratchet.ogg', 50, 1) + anchored = !anchored + user << "You [anchored ? "wrench" : "unwrench"] \the [src]." return ex_act(severity) diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index 4ad2b39513..a2e444e571 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 29/05/2012 15:03:05 - /obj/item/weapon/gun/projectile/shotgun/pump name = "shotgun" desc = "Useful for sweeping alleys." @@ -74,9 +72,16 @@ origin_tech = "combat=3;materials=1" ammo_type = "/obj/item/ammo_casing/shotgun/beanbag" + New() + for(var/i = 1, i <= max_shells, i++) + loaded += new ammo_type(src) + + update_icon() + return + load_into_chamber() - if(in_chamber) - return 1 +// if(in_chamber) +// return 1 {R} if(!loaded.len) return 0 @@ -95,12 +100,12 @@ if(!(locate(/obj/item/ammo_casing/shotgun) in src) && !loaded.len) user << "\The [src] is empty." return - + for(var/obj/item/ammo_casing/shotgun/shell in src) //This feels like a hack. //don't code at 3:30am kids!! if(shell in loaded) loaded -= shell shell.loc = get_turf(src.loc) - + user << "You break \the [src]." update_icon() return @@ -119,6 +124,7 @@ user << "You begin to shorten the barrel of \the [src]." if(loaded.len) afterattack(user, user) //will this work? + afterattack(user, user) //it will. we call it twice, for twice the FUN playsound(user, fire_sound, 50, 1) user.visible_message("The shotgun goes off!", "The shotgun goes off in your face!") return @@ -128,7 +134,7 @@ w_class = 3.0 item_state = "gun" slot_flags &= ~SLOT_BACK //you can't sling it on your back - slot_flags |= SLOT_BELT //but you can wear it on your belt (poorly concealed under a trenchcoat, ideally) + slot_flags |= SLOT_BELT //but you can wear it on your belt (poorly concealed under a trenchcoat, ideally) name = "sawn-off shotgun" desc = "Omar's coming!" - user << "You shorten the barrel of \the [src]!" + user << "You shorten the barrel of \the [src]!" \ No newline at end of file diff --git a/html/changelog.html b/html/changelog.html index ac2584b930..e5a5071d88 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -71,7 +71,7 @@ should be listed in the changelog upon commit though. Thanks. -->

SkyMarshal updated:

@@ -111,7 +111,6 @@ should be listed in the changelog upon commit though. Thanks. -->
  • Fixed flavour text, it should now be possible to have it longer than 40 characters, and should stay properly formatted.
  • Fixes AI's not being able to talk through holopads.
  • -
    diff --git a/icons/obj/watercloset.dmi b/icons/obj/watercloset.dmi index 6ca93940eb767d662d24d57e983175ec4e4fb141..99e28e8c279671c220cdc87e46d4d871c08453de 100644 GIT binary patch literal 13867 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 N83{%4QZeH%{{tvQ=@$S1 literal 12674 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