Horizon area sprites + shield-less exterior area (#22594)

Fills in a lot of the blanks in the area icon states on the Horizon with
new sprites. Looks neater in SDMM.

Adds a new exterior/no_shields area, which is exclusively used for the
wings and around the starboard thrusters, around which shields will not
generate. This is pulled off in what I hope is a non-demanding way. This
is used to resolve that funny issue with starboard propulsion's wide
arcing shield, and to force shields on D3 to be taut to the walls.

The regular exterior area is retained wherever we want there to be
shields around EVA catwalks.

<img width="1080" height="1080" alt="image"
src="https://github.com/user-attachments/assets/4826b32f-34e2-44ab-b0be-f9fee9622fc8"
/>

<img width="1056" height="896" alt="image"
src="https://github.com/user-attachments/assets/cde72fa6-41eb-4c2a-b843-9959359ca505"
/>
This commit is contained in:
hazelrat
2026-06-07 20:01:03 +00:00
committed by GitHub
parent 809cd63eb8
commit 37698ded3d
13 changed files with 4661 additions and 4465 deletions
@@ -30,15 +30,15 @@
for (var/tt in RANGE_TURFS(field_radius, gen_turf))
T = tt
// Ignore station areas.
if (GLOB.the_station_areas[T.loc] || is_shuttle_area(T.loc))
if ((GLOB.the_station_areas[T.loc] && !is_shieldless_exterior(T.loc)) || is_shuttle_area(T.loc))
continue
else if (istype(T, /turf/space) || istype(T, /turf/simulated/floor/exoplanet/asteroid) || isopenturf(T) || istype(T, /turf/simulated/floor/reinforced))
else if (istype(T, /turf/space) || isopenturf(T) || istype(T, /turf/simulated/floor/reinforced))
for (var/uu in RANGE_TURFS(1, T))
U = uu
if (T == U)
continue
if (GLOB.the_station_areas[U.loc] || istype(U, /turf/simulated/mineral/surface))
if (GLOB.the_station_areas[U.loc] && !is_shieldless_exterior(U.loc))
out += T
break
@@ -52,19 +52,21 @@
if(below)
for(var/turf/z as anything in below)
connected_levels += z
for(var/turf/z in connected_levels)
for (var/tt in RANGE_TURFS(field_radius, z))
T = tt
// Ignore station areas.
if (GLOB.the_station_areas[T.loc] || istype(T.loc, /area/shuttle))
if ((GLOB.the_station_areas[T.loc] && !is_shieldless_exterior(T.loc)) || istype(T.loc, /area/shuttle))
continue
else if (istype(T, /turf/space) || istype(T, /turf/simulated/floor/exoplanet/asteroid) || isopenturf(T) || istype(T, /turf/simulated/floor/reinforced))
else if (istype(T, /turf/space) || isopenturf(T) || istype(T, /turf/simulated/floor/reinforced))
for (var/uu in RANGE_TURFS(1, T))
U = uu
if (T == U)
continue
if (GLOB.the_station_areas[U.loc])
if (GLOB.the_station_areas[U.loc] && !is_shieldless_exterior(U.loc))
out += T
break
return out
@@ -1,6 +1,7 @@
// Used for creating the exchange areas.
/area/turbolift
name = "Turbolift"
icon_state = "turbolift"
base_turf = /turf/simulated/open
requires_power = 0
station_area = TRUE