mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-01-05 07:02:36 +00:00
119 lines
2.3 KiB
Plaintext
119 lines
2.3 KiB
Plaintext
/*
|
|
Space dust
|
|
Commonish random event that causes small clumps of "space dust" to hit the station at high speeds.
|
|
No command report on the common version of this event.
|
|
The "dust" will damage the hull of the station causin minor hull breaches.
|
|
*/
|
|
|
|
/proc/dust_swarm(var/strength = "weak")
|
|
var/numbers = 1
|
|
switch(strength)
|
|
if("weak")
|
|
numbers = rand(2,4)
|
|
for(var/i = 0 to numbers)
|
|
new/obj/effect/space_dust/weak()
|
|
if("norm")
|
|
numbers = rand(5,10)
|
|
for(var/i = 0 to numbers)
|
|
new/obj/effect/space_dust()
|
|
if("strong")
|
|
numbers = rand(10,15)
|
|
for(var/i = 0 to numbers)
|
|
new/obj/effect/space_dust/strong()
|
|
if("super")
|
|
numbers = rand(15,25)
|
|
for(var/i = 0 to numbers)
|
|
new/obj/effect/space_dust/super()
|
|
return
|
|
|
|
|
|
/obj/effect/space_dust
|
|
name = "Space Dust"
|
|
desc = "Dust in space."
|
|
icon = 'meteor.dmi'
|
|
icon_state = "space_dust"
|
|
density = 1
|
|
anchored = 1
|
|
var
|
|
strength = 2 //ex_act severity number
|
|
life = 2 //how many things we hit before del(src)
|
|
|
|
weak
|
|
strength = 3
|
|
life = 1
|
|
|
|
strong
|
|
strength = 1
|
|
life = 6
|
|
|
|
super
|
|
strength = 1
|
|
life = 40
|
|
|
|
|
|
New()
|
|
var/startx = 0
|
|
var/starty = 0
|
|
var/endy = 0
|
|
var/endx = 0
|
|
var/startside = pick(cardinal)
|
|
|
|
switch(startside)
|
|
if(NORTH)
|
|
starty = world.maxy-1
|
|
startx = rand(1, world.maxx-1)
|
|
endy = 1
|
|
endx = rand(1, world.maxx-1)
|
|
if(EAST)
|
|
starty = rand(1,world.maxy-1)
|
|
startx = world.maxx-1
|
|
endy = rand(1, world.maxy-1)
|
|
endx = 1
|
|
if(SOUTH)
|
|
starty = 1
|
|
startx = rand(1, world.maxx-1)
|
|
endy = world.maxy-1
|
|
endx = rand(1, world.maxx-1)
|
|
if(WEST)
|
|
starty = rand(1, world.maxy-1)
|
|
startx = 1
|
|
endy = rand(1,world.maxy-1)
|
|
endx = world.maxx-1
|
|
var/goal = locate(endx, endy, 1)
|
|
src.x = startx
|
|
src.y = starty
|
|
src.z = 1
|
|
spawn(0)
|
|
walk_towards(src, goal, 1)
|
|
return
|
|
|
|
|
|
Bump(atom/A)
|
|
spawn(0)
|
|
if(prob(50))
|
|
for(var/mob/M in range(10, src))
|
|
if(!M.stat && !istype(M, /mob/living/silicon/ai))
|
|
shake_camera(M, 3, 1)
|
|
if (A)
|
|
playsound(src.loc, 'meteorimpact.ogg', 40, 1)
|
|
if(ismob(A))
|
|
A.meteorhit(src)//This should work for now I guess
|
|
else
|
|
A.ex_act(strength)
|
|
life--
|
|
if(life <= 0)
|
|
walk(src,0)
|
|
spawn(1)
|
|
del(src)
|
|
return 0
|
|
return
|
|
|
|
|
|
Bumped(atom/A)
|
|
Bump(A)
|
|
return
|
|
|
|
|
|
ex_act(severity)
|
|
del(src)
|
|
return |