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:
tigercat2000
2017-11-26 12:35:01 -08:00
committed by GitHub
133 changed files with 1223 additions and 1623 deletions
@@ -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()
+2 -2
View File
@@ -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)
+2 -2
View File
@@ -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)
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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()
+1 -1
View File
@@ -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)
+2 -2
View File
@@ -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)
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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()