mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 20:16:55 +01:00
Meteor shielding improvements (#27996)
This commit is contained in:
@@ -29,8 +29,8 @@ GLOBAL_LIST_INIT(meteors_gore, list(/obj/effect/meteor/meaty = 5, /obj/effect/me
|
||||
while(!isspaceturf(pickedstart))
|
||||
var/startSide = pick(GLOB.cardinal)
|
||||
var/startZ = level_name_to_num(MAIN_STATION)
|
||||
pickedstart = spaceDebrisStartLoc(startSide, startZ)
|
||||
pickedgoal = spaceDebrisFinishLoc(startSide, startZ)
|
||||
pickedstart = pick_edge_loc(startSide, startZ)
|
||||
pickedgoal = pick_edge_loc(REVERSE_DIR(startSide), startZ)
|
||||
max_i--
|
||||
if(max_i <= 0)
|
||||
return
|
||||
@@ -38,41 +38,23 @@ GLOBAL_LIST_INIT(meteors_gore, list(/obj/effect/meteor/meaty = 5, /obj/effect/me
|
||||
var/obj/effect/meteor/M = new Me(pickedstart, pickedgoal)
|
||||
M.dest = pickedgoal
|
||||
|
||||
/proc/spaceDebrisStartLoc(startSide, Z)
|
||||
/proc/pick_edge_loc(startSide, Z)
|
||||
var/starty
|
||||
var/startx
|
||||
switch(startSide)
|
||||
if(NORTH)
|
||||
starty = world.maxy-(TRANSITIONEDGE + MAP_EDGE_PAD)
|
||||
startx = rand((TRANSITIONEDGE + MAP_EDGE_PAD), world.maxx-(TRANSITIONEDGE + MAP_EDGE_PAD))
|
||||
starty = world.maxy
|
||||
startx = rand(1, world.maxx)
|
||||
if(EAST)
|
||||
starty = rand((TRANSITIONEDGE + MAP_EDGE_PAD),world.maxy-(TRANSITIONEDGE + MAP_EDGE_PAD))
|
||||
startx = world.maxx-(TRANSITIONEDGE + MAP_EDGE_PAD)
|
||||
starty = rand(1, world.maxy)
|
||||
startx = world.maxx
|
||||
if(SOUTH)
|
||||
starty = (TRANSITIONEDGE + MAP_EDGE_PAD)
|
||||
startx = rand((TRANSITIONEDGE + MAP_EDGE_PAD), world.maxx-(TRANSITIONEDGE + MAP_EDGE_PAD))
|
||||
starty = 1
|
||||
startx = rand(1, world.maxx)
|
||||
if(WEST)
|
||||
starty = rand((TRANSITIONEDGE + MAP_EDGE_PAD), world.maxy-(TRANSITIONEDGE + MAP_EDGE_PAD))
|
||||
startx = (TRANSITIONEDGE + MAP_EDGE_PAD)
|
||||
. = locate(startx, starty, Z)
|
||||
|
||||
/proc/spaceDebrisFinishLoc(startSide, Z)
|
||||
var/endy
|
||||
var/endx
|
||||
switch(startSide)
|
||||
if(NORTH)
|
||||
endy = (TRANSITIONEDGE + MAP_EDGE_PAD)
|
||||
endx = rand((TRANSITIONEDGE + MAP_EDGE_PAD), world.maxx-(TRANSITIONEDGE + MAP_EDGE_PAD))
|
||||
if(EAST)
|
||||
endy = rand((TRANSITIONEDGE + MAP_EDGE_PAD), world.maxy-(TRANSITIONEDGE + MAP_EDGE_PAD))
|
||||
endx = (TRANSITIONEDGE + MAP_EDGE_PAD)
|
||||
if(SOUTH)
|
||||
endy = world.maxy-(TRANSITIONEDGE + MAP_EDGE_PAD)
|
||||
endx = rand((TRANSITIONEDGE + MAP_EDGE_PAD), world.maxx-(TRANSITIONEDGE + MAP_EDGE_PAD))
|
||||
if(WEST)
|
||||
endy = rand((TRANSITIONEDGE + MAP_EDGE_PAD),world.maxy-(TRANSITIONEDGE + MAP_EDGE_PAD))
|
||||
endx = world.maxx-(TRANSITIONEDGE + MAP_EDGE_PAD)
|
||||
. = locate(endx, endy, Z)
|
||||
starty = rand(1, world.maxy)
|
||||
startx = 1
|
||||
return locate(startx, starty, Z)
|
||||
|
||||
///////////////////////
|
||||
//The meteor effect
|
||||
@@ -96,7 +78,8 @@ GLOBAL_LIST_INIT(meteors_gore, list(/obj/effect/meteor/meaty = 5, /obj/effect/me
|
||||
var/list/meteordrop = list(/obj/item/stack/ore/iron)
|
||||
var/dropamt = 2
|
||||
|
||||
/obj/effect/meteor/Move()
|
||||
/obj/effect/meteor/Move(atom/newloc, direction, glide_size_override = 0, update_dir = TRUE)
|
||||
// Delete if we reach our goal or somehow leave the Z level.
|
||||
if(z != z_original || loc == dest)
|
||||
qdel(src)
|
||||
return FALSE
|
||||
@@ -119,6 +102,7 @@ GLOBAL_LIST_INIT(meteors_gore, list(/obj/effect/meteor/meaty = 5, /obj/effect/me
|
||||
|
||||
/obj/effect/meteor/Initialize(mapload, target)
|
||||
. = ..()
|
||||
ADD_TRAIT(src, TRAIT_NO_EDGE_TRANSITIONS, ROUNDSTART_TRAIT)
|
||||
z_original = z
|
||||
GLOB.meteor_list += src
|
||||
SpinAnimation()
|
||||
|
||||
Reference in New Issue
Block a user