Files
CHOMPStation2/code/game/objects/effects/overlays.dm
CHOMPStation2StaffMirrorBot fe69ddd909 [MIRROR] some more NEW to init (#10148)
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
2025-02-13 11:00:18 +01:00

192 lines
4.9 KiB
Plaintext

/obj/effect/overlay
name = "overlay"
unacidable = TRUE
var/i_attached //Added for possible image attachments to objects. For hallucinations and the like.
/obj/effect/overlay/beam //Not actually a projectile, just an effect.
name="beam"
icon='icons/effects/beam.dmi'
icon_state="b_beam"
plane = ABOVE_OBJ_PLANE
var/tmp/atom/BeamSource
/obj/effect/overlay/beam/New()
..()
spawn(10) qdel(src)
/obj/effect/overlay/palmtree_r
name = "Palm tree"
icon = 'icons/misc/beach2.dmi'
icon_state = "palm1"
density = TRUE
plane = MOB_PLANE
layer = ABOVE_MOB_LAYER
anchored = TRUE
/obj/effect/overlay/palmtree_l
name = "Palm tree"
icon = 'icons/misc/beach2.dmi'
icon_state = "palm2"
density = TRUE
plane = MOB_PLANE
layer = ABOVE_MOB_LAYER
anchored = TRUE
/obj/effect/overlay/coconut
name = "Coconuts"
icon = 'icons/misc/beach.dmi'
icon_state = "coconuts"
/obj/effect/overlay/bluespacify
name = "Bluespace"
icon = 'icons/turf/space_vr.dmi' //VOREStation Edit
icon_state = "bluespacify"
plane = ABOVE_PLANE
/obj/effect/overlay/wallrot
name = "wallrot"
desc = "Ick..."
icon = 'icons/effects/wallrot.dmi'
anchored = TRUE
density = TRUE
plane = MOB_PLANE
layer = ABOVE_MOB_LAYER
mouse_opacity = 0
/obj/effect/overlay/wallrot/Initialize()
. = ..()
pixel_x += rand(-10, 10)
pixel_y += rand(-10, 10)
/obj/effect/overlay/snow
name = "snow"
icon = 'icons/turf/overlays.dmi'
icon_state = "snow"
anchored = TRUE
plane = TURF_PLANE
// Todo: Add a version that gradually reaccumulates over time by means of alpha transparency. -Spades
/obj/effect/overlay/snow/attackby(obj/item/W as obj, mob/user as mob)
if (istype(W, /obj/item/shovel))
user.visible_message(span_notice("[user] begins to shovel away \the [src]."))
if(do_after(user, 40))
to_chat(user, span_notice("You have finished shoveling!"))
qdel(src)
return
/obj/effect/overlay/snow/floor
icon_state = "snowfloor"
plane = TURF_PLANE
layer = ABOVE_TURF_LAYER
mouse_opacity = 0 //Don't block underlying tile interactions
/obj/effect/overlay/snow/floor/edges
icon_state = "snow_edges"
/obj/effect/overlay/snow/floor/surround
icon_state = "snow_surround"
/obj/effect/overlay/snow/airlock
icon_state = "snowairlock"
layer = DOOR_CLOSED_LAYER+0.01
/obj/effect/overlay/snow/floor/pointy
icon_state = "snowfloorpointy"
/obj/effect/overlay/snow/wall
icon_state = "snowwall"
plane = MOB_PLANE
layer = ABOVE_MOB_LAYER
/obj/effect/overlay/holographic
mouse_opacity = FALSE
anchored = TRUE
plane = ABOVE_PLANE
// Similar to the tesla ball but doesn't actually do anything and is purely visual.
/obj/effect/overlay/energy_ball
name = "energy ball"
desc = "An energy ball."
icon = 'icons/obj/tesla_engine/energy_ball.dmi'
icon_state = "energy_ball"
plane = PLANE_LIGHTING_ABOVE
pixel_x = -32
pixel_y = -32
/obj/effect/overlay/vis
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
anchored = TRUE
vis_flags = VIS_INHERIT_DIR
///When detected to be unused it gets set to world.time, after a while it gets removed
var/unused = 0
///overlays which go unused for this amount of time get cleaned up
var/cache_expiration = 2 MINUTES
/*
/obj/effect/overlay/atmos_excited
name = "excited group"
icon = null
icon_state = null
anchored = TRUE // should only appear in vis_contents, but to be safe
appearance_flags = RESET_TRANSFORM | TILE_BOUND
invisibility = INVISIBILITY_ABSTRACT
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
plane = ATMOS_GROUP_PLANE
*/
/obj/effect/overlay/light_visible
name = ""
icon = 'icons/effects/light_overlays/light_32.dmi'
icon_state = "light"
plane = PLANE_O_LIGHTING_VISUAL
appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
alpha = 0
vis_flags = NONE
blocks_emissive = FALSE
/obj/effect/overlay/light_visible/Destroy(force)
if(!force)
stack_trace("Movable light visible mask deleted, but not by our component")
return QDEL_HINT_LETMELIVE
return ..()
/obj/effect/overlay/light_cone
name = ""
icon = 'icons/effects/light_overlays/light_cone.dmi'
icon_state = "light"
plane = PLANE_O_LIGHTING_VISUAL
appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
vis_flags = NONE
alpha = 110
blocks_emissive = FALSE
var/static/matrix/normal_transform
/obj/effect/overlay/light_cone/Initialize()
. = ..()
apply_standard_transform()
/obj/effect/overlay/light_cone/proc/reset_transform(apply_standard)
transform = initial(transform)
if(apply_standard)
apply_standard_transform()
/obj/effect/overlay/light_cone/proc/apply_standard_transform()
transform = transform.Translate(-32, -32)
/obj/effect/overlay/light_cone/Destroy(force)
if(!force)
stack_trace("Directional light cone deleted, but not by our component")
return QDEL_HINT_LETMELIVE
return ..()
/obj/effect/overlay/closet_door
anchored = TRUE
plane = FLOAT_PLANE
layer = FLOAT_LAYER
vis_flags = VIS_INHERIT_ID
appearance_flags = KEEP_TOGETHER | LONG_GLIDE | PIXEL_SCALE