diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm index 257b52e098e..ca7f48d38be 100644 --- a/code/defines/obj/weapon.dm +++ b/code/defines/obj/weapon.dm @@ -352,6 +352,12 @@ icon_state = "wood_tableparts" flags = null +/obj/item/weapon/table_parts/wood/poker + name = "poker table parts" + desc = "keep away from fire, and keep near seedy dealers" + icon_state = "poker_tableparts" + flags = null + /obj/item/weapon/module icon = 'icons/obj/module.dmi' icon_state = "std_module" diff --git a/code/game/objects/items/weapons/table_rack_parts.dm b/code/game/objects/items/weapons/table_rack_parts.dm index 042efc84203..7681e5bb0af 100644 --- a/code/game/objects/items/weapons/table_rack_parts.dm +++ b/code/game/objects/items/weapons/table_rack_parts.dm @@ -56,12 +56,37 @@ new /obj/item/stack/sheet/wood( user.loc ) del(src) + if (istype(W, /obj/item/stack/tile/grass)) + var/obj/item/stack/tile/grass/Grass = W + Grass.amount -= 1 + new /obj/item/weapon/table_parts/wood/poker( user.loc ) + visible_message("[user] adds grass to the wooden table parts") + del(src) + /obj/item/weapon/table_parts/wood/attack_self(mob/user as mob) new /obj/structure/table/woodentable( user.loc ) user.drop_item() del(src) return + +/* + * Poker Table Parts + */ + +/obj/item/weapon/table_parts/wood/poker/attackby(obj/item/weapon/W as obj, mob/user as mob) + if (istype(W, /obj/item/weapon/wrench)) + new /obj/item/stack/sheet/wood( user.loc ) + new /obj/item/stack/tile/grass( user.loc ) + del(src) + +/obj/item/weapon/table_parts/wood/poker/attack_self(mob/user as mob) + new /obj/structure/table/woodentable/poker( user.loc ) + user.drop_item() + del(src) + return + + /* * Rack Parts */ diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 8b63badad6c..5c065b65394 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/material = "Metal" /obj/structure/table/New() ..() @@ -277,9 +278,9 @@ return -/obj/structure/table/attackby(obj/item/W, mob/user) - if (istype(W, /obj/item/weapon/grab) && get_dist(src, user) < 2) - var/obj/item/weapon/grab/G = W +/obj/structure/table/attackby(obj/item/I, mob/user) + if (istype(I, /obj/item/weapon/grab) && get_dist(src, user) < 2) + var/obj/item/weapon/grab/G = I if(G.affecting.buckled) user << "[G.affecting] is buckled to [G.affecting.buckled]!" return @@ -292,36 +293,85 @@ G.affecting.Weaken(5) G.affecting.visible_message("[G.assailant] pushes [G.affecting] onto [src].", \ "[G.assailant] pushes [G.affecting] onto [src].") - del(W) + del(I) return - if (istype(W, /obj/item/weapon/wrench)) - 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) - return + if (istype(I, /obj/item/weapon/wrench)) + table_destroy(2) 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() + 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) - 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 + table_destroy(1) + +/obj/structure/table/proc/table_destroy(var/destroy_type, var/mob/user as mob) + +/* +Destroy type values: +1 = Destruction, Actually destroyed +2 = Deconstruction. +*/ + + if(destroy_type == 1) + if(material == "Metal") + 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 + + if(material == "Wood") + for(var/mob/O in viewers(user, 4)) + O.show_message("\blue The 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 + + if(material == "Reinforced Metal") + for(var/mob/O in viewers(user, 4)) + O.show_message("\blue The table was sliced apart by [user]!", 1, "\red You hear wood coming apart.", 2) + new /obj/item/weapon/table_parts/reinforced( src.loc ) + del(src) + return + + + if(destroy_type == 2) + if(material == "Metal") + 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) + del(src) + return + + if(material == "Wood") + user << "\blue Now disassembling the wooden table" + playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) + if (do_after(user, 50)) + new /obj/item/weapon/table_parts/wood( src.loc ) + playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1) + del(src) + return + + if(material == "Reinforced Metal") + var/obj/structure/table/reinforced/RT = src + if(RT.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) + return + - user.drop_item(src) - return 1 /* @@ -331,111 +381,15 @@ name = "wooden table" desc = "Do not apply fire to this. Rumour says it burns easily." icon_state = "woodtable" + material = "Wood" -/obj/structure/table/woodentable/attackby(obj/item/I as obj, mob/user as mob) - - if (istype(I, /obj/item/stack/tile/grass)) - del(I) - new /obj/structure/table/woodentable/poker( src.loc ) - del(src) - visible_message("[user] adds the grass to the wooden table") - - - if (istype(I, /obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = I - if(G.affecting.buckled) - user << "[G.affecting] is buckled to [G.affecting.buckled]!" - return - if(G.state < GRAB_AGGRESSIVE) - user << "You need a better grip to do that!" - return - if(!G.confirm()) - return - G.affecting.loc = src.loc - G.affecting.Weaken(5) - visible_message("\red [G.assailant] puts [G.affecting] on the table.") - del(I) - return - if (istype(I, /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(I, /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 1 - /obj/structure/table/woodentable/poker //No specialties, Just a mapping object. name = "gambling table" desc = "A seedy table for seedy dealings in seedy places." icon_state = "pokertable" -/obj/structure/table/woodentable/poker/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.affecting.buckled) - user << "[G.affecting] is buckled to [G.affecting.buckled]!" - return - if(G.state < GRAB_AGGRESSIVE) - user << "You need a better grip to do that!" - return - if(!G.confirm()) - 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 ) - new /obj/item/stack/tile/grass( 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 ) - new /obj/item/stack/tile/grass( src.loc) - del(src) - return - - user.drop_item(src) - return 1 - - /* * Reinforced tables */ @@ -443,26 +397,13 @@ name = "reinforced table" desc = "A version of the four legged table. It is stronger." icon_state = "reinftable" + material = "Reinforced Metal" var/status = 2 /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.affecting.buckled) - user << "[G.affecting] is buckled to [G.affecting.buckled]!" - return - if(G.state < GRAB_AGGRESSIVE) - user << "You need a better grip to do that!" - return - if(!G.confirm()) - 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 @@ -482,40 +423,6 @@ 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) - 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 1 - /* * Racks @@ -621,3 +528,4 @@ del(src) /obj/structure/rack/attack_tk() // no telehulk sorry return + diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index 281552c3050..bf9bc35bc62 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ