diff --git a/code/game/machinery/vending_types.dm b/code/game/machinery/vending_types.dm
index a7d4f679164..d01ff3e1beb 100644
--- a/code/game/machinery/vending_types.dm
+++ b/code/game/machinery/vending_types.dm
@@ -255,7 +255,7 @@
/obj/item/reagent_containers/food/drinks/cans/dr_gibb = 10,
/obj/item/reagent_containers/food/drinks/cans/root_beer = 10,
/obj/item/reagent_containers/food/drinks/cans/starkist = 10,
- /obj/item/reagent_containers/food/drinks/cans/waterbottle = 10,
+ /obj/item/reagent_containers/food/drinks/waterbottle = 10,
/obj/item/reagent_containers/food/drinks/cans/dyn = 10,
/obj/item/reagent_containers/food/drinks/cans/space_up = 10,
/obj/item/reagent_containers/food/drinks/cans/iced_tea = 10,
@@ -278,7 +278,7 @@
/obj/item/reagent_containers/food/drinks/cans/dr_gibb = 16,
/obj/item/reagent_containers/food/drinks/cans/root_beer = 13,
/obj/item/reagent_containers/food/drinks/cans/starkist = 15,
- /obj/item/reagent_containers/food/drinks/cans/waterbottle = 12,
+ /obj/item/reagent_containers/food/drinks/waterbottle = 12,
/obj/item/reagent_containers/food/drinks/cans/dyn = 18,
/obj/item/reagent_containers/food/drinks/cans/space_up = 15,
/obj/item/reagent_containers/food/drinks/cans/iced_tea = 13,
diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm
index 18902a8727b..4b4d9bbaf7a 100644
--- a/code/game/objects/items/trash.dm
+++ b/code/game/objects/items/trash.dm
@@ -139,9 +139,14 @@
/obj/item/trash/can
name = "used can"
- icon_state = "can-used"
+ icon_state = "cola"
drop_sound = 'sound/items/drop/soda.ogg'
pickup_sound = 'sound/items/pickup/soda.ogg'
+ randpixel = 4
+
+/obj/item/trash/can/Initialize()
+ . = ..()
+ randpixel_xy()
/obj/item/trash/tuna
name = "\improper Tuna Snax"
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index 16ea7003635..f80d3cf547f 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -493,7 +493,7 @@
/obj/structure/closet/crate/freezer/rations/fill()
for(var/i=1,i<=6,i++)
new /obj/item/reagent_containers/food/snacks/liquidfood(src)
- new /obj/item/reagent_containers/food/drinks/cans/waterbottle(src)
+ new /obj/item/reagent_containers/food/drinks/waterbottle(src)
/obj/structure/closet/crate/bin
name = "large bin"
diff --git a/code/modules/reagents/reagent_containers/food/cans.dm b/code/modules/reagents/reagent_containers/food/cans.dm
index 39602789bfb..5d69bc30a9a 100644
--- a/code/modules/reagents/reagent_containers/food/cans.dm
+++ b/code/modules/reagents/reagent_containers/food/cans.dm
@@ -4,6 +4,25 @@
flags = 0 //starts closed
drop_sound = 'sound/items/drop/soda.ogg'
pickup_sound = 'sound/items/pickup/soda.ogg'
+ desc_info = "Click it in your hand to open it.\
+ If it's carbonated and closed, you can shake it by clicking on it with harm intent. \
+ If it's empty, you can crush it on your forehead by selecting your head and clicking on yourself with harm intent. \
+ You can also crush cans on other people's foreheads as well."
+
+/obj/item/reagent_containers/food/drinks/cans/attack(mob/living/M, mob/user, var/target_zone)
+ if(iscarbon(M) && !reagents.total_volume && user.a_intent == I_HURT && target_zone == BP_HEAD)
+ if(M == user)
+ user.visible_message(SPAN_WARNING("[user] crushes the can of [src.name] on [user.get_pronoun(1)] forehead!"), SPAN_NOTICE("You crush the can of [src.name] on your forehead."))
+ else
+ user.visible_message(SPAN_WARNING("[user] crushes the can of [src.name] on [M]'s forehead!"), SPAN_NOTICE("You crush the can of [src.name] on [M]'s forehead."))
+ M.apply_damage(2,BRUTE,BP_HEAD) // ouch.
+ playsound(M,'sound/items/soda_crush.ogg', rand(10,50), TRUE)
+ var/obj/item/trash/can/crushed_can = new /obj/item/trash/can(M.loc)
+ crushed_can.icon_state = icon_state
+ qdel(src)
+ user.put_in_hands(crushed_can)
+ return TRUE
+ . = ..()
//DRINKS
@@ -14,16 +33,6 @@
center_of_mass = list("x"=16, "y"=10)
reagents_to_add = list(/datum/reagent/drink/space_cola = 30)
-/obj/item/reagent_containers/food/drinks/cans/waterbottle
- name = "bottled water"
- desc = "Introduced to the vending machines by Skrellian request, this water comes straight from the Martian poles."
- icon_state = "waterbottle"
- center_of_mass = list("x"=16, "y"=8)
- drop_sound = 'sound/items/drop/disk.ogg'
- pickup_sound = 'sound/items/pickup/disk.ogg'
-
- reagents_to_add = list(/datum/reagent/water = 30)
-
/obj/item/reagent_containers/food/drinks/cans/space_mountain_wind
name = "\improper Space Mountain Wind"
desc = "Blows right through you like a space wind."
@@ -148,7 +157,7 @@
/obj/item/reagent_containers/food/drinks/cans/zorahozm
name = "\improper High Octane Zorane Might"
- desc = "A can of fizzy, acidic energy, with plenty V'krexi additives. It tastes like the bottom of your mouth is being impaled by a freezing cold spear, a spear laced with bees and salt."
+ desc = "A can of fizzy, acidic energy, with plenty of V'krexi additives. Tastes like impaling the bottom of your mouth with a freezing cold spear laced with bees and salt."
icon_state = "hozm"
center_of_mass = list("x"=16, "y"=8)
@@ -156,7 +165,7 @@
/obj/item/reagent_containers/food/drinks/cans/zoravenom
name = "\improper Zo'ra Soda Sour Venom Grass (Diet!)"
- desc = "A diet can of Venom Grass flavored energy drink, with V'krexi additives. It still tastes like a cloud of stinging polytrinic bees, but calories are nowhere to be found."
+ desc = "A diet can of Venom Grass flavored energy drink, with V'krexi additives. Still tastes like a cloud of stinging polytrinic bees, but calories are nowhere to be found."
icon_state = "sourvenomgrass"
center_of_mass = list("x"=16, "y"=8)
@@ -212,7 +221,7 @@
/obj/item/reagent_containers/food/drinks/cans/dyn
name = "Cooling Breeze"
- desc = "The most refreshing thing you can find on the market, based on a Skrell medicinal plant. No salt or sugar. "
+ desc = "The most refreshing thing you can find on the market, based on a Skrell medicinal plant. No salt or sugar."
icon_state = "dyncan"
center_of_mass = list("x"=16, "y"=10)
reagents_to_add = list(/datum/reagent/drink/dynjuice/cold = 30)
diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm
index 5330e81fb1e..3e8d5bc815b 100644
--- a/code/modules/reagents/reagent_containers/food/drinks.dm
+++ b/code/modules/reagents/reagent_containers/food/drinks.dm
@@ -65,8 +65,8 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I
open(user)
/obj/item/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].", SPAN_NOTICE("You open \the [src] with an audible pop!"), "You can hear a pop,")
+ playsound(loc,'sound/items/soda_open.ogg', rand(10,50), 1)
+ user.visible_message("[user] opens \the [src].", SPAN_NOTICE("You open \the [src] with an audible pop!"), "You can hear a pop.")
flags |= OPENCONTAINER
/obj/item/reagent_containers/food/drinks/proc/boom(mob/user as mob)
@@ -276,6 +276,33 @@ If you add a drink with no empty icon sprite, ensure it is flagged as NO_EMPTY_I
else
is_liquid = TRUE
+/obj/item/reagent_containers/food/drinks/waterbottle
+ name = "bottled water"
+ desc = "Introduced to the vending machines by Skrellian request, this water comes straight from the Martian poles."
+ icon_state = "waterbottle"
+ flags = 0 //starts closed
+ center_of_mass = list("x"=16, "y"=8)
+ drop_sound = 'sound/items/drop/disk.ogg'
+ pickup_sound = 'sound/items/pickup/disk.ogg'
+
+ reagents_to_add = list(/datum/reagent/water = 30)
+
+//heehoo bottle flipping
+/obj/item/reagent_containers/food/drinks/waterbottle/throw_impact()
+ . = ..()
+ if(!QDELETED(src))
+ if(prob(10)) // landed upright
+ src.visible_message(SPAN_NOTICE("\The [src] lands upright!"))
+ if(prob(1)) // landed upright on ITS CAP
+ src.visible_message(SPAN_NOTICE("\The [src] lands upright on its cap!"))
+ animate(src, transform = matrix(prob(50)? 180 : -180, MATRIX_ROTATE), time = 3, loop = 0)
+ else // landed on it's side
+ animate(src, transform = matrix(prob(50)? 90 : -90, MATRIX_ROTATE), time = 3, loop = 0)
+
+/obj/item/reagent_containers/food/drinks/waterbottle/pickup()
+ . = ..()
+ animate(src, transform = null, time = 1, loop = 0)
+
/obj/item/reagent_containers/food/drinks/sillycup
name = "paper cup"
desc = "A paper water cup."
diff --git a/code/modules/reagents/reagent_containers/food/lunch.dm b/code/modules/reagents/reagent_containers/food/lunch.dm
index 3e44b8b480e..fa85e8f975f 100644
--- a/code/modules/reagents/reagent_containers/food/lunch.dm
+++ b/code/modules/reagents/reagent_containers/food/lunch.dm
@@ -54,7 +54,7 @@ var/list/lunchables_snacks_ = list(
var/list/lunchables_drinks_ = list(
/obj/item/reagent_containers/food/drinks/cans/cola,
- /obj/item/reagent_containers/food/drinks/cans/waterbottle,
+ /obj/item/reagent_containers/food/drinks/waterbottle,
/obj/item/reagent_containers/food/drinks/cans/space_mountain_wind,
/obj/item/reagent_containers/food/drinks/cans/dr_gibb,
/obj/item/reagent_containers/food/drinks/cans/starkist,
diff --git a/html/changelogs/wezzy_cancrush_bottleflip.yml b/html/changelogs/wezzy_cancrush_bottleflip.yml
new file mode 100644
index 00000000000..f0a79bd33a9
--- /dev/null
+++ b/html/changelogs/wezzy_cancrush_bottleflip.yml
@@ -0,0 +1,42 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+# balance
+# admin
+# backend
+# security
+# refactor
+#################################
+
+# Your name.
+author: Wowzewow (Wezzy)
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - rscadd: "You can now crush cans on your head, so long as it's empty and you are targeting something's head with harm intent."
+ - rscadd: "You can now bottle flip using bottled water. Just throw."
diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi
index ba0c3c0b646..9f2a35b1523 100644
Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ
diff --git a/icons/obj/trash.dmi b/icons/obj/trash.dmi
index 3ce3dde1652..60011e22338 100644
Binary files a/icons/obj/trash.dmi and b/icons/obj/trash.dmi differ
diff --git a/maps/aurora/aurora-1_centcomm.dmm b/maps/aurora/aurora-1_centcomm.dmm
index 0002ecd463b..504f3b70efd 100644
--- a/maps/aurora/aurora-1_centcomm.dmm
+++ b/maps/aurora/aurora-1_centcomm.dmm
@@ -2446,11 +2446,11 @@
/obj/item/device/suit_cooling_unit{
pixel_x = 8
},
-/obj/item/reagent_containers/food/drinks/cans/waterbottle{
+/obj/item/reagent_containers/food/drinks/waterbottle{
pixel_x = -6;
pixel_y = 4
},
-/obj/item/reagent_containers/food/drinks/cans/waterbottle{
+/obj/item/reagent_containers/food/drinks/waterbottle{
pixel_x = -6;
pixel_y = 4
},
@@ -5438,11 +5438,11 @@
/area/shuttle/administration/centcom)
"auh" = (
/obj/structure/closet/crate/freezer/rations,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
/obj/effect/floor_decal/corner/red{
dir = 6
},
@@ -18419,7 +18419,7 @@
/obj/structure/table/wood,
/obj/item/material/ashtray/glass,
/obj/item/storage/box/fancy/cigarettes/dromedaryco,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
/turf/unsimulated/floor{
icon_state = "floor"
},
@@ -24445,7 +24445,7 @@
/turf/simulated/floor/plating,
/area/shuttle/merchant/start)
"jqI" = (
-/obj/item/reagent_containers/food/drinks/cans/waterbottle{
+/obj/item/reagent_containers/food/drinks/waterbottle{
pixel_x = -6;
pixel_y = 4
},
diff --git a/maps/aurora/aurora-4_mainlevel.dmm b/maps/aurora/aurora-4_mainlevel.dmm
index eb88d061b81..96a9b6e6e74 100644
--- a/maps/aurora/aurora-4_mainlevel.dmm
+++ b/maps/aurora/aurora-4_mainlevel.dmm
@@ -64710,26 +64710,26 @@
/area/maintenance/vault)
"pSX" = (
/obj/structure/table/wood,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle{
+/obj/item/reagent_containers/food/drinks/waterbottle{
pixel_x = -7;
pixel_y = 10
},
-/obj/item/reagent_containers/food/drinks/cans/waterbottle{
+/obj/item/reagent_containers/food/drinks/waterbottle{
pixel_y = 10
},
-/obj/item/reagent_containers/food/drinks/cans/waterbottle{
+/obj/item/reagent_containers/food/drinks/waterbottle{
pixel_x = 7;
pixel_y = 10
},
-/obj/item/reagent_containers/food/drinks/cans/waterbottle{
+/obj/item/reagent_containers/food/drinks/waterbottle{
layer = 3.1;
pixel_x = -7;
pixel_y = 4
},
-/obj/item/reagent_containers/food/drinks/cans/waterbottle{
+/obj/item/reagent_containers/food/drinks/waterbottle{
pixel_y = 4
},
-/obj/item/reagent_containers/food/drinks/cans/waterbottle{
+/obj/item/reagent_containers/food/drinks/waterbottle{
pixel_x = 7;
pixel_y = 4
},
diff --git a/maps/aurora/aurora-6_surface.dmm b/maps/aurora/aurora-6_surface.dmm
index e09489cd901..b031c5ff0e4 100644
--- a/maps/aurora/aurora-6_surface.dmm
+++ b/maps/aurora/aurora-6_surface.dmm
@@ -24449,26 +24449,26 @@
/obj/structure/table/standard,
/obj/item/storage/box/fancy/cookiesnack,
/obj/item/storage/box/fancy/cookiesnack,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle{
+/obj/item/reagent_containers/food/drinks/waterbottle{
layer = 3.01;
pixel_x = -8;
pixel_y = 14
},
-/obj/item/reagent_containers/food/drinks/cans/waterbottle{
+/obj/item/reagent_containers/food/drinks/waterbottle{
layer = 3.01;
pixel_x = -1;
pixel_y = 14
},
-/obj/item/reagent_containers/food/drinks/cans/waterbottle{
+/obj/item/reagent_containers/food/drinks/waterbottle{
layer = 3.01;
pixel_x = 6;
pixel_y = 14
},
-/obj/item/reagent_containers/food/drinks/cans/waterbottle{
+/obj/item/reagent_containers/food/drinks/waterbottle{
pixel_x = -5;
pixel_y = 17
},
-/obj/item/reagent_containers/food/drinks/cans/waterbottle{
+/obj/item/reagent_containers/food/drinks/waterbottle{
pixel_x = 2;
pixel_y = 17
},
diff --git a/maps/exodus/exodus-2_centcomm.dmm b/maps/exodus/exodus-2_centcomm.dmm
index a63e45555a9..15779745e6c 100644
--- a/maps/exodus/exodus-2_centcomm.dmm
+++ b/maps/exodus/exodus-2_centcomm.dmm
@@ -19043,7 +19043,7 @@
/obj/structure/table/wood,
/obj/item/material/ashtray/glass,
/obj/item/storage/box/fancy/cigarettes/dromedaryco,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
/turf/unsimulated/floor{
icon_state = "floor"
},
diff --git a/maps/templates/distress/iac.dmm b/maps/templates/distress/iac.dmm
index 1e39ded8e71..91efaaf581d 100644
--- a/maps/templates/distress/iac.dmm
+++ b/maps/templates/distress/iac.dmm
@@ -54,16 +54,16 @@
/obj/item/reagent_containers/food/snacks/skrellsnacks,
/obj/item/reagent_containers/food/snacks/nathisnack,
/obj/item/reagent_containers/food/snacks/nathisnack,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
/obj/random/plushie,
/obj/random/plushie,
/turf/unsimulated/floor{
diff --git a/maps/templates/distress/kataphracts.dmm b/maps/templates/distress/kataphracts.dmm
index 47369b0121e..809282e90c7 100644
--- a/maps/templates/distress/kataphracts.dmm
+++ b/maps/templates/distress/kataphracts.dmm
@@ -74,16 +74,16 @@
/obj/item/reagent_containers/food/snacks/skrellsnacks,
/obj/item/reagent_containers/food/snacks/nathisnack,
/obj/item/reagent_containers/food/snacks/nathisnack,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
-/obj/item/reagent_containers/food/drinks/cans/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
+/obj/item/reagent_containers/food/drinks/waterbottle,
/turf/unsimulated/floor{
icon_state = "platebot"
},
diff --git a/sound/items/soda_crush.ogg b/sound/items/soda_crush.ogg
new file mode 100644
index 00000000000..834c929b04c
Binary files /dev/null and b/sound/items/soda_crush.ogg differ
diff --git a/sound/effects/canopen.ogg b/sound/items/soda_open.ogg
similarity index 100%
rename from sound/effects/canopen.ogg
rename to sound/items/soda_open.ogg