diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index bb342cc6ae0..0b9df0bdae6 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -11,88 +11,88 @@ volume = 50 var/shaken = 0 - on_reagent_change() +/obj/item/weapon/reagent_containers/food/drinks/on_reagent_change() + return + +/obj/item/weapon/reagent_containers/food/drinks/attack_self(mob/user as mob) + if(!is_open_container()) + if(user.a_intent == I_HURT && !shaken) + shaken = 1 + user.visible_message("[user] shakes the [src]!", "You shake the [src]!") + playsound(loc,'sound/items/Shaking_Soda_Can.ogg', rand(10,50), 1) + return + if(shaken) + boom(user) + else + open(user) + +/obj/item/weapon/reagent_containers/food/drinks/proc/open(mob/user as mob) + playsound(loc,'sound/effects/canopen.ogg', rand(10,50), 1) + user.visible_message("[user] opens the [src].", "You open the [src] with an audible pop!", "You can hear a pop,") + flags |= OPENCONTAINER + +/obj/item/weapon/reagent_containers/food/drinks/proc/boom(mob/user as mob) + user.visible_message("The [src] explodes all over [user] as they open it!","The [src] explodes all over you as you open it!","You can hear a soda can explode.") + playsound(loc,'sound/items/Soda_Burst.ogg', rand(20,50), 1) + QDEL_NULL(reagents) + flags |= OPENCONTAINER + shaken = 0 + +/obj/item/weapon/reagent_containers/food/drinks/attack(mob/M as mob, mob/user as mob, def_zone) + if(force && !(flags & NOBLUDGEON) && user.a_intent == I_HURT) + return ..() + + if(standard_feed_mob(user, M)) return - attack_self(mob/user as mob) - if(!is_open_container()) - if(user.a_intent == I_HURT && !shaken) - shaken = 1 - user << "You shake the [src]!" - playsound(loc,'sound/items/Shaking_Soda_Can.ogg', rand(10,50), 1) - return - if(shaken) - boom(user) - else - open(user) + return 0 - proc/open(mob/user) - playsound(loc,'sound/effects/canopen.ogg', rand(10,50), 1) - user << "You open [src] with an audible pop!" - flags |= OPENCONTAINER +/obj/item/weapon/reagent_containers/food/drinks/afterattack(obj/target, mob/user, proximity) + if(!proximity) + return + if(standard_dispenser_refill(user, target)) + return + if(standard_pour_into(user, target)) + return + return ..() - proc/boom(user) - user << "The [src] explodes all over you as you open it!" - playsound(loc,'sound/items/Soda_Burst.ogg', rand(20,50), 1) - QDEL_NULL(reagents) - flags |= OPENCONTAINER - shaken = 0 +/obj/item/weapon/reagent_containers/food/drinks/standard_feed_mob(var/mob/user, var/mob/target) + if(!is_open_container()) + user << "You need to open [src]!" + return 1 + return ..() - attack(mob/M as mob, mob/user as mob, def_zone) - if(force && !(flags & NOBLUDGEON) && user.a_intent == I_HURT) - return ..() +/obj/item/weapon/reagent_containers/food/drinks/standard_dispenser_refill(var/mob/user, var/obj/structure/reagent_dispensers/target) + if(!is_open_container()) + user << "You need to open [src]!" + return 1 + return ..() - if(standard_feed_mob(user, M)) - return +/obj/item/weapon/reagent_containers/food/drinks/standard_pour_into(var/mob/user, var/atom/target) + if(!is_open_container()) + user << "You need to open [src]!" + return 1 + return ..() - return 0 +/obj/item/weapon/reagent_containers/food/drinks/self_feed_message(var/mob/user) + user << "You swallow a gulp from \the [src]." - afterattack(obj/target, mob/user, proximity) - if(!proximity) return +/obj/item/weapon/reagent_containers/food/drinks/feed_sound(var/mob/user) + playsound(user.loc, 'sound/items/drink.ogg', rand(10, 50), 1) - if(standard_dispenser_refill(user, target)) - return - if(standard_pour_into(user, target)) - return - return ..() - - standard_feed_mob(var/mob/user, var/mob/target) - if(!is_open_container()) - user << "You need to open [src]!" - return 1 - return ..() - - standard_dispenser_refill(var/mob/user, var/obj/structure/reagent_dispensers/target) - if(!is_open_container()) - user << "You need to open [src]!" - return 1 - return ..() - - standard_pour_into(var/mob/user, var/atom/target) - if(!is_open_container()) - user << "You need to open [src]!" - return 1 - return ..() - - self_feed_message(var/mob/user) - user << "You swallow a gulp from \the [src]." - - feed_sound(var/mob/user) - playsound(user.loc, 'sound/items/drink.ogg', rand(10, 50), 1) - - examine(mob/user) - if(!..(user, 1)) - return - if(!reagents || reagents.total_volume == 0) - user << "\The [src] is empty!" - else if (reagents.total_volume <= volume * 0.25) - user << "\The [src] is almost empty!" - else if (reagents.total_volume <= volume * 0.66) - user << "\The [src] is half full!" - else if (reagents.total_volume <= volume * 0.90) - user << "\The [src] is almost full!" - else - user << "\The [src] is full!" +/obj/item/weapon/reagent_containers/food/drinks/examine(mob/user) + if(!..(user, 1)) + return + if(!reagents || reagents.total_volume == 0) + user << "\The [src] is empty!" + else if (reagents.total_volume <= volume * 0.25) + user << "\The [src] is almost empty!" + else if (reagents.total_volume <= volume * 0.66) + user << "\The [src] is half full!" + else if (reagents.total_volume <= volume * 0.90) + user << "\The [src] is almost full!" + else + user << "\The [src] is full!" //////////////////////////////////////////////////////////////////////////////// diff --git a/html/changelogs/arrow768-sodacans.yml b/html/changelogs/arrow768-sodacans.yml new file mode 100644 index 00000000000..c7527ee98a0 --- /dev/null +++ b/html/changelogs/arrow768-sodacans.yml @@ -0,0 +1,5 @@ +author: Arrow768 +delete-after: True + +changes: + - bugfix: "You can now see if someone opens a sodacan that has been shaken."