diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 5f4b3d73956..f74740485d2 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -19,6 +19,7 @@ anchored = 1.0 layer = 2.8 throwpass = 1 //You can throw objects over this, despite it's density.") + var/parts = /obj/item/weapon/table_parts /obj/structure/table/New() ..() @@ -38,6 +39,12 @@ T.update_icon() ..() +/obj/structure/table/proc/destroy() + new parts(loc) + density = 0 + del(src) + + /obj/structure/table/update_icon() spawn(2) //So it properly updates when deleting var/dir_sum = 0 @@ -219,65 +226,34 @@ return if(3.0) if (prob(25)) - src.density = 0 + destroy() else return /obj/structure/table/blob_act() if(prob(75)) - if(istype(src, /obj/structure/table/woodentable)) - new /obj/item/weapon/table_parts/wood( src.loc ) - del(src) - return - new /obj/item/weapon/table_parts( src.loc ) - del(src) - return + destroy() /obj/structure/table/hand_p(mob/user as mob) return src.attack_paw(user) - return /obj/structure/table/attack_paw(mob/user) if(HULK in user.mutations) user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) - visible_message("[user] smashes the table apart!") - if(istype(src, /obj/structure/table/reinforced)) - new /obj/item/weapon/table_parts/reinforced(loc) - else if(istype(src, /obj/structure/table/woodentable)) - new/obj/item/weapon/table_parts/wood(loc) - else - new /obj/item/weapon/table_parts(loc) - density = 0 - del(src) + visible_message("[user] smashes the [src] apart!") + destroy() /obj/structure/table/attack_alien(mob/user) visible_message("[user] slices [src] apart!") - if(istype(src, /obj/structure/table/reinforced)) - new /obj/item/weapon/table_parts/reinforced(loc) - else if(istype(src, /obj/structure/table/woodentable)) - new/obj/item/weapon/table_parts/wood(loc) - else - new /obj/item/weapon/table_parts(loc) - density = 0 - del(src) - /obj/structure/table/attack_animal(mob/living/simple_animal/user) if(user.wall_smash) visible_message("[user] smashes [src] apart!") - if(istype(src, /obj/structure/table/reinforced)) - new /obj/item/weapon/table_parts/reinforced(loc) - else if(istype(src, /obj/structure/table/woodentable)) - new/obj/item/weapon/table_parts/wood(loc) - else - new /obj/item/weapon/table_parts(loc) - density = 0 - del(src) - + destroy() @@ -285,14 +261,7 @@ if(HULK in user.mutations) visible_message("[user] smashes [src] apart!") user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) - if(istype(src, /obj/structure/table/reinforced)) - new /obj/item/weapon/table_parts/reinforced(loc) - else if(istype(src, /obj/structure/table/woodentable)) - new/obj/item/weapon/table_parts/wood(loc) - else - new /obj/item/weapon/table_parts(loc) - density = 0 - del(src) + destroy() /obj/structure/table/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) @@ -323,9 +292,9 @@ var/mob/living/M = G.affecting if (G.state < 2) if(user.a_intent == "hurt") - if (prob(5)) M.Weaken(5) - M.apply_damage(6) - visible_message("\red [G.assailant] slams [G.affecting] against \the [src]!") + if (prob(15)) M.Weaken(5) + M.apply_damage(8,def_zone = "head") + visible_message("\red [G.assailant] slams [G.affecting]'s face against \the [src]!") playsound(src.loc, 'sound/weapons/tablehit1.ogg', 50, 1) else user << "\red You need a better grip to do that!" @@ -341,10 +310,7 @@ user << "\blue Now disassembling table" playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) if(do_after(user,50)) - new /obj/item/weapon/table_parts( src.loc ) - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - //SN src = null - del(src) + destroy() return if(isrobot(user)) @@ -357,13 +323,10 @@ playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1) playsound(src.loc, "sparks", 50, 1) for(var/mob/O in viewers(user, 4)) - O.show_message("\blue The table was sliced apart by [user]!", 1, "\red You hear metal coming apart.", 2) - new /obj/item/weapon/table_parts( src.loc ) - del(src) - return + O.show_message("\blue The [src] was sliced apart by [user]!", 1, "\red You hear [src] coming apart.", 2) + destroy() user.drop_item(src) - //if(W && W.loc) W.loc = src.loc // Unnecessary - see: mob/proc/drop_item(atom) - Doohl return @@ -374,46 +337,7 @@ name = "wooden table" desc = "Do not apply fire to this. Rumour says it burns easily." icon_state = "wood_table" - - -/obj/structure/table/woodentable/attackby(obj/item/weapon/W as obj, mob/user as mob) - - if (istype(W, /obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = W - if(G.state<2) - user << "\red You need a better grip to do that!" - return - G.affecting.loc = src.loc - G.affecting.Weaken(5) - visible_message("\red [G.assailant] puts [G.affecting] on the table.") - del(W) - return - if (istype(W, /obj/item/weapon/wrench)) - user << "\blue Now disassembling the wooden table" - playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - sleep(50) - new /obj/item/weapon/table_parts/wood( src.loc ) - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - del(src) - return - if(isrobot(user)) - return - if(istype(W, /obj/item/weapon/melee/energy/blade)) - 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) - for(var/mob/O in viewers(user, 4)) - O.show_message("\blue The wooden table was sliced apart by [user]!", 1, "\red You hear wood coming apart.", 2) - new /obj/item/weapon/table_parts/wood( src.loc ) - del(src) - return - - user.drop_item(src) - //if(W && W.loc) W.loc = src.loc - return - + parts = /obj/item/weapon/table_parts/wood /* * Reinforced tables @@ -423,21 +347,10 @@ desc = "A version of the four legged table. It is stronger." icon_state = "reinf_table" var/status = 2 + parts = /obj/item/weapon/table_parts/reinforced /obj/structure/table/reinforced/attackby(obj/item/weapon/W as obj, mob/user as mob) - - if (istype(W, /obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = W - if(G.state<2) - user << "\red You need a better grip to do that!" - return - G.affecting.loc = src.loc - G.affecting.Weaken(5) - visible_message("\red [G.assailant] puts [G.affecting] on the table.") - del(W) - return - if (istype(W, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = W if(WT.remove_fuel(0, user)) @@ -456,40 +369,13 @@ user << "\blue Table strengthened" src.status = 2 return - if(isrobot(user)) - return - user.drop_item(src) - //if(W && W.loc) W.loc = src.loc return if (istype(W, /obj/item/weapon/wrench)) - if(src.status == 1) - user << "\blue Now disassembling the reinforced table" - playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) - if (do_after(user, 50)) - new /obj/item/weapon/table_parts/reinforced( src.loc ) - playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) - del(src) + if(src.status == 2) return - if(isrobot(user)) - return - - if(istype(W, /obj/item/weapon/melee/energy/blade)) - 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) - for(var/mob/O in viewers(user, 4)) - O.show_message("\blue The reinforced table was sliced apart by [user]!", 1, "\red You hear metal coming apart.", 2) - new /obj/item/weapon/table_parts/reinforced( src.loc ) - del(src) - return - - user.drop_item(src) - //if(W && W.loc) W.loc = src.loc - return + ..() /* * Racks