mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
122 lines
3.4 KiB
Plaintext
122 lines
3.4 KiB
Plaintext
//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
|
|
|
|
/*
|
|
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/list/affecting_z)
|
|
var/numbers = 1
|
|
var/dust_type = /obj/effect/space_dust
|
|
switch(strength)
|
|
if("weak")
|
|
numbers = rand(2,4)
|
|
dust_type = /obj/effect/space_dust/weak
|
|
if("norm")
|
|
numbers = rand(5,10)
|
|
dust_type = /obj/effect/space_dust
|
|
if("strong")
|
|
numbers = rand(10,15)
|
|
dust_type = /obj/effect/space_dust/strong
|
|
if("super")
|
|
numbers = rand(15,25)
|
|
dust_type = /obj/effect/space_dust/super
|
|
|
|
var/startside = pick(cardinal)
|
|
for(var/i = 0 to numbers)
|
|
var/startx = 0
|
|
var/starty = 0
|
|
var/endy = 0
|
|
var/endx = 0
|
|
switch(startside)
|
|
if(NORTH)
|
|
starty = world.maxy-TRANSITIONEDGE-1
|
|
startx = rand(TRANSITIONEDGE+1, world.maxx-TRANSITIONEDGE-1)
|
|
endy = TRANSITIONEDGE
|
|
endx = rand(TRANSITIONEDGE+1, world.maxx-TRANSITIONEDGE-1)
|
|
if(EAST)
|
|
starty = rand(TRANSITIONEDGE+1, world.maxy-TRANSITIONEDGE-1)
|
|
startx = world.maxx-TRANSITIONEDGE-1
|
|
endy = rand(TRANSITIONEDGE, world.maxy-TRANSITIONEDGE)
|
|
endx = TRANSITIONEDGE
|
|
if(SOUTH)
|
|
starty = TRANSITIONEDGE+1
|
|
startx = rand(TRANSITIONEDGE+1, world.maxx-TRANSITIONEDGE-1)
|
|
endy = world.maxy-TRANSITIONEDGE
|
|
endx = rand(TRANSITIONEDGE, world.maxx-TRANSITIONEDGE)
|
|
if(WEST)
|
|
starty = rand(TRANSITIONEDGE+1, world.maxy-TRANSITIONEDGE-1)
|
|
startx = TRANSITIONEDGE+1
|
|
endy = rand(TRANSITIONEDGE, world.maxy-TRANSITIONEDGE)
|
|
endx = world.maxx-TRANSITIONEDGE
|
|
|
|
if(!affecting_z.len)
|
|
return
|
|
var/randomz = pick(affecting_z)
|
|
var/turf/startloc = locate(startx, starty, randomz)
|
|
var/turf/endloc = locate(endx, endy, randomz)
|
|
var/obj/effect/space_dust/D = new dust_type(startloc)
|
|
D.set_dir(GLOB.reverse_dir[startside])
|
|
walk_towards(D, endloc, 1)
|
|
|
|
/obj/effect/space_dust
|
|
name = "Space Dust"
|
|
desc = "Dust in space."
|
|
icon = 'icons/obj/meteor.dmi'
|
|
icon_state = "space_dust"
|
|
density = TRUE
|
|
anchored = TRUE
|
|
var/strength = 2 //ex_act severity number
|
|
var/life = 2 //how many things we hit before qdel(src)
|
|
|
|
/obj/effect/space_dust/weak
|
|
strength = 3
|
|
life = 1
|
|
|
|
/obj/effect/space_dust/strong
|
|
strength = 1
|
|
life = 6
|
|
|
|
/obj/effect/space_dust/super
|
|
strength = 1
|
|
life = 40
|
|
|
|
/obj/effect/space_dust/Destroy()
|
|
walk(src, 0) // Because we might have called walk_towards, we must stop the walk loop or BYOND keeps an internal reference to us forever.
|
|
return ..()
|
|
|
|
/obj/effect/space_dust/touch_map_edge()
|
|
qdel(src)
|
|
|
|
/obj/effect/space_dust/Bump(atom/A)
|
|
spawn(0)
|
|
if(prob(50))
|
|
for(var/mob/M in range(10, src))
|
|
if(!M.stat && !isAI(M))
|
|
shake_camera(M, 3, 1)
|
|
if (A)
|
|
playsound(src, 'sound/effects/meteorimpact.ogg', 40, 1)
|
|
|
|
if(ismob(A))
|
|
A.ex_act(strength)//This should work for now I guess
|
|
else if(!istype(A,/obj/machinery/power/emitter) && !istype(A,/obj/machinery/field_generator)) //Protect the singularity from getting released every round!
|
|
A.ex_act(strength) //Changing emitter/field gen ex_act would make it immune to bombs and C4
|
|
|
|
life--
|
|
if(life <= 0)
|
|
walk(src,0)
|
|
qdel(src)
|
|
return
|
|
return
|
|
|
|
|
|
/obj/effect/space_dust/Bumped(atom/A)
|
|
Bump(A)
|
|
return
|
|
|
|
/obj/effect/space_dust/ex_act(severity)
|
|
qdel(src)
|
|
return
|