Meteor shielding improvements (#27996)

This commit is contained in:
Charlie Nolan
2025-01-21 12:18:10 +00:00
committed by GitHub
parent 8b817aa075
commit 06bfd9b380
7 changed files with 39 additions and 69 deletions
+6 -30
View File
@@ -32,40 +32,16 @@
strength = 1
life = 40
/obj/effect/space_dust/New()
/obj/effect/space_dust/Initialize(mapload)
. = ..()
var/startx = 0
var/starty = 0
var/endy = 0
var/endx = 0
ADD_TRAIT(src, TRAIT_NO_EDGE_TRANSITIONS, ROUNDSTART_TRAIT)
var/startside = pick(GLOB.cardinal)
GLOB.meteor_list += src
switch(startside)
if(NORTH)
starty = world.maxy-(TRANSITIONEDGE+1)
startx = rand((TRANSITIONEDGE+1), world.maxx-(TRANSITIONEDGE+1))
endy = TRANSITIONEDGE
endx = rand(TRANSITIONEDGE, world.maxx-TRANSITIONEDGE)
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
goal = locate(endx, endy, 1)
src.x = startx
src.y = starty
src.z = level_name_to_num(MAIN_STATION)
var/turf/start = pick_edge_loc(startside, level_name_to_num(MAIN_STATION))
forceMove(start)
goal = pick_edge_loc(REVERSE_DIR(startside), level_name_to_num(MAIN_STATION))
walk_towards(src, goal, 1)
/obj/effect/space_dust/Bump(atom/A)
+2 -2
View File
@@ -15,8 +15,8 @@ In my current plan for it, 'solid' will be defined as anything with density == 1
/datum/event/immovable_rod/start()
var/startside = pick(GLOB.cardinal)
var/turf/startT = spaceDebrisStartLoc(startside, level_name_to_num(MAIN_STATION))
var/turf/endT = spaceDebrisFinishLoc(startside, level_name_to_num(MAIN_STATION))
var/turf/startT = pick_edge_loc(startside, level_name_to_num(MAIN_STATION))
var/turf/endT = pick_edge_loc(REVERSE_DIR(startside), level_name_to_num(MAIN_STATION))
new /obj/effect/immovablerod/event(startT, endT)
/obj/effect/immovablerod
+6 -4
View File
@@ -110,12 +110,13 @@
data["satellites"] = list()
for(var/obj/machinery/satellite/S in GLOB.machines)
var/turf/T = get_turf(S)
data["satellites"] += list(list(
"id" = S.id,
"active" = S.active,
"mode" = S.mode,
"x" = S.x,
"y" = S.y
"x" = T.x,
"y" = T.y
))
update_notice()
data["notice"] = notice
@@ -276,8 +277,9 @@
continue
if(get_dist(M, src) > kill_range)
continue
if(!emagged && space_los(M))
if(!istype(M, /obj/effect/meteor/fake))
var/is_fake = istype(M, /obj/effect/meteor/fake)
if((!emagged || is_fake) && space_los(M))
if(!is_fake)
Beam(get_turf(M), icon_state = "sat_beam", time = 5, maxdistance = kill_range)
if(istype(M, /obj/effect/space_dust/meaty))
new /obj/item/food/meatsteak(get_turf(M))