From 717da7aafafa0ce4de5bb45c7e85e96e837d82cc Mon Sep 17 00:00:00 2001 From: "petethegoat@gmail.com" Date: Wed, 6 Jun 2012 13:07:51 +0000 Subject: [PATCH] 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.) git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3749 316c924e-a436-60f5-8080-3fe189b3f50e --- code/defines/obj/weapon.dm | 15 -- code/game/machinery/hydroponics.dm | 8 + code/game/machinery/recharger.dm | 145 ++++++++---------- code/game/objects/items/weapons/stunbaton.dm | 87 +++++++++++ .../objects/items/weapons/swords_axes_etc.dm | 98 +----------- code/game/objects/watercloset.dm | 65 ++++++-- code/modules/paperwork/filingcabinet.dm | 2 +- code/modules/paperwork/photocopier.dm | 4 + .../projectiles/guns/projectile/shotgun.dm | 10 +- icons/obj/watercloset.dmi | Bin 12674 -> 13867 bytes tgstation.dme | 3 + 11 files changed, 234 insertions(+), 203 deletions(-) create mode 100644 code/game/objects/items/weapons/stunbaton.dm diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 18653b0ec2..f3862f9825 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -201,21 +201,6 @@ details = 1 origin_tech = "magnets=4;biotech=2" -/obj/item/weapon/melee/baton - name = "stun baton" - desc = "A stun baton for hitting 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.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 e25b257d25..696a1135f5 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 1990e84452..d3c4471cba 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -1,91 +1,82 @@ //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 - - attackby(obj/item/weapon/G as obj, mob/user as mob) - 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 [name] 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) +obj/machinery/recharger/attackby(obj/item/weapon/G as obj, mob/user as mob) + if(istype(G, /obj/item/weapon/gun/energy) || istype(G, /obj/item/weapon/melee/baton)) + if(charging) return + 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..cabccfa996 --- /dev/null +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -0,0 +1,87 @@ +/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 + 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 92908d7f37..9250c886b6 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) */ @@ -94,102 +94,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_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 011acc91e7..ff020ee509 100644 --- a/code/game/objects/watercloset.dm +++ b/code/game/objects/watercloset.dm @@ -7,25 +7,53 @@ icon_state = "toilet0" 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 b7aedb1a59..e9b257bb6d 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 496d26d3af..c94d279edb 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -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 f4b1e1018e..d018e28934 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -70,6 +70,13 @@ 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 {R} @@ -113,6 +120,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 @@ -121,7 +129,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]!" \ No newline at end of file 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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