diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index 3aea31b9366..3900ba2ba33 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -1196,12 +1196,6 @@ var/global/list/common_tools = list(
return 0
if(istype(W, /obj/item/device/assembly/igniter))
return 1000
- if(istype(W, /obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass))
- var/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass/G = W
- if(G.on_fire)
- return 700
- else
- return 0
else
return 0
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index a1a68ff5cf7..95a48aab38d 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, var/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/game/objects/items/weapons/cigs.dm b/code/game/objects/items/weapons/cigs.dm
index 547bc6e1f8d..766fe92c1ee 100644
--- a/code/game/objects/items/weapons/cigs.dm
+++ b/code/game/objects/items/weapons/cigs.dm
@@ -75,11 +75,24 @@ LIGHTERS ARE IN LIGHTERS.DM
if(Z.lit)
light("With a single flick of their wrist, [user] smoothly lights their [name] with their [W]. Damn they're cool.")
+ else if(istype(W, /obj/item/weapon/lighter))
+ var/obj/item/weapon/lighter/L = W
+ if(L.lit)
+ light("After some fiddling, [user] manages to light their [name] with [W].")
+
+ else if(istype(W, /obj/item/weapon/match))
+ var/obj/item/weapon/match/M = W
+ if(M.lit == 1)
+ light("[user] lights their [name] with their [W].")
+
else if(istype(W, /obj/item/weapon/melee/energy/sword/saber))
var/obj/item/weapon/melee/energy/sword/saber/S = W
if(S.active)
light("[user] swings their [W], barely missing their nose. They light their [name] in the process.")
+ else if(istype(W, /obj/item/device/assembly/igniter))
+ light("[user] fiddles with [W], and manages to light their [name].")
+
else if(istype(W, /obj/item/weapon/gun/magic/wand/fireball))
var/obj/item/weapon/gun/magic/wand/fireball/F = W
if(F.charges)
@@ -90,8 +103,6 @@ LIGHTERS ARE IN LIGHTERS.DM
explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2)
F.charges--
- else if(is_hot(W) > 600)
- light("After some fiddling, [user] manages to light their [name] with [W].")
//can't think of any other way to update the overlays :<
user.update_inv_wear_mask()
diff --git a/code/modules/food_and_drinks/drinks/drinks/shotglass.dm b/code/modules/food_and_drinks/drinks/drinks/shotglass.dm
index e0f6b8be47c..55440cdd7bb 100644
--- a/code/modules/food_and_drinks/drinks/drinks/shotglass.dm
+++ b/code/modules/food_and_drinks/drinks/drinks/shotglass.dm
@@ -6,22 +6,17 @@
icon_state = "shotglass"
amount_per_transfer_from_this = 15
volume = 15
- var/on_fire
materials = list(MAT_GLASS=100)
var/light_intensity = 2
light_color = LIGHT_COLOR_LIGHTBLUE
-/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass/Destroy()
- processing_objects.Remove(src)
- return ..()
-
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass/on_reagent_change()
- handleFlaming()
+ 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")
@@ -33,91 +28,78 @@
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(on_fire)
+ if(burn_state == ON_FIRE)
overlays += "shotglass_fire"
name = "flaming [name]"
else
name = "shot glass"
-/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass/attackby(obj/item/W, mob/living/carbon/human/user)
- ..()
- handleFlaming(W, user)
+/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.")
+ reagents.reaction(user, TOUCH)
+ reagents.clear_reagents()
+ user.IgniteMob()
+ extinguish(silent = TRUE)
-/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass/proc/handleFlaming(obj/item/W, mob/living/carbon/human/user)
- if(!reagents && on_fire) //If no reagents exist inside the shot, it will obviously not sustain a burn
- extinguishShot()
- else if(!canBeFlaming() && on_fire) //If it's on fire, but can't sustain the flame, put it out
- extinguishShot()
- else if(canBeFlaming() && !on_fire && is_hot(W) > 300) //if it can burn yet not on fire, and is attacked by something hot, set it alight
- user.visible_message("[user] sets [src] alight!", "You set [src] alight!", "You hear a gentle crackling.")
- lightShot()
-
-/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass/proc/canBeFlaming()
+/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/proc/lightShot(var/silent)
- on_fire = TRUE
- processing_objects.Add(src) //So it can do stuff like set plasma clouds on fire
+/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass/fire_act(global_overlay = FALSE, var/silent = 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)
if(!silent)
visible_message("[src] begins to burn with a blue hue!")
update_icon()
-/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass/proc/extinguishShot(var/silent)
- on_fire = FALSE
- processing_objects.Remove(src)
+/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass/extinguish(var/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/proc/clumsilyDrink(mob/living/carbon/human/user) //Clowns beware
- if(!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.")
- reagents.reaction(user, TOUCH)
- reagents.clear_reagents()
- user.adjust_fire_stacks(reagents.total_volume/10)
- user.IgniteMob()
- extinguishShot(TRUE)
+/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/process()
- if(on_fire)
- reagents.chem_temp = min(reagents.chem_temp + 10, SHOT_FLAME_TEMPERATURE)
- reagents.handle_reactions()
- var/turf/L = get_turf(src)
- if(L)
- L.hotspot_expose(SHOT_FLAME_TEMPERATURE, 5)
- 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
- processing_objects.Remove(src)
+ ..()
+
+/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(!on_fire)
+ 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]!")
- extinguishShot()
-
-/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass/attack(mob/living/carbon/human/user)
- if((CLUMSY in user.mutations) && prob(50) && on_fire)
- clumsilyDrink(user)
- else
- ..()
+ extinguish()
/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass/MouseDrop(mob/living/carbon/human/user)
- if((CLUMSY in user.mutations) && prob(50) && on_fire)
+ 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 30b9495395e..63c8275afea 100644
--- a/code/modules/reagents/chemistry/reagents/alcohol.dm
+++ b/code/modules/reagents/chemistry/reagents/alcohol.dm
@@ -427,14 +427,14 @@
/datum/reagent/consumable/ethanol/flaming_homer
name = "Flaming Moe"
id = "flamingmoe"
- description = "This seems like a bunch of various alcohols thrown together, along with what looks like prescription medicine..."
+ 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 medicine"
+ taste_message = "caramelised booze and sweet, salty medicine"
/datum/reagent/consumable/ethanol/brave_bull
name = "Brave Bull"