From 152e8a4a292028ecc70152b0fa6be06ddd888af8 Mon Sep 17 00:00:00 2001 From: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> Date: Sat, 7 Sep 2024 17:33:38 -0400 Subject: [PATCH 01/16] Thurible Code --- code/game/objects/items/weapons/thurible.dm | 158 ++++++++++++++++++ .../crates_lockers/closets/secure/chaplain.dm | 1 + paradise.dme | 1 + 3 files changed, 160 insertions(+) create mode 100644 code/game/objects/items/weapons/thurible.dm diff --git a/code/game/objects/items/weapons/thurible.dm b/code/game/objects/items/weapons/thurible.dm new file mode 100644 index 000000000000..395ae96be0a9 --- /dev/null +++ b/code/game/objects/items/weapons/thurible.dm @@ -0,0 +1,158 @@ +/obj/item/thurible + desc = "A religious artifact used to burn and spread incense when swung from the attached chain." + name = "thurible" + icon = 'icons/obj/weapons/magical_weapons.dmi' + icon_state = "godstaff-blue" + slot_flags = SLOT_FLAG_BELT + force = 10 + throwforce = 7 + w_class = WEIGHT_CLASS_NORMAL + flags = CONDUCT + var/corrupted = FALSE // Whether or not the thurible can be loaded with harmful chems + var/lit = FALSE // Has the thurible been ignited? + var/static/list/safe_chem_list = list("antihol", "charcoal", "epinephrine", "insulin", "teporone", "salbutamol", "omnizine", + "weak_omnizine", "godblood", "potass_iodide", "oculine", "mannitol", "spaceacillin", "salglu_solution", + "sal_acid", "cryoxadone", "sugar", "hydrocodone", "mitocholide", "rezadone", "menthol", + "mutadone", "sanguine_reagent", "iron", "ephedrine", "heparin", "corazone", "sodiumchloride", + "lavaland_extract", "synaptizine", "bicaridine", "kelotane", "water", "holywater", "lsd", "thc", "happiness", + "cbd", "space_drugs", "nicotine") // List of chemicals considered safe for the thurible + var/swing_reagents_consumed = 2 // 25 Swings until out of reagents + +/obj/item/thurible/Initialize(mapload) + . = ..() + create_reagents(50) + container_type = REFILLABLE + reagents.set_reacting(FALSE) + + +/obj/item/thurible/Destroy() + STOP_PROCESSING(SSobj, src) + QDEL_NULL(reagents) + return ..() + +/obj/item/thurible/examine(mob/user) + . = ..() + . += "[src] can hold up to [reagents.maximum_volume] units." + . += "Contains [reagents.total_volume] units of various reagents." + +/obj/item/thurible/emag_act(mob/user) + . = ..() + corrupted = TRUE + +/obj/item/thurible/process() + swing() + +/obj/item/thurible/attackby(obj/item/fire_source, mob/user, params) + . = ..() + if(fire_source.get_heat()) + user.visible_message("[user] lights [src] with [fire_source].", "You light [src] with [fire_source].", "You hear a low whoosh.") + light() + +/obj/item/thurible/attack_self(mob/user) + if(lit) + to_chat(user, "You extinguish \the [src].") + put_out() + return ..() + +/obj/item/thurible/can_enter_storage(obj/item/storage/S, mob/user) + if(lit) + to_chat(user, "[S] can't hold \the [initial(name)] while it's lit!") // initial(name) so it doesn't say "lit" twice in a row + return FALSE + return TRUE + +/obj/item/thurible/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume, global_overlay = TRUE) + ..() + light() + +/obj/item/thurible/on_reagent_change() + . = ..() + if(!corrupted) + var/found_forbidden_reagent = FALSE + for(var/datum/reagent/R in reagents.reagent_list) + if(R == "unholywater") + corrupted = TRUE + to_chat(loc, "[src] is corrupted by an unholy substance!") + return + if(!safe_chem_list.Find(R.id)) + reagents.del_reagent(R.id) + found_forbidden_reagent = TRUE + if(found_forbidden_reagent) + if(ismob(loc)) + to_chat(loc, "[src] banishes an unholy substance!") + else + visible_message("[src] banishes an unholy substance!") + +/obj/item/thurible/proc/light(mob/living/user) + if(lit) + to_chat(user, "The [src] is already lit!") + return + + if(!reagents.total_volume) + to_chat(user, "The [src] is out of fuel!") + return + + // Plasma explodes when exposed to fire. + if(reagents.get_reagent_amount("plasma")) + var/datum/effect_system/reagents_explosion/e = new() + e.set_up(round(reagents.get_reagent_amount("plasma") / 2.5, 1), get_turf(src), 0, 0) + e.start() + return + + // Fuel explodes, too, but much less violently. + if(reagents.get_reagent_amount("fuel")) + var/datum/effect_system/reagents_explosion/e = new() + e.set_up(round(reagents.get_reagent_amount("fuel") / 5, 1), get_turf(src), 0, 0) + e.start() + return + + // And black powder... but more violently. + if(reagents.get_reagent_amount("blackpowder")) + var/datum/effect_system/reagents_explosion/e = new() + e.set_up(round(reagents.get_reagent_amount("blackpowder") / 2, 1), get_turf(src), 0, 0) + e.start() + return + + lit = TRUE + reagents.set_reacting(TRUE) + reagents.handle_reactions() + icon_state = "godstaff-red" + item_state = "godstaff-red" + set_light(2, 0.25, "#E38F46") + START_PROCESSING(SSobj, src) + update_icon() + return TRUE + +/obj/item/thurible/proc/put_out() + lit = FALSE + icon_state = "godstaff-blue" + item_state = "godstaff-blue" + set_light(0) + update_icon() + STOP_PROCESSING(SSobj, src) + return TRUE + +/obj/item/thurible/proc/swing() + // 3x3 area, centered on the thurible + var/obj/released_reagents = new + released_reagents.create_reagents(2) + reagents.trans_to(released_reagents, swing_reagents_consumed) + var/list/mobs_to_smoke = list() + var/list/smoked_atoms = list() + for(var/atom/A in view(1, get_turf(src.loc))) + if(A in smoked_atoms) + continue + smoked_atoms += A + released_reagents.reagents.reaction(A) + if(iscarbon(A)) + var/mob/living/carbon/C = A + if(C.can_breathe_gas()) + mobs_to_smoke += C + + var/percentage_to_add = released_reagents.reagents.total_volume / length(mobs_to_smoke) // Divide the amount of reagents spread around by the number of people inhaling it + + for(var/mob/living/carbon/smoker as anything in mobs_to_smoke) + released_reagents.reagents.copy_to(smoker, percentage_to_add) + + if(!reagents.total_volume) + put_out() + diff --git a/code/game/objects/structures/crates_lockers/closets/secure/chaplain.dm b/code/game/objects/structures/crates_lockers/closets/secure/chaplain.dm index ba3921954fcf..ad59607aa3ad 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/chaplain.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/chaplain.dm @@ -12,3 +12,4 @@ new /obj/item/storage/fancy/candle_box/eternal(src) new /obj/item/storage/fancy/candle_box/eternal(src) new /obj/item/storage/fancy/candle_box/eternal(src) + new /obj/item/thurible(src) diff --git a/paradise.dme b/paradise.dme index e45c0b1c98c6..375d7cb6efa1 100644 --- a/paradise.dme +++ b/paradise.dme @@ -1199,6 +1199,7 @@ #include "code\game\objects\items\weapons\tape.dm" #include "code\game\objects\items\weapons\teleportation.dm" #include "code\game\objects\items\weapons\teleprod.dm" +#include "code\game\objects\items\weapons\thurible.dm" #include "code\game\objects\items\weapons\twohanded.dm" #include "code\game\objects\items\weapons\vending_items.dm" #include "code\game\objects\items\weapons\weaponry.dm" From d025ac15bf860c8a886a1193bc1c48a4f712acb7 Mon Sep 17 00:00:00 2001 From: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> Date: Sat, 7 Sep 2024 17:35:47 -0400 Subject: [PATCH 02/16] No Belt Slot --- code/game/objects/items/weapons/thurible.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/game/objects/items/weapons/thurible.dm b/code/game/objects/items/weapons/thurible.dm index 395ae96be0a9..5a37ac0d29c8 100644 --- a/code/game/objects/items/weapons/thurible.dm +++ b/code/game/objects/items/weapons/thurible.dm @@ -3,7 +3,6 @@ name = "thurible" icon = 'icons/obj/weapons/magical_weapons.dmi' icon_state = "godstaff-blue" - slot_flags = SLOT_FLAG_BELT force = 10 throwforce = 7 w_class = WEIGHT_CLASS_NORMAL From 25646bae62e03bf0b2dff2ab809def806bb25ec0 Mon Sep 17 00:00:00 2001 From: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> Date: Sat, 7 Sep 2024 17:52:33 -0400 Subject: [PATCH 03/16] No more emag act. --- code/game/objects/items/weapons/thurible.dm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/code/game/objects/items/weapons/thurible.dm b/code/game/objects/items/weapons/thurible.dm index 5a37ac0d29c8..a4d820d6c51c 100644 --- a/code/game/objects/items/weapons/thurible.dm +++ b/code/game/objects/items/weapons/thurible.dm @@ -3,6 +3,7 @@ name = "thurible" icon = 'icons/obj/weapons/magical_weapons.dmi' icon_state = "godstaff-blue" + item_state = "godstaff-blue" force = 10 throwforce = 7 w_class = WEIGHT_CLASS_NORMAL @@ -34,10 +35,6 @@ . += "[src] can hold up to [reagents.maximum_volume] units." . += "Contains [reagents.total_volume] units of various reagents." -/obj/item/thurible/emag_act(mob/user) - . = ..() - corrupted = TRUE - /obj/item/thurible/process() swing() From 3d2280ba4dad4fbda8c5171c0f9f4c531da8ca95 Mon Sep 17 00:00:00 2001 From: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> Date: Sat, 7 Sep 2024 18:06:49 -0400 Subject: [PATCH 04/16] Unholy water corruption fix --- code/game/objects/items/weapons/thurible.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/thurible.dm b/code/game/objects/items/weapons/thurible.dm index a4d820d6c51c..705b0c6933a5 100644 --- a/code/game/objects/items/weapons/thurible.dm +++ b/code/game/objects/items/weapons/thurible.dm @@ -65,7 +65,7 @@ if(!corrupted) var/found_forbidden_reagent = FALSE for(var/datum/reagent/R in reagents.reagent_list) - if(R == "unholywater") + if(R.id == "unholywater") corrupted = TRUE to_chat(loc, "[src] is corrupted by an unholy substance!") return From ed7203bf0da82c7ae3f1f487267588d44758d5f8 Mon Sep 17 00:00:00 2001 From: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> Date: Sun, 8 Sep 2024 00:42:45 -0400 Subject: [PATCH 05/16] Added jestosterone and nothing to acceptable reagents. Honk --- code/game/objects/items/weapons/thurible.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/thurible.dm b/code/game/objects/items/weapons/thurible.dm index 705b0c6933a5..22b633fea766 100644 --- a/code/game/objects/items/weapons/thurible.dm +++ b/code/game/objects/items/weapons/thurible.dm @@ -15,7 +15,7 @@ "sal_acid", "cryoxadone", "sugar", "hydrocodone", "mitocholide", "rezadone", "menthol", "mutadone", "sanguine_reagent", "iron", "ephedrine", "heparin", "corazone", "sodiumchloride", "lavaland_extract", "synaptizine", "bicaridine", "kelotane", "water", "holywater", "lsd", "thc", "happiness", - "cbd", "space_drugs", "nicotine") // List of chemicals considered safe for the thurible + "cbd", "space_drugs", "nicotine", "jestosterone", "nothing") // List of chemicals considered safe for the thurible var/swing_reagents_consumed = 2 // 25 Swings until out of reagents /obj/item/thurible/Initialize(mapload) From a1f3337747ce0365e7134babf4db5fac03dad6c8 Mon Sep 17 00:00:00 2001 From: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> Date: Sun, 8 Sep 2024 16:07:20 -0400 Subject: [PATCH 06/16] Item sprites --- code/game/objects/items/weapons/thurible.dm | 14 ++++++++------ icons/obj/weapons/magical_weapons.dmi | Bin 16430 -> 27452 bytes 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/code/game/objects/items/weapons/thurible.dm b/code/game/objects/items/weapons/thurible.dm index 22b633fea766..a3064067f4f8 100644 --- a/code/game/objects/items/weapons/thurible.dm +++ b/code/game/objects/items/weapons/thurible.dm @@ -2,8 +2,10 @@ desc = "A religious artifact used to burn and spread incense when swung from the attached chain." name = "thurible" icon = 'icons/obj/weapons/magical_weapons.dmi' - icon_state = "godstaff-blue" - item_state = "godstaff-blue" + lefthand_file = 'icons/mob/inhands/religion_lefthand.dmi' + righthand_file = 'icons/mob/inhands/religion_righthand.dmi' + icon_state = "thurible" + item_state = "thurible" force = 10 throwforce = 7 w_class = WEIGHT_CLASS_NORMAL @@ -111,8 +113,8 @@ lit = TRUE reagents.set_reacting(TRUE) reagents.handle_reactions() - icon_state = "godstaff-red" - item_state = "godstaff-red" + icon_state = "thurible-lit" + item_state = "thurible-lit" set_light(2, 0.25, "#E38F46") START_PROCESSING(SSobj, src) update_icon() @@ -120,8 +122,8 @@ /obj/item/thurible/proc/put_out() lit = FALSE - icon_state = "godstaff-blue" - item_state = "godstaff-blue" + icon_state = "thurible" + item_state = "thurible" set_light(0) update_icon() STOP_PROCESSING(SSobj, src) diff --git a/icons/obj/weapons/magical_weapons.dmi b/icons/obj/weapons/magical_weapons.dmi index 78224676efe532389c43069f5b71b554f4cebfaa..f8be67a8c08c1e2271f9249ee35328ab377d30c8 100644 GIT binary patch literal 27452 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 Date: Sun, 8 Sep 2024 16:08:43 -0400 Subject: [PATCH 07/16] Better bad chem purge messages --- code/game/objects/items/weapons/thurible.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/weapons/thurible.dm b/code/game/objects/items/weapons/thurible.dm index a3064067f4f8..8c28c4cdea90 100644 --- a/code/game/objects/items/weapons/thurible.dm +++ b/code/game/objects/items/weapons/thurible.dm @@ -76,9 +76,9 @@ found_forbidden_reagent = TRUE if(found_forbidden_reagent) if(ismob(loc)) - to_chat(loc, "[src] banishes an unholy substance!") + to_chat(loc, "[src] banishes a dangerous substance!") else - visible_message("[src] banishes an unholy substance!") + visible_message("[src] banishes a dangerous substance!") /obj/item/thurible/proc/light(mob/living/user) if(lit) From e9511a6590fcb1563d0e33c0b7ee20fc21b40f46 Mon Sep 17 00:00:00 2001 From: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> Date: Fri, 13 Sep 2024 03:24:25 -0400 Subject: [PATCH 08/16] Inhand Sprites --- code/game/objects/items/weapons/thurible.dm | 53 ++++++++++++-------- icons/mob/inhands/religion_lefthand.dmi | Bin 1812 -> 6032 bytes icons/mob/inhands/religion_righthand.dmi | Bin 1769 -> 6177 bytes 3 files changed, 33 insertions(+), 20 deletions(-) diff --git a/code/game/objects/items/weapons/thurible.dm b/code/game/objects/items/weapons/thurible.dm index 8c28c4cdea90..9d8add6c7995 100644 --- a/code/game/objects/items/weapons/thurible.dm +++ b/code/game/objects/items/weapons/thurible.dm @@ -10,15 +10,19 @@ throwforce = 7 w_class = WEIGHT_CLASS_NORMAL flags = CONDUCT - var/corrupted = FALSE // Whether or not the thurible can be loaded with harmful chems - var/lit = FALSE // Has the thurible been ignited? + /// Whether or not the thurible can be loaded with harmful chems + var/corrupted = FALSE + /// Has the thurible been ignited? + var/lit = FALSE + /// List of chemicals considered safe for the thurible var/static/list/safe_chem_list = list("antihol", "charcoal", "epinephrine", "insulin", "teporone", "salbutamol", "omnizine", "weak_omnizine", "godblood", "potass_iodide", "oculine", "mannitol", "spaceacillin", "salglu_solution", "sal_acid", "cryoxadone", "sugar", "hydrocodone", "mitocholide", "rezadone", "menthol", "mutadone", "sanguine_reagent", "iron", "ephedrine", "heparin", "corazone", "sodiumchloride", "lavaland_extract", "synaptizine", "bicaridine", "kelotane", "water", "holywater", "lsd", "thc", "happiness", - "cbd", "space_drugs", "nicotine", "jestosterone", "nothing") // List of chemicals considered safe for the thurible - var/swing_reagents_consumed = 2 // 25 Swings until out of reagents + "cbd", "space_drugs", "nicotine", "jestosterone", "nothing") + /// How many reagents are consumed with each swing? + var/swing_reagents_consumed = 2 /obj/item/thurible/Initialize(mapload) . = ..() @@ -26,7 +30,6 @@ container_type = REFILLABLE reagents.set_reacting(FALSE) - /obj/item/thurible/Destroy() STOP_PROCESSING(SSobj, src) QDEL_NULL(reagents) @@ -40,16 +43,29 @@ /obj/item/thurible/process() swing() +/obj/item/thurible/update_appearance() + if(lit) + icon_state = "thurible-lit" + item_state = "thurible-lit" + else + icon_state = "thurible" + item_state = "thurible" + if(in_inventory) + for(var/mob/M in view(0, get_turf(src.loc))) + M.update_inv_l_hand() + M.update_inv_r_hand() + return ..() + /obj/item/thurible/attackby(obj/item/fire_source, mob/user, params) . = ..() if(fire_source.get_heat()) user.visible_message("[user] lights [src] with [fire_source].", "You light [src] with [fire_source].", "You hear a low whoosh.") - light() + light(user) /obj/item/thurible/attack_self(mob/user) if(lit) to_chat(user, "You extinguish \the [src].") - put_out() + put_out(user) return ..() /obj/item/thurible/can_enter_storage(obj/item/storage/S, mob/user) @@ -59,7 +75,7 @@ return TRUE /obj/item/thurible/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume, global_overlay = TRUE) - ..() + . = ..() light() /obj/item/thurible/on_reagent_change() @@ -80,7 +96,8 @@ else visible_message("[src] banishes a dangerous substance!") -/obj/item/thurible/proc/light(mob/living/user) +/// Lights the thurible and starts processing reagents +/obj/item/thurible/proc/light(mob/user) if(lit) to_chat(user, "The [src] is already lit!") return @@ -113,24 +130,21 @@ lit = TRUE reagents.set_reacting(TRUE) reagents.handle_reactions() - icon_state = "thurible-lit" - item_state = "thurible-lit" - set_light(2, 0.25, "#E38F46") START_PROCESSING(SSobj, src) - update_icon() + set_light(2, 0.3, "#E38F46") + update_appearance() return TRUE -/obj/item/thurible/proc/put_out() +/// Extinguishes the thurible and stops processing +/obj/item/thurible/proc/put_out(mob/user) lit = FALSE - icon_state = "thurible" - item_state = "thurible" - set_light(0) - update_icon() STOP_PROCESSING(SSobj, src) + set_light(0) + update_appearance() return TRUE +/// Spreads reagents in a 3x3 area centered on the thurible /obj/item/thurible/proc/swing() - // 3x3 area, centered on the thurible var/obj/released_reagents = new released_reagents.create_reagents(2) reagents.trans_to(released_reagents, swing_reagents_consumed) @@ -153,4 +167,3 @@ if(!reagents.total_volume) put_out() - diff --git a/icons/mob/inhands/religion_lefthand.dmi b/icons/mob/inhands/religion_lefthand.dmi index c4338544e5d4bff9f4e262c2e7a5df65dd8327ba..d866505d075349ffc0e9ecca6e32e3fd3f3a4565 100644 GIT binary patch literal 6032 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 Date: Fri, 13 Sep 2024 03:29:43 -0400 Subject: [PATCH 09/16] Variable Format --- code/game/objects/items/weapons/thurible.dm | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/code/game/objects/items/weapons/thurible.dm b/code/game/objects/items/weapons/thurible.dm index 9d8add6c7995..f1e7384c7dd2 100644 --- a/code/game/objects/items/weapons/thurible.dm +++ b/code/game/objects/items/weapons/thurible.dm @@ -108,23 +108,23 @@ // Plasma explodes when exposed to fire. if(reagents.get_reagent_amount("plasma")) - var/datum/effect_system/reagents_explosion/e = new() - e.set_up(round(reagents.get_reagent_amount("plasma") / 2.5, 1), get_turf(src), 0, 0) - e.start() + var/datum/effect_system/reagents_explosion/E = new() + E.set_up(round(reagents.get_reagent_amount("plasma") / 2.5, 1), get_turf(src), 0, 0) + E.start() return // Fuel explodes, too, but much less violently. if(reagents.get_reagent_amount("fuel")) - var/datum/effect_system/reagents_explosion/e = new() - e.set_up(round(reagents.get_reagent_amount("fuel") / 5, 1), get_turf(src), 0, 0) - e.start() + var/datum/effect_system/reagents_explosion/E = new() + E.set_up(round(reagents.get_reagent_amount("fuel") / 5, 1), get_turf(src), 0, 0) + E.start() return // And black powder... but more violently. if(reagents.get_reagent_amount("blackpowder")) - var/datum/effect_system/reagents_explosion/e = new() - e.set_up(round(reagents.get_reagent_amount("blackpowder") / 2, 1), get_turf(src), 0, 0) - e.start() + var/datum/effect_system/reagents_explosion/E = new() + E.set_up(round(reagents.get_reagent_amount("blackpowder") / 2, 1), get_turf(src), 0, 0) + E.start() return lit = TRUE From ffc096e9469d5ec79d1bcd061effa0d2ca13df56 Mon Sep 17 00:00:00 2001 From: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> Date: Fri, 13 Sep 2024 23:35:54 -0400 Subject: [PATCH 10/16] Formatting, Visible Messages, Inhand Updating --- code/game/objects/items/weapons/thurible.dm | 36 +++++++++++++-------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/code/game/objects/items/weapons/thurible.dm b/code/game/objects/items/weapons/thurible.dm index f1e7384c7dd2..88cd80f44b2f 100644 --- a/code/game/objects/items/weapons/thurible.dm +++ b/code/game/objects/items/weapons/thurible.dm @@ -1,6 +1,6 @@ /obj/item/thurible - desc = "A religious artifact used to burn and spread incense when swung from the attached chain." name = "thurible" + desc = "A religious artifact used to burn and spread incense when swung from the attached chain." icon = 'icons/obj/weapons/magical_weapons.dmi' lefthand_file = 'icons/mob/inhands/religion_lefthand.dmi' righthand_file = 'icons/mob/inhands/religion_righthand.dmi' @@ -52,19 +52,24 @@ item_state = "thurible" if(in_inventory) for(var/mob/M in view(0, get_turf(src.loc))) - M.update_inv_l_hand() - M.update_inv_r_hand() + if(M.r_hand == src || M.l_hand == src) + M.update_inv_l_hand() + M.update_inv_r_hand() return ..() /obj/item/thurible/attackby(obj/item/fire_source, mob/user, params) . = ..() if(fire_source.get_heat()) - user.visible_message("[user] lights [src] with [fire_source].", "You light [src] with [fire_source].", "You hear a low whoosh.") + user.visible_message( + "[user] lights [src] with [fire_source].", + "You light [src] with [fire_source].", + "You hear a low whoosh." + ) light(user) /obj/item/thurible/attack_self(mob/user) if(lit) - to_chat(user, "You extinguish \the [src].") + to_chat(user, "You extinguish [src].") put_out(user) return ..() @@ -82,28 +87,31 @@ . = ..() if(!corrupted) var/found_forbidden_reagent = FALSE - for(var/datum/reagent/R in reagents.reagent_list) + for(var/datum/reagent/R as anything in reagents.reagent_list) if(R.id == "unholywater") corrupted = TRUE - to_chat(loc, "[src] is corrupted by an unholy substance!") + visible_message( + "You corrupt [src] with unholy water!", + "You hear a strange gurgling." + ) return if(!safe_chem_list.Find(R.id)) reagents.del_reagent(R.id) found_forbidden_reagent = TRUE if(found_forbidden_reagent) - if(ismob(loc)) - to_chat(loc, "[src] banishes a dangerous substance!") - else - visible_message("[src] banishes a dangerous substance!") + visible_message( + "[src] banishes an unholy substance!", + "You hear a strange fizzing." + ) /// Lights the thurible and starts processing reagents /obj/item/thurible/proc/light(mob/user) if(lit) - to_chat(user, "The [src] is already lit!") + to_chat(user, "[src] is already lit!") return if(!reagents.total_volume) - to_chat(user, "The [src] is out of fuel!") + to_chat(user, "[src] is out of fuel!") return // Plasma explodes when exposed to fire. @@ -150,7 +158,7 @@ reagents.trans_to(released_reagents, swing_reagents_consumed) var/list/mobs_to_smoke = list() var/list/smoked_atoms = list() - for(var/atom/A in view(1, get_turf(src.loc))) + for(var/atom/A in view(1, get_turf(src))) if(A in smoked_atoms) continue smoked_atoms += A From a0713d9c8bf74892d5f6a11d485c8497ea5c6420 Mon Sep 17 00:00:00 2001 From: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> Date: Fri, 13 Sep 2024 23:40:25 -0400 Subject: [PATCH 11/16] Removed extraneous check --- code/game/objects/items/weapons/thurible.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/game/objects/items/weapons/thurible.dm b/code/game/objects/items/weapons/thurible.dm index 88cd80f44b2f..900b0a9f2aa5 100644 --- a/code/game/objects/items/weapons/thurible.dm +++ b/code/game/objects/items/weapons/thurible.dm @@ -157,11 +157,7 @@ released_reagents.create_reagents(2) reagents.trans_to(released_reagents, swing_reagents_consumed) var/list/mobs_to_smoke = list() - var/list/smoked_atoms = list() for(var/atom/A in view(1, get_turf(src))) - if(A in smoked_atoms) - continue - smoked_atoms += A released_reagents.reagents.reaction(A) if(iscarbon(A)) var/mob/living/carbon/C = A From 36453b09e575bc076d96ee263dc69bb8feda6d47 Mon Sep 17 00:00:00 2001 From: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> Date: Thu, 26 Sep 2024 14:03:37 -0400 Subject: [PATCH 12/16] Loc fix Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com> Signed-off-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> --- code/game/objects/items/weapons/thurible.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/thurible.dm b/code/game/objects/items/weapons/thurible.dm index 900b0a9f2aa5..b5e853536f9a 100644 --- a/code/game/objects/items/weapons/thurible.dm +++ b/code/game/objects/items/weapons/thurible.dm @@ -51,7 +51,7 @@ icon_state = "thurible" item_state = "thurible" if(in_inventory) - for(var/mob/M in view(0, get_turf(src.loc))) + for(var/mob/M in view(0, get_turf(loc))) if(M.r_hand == src || M.l_hand == src) M.update_inv_l_hand() M.update_inv_r_hand() From dc156063f3d1ec16971a23a18486774ec89c166c Mon Sep 17 00:00:00 2001 From: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> Date: Sun, 6 Oct 2024 14:33:58 -0400 Subject: [PATCH 13/16] Readability of reagents var --- code/game/objects/items/weapons/thurible.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/thurible.dm b/code/game/objects/items/weapons/thurible.dm index b5e853536f9a..a4187a12b939 100644 --- a/code/game/objects/items/weapons/thurible.dm +++ b/code/game/objects/items/weapons/thurible.dm @@ -169,5 +169,5 @@ for(var/mob/living/carbon/smoker as anything in mobs_to_smoke) released_reagents.reagents.copy_to(smoker, percentage_to_add) - if(!reagents.total_volume) + if(reagents.total_volume <= 0) put_out() From 74a740c0ab527da8401e48d880e81cfe12dc4375 Mon Sep 17 00:00:00 2001 From: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> Date: Sun, 6 Oct 2024 14:35:40 -0400 Subject: [PATCH 14/16] Guard clause on corrupted reagent addition --- code/game/objects/items/weapons/thurible.dm | 35 +++++++++++---------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/code/game/objects/items/weapons/thurible.dm b/code/game/objects/items/weapons/thurible.dm index a4187a12b939..bed111629341 100644 --- a/code/game/objects/items/weapons/thurible.dm +++ b/code/game/objects/items/weapons/thurible.dm @@ -85,24 +85,25 @@ /obj/item/thurible/on_reagent_change() . = ..() - if(!corrupted) - var/found_forbidden_reagent = FALSE - for(var/datum/reagent/R as anything in reagents.reagent_list) - if(R.id == "unholywater") - corrupted = TRUE - visible_message( - "You corrupt [src] with unholy water!", - "You hear a strange gurgling." - ) - return - if(!safe_chem_list.Find(R.id)) - reagents.del_reagent(R.id) - found_forbidden_reagent = TRUE - if(found_forbidden_reagent) + if(corrupted) + return + var/found_forbidden_reagent = FALSE + for(var/datum/reagent/R as anything in reagents.reagent_list) + if(R.id == "unholywater") + corrupted = TRUE visible_message( - "[src] banishes an unholy substance!", - "You hear a strange fizzing." - ) + "You corrupt [src] with unholy water!", + "You hear a strange gurgling." + ) + return + if(!safe_chem_list.Find(R.id)) + reagents.del_reagent(R.id) + found_forbidden_reagent = TRUE + if(found_forbidden_reagent) + visible_message( + "[src] banishes an unholy substance!", + "You hear a strange fizzing." + ) /// Lights the thurible and starts processing reagents /obj/item/thurible/proc/light(mob/user) From 5529a9fc7d2bca88af26ae333575154b831b4a1c Mon Sep 17 00:00:00 2001 From: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> Date: Sun, 6 Oct 2024 14:36:48 -0400 Subject: [PATCH 15/16] Moved container type to vars --- code/game/objects/items/weapons/thurible.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/thurible.dm b/code/game/objects/items/weapons/thurible.dm index bed111629341..15335b67017d 100644 --- a/code/game/objects/items/weapons/thurible.dm +++ b/code/game/objects/items/weapons/thurible.dm @@ -10,6 +10,7 @@ throwforce = 7 w_class = WEIGHT_CLASS_NORMAL flags = CONDUCT + container_type = REFILLABLE /// Whether or not the thurible can be loaded with harmful chems var/corrupted = FALSE /// Has the thurible been ignited? @@ -27,7 +28,6 @@ /obj/item/thurible/Initialize(mapload) . = ..() create_reagents(50) - container_type = REFILLABLE reagents.set_reacting(FALSE) /obj/item/thurible/Destroy() From cd7074ad30a88533cbd940293292b85a133dde4c Mon Sep 17 00:00:00 2001 From: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> Date: Sun, 6 Oct 2024 14:42:43 -0400 Subject: [PATCH 16/16] Better check for sprite update --- code/game/objects/items/weapons/thurible.dm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/game/objects/items/weapons/thurible.dm b/code/game/objects/items/weapons/thurible.dm index 15335b67017d..bf1feabf93d5 100644 --- a/code/game/objects/items/weapons/thurible.dm +++ b/code/game/objects/items/weapons/thurible.dm @@ -50,11 +50,11 @@ else icon_state = "thurible" item_state = "thurible" - if(in_inventory) - for(var/mob/M in view(0, get_turf(loc))) - if(M.r_hand == src || M.l_hand == src) - M.update_inv_l_hand() - M.update_inv_r_hand() + if(ishuman(loc)) + var/mob/living/carbon/human/H = loc + if(H.r_hand == src || H.l_hand == src) + H.update_inv_l_hand() + H.update_inv_r_hand() return ..() /obj/item/thurible/attackby(obj/item/fire_source, mob/user, params)