mirror of
https://github.com/Citadel-Station-13/Citadel-Station-13-RP.git
synced 2026-08-22 17:46:45 +01:00
38 lines
1.5 KiB
Plaintext
38 lines
1.5 KiB
Plaintext
//* This file is explicitly licensed under the MIT license. *//
|
|
//* Copyright (c) 2023 Citadel Station developers. *//
|
|
|
|
/**
|
|
* It makes things glow.
|
|
*
|
|
* data: list("power" = power, "range" = range, "color" = color, "sensitivity" = sensitivity)
|
|
* sensitivity is a multiplier for how sensitive we are to material_trait_multiplier.
|
|
*
|
|
* todo: does not support blending data together yet. also does not support 'stacking' multiple together, so this is primary_only for now.
|
|
* todo: this currently ignores sensitivity & significance. this is probably a good thing due to how badly light stacking can get.
|
|
* todo: lohikar said to just let lightning engine do blending; we'll see but i want to avoid too many virtual lighting objects if people get insane with the glow materials.
|
|
*/
|
|
/datum/prototype/material_trait/glow
|
|
id = "glow"
|
|
primary_only = TRUE
|
|
|
|
/datum/prototype/material_trait/glow/on_add(atom/host, existing_data, our_data)
|
|
. = ..()
|
|
var/atom/movable/render/material_glow/renderer
|
|
if(isnull(existing_data))
|
|
renderer = new
|
|
host.contents += renderer
|
|
else
|
|
renderer = locate() in host.contents
|
|
renderer.set_light(our_data["power"], our_data["range"], our_data["color"])
|
|
|
|
/datum/prototype/material_trait/glow/on_remove(atom/host, existing_data, our_data, destroying)
|
|
. = ..()
|
|
qdel(locate(/atom/movable/render/material_glow) in host.contents)
|
|
|
|
/atom/movable/render/material_glow
|
|
|
|
/atom/movable/render/material_glow/doMove(atom/destination)
|
|
if(!QDESTROYING(src))
|
|
CRASH("something tried to move us")
|
|
return ..()
|