From e86bae0b735e842ab72af2403d7c5aa78847a450 Mon Sep 17 00:00:00 2001 From: generalthrax <139387950+generalthrax@users.noreply.github.com> Date: Wed, 11 Dec 2024 23:26:30 -0600 Subject: [PATCH] Molotov Crafting Fix + Mapped in Molotov (#3899) ## About The Pull Request Makes it so that molotovs cannot use themselves to complete their own recipe. Replaces the singular instance of a mapped in molotov with a variant that is actually full of fuel. Fixes https://github.com/shiptest-ss13/Shiptest/issues/3598 ## Why It's Good For The Game Annoying when you're looking to craft multiple molotovs. Lets admins spawn in molotovs that actually have fuel and lets mappers put filled molotovs into maps. ## Changelog :cl: add: Filled subtype of Molotovs fix: Molotovs can no longer be used to craft themselves fix: Mapped in Molotovs are no longer empty /:cl: --------- Co-authored-by: github-actions --- .../lavaland_surface_wrecked_factory.dmm | 2 +- .../components/crafting/recipes/weapon.dm | 2 +- code/game/objects/items/storage/belt.dm | 2 +- .../food_and_drinks/drinks/drinks/bottle.dm | 28 +++++++++++++++---- 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm index 64588e8452f5..579d58a4c09f 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm @@ -3533,7 +3533,7 @@ /obj/structure/flippedtable{ dir = 4 }, -/obj/item/reagent_containers/food/drinks/bottle/molotov, +/obj/item/reagent_containers/food/drinks/molotov/full, /obj/item/lighter/greyscale{ pixel_x = -8; pixel_y = -7 diff --git a/code/datums/components/crafting/recipes/weapon.dm b/code/datums/components/crafting/recipes/weapon.dm index 6783c60c6c6b..039ff4fa486b 100644 --- a/code/datums/components/crafting/recipes/weapon.dm +++ b/code/datums/components/crafting/recipes/weapon.dm @@ -26,7 +26,7 @@ /datum/crafting_recipe/molotov name = "Molotov" - result = /obj/item/reagent_containers/food/drinks/bottle/molotov + result = /obj/item/reagent_containers/food/drinks/molotov reqs = list(/obj/item/reagent_containers/glass/rag = 1, /obj/item/reagent_containers/food/drinks/bottle = 1) parts = list(/obj/item/reagent_containers/food/drinks/bottle = 1) diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 09f92eb311ec..3247ceb443cd 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -603,7 +603,7 @@ /obj/item/screwdriver, /obj/item/lighter, /obj/item/multitool, - /obj/item/reagent_containers/food/drinks/bottle/molotov, + /obj/item/reagent_containers/food/drinks/molotov, /obj/item/grenade/c4, /obj/item/reagent_containers/food/snacks/grown/cherry_bomb, /obj/item/reagent_containers/food/snacks/grown/firelemon diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index 454d5a44bc3e..ece2f0dfbcfb 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -453,14 +453,27 @@ isGlass = TRUE ////////////////////////// MOLOTOV /////////////////////// -/obj/item/reagent_containers/food/drinks/bottle/molotov +/obj/item/reagent_containers/food/drinks/molotov name = "molotov cocktail" desc = "A throwing weapon used to ignite things, typically filled with an accelerant. Recommended highly by desperate militias and revolutionaries. Light and toss." icon_state = "vodkabottle" + fill_icon_thresholds = list(0, 10, 20, 30, 40, 50, 60, 70, 80, 90) + amount_per_transfer_from_this = 10 + volume = 100 + force = 15 //Smashing bottles over someone's head hurts. + throwforce = 15 + item_state = "broken_beer" //Generic held-item sprite until unique ones are made. + lefthand_file = 'icons/mob/inhands/misc/food_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/food_righthand.dmi' + pickup_sound = 'sound/items/handling/bottle_pickup.ogg' + drop_sound = 'sound/items/handling/bottle_drop.ogg' + var/const/duration = 13 //Directly relates to the 'knockdown' duration. Lowered by armor (i.e. helmets) + isGlass = TRUE + foodtype = ALCOHOL list_reagents = list() var/active = 0 -/obj/item/reagent_containers/food/drinks/bottle/molotov/CheckParts(list/parts_list) +/obj/item/reagent_containers/food/drinks/molotov/CheckParts(list/parts_list) ..() var/obj/item/reagent_containers/food/drinks/bottle/B = locate() in contents if(B) @@ -471,7 +484,7 @@ isGlass = FALSE return -/obj/item/reagent_containers/food/drinks/bottle/molotov/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) +/obj/item/reagent_containers/food/drinks/molotov/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) var/firestarter = FALSE for(var/datum/reagent/reagent as anything in reagents.reagent_list) if(reagent.accelerant_quality) @@ -488,7 +501,7 @@ new /obj/effect/hotspot(otherT) ..() -/obj/item/reagent_containers/food/drinks/bottle/molotov/attackby(obj/item/I, mob/user, params) +/obj/item/reagent_containers/food/drinks/molotov/attackby(obj/item/I, mob/user, params) if(I.get_temperature() && !active) active = TRUE log_bomber(user, "has primed a", src, "for detonation") @@ -498,7 +511,7 @@ if(!isGlass) addtimer(CALLBACK(src, PROC_REF(explode)), 5 SECONDS) -/obj/item/reagent_containers/food/drinks/bottle/molotov/proc/explode() +/obj/item/reagent_containers/food/drinks/molotov/proc/explode() if(!active) return if(get_turf(src)) @@ -510,7 +523,7 @@ target.fire_act() qdel(src) -/obj/item/reagent_containers/food/drinks/bottle/molotov/attack_self(mob/user) +/obj/item/reagent_containers/food/drinks/molotov/attack_self(mob/user) if(active) if(!isGlass) to_chat(user, "The flame's spread too far on it!") @@ -519,6 +532,9 @@ cut_overlay(custom_fire_overlay ? custom_fire_overlay : GLOB.fire_overlay) active = 0 +/obj/item/reagent_containers/food/drinks/molotov/full + list_reagents = list(/datum/reagent/consumable/ethanol/vodka = 100) + /obj/item/reagent_containers/food/drinks/bottle/pruno name = "pruno mix" desc = "A trash bag filled with fruit, sugar, yeast, and water, pulped together into a pungent slurry to be fermented in an enclosed space, traditionally the toilet."