From ccbe2ca904ed239a01f753a9fda3bb4f3527d2ef Mon Sep 17 00:00:00 2001 From: Tastyfish Date: Sun, 10 Apr 2016 17:20:09 -0400 Subject: [PATCH] Makes cans crushable by humans and janiborgs --- .../reagents/reagent_containers/food/cans.dm | 69 ++++++++++++------- 1 file changed, 43 insertions(+), 26 deletions(-) diff --git a/code/modules/reagents/reagent_containers/food/cans.dm b/code/modules/reagents/reagent_containers/food/cans.dm index 9aaf72b6f8c..f257ea34f20 100644 --- a/code/modules/reagents/reagent_containers/food/cans.dm +++ b/code/modules/reagents/reagent_containers/food/cans.dm @@ -1,36 +1,53 @@ /obj/item/weapon/reagent_containers/food/drinks/cans var canopened = 0 - New() - ..() - flags ^= OPENCONTAINER +/obj/item/weapon/reagent_containers/food/drinks/cans/New() + ..() + flags &= ~OPENCONTAINER - attack_self(mob/user as mob) - if (canopened == 0) - playsound(src.loc,'sound/effects/canopen.ogg', rand(10,50), 1) - to_chat(user, "You open the drink with an audible pop!") - canopened = 1 - flags |= OPENCONTAINER - else - return +/obj/item/weapon/reagent_containers/food/drinks/cans/attack_self(mob/user as mob) + if (canopened == 0) + playsound(src.loc,'sound/effects/canopen.ogg', rand(10,50), 1) + to_chat(user, "You open the drink with an audible pop!") + canopened = 1 + flags |= OPENCONTAINER - attack(mob/M as mob, mob/user as mob, def_zone) - if (canopened == 0) - to_chat(user, "You need to open the drink!") - return - return ..(M, user, def_zone) +/obj/item/weapon/reagent_containers/food/drinks/cans/proc/crush(mob/user) + playsound(user.loc, 'sound/weapons/pierce.ogg', rand(10, 50), 1) + var/obj/item/trash/can/crushed_can = new /obj/item/trash/can(user.loc) + crushed_can.icon_state = icon_state + qdel(src) + return crushed_can +/obj/item/weapon/reagent_containers/food/drinks/cans/attack(mob/M as mob, mob/user as mob, proximity) + if(canopened == 0) + to_chat(user, "You need to open the drink!") + return + else if(M == user && !src.reagents.total_volume && user.a_intent == "harm" && user.zone_sel.selecting == "head") + user.visible_message("[user] crushes the can of [src] on \his forehead!", "You crush the can of [src] on your forehead.") + crush(user) + return + return ..() - afterattack(obj/target, mob/user, proximity) - if(!proximity) return - if(istype(target, /obj/structure/reagent_dispensers) && (canopened == 0)) - to_chat(user, "You need to open the drink!") - return - else if(target.is_open_container() && (canopened == 0)) - to_chat(user, "You need to open the drink!") - return - else - return ..(target, user, proximity) +/obj/item/weapon/reagent_containers/food/drinks/cans/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/weapon/storage/bag/trash/cyborg)) + user.visible_message("[user] crushes the can of [src] in their trash compactor.", "You crush the can of [src] in your trash compactor.") + var/obj/can = crush(user) + can.attackby(I, user, params) + return 1 + ..() + +/obj/item/weapon/reagent_containers/food/drinks/cans/afterattack(obj/target, mob/user, proximity) + if(!proximity) + return + if(istype(target, /obj/structure/reagent_dispensers) && (canopened == 0)) + to_chat(user, "You need to open the drink!") + return + else if(target.is_open_container() && (canopened == 0)) + to_chat(user, "You need to open the drink!") + return + else + return ..(target, user, proximity) /* examine(mob/user) if(!..(user, 1))