From d3ee9102118ae3b1dec6433f82249ab1abda46d5 Mon Sep 17 00:00:00 2001 From: phil235 Date: Wed, 21 Oct 2015 23:28:29 +0200 Subject: [PATCH] Makes effect system code more OOP. obj/effect/effect is now renamed obj/effect/particle_effect for better usability. datum/effect/system and /datum/effect/effect/system are now both /datum/effect_system. Fixes a bug where wall mounted igniters (and other spark producing objects) didn't produce sparks sometimes. Moved explosion_particles.dm into the effect_system folder, because it has effect_systems code. --- code/datums/helper_datums/teleport.dm | 12 +- code/datums/spell.dm | 8 +- code/datums/spells/ethereal_jaunt.dm | 2 +- .../gamemodes/abduction/abduction_gear.dm | 2 +- .../game/gamemodes/abduction/machinery/pad.dm | 4 +- code/game/gamemodes/antag_spawner.dm | 4 +- code/game/gamemodes/blob/blobs/blob_mobs.dm | 2 +- code/game/gamemodes/gang/dominator.dm | 2 +- .../shadowling/shadowling_abilities.dm | 4 +- code/game/gamemodes/wizard/godhand.dm | 2 +- code/game/machinery/ai_slipper.dm | 2 +- code/game/machinery/alarm.dm | 2 +- code/game/machinery/autolathe.dm | 6 +- code/game/machinery/bots/bots.dm | 4 +- code/game/machinery/bots/cleanbot.dm | 4 +- code/game/machinery/bots/ed209bot.dm | 2 +- code/game/machinery/bots/floorbot.dm | 2 +- code/game/machinery/bots/medbot.dm | 2 +- code/game/machinery/bots/mulebot.dm | 2 +- code/game/machinery/bots/secbot.dm | 2 +- .../machinery/computer/HolodeckControl.dm | 4 +- code/game/machinery/computer/message.dm | 2 +- code/game/machinery/deployable.dm | 8 +- code/game/machinery/doors/airlock.dm | 2 +- code/game/machinery/doors/door.dm | 2 +- code/game/machinery/doors/poddoor.dm | 6 +- code/game/machinery/igniter.dm | 17 ++- code/game/machinery/portable_turret.dm | 4 +- code/game/machinery/slotmachine.dm | 2 +- code/game/machinery/turrets.dm | 4 +- code/game/machinery/vending.dm | 2 +- code/game/mecha/combat/marauder.dm | 2 +- code/game/mecha/equipment/tools/work_tools.dm | 2 +- code/game/mecha/mecha.dm | 2 +- code/game/objects/effects/anomalies.dm | 2 +- .../effects/decals/Cleanable/robots.dm | 2 +- .../effects/effect_system/effect_system.dm | 61 ++++++----- .../effects/effect_system/effects_foam.dm | 52 ++++----- .../effects/effect_system/effects_other.dm | 103 ++++++++++++------ .../effects/effect_system/effects_smoke.dm | 82 +++++++------- .../effects/effect_system/effects_sparks.dm | 92 ++-------------- .../effects/effect_system/effects_water.dm | 87 ++------------- .../objects/effects/explosion_particles.dm | 70 ------------ code/game/objects/effects/gibs.dm | 2 +- code/game/objects/effects/mines.dm | 2 +- code/game/objects/effects/portals.dm | 3 + code/game/objects/effects/step_triggers.dm | 8 +- code/game/objects/explosion.dm | 2 +- .../objects/items/devices/chameleonproj.dm | 2 +- .../items/devices/radio/electropack.dm | 2 +- code/game/objects/items/toys.dm | 4 +- code/game/objects/items/weapons/RCD.dm | 5 +- code/game/objects/items/weapons/RPD.dm | 4 +- .../objects/items/weapons/cigs_lighters.dm | 4 +- .../game/objects/items/weapons/clown_items.dm | 2 +- .../objects/items/weapons/extinguisher.dm | 2 +- .../items/weapons/grenades/chem_grenade.dm | 2 +- .../items/weapons/grenades/smokebomb.dm | 4 +- code/game/objects/items/weapons/handcuffs.dm | 2 +- .../objects/items/weapons/melee/energy.dm | 4 +- code/game/objects/items/weapons/scrolls.dm | 2 +- .../items/weapons/singularityhammer.dm | 2 +- .../objects/items/weapons/tanks/jetpack.dm | 6 +- .../objects/items/weapons/tanks/watertank.dm | 4 +- .../structures/crates_lockers/crates.dm | 2 +- code/game/objects/structures/electricchair.dm | 2 +- code/game/objects/structures/grille.dm | 2 +- code/game/objects/structures/hivebot.dm | 2 +- code/modules/assembly/igniter.dm | 2 +- .../awaymissions/mission_code/wildwest.dm | 2 +- code/modules/clothing/spacesuits/plasmamen.dm | 2 +- code/modules/events/vent_clog.dm | 2 +- code/modules/events/wizard/curseditems.dm | 2 +- code/modules/events/wizard/imposter.dm | 2 +- code/modules/events/wizard/shuffle.dm | 6 +- .../kitchen machinery/microwave.dm | 2 +- code/modules/mining/equipment_locker.dm | 4 +- code/modules/mining/mine_items.dm | 2 +- .../mob/living/carbon/carbon_defense.dm | 2 +- code/modules/mob/living/silicon/ai/ai.dm | 4 +- .../modules/mob/living/silicon/robot/robot.dm | 6 +- .../living/simple_animal/hostile/hivebot.dm | 2 +- .../revenant/revenant_abilities.dm | 6 +- code/modules/ninja/energy_katana.dm | 4 +- .../suit/n_suit_verbs/energy_net_nets.dm | 2 +- .../ninja/suit/n_suit_verbs/ninja_smoke.dm | 2 +- code/modules/ninja/suit/ninjaDrainAct.dm | 6 +- code/modules/ninja/suit/suit.dm | 2 +- code/modules/power/apc.dm | 8 +- code/modules/power/cable.dm | 2 +- code/modules/power/lighting.dm | 4 +- .../power/singularity/containment_field.dm | 2 +- code/modules/power/singularity/emitter.dm | 2 +- code/modules/power/singularity/narsie.dm | 2 +- code/modules/power/smes.dm | 2 +- code/modules/power/terminal.dm | 2 +- code/modules/projectiles/guns/magic/wand.dm | 2 +- code/modules/projectiles/projectile/energy.dm | 6 +- code/modules/projectiles/projectile/magic.dm | 2 +- .../Pyrotechnic-Reagents.dm | 2 +- .../reagents/Chemistry-Recipes/Others.dm | 6 +- .../Chemistry-Recipes/Pyrotechnics.dm | 16 +-- code/modules/reagents/reagent_dispenser.dm | 6 +- code/modules/research/experimentor.dm | 12 +- code/modules/research/rdmachines.dm | 2 +- code/modules/telesci/bscrystal.dm | 4 +- code/modules/telesci/telepad.dm | 2 +- code/modules/telesci/telesci_computer.dm | 6 +- tgstation.dme | 2 +- 109 files changed, 381 insertions(+), 529 deletions(-) delete mode 100644 code/game/objects/effects/explosion_particles.dm diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index ca28400596e..6c22a9c08db 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -9,8 +9,8 @@ var/atom/movable/teleatom //atom to teleport var/atom/destination //destination to teleport to var/precision = 0 //teleport precision - var/datum/effect/effect/system/effectin //effect to show right before teleportation - var/datum/effect/effect/system/effectout //effect to show right after teleportation + var/datum/effect_system/effectin //effect to show right before teleportation + var/datum/effect_system/effectout //effect to show right after teleportation var/soundin //soundfile to play before teleportation var/soundout //soundfile to play after teleportation var/force_teleport = 1 //if false, teleport will use Move() proc (dense objects will prevent teleportation) @@ -59,7 +59,7 @@ //custom effects must be properly set up first for instant-type teleports //optional -/datum/teleport/proc/setEffects(datum/effect/effect/system/aeffectin=null,datum/effect/effect/system/aeffectout=null) +/datum/teleport/proc/setEffects(datum/effect_system/aeffectin=null,datum/effect_system/aeffectout=null) effectin = istype(aeffectin) ? aeffectin : null effectout = istype(aeffectout) ? aeffectout : null return 1 @@ -79,7 +79,7 @@ /datum/teleport/proc/teleportChecks() return 1 -/datum/teleport/proc/playSpecials(atom/location,datum/effect/effect/system/effect,sound) +/datum/teleport/proc/playSpecials(atom/location,datum/effect_system/effect,sound) if(location) if(effect) spawn(-1) @@ -148,9 +148,9 @@ /datum/teleport/instant/science -/datum/teleport/instant/science/setEffects(datum/effect/effect/system/aeffectin,datum/effect/effect/system/aeffectout) +/datum/teleport/instant/science/setEffects(datum/effect_system/aeffectin,datum/effect_system/aeffectout) if(aeffectin==null || aeffectout==null) - var/datum/effect/effect/system/spark_spread/aeffect = new + var/datum/effect_system/spark_spread/aeffect = new aeffect.set_up(5, 1, teleatom) effectin = effectin || aeffect effectout = effectout || aeffect diff --git a/code/datums/spell.dm b/code/datums/spell.dm index 86591120ba1..f0600d848ab 100644 --- a/code/datums/spell.dm +++ b/code/datums/spell.dm @@ -207,20 +207,20 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin if(istype(target,/mob/living) && message) target << text("[message]") if(sparks_spread) - var/datum/effect/effect/system/spark_spread/sparks = new + var/datum/effect_system/spark_spread/sparks = new sparks.set_up(sparks_amt, 0, location) //no idea what the 0 is sparks.start() if(smoke_spread) if(smoke_spread == 1) - var/datum/effect/effect/system/smoke_spread/smoke = new + var/datum/effect_system/smoke_spread/smoke = new smoke.set_up(smoke_amt, location) smoke.start() else if(smoke_spread == 2) - var/datum/effect/effect/system/smoke_spread/bad/smoke = new + var/datum/effect_system/smoke_spread/bad/smoke = new smoke.set_up(smoke_amt, location) smoke.start() else if(smoke_spread == 3) - var/datum/effect/effect/system/smoke_spread/sleeping/smoke = new + var/datum/effect_system/smoke_spread/sleeping/smoke = new smoke.set_up(smoke_amt, location) smoke.start() diff --git a/code/datums/spells/ethereal_jaunt.dm b/code/datums/spells/ethereal_jaunt.dm index d86dbcaf175..3fd6266d19c 100644 --- a/code/datums/spells/ethereal_jaunt.dm +++ b/code/datums/spells/ethereal_jaunt.dm @@ -75,7 +75,7 @@ /obj/effect/proc_holder/spell/targeted/ethereal_jaunt/proc/jaunt_steam(mobloc) - var/datum/effect/effect/system/steam_spread/steam = new /datum/effect/effect/system/steam_spread() + var/datum/effect_system/steam_spread/steam = new /datum/effect_system/steam_spread() steam.set_up(10, 0, mobloc) steam.start() diff --git a/code/game/gamemodes/abduction/abduction_gear.dm b/code/game/gamemodes/abduction/abduction_gear.dm index 115b92f8ae1..61a05796c16 100644 --- a/code/game/gamemodes/abduction/abduction_gear.dm +++ b/code/game/gamemodes/abduction/abduction_gear.dm @@ -522,7 +522,7 @@ Congratulations! You are now trained for xenobiology research!"} /obj/item/weapon/restraints/handcuffs/energy/used/dropped(mob/user) user.visible_message("[user]'s [src] break in a discharge of energy!", \ "[user]'s [src] break in a discharge of energy!") - var/datum/effect/effect/system/spark_spread/S = new + var/datum/effect_system/spark_spread/S = new S.set_up(4,0,user.loc) S.start() qdel(src) diff --git a/code/game/gamemodes/abduction/machinery/pad.dm b/code/game/gamemodes/abduction/machinery/pad.dm index e7abfd04529..c7693ffbdc0 100644 --- a/code/game/gamemodes/abduction/machinery/pad.dm +++ b/code/game/gamemodes/abduction/machinery/pad.dm @@ -57,7 +57,7 @@ /obj/machinery/abductor/pad/proc/MobToLoc(place,mob/living/target) var/obj/effect/teleport_abductor/F = new(place) - var/datum/effect/effect/system/spark_spread/S = new + var/datum/effect_system/spark_spread/S = new S.set_up(10,0,place) S.start() sleep(80) @@ -68,7 +68,7 @@ /obj/machinery/abductor/pad/proc/PadToLoc(place) var/obj/effect/teleport_abductor/F = new(place) - var/datum/effect/effect/system/spark_spread/S = new + var/datum/effect_system/spark_spread/S = new S.set_up(10,0,place) S.start() sleep(80) diff --git a/code/game/gamemodes/antag_spawner.dm b/code/game/gamemodes/antag_spawner.dm index 1ab4ecdc166..1dde1a9168c 100644 --- a/code/game/gamemodes/antag_spawner.dm +++ b/code/game/gamemodes/antag_spawner.dm @@ -64,7 +64,7 @@ H << "Unable to reach your apprentice! You can either attack the spellbook with the contract to refund your points, or wait and try again later." /obj/item/weapon/antag_spawner/contract/spawn_antag(client/C, turf/T, type = "") - PoolOrNew(/obj/effect/effect/smoke, T) + PoolOrNew(/obj/effect/particle_effect/smoke, T) var/mob/living/carbon/human/M = new/mob/living/carbon/human(T) C.prefs.copy_to(M) M.key = C.key @@ -150,7 +150,7 @@ if(!borg_to_spawn) //If there's no type at all, let it still be used but don't do anything used = 0 return - var/datum/effect/effect/system/spark_spread/S = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/S = new /datum/effect_system/spark_spread S.set_up(4, 1, src) S.start() var/mob/living/silicon/robot/R diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm index 7979875e313..3715e02a671 100644 --- a/code/game/gamemodes/blob/blobs/blob_mobs.dm +++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm @@ -91,7 +91,7 @@ /mob/living/simple_animal/hostile/blob/blobspore/death(gibbed) ..(1) // On death, create a small smoke of harmful gas (s-Acid) - var/datum/effect/effect/system/smoke_spread/chem/S = new + var/datum/effect_system/smoke_spread/chem/S = new var/turf/location = get_turf(src) // Create the reagents to put into the air diff --git a/code/game/gamemodes/gang/dominator.dm b/code/game/gamemodes/gang/dominator.dm index 62e911426dc..b75613ab551 100644 --- a/code/game/gamemodes/gang/dominator.dm +++ b/code/game/gamemodes/gang/dominator.dm @@ -54,7 +54,7 @@ iconname += "-[gang.color]" SetLuminosity(3) - var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread health -= damage diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm index 83b9b3ed8b9..fe10e866b2c 100644 --- a/code/game/gamemodes/shadowling/shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm @@ -400,7 +400,7 @@ B.reagents.clear_reagents() //Just in case! B.icon_state = null //Invisible B.reagents.add_reagent("blindness_smoke", 10) - var/datum/effect/effect/system/smoke_spread/chem/S = new + var/datum/effect_system/smoke_spread/chem/S = new S.attach(B) if(S) S.set_up(B.reagents, 4, 0, B.loc) @@ -464,7 +464,7 @@ datum/reagent/shadowling_blindness_smoke //Reagent used for above spell S << "ERROR $!(@ ERROR )#^! SENSORY OVERLOAD \[$(!@#" S << 'sound/misc/interference.ogg' playsound(S, 'sound/machines/warning-buzzer.ogg', 50, 1) - var/datum/effect/effect/system/spark_spread/sp = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/sp = new /datum/effect_system/spark_spread sp.set_up(5, 1, S) sp.start() S.Weaken(6) diff --git a/code/game/gamemodes/wizard/godhand.dm b/code/game/gamemodes/wizard/godhand.dm index ef90c160dfa..2883ae0a50a 100644 --- a/code/game/gamemodes/wizard/godhand.dm +++ b/code/game/gamemodes/wizard/godhand.dm @@ -51,7 +51,7 @@ B.loc = get_turf(C_target) B.transfer_identity(C_target) C_target.internal_organs -= B - var/datum/effect/effect/system/spark_spread/sparks = new + var/datum/effect_system/spark_spread/sparks = new sparks.set_up(4, 0, M.loc) //no idea what the 0 is sparks.start() M.gib() diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm index e43ac72fd45..912ca478951 100644 --- a/code/game/machinery/ai_slipper.dm +++ b/code/game/machinery/ai_slipper.dm @@ -95,7 +95,7 @@ if(cooldown_on || disabled) return else - PoolOrNew(/obj/effect/effect/foam, loc) + PoolOrNew(/obj/effect/particle_effect/foam, loc) src.uses-- cooldown_on = 1 cooldown_time = world.timeofday + 100 diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index 1c3fb0a8862..b29c928227b 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -220,7 +220,7 @@ return 0 if(!prob(prb)) return 0 //you lucked out, no shock for you - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(5, 1, src) s.start() //sparks always. if (electrocute_mob(user, get_area(src), src)) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 44624e57680..e994bd45030 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -39,7 +39,7 @@ "Construction", "T-Comm", "Security", - "Machinery", + "Machinery", "Medical", "Misc" ) @@ -361,7 +361,7 @@ return 0 if(!prob(prb)) return 0 - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(5, 1, src) s.start() if (electrocute_mob(user, get_area(src), src, 0.7)) @@ -374,7 +374,7 @@ if(hack) for(var/datum/design/D in files.possible_designs) - if((D.build_type & AUTOLATHE) && ("hacked" in D.category)) + if((D.build_type & AUTOLATHE) && ("hacked" in D.category)) files.known_designs += D else for(var/datum/design/D in files.known_designs) diff --git a/code/game/machinery/bots/bots.dm b/code/game/machinery/bots/bots.dm index 4023b379920..55a2444a231 100644 --- a/code/game/machinery/bots/bots.dm +++ b/code/game/machinery/bots/bots.dm @@ -261,7 +261,7 @@ user << "The welder must be on for this task!" else if(W.force) //if force is non-zero - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(5, 1, src) switch(W.damtype) if("fire") @@ -281,7 +281,7 @@ if((Proj.damage_type == BRUTE || Proj.damage_type == BURN)) health -= Proj.damage if(prob(75) && Proj.damage > 0) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(5, 1, src) s.start() ..() diff --git a/code/game/machinery/bots/cleanbot.dm b/code/game/machinery/bots/cleanbot.dm index 0874c53af2d..87df25eded6 100644 --- a/code/game/machinery/bots/cleanbot.dm +++ b/code/game/machinery/bots/cleanbot.dm @@ -148,7 +148,7 @@ text("[on ? "On" : "Off"]")) if(prob(5)) //Spawns foam! visible_message("[src] whirs and bubbles violently, before releasing a plume of froth!") - PoolOrNew(/obj/effect/effect/foam, loc) + PoolOrNew(/obj/effect/particle_effect/foam, loc) else if (prob(5)) audible_message("[src] makes an excited beeping booping sound!") @@ -234,7 +234,7 @@ text("[on ? "On" : "Off"]")) if (prob(50)) new /obj/item/robot_parts/l_arm(Tsec) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(3, 1, src) s.start() ..() diff --git a/code/game/machinery/bots/ed209bot.dm b/code/game/machinery/bots/ed209bot.dm index dd03dc521e2..0f2a506a7ab 100644 --- a/code/game/machinery/bots/ed209bot.dm +++ b/code/game/machinery/bots/ed209bot.dm @@ -436,7 +436,7 @@ Auto Patrol[]"}, if(lasercolor == "r") new /obj/item/clothing/suit/redtag(Tsec) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(3, 1, src) s.start() diff --git a/code/game/machinery/bots/floorbot.dm b/code/game/machinery/bots/floorbot.dm index 71f5e3d04d0..50a429270f5 100644 --- a/code/game/machinery/bots/floorbot.dm +++ b/code/game/machinery/bots/floorbot.dm @@ -455,7 +455,7 @@ obj/machinery/bot/floorbot/process_scan(scan_target) T.amount = amount amount = 0 - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(3, 1, src) s.start() ..() diff --git a/code/game/machinery/bots/medbot.dm b/code/game/machinery/bots/medbot.dm index 315468230dc..bcc7e4fa730 100644 --- a/code/game/machinery/bots/medbot.dm +++ b/code/game/machinery/bots/medbot.dm @@ -520,7 +520,7 @@ if (prob(50)) new /obj/item/robot_parts/l_arm(Tsec) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(3, 1, src) s.start() ..() diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index c74d6526b09..9b96447552b 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -833,7 +833,7 @@ var/global/mulebot_count = 0 cell.update_icon() cell = null - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(3, 1, src) s.start() diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm index ae739499a1c..2fdb4c03990 100644 --- a/code/game/machinery/bots/secbot.dm +++ b/code/game/machinery/bots/secbot.dm @@ -371,7 +371,7 @@ Auto Patrol: []"}, if(prob(50)) new /obj/item/robot_parts/l_arm(Tsec) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(3, 1, src) s.start() diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index 0587b8c9c3b..0ba57253e61 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -171,7 +171,7 @@ for(var/turf/T in linkedholodeck) if(prob(30)) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(2, 1, T) s.start() T.ex_act(3) @@ -240,7 +240,7 @@ spawn(20) if(istype(target,/area/holodeck/source_burntest)) var/turf/T = get_turf(L) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(2, 1, T) s.start() if(T) diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm index c575e09025f..6597ee9fd2e 100644 --- a/code/game/machinery/computer/message.dm +++ b/code/game/machinery/computer/message.dm @@ -12,7 +12,7 @@ //Server linked to. var/obj/machinery/message_server/linkedServer = null //Sparks effect - For emag - var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread //Messages - Saves me time if I want to change something. var/noserver = "ALERT: No server detected." var/incorrectkey = "ALERT: Incorrect decryption key!" diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 200aa1fca7a..89b1c3e396c 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -167,7 +167,7 @@ obj/structure/barricade/wooden/proc/take_damage(damage, leave_debris=1, message) user << "Barrier lock toggled off." return else - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(2, 1, src) s.start() visible_message("BZZzZZzZZzZT") @@ -201,7 +201,7 @@ obj/structure/barricade/wooden/proc/take_damage(damage, leave_debris=1, message) src.emagged = 1 src.req_access = null user << "You break the ID authentication lock on \the [src]." - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(2, 1, src) s.start() visible_message("BZZzZZzZZzZT") @@ -209,7 +209,7 @@ obj/structure/barricade/wooden/proc/take_damage(damage, leave_debris=1, message) else if (src.emagged == 1) src.emagged = 2 user << "You short out the anchoring mechanism on \the [src]." - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(2, 1, src) s.start() visible_message("BZZzZZzZZzZT") @@ -250,7 +250,7 @@ obj/structure/barricade/wooden/proc/take_damage(damage, leave_debris=1, message) /* var/obj/item/stack/rods/ =*/ new /obj/item/stack/rods(Tsec) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(3, 1, src) s.start() diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 07f2f5b3bea..c3d7449b657 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -207,7 +207,7 @@ About the new airlock wires panel: return 0 //Already shocked someone recently? if(!prob(prb)) return 0 //you lucked out, no shock for you - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(5, 1, src) s.start() //sparks always. if(electrocute_mob(user, get_area(src), src)) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index f0194cc645d..5964f7462cf 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -158,7 +158,7 @@ /obj/machinery/door/ex_act(severity, target) if(severity == 3) if(prob(80)) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(2, 1, src) s.start() return diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index 03383fd1309..3f7e84b1277 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -98,20 +98,20 @@ if(prob(80)) qdel(src) else - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(2, 1, src) s.start() if(2) if(prob(20)) qdel(src) else - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(2, 1, src) s.start() if(3) if(prob(80)) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(2, 1, src) s.start() diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index 9920a4f5de7..20c5308fe67 100644 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -54,10 +54,19 @@ var/disable = 0 var/last_spark = 0 var/base_state = "migniter" + var/datum/effect_system/spark_spread/spark_system anchored = 1 /obj/machinery/sparker/New() ..() + spark_system = new /datum/effect_system/spark_spread + spark_system.set_up(2, 1, src) + spark_system.attach(src) + +/obj/machinery/sparker/Destroy() + qdel(spark_system) + spark_system = null + return ..() /obj/machinery/sparker/power_change() if ( powered() && disable == 0 ) @@ -86,7 +95,7 @@ icon_state = "[base_state]-p" /obj/machinery/sparker/attack_ai() - if (src.anchored) + if (anchored) return src.ignite() else return @@ -100,10 +109,8 @@ flick("[base_state]-spark", src) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(2, 1, src) - s.start() - src.last_spark = world.time + spark_system.start() + last_spark = world.time use_power(1000) var/turf/location = src.loc if (isturf(location)) diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 78c2f6c826f..4d6e0bb0fa8 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -53,13 +53,13 @@ var/faction = "neutral" - var/datum/effect/effect/system/spark_spread/spark_system //the spark system, used for generating... sparks? + var/datum/effect_system/spark_spread/spark_system //the spark system, used for generating... sparks? /obj/machinery/porta_turret/New() ..() icon_state = "[lasercolor]grey_target_prism" //Sets up a spark system - spark_system = new /datum/effect/effect/system/spark_spread + spark_system = new /datum/effect_system/spark_spread spark_system.set_up(5, 0, src) spark_system.attach(src) diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm index b8a8a000a56..8134995ba53 100644 --- a/code/game/machinery/slotmachine.dm +++ b/code/game/machinery/slotmachine.dm @@ -100,7 +100,7 @@ /obj/machinery/computer/slot_machine/emag_act() if(!emagged) emagged = 1 - var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() + var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread() spark_system.set_up(4, 0, src.loc) spark_system.start() playsound(src.loc, "sparks", 50, 1) diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm index 6b915b1bc36..abe5c2933ea 100644 --- a/code/game/machinery/turrets.dm +++ b/code/game/machinery/turrets.dm @@ -62,7 +62,7 @@ var/wasvalid = 0 var/lastfired = 0 var/shot_delay = 30 //3 seconds between shots - var/datum/effect/effect/system/spark_spread/spark_system + var/datum/effect_system/spark_spread/spark_system use_power = 1 idle_power_usage = 50 active_power_usage = 300 @@ -73,7 +73,7 @@ /obj/machinery/turret/New() - spark_system = new /datum/effect/effect/system/spark_spread + spark_system = new /datum/effect_system/spark_spread spark_system.set_up(5, 0, src) spark_system.attach(src) // targets = new diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 9e659261180..b1593005551 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -590,7 +590,7 @@ return 0 if(!prob(prb)) return 0 - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(5, 1, src) s.start() if(electrocute_mob(user, get_area(src), src, 0.7)) diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm index 2b093ab4d86..69b1f18468b 100644 --- a/code/game/mecha/combat/marauder.dm +++ b/code/game/mecha/combat/marauder.dm @@ -12,7 +12,7 @@ var/smoke = 5 var/smoke_ready = 1 var/smoke_cooldown = 100 - var/datum/effect/effect/system/smoke_spread/smoke_system = new + var/datum/effect_system/smoke_spread/smoke_system = new operation_req_access = list(access_cent_specops) wreckage = /obj/structure/mecha_wreckage/marauder add_req_access = 0 diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index 052b5a08353..07433c97ac1 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -149,7 +149,7 @@ var/list/the_targets = list(T,T1,T2) spawn(0) for(var/a=0, a<5, a++) - var/obj/effect/effect/water/W = PoolOrNew(/obj/effect/effect/water, get_turf(chassis)) + var/obj/effect/particle_effect/water/W = PoolOrNew(/obj/effect/particle_effect/water, get_turf(chassis)) if(!W) return var/turf/my_target = pick(the_targets) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 8b45cf3faae..579863acdca 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -36,7 +36,7 @@ var/maint_access = 0 var/dna_lock//dna-locking the mech var/list/proc_res = list() //stores proc owners, like proc_res["functionname"] = owner reference - var/datum/effect/effect/system/spark_spread/spark_system = new + var/datum/effect_system/spark_spread/spark_system = new var/lights = 0 var/lights_power = 6 var/last_user_hud = 1 // used to show/hide the mecha hud while preserving previous preference diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm index a10301a8eb7..30bc38bf624 100644 --- a/code/game/objects/effects/anomalies.dm +++ b/code/game/objects/effects/anomalies.dm @@ -27,7 +27,7 @@ /obj/effect/anomaly/proc/anomalyNeutralize() - PoolOrNew(/obj/effect/effect/smoke/bad, loc) + PoolOrNew(/obj/effect/particle_effect/smoke/bad, loc) for(var/atom/movable/O in src) O.loc = src.loc diff --git a/code/game/objects/effects/decals/Cleanable/robots.dm b/code/game/objects/effects/decals/Cleanable/robots.dm index 002b5e1a4fa..becacd4d2ea 100644 --- a/code/game/objects/effects/decals/Cleanable/robots.dm +++ b/code/game/objects/effects/decals/Cleanable/robots.dm @@ -22,7 +22,7 @@ if (prob(40)) new /obj/effect/decal/cleanable/oil/streak(src.loc) else if (prob(10)) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(3, 1, src) s.start() if (step_to(src, get_step(src, direction), 0)) diff --git a/code/game/objects/effects/effect_system/effect_system.dm b/code/game/objects/effects/effect_system/effect_system.dm index 5ed578fecdb..a3d38bf1426 100644 --- a/code/game/objects/effects/effect_system/effect_system.dm +++ b/code/game/objects/effects/effect_system/effect_system.dm @@ -6,56 +6,67 @@ would spawn and follow the beaker, even if it is carried or thrown. */ -/obj/effect/effect - name = "effect" +/obj/effect/particle_effect + name = "particle effect" icon = 'icons/effects/effects.dmi' mouse_opacity = 0 - unacidable = 1//So effect are not targeted by alien acid. + unacidable = 1//So effects are not targeted by alien acid. pass_flags = PASSTABLE | PASSGRILLE -/obj/effect/effect/New() +/obj/effect/particle_effect/New() ..() if(ticker) cameranet.updateVisibility(src) -/obj/effect/effect/Destroy() +/obj/effect/particle_effect/Destroy() if(ticker) cameranet.updateVisibility(src) ..() return QDEL_HINT_PUTINPOOL -/* -/datum/effect/effect/proc/fadeOut(var/atom/A, var/frames = 16) - if(A.alpha == 0) //Handle already transparent case - return - if(frames == 0) - frames = 1 //We will just assume that by 0 frames, the coder meant "during one frame". - var/step = A.alpha / frames - for(var/i = 0, i < frames, i++) - A.alpha -= step - sleep(world.tick_lag) - return -*/ -/datum/effect/effect/system + +/datum/effect_system var/number = 3 var/cardinals = 0 var/turf/location var/atom/holder - var/setup = 0 + var/effect_type + var/total_effects = 0 -/datum/effect/effect/system/Destroy() +/datum/effect_system/Destroy() holder = null location = null return ..() -/datum/effect/effect/system/proc/set_up(n = 3, c = 0, turf/loc) +/datum/effect_system/proc/set_up(n = 3, c = 0, loca) if(n > 10) n = 10 number = n cardinals = c - location = loc - setup = 1 + if(isturf(loca)) + location = loca + else + location = get_turf(loca) -/datum/effect/effect/system/proc/attach(atom/atom) +/datum/effect_system/proc/attach(atom/atom) holder = atom -/datum/effect/effect/system/proc/start() \ No newline at end of file +/datum/effect_system/proc/start() + for(var/i in 1 to number) + if(total_effects > 20) + return + spawn(0) + if(holder) + location = get_turf(holder) + var/obj/effect/E = PoolOrNew(effect_type, location) + total_effects++ + var/direction + if(cardinals) + direction = pick(cardinal) + else + direction = pick(alldirs) + var/steps_amt = pick(1,2,3) + for(var/j in 1 to steps_amt) + sleep(5) + step(E,direction) + spawn(20) + total_effects-- \ No newline at end of file diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index 2482107f2cb..bdfe7759266 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -1,7 +1,7 @@ // Foam // Similar to smoke, but slower and mobs absorb its reagent through their exposed skin. -/obj/effect/effect/foam +/obj/effect/particle_effect/foam name = "foam" icon_state = "foam" opacity = 0 @@ -15,29 +15,29 @@ var/lifetime = 6 -/obj/effect/effect/foam/metal +/obj/effect/particle_effect/foam/metal name = "aluminium foam" metal = 1 icon_state = "mfoam" -/obj/effect/effect/foam/metal/iron +/obj/effect/particle_effect/foam/metal/iron name = "iron foam" metal = 2 -/obj/effect/effect/foam/New(loc) +/obj/effect/particle_effect/foam/New(loc) ..(loc) create_reagents(1000) //limited by the size of the reagent holder anyway. SSobj.processing |= src playsound(src, 'sound/effects/bubbles2.ogg', 80, 1, -3) -/obj/effect/effect/foam/Destroy() +/obj/effect/particle_effect/foam/Destroy() SSobj.processing.Remove(src) return ..() -/obj/effect/effect/foam/proc/kill_foam() +/obj/effect/particle_effect/foam/proc/kill_foam() SSobj.processing.Remove(src) if(metal) var/obj/structure/foamedmetal/M = new(src.loc) @@ -48,7 +48,7 @@ qdel(src) -/obj/effect/effect/foam/process() +/obj/effect/particle_effect/foam/process() lifetime-- if(lifetime < 1) kill_foam() @@ -71,7 +71,7 @@ return spread_foam() -/obj/effect/effect/foam/proc/foam_mob(mob/living/L) +/obj/effect/particle_effect/foam/proc/foam_mob(mob/living/L) if(lifetime<1) return 0 if(!istype(L)) @@ -81,66 +81,66 @@ lifetime-- return 1 -/obj/effect/effect/foam/Crossed(atom/movable/AM) +/obj/effect/particle_effect/foam/Crossed(atom/movable/AM) if(istype(AM, /mob/living/carbon)) var/mob/living/carbon/M = AM M.slip(5, 2, src) -/obj/effect/effect/foam/metal/Crossed(atom/movable/AM) +/obj/effect/particle_effect/foam/metal/Crossed(atom/movable/AM) return -/obj/effect/effect/foam/proc/spread_foam() +/obj/effect/particle_effect/foam/proc/spread_foam() var/turf/t_loc = get_turf(src) for(var/turf/T in t_loc.GetAtmosAdjacentTurfs()) - var/obj/effect/effect/foam/foundfoam = locate() in T //Don't spread foam where there's already foam! + var/obj/effect/particle_effect/foam/foundfoam = locate() in T //Don't spread foam where there's already foam! if(foundfoam) continue for(var/mob/living/L in T) foam_mob(L) - var/obj/effect/effect/foam/F = PoolOrNew(src.type, T) + var/obj/effect/particle_effect/foam/F = PoolOrNew(src.type, T) F.amount = amount reagents.copy_to(F, (reagents.total_volume)) F.color = color F.metal = metal -/obj/effect/effect/foam/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/effect/particle_effect/foam/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(prob(max(0, exposed_temperature - 475))) //foam dissolves when heated kill_foam() -/obj/effect/effect/foam/metal/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/effect/particle_effect/foam/metal/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) return /////////////////////////////////////////////// //FOAM EFFECT DATUM -/datum/effect/effect/system/foam_spread +/datum/effect_system/foam_spread var/amount = 10 // the size of the foam spread. var/obj/chemholder - var/obj/effect/effect/foam/foamtype = /obj/effect/effect/foam + effect_type = /obj/effect/particle_effect/foam var/metal = 0 -/datum/effect/effect/system/foam_spread/metal - foamtype = /obj/effect/effect/foam/metal +/datum/effect_system/foam_spread/metal + effect_type = /obj/effect/particle_effect/foam/metal -/datum/effect/effect/system/foam_spread/New() +/datum/effect_system/foam_spread/New() ..() chemholder = PoolOrNew(/obj) var/datum/reagents/R = new/datum/reagents(1000) chemholder.reagents = R R.my_atom = chemholder -/datum/effect/effect/system/foam_spread/Destroy() +/datum/effect_system/foam_spread/Destroy() qdel(chemholder) chemholder = null return ..() -/datum/effect/effect/system/foam_spread/set_up(amt=5, loca, datum/reagents/carry = null) +/datum/effect_system/foam_spread/set_up(amt=5, loca, datum/reagents/carry = null) if(istype(loca, /turf/)) location = loca else @@ -149,16 +149,16 @@ amount = round(sqrt(amt / 2), 1) carry.copy_to(chemholder, 4*carry.total_volume) //The foam holds 4 times the total reagents volume for balance purposes. -/datum/effect/effect/system/foam_spread/metal/set_up(amt=5, loca, datum/reagents/carry = null, metaltype) +/datum/effect_system/foam_spread/metal/set_up(amt=5, loca, datum/reagents/carry = null, metaltype) ..() metal = metaltype -/datum/effect/effect/system/foam_spread/start() - var/obj/effect/effect/foam/foundfoam = locate() in location +/datum/effect_system/foam_spread/start() + var/obj/effect/particle_effect/foam/foundfoam = locate() in location if(foundfoam)//If there was already foam where we start, we add our foaminess to it. foundfoam.amount += amount else - var/obj/effect/effect/foam/F = PoolOrNew(foamtype, location) + var/obj/effect/particle_effect/foam/F = PoolOrNew(effect_type, location) var/foamcolor = mix_color_from_reagents(chemholder.reagents.reagent_list) chemholder.reagents.copy_to(F, chemholder.reagents.total_volume/amount) F.color = foamcolor diff --git a/code/game/objects/effects/effect_system/effects_other.dm b/code/game/objects/effects/effect_system/effects_other.dm index 02c2a389a4b..6cd6bf23320 100644 --- a/code/game/objects/effects/effect_system/effects_other.dm +++ b/code/game/objects/effects/effect_system/effects_other.dm @@ -1,83 +1,114 @@ ///////////////////////////////////////////// -//////// Attach an Ion trail to any object, that spawns when it moves (like for the jetpack) +//////// Attach a trail to any object, that spawns when it moves (like for the jetpack) /// just pass in the object to attach it to in set_up /// Then do start() to start it and stop() to stop it, obviously /// and don't call start() in a loop that will be repeated otherwise it'll get spammed! ///////////////////////////////////////////// -/obj/effect/effect/ion_trails - name = "ion trails" - icon_state = "ion_trails" - anchored = 1 - -/datum/effect/effect/system/ion_trail_follow +/datum/effect_system/trail_follow var/turf/oldposition var/processing = 1 var/on = 1 -/datum/effect/effect/system/ion_trail_follow/Destroy() +/datum/effect_system/trail_follow/set_up(atom/atom) + attach(atom) + oldposition = get_turf(atom) + +/datum/effect_system/trail_follow/Destroy() oldposition = null return ..() -/datum/effect/effect/system/ion_trail_follow/set_up(atom/atom) - attach(atom) +/datum/effect_system/trail_follow/proc/stop() + processing = 0 + on = 0 + oldposition = null +/datum/effect_system/trail_follow/steam + effect_type = /obj/effect/particle_effect/steam -/datum/effect/effect/system/ion_trail_follow/start() //Whoever is responsible for this abomination of code should become an hero - if(!src.on) - src.on = 1 - src.processing = 1 - if(src.processing) - src.processing = 0 - var/turf/T = get_turf(src.holder) - if(T != src.oldposition) +/datum/effect_system/trail_follow/steam/start() + if(!on) + on = 1 + processing = 1 + if(!oldposition) + oldposition = get_turf(holder) + if(processing) + processing = 0 + if(number < 3) + var/obj/effect/particle_effect/steam/I = PoolOrNew(/obj/effect/particle_effect/steam, oldposition) + number++ + I.dir = holder.dir + oldposition = get_turf(holder) + spawn(10) + qdel(I) + number-- + spawn(2) + if(on) + processing = 1 + start() + +/obj/effect/particle_effect/ion_trails + name = "ion trails" + icon_state = "ion_trails" + anchored = 1 + +/datum/effect_system/trail_follow/ion + effect_type = /obj/effect/particle_effect/ion_trails + +/datum/effect_system/trail_follow/ion/start() //Whoever is responsible for this abomination of code should become an hero + if(!on) + on = 1 + processing = 1 + if(!oldposition) + oldposition = get_turf(holder) + if(processing) + processing = 0 + var/turf/T = get_turf(holder) + if(T != oldposition) if(!has_gravity(T)) - var/obj/effect/effect/ion_trails/I = PoolOrNew(/obj/effect/effect/ion_trails, oldposition) - I.dir = src.holder.dir + var/obj/effect/particle_effect/ion_trails/I = PoolOrNew(effect_type, oldposition) + I.dir = holder.dir flick("ion_fade", I) I.icon_state = "" - spawn( 20 ) + spawn(20) qdel(I) - src.oldposition = T + oldposition = T spawn(2) - if(src.on) - src.processing = 1 - src.start() + if(on) + processing = 1 + start() -/datum/effect/effect/system/ion_trail_follow/proc/stop() - src.processing = 0 - src.on = 0 - oldposition = null //Reagent-based explosion effect -/datum/effect/effect/system/reagents_explosion + +/datum/effect_system/reagents_explosion var/amount // TNT equivalent var/flashing = 0 // does explosion creates flash effect? var/flashing_factor = 0 // factor of how powerful the flash effect relatively to the explosion var/explosion_message = 1 //whether we show a message to mobs. -/datum/effect/effect/system/reagents_explosion/set_up (amt, loc, flash = 0, flash_fact = 0, message = 1) +/datum/effect_system/reagents_explosion/set_up(amt, loca, flash = 0, flash_fact = 0, message = 1) amount = amt explosion_message = message - if(istype(loc, /turf/)) - location = loc + if(isturf(loca)) + location = loca else - location = get_turf(loc) + location = get_turf(loca) flashing = flash flashing_factor = flash_fact return -/datum/effect/effect/system/reagents_explosion/start() +/datum/effect_system/reagents_explosion/start() if(explosion_message) location.visible_message("The solution violently explodes!", \ "You hear an explosion!") if (amount <= 2) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(2, 1, location) s.start() diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm index bf54d62ea65..cb5f4de5cdd 100644 --- a/code/game/objects/effects/effect_system/effects_smoke.dm +++ b/code/game/objects/effects/effect_system/effects_smoke.dm @@ -2,7 +2,7 @@ //// SMOKE SYSTEMS ///////////////////////////////////////////// -/obj/effect/effect/smoke +/obj/effect/particle_effect/smoke name = "smoke" icon = 'icons/effects/96x96.dmi' icon_state = "smoke" @@ -17,7 +17,7 @@ var/opaque = 1 //whether the smoke can block the view when in enough amount -/obj/effect/effect/smoke/proc/fade_out(frames = 16) +/obj/effect/particle_effect/smoke/proc/fade_out(frames = 16) if(alpha == 0) //Handle already transparent case return if(frames == 0) @@ -27,24 +27,24 @@ alpha -= step sleep(world.tick_lag) -/obj/effect/effect/smoke/New() +/obj/effect/particle_effect/smoke/New() ..() create_reagents(500) SSobj.processing |= src -/obj/effect/effect/smoke/Destroy() +/obj/effect/particle_effect/smoke/Destroy() SSobj.processing.Remove(src) return ..() -/obj/effect/effect/smoke/proc/kill_smoke() +/obj/effect/particle_effect/smoke/proc/kill_smoke() SSobj.processing.Remove(src) spawn(0) fade_out() spawn(10) qdel(src) -/obj/effect/effect/smoke/process() +/obj/effect/particle_effect/smoke/process() lifetime-- if(lifetime < 1) kill_smoke() @@ -53,7 +53,7 @@ smoke_mob(L) return 1 -/obj/effect/effect/smoke/proc/smoke_mob(mob/living/carbon/C) +/obj/effect/particle_effect/smoke/proc/smoke_mob(mob/living/carbon/C) if(!istype(C)) return 0 if(lifetime<1) @@ -68,16 +68,16 @@ C.smoke_delay = 0 return 1 -/obj/effect/effect/smoke/proc/spread_smoke() +/obj/effect/particle_effect/smoke/proc/spread_smoke() var/turf/t_loc = get_turf(src) var/list/newsmokes = list() for(var/turf/T in t_loc.GetAtmosAdjacentTurfs()) - var/obj/effect/effect/smoke/foundsmoke = locate() in T //Don't spread smoke where there's already smoke! + var/obj/effect/particle_effect/smoke/foundsmoke = locate() in T //Don't spread smoke where there's already smoke! if(foundsmoke) continue for(var/mob/living/L in T) smoke_mob(L) - var/obj/effect/effect/smoke/S = new type(T) + var/obj/effect/particle_effect/smoke/S = new type(T) reagents.copy_to(S, reagents.total_volume) S.dir = pick(cardinal) S.amount = amount-1 @@ -90,25 +90,25 @@ if(newsmokes.len) spawn(1) //the smoke spreads rapidly but not instantly - for(var/obj/effect/effect/smoke/SM in newsmokes) + for(var/obj/effect/particle_effect/smoke/SM in newsmokes) SM.spread_smoke() -/datum/effect/effect/system/smoke_spread +/datum/effect_system/smoke_spread var/amount = 10 - var/smoke_type = /obj/effect/effect/smoke + effect_type = /obj/effect/particle_effect/smoke -/datum/effect/effect/system/smoke_spread/set_up(radius = 5, loca) +/datum/effect_system/smoke_spread/set_up(radius = 5, loca) if(isturf(loca)) location = loca else location = get_turf(loca) amount = radius -/datum/effect/effect/system/smoke_spread/start() +/datum/effect_system/smoke_spread/start() if(holder) location = get_turf(holder) - var/obj/effect/effect/smoke/S = new smoke_type(location) + var/obj/effect/particle_effect/smoke/S = new effect_type(location) S.amount = amount if(S.amount) S.spread_smoke() @@ -118,17 +118,17 @@ // Bad smoke ///////////////////////////////////////////// -/obj/effect/effect/smoke/bad +/obj/effect/particle_effect/smoke/bad lifetime = 8 -/obj/effect/effect/smoke/bad/smoke_mob(mob/living/carbon/M) +/obj/effect/particle_effect/smoke/bad/smoke_mob(mob/living/carbon/M) if(..()) M.drop_item() M.adjustOxyLoss(1) M.emote("cough") return 1 -/obj/effect/effect/smoke/bad/CanPass(atom/movable/mover, turf/target, height=0) +/obj/effect/particle_effect/smoke/bad/CanPass(atom/movable/mover, turf/target, height=0) if(height==0) return 1 if(istype(mover, /obj/item/projectile/beam)) var/obj/item/projectile/beam/B = mover @@ -137,23 +137,23 @@ -/datum/effect/effect/system/smoke_spread/bad - smoke_type = /obj/effect/effect/smoke/bad +/datum/effect_system/smoke_spread/bad + effect_type = /obj/effect/particle_effect/smoke/bad ///////////////////////////////////////////// // Nanofrost smoke ///////////////////////////////////////////// -/obj/effect/effect/smoke/freezing +/obj/effect/particle_effect/smoke/freezing name = "nanofrost smoke" color = "#B2FFFF" opaque = 0 -/datum/effect/effect/system/smoke_spread/freezing - smoke_type = /obj/effect/effect/smoke/freezing +/datum/effect_system/smoke_spread/freezing + effect_type = /obj/effect/particle_effect/smoke/freezing var/blast = 0 -/datum/effect/effect/system/smoke_spread/freezing/proc/Chilled(atom/A) +/datum/effect_system/smoke_spread/freezing/proc/Chilled(atom/A) if(istype(A, /turf/simulated)) var/turf/simulated/T = A if(T.air) @@ -177,11 +177,11 @@ Item.extinguish() return -/datum/effect/effect/system/smoke_spread/freezing/set_up(radius = 5, loca, blasting = 0) +/datum/effect_system/smoke_spread/freezing/set_up(radius = 5, loca, blasting = 0) ..() blast = blasting -/datum/effect/effect/system/smoke_spread/freezing/start() +/datum/effect_system/smoke_spread/freezing/start() if(blast) for(var/turf/T in trange(2, location)) Chilled(T) @@ -193,29 +193,29 @@ // Sleep smoke ///////////////////////////////////////////// -/obj/effect/effect/smoke/sleeping +/obj/effect/particle_effect/smoke/sleeping color = "#9C3636" lifetime = 10 -/obj/effect/effect/smoke/sleeping/smoke_mob(mob/living/carbon/M) +/obj/effect/particle_effect/smoke/sleeping/smoke_mob(mob/living/carbon/M) if(..()) M.drop_item() M.sleeping = max(M.sleeping,10) M.emote("cough") return 1 -/datum/effect/effect/system/smoke_spread/sleeping - smoke_type = /obj/effect/effect/smoke/sleeping +/datum/effect_system/smoke_spread/sleeping + effect_type = /obj/effect/particle_effect/smoke/sleeping ///////////////////////////////////////////// // Chem smoke ///////////////////////////////////////////// -/obj/effect/effect/smoke/chem +/obj/effect/particle_effect/smoke/chem lifetime = 10 -/obj/effect/effect/smoke/chem/process() +/obj/effect/particle_effect/smoke/chem/process() if(..()) var/turf/T = get_turf(src) var/fraction = 1/initial(lifetime) @@ -227,7 +227,7 @@ reagents.reaction(T, TOUCH, fraction) return 1 -/obj/effect/effect/smoke/chem/smoke_mob(mob/living/carbon/M) +/obj/effect/particle_effect/smoke/chem/smoke_mob(mob/living/carbon/M) if(lifetime<1) return 0 if(!istype(M)) @@ -242,23 +242,23 @@ -/datum/effect/effect/system/smoke_spread/chem +/datum/effect_system/smoke_spread/chem var/obj/chemholder - smoke_type = /obj/effect/effect/smoke/chem + effect_type = /obj/effect/particle_effect/smoke/chem -/datum/effect/effect/system/smoke_spread/chem/New() +/datum/effect_system/smoke_spread/chem/New() ..() chemholder = PoolOrNew(/obj) var/datum/reagents/R = new/datum/reagents(500) chemholder.reagents = R R.my_atom = chemholder -/datum/effect/effect/system/smoke_spread/chem/Destroy() +/datum/effect_system/smoke_spread/chem/Destroy() qdel(chemholder) chemholder = null return ..() -/datum/effect/effect/system/smoke_spread/chem/set_up(datum/reagents/carry = null, radius = 1, loca, silent = 0) +/datum/effect_system/smoke_spread/chem/set_up(datum/reagents/carry = null, radius = 1, loca, silent = 0) if(istype(loca, /turf/)) location = loca else @@ -289,11 +289,11 @@ log_game("A chemical smoke reaction has taken place in ([where])[contained]. No associated key.") -/datum/effect/effect/system/smoke_spread/chem/start() +/datum/effect_system/smoke_spread/chem/start() var/color = mix_color_from_reagents(chemholder.reagents.reagent_list) if(holder) location = get_turf(holder) - var/obj/effect/effect/smoke/chem/S = new smoke_type(location) + var/obj/effect/particle_effect/smoke/chem/S = new effect_type(location) if(chemholder.reagents.total_volume > 1) // can't split 1 very well chemholder.reagents.copy_to(S, chemholder.reagents.total_volume) diff --git a/code/game/objects/effects/effect_system/effects_sparks.dm b/code/game/objects/effects/effect_system/effects_sparks.dm index e67971ed6a9..cac9fe3d4b3 100644 --- a/code/game/objects/effects/effect_system/effects_sparks.dm +++ b/code/game/objects/effects/effect_system/effects_sparks.dm @@ -5,110 +5,42 @@ // will always spawn at the items location. ///////////////////////////////////////////// -/obj/effect/effect/sparks +/obj/effect/particle_effect/sparks name = "sparks" icon_state = "sparks" - var/amount = 6 anchored = 1 - mouse_opacity = 0 -/obj/effect/effect/sparks/New() +/obj/effect/particle_effect/sparks/New() ..() flick("sparks", src) // replay the animation playsound(src.loc, "sparks", 100, 1) var/turf/T = src.loc if (istype(T, /turf)) T.hotspot_expose(1000,100) - spawn (100) + spawn(20) qdel(src) -/obj/effect/effect/sparks/Destroy() +/obj/effect/particle_effect/sparks/Destroy() var/turf/T = src.loc if (istype(T, /turf)) T.hotspot_expose(1000,100) return ..() -/obj/effect/effect/sparks/Move() +/obj/effect/particle_effect/sparks/Move() ..() var/turf/T = src.loc - if (istype(T, /turf)) + if(isturf(T)) T.hotspot_expose(1000,100) - return -/datum/effect/effect/system/spark_spread - var/total_sparks = 0 // To stop it being spammed and lagging! - -/datum/effect/effect/system/spark_spread/set_up(n = 3, c = 0, loca) - if(n > 10) - n = 10 - number = n - cardinals = c - if(istype(loca, /turf/)) - location = loca - else - location = get_turf(loca) - -/datum/effect/effect/system/spark_spread/start() - var/i = 0 - for(i=0, i 20) - return - spawn(0) - if(holder) - src.location = get_turf(holder) - var/obj/effect/effect/sparks/sparks = PoolOrNew(/obj/effect/effect/sparks, location) - src.total_sparks++ - var/direction - if(src.cardinals) - direction = pick(cardinal) - else - direction = pick(alldirs) - for(i=0, i 10) - n = 10 - number = n - cardinals = c - if(istype(loca, /turf/)) - location = loca - else - location = get_turf(loca) - -/datum/effect/effect/system/lightning_spread/start() - var/i = 0 - for(i=0, i 20) - return - spawn(0) - if(holder) - src.location = get_turf(holder) - var/obj/effect/effect/sparks/electricity/sparks = PoolOrNew(/obj/effect/effect/sparks/electricity, location) - src.total_sparks++ - var/direction - if(src.cardinals) - direction = pick(cardinal) - else - direction = pick(alldirs) - for(i=0, i 10) - n = 10 - number = n - cardinals = c - location = loc - -/datum/effect/effect/system/steam_spread/start() - var/i = 0 - for(i=0, i[victim] sets off \icon[src] [src]!") - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(3, 1, src) s.start() mineEffect(victim) diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm index 878c378a237..8d6f3974b76 100644 --- a/code/game/objects/effects/portals.dm +++ b/code/game/objects/effects/portals.dm @@ -1,3 +1,6 @@ + +/obj/effect + /obj/effect/portal name = "portal" desc = "Looks unstable. Best to test it with the clown." diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm index 3c44d6e1454..ea28eef5d5c 100644 --- a/code/game/objects/effects/step_triggers.dm +++ b/code/game/objects/effects/step_triggers.dm @@ -144,20 +144,20 @@ M.Move(dest) if(entersparks) - var/datum/effect/effect/system/spark_spread/s = new + var/datum/effect_system/spark_spread/s = new s.set_up(4, 1, src) s.start() if(exitsparks) - var/datum/effect/effect/system/spark_spread/s = new + var/datum/effect_system/spark_spread/s = new s.set_up(4, 1, dest) s.start() if(entersmoke) - var/datum/effect/effect/system/smoke_spread/s = new + var/datum/effect_system/smoke_spread/s = new s.set_up(4, 1, src, 0) s.start() if(exitsmoke) - var/datum/effect/effect/system/smoke_spread/s = new + var/datum/effect_system/smoke_spread/s = new s.set_up(4, 1, dest, 0) s.start() diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index 6d3c4e6dce0..1f72ec2e519 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -74,7 +74,7 @@ SSmachine.postpone(postponeCycles) if(heavy_impact_range > 1) - var/datum/effect/system/explosion/E = new/datum/effect/system/explosion() + var/datum/effect_system/explosion/E = new/datum/effect_system/explosion() E.set_up(epicenter) E.start() diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index 91a9da0d1b8..5e6a85914ed 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -67,7 +67,7 @@ /obj/item/device/chameleon/proc/disrupt(delete_dummy = 1) if(active_dummy) - var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread spark_system.set_up(5, 0, src) spark_system.attach(src) spark_system.start() diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index 068c9c4b905..ce8e17ac87e 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -111,7 +111,7 @@ step(M, pick(cardinal)) M << "You feel a sharp shock!" - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(3, 1, M) s.start() diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 334ca37c804..e93e42896ba 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -516,7 +516,7 @@ w_class = 1 /obj/item/toy/snappop/proc/pop_burst() - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(3, 1, src) s.start() new /obj/effect/decal/cleanable/ash(loc) @@ -539,7 +539,7 @@ if(M.m_intent == "run") M << "You step on the snap pop!" - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(2, 0, src) s.start() new /obj/effect/decal/cleanable/ash(src.loc) diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index ef2806a9693..45d48b4fb1c 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -21,7 +21,7 @@ RCD materials = list(MAT_METAL=100000) origin_tech = "engineering=4;materials=2" req_access_txt = "11" - var/datum/effect/effect/system/spark_spread/spark_system + var/datum/effect_system/spark_spread/spark_system var/matter = 0 var/max_matter = 160 var/working = 0 @@ -229,8 +229,9 @@ RCD /obj/item/weapon/rcd/New() + ..() desc = "An RCD. It currently holds [matter]/[max_matter] matter-units." - src.spark_system = new /datum/effect/effect/system/spark_spread + src.spark_system = new /datum/effect_system/spark_spread spark_system.set_up(5, 0, src) spark_system.attach(src) rcd_list += src diff --git a/code/game/objects/items/weapons/RPD.dm b/code/game/objects/items/weapons/RPD.dm index 41162bbe617..320adf21ed8 100644 --- a/code/game/objects/items/weapons/RPD.dm +++ b/code/game/objects/items/weapons/RPD.dm @@ -136,7 +136,7 @@ var/global/list/RPD_recipes=list( w_class = 3 materials = list(MAT_METAL=75000, MAT_GLASS=37500) origin_tech = "engineering=4;materials=2" - var/datum/effect/effect/system/spark_spread/spark_system + var/datum/effect_system/spark_spread/spark_system var/working = 0 var/p_type = 0 var/p_conntype = 0 @@ -158,7 +158,7 @@ var/global/list/RPD_recipes=list( /obj/item/weapon/pipe_dispenser/New() . = ..() - spark_system = new /datum/effect/effect/system/spark_spread + spark_system = new /datum/effect_system/spark_spread spark_system.set_up(5, 0, src) spark_system.attach(src) diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index e95ad094637..c18f344a717 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -174,7 +174,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM damtype = "fire" force = 4 if(reagents.get_reagent_amount("plasma")) // the plasma explodes when exposed to fire - var/datum/effect/effect/system/reagents_explosion/e = new() + var/datum/effect_system/reagents_explosion/e = new() e.set_up(round(reagents.get_reagent_amount("plasma") / 2.5, 1), get_turf(src), 0, 0) e.start() if(ismob(loc)) @@ -183,7 +183,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM qdel(src) return if(reagents.get_reagent_amount("welding_fuel")) // the fuel explodes, too, but much less violently - var/datum/effect/effect/system/reagents_explosion/e = new() + var/datum/effect_system/reagents_explosion/e = new() e.set_up(round(reagents.get_reagent_amount("welding_fuel") / 5, 1), get_turf(src), 0, 0) e.start() if(ismob(loc)) diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm index 02aa4feb3e6..aaa24788476 100644 --- a/code/game/objects/items/weapons/clown_items.dm +++ b/code/game/objects/items/weapons/clown_items.dm @@ -43,7 +43,7 @@ /obj/item/weapon/soap/suicide_act(mob/user) user.say(";FFFFFFFFFFFFFFFFUUUUUUUDGE!!") user.visible_message("[user] lifts the [src.name] to their mouth and gnaws on it furiously, producing a thick froth! They'll never get that BB gun now!") - PoolOrNew(/obj/effect/effect/foam, loc) + PoolOrNew(/obj/effect/particle_effect/foam, loc) return (TOXLOSS) /obj/item/weapon/soap/Crossed(AM as mob|obj) diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm index ffdb5b0031e..9d09a3b0cf8 100644 --- a/code/game/objects/items/weapons/extinguisher.dm +++ b/code/game/objects/items/weapons/extinguisher.dm @@ -131,7 +131,7 @@ for(var/a=0, a<5, a++) spawn(0) - var/obj/effect/effect/water/W = PoolOrNew( /obj/effect/effect/water, get_turf(src) ) + var/obj/effect/particle_effect/water/W = PoolOrNew( /obj/effect/particle_effect/water, get_turf(src) ) var/turf/my_target = pick(the_targets) if(precision) the_targets -= my_target diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 3a1c8fa1094..0f81973778e 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -183,7 +183,7 @@ mix_reagents() if(reagents.total_volume) //The possible reactions didnt use up all reagents, so we spread it around. - var/datum/effect/effect/system/steam_spread/steam = new /datum/effect/effect/system/steam_spread() + var/datum/effect_system/steam_spread/steam = new /datum/effect_system/steam_spread() steam.set_up(10, 0, get_turf(src)) steam.attach(src) steam.start() diff --git a/code/game/objects/items/weapons/grenades/smokebomb.dm b/code/game/objects/items/weapons/grenades/smokebomb.dm index 442cb76fe2f..ed4d00fbc6b 100644 --- a/code/game/objects/items/weapons/grenades/smokebomb.dm +++ b/code/game/objects/items/weapons/grenades/smokebomb.dm @@ -5,11 +5,11 @@ det_time = 20 item_state = "flashbang" slot_flags = SLOT_BELT - var/datum/effect/effect/system/smoke_spread/bad/smoke + var/datum/effect_system/smoke_spread/bad/smoke /obj/item/weapon/grenade/smokebomb/New() ..() - src.smoke = new /datum/effect/effect/system/smoke_spread/bad + src.smoke = new /datum/effect_system/smoke_spread/bad src.smoke.attach(src) /obj/item/weapon/grenade/smokebomb/Destroy() diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index be562abd8ef..c6047b5c6af 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -246,7 +246,7 @@ ..() spawn(100) if(!istype(loc, /mob)) - var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread sparks.set_up(1, 1, src) sparks.start() qdel(src) diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm index e22e919cd55..340e8f35485 100644 --- a/code/game/objects/items/weapons/melee/energy.dm +++ b/code/game/objects/items/weapons/melee/energy.dm @@ -205,11 +205,11 @@ throw_range = 1 w_class = 4//So you can't hide it in your pocket or some such. flags = NOSHIELD - var/datum/effect/effect/system/spark_spread/spark_system + var/datum/effect_system/spark_spread/spark_system //Most of the other special functions are handled in their own files. aka special snowflake code so kewl /obj/item/weapon/melee/energy/blade/New() - spark_system = new /datum/effect/effect/system/spark_spread() + spark_system = new /datum/effect_system/spark_spread() spark_system.set_up(5, 0, src) spark_system.attach(src) diff --git a/code/game/objects/items/weapons/scrolls.dm b/code/game/objects/items/weapons/scrolls.dm index 04f3d8e95ba..07cd251c829 100644 --- a/code/game/objects/items/weapons/scrolls.dm +++ b/code/game/objects/items/weapons/scrolls.dm @@ -58,7 +58,7 @@ if(!((user == loc || (in_range(src, user) && istype(src.loc, /turf))))) return - var/datum/effect/effect/system/smoke_spread/smoke = new + var/datum/effect_system/smoke_spread/smoke = new smoke.set_up(2, user.loc) smoke.attach(user) smoke.start() diff --git a/code/game/objects/items/weapons/singularityhammer.dm b/code/game/objects/items/weapons/singularityhammer.dm index ad021525f0a..47d08602b72 100644 --- a/code/game/objects/items/weapons/singularityhammer.dm +++ b/code/game/objects/items/weapons/singularityhammer.dm @@ -86,7 +86,7 @@ origin_tech = "combat=5;powerstorage=5" /obj/item/weapon/twohanded/mjollnir/proc/shock(mob/living/target) - var/datum/effect/effect/system/lightning_spread/s = new /datum/effect/effect/system/lightning_spread + var/datum/effect_system/lightning_spread/s = new /datum/effect_system/lightning_spread s.set_up(5, 1, target.loc) s.start() target.take_organ_damage(0,30) diff --git a/code/game/objects/items/weapons/tanks/jetpack.dm b/code/game/objects/items/weapons/tanks/jetpack.dm index 87f7a91e262..e69653ef0d1 100644 --- a/code/game/objects/items/weapons/tanks/jetpack.dm +++ b/code/game/objects/items/weapons/tanks/jetpack.dm @@ -6,14 +6,14 @@ item_state = "jetpack" distribute_pressure = ONE_ATMOSPHERE * O2STANDARD action_button_name = "Toggle Jetpack" - var/datum/effect/effect/system/ion_trail_follow/ion_trail + var/datum/effect_system/trail_follow/ion/ion_trail var/on = 0 var/stabilization_on = 0 var/volume_rate = 500 //Needed for borg jetpack transfer /obj/item/weapon/tank/jetpack/New() ..() - ion_trail = new /datum/effect/effect/system/ion_trail_follow() + ion_trail = new /datum/effect_system/trail_follow/ion() ion_trail.set_up(src) @@ -104,7 +104,7 @@ /obj/item/weapon/tank/jetpack/carbondioxide/New() ..() - ion_trail = new /datum/effect/effect/system/ion_trail_follow() + ion_trail = new /datum/effect_system/trail_follow/ion() ion_trail.set_up(src) air_contents.carbon_dioxide = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm index d7adcd96db4..f9cee70d66e 100644 --- a/code/game/objects/items/weapons/tanks/watertank.dm +++ b/code/game/objects/items/weapons/tanks/watertank.dm @@ -293,7 +293,7 @@ if(!Adj|| !istype(target, /turf)) return if(metal_synthesis_cooldown < 5) - var/obj/effect/effect/foam/metal/F = PoolOrNew(/obj/effect/effect/foam/metal, get_turf(target)) + var/obj/effect/particle_effect/foam/metal/F = PoolOrNew(/obj/effect/particle_effect/foam/metal, get_turf(target)) F.amount = 0 metal_synthesis_cooldown++ spawn(100) @@ -311,7 +311,7 @@ pass_flags = PASSTABLE /obj/effect/nanofrost_container/proc/Smoke() - var/datum/effect/effect/system/smoke_spread/freezing/S = new + var/datum/effect_system/smoke_spread/freezing/S = new S.set_up(2, src.loc, blasting=1) S.start() var/obj/effect/decal/cleanable/flour/F = new /obj/effect/decal/cleanable/flour(src.loc) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 4f750117216..44edb4a6f24 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -215,7 +215,7 @@ if(isliving(user)) var/mob/living/L = user if(L.electrocute_act(17, src)) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(5, 1, src) s.start() return diff --git a/code/game/objects/structures/electricchair.dm b/code/game/objects/structures/electricchair.dm index ea02c495be9..b1802b6f7a6 100644 --- a/code/game/objects/structures/electricchair.dm +++ b/code/game/objects/structures/electricchair.dm @@ -44,7 +44,7 @@ A.updateicon() flick("echair1", src) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(12, 1, src) s.start() if(buckled_mob) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index d6c56c34a34..8a02e0ad474 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -237,7 +237,7 @@ var/obj/structure/cable/C = T.get_cable_node() if(C) if(electrocute_mob(user, C, src)) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(3, 1, src) s.start() return 1 diff --git a/code/game/objects/structures/hivebot.dm b/code/game/objects/structures/hivebot.dm index 35f50d2aabf..02969f8a79a 100644 --- a/code/game/objects/structures/hivebot.dm +++ b/code/game/objects/structures/hivebot.dm @@ -10,7 +10,7 @@ /obj/structure/hivebot_beacon/New() ..() - var/datum/effect/effect/system/smoke_spread/smoke = new + var/datum/effect_system/smoke_spread/smoke = new smoke.set_up(2, loc) smoke.start() visible_message("The [src] warps in!") diff --git a/code/modules/assembly/igniter.dm b/code/modules/assembly/igniter.dm index ea1c6621eef..0b6c43f50a8 100644 --- a/code/modules/assembly/igniter.dm +++ b/code/modules/assembly/igniter.dm @@ -4,7 +4,7 @@ icon_state = "igniter" materials = list(MAT_METAL=500, MAT_GLASS=50) origin_tech = "magnets=1" - var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread heat = 1000 /obj/item/device/assembly/igniter/New() diff --git a/code/modules/awaymissions/mission_code/wildwest.dm b/code/modules/awaymissions/mission_code/wildwest.dm index a99c853513b..4d3d62244e1 100644 --- a/code/modules/awaymissions/mission_code/wildwest.dm +++ b/code/modules/awaymissions/mission_code/wildwest.dm @@ -142,7 +142,7 @@ O << "[M] triggered the \icon[src] [src]" triggered = 1 - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread for(var/mob/O in viewers(world.view, src.loc)) s.set_up(3, 1, src) s.start() diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index 86594113f29..42ab9dac848 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -29,7 +29,7 @@ extinguishes_left-- H.visible_message("[H]'s suit automatically extinguishes them!","Your suit automatically extinguishes you.") H.ExtinguishMob() - PoolOrNew(/obj/effect/effect/water, get_turf(H)) + PoolOrNew(/obj/effect/particle_effect/water, get_turf(H)) //I just want the light feature of the hardsuit helmet diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index f47ea71f2d6..79b38a2d5e8 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -34,7 +34,7 @@ R.my_atom = vent R.add_reagent(pick(gunk), 50) - var/datum/effect/effect/system/smoke_spread/chem/smoke = new + var/datum/effect_system/smoke_spread/chem/smoke = new smoke.set_up(R, 1, vent, silent = 1) playsound(vent.loc, 'sound/effects/smoke.ogg', 50, 1, -3) smoke.start() diff --git a/code/modules/events/wizard/curseditems.dm b/code/modules/events/wizard/curseditems.dm index 410a46c0f41..e077ef55271 100644 --- a/code/modules/events/wizard/curseditems.dm +++ b/code/modules/events/wizard/curseditems.dm @@ -51,6 +51,6 @@ I.name = "cursed " + I.name for(var/mob/living/carbon/human/H in living_mob_list) - var/datum/effect/effect/system/smoke_spread/smoke = new + var/datum/effect_system/smoke_spread/smoke = new smoke.set_up(0, H.loc) smoke.start() diff --git a/code/modules/events/wizard/imposter.dm b/code/modules/events/wizard/imposter.dm index 9a155830455..7987b2e5bfd 100644 --- a/code/modules/events/wizard/imposter.dm +++ b/code/modules/events/wizard/imposter.dm @@ -14,7 +14,7 @@ if(!candidates) return //Sad Trombone var/client/C = pick(candidates) - PoolOrNew(/obj/effect/effect/smoke, W.loc) + PoolOrNew(/obj/effect/particle_effect/smoke, W.loc) var/mob/living/carbon/human/I = new /mob/living/carbon/human(W.loc) W.dna.transfer_identity(I, transfer_SE=1) diff --git a/code/modules/events/wizard/shuffle.dm b/code/modules/events/wizard/shuffle.dm index a30f1be1491..5597be83c7f 100644 --- a/code/modules/events/wizard/shuffle.dm +++ b/code/modules/events/wizard/shuffle.dm @@ -28,7 +28,7 @@ moblocs.len -= 1 for(var/mob/living/carbon/human/H in living_mob_list) - var/datum/effect/effect/system/smoke_spread/smoke = new + var/datum/effect_system/smoke_spread/smoke = new smoke.set_up(0, H.loc) smoke.start() @@ -60,7 +60,7 @@ mobnames.len -= 1 for(var/mob/living/carbon/human/H in living_mob_list) - var/datum/effect/effect/system/smoke_spread/smoke = new + var/datum/effect_system/smoke_spread/smoke = new smoke.set_up(0, H.loc) smoke.start() @@ -92,6 +92,6 @@ mobs -= mobs[mobs.len] for(var/mob/living/carbon/human/H in living_mob_list) - var/datum/effect/effect/system/smoke_spread/smoke = new + var/datum/effect_system/smoke_spread/smoke = new smoke.set_up(0, H.loc) smoke.start() diff --git a/code/modules/food&drinks/kitchen machinery/microwave.dm b/code/modules/food&drinks/kitchen machinery/microwave.dm index 400bbd075a9..94326f51489 100644 --- a/code/modules/food&drinks/kitchen machinery/microwave.dm +++ b/code/modules/food&drinks/kitchen machinery/microwave.dm @@ -308,7 +308,7 @@ qdel(S) /obj/machinery/microwave/proc/broke() - var/datum/effect/effect/system/spark_spread/s = new + var/datum/effect_system/spark_spread/s = new s.set_up(2, 1, src) s.start() icon_state = "mwb" // Make it look all busted up and shit diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index 4c2f1a18855..b3794a4644e 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -224,7 +224,7 @@ return /obj/machinery/mineral/ore_redemption/ex_act(severity, target) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(5, 1, src) s.start() if(severity == 1) @@ -391,7 +391,7 @@ qdel(voucher) /obj/machinery/mineral/equipment_vendor/ex_act(severity, target) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(5, 1, src) s.start() if(prob(50 / severity) && severity < 3) diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index 5e15bcd71a7..f7009a2573c 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -178,7 +178,7 @@ used = TRUE sleep(50) playsound(get_turf(src), 'sound/effects/phasein.ogg', 100, 1) - PoolOrNew(/obj/effect/effect/smoke, src.loc) + PoolOrNew(/obj/effect/particle_effect/smoke, src.loc) load() qdel(src) diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index f4d46e02fc3..fad49701ae8 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -82,7 +82,7 @@ visible_message("The [M.name] has shocked [src]!", \ "The [M.name] has shocked [src]!") - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(5, 1, src) s.start() var/power = M.powerlevel + rand(0,3) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 4e708d7f2b2..76b58d05dff 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -37,7 +37,7 @@ var/list/ai_list = list() var/obj/item/device/multitool/aiMulti = null var/obj/machinery/bot/Bot var/tracking = 0 //this is 1 if the AI is currently tracking somebody, but the track has not yet been completed. - var/datum/effect/effect/system/spark_spread/spark_system//So they can initialize sparks whenever/N + var/datum/effect_system/spark_spread/spark_system//So they can initialize sparks whenever/N //MALFUNCTION var/datum/module_picker/malf_picker @@ -85,7 +85,7 @@ var/list/ai_list = list() holo_icon = getHologramIcon(icon('icons/mob/AI.dmi',"holo1")) - spark_system = new /datum/effect/effect/system/spark_spread() + spark_system = new /datum/effect_system/spark_spread() spark_system.set_up(5, 0, src) spark_system.attach(src) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index c5cdaedc234..9a5270b4be8 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -48,8 +48,8 @@ var/modtype = "robot" var/lower_mod = 0 var/jetpack = 0 - var/datum/effect/effect/system/ion_trail_follow/ion_trail = null - var/datum/effect/effect/system/spark_spread/spark_system//So they can initialize sparks whenever/N + var/datum/effect_system/trail_follow/ion/ion_trail = null + var/datum/effect_system/spark_spread/spark_system//So they can initialize sparks whenever/N var/jeton = 0 var/lawupdate = 1 //Cyborgs will sync their laws with their AI by default @@ -70,7 +70,7 @@ var/updating = 0 //portable camera camerachunk update /mob/living/silicon/robot/New(loc) - spark_system = new /datum/effect/effect/system/spark_spread() + spark_system = new /datum/effect_system/spark_spread() spark_system.set_up(5, 0, src) spark_system.attach(src) diff --git a/code/modules/mob/living/simple_animal/hostile/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebot.dm index ca434c387aa..d71bf264a14 100644 --- a/code/modules/mob/living/simple_animal/hostile/hivebot.dm +++ b/code/modules/mob/living/simple_animal/hostile/hivebot.dm @@ -47,7 +47,7 @@ ..(1) visible_message("[src] blows apart!") new /obj/effect/decal/cleanable/robot_debris(src.loc) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(3, 1, src) s.start() ghostize() diff --git a/code/modules/mob/living/simple_animal/revenant/revenant_abilities.dm b/code/modules/mob/living/simple_animal/revenant/revenant_abilities.dm index 0ed3e23e591..3713815c8bc 100644 --- a/code/modules/mob/living/simple_animal/revenant/revenant_abilities.dm +++ b/code/modules/mob/living/simple_animal/revenant/revenant_abilities.dm @@ -58,7 +58,7 @@ return L.visible_message("\The [L] suddenly flares brightly and begins to spark!") sleep(10) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(4, 1, L) s.start() sleep(10) @@ -67,7 +67,7 @@ return M.Beam(L,icon_state="lightning",icon='icons/effects/effects.dmi',time=5) M.electrocute_act(25, "[L.name]") - var/datum/effect/effect/system/spark_spread/z = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/z = new /datum/effect_system/spark_spread z.set_up(4, 1, M) z.start() playsound(M, 'sound/machines/defib_zap.ogg', 50, 1, -1) @@ -166,7 +166,7 @@ S << "ERROR $!(@ ERROR )#^! SENSORY OVERLOAD \[$(!@#" S << 'sound/misc/interference.ogg' playsound(S, 'sound/machines/warning-buzzer.ogg', 50, 1) - var/datum/effect/effect/system/spark_spread/sp = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/sp = new /datum/effect_system/spark_spread sp.set_up(5, 1, S) sp.start() S.Weaken(6) diff --git a/code/modules/ninja/energy_katana.dm b/code/modules/ninja/energy_katana.dm index 1e03ac46a1a..0c1fc6093f0 100644 --- a/code/modules/ninja/energy_katana.dm +++ b/code/modules/ninja/energy_katana.dm @@ -7,7 +7,7 @@ force = 40 throwforce = 20 armour_penetration = 15 - var/datum/effect/effect/system/spark_spread/spark_system + var/datum/effect_system/spark_spread/spark_system /obj/item/weapon/katana/energy/afterattack(atom/target, mob/user, proximity_flag, click_parameters) if(!user || !target) @@ -65,7 +65,7 @@ /obj/item/weapon/katana/energy/New() ..() - spark_system = new /datum/effect/effect/system/spark_spread() + spark_system = new /datum/effect_system/spark_spread() spark_system.set_up(5, 0, src) spark_system.attach(src) diff --git a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm index 9af14584432..8d82ae40c5d 100644 --- a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm +++ b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm @@ -73,7 +73,7 @@ It is possible to destroy the net by the occupant or someone else. M << "You appear in a strange place!" spawn(0) - var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() + var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread() spark_system.set_up(5, 0, M.loc) spark_system.start() playsound(M.loc, 'sound/effects/phasein.ogg', 25, 1) diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_smoke.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_smoke.dm index 67fd087608e..5b8c58f1d2f 100644 --- a/code/modules/ninja/suit/n_suit_verbs/ninja_smoke.dm +++ b/code/modules/ninja/suit/n_suit_verbs/ninja_smoke.dm @@ -9,7 +9,7 @@ if(!ninjacost(0,N_SMOKE_BOMB)) var/mob/living/carbon/human/H = affecting - var/datum/effect/effect/system/smoke_spread/bad/smoke = new + var/datum/effect_system/smoke_spread/bad/smoke = new smoke.set_up(4, H.loc) smoke.start() playsound(H.loc, 'sound/effects/bamf.ogg', 50, 2) diff --git a/code/modules/ninja/suit/ninjaDrainAct.dm b/code/modules/ninja/suit/ninjaDrainAct.dm index 11d97b7a7c4..3a48faefcbe 100644 --- a/code/modules/ninja/suit/ninjaDrainAct.dm +++ b/code/modules/ninja/suit/ninjaDrainAct.dm @@ -28,7 +28,7 @@ They *could* go in their appropriate files, but this is supposed to be modular . = 0 if(cell && cell.charge) - var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() + var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread() spark_system.set_up(5, 0, loc) while(G.candrain && cell.charge> 0 && !maxcapacity) @@ -71,7 +71,7 @@ They *could* go in their appropriate files, but this is supposed to be modular . = 0 if(charge) - var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() + var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread() spark_system.set_up(5, 0, loc) while(G.candrain && charge > 0 && !maxcapacity) @@ -278,7 +278,7 @@ They *could* go in their appropriate files, but this is supposed to be modular if(S.cell && S.cell.charge && S.cell.use(1000)) . = DRAIN_MOB_SHOCK //Got that electric touch - var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() + var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread() spark_system.set_up(5, 0, loc) playsound(src, "sparks", 50, 1) visible_message("[H] electrocutes [src] with their touch!", "[H] electrocutes you with their touch!") diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm index a09592528a2..c74a0b30edc 100644 --- a/code/modules/ninja/suit/suit.dm +++ b/code/modules/ninja/suit/suit.dm @@ -25,7 +25,7 @@ Contents: //Important parts of the suit. var/mob/living/carbon/human/affecting = null var/obj/item/weapon/stock_parts/cell/cell - var/datum/effect/effect/system/spark_spread/spark_system + var/datum/effect_system/spark_spread/spark_system var/list/reagent_list = list("omnizine","salbutamol","spaceacillin","charcoal","nutriment","radium","potass_iodide")//The reagents ids which are added to the suit at New(). var/list/stored_research = list()//For stealing station research. var/obj/item/weapon/disk/tech_disk/t_disk//To copy design onto disk. diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 1eb73268566..dc7c033d22a 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -486,7 +486,7 @@ var/turf/T = get_turf(src) var/obj/structure/cable/N = T.get_cable_node() if (prob(50) && electrocute_mob(usr, N, N)) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(5, 1, src) s.start() return @@ -936,11 +936,11 @@ cell.corrupt() src.malfhack = 1 update_icon() - var/datum/effect/effect/system/smoke_spread/smoke = new + var/datum/effect_system/smoke_spread/smoke = new smoke.set_up(1, src.loc) smoke.attach(src) smoke.start() - var/datum/effect/effect/system/spark_spread/s = new + var/datum/effect_system/spark_spread/s = new s.set_up(3, 1, src) s.start() visible_message("The [src.name] suddenly lets out a blast of smoke and some sparks!", \ @@ -1206,7 +1206,7 @@ /obj/machinery/power/apc/proc/shock(mob/user, prb) if(!prob(prb)) return 0 - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(5, 1, src) s.start() if(isalien(user)) diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 3180e7c593e..b2ca9ae4a1b 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -166,7 +166,7 @@ By design, d1 is the smallest direction and d2 is the highest if(!prob(prb)) return 0 if (electrocute_mob(user, powernet, src, siemens_coeff)) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(5, 1, src) s.start() return 1 diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index bdbab991470..287aa0d28bd 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -351,7 +351,7 @@ user << "You stick \the [W] into the light socket!" if(has_power() && (W.flags & CONDUCT)) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(3, 1, src) s.start() if (prob(75)) @@ -496,7 +496,7 @@ if(status == LIGHT_OK || status == LIGHT_BURNED) playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1) if(on) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(3, 1, src) s.start() status = LIGHT_BROKEN diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index 7fc737afb46..cc65f704968 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -113,7 +113,7 @@ return /obj/machinery/field/proc/bump_field(atom/movable/AM as mob|obj) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(5, 1, AM.loc) s.start() var/atom/target = get_edge_target_turf(AM, get_dir(src, get_step_away(AM, src))) diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 95cec63ff84..673767faa5c 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -163,7 +163,7 @@ playsound(src.loc, 'sound/weapons/emitter.ogg', 25, 1) if(prob(35)) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(5, 1, src) s.start() diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm index 25be564a372..38f637d82fc 100644 --- a/code/modules/power/singularity/narsie.dm +++ b/code/modules/power/singularity/narsie.dm @@ -42,7 +42,7 @@ user << "Your soul is too far away." return makeNewConstruct(/mob/living/simple_animal/construct/harvester, user, null, 1) - PoolOrNew(/obj/effect/effect/smoke/sleeping, user.loc) + PoolOrNew(/obj/effect/particle_effect/smoke/sleeping, user.loc) /obj/singularity/narsie/process() diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index fe60d38873c..2873fb753e0 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -138,7 +138,7 @@ if(do_after(user, 20, target = src) && C.amount >= 10) var/obj/structure/cable/N = T.get_cable_node() //get the connecting node cable, if there's one if (prob(50) && electrocute_mob(usr, N, N)) //animate the electrocution if uncautious and unlucky - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(5, 1, src) s.start() return diff --git a/code/modules/power/terminal.dm b/code/modules/power/terminal.dm index 37fded3198f..ddc0723be64 100644 --- a/code/modules/power/terminal.dm +++ b/code/modules/power/terminal.dm @@ -63,7 +63,7 @@ if(do_after(user, 50, target = src)) if(master && master.can_terminal_dismantle()) if(prob(50) && electrocute_mob(user, powernet, src)) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(5, 1, master) s.start() return diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index 15eca5df034..e1e88439f09 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -123,7 +123,7 @@ /obj/item/weapon/gun/magic/wand/teleport/zap_self(mob/living/user) do_teleport(user, user, 10) - var/datum/effect/effect/system/smoke_spread/smoke = new + var/datum/effect_system/smoke_spread/smoke = new smoke.set_up(3, user.loc) smoke.start() charges-- diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index f8e6dbf479b..df78f854412 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -21,7 +21,7 @@ /obj/item/projectile/energy/electrode/on_hit(atom/target, blocked = 0) . = ..() if(!ismob(target) || blocked >= 2) //Fully blocked by mob or collided with dense object - burst into sparks! - var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread sparks.set_up(1, 1, src) sparks.start() else if(iscarbon(target)) @@ -33,7 +33,7 @@ C.do_jitter_animation(jitter) /obj/item/projectile/energy/electrode/on_range() //to ensure the bolt sparks when it reaches the end of its range if it didn't hit a target yet - var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread sparks.set_up(1, 1, src) sparks.start() ..() @@ -56,7 +56,7 @@ ..() /obj/item/projectile/energy/net/on_range() - var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread sparks.set_up(1, 1, src) sparks.start() ..() diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index d714ea730d9..46ec24aa982 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -81,7 +81,7 @@ if(!stuff.anchored && stuff.loc) teleammount++ do_teleport(stuff, stuff, 10) - var/datum/effect/effect/system/smoke_spread/smoke = new + var/datum/effect_system/smoke_spread/smoke = new smoke.set_up(max(round(4 - teleammount),0), stuff.loc) //Smoke drops off if a lot of stuff is moved for the sake of sanity smoke.start() diff --git a/code/modules/reagents/Chemistry-Reagents/Pyrotechnic-Reagents.dm b/code/modules/reagents/Chemistry-Reagents/Pyrotechnic-Reagents.dm index 32a253ae5de..a523b04ce35 100644 --- a/code/modules/reagents/Chemistry-Reagents/Pyrotechnic-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents/Pyrotechnic-Reagents.dm @@ -96,7 +96,7 @@ /datum/reagent/blackpowder/on_ex_act() var/location = get_turf(holder.my_atom) - var/datum/effect/effect/system/reagents_explosion/e = new() + var/datum/effect_system/reagents_explosion/e = new() e.set_up(1 + round(volume/6, 1), location, 0, 0, message = 0) e.start() holder.clear_reagents() diff --git a/code/modules/reagents/Chemistry-Recipes/Others.dm b/code/modules/reagents/Chemistry-Recipes/Others.dm index 89c8ed50a8e..c375d787d17 100644 --- a/code/modules/reagents/Chemistry-Recipes/Others.dm +++ b/code/modules/reagents/Chemistry-Recipes/Others.dm @@ -199,7 +199,7 @@ var/location = get_turf(holder.my_atom) for(var/mob/M in viewers(5, location)) M << "The solution spews out foam!" - var/datum/effect/effect/system/foam_spread/s = new() + var/datum/effect_system/foam_spread/s = new() s.set_up(created_volume, location, holder) s.start() holder.clear_reagents() @@ -220,7 +220,7 @@ for(var/mob/M in viewers(5, location)) M << "The solution spews out a metallic foam!" - var/datum/effect/effect/system/foam_spread/metal/s = new() + var/datum/effect_system/foam_spread/metal/s = new() s.set_up(created_volume, location, holder, 1) s.start() holder.clear_reagents() @@ -237,7 +237,7 @@ var/location = get_turf(holder.my_atom) for(var/mob/M in viewers(5, location)) M << "The solution spews out a metallic foam!" - var/datum/effect/effect/system/foam_spread/metal/s = new() + var/datum/effect_system/foam_spread/metal/s = new() s.set_up(created_volume, location, holder, 2) s.start() holder.clear_reagents() diff --git a/code/modules/reagents/Chemistry-Recipes/Pyrotechnics.dm b/code/modules/reagents/Chemistry-Recipes/Pyrotechnics.dm index 470ded9a986..bd5b6fcc337 100644 --- a/code/modules/reagents/Chemistry-Recipes/Pyrotechnics.dm +++ b/code/modules/reagents/Chemistry-Recipes/Pyrotechnics.dm @@ -11,7 +11,7 @@ return holder.remove_reagent("nitroglycerin", created_volume) var/location = get_turf(holder.my_atom) - var/datum/effect/effect/system/reagents_explosion/e = new() + var/datum/effect_system/reagents_explosion/e = new() e.set_up(round (created_volume/2, 1), location, 0, 0) e.start() holder.clear_reagents() @@ -26,7 +26,7 @@ /datum/chemical_reaction/nitroglycerin_explosion/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) - var/datum/effect/effect/system/reagents_explosion/e = new() + var/datum/effect_system/reagents_explosion/e = new() e.set_up(round(created_volume/2, 1), location, 0, 0) e.start() holder.clear_reagents() @@ -40,7 +40,7 @@ /datum/chemical_reaction/potassium_explosion/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) - var/datum/effect/effect/system/reagents_explosion/e = new() + var/datum/effect_system/reagents_explosion/e = new() e.set_up(round (created_volume/10, 1), location, 0, 0) e.start() holder.clear_reagents() @@ -64,7 +64,7 @@ /datum/chemical_reaction/blackpowder_explosion/on_reaction(datum/reagents/holder, created_volume) sleep(rand(50,100)) var/location = get_turf(holder.my_atom) - var/datum/effect/effect/system/reagents_explosion/e = new() + var/datum/effect_system/reagents_explosion/e = new() e.set_up(1 + round(created_volume/6, 1), location, 0, 0) e.start() holder.clear_reagents() @@ -180,7 +180,7 @@ if(holder.has_reagent("stabilizing_agent")) return var/location = get_turf(holder.my_atom) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(2, 1, location) s.start() for(var/mob/living/carbon/C in get_hearers_in_view(created_volume/10, location)) @@ -201,7 +201,7 @@ /datum/chemical_reaction/flash_powder_flash/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(2, 1, location) s.start() for(var/mob/living/carbon/C in get_hearers_in_view(created_volume/10, location)) @@ -224,7 +224,7 @@ holder.remove_reagent("smoke_powder", created_volume) var/smoke_radius = round(sqrt(created_volume / 2), 1) var/location = get_turf(holder.my_atom) - var/datum/effect/effect/system/smoke_spread/chem/S = new + var/datum/effect_system/smoke_spread/chem/S = new S.attach(location) playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3) if(S) @@ -246,7 +246,7 @@ /datum/chemical_reaction/smoke_powder_smoke/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) var/smoke_radius = round(sqrt(created_volume / 2), 1) - var/datum/effect/effect/system/smoke_spread/chem/S = new + var/datum/effect_system/smoke_spread/chem/S = new S.attach(location) playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3) if(S) diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 8c8932a7bd2..3b8886f3571 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -56,12 +56,12 @@ return if(2) if (prob(50)) - PoolOrNew(/obj/effect/effect/water, src.loc) + PoolOrNew(/obj/effect/particle_effect/water, src.loc) qdel(src) return if(3) if (prob(5)) - PoolOrNew(/obj/effect/effect/water, src.loc) + PoolOrNew(/obj/effect/particle_effect/water, src.loc) qdel(src) return else @@ -69,7 +69,7 @@ /obj/structure/reagent_dispensers/watertank/blob_act() if(prob(50)) - PoolOrNew(/obj/effect/effect/water, loc) + PoolOrNew(/obj/effect/particle_effect/water, loc) qdel(src) /obj/structure/reagent_dispensers/fueltank diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index 16162ce11a2..8b058c4096c 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -229,7 +229,7 @@ loaded_item = null /obj/machinery/r_n_d/experimentor/proc/throwSmoke(turf/where) - var/datum/effect/effect/system/smoke_spread/smoke = new + var/datum/effect_system/smoke_spread/smoke = new smoke.set_up(0, where) smoke.start() @@ -319,7 +319,7 @@ R.my_atom = src R.add_reagent(chosenchem , 50) investigate_log("Experimentor has released [chosenchem] smoke.", "experimentor") - var/datum/effect/effect/system/smoke_spread/chem/smoke = new + var/datum/effect_system/smoke_spread/chem/smoke = new smoke.set_up(R, 0, src, silent = 1) playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3) smoke.start() @@ -331,7 +331,7 @@ var/datum/reagents/R = new/datum/reagents(50) R.my_atom = src R.add_reagent(chosenchem , 50) - var/datum/effect/effect/system/smoke_spread/chem/smoke = new + var/datum/effect_system/smoke_spread/chem/smoke = new smoke.set_up(R, 0, src, silent = 1) playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3) smoke.start() @@ -418,7 +418,7 @@ R.my_atom = src R.add_reagent("frostoil" , 50) investigate_log("Experimentor has released frostoil gas.", "experimentor") - var/datum/effect/effect/system/smoke_spread/chem/smoke = new + var/datum/effect_system/smoke_spread/chem/smoke = new smoke.set_up(R, 0, src, silent = 1) playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3) smoke.start() @@ -440,7 +440,7 @@ ejectItem(TRUE) if(prob(EFFECT_PROB_MEDIUM-badThingCoeff)) visible_message("[src] malfunctions, releasing a flurry of chilly air as [exp_on] pops out!") - var/datum/effect/effect/system/smoke_spread/smoke = new + var/datum/effect_system/smoke_spread/smoke = new smoke.set_up(0, src.loc) smoke.start() ejectItem() @@ -642,7 +642,7 @@ //////////////// RELIC PROCS ///////////////////////////// /obj/item/weapon/relic/proc/throwSmoke(turf/where) - var/datum/effect/effect/system/smoke_spread/smoke = new + var/datum/effect_system/smoke_spread/smoke = new smoke.set_up(0, where) smoke.start() diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm index 928180e8375..70837f07271 100644 --- a/code/modules/research/rdmachines.dm +++ b/code/modules/research/rdmachines.dm @@ -30,7 +30,7 @@ return 0 if(!prob(prb)) return 0 - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(5, 1, src) s.start() if (electrocute_mob(user, get_area(src), src, 0.7)) diff --git a/code/modules/telesci/bscrystal.dm b/code/modules/telesci/bscrystal.dm index 811ef4d991f..dae04b42b5b 100644 --- a/code/modules/telesci/bscrystal.dm +++ b/code/modules/telesci/bscrystal.dm @@ -18,7 +18,7 @@ /obj/item/bluespace_crystal/attack_self(mob/user) user.visible_message("[user] crushes [src]!", "You crush [src]!") - PoolOrNew(/obj/effect/effect/sparks, loc) + PoolOrNew(/obj/effect/particle_effect/sparks, loc) playsound(src.loc, "sparks", 50, 1) blink_mob(user) user.unEquip(src) @@ -31,7 +31,7 @@ if(!..()) // not caught in mid-air visible_message("[src] fizzles and disappears upon impact!") var/turf/T = get_turf(hit_atom) - PoolOrNew(/obj/effect/effect/sparks, T) + PoolOrNew(/obj/effect/particle_effect/sparks, T) playsound(src.loc, "sparks", 50, 1) if(isliving(hit_atom)) blink_mob(hit_atom) diff --git a/code/modules/telesci/telepad.dm b/code/modules/telesci/telepad.dm index 798c0e70181..1fc0a9dd1ac 100644 --- a/code/modules/telesci/telepad.dm +++ b/code/modules/telesci/telepad.dm @@ -151,7 +151,7 @@ /obj/item/weapon/rcs/emag_act(mob/user) if(!emagged) emagged = 1 - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(5, 1, src) s.start() user << "You emag the RCS. Click on it to toggle between modes." diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm index a166eb69b0a..f0b3dea8f4c 100644 --- a/code/modules/telesci/telesci_computer.dm +++ b/code/modules/telesci/telesci_computer.dm @@ -142,7 +142,7 @@ /obj/machinery/computer/telescience/proc/sparks() if(telepad) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(5, 1, get_turf(telepad)) s.start() else @@ -200,7 +200,7 @@ // use a lot of power use_power(power * 10) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(5, 1, get_turf(telepad)) s.start() @@ -211,7 +211,7 @@ temp_msg += "Data printed below." var/sparks = get_turf(target) - var/datum/effect/effect/system/spark_spread/y = new /datum/effect/effect/system/spark_spread + var/datum/effect_system/spark_spread/y = new /datum/effect_system/spark_spread y.set_up(5, 1, sparks) y.start() diff --git a/tgstation.dme b/tgstation.dme index f4272161a16..1c8d90ed74d 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -553,7 +553,6 @@ #include "code\game\objects\effects\aliens.dm" #include "code\game\objects\effects\anomalies.dm" #include "code\game\objects\effects\bump_teleporter.dm" -#include "code\game\objects\effects\explosion_particles.dm" #include "code\game\objects\effects\forcefields.dm" #include "code\game\objects\effects\gibs.dm" #include "code\game\objects\effects\glowshroom.dm" @@ -576,6 +575,7 @@ #include "code\game\objects\effects\decals\Cleanable\misc.dm" #include "code\game\objects\effects\decals\Cleanable\robots.dm" #include "code\game\objects\effects\effect_system\effect_system.dm" +#include "code\game\objects\effects\effect_system\effects_explosion.dm" #include "code\game\objects\effects\effect_system\effects_foam.dm" #include "code\game\objects\effects\effect_system\effects_other.dm" #include "code\game\objects\effects\effect_system\effects_smoke.dm"