From 751fb4aaa92aa15e31b9c7e48ddf7ea792ce7ba3 Mon Sep 17 00:00:00 2001 From: Remie Richards Date: Mon, 9 Mar 2015 21:48:45 +0000 Subject: [PATCH] Adds SLOT_BACK for energy katana, makes energy katana call emag_act() on what it strikes (mirroring energy/blade functionality cleanly), Removes energy/blade hacks. --- code/game/machinery/camera/camera.dm | 9 ------- code/game/machinery/doors/unpowered.dm | 1 - .../objects/items/weapons/storage/lockbox.dm | 12 ---------- .../objects/items/weapons/storage/secure.dm | 15 ------------ .../closets/secure/secure_closets.dm | 12 ---------- .../structures/crates_lockers/crates.dm | 11 --------- code/game/objects/structures/false_walls.dm | 2 +- code/game/objects/structures/tables_racks.dm | 10 -------- code/game/turfs/simulated/walls.dm | 22 ------------------ code/game/turfs/simulated/walls_reinforced.dm | 5 +--- code/modules/ninja/energy_katana.dm | 12 +++++++++- code/modules/recycling/disposal.dm | 4 ---- icons/mob/back.dmi | Bin 73549 -> 73800 bytes 13 files changed, 13 insertions(+), 102 deletions(-) diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 8a8b1836eae..30b3f246671 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -214,15 +214,6 @@ user << "Camera bugged." src.bug = W src.bug.bugged_cameras[src.c_tag] = src - else if(istype(W, /obj/item/weapon/melee/energy/blade))//Putting it here last since it's a special case. I wonder if there is a better way to do these than type casting. - deactivate(user,2)//Here so that you can disconnect anyone viewing the camera, regardless if it's on or off. - var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() - spark_system.set_up(5, 0, loc) - spark_system.start() - playsound(loc, 'sound/weapons/blade1.ogg', 50, 1) - playsound(loc, "sparks", 50, 1) - visible_message("[user] has sliced the camera apart with an energy blade!") - qdel(src) else if(istype(W, /obj/item/device/laser_pointer)) var/obj/item/device/laser_pointer/L = W L.laser_act(src, user) diff --git a/code/game/machinery/doors/unpowered.dm b/code/game/machinery/doors/unpowered.dm index c0da7ec0dba..df94284c2c5 100644 --- a/code/game/machinery/doors/unpowered.dm +++ b/code/game/machinery/doors/unpowered.dm @@ -9,7 +9,6 @@ /obj/machinery/door/unpowered/attackby(obj/item/I as obj, mob/user as mob, params) - if(istype(I, /obj/item/weapon/melee/energy/blade)) return if(src.locked) return ..() return diff --git a/code/game/objects/items/weapons/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm index a8cbcbcb282..9b7d8f19952 100644 --- a/code/game/objects/items/weapons/storage/lockbox.dm +++ b/code/game/objects/items/weapons/storage/lockbox.dm @@ -35,18 +35,6 @@ else user << "Access Denied." return - else if(istype(W, /obj/item/weapon/melee/energy/blade) && !src.broken) - broken = 1 - locked = 0 - desc = "It appears to be broken." - icon_state = src.icon_broken - var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() - spark_system.set_up(5, 0, src.loc) - spark_system.start() - playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1) - playsound(src.loc, "sparks", 50, 1) - visible_message("[user] has sliced open \the [src] with an energy blade!", "You hear metal being sliced and sparks flying.") - return if(!locked) ..() else diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm index f39e702b365..a92d674a6e9 100644 --- a/code/game/objects/items/weapons/storage/secure.dm +++ b/code/game/objects/items/weapons/storage/secure.dm @@ -33,21 +33,6 @@ /obj/item/weapon/storage/secure/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(locked) - if (istype(W, /obj/item/weapon/melee/energy/blade) && !emagged) - emagged = 1 - src.overlays += image('icons/obj/storage.dmi', icon_sparking) - sleep(6) - src.overlays = null - overlays += image('icons/obj/storage.dmi', icon_locking) - locked = 0 - var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() - spark_system.set_up(5, 0, src.loc) - spark_system.start() - playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1) - playsound(src.loc, "sparks", 50, 1) - user << "You slice through the lock on [src]." - return - if (istype(W, /obj/item/weapon/screwdriver)) if (do_after(user, 20)) src.open =! src.open diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index c117504b4ea..4c9095fb4df 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -65,18 +65,6 @@ if(!src.opened && src.broken) user << "The locker appears to be broken." return - else if(istype(W, /obj/item/weapon/melee/energy/blade) && !broken) - broken = 1 - locked = 0 - desc = "It appears to be broken." - icon_state = icon_off - flick(icon_broken, src) - var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() - spark_system.set_up(5, 0, src.loc) - spark_system.start() - playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1) - playsound(src.loc, "sparks", 50, 1) - visible_message("[user] has sliced the locker open with an energy blade!", "You hear metal being sliced and sparks flying.") else ..(W, user) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index f6aa7b779b2..f64395b7f24 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -307,17 +307,6 @@ overlays += redlight add_fingerprint(user) return - else if (istype(W, /obj/item/weapon/melee/energy/blade) && locked && !broken) - overlays.Cut() - overlays += emag - overlays += sparks - spawn(6) overlays -= sparks //Tried lots of stuff but nothing works right. so i have to use this *sadface* - playsound(src.loc, "sparks", 60, 1) - src.locked = 0 - src.broken = 1 - user << "You unlock \the [src]." - add_fingerprint(user) - return return ..() diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index 08123b5fec1..ee5684c24c6 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -118,7 +118,7 @@ else user << "You can't reach, close it first!" - if(istype(W, /obj/item/weapon/pickaxe/plasmacutter) || istype(W, /obj/item/weapon/melee/energy/blade)) + if(istype(W, /obj/item/weapon/pickaxe/plasmacutter)) dismantle(user) if(istype(W, /obj/item/weapon/pickaxe/drill/jackhammer)) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 196ce0cbb0b..da22c57e321 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -314,16 +314,6 @@ if(isrobot(user)) return - if(istype(I, /obj/item/weapon/melee/energy/blade)) - var/datum/effect/effect/system/spark_spread/SS = new /datum/effect/effect/system/spark_spread() - SS.set_up(5, 0, src.loc) - SS.start() - playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1) - playsound(src.loc, "sparks", 50, 1) - user.visible_message("The [src.name] was sliced apart by [user]!") - table_destroy(1) - return - if(!(I.flags & ABSTRACT)) //rip more parems rip in peace ;_; if(user.drop_item()) I.Move(loc) diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index bd54b2067b9..2c88719d4b9 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -136,13 +136,6 @@ if( thermite ) if(is_hot(W)) thermitemelt(user) - - if( istype(W, /obj/item/weapon/melee/energy/blade) ) - var/obj/item/weapon/melee/energy/blade/EB = W - EB.spark_system.start() - user << "You slash \the [src] with \the [EB]; the thermite ignites!" - playsound(src, "sparks", 50, 1) - playsound(src, 'sound/weapons/blade1.ogg', 50, 1) return var/turf/T = user.loc //get user's location for delay checks @@ -225,21 +218,6 @@ dismantle_wall() visible_message("[user] smashes through the [name] with the [W.name]!", "You hear the grinding of metal.") return 1 - else if( istype(W, /obj/item/weapon/melee/energy/blade) ) - var/obj/item/weapon/melee/energy/blade/EB = W - EB.spark_system.start() - user << "You stab \the [EB] into the wall and begin to slice it apart." - playsound(src, "sparks", 50, 1) - if(do_after(user, slicing_duration*0.7)) //energy blade slicing is faster than welding tool slicing - if( !istype(src, /turf/simulated/wall) || !user || !EB || !T ) - return 1 - if( user.loc == T && user.get_active_hand() == W ) - EB.spark_system.start() - playsound(src, "sparks", 50, 1) - playsound(src, 'sound/weapons/blade1.ogg', 50, 1) - dismantle_wall(1) - visible_message("The wall was sliced apart by [user]!", "You hear metal being sliced apart and sparks flying.") - return 1 return 0 diff --git a/code/game/turfs/simulated/walls_reinforced.dm b/code/game/turfs/simulated/walls_reinforced.dm index c66d1061e50..b7e71d69e0b 100644 --- a/code/game/turfs/simulated/walls_reinforced.dm +++ b/code/game/turfs/simulated/walls_reinforced.dm @@ -29,10 +29,7 @@ M << "This wall is far too strong for you to destroy." /turf/simulated/wall/r_wall/try_destroy(obj/item/weapon/W as obj, mob/user as mob, turf/T as turf) - if(istype(W, /obj/item/weapon/melee/energy/blade)) - user << "This wall is too thick to slice through. You will need to find a different path." - return 1 - else if(istype(W, /obj/item/weapon/pickaxe/drill/jackhammer)) + if(istype(W, /obj/item/weapon/pickaxe/drill/jackhammer)) var/obj/item/weapon/pickaxe/drill/jackhammer/D = W if(!D.bcell.use(800)) user << "Your [D.name] doesn't have enough power to break through the [name]." diff --git a/code/modules/ninja/energy_katana.dm b/code/modules/ninja/energy_katana.dm index fba0963d57e..0a398a7ba27 100644 --- a/code/modules/ninja/energy_katana.dm +++ b/code/modules/ninja/energy_katana.dm @@ -7,4 +7,14 @@ item_state = "energy_katana" force = 40 throwforce = 20 - slot_flags = SLOT_BELT + +/obj/item/weapon/katana/energy/afterattack(atom/target, mob/user, proximity_flag, click_parameters) + if(!user || !target) + return + + if(proximity_flag) + target.emag_act() + user.visible_message("[user] masterfully slices [target]!", "You masterfully slice [target]!") + playsound(user, "sparks", 50, 1) + playsound(user, 'sound/weapons/blade1.ogg', 50, 1) + diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index ef4b2049d97..b4d951cc78e 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -115,10 +115,6 @@ else return - if(istype(I, /obj/item/weapon/melee/energy/blade)) - user << "You can't place \the [I] into \the [src]." - return - if(istype(I, /obj/item/weapon/storage/bag/trash)) var/obj/item/weapon/storage/bag/trash/T = I user << " You empty the bag." diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index af975d079e47ee8fc0b57b647ef9b2363a45cf68..fbcfe4414ab4ef300ea114f43301660b8c0aac28 100644 GIT binary patch delta 9788 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 Zz`uQ=c#Mcvu7iN>g}ky{q0F1l{|~S-&vgI* delta 9508 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