mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-29 06:57:42 +01:00
Merge pull request #8331 from uraniummeltdown/effectfiles
Splits effect_system.dm into multiple files and cleans it up, OOP particle effects and effect systems
This commit is contained in:
@@ -66,7 +66,7 @@
|
||||
|
||||
/obj/item/device/chameleon/proc/disrupt(var/delete_dummy = 1)
|
||||
if(active_dummy)
|
||||
var/datum/effect/system/spark_spread/spark_system = new /datum/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()
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
if(M)
|
||||
M.moved_recently = 0
|
||||
to_chat(M, "<span class='danger'>You feel a sharp shock!</span>")
|
||||
var/datum/effect/system/spark_spread/s = new /datum/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()
|
||||
|
||||
|
||||
@@ -244,7 +244,7 @@
|
||||
|
||||
/obj/item/toy/snappop/virus/throw_impact(atom/hit_atom)
|
||||
..()
|
||||
var/datum/effect/system/spark_spread/s = new /datum/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(src.loc)
|
||||
@@ -264,7 +264,7 @@
|
||||
var/ash_type = /obj/effect/decal/cleanable/ash
|
||||
|
||||
/obj/item/toy/snappop/proc/pop_burst(var/n=3, var/c=1)
|
||||
var/datum/effect/system/spark_spread/s = new()
|
||||
var/datum/effect_system/spark_spread/s = new()
|
||||
s.set_up(n, c, src)
|
||||
s.start()
|
||||
new ash_type(loc)
|
||||
|
||||
@@ -20,7 +20,7 @@ RCD
|
||||
origin_tech = "engineering=4;materials=2"
|
||||
toolspeed = 1
|
||||
usesound = 'sound/items/Deconstruct.ogg'
|
||||
var/datum/effect/system/spark_spread/spark_system
|
||||
var/datum/effect_system/spark_spread/spark_system
|
||||
var/max_matter = 100
|
||||
var/matter = 0
|
||||
var/working = 0
|
||||
@@ -47,7 +47,7 @@ RCD
|
||||
|
||||
/obj/item/weapon/rcd/New()
|
||||
desc = "A RCD. It currently holds [matter]/[max_matter] matter-units."
|
||||
spark_system = new /datum/effect/system/spark_spread
|
||||
spark_system = new /datum/effect_system/spark_spread
|
||||
spark_system.set_up(5, 0, src)
|
||||
spark_system.attach(src)
|
||||
rcd_list += src
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
to_chat(user, "<span class='notice'>\The [src] is full.</span>")
|
||||
return
|
||||
reagents.remove_reagent(25,"water")
|
||||
var/datum/effect/system/bad_smoke_spread/smoke = new /datum/effect/system/bad_smoke_spread()
|
||||
var/datum/effect_system/smoke_spread/bad/smoke = new
|
||||
smoke.set_up(5, 0, user.loc)
|
||||
smoke.start()
|
||||
playsound(user.loc, 'sound/effects/bamf.ogg', 50, 2)
|
||||
|
||||
@@ -130,7 +130,7 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
src.lit = 1
|
||||
damtype = "fire"
|
||||
if(reagents.get_reagent_amount("plasma")) // the plasma explodes when exposed to fire
|
||||
var/datum/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))
|
||||
@@ -139,7 +139,7 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
qdel(src)
|
||||
return
|
||||
if(reagents.get_reagent_amount("fuel")) // the fuel explodes, too, but much less violently
|
||||
var/datum/effect/system/reagents_explosion/e = new()
|
||||
var/datum/effect_system/reagents_explosion/e = new()
|
||||
e.set_up(round(reagents.get_reagent_amount("fuel") / 5, 1), get_turf(src), 0, 0)
|
||||
e.start()
|
||||
if(ismob(loc))
|
||||
|
||||
@@ -139,7 +139,7 @@
|
||||
|
||||
for(var/a=0, a<5, a++)
|
||||
spawn(0)
|
||||
var/obj/effect/effect/water/W = new /obj/effect/effect/water( get_turf(src) )
|
||||
var/obj/effect/particle_effect/water/W = new /obj/effect/particle_effect/water( get_turf(src) )
|
||||
var/turf/my_target = pick(the_targets)
|
||||
if(precision)
|
||||
the_targets -= my_target
|
||||
|
||||
@@ -3,7 +3,7 @@ obj/item/weapon/firework
|
||||
icon = 'icons/obj/fireworks.dmi'
|
||||
icon_state = "rocket_0"
|
||||
var/litzor = 0
|
||||
var/datum/effect/system/sparkle_spread/S
|
||||
var/datum/effect_system/sparkle_spread/S
|
||||
obj/item/weapon/firework/attackby(obj/item/weapon/W,mob/user, params)
|
||||
if(litzor)
|
||||
return
|
||||
@@ -25,7 +25,7 @@ obj/item/weapon/sparkler
|
||||
icon = 'icons/obj/fireworks.dmi'
|
||||
icon_state = "sparkler_0"
|
||||
var/litzor = 0
|
||||
var/datum/effect/system/spark_spread/S
|
||||
var/datum/effect_system/spark_spread/S
|
||||
obj/item/weapon/sparkler/attackby(obj/item/weapon/W,mob/user, params)
|
||||
if(litzor)
|
||||
return
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
det_time = 20
|
||||
item_state = "flashbang"
|
||||
slot_flags = SLOT_BELT
|
||||
var/datum/effect/system/bad_smoke_spread/smoke
|
||||
var/datum/effect_system/smoke_spread/bad/smoke
|
||||
|
||||
New()
|
||||
..()
|
||||
src.smoke = new /datum/effect/system/bad_smoke_spread
|
||||
src.smoke = new /datum/effect_system/smoke_spread/bad
|
||||
src.smoke.attach(src)
|
||||
|
||||
Destroy()
|
||||
|
||||
@@ -147,7 +147,7 @@
|
||||
..()
|
||||
spawn(100)
|
||||
if(!istype(loc, /mob))
|
||||
var/datum/effect/system/spark_spread/sparks = new /datum/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)
|
||||
|
||||
@@ -207,13 +207,13 @@
|
||||
throw_speed = 3
|
||||
throw_range = 1
|
||||
w_class = WEIGHT_CLASS_BULKY //So you can't hide it in your pocket or some such.
|
||||
var/datum/effect/system/spark_spread/spark_system
|
||||
var/datum/effect_system/spark_spread/spark_system
|
||||
sharp = 1
|
||||
|
||||
//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/system/spark_spread()
|
||||
spark_system = new /datum/effect_system/spark_spread()
|
||||
spark_system.set_up(5, 0, src)
|
||||
spark_system.attach(src)
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
materials = list(MAT_METAL = 75000, MAT_GLASS = 37500)
|
||||
origin_tech = "engineering=4;materials=2"
|
||||
var/datum/effect/system/spark_spread/spark_system
|
||||
var/datum/effect_system/spark_spread/spark_system
|
||||
var/lastused
|
||||
var/iconrotation = 0 //used to orient icons and pipes
|
||||
var/mode = 1 //Disposals, atmospherics, etc.
|
||||
@@ -53,7 +53,7 @@
|
||||
|
||||
/obj/item/weapon/rpd/New()
|
||||
..()
|
||||
spark_system = new /datum/effect/system/spark_spread()
|
||||
spark_system = new /datum/effect_system/spark_spread()
|
||||
spark_system.set_up(1, 0, src)
|
||||
spark_system.attach(src)
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
to_chat(user, "A mysterious force disrupts your arcane spell matrix, and you remain where you are.")
|
||||
return
|
||||
|
||||
var/datum/effect/system/harmless_smoke_spread/smoke = new /datum/effect/system/harmless_smoke_spread()
|
||||
var/datum/effect_system/smoke_spread/smoke = new
|
||||
smoke.set_up(5, 0, user.loc)
|
||||
smoke.attach(user)
|
||||
smoke.start()
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
overlays += image('icons/obj/storage.dmi', icon_locking)
|
||||
locked = 0
|
||||
if(istype(weapon, /obj/item/weapon/melee/energy/blade))
|
||||
var/datum/effect/system/spark_spread/spark_system = new /datum/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.loc)
|
||||
spark_system.start()
|
||||
playsound(loc, 'sound/weapons/blade1.ogg', 50, 1)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
item_state = "jetpack"
|
||||
distribute_pressure = ONE_ATMOSPHERE*O2STANDARD
|
||||
var/datum/effect/system/ion_trail_follow/ion_trail
|
||||
var/datum/effect_system/trail_follow/ion/ion_trail
|
||||
actions_types = list(/datum/action/item_action/set_internals, /datum/action/item_action/toggle_jetpack, /datum/action/item_action/jetpack_stabilization)
|
||||
var/on = 0
|
||||
var/stabilizers = 0
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
/obj/item/weapon/tank/jetpack/New()
|
||||
..()
|
||||
ion_trail = new /datum/effect/system/ion_trail_follow()
|
||||
ion_trail = new /datum/effect_system/trail_follow/ion()
|
||||
ion_trail.set_up(src)
|
||||
|
||||
/obj/item/weapon/tank/jetpack/Destroy()
|
||||
@@ -143,7 +143,7 @@
|
||||
|
||||
/obj/item/weapon/tank/jetpack/carbondioxide/New()
|
||||
..()
|
||||
ion_trail = new /datum/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)
|
||||
|
||||
|
||||
@@ -300,7 +300,7 @@
|
||||
if(!Adj|| !istype(target, /turf))
|
||||
return
|
||||
if(metal_synthesis_cooldown < 5)
|
||||
var/obj/structure/foam/F = new /obj/structure/foam(get_turf(target), 1)
|
||||
var/obj/effect/particle_effect/foam/F = new /obj/effect/particle_effect/foam(get_turf(target), 1)
|
||||
F.amount = 0
|
||||
metal_synthesis_cooldown++
|
||||
spawn(100)
|
||||
@@ -319,7 +319,9 @@
|
||||
pass_flags = PASSTABLE
|
||||
|
||||
/obj/effect/nanofrost_container/proc/Smoke()
|
||||
new /obj/effect/effect/freezing_smoke(src.loc, 6, 1)
|
||||
var/datum/effect_system/smoke_spread/freezing/S = new
|
||||
S.set_up(6, 0, loc, null, 1)
|
||||
S.start()
|
||||
var/obj/effect/decal/cleanable/flour/F = new /obj/effect/decal/cleanable/flour(src.loc)
|
||||
F.color = "#B2FFFF"
|
||||
F.name = "nanofrost residue"
|
||||
@@ -327,78 +329,6 @@
|
||||
playsound(src,'sound/effects/bamf.ogg',100,1)
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/effect/freezing_smoke
|
||||
name = "nanofrost smoke"
|
||||
icon_state = "smoke"
|
||||
opacity = 0
|
||||
anchored = 0.0
|
||||
mouse_opacity = 0
|
||||
icon = 'icons/effects/96x96.dmi'
|
||||
pixel_x = -32
|
||||
pixel_y = -32
|
||||
color = "#B2FFFF"
|
||||
var/amount = 0
|
||||
|
||||
/obj/effect/effect/freezing_smoke/New(loc, var/amt, var/blast)
|
||||
..()
|
||||
spawn(100+rand(10,30))
|
||||
delete()
|
||||
amount = amt
|
||||
if(amount)
|
||||
var/datum/effect/system/freezing_smoke_spread/F = new /datum/effect/system/freezing_smoke_spread
|
||||
F.set_up(amount, 0, src.loc)
|
||||
F.start()
|
||||
if(blast)
|
||||
for(var/turf/T in spiral_range_turfs(2, src.loc))
|
||||
Chilled(T)
|
||||
return
|
||||
|
||||
/obj/effect/effect/freezing_smoke/proc/Chilled(atom/A)
|
||||
if(istype(A, /turf/simulated))
|
||||
var/turf/simulated/T = A
|
||||
if(T.air)
|
||||
var/datum/gas_mixture/G = T.air
|
||||
if(get_dist(T, src) < 2) // Otherwise we'll get silliness like people using Nanofrost to kill people through walls with cold air
|
||||
G.temperature = 2
|
||||
T.air_update_turf()
|
||||
for(var/obj/effect/hotspot/H in T)
|
||||
qdel(H)
|
||||
if(G.toxins)
|
||||
G.nitrogen += (G.toxins)
|
||||
G.toxins = 0
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/V in T)
|
||||
V.welded = 1
|
||||
V.update_icon()
|
||||
V.visible_message("<span class='danger'>[V] was frozen shut!</span>")
|
||||
for(var/mob/living/L in T)
|
||||
L.ExtinguishMob()
|
||||
for(var/obj/item/Item in T)
|
||||
Item.extinguish()
|
||||
|
||||
/datum/effect/system/freezing_smoke_spread
|
||||
|
||||
/datum/effect/system/freezing_smoke_spread/set_up(n = 6, c = 0, loca)
|
||||
number = n
|
||||
if(istype(loca, /turf/))
|
||||
location = loca
|
||||
else
|
||||
location = get_turf(loca)
|
||||
|
||||
/datum/effect/system/freezing_smoke_spread/start()
|
||||
var/i = 0
|
||||
for(i=0, i<number, i++)
|
||||
spawn(0)
|
||||
var/obj/effect/effect/freezing_smoke/smoke = new /obj/effect/effect/freezing_smoke(location, 0, 0)
|
||||
smoke.amount = 0
|
||||
var/direction = pick(alldirs)
|
||||
for(i=0, i<rand(1,3), i++)
|
||||
sleep(5)
|
||||
step(smoke,direction)
|
||||
spawn(150+rand(10,30))
|
||||
if(smoke)
|
||||
fadeOut(smoke)
|
||||
smoke.delete()
|
||||
|
||||
#undef EXTINGUISHER
|
||||
#undef NANOFROST
|
||||
#undef METAL_FOAM
|
||||
|
||||
@@ -607,7 +607,7 @@
|
||||
origin_tech = "combat=4;powerstorage=7"
|
||||
|
||||
/obj/item/weapon/twohanded/mjollnir/proc/shock(mob/living/target as mob)
|
||||
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread()
|
||||
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread()
|
||||
s.set_up(5, 1, target.loc)
|
||||
s.start()
|
||||
target.visible_message("<span class='danger'>[target.name] was shocked by the [src.name]!</span>", \
|
||||
@@ -735,7 +735,7 @@
|
||||
Z.take_organ_damage(0,30)
|
||||
user.visible_message("<span class='danger'>[user] slams the charged axe into [Z.name] with all their might!</span>")
|
||||
playsound(loc, 'sound/magic/lightningbolt.ogg', 5, 1)
|
||||
var/datum/effect/system/spark_spread/sparks = new /datum/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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user