Planes & Layers part 2: Plane Masters (#18749)

Part 2 of the PR series to bring /tg/'s and bay's plane masters to
Aurora, the lack of which is blocking several features we want.

This ports over the easier to understand Bay version of plane masters,
which is detailed in the relevant readme file in the code. Example
effect code for a warp effect is also in, which has been implemented for
gravity catapults.

Relies on #18741

---------

Signed-off-by: Matt Atlas <mattiathebest2000@hotmail.it>
Co-authored-by: Cody Brittain <cbrittain10@live.com>
Co-authored-by: Matt Atlas <mattiathebest2000@hotmail.it>
This commit is contained in:
Cody Brittain
2024-04-13 18:07:51 +00:00
committed by GitHub
co-authored by Cody Brittain Matt Atlas
parent bb03336315
commit c1d241594b
94 changed files with 927 additions and 182 deletions
+9
View File
@@ -77,3 +77,12 @@
/obj/effect/constructing_effect/proc/end()
qdel(src)
/// Example of a warp filter
/obj/effect/effect/warp
plane = WARP_EFFECT_PLANE
appearance_flags = PIXEL_SCALE
icon = 'icons/effects/352x352.dmi'
icon_state = "singularity_s11"
pixel_x = -176
pixel_y = -176
+2 -1
View File
@@ -15,7 +15,7 @@
icon='icons/effects/beam.dmi'
icon_state="b_beam"
blend_mode = BLEND_ADD
layer = EFFECTS_ABOVE_LIGHTING_LAYER
plane = EFFECTS_ABOVE_LIGHTING_PLANE
animate_movement = FALSE
var/tmp/atom/BeamSource
@@ -47,6 +47,7 @@
name = "bluespace"
icon = 'icons/turf/space.dmi'
icon_state = "bluespacify"
plane = EFFECTS_ABOVE_LIGHTING_PLANE
layer = SUPERMATTER_WALL_LAYER
/obj/effect/overlay/temp
+6
View File
@@ -477,6 +477,9 @@
SEND_SIGNAL(src, COMSIG_ITEM_DROPPED, user)
if(user && (z_flags & ZMM_MANGLE_PLANES))
addtimer(CALLBACK(user, /mob/proc/check_emissive_equipment), 0, TIMER_UNIQUE)
/obj/item/proc/remove_item_verbs(mob/user)
if(ismech(user)) //very snowflake, but necessary due to how mechs work
return
@@ -550,6 +553,9 @@
item_equipped_event.raise_event(src, user, slot)
SEND_SIGNAL(src, COMSIG_ITEM_REMOVE, src)
if(user && (z_flags & ZMM_MANGLE_PLANES))
addtimer(CALLBACK(user, /mob/proc/check_emissive_equipment), 0, TIMER_UNIQUE)
//sometimes we only want to grant the item's action if it's equipped in a specific slot.
/obj/item/proc/item_action_slot_check(mob/user, slot)
return TRUE
@@ -29,6 +29,7 @@ pixel_x = 8;
canhear_range = 2
atom_flags = ATOM_FLAG_NO_BLOOD
obj_flags = OBJ_FLAG_MOVES_UNSUPPORTED | OBJ_FLAG_CONDUCTABLE
z_flags = ZMM_MANGLE_PLANES
var/number = 0
var/obj/machinery/abstract/intercom_listener/power_interface
var/global/list/screen_overlays
@@ -140,7 +140,7 @@
icon_state = "white"
anchored = TRUE
simulated = FALSE
layer = EFFECTS_ABOVE_LIGHTING_LAYER
plane = EFFECTS_ABOVE_LIGHTING_PLANE
alpha = 100
var/datum/weakref/source
@@ -159,7 +159,7 @@
return
cut_overlays()
var/mutable_appearance/MA = new(I)
MA.layer = EFFECTS_ABOVE_LIGHTING_LAYER
MA.plane = EFFECTS_ABOVE_LIGHTING_PLANE
MA.appearance_flags = RESET_ALPHA
MA.alpha = 170
MA.pixel_x = 0
@@ -95,6 +95,7 @@
. = overlay_cache[scanned]
else
var/image/I = image(scanned.icon, scanned.loc, scanned.icon_state, UNDER_HUD_LAYER, scanned.dir)
I.plane = HUD_PLANE
//Pipes are special
if(istype(scanned, /obj/machinery/atmospherics/pipe))
+2 -1
View File
@@ -50,10 +50,11 @@
icon_state = "starprojection"
mouse_opacity = TRUE
duration = 30 SECONDS
layer = EFFECTS_ABOVE_LIGHTING_LAYER
plane = EFFECTS_ABOVE_LIGHTING_PLANE
light_power = 1
light_range = 1
light_color = LIGHT_COLOR_HALOGEN
z_flags = ZMM_MANGLE_PLANES
var/global/image/glow_state
/obj/effect/temp_visual/constellation/Initialize()
+2 -1
View File
@@ -304,7 +304,8 @@
update_icon()
/obj/item/weldingtool/use_tool(atom/target, mob/living/user, delay, amount, volume, datum/callback/extra_checks)
var/image/welding_sparks = image('icons/effects/effects.dmi', welding_state, EFFECTS_ABOVE_LIGHTING_LAYER)
var/image/welding_sparks = image('icons/effects/effects.dmi', welding_state)
welding_sparks.plane = EFFECTS_ABOVE_LIGHTING_PLANE
target.add_overlay(welding_sparks)
. = ..()
target.cut_overlay(welding_sparks)
+1 -1
View File
@@ -51,7 +51,7 @@
/obj/effect/overlay/street_light
icon = 'icons/obj/structure/urban/poles.dmi'
icon_state = "street_light"
layer = EFFECTS_ABOVE_LIGHTING_LAYER
plane = EFFECTS_ABOVE_LIGHTING_PLANE
/obj/effect/overlay/street_light/classic
icon_state = "classic_lamp_light"