From 2683ec04b0908ad58cb3de8626bdd94897a835fa Mon Sep 17 00:00:00 2001 From: TemporalOroboros Date: Mon, 6 Jun 2022 20:45:20 -0700 Subject: [PATCH] Improves logging for smoke clouds. (#67206) About The Pull Request Makes smoke propagate the fingerprints of the last person to touch the source of the smoke. This makes gunpowder smoke actually log the person responsible for the explosions. Why It's Good For The Game As of right now gunpowder smoke (and similar) doesn't actually have very good logging as as far as the smoke is concerned it's never been touched and so the resulting explosions are blameless. Obviously, scrolling up for a good minute looking for who has just obliterated the escape shuttle is slightly annoying for the admins. Ergo, making the explosions log who actually is responsible for making the smoke they originate from should reduce admin annoyance. Changelog cl admin: Smoke now logs the last person to touch the source of the smoke as the last person to touch the smoke itself. Gunpowder smoke should be less annoying to log dive as a result as every explosion will log that person. /cl --- code/__HELPERS/reagents.dm | 6 +-- code/game/machinery/suit_storage_unit.dm | 2 +- .../effect_system/effects_explosion.dm | 2 +- .../fluid_spread/_fluid_spread.dm | 40 +++++++++++++++++-- .../fluid_spread/effects_foam.dm | 10 +++-- .../fluid_spread/effects_smoke.dm | 18 +++++---- code/game/objects/effects/step_triggers.dm | 4 +- code/game/objects/items/cigs_lighters.dm | 4 +- code/game/objects/items/food/burgers.dm | 2 +- code/game/objects/items/grenades/smokebomb.dm | 2 +- code/game/objects/items/nitrium_crystals.dm | 2 +- .../objects/items/robot/robot_upgrades.dm | 28 ++++++------- code/game/objects/items/scrolls.dm | 2 +- code/game/objects/items/tanks/watertank.dm | 2 +- code/game/objects/structures/hivebot.dm | 2 +- code/modules/antagonists/blob/blob_mobs.dm | 2 +- .../equipment/nuclear_bomb/beer_nuke.dm | 8 ++-- .../awaymissions/mission_code/Academy.dm | 12 +++--- .../modules/awaymissions/super_secret_room.dm | 6 +-- code/modules/clothing/head/tophat.dm | 2 +- code/modules/events/immovable_rod.dm | 2 +- code/modules/events/wisdomcow.dm | 4 +- code/modules/events/wizard/curseditems.dm | 4 +- code/modules/events/wizard/shuffle.dm | 26 ++++++------ code/modules/explorer_drone/exodrone.dm | 2 +- .../kitchen_machinery/grill.dm | 2 +- code/modules/hydroponics/grown/onion.dm | 2 +- code/modules/hydroponics/plant_genes.dm | 6 +-- .../mob/living/basic/farm_animals/cows.dm | 2 +- .../hostile/mining_mobs/elites/legionnaire.dm | 2 +- code/modules/mod/modules/modules_security.dm | 4 +- code/modules/projectiles/guns/magic/wand.dm | 4 +- code/modules/projectiles/projectile/magic.dm | 4 +- .../chemistry/machinery/smoke_machine.dm | 5 ++- code/modules/reagents/chemistry/recipes.dm | 8 ++-- .../reagents/chemistry/recipes/others.dm | 8 ++-- .../chemistry/recipes/pyrotechnics.dm | 8 ++-- .../chemistry/recipes/slime_extracts.dm | 2 +- code/modules/research/experimentor.dm | 12 +++--- .../xenobiology/crossbreeding/burning.dm | 8 ++-- .../vatgrowing/samples/_micro_organism.dm | 2 +- .../research/xenobiology/xenobiology.dm | 2 +- code/modules/spells/spell.dm | 2 +- code/modules/station_goals/bsa.dm | 2 +- code/modules/vehicles/atv.dm | 2 +- code/modules/vehicles/cars/clowncar.dm | 8 ++-- code/modules/vehicles/mecha/_mecha.dm | 2 +- code/modules/vehicles/secway.dm | 2 +- 48 files changed, 166 insertions(+), 127 deletions(-) diff --git a/code/__HELPERS/reagents.dm b/code/__HELPERS/reagents.dm index bfd00ed4698..12be82c4c65 100644 --- a/code/__HELPERS/reagents.dm +++ b/code/__HELPERS/reagents.dm @@ -79,12 +79,12 @@ GLOB.chemical_reactions_list_reactant_index[primary_reagent] += R //Creates foam from the reagent. Metaltype is for metal foam, notification is what to show people in textbox -/datum/reagents/proc/create_foam(foamtype, foam_volume, result_type = null, notification = null) +/datum/reagents/proc/create_foam(foamtype, foam_volume, result_type = null, notification = null, log = FALSE) var/location = get_turf(my_atom) var/datum/effect_system/fluid_spread/foam/foam = new foamtype() - foam.set_up(amount = foam_volume, location = location, carry = src, result_type = result_type) - foam.start() + foam.set_up(amount = foam_volume, holder = my_atom, location = location, carry = src, result_type = result_type) + foam.start(log = log) clear_reagents() if(!notification) diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 7bcda26b8b0..70d2df27f34 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -389,7 +389,7 @@ visible_message(span_warning("[src]'s door creaks open with a loud whining noise. A cloud of foul black smoke escapes from its chamber.")) playsound(src, 'sound/machines/airlock_alien_prying.ogg', 50, TRUE) var/datum/effect_system/fluid_spread/smoke/bad/black/smoke = new - smoke.set_up(0, location = src) + smoke.set_up(0, holder = src, location = src) smoke.start() QDEL_NULL(helmet) QDEL_NULL(suit) diff --git a/code/game/objects/effects/effect_system/effects_explosion.dm b/code/game/objects/effects/effect_system/effects_explosion.dm index 13d32870de8..e13010c4154 100644 --- a/code/game/objects/effects/effect_system/effects_explosion.dm +++ b/code/game/objects/effects/effect_system/effects_explosion.dm @@ -58,7 +58,7 @@ /datum/effect_system/explosion/smoke/proc/create_smoke() var/datum/effect_system/fluid_spread/smoke/S = new - S.set_up(2, location = location) + S.set_up(2, holder = holder, location = location) S.start() /datum/effect_system/explosion/smoke/start() diff --git a/code/game/objects/effects/effect_system/fluid_spread/_fluid_spread.dm b/code/game/objects/effects/effect_system/fluid_spread/_fluid_spread.dm index 9f9929f53c9..5ce9fe02bd4 100644 --- a/code/game/objects/effects/effect_system/fluid_spread/_fluid_spread.dm +++ b/code/game/objects/effects/effect_system/fluid_spread/_fluid_spread.dm @@ -96,6 +96,7 @@ if(!group) group = source?.group || new group.add_node(src) + source?.transfer_fingerprints_to(src) /obj/effect/particle_effect/fluid/Destroy() group.remove_node(src) @@ -118,11 +119,42 @@ /// The amount of smoke to produce. var/amount = 10 -/datum/effect_system/fluid_spread/set_up(range = 1, amount = DIAMOND_AREA(range), atom/location, ...) - src.location = get_turf(location) +/datum/effect_system/fluid_spread/set_up(range = 1, amount = DIAMOND_AREA(range), atom/holder, atom/location, ...) + src.holder = holder + src.location = location src.amount = amount -/datum/effect_system/fluid_spread/start() - var/location = holder ? get_turf(holder) : src.location +/datum/effect_system/fluid_spread/start(log = FALSE) + var/location = src.location || get_turf(holder) var/obj/effect/particle_effect/fluid/flood = new effect_type(location, new /datum/fluid_group(amount)) + if (log) // Smoke is used as an aesthetic effect in a tonne of places and we don't want, say, a broken secway spamming admin chat. + help_out_the_admins(flood, holder, location) flood.spread() + +/** + * Handles logging the beginning of a fluid flood. + * + * Arguments: + * - [flood][/obj/effect/particle_effect/fluid]: The first cell of the fluid flood. + * - [holder][/atom]: What the flood originated from. + * - [location][/atom]: Where the flood originated. + */ +/datum/effect_system/fluid_spread/proc/help_out_the_admins(obj/effect/particle_effect/fluid/flood, atom/holder, atom/location) + var/source_msg + var/blame_msg + if (holder) + holder.transfer_fingerprints_to(flood) // This is important. If this doesn't exist thermobarics are annoying to adjudicate. + + source_msg = "from inside of [ismob(holder) ? ADMIN_LOOKUPFLW(holder) : ADMIN_VERBOSEJMP(holder)]" + var/lastkey = holder.fingerprintslast + if (lastkey) + var/mob/scapegoat = get_mob_by_key(lastkey) + blame_msg = " last touched by [ADMIN_LOOKUPFLW(scapegoat)]" + else + blame_msg = " with no known fingerprints" + else + source_msg = "with no known source" + + if(!istype(holder, /obj/machinery/plumbing)) //excludes standard plumbing equipment from spamming admins with this shit + message_admins("\A [flood] flood started at [ADMIN_VERBOSEJMP(location)] [source_msg][blame_msg].") + log_game("\A [flood] flood started at [location || "nonexistant location"] [holder ? "from [holder] last touched by [holder || "N/A"]" : "with no known source"].") diff --git a/code/game/objects/effects/effect_system/fluid_spread/effects_foam.dm b/code/game/objects/effects/effect_system/fluid_spread/effects_foam.dm index f9934409462..fb08bfa4ab0 100644 --- a/code/game/objects/effects/effect_system/fluid_spread/effects_foam.dm +++ b/code/game/objects/effects/effect_system/fluid_spread/effects_foam.dm @@ -75,7 +75,9 @@ return null var/atom/location = loc - return (!allow_duplicate_results && (locate(result_type) in location)) || (new result_type(location)) + var/atom/movable/result = (!allow_duplicate_results && (locate(result_type) in location)) || (new result_type(location)) + transfer_fingerprints_to(result) + return result /obj/effect/particle_effect/fluid/foam/process(delta_time) var/ds_delta_time = delta_time SECONDS @@ -173,13 +175,13 @@ QDEL_NULL(chemholder) return ..() -/datum/effect_system/fluid_spread/foam/set_up(range = 1, amount = DIAMOND_AREA(range), atom/location = null, datum/reagents/carry = null, result_type = null) +/datum/effect_system/fluid_spread/foam/set_up(range = 1, amount = DIAMOND_AREA(range), atom/holder, atom/location = null, datum/reagents/carry = null, result_type = null) . = ..() carry?.copy_to(chemholder, carry.total_volume) if(!isnull(result_type)) src.result_type = result_type -/datum/effect_system/fluid_spread/foam/start() +/datum/effect_system/fluid_spread/foam/start(log = FALSE) var/obj/effect/particle_effect/fluid/foam/foam = new effect_type(location, new /datum/fluid_group(amount)) var/foamcolor = mix_color_from_reagents(chemholder.reagent_list) if(reagent_scale > 1) // Make room in case we were created by a particularly stuffed payload. @@ -188,6 +190,8 @@ foam.add_atom_colour(foamcolor, FIXED_COLOUR_PRIORITY) if(!isnull(result_type)) foam.result_type = result_type + if (log) + help_out_the_admins(foam, holder, location) SSfoam.queue_spread(foam) diff --git a/code/game/objects/effects/effect_system/fluid_spread/effects_smoke.dm b/code/game/objects/effects/effect_system/fluid_spread/effects_smoke.dm index f4caa15e4f3..a642e2c09bf 100644 --- a/code/game/objects/effects/effect_system/fluid_spread/effects_smoke.dm +++ b/code/game/objects/effects/effect_system/fluid_spread/effects_smoke.dm @@ -85,7 +85,7 @@ for(var/mob/living/smoker in spread_turf) smoke_mob(smoker, delta_time) - var/obj/effect/particle_effect/fluid/smoke/spread_smoke = new type(spread_turf, group) + var/obj/effect/particle_effect/fluid/smoke/spread_smoke = new type(spread_turf, group, src) reagents.copy_to(spread_smoke, reagents.total_volume) spread_smoke.add_atom_colour(color, FIXED_COLOUR_PRIORITY) spread_smoke.lifetime = lifetime @@ -166,11 +166,11 @@ * - location: Where to produce the smoke cloud. * - smoke_type: The smoke typepath to spawn. */ -/proc/do_smoke(range = 0, amount = DIAMOND_AREA(range), location = null, smoke_type = /obj/effect/particle_effect/fluid/smoke) +/proc/do_smoke(range = 0, amount = DIAMOND_AREA(range), atom/holder = null, location = null, smoke_type = /obj/effect/particle_effect/fluid/smoke, log = FALSE) var/datum/effect_system/fluid_spread/smoke/smoke = new smoke.effect_type = smoke_type - smoke.set_up(amount = amount, location = location) - smoke.start() + smoke.set_up(amount = amount, holder = holder, location = location) + smoke.start(log = log) ///////////////////////////////////////////// // Quick smoke @@ -318,11 +318,11 @@ for(var/obj/item/potential_tinder in chilly) potential_tinder.extinguish() -/datum/effect_system/fluid_spread/smoke/freezing/set_up(range = 5, amount = DIAMOND_AREA(range), atom/location, blast_radius = 0) +/datum/effect_system/fluid_spread/smoke/freezing/set_up(range = 5, amount = DIAMOND_AREA(range), atom/holder, atom/location, blast_radius = 0) . = ..() blast = blast_radius -/datum/effect_system/fluid_spread/smoke/freezing/start() +/datum/effect_system/fluid_spread/smoke/freezing/start(log = FALSE) if(blast) for(var/turf/T in RANGE_TURFS(blast, location)) Chilled(T) @@ -410,7 +410,7 @@ return ..() -/datum/effect_system/fluid_spread/smoke/chem/set_up(range = 1, amount = DIAMOND_AREA(range), atom/location = null, datum/reagents/carry = null, silent = FALSE) +/datum/effect_system/fluid_spread/smoke/chem/set_up(range = 1, amount = DIAMOND_AREA(range), atom/holder, atom/location = null, datum/reagents/carry = null, silent = FALSE) . = ..() carry?.copy_to(chemholder, carry.total_volume) @@ -436,7 +436,7 @@ message_admins("Smoke: ([ADMIN_VERBOSEJMP(location)])[contained]. No associated key.") log_game("A chemical smoke reaction has taken place in ([where])[contained]. No associated key.") -/datum/effect_system/fluid_spread/smoke/chem/start() +/datum/effect_system/fluid_spread/smoke/chem/start(log = FALSE) var/start_loc = holder ? get_turf(holder) : src.location var/mixcolor = mix_color_from_reagents(chemholder.reagent_list) var/obj/effect/particle_effect/fluid/smoke/chem/smoke = new effect_type(start_loc, new /datum/fluid_group(amount)) @@ -444,6 +444,8 @@ if(mixcolor) smoke.add_atom_colour(mixcolor, FIXED_COLOUR_PRIORITY) // give the smoke color, if it has any to begin with + if (log) + help_out_the_admins(smoke, holder, location) smoke.spread() // Making the smoke spread immediately. /** diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm index 821cba8c495..9f38d4849f9 100644 --- a/code/game/objects/effects/step_triggers.dm +++ b/code/game/objects/effects/step_triggers.dm @@ -164,11 +164,11 @@ if(entersmoke) var/datum/effect_system/fluid_spread/smoke/s = new - s.set_up(4, location = src) + s.set_up(4, holder = src, location = src) s.start() if(exitsmoke) var/datum/effect_system/fluid_spread/smoke/s = new - s.set_up(4, location = dest) + s.set_up(4, holder = src, location = dest) s.start() uses-- diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index c0eea35bc65..b405b825d6e 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -1061,7 +1061,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM COOLDOWN_START(src, drag_cooldown, dragtime) if(obj_flags & EMAGGED) var/datum/effect_system/fluid_spread/smoke/chem/smoke_machine/puff = new - puff.set_up(4, location = loc, carry = reagents, efficiency = 24) + puff.set_up(4, holder = src, location = loc, carry = reagents, efficiency = 24) puff.start() if(prob(5)) //small chance for the vape to break and deal damage if it's emagged playsound(get_turf(src), 'sound/effects/pop_expl.ogg', 50, FALSE) @@ -1075,7 +1075,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM return else if(super) var/datum/effect_system/fluid_spread/smoke/chem/smoke_machine/puff = new - puff.set_up(1, location = loc, carry = reagents, efficiency = 24) + puff.set_up(1, holder = src, location = loc, carry = reagents, efficiency = 24) puff.start() handle_reagents() diff --git a/code/game/objects/items/food/burgers.dm b/code/game/objects/items/food/burgers.dm index 363b74027d1..ec03b0144f7 100644 --- a/code/game/objects/items/food/burgers.dm +++ b/code/game/objects/items/food/burgers.dm @@ -429,7 +429,7 @@ /obj/item/food/burger/crazy/process(delta_time) // DIT EES HORRIBLE if(DT_PROB(2.5, delta_time)) var/datum/effect_system/fluid_spread/smoke/bad/green/smoke = new - smoke.set_up(0, location = src) + smoke.set_up(0, holder = src, location = src) smoke.start() // empty burger you can customize diff --git a/code/game/objects/items/grenades/smokebomb.dm b/code/game/objects/items/grenades/smokebomb.dm index 6bb7ad0b19d..871f90e2b22 100644 --- a/code/game/objects/items/grenades/smokebomb.dm +++ b/code/game/objects/items/grenades/smokebomb.dm @@ -27,7 +27,7 @@ update_mob() playsound(src, 'sound/effects/smoke.ogg', 50, TRUE, -3) var/datum/effect_system/fluid_spread/smoke/bad/smoke = new - smoke.set_up(4, location = src) + smoke.set_up(4, holder = src, location = src) smoke.start() qdel(smoke) //And deleted again. Sad really. for(var/obj/structure/blob/blob in view(8, src)) diff --git a/code/game/objects/items/nitrium_crystals.dm b/code/game/objects/items/nitrium_crystals.dm index f40961e1326..0f6e3dfbab1 100644 --- a/code/game/objects/items/nitrium_crystals.dm +++ b/code/game/objects/items/nitrium_crystals.dm @@ -13,6 +13,6 @@ reagents.add_reagent(/datum/reagent/nitrium_low_metabolization, 3) reagents.add_reagent(/datum/reagent/nitrium_high_metabolization, 2) smoke.attach(location) - smoke.set_up(cloud_size, location = location, carry = reagents, silent = TRUE) + smoke.set_up(cloud_size, holder = src, location = location, carry = reagents, silent = TRUE) smoke.start() qdel(src) diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 90b70e89f8f..95da464fdae 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -550,32 +550,32 @@ desc = "A cyborg resizer, it makes a cyborg huge." icon_state = "cyborg_upgrade3" -/obj/item/borg/upgrade/expand/action(mob/living/silicon/robot/R, user = usr) +/obj/item/borg/upgrade/expand/action(mob/living/silicon/robot/robot, user = usr) . = ..() if(.) - if(R.hasExpanded) + if(robot.hasExpanded) to_chat(usr, span_warning("This unit already has an expand module installed!")) return FALSE - R.notransform = TRUE - var/prev_lockcharge = R.lockcharge - R.SetLockdown(TRUE) - R.set_anchored(TRUE) + robot.notransform = TRUE + var/prev_lockcharge = robot.lockcharge + robot.SetLockdown(TRUE) + robot.set_anchored(TRUE) var/datum/effect_system/fluid_spread/smoke/smoke = new - smoke.set_up(1, location = R.loc) + smoke.set_up(1, holder = robot, location = robot.loc) smoke.start() sleep(2) for(var/i in 1 to 4) - playsound(R, pick('sound/items/drill_use.ogg', 'sound/items/jaws_cut.ogg', 'sound/items/jaws_pry.ogg', 'sound/items/welder.ogg', 'sound/items/ratchet.ogg'), 80, TRUE, -1) + playsound(robot, pick('sound/items/drill_use.ogg', 'sound/items/jaws_cut.ogg', 'sound/items/jaws_pry.ogg', 'sound/items/welder.ogg', 'sound/items/ratchet.ogg'), 80, TRUE, -1) sleep(12) if(!prev_lockcharge) - R.SetLockdown(FALSE) - R.set_anchored(FALSE) - R.notransform = FALSE - R.resize = 2 - R.hasExpanded = TRUE - R.update_transform() + robot.SetLockdown(FALSE) + robot.set_anchored(FALSE) + robot.notransform = FALSE + robot.resize = 2 + robot.hasExpanded = TRUE + robot.update_transform() /obj/item/borg/upgrade/expand/deactivate(mob/living/silicon/robot/R, user = usr) . = ..() diff --git a/code/game/objects/items/scrolls.dm b/code/game/objects/items/scrolls.dm index 108cb8c0e0c..a70bb9f7b28 100644 --- a/code/game/objects/items/scrolls.dm +++ b/code/game/objects/items/scrolls.dm @@ -51,7 +51,7 @@ var/area/thearea = GLOB.teleportlocs[jump_target] var/datum/effect_system/fluid_spread/smoke/smoke = new - smoke.set_up(2, location = user.loc) + smoke.set_up(2, holder = src, location = user.loc) smoke.attach(user) smoke.start() var/list/possible_locations = list() diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index 3cf32f9e273..40ab024c340 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -364,7 +364,7 @@ /obj/effect/resin_container/proc/Smoke() var/datum/effect_system/fluid_spread/foam/metal/resin/foaming = new - foaming.set_up(4, location = src) + foaming.set_up(4, holder = src, location = loc) foaming.start() playsound(src,'sound/effects/bamf.ogg',100,TRUE) qdel(src) diff --git a/code/game/objects/structures/hivebot.dm b/code/game/objects/structures/hivebot.dm index c86748137e3..f5570c49fd2 100644 --- a/code/game/objects/structures/hivebot.dm +++ b/code/game/objects/structures/hivebot.dm @@ -11,7 +11,7 @@ /obj/structure/hivebot_beacon/Initialize(mapload) . = ..() var/datum/effect_system/fluid_spread/smoke/smoke = new - smoke.set_up(2, location = loc) + smoke.set_up(2, holder = src, location = loc) smoke.start() visible_message(span_boldannounce("[src] warps in!")) playsound(src.loc, 'sound/effects/empulse.ogg', 25, TRUE) diff --git a/code/modules/antagonists/blob/blob_mobs.dm b/code/modules/antagonists/blob/blob_mobs.dm index 8337c7853b3..74ea92cc87a 100644 --- a/code/modules/antagonists/blob/blob_mobs.dm +++ b/code/modules/antagonists/blob/blob_mobs.dm @@ -213,7 +213,7 @@ // Attach the smoke spreader and setup/start it. spores.attach(location) - spores.set_up(death_cloud_size, location = location, carry = reagents, silent = TRUE) + spores.set_up(death_cloud_size, holder = src, location = location, carry = reagents, silent = TRUE) spores.start() if(factory) factory.spore_delay = world.time + factory.spore_cooldown //put the factory on cooldown diff --git a/code/modules/antagonists/nukeop/equipment/nuclear_bomb/beer_nuke.dm b/code/modules/antagonists/nukeop/equipment/nuclear_bomb/beer_nuke.dm index 28d2413e154..3599ec4fd42 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclear_bomb/beer_nuke.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclear_bomb/beer_nuke.dm @@ -48,12 +48,12 @@ return ..() /obj/machinery/nuclearbomb/beer/proc/local_foam() - var/datum/reagents/R = new/datum/reagents(1000) - R.my_atom = src - R.add_reagent(/datum/reagent/consumable/ethanol/beer, 100) + var/datum/reagents/tmp_holder = new/datum/reagents(1000) + tmp_holder.my_atom = src + tmp_holder.add_reagent(/datum/reagent/consumable/ethanol/beer, 100) var/datum/effect_system/fluid_spread/foam/foam = new - foam.set_up(200, location = get_turf(src), carry = R) + foam.set_up(200, holder = src, location = get_turf(src), carry = tmp_holder) foam.start() disarm_nuke() diff --git a/code/modules/awaymissions/mission_code/Academy.dm b/code/modules/awaymissions/mission_code/Academy.dm index bd347886ad4..9f9dcc87072 100644 --- a/code/modules/awaymissions/mission_code/Academy.dm +++ b/code/modules/awaymissions/mission_code/Academy.dm @@ -284,7 +284,7 @@ //Cookie T.visible_message(span_userdanger("A cookie appears out of thin air!")) var/obj/item/food/cookie/C = new(drop_location()) - do_smoke(DIAMOND_AREA(0), drop_location()) + do_smoke(0, holder = src, location = drop_location()) C.name = "Cookie of Fate" if(12) //Healing @@ -305,18 +305,18 @@ if(14) //Free Gun T.visible_message(span_userdanger("An impressive gun appears!")) - do_smoke(DIAMOND_AREA(0), drop_location()) + do_smoke(0, holder = src, location = drop_location()) new /obj/item/gun/ballistic/revolver/mateba(drop_location()) if(15) //Random One-use spellbook T.visible_message(span_userdanger("A magical looking book drops to the floor!")) - do_smoke(DIAMOND_AREA(0), drop_location()) + do_smoke(0, holder = src, location = drop_location()) new /obj/item/book/granter/spell/random(drop_location()) if(16) //Servant & Servant Summon T.visible_message(span_userdanger("A Dice Servant appears in a cloud of smoke!")) var/mob/living/carbon/human/H = new(drop_location()) - do_smoke(DIAMOND_AREA(0), drop_location()) + do_smoke(0, holder = src, location = drop_location()) H.equipOutfit(/datum/outfit/butler) var/datum/mind/servant_mind = new /datum/mind() @@ -339,12 +339,12 @@ //Tator Kit T.visible_message(span_userdanger("A suspicious box appears!")) new /obj/item/storage/box/syndicate/bundle_a(drop_location()) - do_smoke(DIAMOND_AREA(0), drop_location()) + do_smoke(0, holder = src, location = drop_location()) if(18) //Captain ID T.visible_message(span_userdanger("A golden identification card appears!")) new /obj/item/card/id/advanced/gold/captains_spare(drop_location()) - do_smoke(DIAMOND_AREA(0), drop_location()) + do_smoke(0, holder = src, location = drop_location()) if(19) //Instrinct Resistance T.visible_message(span_userdanger("[user] looks very robust!")) diff --git a/code/modules/awaymissions/super_secret_room.dm b/code/modules/awaymissions/super_secret_room.dm index e04a268f6bc..83c85808256 100644 --- a/code/modules/awaymissions/super_secret_room.dm +++ b/code/modules/awaymissions/super_secret_room.dm @@ -27,10 +27,10 @@ switch(times_spoken_to) if(0) SpeakPeace(list("Welcome to the error handling room.","Something's goofed up bad to send you here.","You should probably tell an admin what you were doing, or make a bug report.")) - for(var/obj/structure/signpost/salvation/S in orange(7)) - S.invisibility = 0 + for(var/obj/structure/signpost/salvation/sign in orange(7)) + sign.invisibility = 0 var/datum/effect_system/fluid_spread/smoke/smoke = new - smoke.set_up(1, location = S.loc) + smoke.set_up(1, holder = src, location = sign.loc) smoke.start() break if(1) diff --git a/code/modules/clothing/head/tophat.dm b/code/modules/clothing/head/tophat.dm index 17aa72ea43f..6bc123e2062 100644 --- a/code/modules/clothing/head/tophat.dm +++ b/code/modules/clothing/head/tophat.dm @@ -22,7 +22,7 @@ COOLDOWN_START(src, rabbit_cooldown, RABBIT_CD_TIME) playsound(get_turf(src), 'sound/weapons/emitter.ogg', 70) - do_smoke(amount = DIAMOND_AREA(1), location=src, smoke_type=/obj/effect/particle_effect/fluid/smoke/quick) + do_smoke(amount = DIAMOND_AREA(1), holder = src, location = src, smoke_type=/obj/effect/particle_effect/fluid/smoke/quick) if(prob(10)) magician.visible_message(span_danger("[magician] taps [src] with [hitby_wand], then reaches in and pulls out a bu- wait, those are bees!"), span_danger("You tap [src] with your [hitby_wand.name] and pull out... BEES!")) diff --git a/code/modules/events/immovable_rod.dm b/code/modules/events/immovable_rod.dm index 11da329dda5..e3db5cd2aa4 100644 --- a/code/modules/events/immovable_rod.dm +++ b/code/modules/events/immovable_rod.dm @@ -212,7 +212,7 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 if(istype(clong, /obj/effect/immovablerod)) visible_message(span_danger("[src] collides with [clong]! This cannot end well.")) var/datum/effect_system/fluid_spread/smoke/smoke = new - smoke.set_up(2, location = get_turf(src)) + smoke.set_up(2, holder = src, location = get_turf(src)) smoke.start() var/obj/singularity/bad_luck = new(get_turf(src)) bad_luck.energy = 800 diff --git a/code/modules/events/wisdomcow.dm b/code/modules/events/wisdomcow.dm index c04bb38f5e1..05acb794cc8 100644 --- a/code/modules/events/wisdomcow.dm +++ b/code/modules/events/wisdomcow.dm @@ -9,6 +9,6 @@ /datum/round_event/wisdomcow/start() var/turf/targetloc = get_safe_random_station_turf() - new /mob/living/basic/cow/wisdom(targetloc) - do_smoke(DIAMOND_AREA(1), targetloc) + var/mob/living/basic/cow/wisdom/wise = new (targetloc) + do_smoke(1, holder = wise, location = targetloc) diff --git a/code/modules/events/wizard/curseditems.dm b/code/modules/events/wizard/curseditems.dm index cdd44547d11..2384901ef29 100644 --- a/code/modules/events/wizard/curseditems.dm +++ b/code/modules/events/wizard/curseditems.dm @@ -54,7 +54,7 @@ I.item_flags |= DROPDEL I.name = "cursed " + I.name - for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) + for(var/mob/living/carbon/human/victim in GLOB.alive_mob_list) var/datum/effect_system/fluid_spread/smoke/smoke = new - smoke.set_up(0, location = H.loc) + smoke.set_up(0, holder = victim, location = victim.loc) smoke.start() diff --git a/code/modules/events/wizard/shuffle.dm b/code/modules/events/wizard/shuffle.dm index f8e37ee3a42..f928b3c9bbe 100644 --- a/code/modules/events/wizard/shuffle.dm +++ b/code/modules/events/wizard/shuffle.dm @@ -24,15 +24,15 @@ shuffle_inplace(moblocs) shuffle_inplace(mobs) - for(var/mob/living/carbon/human/H in mobs) + for(var/mob/living/carbon/human/victim in mobs) if(!moblocs) break //locs aren't always unique, so this may come into play - do_teleport(H, moblocs[moblocs.len], channel = TELEPORT_CHANNEL_MAGIC) + do_teleport(victim, moblocs[moblocs.len], channel = TELEPORT_CHANNEL_MAGIC) moblocs.len -= 1 - for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) + for(var/mob/living/carbon/human/victim in GLOB.alive_mob_list) var/datum/effect_system/fluid_spread/smoke/smoke = new - smoke.set_up(0, location = H.loc) + smoke.set_up(0, holder = victim, location = victim.loc) smoke.start() //---// @@ -58,15 +58,15 @@ shuffle_inplace(mobnames) shuffle_inplace(mobs) - for(var/mob/living/carbon/human/H in mobs) + for(var/mob/living/carbon/human/victim in mobs) if(!mobnames) break - H.real_name = mobnames[mobnames.len] + victim.real_name = mobnames[mobnames.len] mobnames.len -= 1 - for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) + for(var/mob/living/carbon/human/victim in GLOB.alive_mob_list) var/datum/effect_system/fluid_spread/smoke/smoke = new - smoke.set_up(0, location = H.loc) + smoke.set_up(0, holder = victim, location = victim.loc) smoke.start() //---// @@ -93,12 +93,12 @@ var/obj/effect/proc_holder/spell/pointed/mind_transfer/swapper = new while(mobs.len > 1) - var/mob/living/carbon/human/H = pick(mobs) - mobs -= H - swapper.cast(list(H), mobs[mobs.len], TRUE) + var/mob/living/carbon/human/victim = pick(mobs) + mobs -= victim + swapper.cast(list(victim), mobs[mobs.len], TRUE) mobs -= mobs[mobs.len] - for(var/mob/living/carbon/human/H in GLOB.alive_mob_list) + for(var/mob/living/carbon/human/victim in GLOB.alive_mob_list) var/datum/effect_system/fluid_spread/smoke/smoke = new - smoke.set_up(0, location = H.loc) + smoke.set_up(0, holder = victim, location = victim.loc) smoke.start() diff --git a/code/modules/explorer_drone/exodrone.dm b/code/modules/explorer_drone/exodrone.dm index ff5fc05f40a..357df208fd5 100644 --- a/code/modules/explorer_drone/exodrone.dm +++ b/code/modules/explorer_drone/exodrone.dm @@ -418,7 +418,7 @@ GLOBAL_LIST_EMPTY(exodrone_launchers) */ /obj/machinery/exodrone_launcher/proc/launch_effect() playsound(src,'sound/effects/podwoosh.ogg',50, FALSE) - do_smoke(DIAMOND_AREA(1), get_turf(src)) + do_smoke(1, holder = src, location = get_turf(src)) /obj/machinery/exodrone_launcher/handle_atom_del(atom/A) if(A == fuel_canister) diff --git a/code/modules/food_and_drinks/kitchen_machinery/grill.dm b/code/modules/food_and_drinks/kitchen_machinery/grill.dm index 78ef29110c7..b9b4ff05de5 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/grill.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/grill.dm @@ -86,7 +86,7 @@ grill_fuel -= GRILL_FUELUSAGE_IDLE * delta_time if(DT_PROB(0.5, delta_time)) var/datum/effect_system/fluid_spread/smoke/bad/smoke = new - smoke.set_up(1, location = loc) + smoke.set_up(1, holder = src, location = loc) smoke.start() if(grilled_item) SEND_SIGNAL(grilled_item, COMSIG_ITEM_GRILLED, src, delta_time) diff --git a/code/modules/hydroponics/grown/onion.dm b/code/modules/hydroponics/grown/onion.dm index 93940e1a82c..38320df982e 100644 --- a/code/modules/hydroponics/grown/onion.dm +++ b/code/modules/hydroponics/grown/onion.dm @@ -53,7 +53,7 @@ var/datum/effect_system/fluid_spread/smoke/chem/cry_about_it = new //Since the onion is destroyed when it's sliced, var/splat_location = get_turf(src) //we need to set up the smoke beforehand cry_about_it.attach(splat_location) - cry_about_it.set_up(0, location = splat_location, carry = reagents, silent = FALSE) + cry_about_it.set_up(0, holder = src, location = splat_location, carry = reagents, silent = FALSE) cry_about_it.start() qdel(cry_about_it) return ..() diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm index 24a2ec57450..0095bd05533 100644 --- a/code/modules/hydroponics/plant_genes.dm +++ b/code/modules/hydroponics/plant_genes.dm @@ -651,8 +651,8 @@ var/splat_location = get_turf(target) var/range = sqrt(our_seed.potency * 0.1) smoke.attach(splat_location) - smoke.set_up(round(range), location = splat_location, carry = our_plant.reagents, silent = FALSE) - smoke.start() + smoke.set_up(round(range), holder = our_plant, location = splat_location, carry = our_plant.reagents, silent = FALSE) + smoke.start(log = TRUE) our_plant.reagents.clear_reagents() /// Makes the plant and its seeds fireproof. From lavaland plants. @@ -854,7 +854,7 @@ /datum/plant_gene/trait/never_mutate name = "Prosophobic Inclination" mutability_flags = PLANT_GENE_REMOVABLE | PLANT_GENE_MUTATABLE | PLANT_GENE_GRAFTABLE - + /// Prevents stat mutation caused by instability. Trait acts as a tag for hydroponics.dm to recognise. /datum/plant_gene/trait/stable_stats name = "Symbiotic Resilience" diff --git a/code/modules/mob/living/basic/farm_animals/cows.dm b/code/modules/mob/living/basic/farm_animals/cows.dm index 2f66d4601cb..9a5eea079c7 100644 --- a/code/modules/mob/living/basic/farm_animals/cows.dm +++ b/code/modules/mob/living/basic/farm_animals/cows.dm @@ -109,7 +109,7 @@ if(!stat && !user.combat_mode) to_chat(user, span_nicegreen("[src] whispers you some intense wisdoms and then disappears!")) user.mind?.adjust_experience(pick(GLOB.skill_types), 500) - do_smoke(DIAMOND_AREA(1), get_turf(src)) + do_smoke(1, holder = src, location = get_turf(src)) qdel(src) return return ..() diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm index f4aa963e61f..3d06670944f 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm @@ -231,7 +231,7 @@ else visible_message(span_boldwarning("[src] spews smoke from its maw!")) var/datum/effect_system/fluid_spread/smoke/smoke = new - smoke.set_up(2, location = smoke_location) + smoke.set_up(2, holder = src, location = smoke_location) smoke.start() //The legionnaire's head. Basically the same as any legion head, but we have to tell our creator when we die so they can generate another head. diff --git a/code/modules/mod/modules/modules_security.dm b/code/modules/mod/modules/modules_security.dm index 3055c242cbd..f27fbb872d9 100644 --- a/code/modules/mod/modules/modules_security.dm +++ b/code/modules/mod/modules/modules_security.dm @@ -80,8 +80,8 @@ var/datum/reagents/capsaicin_holder = new(10) capsaicin_holder.add_reagent(/datum/reagent/consumable/condensedcapsaicin, 10) var/datum/effect_system/fluid_spread/smoke/chem/quick/smoke = new - smoke.set_up(1, location = get_turf(src), carry = capsaicin_holder) - smoke.start() + smoke.set_up(1, holder = src, location = get_turf(src), carry = capsaicin_holder) + smoke.start(log = TRUE) QDEL_NULL(capsaicin_holder) // Reagents have a ref to their holder which has a ref to them. No leaks please. /obj/item/mod/module/pepper_shoulders/proc/on_check_shields() diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index b06cd6116db..5e764cb6318 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -170,7 +170,7 @@ /obj/item/gun/magic/wand/teleport/zap_self(mob/living/user) if(do_teleport(user, user, 10, channel = TELEPORT_CHANNEL_MAGIC)) var/datum/effect_system/fluid_spread/smoke/smoke = new - smoke.set_up(3, location = user.loc) + smoke.set_up(3, holder = src, location = user.loc) smoke.start() charges-- ..() @@ -193,7 +193,7 @@ if(do_teleport(user, destination, channel=TELEPORT_CHANNEL_MAGIC)) for(var/t in list(origin, destination)) var/datum/effect_system/fluid_spread/smoke/smoke = new - smoke.set_up(0, location = t) + smoke.set_up(0, holder = src, location = t) smoke.start() ..() diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 9fbf7227522..6f3926ebb1b 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -79,7 +79,7 @@ teleammount++ var/smoke_range = max(round(4 - teleammount), 0) var/datum/effect_system/fluid_spread/smoke/smoke = new - smoke.set_up(smoke_range, location = stuff.loc) //Smoke drops off if a lot of stuff is moved for the sake of sanity + smoke.set_up(smoke_range, holder = src, location = stuff.loc) //Smoke drops off if a lot of stuff is moved for the sake of sanity smoke.start() /obj/projectile/magic/safety @@ -100,7 +100,7 @@ if(do_teleport(target, destination_turf, channel=TELEPORT_CHANNEL_MAGIC)) for(var/t in list(origin_turf, destination_turf)) var/datum/effect_system/fluid_spread/smoke/smoke = new - smoke.set_up(0, location = t) + smoke.set_up(0, holder = src, location = t) smoke.start() /obj/projectile/magic/door diff --git a/code/modules/reagents/chemistry/machinery/smoke_machine.dm b/code/modules/reagents/chemistry/machinery/smoke_machine.dm index f5cd71c5c02..9617c37fcc1 100644 --- a/code/modules/reagents/chemistry/machinery/smoke_machine.dm +++ b/code/modules/reagents/chemistry/machinery/smoke_machine.dm @@ -18,7 +18,8 @@ var/setting = 1 // displayed range is 3 * setting var/max_range = 3 // displayed max range is 3 * max range -/datum/effect_system/fluid_spread/smoke/chem/smoke_machine/set_up(range = 1, amount = DIAMOND_AREA(range), atom/location = null, datum/reagents/carry = null, efficiency = 10, silent=FALSE) +/datum/effect_system/fluid_spread/smoke/chem/smoke_machine/set_up(range = 1, amount = DIAMOND_AREA(range), atom/holder, atom/location = null, datum/reagents/carry = null, efficiency = 10, silent=FALSE) + src.holder = holder src.location = get_turf(location) src.amount = amount carry?.copy_to(chemholder, 20) @@ -87,7 +88,7 @@ if(on && !smoke_test) update_appearance() var/datum/effect_system/fluid_spread/smoke/chem/smoke_machine/smoke = new() - smoke.set_up(setting * 3, location = location, carry = reagents, efficiency = efficiency) + smoke.set_up(setting * 3, holder = src, location = location, carry = reagents, efficiency = efficiency) smoke.start() use_power(active_power_usage) diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm index f17574d1f53..3e6c2992ec5 100644 --- a/code/modules/reagents/chemistry/recipes.dm +++ b/code/modules/reagents/chemistry/recipes.dm @@ -379,8 +379,8 @@ if(!force_range) force_range = (sum_volume/6) + 3 if(invert_reagents.reagent_list) - smoke.set_up(force_range, location = holder.my_atom, carry = invert_reagents) - smoke.start() + smoke.set_up(force_range, holder = holder.my_atom, location = holder.my_atom, carry = invert_reagents) + smoke.start(log = TRUE) holder.my_atom.audible_message("The [holder.my_atom] suddenly explodes, launching the aerosolized reagents into the air!") if(clear_reactants) clear_reactants(holder) @@ -400,8 +400,8 @@ if(!force_range) force_range = (sum_volume/6) + 3 if(reagents.reagent_list) - smoke.set_up(force_range, location = holder.my_atom, carry = reagents) - smoke.start() + smoke.set_up(force_range, holder = holder.my_atom, location = holder.my_atom, carry = reagents) + smoke.start(log = TRUE) holder.my_atom.audible_message("The [holder.my_atom] suddenly explodes, launching the aerosolized reagents into the air!") if(clear_reactants) clear_reactants(holder) diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index ac88ba89f78..8b61e7e4b59 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -328,7 +328,7 @@ reaction_flags = REACTION_INSTANT /datum/chemical_reaction/foam/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume) - holder.create_foam(/datum/effect_system/fluid_spread/foam, 2 * created_volume, notification = span_danger("The solution spews out foam!")) + holder.create_foam(/datum/effect_system/fluid_spread/foam, 2 * created_volume, notification = span_danger("The solution spews out foam!"), log = TRUE) reaction_tags = REACTION_TAG_EASY | REACTION_TAG_UNIQUE /datum/chemical_reaction/metalfoam @@ -338,7 +338,7 @@ reaction_tags = REACTION_TAG_EASY | REACTION_TAG_UNIQUE /datum/chemical_reaction/metalfoam/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume) - holder.create_foam(/datum/effect_system/fluid_spread/foam/metal, 5 * created_volume, /obj/structure/foamedmetal, span_danger("The solution spews out a metallic foam!")) + holder.create_foam(/datum/effect_system/fluid_spread/foam/metal, 5 * created_volume, /obj/structure/foamedmetal, span_danger("The solution spews out a metallic foam!"), log = TRUE) /datum/chemical_reaction/smart_foam required_reagents = list(/datum/reagent/aluminium = 3, /datum/reagent/smart_foaming_agent = 1, /datum/reagent/toxin/acid/fluacid = 1) @@ -347,7 +347,7 @@ reaction_tags = REACTION_TAG_EASY | REACTION_TAG_UNIQUE /datum/chemical_reaction/smart_foam/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume) - holder.create_foam(/datum/effect_system/fluid_spread/foam/metal/smart, 5 * created_volume, /obj/structure/foamedmetal, span_danger("The solution spews out metallic foam!")) + holder.create_foam(/datum/effect_system/fluid_spread/foam/metal/smart, 5 * created_volume, /obj/structure/foamedmetal, span_danger("The solution spews out metallic foam!"), log = TRUE) /datum/chemical_reaction/ironfoam required_reagents = list(/datum/reagent/iron = 3, /datum/reagent/foaming_agent = 1, /datum/reagent/toxin/acid/fluacid = 1) @@ -356,7 +356,7 @@ reaction_tags = REACTION_TAG_EASY | REACTION_TAG_UNIQUE /datum/chemical_reaction/ironfoam/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume) - holder.create_foam(/datum/effect_system/fluid_spread/foam/metal/iron, 5 * created_volume, /obj/structure/foamedmetal/iron, span_danger("The solution spews out a metallic foam!")) + holder.create_foam(/datum/effect_system/fluid_spread/foam/metal/iron, 5 * created_volume, /obj/structure/foamedmetal/iron, span_danger("The solution spews out a metallic foam!"), log = TRUE) /datum/chemical_reaction/foaming_agent results = list(/datum/reagent/foaming_agent = 1) diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index 7c5f4e80cc7..482471a5666 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -336,8 +336,8 @@ S.attach(location) playsound(location, 'sound/effects/smoke.ogg', 50, TRUE, -3) if(S) - S.set_up(amount = created_volume * 3, location = location, carry = holder, silent = FALSE) - S.start() + S.set_up(amount = created_volume * 3, holder = holder.my_atom, location = location, carry = holder, silent = FALSE) + S.start(log = TRUE) if(holder?.my_atom) holder.clear_reagents() @@ -354,8 +354,8 @@ S.attach(location) playsound(location, 'sound/effects/smoke.ogg', 50, TRUE, -3) if(S) - S.set_up(amount = created_volume, location = location, carry = holder, silent = FALSE) - S.start() + S.set_up(amount = created_volume, holder = holder.my_atom, location = location, carry = holder, silent = FALSE) + S.start(log = TRUE) if(holder?.my_atom) holder.clear_reagents() diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm index 49398f41bc2..6e179cec8aa 100644 --- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm +++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm @@ -190,7 +190,7 @@ required_other = TRUE /datum/chemical_reaction/slime/slimefoam/on_reaction(datum/reagents/holder, datum/equilibrium/reaction, created_volume) - holder.create_foam(/datum/effect_system/fluid_spread/foam, 80, span_danger("[src] spews out foam!")) + holder.create_foam(/datum/effect_system/fluid_spread/foam, 80, span_danger("[src] spews out foam!"), log = TRUE) //Dark Blue /datum/chemical_reaction/slime/slimefreeze diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index 73050e9e31a..efebdc283c6 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -233,7 +233,7 @@ /obj/machinery/rnd/experimentor/proc/throwSmoke(turf/where) var/datum/effect_system/fluid_spread/smoke/smoke = new - smoke.set_up(0, location = where) + smoke.set_up(0, holder = src, location = where) smoke.start() @@ -310,7 +310,7 @@ tmp_holder.add_reagent(chosenchem , 50) investigate_log("Experimentor has released [chosenchem] smoke.", INVESTIGATE_EXPERIMENTOR) var/datum/effect_system/fluid_spread/smoke/chem/smoke = new - smoke.set_up(0, location = src, carry = tmp_holder, silent = TRUE) + smoke.set_up(0, holder = src, location = src, carry = tmp_holder, silent = TRUE) playsound(src, 'sound/effects/smoke.ogg', 50, TRUE, -3) smoke.start() qdel(tmp_holder) @@ -322,7 +322,7 @@ tmp_holder.my_atom = src tmp_holder.add_reagent(chosenchem , 50) var/datum/effect_system/fluid_spread/smoke/chem/smoke = new - smoke.set_up(0, location = src, carry = tmp_holder, silent = TRUE) + smoke.set_up(0, holder = src, location = src, carry = tmp_holder, silent = TRUE) playsound(src, 'sound/effects/smoke.ogg', 50, TRUE, -3) smoke.start() qdel(tmp_holder) @@ -406,7 +406,7 @@ tmp_holder.add_reagent(/datum/reagent/consumable/frostoil, 50) investigate_log("Experimentor has released frostoil gas.", INVESTIGATE_EXPERIMENTOR) var/datum/effect_system/fluid_spread/smoke/chem/smoke = new - smoke.set_up(0, location = src, carry = tmp_holder, silent = TRUE) + smoke.set_up(0, holder = src, location = src, carry = tmp_holder, silent = TRUE) playsound(src, 'sound/effects/smoke.ogg', 50, TRUE, -3) smoke.start() qdel(tmp_holder) @@ -428,7 +428,7 @@ else if(prob(EFFECT_PROB_MEDIUM-badThingCoeff)) visible_message(span_warning("[src] malfunctions, releasing a flurry of chilly air as [exp_on] pops out!")) var/datum/effect_system/fluid_spread/smoke/smoke = new - smoke.set_up(0, location = loc) + smoke.set_up(0, holder = src, location = loc) smoke.start() ejectItem() //////////////////////////////////////////////////////////////////////////////////////////////// @@ -599,7 +599,7 @@ /obj/item/relic/proc/throwSmoke(turf/where) var/datum/effect_system/fluid_spread/smoke/smoke = new - smoke.set_up(0, location = get_turf(where)) + smoke.set_up(0, holder = src, location = get_turf(where)) smoke.start() /obj/item/relic/proc/corgicannon(mob/user) diff --git a/code/modules/research/xenobiology/crossbreeding/burning.dm b/code/modules/research/xenobiology/crossbreeding/burning.dm index 80a856ce453..b468c318263 100644 --- a/code/modules/research/xenobiology/crossbreeding/burning.dm +++ b/code/modules/research/xenobiology/crossbreeding/burning.dm @@ -49,8 +49,8 @@ Burning extracts: tmp_holder.add_reagent(/datum/reagent/consumable/condensedcapsaicin, 100) var/datum/effect_system/fluid_spread/smoke/chem/smoke = new - smoke.set_up(7, location = get_turf(user), carry = tmp_holder) - smoke.start() + smoke.set_up(7, holder = src, location = get_turf(user), carry = tmp_holder) + smoke.start(log = TRUE) ..() /obj/item/slimecross/burning/purple @@ -124,8 +124,8 @@ Burning extracts: tmp_holder.add_reagent(/datum/reagent/consumable/frostoil, 40) user.reagents.add_reagent(/datum/reagent/medicine/regen_jelly, 10) var/datum/effect_system/fluid_spread/smoke/chem/smoke = new - smoke.set_up(7, location = get_turf(user), carry = tmp_holder) - smoke.start() + smoke.set_up(7, holder = src, location = get_turf(user), carry = tmp_holder) + smoke.start(log = TRUE) ..() /obj/item/slimecross/burning/silver diff --git a/code/modules/research/xenobiology/vatgrowing/samples/_micro_organism.dm b/code/modules/research/xenobiology/vatgrowing/samples/_micro_organism.dm index da1bf67c7ad..edeeaad05c6 100644 --- a/code/modules/research/xenobiology/vatgrowing/samples/_micro_organism.dm +++ b/code/modules/research/xenobiology/vatgrowing/samples/_micro_organism.dm @@ -96,7 +96,7 @@ /datum/micro_organism/cell_line/proc/succeed_growing(obj/machinery/plumbing/growing_vat/vat) var/datum/effect_system/fluid_spread/smoke/smoke = new - smoke.set_up(0, location = vat.loc) + smoke.set_up(0, holder = vat, location = vat.loc) smoke.start() for(var/created_thing in resulting_atoms) for(var/x in 1 to resulting_atoms[created_thing]) diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index a1a00c2be10..69a51a8d874 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -316,7 +316,7 @@ return 250 if(SLIME_ACTIVATE_MAJOR) - user.reagents.create_foam(/datum/effect_system/fluid_spread/foam, 20) + user.reagents.create_foam(/datum/effect_system/fluid_spread/foam, 20, log = TRUE) user.visible_message(span_danger("Foam spews out from [user]'s skin!"), span_warning("You activate [src], and foam bursts out of your skin!")) return 600 diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm index 6188ec76be4..20a8251d964 100644 --- a/code/modules/spells/spell.dm +++ b/code/modules/spells/spell.dm @@ -344,7 +344,7 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th do_sparks(sparks_amt, FALSE, location) if(ispath(smoke_spread, /datum/effect_system/fluid_spread/smoke)) // Dear god this code is :agony: var/datum/effect_system/fluid_spread/smoke/smoke = new smoke_spread() - smoke.set_up(smoke_amt, location = location) + smoke.set_up(smoke_amt, holder = src, location = location) smoke.start() diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm index 9b516865c3b..d2fca6e1a24 100644 --- a/code/modules/station_goals/bsa.dm +++ b/code/modules/station_goals/bsa.dm @@ -351,7 +351,7 @@ GLOBAL_VAR_INIT(bsa_unlock, FALSE) return null //Totally nanite construction system not an immersion breaking spawning var/datum/effect_system/fluid_spread/smoke/fourth_wall_guard = new - fourth_wall_guard.set_up(4, location = get_turf(centerpiece)) + fourth_wall_guard.set_up(4, holder = src, location = get_turf(centerpiece)) fourth_wall_guard.start() var/obj/machinery/bsa/full/cannon = new(get_turf(centerpiece),centerpiece.get_cannon_direction()) QDEL_NULL(centerpiece.front_ref) diff --git a/code/modules/vehicles/atv.dm b/code/modules/vehicles/atv.dm index 88d9431e0d1..581bfb94e99 100644 --- a/code/modules/vehicles/atv.dm +++ b/code/modules/vehicles/atv.dm @@ -89,7 +89,7 @@ if(DT_PROB(10, delta_time)) return var/datum/effect_system/fluid_spread/smoke/smoke = new - smoke.set_up(0, location = src) + smoke.set_up(0, holder = src, location = src) smoke.start() /obj/vehicle/ridden/atv/bullet_act(obj/projectile/P) diff --git a/code/modules/vehicles/cars/clowncar.dm b/code/modules/vehicles/cars/clowncar.dm index 33611a96784..45660c43953 100644 --- a/code/modules/vehicles/cars/clowncar.dm +++ b/code/modules/vehicles/cars/clowncar.dm @@ -155,8 +155,8 @@ randomchems.my_atom = src randomchems.add_reagent(get_random_reagent_id(), 100) var/datum/effect_system/fluid_spread/foam/foam = new - foam.set_up(200, loc, randomchems) - foam.start() + foam.set_up(200, holder = src, location = loc, carry = randomchems) + foam.start(log = TRUE) if(3) visible_message(span_danger("[user] presses one of the colorful buttons on [src], and the clown car turns on its singularity disguise system.")) icon = 'icons/obj/singularity.dmi' @@ -168,9 +168,9 @@ funnychems.my_atom = src funnychems.add_reagent(/datum/reagent/consumable/superlaughter, 50) var/datum/effect_system/fluid_spread/smoke/chem/smoke = new() - smoke.set_up(4, location = src, carry = funnychems) + smoke.set_up(4, holder = src, location = src, carry = funnychems) smoke.attach(src) - smoke.start() + smoke.start(log = TRUE) if(5) visible_message(span_danger("[user] presses one of the colorful buttons on [src], and the clown car starts dropping an oil trail.")) RegisterSignal(src, COMSIG_MOVABLE_MOVED, .proc/cover_in_oil) diff --git a/code/modules/vehicles/mecha/_mecha.dm b/code/modules/vehicles/mecha/_mecha.dm index 4e4759b29f5..a87860ae15f 100644 --- a/code/modules/vehicles/mecha/_mecha.dm +++ b/code/modules/vehicles/mecha/_mecha.dm @@ -211,7 +211,7 @@ spark_system.set_up(2, 0, src) spark_system.attach(src) - smoke_system.set_up(3, location = src) + smoke_system.set_up(3, holder = src, location = src) smoke_system.attach(src) radio = new(src) diff --git a/code/modules/vehicles/secway.dm b/code/modules/vehicles/secway.dm index 1a2e6472441..651bf3a89e5 100644 --- a/code/modules/vehicles/secway.dm +++ b/code/modules/vehicles/secway.dm @@ -25,7 +25,7 @@ if(DT_PROB(10, delta_time)) return var/datum/effect_system/fluid_spread/smoke/smoke = new - smoke.set_up(0, location = src) + smoke.set_up(0, holder = src, location = src) smoke.start() /obj/vehicle/ridden/secway/welder_act(mob/living/user, obj/item/I)