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