diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index a1a68ff5cf7..d40baf16877 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -202,7 +202,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
to_chat(user, msg)
-/obj/item/attack_hand(mob/user as mob)
+/obj/item/attack_hand(mob/user as mob, pickupfireoverride = FALSE)
if(!user) return 0
if(hasorgans(user))
var/mob/living/carbon/human/H = user
@@ -216,7 +216,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/goonstation/effects/fire.d
to_chat(user, "You try to move your [temp.name], but cannot!")
return 0
- if(burn_state == ON_FIRE)
+ if(burn_state == ON_FIRE && !pickupfireoverride)
var/mob/living/carbon/human/H = user
if(istype(H))
if(H.gloves && (H.gloves.max_heat_protection_temperature > 360))
diff --git a/code/modules/food_and_drinks/drinks/drinks/shotglass.dm b/code/modules/food_and_drinks/drinks/drinks/shotglass.dm
index 42781cd1e57..e44856951f0 100644
--- a/code/modules/food_and_drinks/drinks/drinks/shotglass.dm
+++ b/code/modules/food_and_drinks/drinks/drinks/shotglass.dm
@@ -1,3 +1,5 @@
+#define SHOT_FLAME_TEMPERATURE 700
+
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass
name = "shot glass"
desc = "No glasses were shot in the making of this glass."
@@ -5,10 +7,16 @@
amount_per_transfer_from_this = 15
volume = 15
materials = list(MAT_GLASS=100)
+ var/light_intensity = 2
+ light_color = LIGHT_COLOR_LIGHTBLUE
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass/on_reagent_change()
- overlays.Cut()
+ if(!isShotFlammable() && burn_state == ON_FIRE)
+ extinguish()
+ update_icon()
+/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass/update_icon()
+ overlays.Cut()
if(reagents.total_volume)
var/image/filling = image('icons/obj/reagentfillings.dmi', src, "[icon_state]1")
@@ -20,9 +28,77 @@
filling.icon_state = "[icon_state]5"
if(80 to INFINITY)
filling.icon_state = "[icon_state]12"
-
filling.icon += mix_color_from_reagents(reagents.reagent_list)
overlays += filling
name = "shot glass of " + reagents.get_master_reagent_name() //No matter what, the glass will tell you the reagent's name. Might be too abusable in the future.
+ if(burn_state == ON_FIRE)
+ overlays += "shotglass_fire"
+ name = "flaming [name]"
else
name = "shot glass"
+
+/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass/proc/clumsilyDrink(mob/living/carbon/human/user) //Clowns beware
+ if(burn_state != ON_FIRE)
+ return
+ user.visible_message("[user] pours [src] all over themself!", "You pour [src] all over yourself!", "You hear a 'whoompf' and a sizzle.")
+ extinguish(TRUE)
+ reagents.reaction(user, TOUCH)
+ reagents.clear_reagents()
+ user.IgniteMob()
+
+/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass/proc/isShotFlammable()
+ var/datum/reagent/R = reagents.get_master_reagent()
+ if(istype(R, /datum/reagent/consumable/ethanol))
+ var/datum/reagent/consumable/ethanol/A = R
+ if(A.volume >= 5 && A.alcohol_perc >= 0.35) //Only an approximation to if something's flammable but it will do
+ return TRUE
+
+/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass/fire_act(global_overlay = FALSE)
+ if(!isShotFlammable() || burn_state == ON_FIRE) //You can't light a shot that's not flammable!
+ return
+ ..()
+ set_light(light_intensity, null, light_color)
+ visible_message("[src] begins to burn with a blue hue!")
+ update_icon()
+
+/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass/extinguish(silent = FALSE)
+ ..()
+ set_light(0)
+ if(!silent)
+ visible_message("The dancing flame on [src] dies out.")
+ update_icon()
+
+/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass/burn() //Let's override fire deleting the reagents inside the shot
+ return
+
+/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass/attack(mob/living/carbon/human/user)
+ if((CLUMSY in user.mutations) && prob(50) && burn_state == ON_FIRE)
+ clumsilyDrink(user)
+ else
+ ..()
+
+/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass/attackby(obj/item/W)
+ ..()
+ if(is_hot(W) >= 600)
+ fire_act()
+
+/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass/attack_hand(mob/user, pickupfireoverride = TRUE)
+ ..()
+
+/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass/attack_self(mob/living/carbon/human/user)
+ ..()
+ if(burn_state != ON_FIRE)
+ return
+ if((CLUMSY in user.mutations) && prob(50))
+ clumsilyDrink(user)
+ else
+ user.visible_message("[user] places their hand over [src] to put it out!", "You use your hand to extinguish [src]!")
+ extinguish()
+
+/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass/MouseDrop(mob/living/carbon/human/user)
+ if(!ishuman(user))
+ return
+ if((CLUMSY in user.mutations) && prob(50) && burn_state == ON_FIRE)
+ clumsilyDrink(user)
+ else
+ ..()
diff --git a/code/modules/reagents/chemistry/reagents/alcohol.dm b/code/modules/reagents/chemistry/reagents/alcohol.dm
index 2ba73d2a127..63c8275afea 100644
--- a/code/modules/reagents/chemistry/reagents/alcohol.dm
+++ b/code/modules/reagents/chemistry/reagents/alcohol.dm
@@ -424,6 +424,18 @@
drink_desc = "Does... does this mean that Arthur and Ford are on the station? Oh joy."
taste_message = "the number fourty two"
+/datum/reagent/consumable/ethanol/flaming_homer
+ name = "Flaming Moe"
+ id = "flamingmoe"
+ description = "This appears to be a mixture of various alcohols blended with prescription medicine. It is lightly toasted..."
+ reagent_state = LIQUID
+ color = "#58447f" //rgb: 88, 66, 127
+ alcohol_perc = 0.5
+ drink_icon = "flamingmoeglass"
+ drink_name = "Flaming Moe"
+ drink_desc = "Happiness is just a Flaming Moe away!"
+ taste_message = "caramelised booze and sweet, salty medicine"
+
/datum/reagent/consumable/ethanol/brave_bull
name = "Brave Bull"
id = "bravebull"
diff --git a/code/modules/reagents/chemistry/recipes/drinks.dm b/code/modules/reagents/chemistry/recipes/drinks.dm
index b8d31e55e1c..c348db060ff 100644
--- a/code/modules/reagents/chemistry/recipes/drinks.dm
+++ b/code/modules/reagents/chemistry/recipes/drinks.dm
@@ -224,6 +224,16 @@
result_amount = 5
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
+/datum/chemical_reaction/flaming_homer
+ name = "Flaming Moe"
+ id = "flamingmoe"
+ result = "flamingmoe"
+ required_reagents = list("vodka" = 1, "gin" = 1, "cognac" = 1, "tequila" = 1, "salglu_solution" = 1) //Close enough
+ min_temp = 374 //Fire makes it good!
+ result_amount = 5
+ mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
+ mix_message = "The concoction bursts into flame!"
+
/datum/chemical_reaction/brave_bull
name = "Brave Bull"
id = "bravebull"
diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi
index 4008e17b3cf..8c75c1bc317 100644
Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ