mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 04:30:44 +01:00
Merge branch 'master' of https://github.com/tgstation/-tg-station into explosive
This commit is contained in:
@@ -27,7 +27,7 @@
|
||||
|
||||
|
||||
/obj/effect/anomaly/proc/anomalyNeutralize()
|
||||
new /obj/effect/effect/bad_smoke(loc)
|
||||
PoolOrNew(/obj/effect/effect/bad_smoke, loc)
|
||||
|
||||
for(var/atom/movable/O in src)
|
||||
O.loc = src.loc
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
icon_state = "xfloor1"
|
||||
random_icon_states = list("xfloor1", "xfloor2", "xfloor3", "xfloor4", "xfloor5", "xfloor6", "xfloor7")
|
||||
var/list/viruses = list()
|
||||
blood_DNA = list()
|
||||
blood_DNA = list("UNKNOWN DNA" = "X*")
|
||||
|
||||
/obj/effect/decal/cleanable/xenoblood/Destroy()
|
||||
for(var/datum/disease/D in viruses)
|
||||
@@ -63,4 +63,5 @@
|
||||
|
||||
/obj/effect/decal/cleanable/blood/xtracks
|
||||
icon_state = "xtracks"
|
||||
random_icon_states = null
|
||||
random_icon_states = null
|
||||
blood_DNA = list("UNKNOWN DNA" = "X*")
|
||||
@@ -12,12 +12,16 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/effect/decal/cleanable/crayon/New(location, main = "#FFFFFF", var/type = "rune1", var/e_name = "rune")
|
||||
/obj/effect/decal/cleanable/crayon/New(location, main = "#FFFFFF", var/type = "rune1", var/e_name = "rune", var/rotation = 0)
|
||||
..()
|
||||
loc = location
|
||||
|
||||
name = e_name
|
||||
desc = "A [name] drawn in crayon."
|
||||
|
||||
icon_state = type
|
||||
color = main
|
||||
|
||||
var/matrix/M = matrix()
|
||||
M.Turn(rotation)
|
||||
src.transform = M
|
||||
|
||||
color = main
|
||||
|
||||
@@ -13,11 +13,10 @@ would spawn and follow the beaker, even if it is carried or thrown.
|
||||
unacidable = 1//So effect are not targeted by alien acid.
|
||||
pass_flags = PASSTABLE | PASSGRILLE
|
||||
|
||||
/obj/effect/proc/delete()
|
||||
loc = null
|
||||
if(reagents)
|
||||
reagents.delete()
|
||||
return
|
||||
/obj/effect/effect/Destroy()
|
||||
..()
|
||||
PlaceInPool(src)
|
||||
return 1
|
||||
|
||||
/datum/effect/effect/proc/fadeOut(var/atom/A, var/frames = 16)
|
||||
if(A.alpha == 0) //Handle already transparent case
|
||||
@@ -37,6 +36,11 @@ would spawn and follow the beaker, even if it is carried or thrown.
|
||||
var/atom/holder
|
||||
var/setup = 0
|
||||
|
||||
/datum/effect/effect/system/Destroy()
|
||||
holder = null
|
||||
location = null
|
||||
..()
|
||||
|
||||
/datum/effect/effect/system/proc/set_up(n = 3, c = 0, turf/loc)
|
||||
if(n > 10)
|
||||
n = 10
|
||||
|
||||
@@ -33,6 +33,9 @@
|
||||
SSobj.processing.Add(src)
|
||||
playsound(src, 'sound/effects/bubbles2.ogg', 80, 1, -3)
|
||||
|
||||
/obj/effect/effect/foam/Destroy()
|
||||
SSobj.processing.Remove(src)
|
||||
return ..()
|
||||
|
||||
/obj/effect/effect/foam/metal/New(loc)
|
||||
..()
|
||||
@@ -45,7 +48,7 @@
|
||||
SSobj.processing.Remove(src)
|
||||
flick("[icon_state]-disolve", src)
|
||||
spawn(5)
|
||||
delete()
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/effect/effect/foam/process()
|
||||
@@ -84,7 +87,7 @@
|
||||
if(foundfoam)
|
||||
continue
|
||||
|
||||
var/obj/effect/effect/foam/F = new type(T)
|
||||
var/obj/effect/effect/foam/F = PoolOrNew(/obj/effect/effect/foam, T)
|
||||
F.amount = amount
|
||||
reagents.copy_to(F, (reagents.total_volume))
|
||||
F.color = color
|
||||
@@ -114,11 +117,15 @@
|
||||
|
||||
/datum/effect/effect/system/foam_spread/New()
|
||||
..()
|
||||
chemholder = new/obj()
|
||||
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()
|
||||
qdel(chemholder)
|
||||
chemholder = null
|
||||
return ..()
|
||||
|
||||
/datum/effect/effect/system/foam_spread/set_up(amt=5, loca, var/datum/reagents/carry = null)
|
||||
if(istype(loca, /turf/))
|
||||
@@ -135,11 +142,11 @@
|
||||
metal = metaltype
|
||||
|
||||
/datum/effect/effect/system/foam_spread/start()
|
||||
var/obj/effect/effect/foam/foundfoam = locate()
|
||||
var/obj/effect/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 = new foamtype(src.location)
|
||||
var/obj/effect/effect/foam/F = PoolOrNew(foamtype, location)
|
||||
var/foamcolor = mix_color_from_reagents(chemholder.reagents.reagent_list)
|
||||
chemholder.reagents.copy_to(F, chemholder.reagents.total_volume)
|
||||
F.color = foamcolor
|
||||
|
||||
@@ -16,6 +16,10 @@
|
||||
var/processing = 1
|
||||
var/on = 1
|
||||
|
||||
/datum/effect/effect/system/ion_trail_follow/Destroy()
|
||||
oldposition = null
|
||||
return ..()
|
||||
|
||||
/datum/effect/effect/system/ion_trail_follow/set_up(atom/atom)
|
||||
attach(atom)
|
||||
|
||||
@@ -29,13 +33,12 @@
|
||||
var/turf/T = get_turf(src.holder)
|
||||
if(T != src.oldposition)
|
||||
if(!has_gravity(T))
|
||||
var/obj/effect/effect/ion_trails/I = new /obj/effect/effect/ion_trails(src.oldposition)
|
||||
var/obj/effect/effect/ion_trails/I = PoolOrNew(/obj/effect/effect/ion_trails, oldposition)
|
||||
I.dir = src.holder.dir
|
||||
flick("ion_fade", I)
|
||||
I.icon_state = "ion_trails"
|
||||
I.icon_state = ""
|
||||
spawn( 20 )
|
||||
if(I)
|
||||
I.delete()
|
||||
qdel(I)
|
||||
src.oldposition = T
|
||||
spawn(2)
|
||||
if(src.on)
|
||||
|
||||
@@ -28,12 +28,7 @@
|
||||
/obj/effect/effect/harmless_smoke/New()
|
||||
..()
|
||||
spawn (100)
|
||||
delete()
|
||||
return
|
||||
|
||||
/obj/effect/effect/harmless_smoke/Move()
|
||||
..()
|
||||
return
|
||||
qdel(src)
|
||||
|
||||
/datum/effect/effect/system/harmless_smoke_spread
|
||||
var/total_smoke = 0 // To stop it being spammed and lagging!
|
||||
@@ -60,7 +55,7 @@
|
||||
spawn(0)
|
||||
if(holder)
|
||||
src.location = get_turf(holder)
|
||||
var/obj/effect/effect/harmless_smoke/smoke = new /obj/effect/effect/harmless_smoke(src.location)
|
||||
var/obj/effect/effect/harmless_smoke/smoke = PoolOrNew(/obj/effect/effect/harmless_smoke, location)
|
||||
src.total_smoke++
|
||||
var/direction = src.direction
|
||||
if(!direction)
|
||||
@@ -74,7 +69,7 @@
|
||||
spawn(75+rand(10,30))
|
||||
if(smoke)
|
||||
fadeOut(smoke)
|
||||
smoke.delete()
|
||||
qdel(smoke)
|
||||
src.total_smoke--
|
||||
|
||||
|
||||
@@ -96,8 +91,7 @@
|
||||
/obj/effect/effect/bad_smoke/New()
|
||||
..()
|
||||
spawn (200+rand(10,30))
|
||||
delete()
|
||||
return
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/effect/bad_smoke/Move()
|
||||
..()
|
||||
@@ -163,7 +157,7 @@
|
||||
spawn(0)
|
||||
if(holder)
|
||||
src.location = get_turf(holder)
|
||||
var/obj/effect/effect/bad_smoke/smoke = new /obj/effect/effect/bad_smoke(src.location)
|
||||
var/obj/effect/effect/bad_smoke/smoke = PoolOrNew(/obj/effect/effect/bad_smoke, location)
|
||||
src.total_smoke++
|
||||
var/direction = src.direction
|
||||
if(!direction)
|
||||
@@ -177,7 +171,7 @@
|
||||
spawn(150+rand(10,30))
|
||||
if(smoke)
|
||||
fadeOut(smoke)
|
||||
smoke.delete()
|
||||
qdel(smoke)
|
||||
src.total_smoke--
|
||||
|
||||
|
||||
@@ -201,8 +195,7 @@
|
||||
..()
|
||||
create_reagents(500)
|
||||
spawn(200+rand(10,30))
|
||||
delete()
|
||||
return
|
||||
qdel(src)
|
||||
|
||||
|
||||
/obj/effect/effect/chem_smoke/Move()
|
||||
@@ -228,11 +221,15 @@
|
||||
|
||||
/datum/effect/effect/system/chem_smoke_spread/New()
|
||||
..()
|
||||
chemholder = new/obj()
|
||||
chemholder = PoolOrNew(/obj)
|
||||
var/datum/reagents/R = new/datum/reagents(500)
|
||||
chemholder.reagents = R
|
||||
R.my_atom = chemholder
|
||||
|
||||
/datum/effect/effect/system/chem_smoke_spread/Destroy()
|
||||
PlaceInPool(chemholder)
|
||||
chemholder = null
|
||||
..()
|
||||
|
||||
/datum/effect/effect/system/chem_smoke_spread/set_up(var/datum/reagents/carry = null, n = 5, c = 0, loca, direct, silent = 0)
|
||||
if(n > 20)
|
||||
@@ -284,7 +281,7 @@
|
||||
spawn(0)
|
||||
if(holder)
|
||||
src.location = get_turf(holder)
|
||||
var/obj/effect/effect/chem_smoke/smoke = new /obj/effect/effect/chem_smoke(src.location)
|
||||
var/obj/effect/effect/chem_smoke/smoke = PoolOrNew(/obj/effect/effect/chem_smoke, location)
|
||||
src.total_smoke++
|
||||
var/direction = src.direction
|
||||
if(!direction)
|
||||
@@ -309,7 +306,7 @@
|
||||
spawn(150+rand(10,30))
|
||||
if(smoke)
|
||||
fadeOut(smoke)
|
||||
smoke.delete()
|
||||
qdel(smoke)
|
||||
src.total_smoke--
|
||||
|
||||
|
||||
@@ -334,8 +331,7 @@
|
||||
/obj/effect/effect/sleep_smoke/New()
|
||||
..()
|
||||
spawn (200+rand(10,30))
|
||||
delete()
|
||||
return
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/effect/sleep_smoke/Move()
|
||||
..()
|
||||
@@ -395,7 +391,7 @@
|
||||
spawn(0)
|
||||
if(holder)
|
||||
src.location = get_turf(holder)
|
||||
var/obj/effect/effect/sleep_smoke/smoke = new /obj/effect/effect/sleep_smoke(src.location)
|
||||
var/obj/effect/effect/sleep_smoke/smoke = PoolOrNew(/obj/effect/effect/sleep_smoke, location)
|
||||
src.total_smoke++
|
||||
var/direction = src.direction
|
||||
if(!direction)
|
||||
@@ -409,5 +405,5 @@
|
||||
spawn(150+rand(10,30))
|
||||
if(smoke)
|
||||
fadeOut(smoke)
|
||||
smoke.delete()
|
||||
qdel(smoke)
|
||||
src.total_smoke--
|
||||
@@ -14,20 +14,19 @@
|
||||
|
||||
/obj/effect/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)
|
||||
delete()
|
||||
return
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/effect/sparks/Destroy()
|
||||
var/turf/T = src.loc
|
||||
if (istype(T, /turf))
|
||||
T.hotspot_expose(1000,100)
|
||||
..()
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/effect/effect/sparks/Move()
|
||||
..()
|
||||
@@ -57,7 +56,7 @@
|
||||
spawn(0)
|
||||
if(holder)
|
||||
src.location = get_turf(holder)
|
||||
var/obj/effect/effect/sparks/sparks = new /obj/effect/effect/sparks(src.location)
|
||||
var/obj/effect/effect/sparks/sparks = PoolOrNew(/obj/effect/effect/sparks, location)
|
||||
src.total_sparks++
|
||||
var/direction
|
||||
if(src.cardinals)
|
||||
@@ -68,8 +67,7 @@
|
||||
sleep(5)
|
||||
step(sparks,direction)
|
||||
spawn(20)
|
||||
if(sparks) // Might be deleted already
|
||||
sparks.delete()
|
||||
qdel(sparks)
|
||||
src.total_sparks--
|
||||
|
||||
|
||||
@@ -101,7 +99,7 @@
|
||||
spawn(0)
|
||||
if(holder)
|
||||
src.location = get_turf(holder)
|
||||
var/obj/effect/effect/sparks/electricity/sparks = new /obj/effect/effect/sparks/electricity(src.location)
|
||||
var/obj/effect/effect/sparks/electricity/sparks = PoolOrNew(/obj/effect/effect/sparks/electricity, location)
|
||||
src.total_sparks++
|
||||
var/direction
|
||||
if(src.cardinals)
|
||||
@@ -112,6 +110,5 @@
|
||||
sleep(5)
|
||||
step(sparks,direction)
|
||||
spawn(20)
|
||||
if(sparks) // Might be deleted already
|
||||
sparks.delete()
|
||||
qdel(sparks)
|
||||
src.total_sparks--
|
||||
@@ -10,21 +10,13 @@
|
||||
|
||||
/obj/effect/effect/water/New()
|
||||
..()
|
||||
//var/turf/T = src.loc
|
||||
//if (istype(T, /turf))
|
||||
// T.firelevel = 0 //TODO: FIX
|
||||
spawn( 70 )
|
||||
delete()
|
||||
return
|
||||
return
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/effect/water/Move(turf/newloc)
|
||||
//var/turf/T = src.loc
|
||||
//if (istype(T, /turf))
|
||||
// T.firelevel = 0 //TODO: FIX
|
||||
if (--src.life < 1)
|
||||
//SN src = null
|
||||
delete()
|
||||
qdel(src)
|
||||
return 0
|
||||
if(newloc.density)
|
||||
return 0
|
||||
.=..()
|
||||
@@ -71,7 +63,7 @@ steam.start() -- spawns the effect
|
||||
spawn(0)
|
||||
if(holder)
|
||||
src.location = get_turf(holder)
|
||||
var/obj/effect/effect/steam/steam = new /obj/effect/effect/steam(src.location)
|
||||
var/obj/effect/effect/steam/steam = PoolOrNew(/obj/effect/effect/steam, location)
|
||||
var/direction
|
||||
if(src.cardinals)
|
||||
direction = pick(cardinal)
|
||||
@@ -81,7 +73,7 @@ steam.start() -- spawns the effect
|
||||
sleep(5)
|
||||
step(steam,direction)
|
||||
spawn(20)
|
||||
steam.delete()
|
||||
qdel(steam)
|
||||
|
||||
|
||||
/////////////////////////////////////////////
|
||||
@@ -106,12 +98,12 @@ steam.start() -- spawns the effect
|
||||
src.processing = 0
|
||||
spawn(0)
|
||||
if(src.number < 3)
|
||||
var/obj/effect/effect/steam/I = new /obj/effect/effect/steam(src.oldposition)
|
||||
var/obj/effect/effect/steam/I = PoolOrNew(/obj/effect/effect/steam, oldposition)
|
||||
src.number++
|
||||
src.oldposition = get_turf(holder)
|
||||
I.dir = src.holder.dir
|
||||
spawn(10)
|
||||
I.delete()
|
||||
qdel(I)
|
||||
src.number--
|
||||
spawn(2)
|
||||
if(src.on)
|
||||
|
||||
@@ -50,11 +50,8 @@
|
||||
gib.viruses += viruus
|
||||
viruus.holder = gib
|
||||
|
||||
gib.blood_DNA = list()
|
||||
if(MobDNA)
|
||||
gib.blood_DNA[MobDNA.unique_enzymes] = MobDNA.blood_type
|
||||
else if(istype(src, /obj/effect/gibspawner/xeno))
|
||||
gib.blood_DNA["UNKNOWN DNA"] = "X*"
|
||||
else if(istype(src, /obj/effect/gibspawner/generic)) // Probably a monkey
|
||||
gib.blood_DNA["Non-human DNA"] = "A+"
|
||||
var/list/directions = gibdirections[i]
|
||||
|
||||
Reference in New Issue
Block a user