mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-29 07:59:01 +01:00
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:
co-authored by
Cody Brittain
Matt Atlas
parent
bb03336315
commit
c1d241594b
@@ -90,8 +90,8 @@
|
||||
/obj/machinery/atmospherics/unary/vent_pump/Initialize(mapload)
|
||||
if(mapload)
|
||||
var/turf/T = loc
|
||||
var/image/I = image(icon, T, icon_state, EFFECTS_ABOVE_LIGHTING_LAYER, dir, pixel_x, pixel_y)
|
||||
I.plane = 0
|
||||
var/image/I = image(icon, T, icon_state, dir, pixel_x, pixel_y)
|
||||
I.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
I.color = color
|
||||
I.alpha = 125
|
||||
LAZYADD(T.blueprints, I)
|
||||
|
||||
@@ -40,8 +40,8 @@
|
||||
/obj/machinery/atmospherics/unary/vent_scrubber/Initialize(mapload)
|
||||
if(mapload)
|
||||
var/turf/T = loc
|
||||
var/image/I = image(icon, T, icon_state, EFFECTS_ABOVE_LIGHTING_LAYER, dir, pixel_x, pixel_y)
|
||||
I.plane = 0
|
||||
var/image/I = image(icon, T, icon_state, dir, pixel_x, pixel_y)
|
||||
I.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
I.color = color
|
||||
I.alpha = 125
|
||||
LAZYADD(T.blueprints, I)
|
||||
|
||||
@@ -177,8 +177,8 @@
|
||||
/obj/machinery/atmospherics/pipe/simple/Initialize(mapload)
|
||||
if(mapload)
|
||||
var/turf/T = loc
|
||||
var/image/I = image(icon, T, icon_state, EFFECTS_ABOVE_LIGHTING_LAYER, dir, pixel_x, pixel_y)
|
||||
I.plane = 0
|
||||
var/image/I = image(icon, T, icon_state, dir, pixel_x, pixel_y)
|
||||
I.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
I.color = color
|
||||
I.alpha = 125
|
||||
LAZYADD(T.blueprints, I)
|
||||
@@ -493,8 +493,8 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold/Initialize(mapload)
|
||||
if(mapload)
|
||||
var/turf/T = loc
|
||||
var/image/I = image(icon, T, icon_state, EFFECTS_ABOVE_LIGHTING_LAYER, dir, pixel_x, pixel_y)
|
||||
I.plane = 0
|
||||
var/image/I = image(icon, T, icon_state, dir, pixel_x, pixel_y)
|
||||
I.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
I.color = color
|
||||
I.alpha = 125
|
||||
LAZYADD(T.blueprints, I)
|
||||
@@ -813,8 +813,8 @@
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/Initialize(mapload)
|
||||
if(mapload)
|
||||
var/turf/T = loc
|
||||
var/image/I = image(icon, T, icon_state, EFFECTS_ABOVE_LIGHTING_LAYER, dir, pixel_x, pixel_y)
|
||||
I.plane = 0
|
||||
var/image/I = image(icon, T, icon_state, dir, pixel_x, pixel_y)
|
||||
I.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
I.color = color
|
||||
I.alpha = 125
|
||||
LAZYADD(T.blueprints, I)
|
||||
|
||||
@@ -298,6 +298,7 @@ var/list/preferences_datums = list()
|
||||
client.screen |= O
|
||||
O.appearance = MA
|
||||
O.dir = D
|
||||
O.plane = HUD_PLANE
|
||||
var/list/screen_locs = preview_screen_locs["[D]"]
|
||||
var/screen_x = screen_locs[1]
|
||||
var/screen_x_minor = screen_locs[2]
|
||||
|
||||
@@ -1303,7 +1303,7 @@
|
||||
icon = 'icons/clothing/accessories/led_collar.dmi'
|
||||
icon_state = "led_collar"
|
||||
item_state = "led_collar"
|
||||
layer = EFFECTS_ABOVE_LIGHTING_LAYER
|
||||
plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
contained_sprite = TRUE
|
||||
slot = ACCESSORY_SLOT_UTILITY_MINOR
|
||||
|
||||
@@ -1321,6 +1321,6 @@
|
||||
|
||||
/obj/item/clothing/accessory/led_collar/get_accessory_mob_overlay(var/mob/living/carbon/human/H, var/force = FALSE)
|
||||
var/image/I = ..()
|
||||
I.layer = EFFECTS_ABOVE_LIGHTING_LAYER
|
||||
I.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
I.appearance_flags |= KEEP_APART
|
||||
return I
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
compass_heading_marker.maptext = "<center><font color = '#00ffffff' size = 2><b>△</b></font></center>"
|
||||
compass_heading_marker.filters = filter(type="drop_shadow", color = "#00ffffaa", size = 2, offset = 1,x = 0, y = 0)
|
||||
compass_heading_marker.layer = UNDER_HUD_LAYER
|
||||
compass_heading_marker.plane = HUD_PLANE
|
||||
|
||||
for(var/i in 0 to (360/(COMPASS_PERIOD))-1)
|
||||
var/image/I = new /image/compass_marker
|
||||
@@ -54,6 +55,7 @@
|
||||
I.transform = M
|
||||
I.filters = filter(type="drop_shadow", color = "#77777777", size = 2, offset = 1,x = 0, y = 0)
|
||||
I.layer = UNDER_HUD_LAYER
|
||||
I.plane = HUD_PLANE
|
||||
LAZYADD(compass_static_labels, I)
|
||||
|
||||
rebuild_overlay_lists(TRUE)
|
||||
|
||||
@@ -56,7 +56,8 @@
|
||||
icon_state = "ovenopen"
|
||||
cut_overlays()
|
||||
if (!stat)
|
||||
var/glow = image('icons/obj/machinery/cooking_machines.dmi', "oven_on", EFFECTS_ABOVE_LIGHTING_LAYER)
|
||||
var/image/glow = image('icons/obj/machinery/cooking_machines.dmi', "oven_on")
|
||||
glow.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
add_overlay(glow)
|
||||
..()
|
||||
|
||||
|
||||
@@ -41,12 +41,12 @@
|
||||
set_light(FALSE)
|
||||
return
|
||||
|
||||
var/mutable_appearance/screen_overlay = mutable_appearance(icon, "atm-active", EFFECTS_ABOVE_LIGHTING_LAYER)
|
||||
var/mutable_appearance/screen_overlay = mutable_appearance(icon, "atm-active", plane = EFFECTS_ABOVE_LIGHTING_PLANE)
|
||||
add_overlay(screen_overlay)
|
||||
set_light(1.4, 1, COLOR_CYAN)
|
||||
|
||||
if(held_card)
|
||||
var/mutable_appearance/card_overlay = mutable_appearance(icon, "atm-cardin", EFFECTS_ABOVE_LIGHTING_LAYER)
|
||||
var/mutable_appearance/card_overlay = mutable_appearance(icon, "atm-cardin", plane = EFFECTS_ABOVE_LIGHTING_PLANE)
|
||||
add_overlay(card_overlay)
|
||||
|
||||
/obj/machinery/atm/process()
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
set_light(FALSE)
|
||||
return
|
||||
|
||||
var/mutable_appearance/screen_overlay = mutable_appearance(icon, "kitchenterminal-active", EFFECTS_ABOVE_LIGHTING_LAYER)
|
||||
var/mutable_appearance/screen_overlay = mutable_appearance(icon, "kitchenterminal-active", plane = EFFECTS_ABOVE_LIGHTING_PLANE)
|
||||
add_overlay(screen_overlay)
|
||||
set_light(1.4, 1, COLOR_CYAN)
|
||||
|
||||
|
||||
@@ -6,3 +6,4 @@
|
||||
simulated = FALSE
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
layer = UNDER_HUD_LAYER
|
||||
plane = HUD_PLANE
|
||||
|
||||
@@ -244,6 +244,57 @@
|
||||
origin_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 4, TECH_MAGNET = 4)
|
||||
require_adjacent = FALSE
|
||||
|
||||
///For when targetting a single object, will create a warp beam
|
||||
var/datum/beam = null
|
||||
var/max_dist = 6
|
||||
var/obj/effect/effect/warp/small/warpeffect = null
|
||||
|
||||
/obj/effect/ebeam/warp
|
||||
plane = WARP_EFFECT_PLANE
|
||||
appearance_flags = DEFAULT_APPEARANCE_FLAGS | TILE_BOUND | NO_CLIENT_COLOR
|
||||
z_flags = ZMM_IGNORE
|
||||
|
||||
/obj/effect/effect/warp/small
|
||||
plane = WARP_EFFECT_PLANE
|
||||
appearance_flags = PIXEL_SCALE | NO_CLIENT_COLOR
|
||||
icon = 'icons/effects/96x96.dmi'
|
||||
icon_state = "singularity_s3"
|
||||
pixel_x = -32
|
||||
pixel_y = -32
|
||||
z_flags = ZMM_IGNORE
|
||||
|
||||
/obj/item/mecha_equipment/catapult/proc/beamdestroyed()
|
||||
if(beam)
|
||||
GLOB.destroyed_event.unregister(beam, src, .proc/beamdestroyed)
|
||||
beam = null
|
||||
if(locked)
|
||||
if(owner)
|
||||
for(var/pilot in owner.pilots)
|
||||
to_chat(pilot, SPAN_NOTICE("Lock on \the [locked] disengaged."))
|
||||
endanimation()
|
||||
locked = null
|
||||
//It's possible beam self destroyed, match active
|
||||
if(active)
|
||||
deactivate()
|
||||
|
||||
/obj/item/mecha_equipment/catapult/proc/endanimation()
|
||||
if(locked)
|
||||
animate(locked,pixel_y= initial(locked.pixel_y), time = 0)
|
||||
|
||||
/obj/item/mecha_equipment/catapult/get_hardpoint_maptext()
|
||||
var/string
|
||||
if(locked)
|
||||
string = locked.name + " - "
|
||||
if(mode == 1)
|
||||
string += "Pull"
|
||||
else string += "Push"
|
||||
return string
|
||||
|
||||
/obj/item/mecha_equipment/catapult/deactivate()
|
||||
. = ..()
|
||||
if(beam)
|
||||
QDEL_NULL(beam)
|
||||
|
||||
/obj/item/mecha_equipment/catapult/attack_self(var/mob/user)
|
||||
. = ..()
|
||||
if(.)
|
||||
@@ -264,18 +315,40 @@
|
||||
to_chat(user, SPAN_NOTICE("Unable to lock on [target]."))
|
||||
return
|
||||
locked = AM
|
||||
beam = owner.Beam(BeamTarget = target, icon_state = "r_beam", maxdistance = max_dist, beam_type = /obj/effect/ebeam/warp)
|
||||
GLOB.destroyed_event.register(beam, src, .proc/beamdestroyed)
|
||||
|
||||
animate(target,pixel_y= initial(target.pixel_y) - 2,time=1 SECOND, easing = SINE_EASING, flags = ANIMATION_PARALLEL, loop = -1)
|
||||
animate(pixel_y= initial(target.pixel_y) + 2,time=1 SECOND)
|
||||
|
||||
active=TRUE
|
||||
to_chat(user, SPAN_NOTICE("Locked onto \the [AM]."))
|
||||
return
|
||||
else if(target != locked)
|
||||
if(locked in view(owner))
|
||||
INVOKE_ASYNC(locked, TYPE_PROC_REF(/atom/movable, throw_at), target, 14, 1.5, owner)
|
||||
log_and_message_admins("used [src] to throw [locked] at [target].", user, owner.loc)
|
||||
endanimation()
|
||||
locked = null
|
||||
deactivate()
|
||||
owner.use_cell_power(active_power_use * CELLRATE)
|
||||
else
|
||||
locked = null
|
||||
to_chat(user, SPAN_NOTICE("Lock on \the [locked] disengaged."))
|
||||
deactivate()
|
||||
if(CATAPULT_AREA)
|
||||
if(!warpeffect)
|
||||
warpeffect = new
|
||||
warpeffect.forceMove(get_turf(target))
|
||||
var/matrix/start = matrix()
|
||||
start.Scale(0)
|
||||
var/matrix/end= matrix()
|
||||
end.Scale(1)
|
||||
warpeffect.alpha = 255
|
||||
warpeffect.transform = start
|
||||
animate(warpeffect,transform = end, alpha = 0, time= 1.25 SECONDS)
|
||||
addtimer(CALLBACK(warpeffect, /atom/movable/proc/forceMove, null), 1.25 SECONDS)
|
||||
|
||||
var/list/atoms = list()
|
||||
if(isturf(target))
|
||||
atoms = range(target,3)
|
||||
|
||||
@@ -90,14 +90,14 @@
|
||||
name = "\proper space"
|
||||
icon_state = "0"
|
||||
footstep_sound = null
|
||||
plane = PLANE_SPACE_BACKGROUND
|
||||
plane = SPACE_PLANE
|
||||
dynamic_lighting = 0
|
||||
|
||||
/turf/simulated/floor/holofloor/space/Initialize()
|
||||
. = ..()
|
||||
icon_state = "[((x + y) ^ ~(x * y) + z) % 25]"
|
||||
var/image/I = image('icons/turf/space_parallax1.dmi',"[icon_state]")
|
||||
I.plane = PLANE_SPACE_DUST
|
||||
I.plane = DUST_PLANE
|
||||
I.alpha = 80
|
||||
I.blend_mode = BLEND_ADD
|
||||
add_overlay(I)
|
||||
|
||||
@@ -6,9 +6,10 @@
|
||||
color = LIGHTING_BASE_MATRIX
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
layer = LIGHTING_LAYER
|
||||
plane = LIGHTING_PLANE
|
||||
invisibility = INVISIBILITY_LIGHTING
|
||||
simulated = 0
|
||||
blend_mode = BLEND_MULTIPLY
|
||||
blend_mode = BLEND_OVERLAY
|
||||
appearance_flags = NO_CLIENT_COLOR
|
||||
|
||||
var/needs_update = FALSE
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
/obj/machinery/mineral/processing_unit_console/Initialize(mapload, d, populate_components)
|
||||
. = ..()
|
||||
var/mutable_appearance/screen_overlay = mutable_appearance(icon, "production_console-screen", EFFECTS_ABOVE_LIGHTING_LAYER)
|
||||
var/mutable_appearance/screen_overlay = mutable_appearance(icon, "production_console-screen", plane = EFFECTS_ABOVE_LIGHTING_PLANE)
|
||||
add_overlay(screen_overlay)
|
||||
set_light(1.4, 1, COLOR_CYAN)
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
/obj/machinery/mineral/stacking_unit_console/Initialize(mapload, d, populate_components)
|
||||
..()
|
||||
var/mutable_appearance/screen_overlay = mutable_appearance(icon, "production_console-screen", EFFECTS_ABOVE_LIGHTING_LAYER)
|
||||
var/mutable_appearance/screen_overlay = mutable_appearance(icon, "production_console-screen", plane = EFFECTS_ABOVE_LIGHTING_PLANE)
|
||||
add_overlay(screen_overlay)
|
||||
set_light(1.4, 1, COLOR_CYAN)
|
||||
return INITIALIZE_HINT_LATELOAD
|
||||
|
||||
@@ -125,6 +125,7 @@
|
||||
ore_ping.pixel_x = rand(-6, 6)
|
||||
ore_ping.pixel_y = rand(-6, 6)
|
||||
ore_ping.alpha = rand(180, 255)
|
||||
ore_ping.plane = HUD_PLANE
|
||||
pixel_shift_to_turf(ore_ping, our_turf, turf)
|
||||
if(M.client)
|
||||
M.client.images += ore_ping
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
/mob/abstract/new_player
|
||||
var/client/my_client // Need to keep track of this ourselves, since by the time Logout() is called the client has already been nulled
|
||||
|
||||
/mob/abstract/new_player/LateLogin()
|
||||
..()
|
||||
|
||||
@@ -11,7 +8,6 @@
|
||||
mind.active = 1
|
||||
mind.current = src
|
||||
|
||||
my_client = client
|
||||
set_sight(BLIND)
|
||||
GLOB.player_list |= src
|
||||
|
||||
|
||||
@@ -2,10 +2,6 @@
|
||||
ready = FALSE
|
||||
SSticker.update_ready_list(src)
|
||||
|
||||
// see login.dm
|
||||
if(my_client)
|
||||
my_client = null
|
||||
|
||||
..()
|
||||
if(!spawning)//Here so that if they are spawning and log out, the other procs can play out and they will have a mob to come back to.
|
||||
key = null//We null their key before deleting the mob, so they are properly kicked out.
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "It's a g-g-g-g-ghooooost!" //jinkies!
|
||||
icon = 'icons/mob/mob.dmi'
|
||||
icon_state = "ghost"
|
||||
layer = OBSERVER_LAYER
|
||||
layer = OBSERVER_PLANE
|
||||
stat = DEAD
|
||||
density = 0
|
||||
canmove = 0
|
||||
|
||||
@@ -101,7 +101,7 @@ var/list/floating_chat_colors = list()
|
||||
var/image/I = image(null, attached_holder, layer = FLY_LAYER)
|
||||
I.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA | KEEP_APART | PIXEL_SCALE
|
||||
|
||||
I.plane = FLOAT_PLANE
|
||||
I.plane = HUD_PLANE
|
||||
I.layer = UNDER_HUD_LAYER
|
||||
I.pixel_x = (-round(I.maptext_width/2) + 16) + attached_holder.get_floating_chat_x_offset()
|
||||
I.appearance_flags = RESET_COLOR|RESET_ALPHA|RESET_TRANSFORM
|
||||
|
||||
@@ -90,10 +90,12 @@ There are several things that need to be remembered:
|
||||
#define GET_TAIL_LAYER (dir == NORTH ? TAIL_NORTH_LAYER : TAIL_SOUTH_LAYER)
|
||||
#define GET_TAIL_ACC_LAYER (dir == NORTH ? TAIL_NORTH_ACC_LAYER : TAIL_SOUTH_ACC_LAYER)
|
||||
|
||||
/proc/overlay_image(icon, icon_state,color, flags, layer)
|
||||
/proc/overlay_image(icon, icon_state,color, flags, plane, layer)
|
||||
var/image/ret = image(icon,icon_state)
|
||||
ret.color = color
|
||||
ret.appearance_flags = PIXEL_SCALE | flags
|
||||
if(plane)
|
||||
ret.plane = plane
|
||||
if(layer)
|
||||
ret.layer = layer
|
||||
return ret
|
||||
|
||||
@@ -31,9 +31,9 @@
|
||||
var/mutable_appearance/panel_overlay = mutable_appearance(icon, "[icon_state]-panel")
|
||||
add_overlay(panel_overlay)
|
||||
if(length(extract_slimes))
|
||||
var/mutable_appearance/interior_overlay = mutable_appearance(icon, "[icon_state]-interior", EFFECTS_ABOVE_LIGHTING_LAYER)
|
||||
var/mutable_appearance/interior_overlay = mutable_appearance(icon, "[icon_state]-interior", plane = EFFECTS_ABOVE_LIGHTING_PLANE)
|
||||
add_overlay(interior_overlay)
|
||||
var/mutable_appearance/spinning_overlay = mutable_appearance(icon, "[icon_state]-running", EFFECTS_ABOVE_LIGHTING_LAYER)
|
||||
var/mutable_appearance/spinning_overlay = mutable_appearance(icon, "[icon_state]-running", plane = EFFECTS_ABOVE_LIGHTING_PLANE)
|
||||
add_overlay(spinning_overlay)
|
||||
set_light(2.5, 1, COLOR_VIOLET)
|
||||
else
|
||||
|
||||
@@ -31,23 +31,24 @@
|
||||
/mob/living/silicon/robot/proc/setup_eye_cache()
|
||||
if(!module_sprites?[icontype]?[ROBOT_EYES])
|
||||
return
|
||||
var/eye_layer = src.layer
|
||||
var/eye_plane = src.plane
|
||||
if(lights_on && layer == MOB_LAYER) // in case you're hiding. so eyes don't go through tables.
|
||||
eye_layer = EFFECTS_ABOVE_LIGHTING_LAYER //make them glow in the dark if the lamp is on
|
||||
eye_plane = EFFECTS_ABOVE_LIGHTING_PLANE //make them glow in the dark if the lamp is on
|
||||
var/eyeprefix = module_sprites[icontype][ROBOT_EYES]
|
||||
if(speed == -2) // For combat drones with the mobility module.
|
||||
cached_eye_overlays = list(
|
||||
I_HELP = image(icon, "[eyeprefix]-roll-eyes_help", layer = eye_layer),
|
||||
I_HURT = image(icon, "[eyeprefix]-roll-eyes_harm", layer = eye_layer)
|
||||
I_HELP = image(icon, "[eyeprefix]-roll-eyes_help"),
|
||||
I_HURT = image(icon, "[eyeprefix]-roll-eyes_harm")
|
||||
)
|
||||
else
|
||||
cached_eye_overlays = list(
|
||||
I_HELP = image(icon, "[eyeprefix]-eyes_help", layer = eye_layer), //Changed so icontype goes in front. Helps with parsing in this godforsaken engine known as BYOND.
|
||||
I_HURT = image(icon, "[eyeprefix]-eyes_harm", layer = eye_layer)
|
||||
I_HELP = image(icon, "[eyeprefix]-eyes_help"), //Changed so icontype goes in front. Helps with parsing in this godforsaken engine known as BYOND.
|
||||
I_HURT = image(icon, "[eyeprefix]-eyes_harm")
|
||||
)
|
||||
if(eye_overlay)
|
||||
cut_overlay(eye_overlay)
|
||||
eye_overlay = cached_eye_overlays[a_intent]
|
||||
eye_overlay.plane = eye_plane
|
||||
add_overlay(eye_overlay)
|
||||
|
||||
/mob/living/silicon/robot/proc/setup_panel_cache()
|
||||
|
||||
@@ -121,11 +121,12 @@
|
||||
|
||||
/mob/living/simple_animal/construct/proc/add_glow()
|
||||
cut_overlays()
|
||||
var/overlay_layer = EFFECTS_ABOVE_LIGHTING_LAYER
|
||||
if(layer != MOB_LAYER)
|
||||
overlay_layer = TURF_LAYER + 0.2
|
||||
var/overlay_plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
|
||||
add_overlay(image(icon, "glow-[icon_state]", overlay_layer))
|
||||
var/image/glow = image(icon, "glow-[icon_state]")
|
||||
glow.plane = overlay_plane
|
||||
|
||||
add_overlay(glow)
|
||||
set_light(2, -2, l_color = COLOR_WHITE)
|
||||
|
||||
/mob/living/simple_animal/construct/Life()
|
||||
|
||||
@@ -49,7 +49,8 @@
|
||||
icon_state = pick("baseline_grey", "baseline_red", "baseline_green", "baseline_yellow")
|
||||
icon_dead = "[icon_state]_off"
|
||||
screen = pick("screen_blue", "screen_red", "screen_orange", "screen_lumi_eyes", "screen_goggles", "screen_console", "screen_static2", "screen_static3")
|
||||
screen_overlay = image('icons/mob/npc/ipc_zombie.dmi', "[screen]", EFFECTS_ABOVE_LIGHTING_LAYER)
|
||||
screen_overlay = image('icons/mob/npc/ipc_zombie.dmi', "[screen]")
|
||||
screen_overlay.plane = plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
screen_overlay.appearance_flags = KEEP_APART
|
||||
add_overlay(screen_overlay)
|
||||
set_light(MINIMUM_USEFUL_LIGHT_RANGE, 2, LIGHT_COLOR_TUNGSTEN)
|
||||
@@ -57,7 +58,8 @@
|
||||
/mob/living/simple_animal/hostile/ipc_zombie/update_icon()
|
||||
cut_overlays()
|
||||
if(screen && stat != DEAD)
|
||||
screen_overlay = image('icons/mob/npc/ipc_zombie.dmi', "[screen]", EFFECTS_ABOVE_LIGHTING_LAYER)
|
||||
screen_overlay = image('icons/mob/npc/ipc_zombie.dmi', "[screen]")
|
||||
screen_overlay.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
screen_overlay.appearance_flags = KEEP_APART
|
||||
add_overlay(screen_overlay)
|
||||
|
||||
|
||||
@@ -27,7 +27,8 @@
|
||||
/mob/living/simple_animal/hostile/rogue_drone/Initialize()
|
||||
. = ..()
|
||||
name = "[initial(name)] ([rand(100, 999)])"
|
||||
eye_overlay = image(icon, "[icon_state]-eyes_emag", layer = EFFECTS_ABOVE_LIGHTING_LAYER)
|
||||
eye_overlay = image(icon, "[icon_state]-eyes_emag")
|
||||
eye_overlay.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
eye_overlay.appearance_flags = KEEP_APART
|
||||
add_overlay(eye_overlay)
|
||||
|
||||
|
||||
@@ -177,7 +177,8 @@
|
||||
|
||||
/mob/living/simple_animal/hostile/carp/shark/reaver/eel/Initialize()
|
||||
. = ..()
|
||||
eye_overlay = image(icon, "eel_eyeglow", layer = EFFECTS_ABOVE_LIGHTING_LAYER)
|
||||
eye_overlay = image(icon, "eel_eyeglow")
|
||||
eye_overlay.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
eye_overlay.appearance_flags = KEEP_APART
|
||||
add_overlay(eye_overlay)
|
||||
set_light(MINIMUM_USEFUL_LIGHT_RANGE, 2, LIGHT_COLOR_TUNGSTEN)
|
||||
|
||||
@@ -25,6 +25,9 @@
|
||||
message_admins("<span class='warning'><B>Notice: </B></span><span class='notice'><A href='?src=\ref[usr];priv_msg=\ref[src]'>[key_name_admin(src)]</A> has the same [matches] as [key_name_admin(M)] (no longer logged in). </span>", 1)
|
||||
log_access("Notice: [key_name(src)] has the same [matches] as [key_name(M)] (no longer logged in).",ckey=key_name(src))
|
||||
|
||||
/mob
|
||||
var/client/my_client // Need to keep track of this ourselves, since by the time Logout() is called the client has already been nulled
|
||||
|
||||
/**
|
||||
* Currently marked as SHOULD_NOT_OVERRIDE.
|
||||
*
|
||||
@@ -73,6 +76,8 @@
|
||||
set_sight(sight|SEE_SELF)
|
||||
disconnect_time = null
|
||||
|
||||
my_client = client
|
||||
|
||||
player_age = client.player_age
|
||||
|
||||
if(loc && !isturf(loc))
|
||||
@@ -95,6 +100,7 @@
|
||||
clear_important_client_contents(client)
|
||||
enable_client_mobs_in_contents(client)
|
||||
|
||||
CreateRenderers()
|
||||
update_client_color()
|
||||
add_click_catcher()
|
||||
|
||||
|
||||
@@ -7,9 +7,12 @@
|
||||
disconnect_time = world.realtime
|
||||
log_access("Logout: [key_name(src)]",ckey=key_name(src))
|
||||
SSstatistics.update_status()
|
||||
RemoveRenderers()
|
||||
if(client)
|
||||
clear_important_client_contents(client)
|
||||
|
||||
my_client = null
|
||||
|
||||
if(admin_datums[src.ckey])
|
||||
var/datum/admins/A = admin_datums[src.ckey]
|
||||
if (A.rights & (R_MOD|R_ADMIN) && SSticker.current_state == GAME_STATE_PLAYING) //Only report this stuff if we are currently playing.
|
||||
|
||||
@@ -1452,6 +1452,16 @@
|
||||
|
||||
return WEATHER_EXPOSED
|
||||
|
||||
/mob/proc/check_emissive_equipment()
|
||||
var/old_zflags = z_flags
|
||||
z_flags &= ~ZMM_MANGLE_PLANES
|
||||
for(var/atom/movable/AM in get_equipped_items(TRUE))
|
||||
if(AM.z_flags & ZMM_MANGLE_PLANES)
|
||||
z_flags |= ZMM_MANGLE_PLANES
|
||||
break
|
||||
if(old_zflags != z_flags)
|
||||
UPDATE_OO_IF_PRESENT
|
||||
|
||||
#undef UNBUCKLED
|
||||
#undef PARTIALLY_BUCKLED
|
||||
#undef FULLY_BUCKLED
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
name = "open space"
|
||||
icon = 'icons/turf/space.dmi'
|
||||
icon_state = "opendebug"
|
||||
plane = PLANE_SPACE_BACKGROUND
|
||||
density = 0
|
||||
pathweight = 100000 //Seriously, don't try and path over this one numbnuts
|
||||
is_hole = TRUE
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
/// The mimic (if any) that's *directly* copying us.
|
||||
var/tmp/atom/movable/openspace/mimic/bound_overlay
|
||||
/// If TRUE, this atom is ignored by Z-Mimic.
|
||||
var/no_z_overlay
|
||||
var/z_flags
|
||||
|
||||
/atom/movable/forceMove(atom/dest)
|
||||
. = ..(dest)
|
||||
@@ -75,12 +75,8 @@
|
||||
icon_state = "dark"
|
||||
plane = OPENTURF_MAX_PLANE
|
||||
layer = MIMICED_LIGHTING_LAYER
|
||||
blend_mode = BLEND_MULTIPLY
|
||||
color = list(
|
||||
SHADOWER_DARKENING_FACTOR, 0, 0,
|
||||
0, SHADOWER_DARKENING_FACTOR, 0,
|
||||
0, 0, SHADOWER_DARKENING_FACTOR
|
||||
)
|
||||
// blend_mode = BLEND_MULTIPLY
|
||||
color = "#00000033"
|
||||
|
||||
/atom/movable/openspace/multiplier/Destroy()
|
||||
var/turf/myturf = loc
|
||||
@@ -93,9 +89,9 @@
|
||||
appearance = LO
|
||||
layer = MIMICED_LIGHTING_LAYER
|
||||
plane = OPENTURF_MAX_PLANE
|
||||
set_invisibility(101)
|
||||
blend_mode = BLEND_MULTIPLY
|
||||
set_invisibility(0)
|
||||
if (icon_state == null)
|
||||
blend_mode = BLEND_MULTIPLY
|
||||
// We're using a color matrix, so just darken the colors across the board.
|
||||
// Bay stores lights as inverted so the lighting PM can invert it for darksight, but
|
||||
// we don't have a plane master, so invert it again.
|
||||
@@ -143,6 +139,7 @@
|
||||
var/mimiced_type
|
||||
var/original_z
|
||||
var/override_depth
|
||||
var/have_performed_fixup = FALSE
|
||||
|
||||
/atom/movable/openspace/mimic/Initialize(mapload, ...)
|
||||
. = ..()
|
||||
@@ -190,7 +187,7 @@
|
||||
/atom/movable/openspace/turf_proxy
|
||||
plane = OPENTURF_MAX_PLANE
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
no_z_overlay = TRUE // Only one of these should ever be visible at a time, the mimic logic will handle that.
|
||||
z_flags = ZMM_IGNORE // Only one of these should ever be visible at a time, the mimic logic will handle that.
|
||||
|
||||
/atom/movable/openspace/turf_proxy/attackby(obj/item/attacking_item, mob/user)
|
||||
loc.attackby(attacking_item, user)
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
/turf/Entered(atom/movable/thing, turf/oldLoc)
|
||||
. = ..()
|
||||
if (thing.bound_overlay || thing.no_z_overlay || !TURF_IS_MIMICING(above))
|
||||
if (thing.bound_overlay || (thing.z_flags & ZMM_IGNORE) || !TURF_IS_MIMICING(above))
|
||||
return
|
||||
above.update_mimic()
|
||||
|
||||
|
||||
@@ -109,7 +109,8 @@
|
||||
return
|
||||
var/datum/vampire/vampire = H.mind.antag_datums[MODE_VAMPIRE]
|
||||
if(vampire && (vampire.status & VAMP_FRENZIED))
|
||||
var/image/return_image = image(H.species.eyes_icons, H, "[H.species.eyes]_frenzy", EFFECTS_ABOVE_LIGHTING_LAYER)
|
||||
var/image/return_image = image(H.species.eyes_icons, H, "[H.species.eyes]_frenzy")
|
||||
return_image.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
return_image.appearance_flags = KEEP_APART
|
||||
LAZYADD(additional_images, return_image)
|
||||
return list(return_image)
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
limb_flags = ORGAN_CAN_AMPUTATE
|
||||
|
||||
/obj/item/organ/external/head/unbreakable/revenant/get_additional_images(var/mob/living/carbon/human/H)
|
||||
var/image/return_image = image(H.species.eyes_icons, H, "[H.species.eyes]_glow", EFFECTS_ABOVE_LIGHTING_LAYER)
|
||||
var/image/return_image = image(H.species.eyes_icons, H, "[H.species.eyes]_glow")
|
||||
return_image.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
return_image.appearance_flags = KEEP_APART
|
||||
return list(return_image)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
var/image/I = image(icon,"[icon_state]decor")
|
||||
I.appearance_flags = RESET_COLOR
|
||||
I.color = get_random_colour(0, 150, 255)
|
||||
I.layer = EFFECTS_ABOVE_LIGHTING_LAYER
|
||||
I.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
add_overlay(I)
|
||||
set_light(0.3, 0.1, 2, l_color = I.color)
|
||||
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
return INITIALIZE_HINT_QDEL
|
||||
|
||||
if(known)
|
||||
layer = EFFECTS_ABOVE_LIGHTING_LAYER
|
||||
plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
for(var/obj/machinery/computer/ship/helm/H in SSmachinery.machinery)
|
||||
H.get_known_sectors()
|
||||
update_icon()
|
||||
|
||||
@@ -367,6 +367,7 @@
|
||||
gfi_layer_rotation = GFI_ROTATION_DEFDIR
|
||||
clicksound = /singleton/sound_category/switch_sound
|
||||
obj_flags = OBJ_FLAG_MOVES_UNSUPPORTED
|
||||
z_flags = ZMM_MANGLE_PLANES
|
||||
var/area/area
|
||||
var/areastring = null
|
||||
var/obj/item/cell/cell
|
||||
|
||||
@@ -85,8 +85,8 @@ By design, d1 is the smallest direction and d2 is the highest
|
||||
GLOB.cable_list += src
|
||||
|
||||
if(mapload)
|
||||
var/image/I = image(icon, T, icon_state, EFFECTS_ABOVE_LIGHTING_LAYER, dir, pixel_x, pixel_y)
|
||||
I.plane = 0
|
||||
var/image/I = image(icon, T, icon_state, dir, pixel_x, pixel_y)
|
||||
I.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
I.alpha = 125
|
||||
I.color = color
|
||||
LAZYADD(T.blueprints, I)
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
icon_state = "floortube_example"
|
||||
base_state = "floortube"
|
||||
desc = "A lighting fixture. This one is set into the floor."
|
||||
layer = TURF_DETAIL_LAYER
|
||||
layer = ABOVE_TILE_LAYER
|
||||
fitting_has_empty_icon = TRUE
|
||||
fitting_is_on_floor = TRUE
|
||||
|
||||
@@ -100,8 +100,8 @@
|
||||
icon_state = "floor_example"
|
||||
base_state = "floor"
|
||||
desc = "A small lighting fixture. This one is set into the floor."
|
||||
layer = TURF_DETAIL_LAYER
|
||||
fitting_is_on_floor = TRUE
|
||||
layer = ABOVE_TILE_LAYER
|
||||
|
||||
/obj/machinery/light/small/emergency
|
||||
icon_state = "bulb_emergency_preview"
|
||||
@@ -245,9 +245,9 @@
|
||||
if (on)
|
||||
var/image/I = LIGHT_FIXTURE_CACHE(icon, "[base_state]_on", target_color)
|
||||
if (!fitting_is_on_floor)
|
||||
I.layer = EFFECTS_ABOVE_LIGHTING_LAYER
|
||||
I.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
else
|
||||
I.layer = layer
|
||||
I.plane = plane
|
||||
add_overlay(I)
|
||||
else
|
||||
add_overlay(LIGHT_FIXTURE_CACHE(icon, "[base_state]_off", target_color))
|
||||
|
||||
@@ -62,4 +62,6 @@
|
||||
/obj/machinery/power/radial_floodlight/update_icon()
|
||||
cut_overlays()
|
||||
if(on)
|
||||
add_overlay(image(icon, src, "[icon_state]-light", EFFECTS_ABOVE_LIGHTING_LAYER))
|
||||
var/image/light = image(icon, src, "[icon_state]-light")
|
||||
light.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
add_overlay(light)
|
||||
|
||||
@@ -53,7 +53,7 @@ field_generator power level display
|
||||
if(state == 2)
|
||||
add_overlay("+welding")
|
||||
var/image/lights_image = image(icon, null, "+lights")
|
||||
lights_image.layer = EFFECTS_ABOVE_LIGHTING_LAYER
|
||||
lights_image.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
add_overlay(lights_image)
|
||||
|
||||
/obj/machinery/field_generator/process()
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
if(anchored)
|
||||
add_overlay("[icon_state]+bolts")
|
||||
var/image/lights_image = image(icon, null, "[icon_state]+lights")
|
||||
lights_image.layer = EFFECTS_ABOVE_LIGHTING_LAYER
|
||||
lights_image.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
add_overlay(lights_image)
|
||||
|
||||
/obj/machinery/the_singularitygen/process()
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
if(anchored)
|
||||
add_overlay("[icon_state]+bolts")
|
||||
var/image/lights_image = image(icon, null, "[icon_state]+lights")
|
||||
lights_image.layer = EFFECTS_ABOVE_LIGHTING_LAYER
|
||||
lights_image.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
add_overlay(lights_image)
|
||||
|
||||
/obj/machinery/power/tesla_coil/RefreshParts()
|
||||
@@ -79,7 +79,7 @@
|
||||
if(anchored)
|
||||
add_overlay("[icon_state]+bolts")
|
||||
var/image/lights_image = image(icon, null, "[icon_state]+lights")
|
||||
lights_image.layer = EFFECTS_ABOVE_LIGHTING_LAYER
|
||||
lights_image.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
add_overlay(lights_image)
|
||||
|
||||
/obj/machinery/power/grounding_rod/attackby(obj/item/attacking_item, mob/user)
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
dissipate = 1
|
||||
dissipate_delay = 10
|
||||
dissipate_strength = 1
|
||||
layer = EFFECTS_ABOVE_LIGHTING_LAYER
|
||||
plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
blend_mode = BLEND_ADD
|
||||
var/failed_direction = 0
|
||||
var/list/orbiting_balls = list()
|
||||
|
||||
@@ -796,8 +796,8 @@
|
||||
|
||||
if(mapload)
|
||||
var/turf/T = loc
|
||||
var/image/I = image(icon, T, icon_state, EFFECTS_ABOVE_LIGHTING_LAYER, dir, pixel_x, pixel_y)
|
||||
I.plane = 0
|
||||
var/image/I = image(icon, T, icon_state, dir, pixel_x, pixel_y)
|
||||
I.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
I.alpha = 125
|
||||
LAZYADD(T.blueprints, I)
|
||||
|
||||
|
||||
@@ -206,8 +206,8 @@
|
||||
light1.set_dir(SOUTH)
|
||||
light2.set_dir(NORTH)
|
||||
|
||||
light1.no_z_overlay = 1
|
||||
light2.no_z_overlay = 1
|
||||
light1.z_flags = ZMM_IGNORE
|
||||
light2.z_flags = ZMM_IGNORE
|
||||
|
||||
// Update area.
|
||||
if(az > areas_to_use.len)
|
||||
|
||||
@@ -228,12 +228,14 @@ var/global/list/can_enter_vent_with = list(
|
||||
for(var/datum/pipeline/pipeline in network.line_members)
|
||||
for(var/obj/machinery/atmospherics/A in (pipeline.members || pipeline.edges)) // Adds pipe and manifold images
|
||||
if(!A.pipe_image)
|
||||
A.pipe_image = image(A, A.loc, layer = ABOVE_LIGHTING_LAYER, dir = A.dir)
|
||||
A.pipe_image = image(A, A.loc, dir = A.dir)
|
||||
A.pipe_image.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
pipes_shown += A.pipe_image
|
||||
client.images += A.pipe_image
|
||||
for (var/obj/machinery/atmospherics/V in network.normal_members) // Adds vent and scrubber images
|
||||
if (!V.pipe_image || istype(V, /obj/machinery/atmospherics/unary/vent_pump/))
|
||||
V.pipe_image = image(V, V.loc, layer = ABOVE_LIGHTING_LAYER, dir = V.dir)
|
||||
V.pipe_image = image(V, V.loc, dir = V.dir)
|
||||
V.pipe_image.plane = EFFECTS_ABOVE_LIGHTING_PLANE
|
||||
pipes_shown += V.pipe_image
|
||||
client.images += V.pipe_image
|
||||
|
||||
|
||||
@@ -91,8 +91,8 @@
|
||||
|
||||
// Dummy object for lightning flash animation.
|
||||
/obj/abstract/lightning_overlay
|
||||
plane = DEFAULT_PLANE + 1 //Future EMISSIVE_PLANE
|
||||
layer = ABOVE_LIGHTING_LAYER
|
||||
plane = EFFECTS_ABOVE_LIGHTING_PLANE //Future EMISSIVE_PLANE
|
||||
layer = LIGHTNING_LAYER
|
||||
icon = 'icons/effects/weather.dmi'
|
||||
icon_state = "full"
|
||||
alpha = 0
|
||||
|
||||
Reference in New Issue
Block a user