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)