mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-30 08:37:43 +01:00
* reverts Adds Neon Carpet (#55782), it appears to have been causing massive amounts of maptick (#56496) It appears to have been causing massive amounts of maptick, this'll need a testmerge so we can test my hypothesis * Reverts Adds Neon Carpet (#55782) Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
This commit is contained in:
co-authored by
LemonInTheDark
parent
acfe254041
commit
70024ef6ad
@@ -84,8 +84,6 @@
|
||||
#define COMSIG_ATOM_UPDATE_OVERLAYS "atom_update_overlays"
|
||||
///from base of atom/update_icon(): (signalOut, did_anything)
|
||||
#define COMSIG_ATOM_UPDATED_ICON "atom_updated_icon"
|
||||
///from base of [atom/proc/set_smoothed_icon_state]: (old_junction, new_junction)
|
||||
#define COMSIG_ATOM_SMOOTH_BITMASK "atom_smooth_bitmask"
|
||||
///from base of atom/Entered(): (atom/movable/entering, /atom)
|
||||
#define COMSIG_ATOM_ENTERED "atom_entered"
|
||||
///from base of atom/Exit(): (/atom/movable/exiting, /atom/newloc)
|
||||
|
||||
@@ -51,43 +51,27 @@ DEFINE_BITFIELD(smoothing_flags, list(
|
||||
#define SMOOTH_GROUP_FLOOR_ICE S_TURF(8) ///turf/open/floor/plating/ice
|
||||
#define SMOOTH_GROUP_FLOOR_SNOWED S_TURF(9) ///turf/open/floor/plating/snowed
|
||||
|
||||
#define SMOOTH_GROUP_CARPET S_TURF(10) ///turf/open/floor/carpet
|
||||
#define SMOOTH_GROUP_CARPET_BLACK S_TURF(11) ///turf/open/floor/carpet/black
|
||||
#define SMOOTH_GROUP_CARPET_BLUE S_TURF(12) ///turf/open/floor/carpet/blue
|
||||
#define SMOOTH_GROUP_CARPET_CYAN S_TURF(13) ///turf/open/floor/carpet/cyan
|
||||
#define SMOOTH_GROUP_CARPET_GREEN S_TURF(14) ///turf/open/floor/carpet/green
|
||||
#define SMOOTH_GROUP_CARPET_ORANGE S_TURF(15) ///turf/open/floor/carpet/orange
|
||||
#define SMOOTH_GROUP_CARPET_PURPLE S_TURF(16) ///turf/open/floor/carpet/purple
|
||||
#define SMOOTH_GROUP_CARPET_RED S_TURF(17) ///turf/open/floor/carpet/red
|
||||
#define SMOOTH_GROUP_CARPET_ROYAL_BLACK S_TURF(18) ///turf/open/floor/carpet/royalblack
|
||||
#define SMOOTH_GROUP_CARPET_ROYAL_BLUE S_TURF(19) ///turf/open/floor/carpet/royalblue
|
||||
#define SMOOTH_GROUP_CARPET_EXECUTIVE S_TURF(20) ///turf/open/floor/carpet/executive
|
||||
#define SMOOTH_GROUP_CARPET_STELLAR S_TURF(21) ///turf/open/floor/carpet/stellar
|
||||
#define SMOOTH_GROUP_CARPET_DONK S_TURF(22) ///turf/open/floor/carpet/donk
|
||||
#define SMOOTH_GROUP_CARPET_EMISSIVE S_TURF(23) ///turf/open/floor/carpet/emissive
|
||||
#define SMOOTH_GROUP_CARPET_NEON S_TURF(24) ///turf/open/floor/carpet/emissive/neon
|
||||
#define SMOOTH_GROUP_CARPET_SIMPLE_NEON S_TURF(25) ///turf/open/floor/carpet/emissive/neon/simple
|
||||
#define SMOOTH_GROUP_CARPET_SIMPLE_NEON_WHITE S_TURF(26) ///turf/open/floor/carpet/emissive/neon/simple/white
|
||||
#define SMOOTH_GROUP_CARPET_SIMPLE_NEON_RED S_TURF(27) ///turf/open/floor/carpet/emissive/neon/simple/red
|
||||
#define SMOOTH_GROUP_CARPET_SIMPLE_NEON_ORANGE S_TURF(28) ///turf/open/floor/carpet/emissive/neon/simple/orange
|
||||
#define SMOOTH_GROUP_CARPET_SIMPLE_NEON_YELLOW S_TURF(29) ///turf/open/floor/carpet/emissive/neon/simple/yellow
|
||||
#define SMOOTH_GROUP_CARPET_SIMPLE_NEON_LIME S_TURF(30) ///turf/open/floor/carpet/emissive/neon/simple/lime
|
||||
#define SMOOTH_GROUP_CARPET_SIMPLE_NEON_GREEN S_TURF(31) ///turf/open/floor/carpet/emissive/neon/simple/green
|
||||
#define SMOOTH_GROUP_CARPET_SIMPLE_NEON_CYAN S_TURF(32) ///turf/open/floor/carpet/emissive/neon/simple/cyan
|
||||
#define SMOOTH_GROUP_CARPET_SIMPLE_NEON_TEAL S_TURF(33) ///turf/open/floor/carpet/emissive/neon/simple/teal
|
||||
#define SMOOTH_GROUP_CARPET_SIMPLE_NEON_BLUE S_TURF(34) ///turf/open/floor/carpet/emissive/neon/simple/blue
|
||||
#define SMOOTH_GROUP_CARPET_SIMPLE_NEON_PURPLE S_TURF(35) ///turf/open/floor/carpet/emissive/neon/simple/purple
|
||||
#define SMOOTH_GROUP_CARPET_SIMPLE_NEON_VIOLET S_TURF(36) ///turf/open/floor/carpet/emissive/neon/simple/violet
|
||||
#define SMOOTH_GROUP_CARPET_SIMPLE_NEON_PINK S_TURF(37) ///turf/open/floor/carpet/emissive/neon/simple/pink
|
||||
#define SMOOTH_GROUP_CARPET_SIMPLE_NEON_BLACK S_TURF(38) ///turf/open/floor/carpet/emissive/neon/simple/black
|
||||
#define SMOOTH_GROUP_CARPET S_TURF(10) ///turf/open/floor/carpet
|
||||
#define SMOOTH_GROUP_CARPET_BLACK S_TURF(11) ///turf/open/floor/carpet/black
|
||||
#define SMOOTH_GROUP_CARPET_BLUE S_TURF(12) ///turf/open/floor/carpet/blue
|
||||
#define SMOOTH_GROUP_CARPET_CYAN S_TURF(13) ///turf/open/floor/carpet/cyan
|
||||
#define SMOOTH_GROUP_CARPET_GREEN S_TURF(14) ///turf/open/floor/carpet/green
|
||||
#define SMOOTH_GROUP_CARPET_ORANGE S_TURF(15) ///turf/open/floor/carpet/orange
|
||||
#define SMOOTH_GROUP_CARPET_PURPLE S_TURF(16) ///turf/open/floor/carpet/purple
|
||||
#define SMOOTH_GROUP_CARPET_RED S_TURF(17) ///turf/open/floor/carpet/red
|
||||
#define SMOOTH_GROUP_CARPET_ROYAL_BLACK S_TURF(18) ///turf/open/floor/carpet/royalblack
|
||||
#define SMOOTH_GROUP_CARPET_ROYAL_BLUE S_TURF(19) ///turf/open/floor/carpet/royalblue
|
||||
#define SMOOTH_GROUP_CARPET_EXECUTIVE S_TURF(20) ///turf/open/floor/carpet/executive
|
||||
#define SMOOTH_GROUP_CARPET_STELLAR S_TURF(21) ///turf/open/floor/carpet/stellar
|
||||
#define SMOOTH_GROUP_CARPET_DONK S_TURF(22) ///turf/open/floor/carpet/donk
|
||||
|
||||
#define SMOOTH_GROUP_CLOSED_TURFS S_TURF(40) ///turf/closed
|
||||
#define SMOOTH_GROUP_MATERIAL_WALLS S_TURF(41) ///turf/closed/wall/material
|
||||
#define SMOOTH_GROUP_SYNDICATE_WALLS S_TURF(42) ///turf/closed/wall/r_wall/syndicate, /turf/closed/indestructible/syndicate
|
||||
#define SMOOTH_GROUP_HOTEL_WALLS S_TURF(43) ///turf/closed/indestructible/hotelwall
|
||||
#define SMOOTH_GROUP_MINERAL_WALLS S_TURF(44) ///turf/closed/mineral, /turf/closed/indestructible
|
||||
#define SMOOTH_GROUP_BOSS_WALLS S_TURF(45) ///turf/closed/indestructible/riveted/boss
|
||||
#define SMOOTH_GROUP_SURVIVAL_TITANIUM_WALLS S_TURF(46) ///turf/closed/wall/mineral/titanium/survival
|
||||
#define SMOOTH_GROUP_CLOSED_TURFS S_TURF(24) ///turf/closed
|
||||
#define SMOOTH_GROUP_MATERIAL_WALLS S_TURF(25) ///turf/closed/wall/material
|
||||
#define SMOOTH_GROUP_SYNDICATE_WALLS S_TURF(26) ///turf/closed/wall/r_wall/syndicate, /turf/closed/indestructible/syndicate
|
||||
#define SMOOTH_GROUP_HOTEL_WALLS S_TURF(27) ///turf/closed/indestructible/hotelwall
|
||||
#define SMOOTH_GROUP_MINERAL_WALLS S_TURF(28) ///turf/closed/mineral, /turf/closed/indestructible
|
||||
#define SMOOTH_GROUP_BOSS_WALLS S_TURF(29) ///turf/closed/indestructible/riveted/boss
|
||||
#define SMOOTH_GROUP_SURVIVAL_TITANIUM_WALLS S_TURF(30) ///turf/closed/wall/mineral/titanium/survival
|
||||
|
||||
#define MAX_S_TURF SMOOTH_GROUP_SURVIVAL_TITANIUM_WALLS //Always match this value with the one above it.
|
||||
|
||||
|
||||
+36
-58
@@ -92,88 +92,66 @@
|
||||
#define MASSIVE_OBJ_LAYER 11
|
||||
#define POINT_LAYER 12
|
||||
|
||||
#define EMISSIVE_BLOCKER_PLANE 10
|
||||
#define EMISSIVE_BLOCKER_PLANE 12
|
||||
#define EMISSIVE_BLOCKER_LAYER 12
|
||||
#define EMISSIVE_BLOCKER_RENDER_TARGET "*EMISSIVE_BLOCKER_PLANE"
|
||||
#define TURF_EMISSIVE_BLOCKER_PLANE 11
|
||||
#define TURF_EMISSIVE_BLOCKER_RENDER_TARGET "*EMISSIVE_BLOCKER_PLANE_TURF"
|
||||
#define STRUCTURE_EMISSIVE_BLOCKER_PLANE 12
|
||||
#define STRUCTURE_EMISSIVE_BLOCKER_RENDER_TARGET "*EMISSIVE_BLOCKER_PLANE_STRUCTURE"
|
||||
#define ITEM_EMISSIVE_BLOCKER_PLANE 13
|
||||
#define ITEM_EMISSIVE_BLOCKER_RENDER_TARGET "*EMISSIVE_BLOCKER_PLANE_ITEM"
|
||||
#define MOB_EMISSIVE_BLOCKER_PLANE 14
|
||||
#define MOB_EMISSIVE_BLOCKER_RENDER_TARGET "*EMISSIVE_BLOCKER_PLANE_MOB"
|
||||
|
||||
#define EMISSIVE_PLANE 20
|
||||
#define CHAT_LAYER 12.0001 // Do not insert layers between these two values
|
||||
#define CHAT_LAYER_MAX 12.9999
|
||||
|
||||
#define EMISSIVE_PLANE 13
|
||||
#define EMISSIVE_LAYER 13
|
||||
#define EMISSIVE_RENDER_TARGET "*EMISSIVE_PLANE"
|
||||
#define EMISSIVE_TURF_PLANE 21
|
||||
#define EMISSIVE_TURF_RENDER_TARGET "*EMISSIVE_PLANE_TURF"
|
||||
#define EMISSIVE_STRUCTURE_PLANE 22
|
||||
#define EMISSIVE_STRUCTURE_RENDER_TARGET "*EMISSIVE_PLANE_STRUCTURE"
|
||||
#define EMISSIVE_ITEM_PLANE 23
|
||||
#define EMISSIVE_ITEM_RENDER_TARGET "*EMISSIVE_PLANE_ITEM"
|
||||
#define EMISSIVE_MOB_PLANE 24
|
||||
#define EMISSIVE_MOB_RENDER_TARGET "*EMISSIVE_PLANE_MOB"
|
||||
#define EMISSIVE_UNBLOCKABLE_PLANE 31
|
||||
|
||||
#define EMISSIVE_UNBLOCKABLE_PLANE 14
|
||||
#define EMISSIVE_UNBLOCKABLE_LAYER 14
|
||||
#define EMISSIVE_UNBLOCKABLE_RENDER_TARGET "*EMISSIVE_UNBLOCKABLE_PLANE"
|
||||
|
||||
// Layer definitions for emissive and emissive blocker layers.
|
||||
// Since neither are directly rendered these are just used to tell which blocker planes can block which emissive layers.
|
||||
// Higher layer blocker planes mask lower layer emissive planes.
|
||||
// In the case of equivalent layers the emissive plane master takes priority so structures don't block their own overlays.
|
||||
#define EMISSIVE_LAYER 20
|
||||
#define EMISSIVE_TURF_LAYER 21
|
||||
#define EMISSIVE_STRUCTURE_LAYER 22
|
||||
#define EMISSIVE_ITEM_LAYER 23
|
||||
#define EMISSIVE_MOB_LAYER 24
|
||||
#define EMISSIVE_UNBLOCKABLE_LAYER 31
|
||||
|
||||
#define LIGHTING_PLANE 41
|
||||
#define LIGHTING_LAYER 41
|
||||
#define LIGHTING_PLANE 15
|
||||
#define LIGHTING_LAYER 15
|
||||
#define LIGHTING_RENDER_TARGET "LIGHT_PLANE"
|
||||
|
||||
#define RAD_TEXT_LAYER 15.1
|
||||
|
||||
#define O_LIGHTING_VISUAL_PLANE 42
|
||||
#define O_LIGHTING_VISUAL_LAYER 42
|
||||
#define O_LIGHTING_VISUAL_PLANE 16
|
||||
#define O_LIGHTING_VISUAL_LAYER 16
|
||||
#define O_LIGHTING_VISUAL_RENDER_TARGET "O_LIGHT_VISUAL_PLANE"
|
||||
|
||||
#define ABOVE_LIGHTING_PLANE 43
|
||||
#define ABOVE_LIGHTING_LAYER 43
|
||||
#define ABOVE_LIGHTING_PLANE 17
|
||||
#define ABOVE_LIGHTING_LAYER 17
|
||||
#define ABOVE_LIGHTING_RENDER_TARGET "ABOVE_LIGHTING_PLANE"
|
||||
|
||||
#define BYOND_LIGHTING_PLANE 44
|
||||
#define BYOND_LIGHTING_LAYER 44
|
||||
#define BYOND_LIGHTING_PLANE 18
|
||||
#define BYOND_LIGHTING_LAYER 18
|
||||
#define BYOND_LIGHTING_RENDER_TARGET "BYOND_LIGHTING_PLANE"
|
||||
|
||||
#define CAMERA_STATIC_PLANE 45
|
||||
#define CAMERA_STATIC_LAYER 45
|
||||
#define CAMERA_STATIC_PLANE 19
|
||||
#define CAMERA_STATIC_LAYER 19
|
||||
#define CAMERA_STATIC_RENDER_TARGET "CAMERA_STATIC_PLANE"
|
||||
|
||||
#define RUNECHAT_PLANE 46
|
||||
#define CHAT_LAYER 12.0001 // Do not insert layers between these two values
|
||||
#define CHAT_LAYER_MAX 12.9999
|
||||
#define RUNECHAT_PLANE 20
|
||||
|
||||
#define ATMOS_GROUP_PLANE 47
|
||||
#define ATMOS_GROUP_LAYER 47
|
||||
#define ATMOS_GROUP_PLANE 21
|
||||
#define ATMOS_GROUP_LAYER 21
|
||||
|
||||
//HUD layer defines
|
||||
|
||||
#define FULLSCREEN_PLANE 51
|
||||
#define FLASH_LAYER 51
|
||||
#define FULLSCREEN_LAYER 51.1
|
||||
#define UI_DAMAGE_LAYER 51.2
|
||||
#define BLIND_LAYER 51.3
|
||||
#define CRIT_LAYER 51.4
|
||||
#define CURSE_LAYER 51.5
|
||||
#define FULLSCREEN_PLANE 31
|
||||
#define FLASH_LAYER 31
|
||||
#define FULLSCREEN_LAYER 31.1
|
||||
#define UI_DAMAGE_LAYER 31.2
|
||||
#define BLIND_LAYER 31.3
|
||||
#define CRIT_LAYER 31.4
|
||||
#define CURSE_LAYER 31.5
|
||||
#define FULLSCREEN_RENDER_TARGET "FULLSCREEN_PLANE"
|
||||
|
||||
#define HUD_PLANE 52
|
||||
#define HUD_LAYER 52
|
||||
#define HUD_PLANE 42
|
||||
#define HUD_LAYER 42
|
||||
#define HUD_RENDER_TARGET "HUD_PLANE"
|
||||
#define ABOVE_HUD_PLANE 53
|
||||
#define ABOVE_HUD_LAYER 53
|
||||
#define ABOVE_HUD_PLANE 43
|
||||
#define ABOVE_HUD_LAYER 43
|
||||
#define ABOVE_HUD_RENDER_TARGET "ABOVE_HUD_PLANE"
|
||||
|
||||
#define SPLASHSCREEN_LAYER 64
|
||||
#define SPLASHSCREEN_PLANE 64
|
||||
#define SPLASHSCREEN_LAYER 54
|
||||
#define SPLASHSCREEN_PLANE 54
|
||||
#define SPLASHSCREEN_RENDER_TARGET "SPLASHSCREEN_PLANE"
|
||||
|
||||
@@ -346,7 +346,6 @@ DEFINE_BITFIELD(smoothing_junction, list(
|
||||
. = smoothing_junction
|
||||
smoothing_junction = new_junction
|
||||
icon_state = "[base_icon_state]-[smoothing_junction]"
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_SMOOTH_BITMASK, ., new_junction)
|
||||
|
||||
|
||||
/turf/closed/set_smoothed_icon_state(new_junction)
|
||||
|
||||
@@ -70,83 +70,37 @@
|
||||
|
||||
/atom/movable/screen/plane_master/lighting/Initialize()
|
||||
. = ..()
|
||||
var/i = 1
|
||||
for(var/plane in subtypesof(/atom/movable/screen/plane_master/emissive))
|
||||
var/atom/movable/screen/plane_master/emissive/emissive_plane = plane
|
||||
add_filter("emissives-[i] ([initial(emissive_plane.name)])", i++, alpha_mask_filter(render_source = initial(emissive_plane.emissive_target), flags = MASK_INVERSE))
|
||||
add_filter("emissives", 1, alpha_mask_filter(render_source = EMISSIVE_RENDER_TARGET, flags = MASK_INVERSE))
|
||||
add_filter("unblockable_emissives", 2, alpha_mask_filter(render_source = EMISSIVE_UNBLOCKABLE_RENDER_TARGET, flags = MASK_INVERSE))
|
||||
add_filter("object_lighting", 3, alpha_mask_filter(render_source = O_LIGHTING_VISUAL_RENDER_TARGET, flags = MASK_INVERSE))
|
||||
|
||||
/**
|
||||
* Things placed on this mask the lighting plane. Doesn't render directly.
|
||||
*
|
||||
* Gets masked by blocking planes. Use for things that you want blocked by
|
||||
* Gets masked by blocking plane. Use for things that you want blocked by
|
||||
* mobs, items, etc.
|
||||
*/
|
||||
/atom/movable/screen/plane_master/emissive
|
||||
name = "emissive plane master"
|
||||
plane = EMISSIVE_PLANE
|
||||
layer = EMISSIVE_LAYER
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
render_target = EMISSIVE_RENDER_TARGET
|
||||
/// Basically a second copy of the `render_target` because `initial(plane_master_typepath.render_target)` always returns `null` because _BYOND_
|
||||
var/emissive_target = EMISSIVE_RENDER_TARGET
|
||||
|
||||
/atom/movable/screen/plane_master/emissive/Initialize()
|
||||
. = ..()
|
||||
var/i = 1
|
||||
for(var/plane in subtypesof(/atom/movable/screen/plane_master/emissive_blocker))
|
||||
var/atom/movable/screen/plane_master/emissive_blocker/blocker_plane = plane
|
||||
if(initial(blocker_plane.layer) <= layer)
|
||||
continue
|
||||
add_filter("emissive_block-[i] (initial(blocker_plane.name))", i++, alpha_mask_filter(render_source = initial(blocker_plane.blocker_target), flags = MASK_INVERSE))
|
||||
add_filter("emissive_block", 1, alpha_mask_filter(render_source = EMISSIVE_BLOCKER_RENDER_TARGET, flags = MASK_INVERSE))
|
||||
|
||||
/// The plane master used for emissive turfs and turf overlays
|
||||
/atom/movable/screen/plane_master/emissive/emissive_turf
|
||||
name = "emissive turf plane master"
|
||||
plane = EMISSIVE_TURF_PLANE
|
||||
layer = EMISSIVE_TURF_LAYER
|
||||
render_target = EMISSIVE_TURF_RENDER_TARGET
|
||||
emissive_target = EMISSIVE_TURF_RENDER_TARGET
|
||||
|
||||
/// The plane master used for emissive structures and structure overlays
|
||||
/atom/movable/screen/plane_master/emissive/emissive_structure
|
||||
name = "emissive structure plane master"
|
||||
plane = EMISSIVE_STRUCTURE_PLANE
|
||||
layer = EMISSIVE_STRUCTURE_LAYER
|
||||
render_target = EMISSIVE_STRUCTURE_RENDER_TARGET
|
||||
emissive_target = EMISSIVE_STRUCTURE_RENDER_TARGET
|
||||
|
||||
/// The plane master used for emissive items and item overlays
|
||||
/atom/movable/screen/plane_master/emissive/emissive_item
|
||||
name = "emissive item plane master"
|
||||
plane = EMISSIVE_ITEM_PLANE
|
||||
layer = EMISSIVE_ITEM_LAYER
|
||||
render_target = EMISSIVE_ITEM_RENDER_TARGET
|
||||
emissive_target = EMISSIVE_ITEM_RENDER_TARGET
|
||||
|
||||
/// The plane master used for emissive mobs and mob overlays
|
||||
/atom/movable/screen/plane_master/emissive/emissive_mob
|
||||
name = "emissive mob plane master"
|
||||
plane = EMISSIVE_MOB_PLANE
|
||||
layer = EMISSIVE_MOB_LAYER
|
||||
render_target = EMISSIVE_MOB_RENDER_TARGET
|
||||
emissive_target = EMISSIVE_MOB_RENDER_TARGET
|
||||
|
||||
/// The plane master used for unblockable emissive effects
|
||||
/atom/movable/screen/plane_master/emissive/unblockable
|
||||
/**
|
||||
* Things placed on this always mask the lighting plane. Doesn't render directly.
|
||||
*
|
||||
* Always masks the light plane, isn't blocked by anything. Use for on mob glows,
|
||||
* magic stuff, etc.
|
||||
*/
|
||||
/atom/movable/screen/plane_master/emissive_unblockable
|
||||
name = "unblockable emissive plane master"
|
||||
plane = EMISSIVE_UNBLOCKABLE_PLANE
|
||||
layer = EMISSIVE_UNBLOCKABLE_LAYER
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
render_target = EMISSIVE_UNBLOCKABLE_RENDER_TARGET
|
||||
emissive_target = EMISSIVE_UNBLOCKABLE_RENDER_TARGET
|
||||
|
||||
/// The plane master used for overlay lighting masking
|
||||
/atom/movable/screen/plane_master/emissive/o_light_visual
|
||||
name = "overlight light visual plane master"
|
||||
layer = O_LIGHTING_VISUAL_LAYER
|
||||
plane = O_LIGHTING_VISUAL_PLANE
|
||||
render_target = O_LIGHTING_VISUAL_RENDER_TARGET
|
||||
emissive_target = O_LIGHTING_VISUAL_RENDER_TARGET
|
||||
blend_mode = BLEND_MULTIPLY
|
||||
|
||||
/**
|
||||
* Things placed on this layer mask the emissive layer. Doesn't render directly
|
||||
@@ -156,43 +110,8 @@
|
||||
/atom/movable/screen/plane_master/emissive_blocker
|
||||
name = "emissive blocker plane master"
|
||||
plane = EMISSIVE_BLOCKER_PLANE
|
||||
layer = EMISSIVE_LAYER
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
render_target = EMISSIVE_BLOCKER_RENDER_TARGET
|
||||
/// Basically a second copy of the `render_target` because `initial(plane_master_typepath.render_target)` always returns `null` because _BYOND_
|
||||
var/blocker_target = EMISSIVE_BLOCKER_RENDER_TARGET
|
||||
|
||||
/// The emissive blocker plane master used by structures to block... something. Presumably whatever's under turfs. (NOTE: Not actually implemented because adding this to every turf would be expensive and there's no reason to use this yet)
|
||||
/atom/movable/screen/plane_master/emissive_blocker/turf_emissive
|
||||
name = "turf emissive blocker plane master"
|
||||
plane = TURF_EMISSIVE_BLOCKER_PLANE
|
||||
layer = EMISSIVE_TURF_LAYER
|
||||
render_target = TURF_EMISSIVE_BLOCKER_RENDER_TARGET
|
||||
blocker_target = TURF_EMISSIVE_BLOCKER_RENDER_TARGET
|
||||
|
||||
/// The emissive blocker plane master used by structures to block emissive turfs and turf overlays
|
||||
/atom/movable/screen/plane_master/emissive_blocker/structure_emissive
|
||||
name = "structure emissive blocker plane master"
|
||||
plane = STRUCTURE_EMISSIVE_BLOCKER_PLANE
|
||||
layer = EMISSIVE_STRUCTURE_LAYER
|
||||
render_target = STRUCTURE_EMISSIVE_BLOCKER_RENDER_TARGET
|
||||
blocker_target = STRUCTURE_EMISSIVE_BLOCKER_RENDER_TARGET
|
||||
|
||||
/// The emissive blocker plane master used by items to block emissive turfs, structures and overlays thereof
|
||||
/atom/movable/screen/plane_master/emissive_blocker/item_emissive
|
||||
name = "item emissive blocker plane master"
|
||||
plane = ITEM_EMISSIVE_BLOCKER_PLANE
|
||||
layer = EMISSIVE_ITEM_LAYER
|
||||
render_target = ITEM_EMISSIVE_BLOCKER_RENDER_TARGET
|
||||
blocker_target = ITEM_EMISSIVE_BLOCKER_RENDER_TARGET
|
||||
|
||||
/// The emissive blocker plane master used by items to block emissive turfs, structures, items and overlays thereof
|
||||
/atom/movable/screen/plane_master/emissive_blocker/mob_emissive
|
||||
name = "mob emissive blocker plane master"
|
||||
plane = MOB_EMISSIVE_BLOCKER_PLANE
|
||||
layer = EMISSIVE_MOB_LAYER
|
||||
render_target = MOB_EMISSIVE_BLOCKER_RENDER_TARGET
|
||||
blocker_target = MOB_EMISSIVE_BLOCKER_RENDER_TARGET
|
||||
|
||||
///Contains space parallax
|
||||
/atom/movable/screen/plane_master/parallax
|
||||
@@ -218,6 +137,14 @@
|
||||
blend_mode = BLEND_OVERLAY
|
||||
alpha = 0
|
||||
|
||||
/atom/movable/screen/plane_master/o_light_visual
|
||||
name = "overlight light visual plane master"
|
||||
layer = O_LIGHTING_VISUAL_LAYER
|
||||
plane = O_LIGHTING_VISUAL_PLANE
|
||||
render_target = O_LIGHTING_VISUAL_RENDER_TARGET
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
blend_mode = BLEND_MULTIPLY
|
||||
|
||||
/atom/movable/screen/plane_master/runechat
|
||||
name = "runechat plane master"
|
||||
plane = RUNECHAT_PLANE
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
var/obj/item/stack/_S = i
|
||||
if(!istype(_S))
|
||||
continue
|
||||
if(S.can_merge(_S))
|
||||
if(_S.merge_type == S.merge_type)
|
||||
_S.add(can_insert)
|
||||
S.use(can_insert, TRUE)
|
||||
return TRUE
|
||||
|
||||
@@ -5,18 +5,18 @@
|
||||
var/description
|
||||
var/mutable_appearance/pic
|
||||
|
||||
/datum/element/decal/Attach(atom/target, _icon, _icon_state, _dir, _cleanable=FALSE, _color, _layer=TURF_LAYER, _plane=FLOOR_PLANE, _description, _alpha=255)
|
||||
/datum/element/decal/Attach(atom/target, _icon, _icon_state, _dir, _cleanable=FALSE, _color, _layer=TURF_LAYER, _description, _alpha=255)
|
||||
. = ..()
|
||||
if(!isatom(target) || !generate_appearance(_icon, _icon_state, _dir, _layer, _plane, _color, _alpha, target))
|
||||
if(!isatom(target) || !generate_appearance(_icon, _icon_state, _dir, _layer, _color, _alpha, target))
|
||||
return ELEMENT_INCOMPATIBLE
|
||||
description = _description
|
||||
cleanable = _cleanable
|
||||
|
||||
RegisterSignal(target, COMSIG_ATOM_UPDATE_OVERLAYS, .proc/apply_overlay, TRUE)
|
||||
RegisterSignal(target,COMSIG_ATOM_UPDATE_OVERLAYS,.proc/apply_overlay, TRUE)
|
||||
if(target.flags_1 & INITIALIZED_1)
|
||||
target.update_icon() //could use some queuing here now maybe.
|
||||
else
|
||||
RegisterSignal(target, COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZE, .proc/late_update_icon, TRUE)
|
||||
RegisterSignal(target,COMSIG_ATOM_AFTER_SUCCESSFUL_INITIALIZE,.proc/late_update_icon, TRUE)
|
||||
if(isitem(target))
|
||||
INVOKE_ASYNC(target, /obj/item/.proc/update_slot_icon, TRUE)
|
||||
if(_dir)
|
||||
@@ -26,12 +26,11 @@
|
||||
if(_description)
|
||||
RegisterSignal(target, COMSIG_PARENT_EXAMINE, .proc/examine,TRUE)
|
||||
|
||||
/datum/element/decal/proc/generate_appearance(_icon, _icon_state, _dir, _layer, _plane, _color, _alpha, source)
|
||||
/datum/element/decal/proc/generate_appearance(_icon, _icon_state, _dir, _layer, _color, _alpha, source)
|
||||
if(!_icon || !_icon_state)
|
||||
return FALSE
|
||||
var/temp_image = image(_icon, null, _icon_state, _layer, _dir)
|
||||
pic = new(temp_image)
|
||||
pic.plane = _plane
|
||||
pic.color = _color
|
||||
pic.alpha = _alpha
|
||||
return TRUE
|
||||
@@ -63,7 +62,7 @@
|
||||
if(old_dir == new_dir)
|
||||
return
|
||||
Detach(source)
|
||||
source.AddElement(/datum/element/decal, pic.icon, pic.icon_state, new_dir, cleanable, pic.color, pic.layer, pic.plane, description, pic.alpha)
|
||||
source.AddElement(/datum/element/decal, pic.icon, pic.icon_state, new_dir, cleanable, pic.color, pic.layer, description, pic.alpha)
|
||||
|
||||
/datum/element/decal/proc/clean_react(datum/source, clean_types)
|
||||
SIGNAL_HANDLER
|
||||
@@ -1,16 +1,18 @@
|
||||
/datum/element/decal/blood
|
||||
|
||||
/datum/element/decal/blood/Attach(datum/target, _icon, _icon_state, _dir, _cleanable=CLEAN_TYPE_BLOOD, _color, _layer=ABOVE_OBJ_LAYER, _plane=FLOAT_PLANE, _description, _alpha=255)
|
||||
/datum/element/decal/blood/Attach(datum/target, _icon, _icon_state, _dir, _cleanable=CLEAN_TYPE_BLOOD, _color, _layer=ABOVE_OBJ_LAYER)
|
||||
if(!isitem(target))
|
||||
return ELEMENT_INCOMPATIBLE
|
||||
|
||||
. = ..()
|
||||
|
||||
RegisterSignal(target, COMSIG_ATOM_GET_EXAMINE_NAME, .proc/get_examine_name, TRUE)
|
||||
|
||||
/datum/element/decal/blood/Detach(atom/source, force)
|
||||
UnregisterSignal(source, COMSIG_ATOM_GET_EXAMINE_NAME)
|
||||
return ..()
|
||||
|
||||
/datum/element/decal/blood/generate_appearance(_icon, _icon_state, _dir, _layer, _plane, _color, _alpha, source)
|
||||
/datum/element/decal/blood/generate_appearance(_icon, _icon_state, _dir, _layer, _color, _alpha, source)
|
||||
var/obj/item/I = source
|
||||
if(!_icon)
|
||||
_icon = 'icons/effects/blood.dmi'
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
/**
|
||||
* Decals that support smoothing with the parent atom
|
||||
*
|
||||
* Currently only supports bitmask smoothing
|
||||
*/
|
||||
/datum/element/decal/smoothing
|
||||
/// The icon state used as the base of the smoothed icon state
|
||||
var/base_icon_state
|
||||
/// The smoothing junction used to generate the smoothed icon state
|
||||
var/smoothing_junction
|
||||
|
||||
/datum/element/decal/smoothing/Attach(atom/target, _icon, _icon_state, _dir, _cleanable=FALSE, _color, _layer=TURF_LAYER, _plane=FLOOR_PLANE, _description, _alpha=255, _smoothing_junction=0)
|
||||
base_icon_state = _icon_state
|
||||
smoothing_junction = _smoothing_junction
|
||||
_icon_state = "[_icon_state]-[_smoothing_junction]"
|
||||
. = ..()
|
||||
if(. & ELEMENT_INCOMPATIBLE)
|
||||
return
|
||||
RegisterSignal(target, COMSIG_ATOM_SMOOTH_BITMASK, .proc/smooth_react)
|
||||
|
||||
/datum/element/decal/smoothing/Detach(atom/source, force)
|
||||
UnregisterSignal(source, COMSIG_ATOM_SMOOTH_BITMASK)
|
||||
return ..()
|
||||
|
||||
|
||||
/datum/element/decal/smoothing/rotate_react(datum/source, old_dir, new_dir)
|
||||
// SIGNAL_HANDLER <-- Already defined on parent. We can't define it again and we can't call parent. So we're stuck.
|
||||
if(old_dir == new_dir)
|
||||
return
|
||||
Detach(source)
|
||||
source.AddElement(/datum/element/decal/smoothing, pic.icon, base_icon_state, new_dir, cleanable, pic.color, pic.layer, pic.plane, description, pic.alpha, smoothing_junction)
|
||||
|
||||
/// Reacts to the source atom smoothing
|
||||
/datum/element/decal/smoothing/proc/smooth_react(datum/source, old_junction, new_junction)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
if(old_junction == new_junction)
|
||||
return
|
||||
Detach(source)
|
||||
source.AddElement(/datum/element/decal/smoothing, pic.icon, base_icon_state, pic.dir, cleanable, pic.color, pic.layer, pic.plane, description, pic.alpha, new_junction)
|
||||
@@ -1,33 +0,0 @@
|
||||
/**
|
||||
* Applies an emissive blocker vis overlay to the target atom and re-applies it whenever the atom updates its vis overlays
|
||||
*
|
||||
* Used to make emissive blockers compatible with structures that mess with their vis overlays
|
||||
* If this isn't handled neon carpets start glowing through vending machines and computer consoles
|
||||
*/
|
||||
/datum/element/emissive_blocker
|
||||
element_flags = ELEMENT_DETACH | ELEMENT_BESPOKE
|
||||
id_arg_index = 2
|
||||
/// The plane used
|
||||
var/blocker_plane
|
||||
|
||||
/datum/element/emissive_blocker/Attach(atom/target, plane)
|
||||
if(!isatom(target))
|
||||
return ELEMENT_INCOMPATIBLE
|
||||
if(!isnum(plane))
|
||||
stack_trace("Invalid plane value passed to emissive blocker element")
|
||||
return ELEMENT_INCOMPATIBLE
|
||||
|
||||
blocker_plane = plane
|
||||
RegisterSignal(target, COMSIG_ATOM_UPDATE_OVERLAYS, .proc/update_blocker)
|
||||
update_blocker(target, null)
|
||||
return ..()
|
||||
|
||||
/datum/element/emissive_blocker/Detach(datum/source, force)
|
||||
UnregisterSignal(source, COMSIG_ATOM_UPDATE_OVERLAYS)
|
||||
return ..()
|
||||
|
||||
/// Re-applies the emissive blocker vis overlay
|
||||
/datum/element/emissive_blocker/proc/update_blocker(atom/source, list/overlays)
|
||||
SIGNAL_HANDLER
|
||||
SSvis_overlays.add_vis_overlay(source, source.icon, source.icon_state, EMISSIVE_LAYER, blocker_plane, source.dir)
|
||||
return NONE
|
||||
@@ -652,9 +652,6 @@
|
||||
. = TRUE
|
||||
|
||||
if(!(signalOut & COMSIG_ATOM_NO_UPDATE_OVERLAYS))
|
||||
if(LAZYLEN(managed_vis_overlays))
|
||||
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
|
||||
|
||||
var/list/new_overlays = update_overlays()
|
||||
if(managed_overlays)
|
||||
cut_overlay(managed_overlays)
|
||||
|
||||
@@ -58,8 +58,6 @@
|
||||
|
||||
/// Either FALSE, [EMISSIVE_BLOCK_GENERIC], or [EMISSIVE_BLOCK_UNIQUE]
|
||||
var/blocks_emissive = FALSE
|
||||
/// The plane this uses for emissive effects and emissive blockers
|
||||
var/emissive_blocker_plane = EMISSIVE_PLANE
|
||||
///Internal holder for emissive blocker object, do not use directly use blocks_emissive
|
||||
var/atom/movable/emissive_blocker/em_block
|
||||
|
||||
@@ -79,10 +77,10 @@
|
||||
. = ..()
|
||||
switch(blocks_emissive)
|
||||
if(EMISSIVE_BLOCK_GENERIC)
|
||||
AddElement(/datum/element/emissive_blocker, emissive_blocker_plane)
|
||||
update_emissive_block()
|
||||
if(EMISSIVE_BLOCK_UNIQUE)
|
||||
render_target = ref(src)
|
||||
em_block = new(src, render_target, emissive_blocker_plane)
|
||||
em_block = new(src, render_target)
|
||||
vis_contents += em_block
|
||||
if(opacity)
|
||||
AddElement(/datum/element/light_blocking)
|
||||
@@ -128,6 +126,18 @@
|
||||
|
||||
moveToNullspace()
|
||||
|
||||
|
||||
/atom/movable/proc/update_emissive_block()
|
||||
if(blocks_emissive != EMISSIVE_BLOCK_GENERIC)
|
||||
return
|
||||
if(length(managed_vis_overlays))
|
||||
for(var/a in managed_vis_overlays)
|
||||
var/obj/effect/overlay/vis/vs
|
||||
if(vs.plane == EMISSIVE_BLOCKER_PLANE)
|
||||
SSvis_overlays.remove_vis_overlay(src, list(vs))
|
||||
break
|
||||
SSvis_overlays.add_vis_overlay(src, icon, icon_state, EMISSIVE_BLOCKER_LAYER, EMISSIVE_BLOCKER_PLANE, dir)
|
||||
|
||||
/atom/movable/proc/can_zFall(turf/source, levels = 1, turf/target, direction)
|
||||
if(!direction)
|
||||
direction = DOWN
|
||||
|
||||
@@ -92,8 +92,6 @@
|
||||
layer = BELOW_OBJ_LAYER //keeps shit coming out of the machine from ending up underneath it.
|
||||
flags_ricochet = RICOCHET_HARD
|
||||
receive_ricochet_chance_mod = 0.3
|
||||
blocks_emissive = EMISSIVE_BLOCK_GENERIC
|
||||
emissive_blocker_plane = STRUCTURE_EMISSIVE_BLOCKER_PLANE
|
||||
|
||||
anchored = TRUE
|
||||
interaction_flags_atom = INTERACT_ATOM_ATTACK_HAND | INTERACT_ATOM_UI_INTERACT
|
||||
|
||||
@@ -55,6 +55,7 @@
|
||||
|
||||
/obj/machinery/accounting/update_overlays()
|
||||
. = ..()
|
||||
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
|
||||
luminosity = 0
|
||||
if(machine_stat & (NOPOWER|BROKEN) || !anchored)
|
||||
return
|
||||
@@ -64,7 +65,7 @@
|
||||
luminosity = 1
|
||||
if(inserted_id)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "recharger-full", layer, plane, dir, alpha)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "recharger-full", EMISSIVE_STRUCTURE_LAYER, EMISSIVE_STRUCTURE_PLANE, dir, alpha)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "recharger-full", EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha)
|
||||
else
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "recharger-empty", layer, plane, dir, alpha)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "recharger-empty", EMISSIVE_STRUCTURE_LAYER, EMISSIVE_STRUCTURE_PLANE, dir, alpha)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "recharger-empty", EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha)
|
||||
|
||||
@@ -30,6 +30,8 @@
|
||||
|
||||
/obj/machinery/computer/update_overlays()
|
||||
. = ..()
|
||||
|
||||
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
|
||||
if(machine_stat & NOPOWER)
|
||||
. += "[icon_keyboard]_off"
|
||||
return
|
||||
@@ -40,7 +42,7 @@
|
||||
if(machine_stat & BROKEN)
|
||||
overlay_state = "[icon_state]_broken"
|
||||
SSvis_overlays.add_vis_overlay(src, icon, overlay_state, layer, plane, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, overlay_state, layer, EMISSIVE_STRUCTURE_PLANE, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, overlay_state, layer, EMISSIVE_PLANE, dir)
|
||||
|
||||
/obj/machinery/computer/power_change()
|
||||
. = ..()
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
flags_1 = PREVENT_CLICK_UNDER_1
|
||||
receive_ricochet_chance_mod = 0.8
|
||||
damage_deflection = 10
|
||||
blocks_emissive = EMISSIVE_BLOCK_UNIQUE
|
||||
|
||||
interaction_flags_atom = INTERACT_ATOM_UI_INTERACT
|
||||
|
||||
|
||||
@@ -76,6 +76,8 @@
|
||||
|
||||
/obj/machinery/firealarm/update_overlays()
|
||||
. = ..()
|
||||
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
|
||||
|
||||
if(machine_stat & NOPOWER)
|
||||
return
|
||||
|
||||
@@ -84,26 +86,26 @@
|
||||
if(is_station_level(z))
|
||||
. += "fire_[GLOB.security_level]"
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "fire_[GLOB.security_level]", layer, plane, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "fire_[GLOB.security_level]", layer, EMISSIVE_STRUCTURE_PLANE, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "fire_[GLOB.security_level]", layer, EMISSIVE_PLANE, dir)
|
||||
else
|
||||
. += "fire_[SEC_LEVEL_GREEN]"
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "fire_[SEC_LEVEL_GREEN]", layer, plane, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "fire_[SEC_LEVEL_GREEN]", layer, EMISSIVE_STRUCTURE_PLANE, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "fire_[SEC_LEVEL_GREEN]", layer, EMISSIVE_PLANE, dir)
|
||||
|
||||
var/area/A = get_area(src)
|
||||
|
||||
if(!detecting || !A.fire)
|
||||
. += "fire_off"
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "fire_off", layer, plane, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "fire_off", layer, EMISSIVE_STRUCTURE_PLANE, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "fire_off", layer, EMISSIVE_PLANE, dir)
|
||||
else if(obj_flags & EMAGGED)
|
||||
. += "fire_emagged"
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "fire_emagged", layer, plane, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "fire_emagged", layer, EMISSIVE_STRUCTURE_PLANE, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "fire_emagged", layer, EMISSIVE_PLANE, dir)
|
||||
else
|
||||
. += "fire_on"
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "fire_on", layer, plane, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "fire_on", layer, EMISSIVE_STRUCTURE_PLANE, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "fire_on", layer, EMISSIVE_PLANE, dir)
|
||||
|
||||
if(!panel_open && detecting && triggered) //It just looks horrible with the panel open
|
||||
. += "fire_detected"
|
||||
|
||||
@@ -24,22 +24,18 @@
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/light_switch/update_icon_state()
|
||||
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
|
||||
luminosity = 0
|
||||
if(machine_stat & NOPOWER)
|
||||
icon_state = "light-p"
|
||||
else
|
||||
luminosity = 1
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "light-glow", EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha)
|
||||
if(area.lightswitch)
|
||||
icon_state = "light1"
|
||||
else
|
||||
icon_state = "light0"
|
||||
|
||||
/obj/machinery/light_switch/update_overlays()
|
||||
. = ..()
|
||||
if(machine_stat & NOPOWER)
|
||||
return
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "light-glow", EMISSIVE_STRUCTURE_LAYER, EMISSIVE_STRUCTURE_PLANE, dir, alpha)
|
||||
|
||||
/obj/machinery/light_switch/examine(mob/user)
|
||||
. = ..()
|
||||
. += "It is [area.lightswitch ? "on" : "off"]."
|
||||
|
||||
@@ -165,6 +165,7 @@
|
||||
|
||||
/obj/machinery/recharger/update_overlays()
|
||||
. = ..()
|
||||
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
|
||||
luminosity = 0
|
||||
if(machine_stat & (NOPOWER|BROKEN) || !anchored)
|
||||
return
|
||||
@@ -176,10 +177,10 @@
|
||||
if (charging)
|
||||
if(using_power)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "recharger-charging", layer, plane, dir, alpha)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "recharger-charging", EMISSIVE_STRUCTURE_LAYER, EMISSIVE_STRUCTURE_PLANE, dir, alpha)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "recharger-charging", EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha)
|
||||
else
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "recharger-full", layer, plane, dir, alpha)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "recharger-full", EMISSIVE_STRUCTURE_LAYER, EMISSIVE_STRUCTURE_PLANE, dir, alpha)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "recharger-full", EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha)
|
||||
else
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "recharger-empty", layer, plane, dir, alpha)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "recharger-empty", EMISSIVE_STRUCTURE_LAYER, EMISSIVE_STRUCTURE_PLANE, dir, alpha)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "recharger-empty", EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha)
|
||||
|
||||
@@ -79,23 +79,21 @@
|
||||
|
||||
/obj/machinery/stasis/update_overlays()
|
||||
. = ..()
|
||||
if(!mattress_state)
|
||||
return
|
||||
var/_running = stasis_running()
|
||||
var/list/overlays_to_remove = managed_vis_overlays
|
||||
|
||||
if(!mattress_on)
|
||||
mattress_on = SSvis_overlays.add_vis_overlay(src, icon, mattress_state, BELOW_OBJ_LAYER, plane, dir, alpha = 0, unique = TRUE)
|
||||
else
|
||||
vis_contents += mattress_on
|
||||
if(managed_vis_overlays)
|
||||
managed_vis_overlays += mattress_on
|
||||
else
|
||||
managed_vis_overlays = list(mattress_on)
|
||||
if(mattress_state)
|
||||
if(!mattress_on || !managed_vis_overlays)
|
||||
mattress_on = SSvis_overlays.add_vis_overlay(src, icon, mattress_state, BELOW_OBJ_LAYER, plane, dir, alpha = 0, unique = TRUE)
|
||||
|
||||
var/is_running = stasis_running()
|
||||
if(mattress_on.alpha ? !is_running : is_running) //check the inverse of is_running compared to truthy alpha, to see if they differ
|
||||
var/new_alpha = is_running ? 255 : 0
|
||||
var/easing_direction = is_running ? EASE_OUT : EASE_IN
|
||||
animate(mattress_on, alpha = new_alpha, time = 50, easing = CUBIC_EASING|easing_direction)
|
||||
if(mattress_on.alpha ? !_running : _running) //check the inverse of _running compared to truthy alpha, to see if they differ
|
||||
var/new_alpha = _running ? 255 : 0
|
||||
var/easing_direction = _running ? EASE_OUT : EASE_IN
|
||||
animate(mattress_on, alpha = new_alpha, time = 50, easing = CUBIC_EASING|easing_direction)
|
||||
|
||||
overlays_to_remove = managed_vis_overlays - mattress_on
|
||||
|
||||
SSvis_overlays.remove_vis_overlay(src, overlays_to_remove)
|
||||
|
||||
/obj/machinery/stasis/obj_break(damage_flag)
|
||||
. = ..()
|
||||
|
||||
@@ -50,4 +50,4 @@
|
||||
var/turf/T = loc
|
||||
if(!istype(T)) //you know this will happen somehow
|
||||
CRASH("Turf decal initialized in an object/nullspace")
|
||||
T.AddElement(/datum/element/decal, icon, icon_state, dir, FALSE, color, null, null, null, alpha)
|
||||
T.AddElement(/datum/element/decal, icon, icon_state, dir, FALSE, color, null, null, alpha)
|
||||
|
||||
@@ -12,7 +12,6 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb
|
||||
name = "item"
|
||||
icon = 'icons/obj/items_and_weapons.dmi'
|
||||
blocks_emissive = EMISSIVE_BLOCK_GENERIC
|
||||
emissive_blocker_plane = ITEM_EMISSIVE_BLOCKER_PLANE
|
||||
|
||||
/* !!!!!!!!!!!!!!! IMPORTANT !!!!!!!!!!!!!!
|
||||
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
to_chat(user, "<span class='notice'>You need to get closer!</span>")
|
||||
return
|
||||
if(use_paint(user) && isturf(F))
|
||||
F.AddElement(/datum/element/decal, 'icons/turf/decals.dmi', stored_decal_total, stored_dir, CLEAN_TYPE_PAINT, color, null, null, null, alpha)
|
||||
F.AddElement(/datum/element/decal, 'icons/turf/decals.dmi', stored_decal_total, stored_dir, CLEAN_TYPE_PAINT, color, null, null, alpha)
|
||||
|
||||
/obj/item/airlock_painter/decal/AltClick(mob/user)
|
||||
. = ..()
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
* - multiplier: The amount to multiply the mats per unit by. Defaults to 1.
|
||||
*/
|
||||
/obj/item/stack/proc/set_mats_per_unit(list/mats, multiplier=1)
|
||||
mats_per_unit = LAZYLEN(mats) ? SSmaterials.FindOrCreateMaterialCombo(mats, multiplier) : mats
|
||||
mats_per_unit = SSmaterials.FindOrCreateMaterialCombo(mats, multiplier)
|
||||
update_custom_materials()
|
||||
|
||||
/** Updates the custom materials list of this stack.
|
||||
|
||||
@@ -247,109 +247,6 @@
|
||||
turf_type = /turf/open/floor/carpet/donk
|
||||
merge_type = /obj/item/stack/tile/carpet/donk
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive
|
||||
name = "emissive carpet"
|
||||
icon_state = "tile_carpet_black"
|
||||
inhand_icon_state = "tile-carpet-black"
|
||||
turf_type = /turf/open/floor/carpet/emissive
|
||||
merge_type = /obj/item/stack/tile/carpet/emissive
|
||||
/// The icon state used for the emissive decal.
|
||||
var/emissive_icon_state
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/Initialize(mapload, new_amount, merge)
|
||||
. = ..()
|
||||
if(!emissive_icon_state)
|
||||
emissive_icon_state = icon_state
|
||||
var/turf/open/floor/carpet/emissive/turf_path = turf_type
|
||||
AddElement(/datum/element/decal, icon, emissive_icon_state, dir, FALSE, initial(turf_path.emissive_color), EMISSIVE_ITEM_LAYER, EMISSIVE_ITEM_PLANE, null, initial(turf_path.emissive_alpha))
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon
|
||||
name = "emissive carpet"
|
||||
icon_state = "tile_carpet_neon_simple"
|
||||
turf_type = /turf/open/floor/carpet/emissive/neon
|
||||
merge_type = /obj/item/stack/tile/carpet/emissive/neon
|
||||
/// The icon state used for the neon decal
|
||||
var/neon_icon_state
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/Initialize(mapload, amount)
|
||||
. = ..()
|
||||
if(!neon_icon_state)
|
||||
neon_icon_state = emissive_icon_state
|
||||
var/turf/open/floor/carpet/emissive/neon/turf_path = turf_type
|
||||
AddElement(/datum/element/decal, icon, neon_icon_state, dir, FALSE, initial(turf_path.neon_color), FLOAT_LAYER, FLOAT_PLANE)
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple
|
||||
name = "simple neon carpet"
|
||||
icon_state = "tile_carpet_neon_simple"
|
||||
turf_type = /turf/open/floor/carpet/emissive/neon/simple
|
||||
merge_type = /obj/item/stack/tile/carpet/emissive/neon/simple
|
||||
emissive_icon_state = "tile_carpet_neon_simple_glow"
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/white
|
||||
name = "simple white neon carpet"
|
||||
turf_type = /turf/open/floor/carpet/emissive/neon/simple/white
|
||||
merge_type = /obj/item/stack/tile/carpet/emissive/neon/simple/white
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/red
|
||||
name = "simple red neon carpet"
|
||||
turf_type = /turf/open/floor/carpet/emissive/neon/simple/red
|
||||
merge_type = /obj/item/stack/tile/carpet/emissive/neon/simple/red
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/orange
|
||||
name = "emissive orange neon carpet"
|
||||
turf_type = /turf/open/floor/carpet/emissive/neon/simple/orange
|
||||
merge_type = /obj/item/stack/tile/carpet/emissive/neon/simple/orange
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/yellow
|
||||
name = "emissive yellow neon carpet"
|
||||
turf_type = /turf/open/floor/carpet/emissive/neon/simple/yellow
|
||||
merge_type = /obj/item/stack/tile/carpet/emissive/neon/simple/yellow
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/lime
|
||||
name = "emissive lime neon carpet"
|
||||
turf_type = /turf/open/floor/carpet/emissive/neon/simple/lime
|
||||
merge_type = /obj/item/stack/tile/carpet/emissive/neon/simple/lime
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/green
|
||||
name = "emissive green neon carpet"
|
||||
turf_type = /turf/open/floor/carpet/emissive/neon/simple/green
|
||||
merge_type = /obj/item/stack/tile/carpet/emissive/neon/simple/green
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/cyan
|
||||
name = "emissive cyan neon carpet"
|
||||
turf_type = /turf/open/floor/carpet/emissive/neon/simple/cyan
|
||||
merge_type = /obj/item/stack/tile/carpet/emissive/neon/simple/cyan
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/teal
|
||||
name = "emissive teal neon carpet"
|
||||
turf_type = /turf/open/floor/carpet/emissive/neon/simple/teal
|
||||
merge_type = /obj/item/stack/tile/carpet/emissive/neon/simple/teal
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/blue
|
||||
name = "emissive blue neon carpet"
|
||||
turf_type = /turf/open/floor/carpet/emissive/neon/simple/blue
|
||||
merge_type = /obj/item/stack/tile/carpet/emissive/neon/simple/blue
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/purple
|
||||
name = "emissive purple neon carpet"
|
||||
turf_type = /turf/open/floor/carpet/emissive/neon/simple/purple
|
||||
merge_type = /obj/item/stack/tile/carpet/emissive/neon/simple/purple
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/violet
|
||||
name = "emissive violet neon carpet"
|
||||
turf_type = /turf/open/floor/carpet/emissive/neon/simple/violet
|
||||
merge_type = /obj/item/stack/tile/carpet/emissive/neon/simple/violet
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/pink
|
||||
name = "emissive pink neon carpet"
|
||||
turf_type = /turf/open/floor/carpet/emissive/neon/simple/pink
|
||||
merge_type = /obj/item/stack/tile/carpet/emissive/neon/simple/pink
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/black
|
||||
name = "emissive black neon carpet"
|
||||
turf_type = /turf/open/floor/carpet/emissive/neon/simple/black
|
||||
merge_type = /obj/item/stack/tile/carpet/emissive/neon/simple/black
|
||||
|
||||
/obj/item/stack/tile/carpet/fifty
|
||||
amount = 50
|
||||
|
||||
@@ -389,198 +286,6 @@
|
||||
/obj/item/stack/tile/carpet/donk/thirty
|
||||
amount = 30
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/thirty
|
||||
amount = 30
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/sixty
|
||||
amount = 60
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/thirty
|
||||
amount = 30
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/sixty
|
||||
amount = 60
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/thirty
|
||||
amount = 30
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/sixty
|
||||
amount = 60
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/white/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/white/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/white/thirty
|
||||
amount = 30
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/white/sixty
|
||||
amount = 60
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/red/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/red/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/red/thirty
|
||||
amount = 30
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/red/sixty
|
||||
amount = 60
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/orange/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/orange/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/orange/thirty
|
||||
amount = 30
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/orange/sixty
|
||||
amount = 60
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/yellow/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/yellow/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/yellow/thirty
|
||||
amount = 30
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/yellow/sixty
|
||||
amount = 60
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/lime/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/lime/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/lime/thirty
|
||||
amount = 30
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/lime/sixty
|
||||
amount = 60
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/green/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/green/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/green/thirty
|
||||
amount = 30
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/green/sixty
|
||||
amount = 60
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/cyan/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/cyan/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/cyan/thirty
|
||||
amount = 30
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/cyan/sixty
|
||||
amount = 60
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/teal/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/teal/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/teal/thirty
|
||||
amount = 30
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/teal/sixty
|
||||
amount = 60
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/blue/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/blue/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/blue/thirty
|
||||
amount = 30
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/blue/sixty
|
||||
amount = 60
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/purple/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/purple/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/purple/thirty
|
||||
amount = 30
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/purple/sixty
|
||||
amount = 60
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/violet/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/violet/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/violet/thirty
|
||||
amount = 30
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/violet/sixty
|
||||
amount = 60
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/pink/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/pink/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/pink/thirty
|
||||
amount = 30
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/pink/sixty
|
||||
amount = 60
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/black/ten
|
||||
amount = 10
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/black/twenty
|
||||
amount = 20
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/black/thirty
|
||||
amount = 30
|
||||
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/black/sixty
|
||||
amount = 60
|
||||
|
||||
/obj/item/stack/tile/fakespace
|
||||
name = "astral carpet"
|
||||
singular_name = "astral carpet tile"
|
||||
|
||||
@@ -8,8 +8,6 @@
|
||||
flags_ricochet = RICOCHET_HARD
|
||||
receive_ricochet_chance_mod = 0.6
|
||||
pass_flags_self = PASSSTRUCTURE
|
||||
blocks_emissive = EMISSIVE_BLOCK_GENERIC
|
||||
emissive_blocker_plane = STRUCTURE_EMISSIVE_BLOCKER_PLANE
|
||||
var/broken = FALSE
|
||||
|
||||
/obj/structure/Initialize()
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
max_integrity = 200
|
||||
integrity_failure = 0.25
|
||||
armor = list(MELEE = 20, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 10, BIO = 0, RAD = 0, FIRE = 70, ACID = 60)
|
||||
blocks_emissive = EMISSIVE_BLOCK_UNIQUE
|
||||
|
||||
var/icon_door = null
|
||||
var/icon_door_override = FALSE //override to have open overlay use icon different to its base's
|
||||
@@ -72,6 +71,7 @@
|
||||
|
||||
/obj/structure/closet/proc/closet_update_overlays(list/new_overlays)
|
||||
. = new_overlays
|
||||
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
|
||||
luminosity = 0
|
||||
if(!opened)
|
||||
if(icon_door)
|
||||
@@ -83,7 +83,7 @@
|
||||
if(secure && !broken)
|
||||
//Overlay is similar enough for both that we can use the same mask for both
|
||||
luminosity = 1
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "locked", EMISSIVE_STRUCTURE_LAYER, EMISSIVE_STRUCTURE_PLANE, dir, alpha)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "locked", EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha)
|
||||
if(locked)
|
||||
. += "locked"
|
||||
else
|
||||
|
||||
@@ -325,189 +325,6 @@
|
||||
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_DONK)
|
||||
canSmoothWith = list(SMOOTH_GROUP_CARPET_DONK)
|
||||
|
||||
/// Carpets that generate an emissive decal to augment them
|
||||
/turf/open/floor/carpet/emissive
|
||||
name = "Emissive Carpet"
|
||||
icon = 'icons/turf/floors/carpet_black.dmi'
|
||||
icon_state = "carpet_black-255"
|
||||
base_icon_state = "carpet_black"
|
||||
floor_tile = /obj/item/stack/tile/carpet/emissive
|
||||
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_EMISSIVE)
|
||||
canSmoothWith = list(SMOOTH_GROUP_CARPET_EMISSIVE)
|
||||
|
||||
// Emissive decal settings:
|
||||
/// The icon used to generate the emisive overlay
|
||||
var/emissive_icon
|
||||
/// The base icon state for the emissive overlay
|
||||
var/base_emissive_state
|
||||
/// The color of the emissive decal
|
||||
var/emissive_color
|
||||
/// The alpha of the emissive decal
|
||||
var/emissive_alpha = 150
|
||||
|
||||
/turf/open/floor/carpet/emissive/Initialize(mapload, ...)
|
||||
. = ..()
|
||||
if(!emissive_icon)
|
||||
emissive_icon = icon
|
||||
if(!base_emissive_state)
|
||||
base_emissive_state = base_icon_state
|
||||
AddElement(/datum/element/decal/smoothing, emissive_icon, base_emissive_state, dir, FALSE, emissive_color, EMISSIVE_TURF_LAYER, EMISSIVE_TURF_PLANE, null, emissive_alpha)
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon
|
||||
name = "Neon Carpet"
|
||||
desc = "A carpet with a design woven into it using phosphorescent thread."
|
||||
icon = 'icons/turf/floors/carpet_neon_simple.dmi'
|
||||
icon_state = "base-255"
|
||||
base_icon_state = "base"
|
||||
floor_tile = /obj/item/stack/tile/carpet/emissive/neon
|
||||
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_NEON)
|
||||
canSmoothWith = list(SMOOTH_GROUP_CARPET_NEON)
|
||||
|
||||
// Neon Decals:
|
||||
/// The icon used
|
||||
var/neon_icon
|
||||
/// The base icon state used for the neon decals
|
||||
var/base_neon_state
|
||||
/// The color used for the neon decals
|
||||
var/neon_color
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/Initialize(mapload, ...)
|
||||
. = ..()
|
||||
if(!neon_icon)
|
||||
neon_icon = emissive_icon
|
||||
if(!base_neon_state)
|
||||
base_neon_state = base_emissive_state
|
||||
AddElement(/datum/element/decal/smoothing, neon_icon, base_neon_state, dir, FALSE, neon_color)
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple
|
||||
name = "Simple Neon Carpet"
|
||||
desc = "A carpet with a simple design woven into it using phosphorescent thread."
|
||||
icon = 'icons/turf/floors/carpet_neon_simple.dmi'
|
||||
icon_state = "base-255"
|
||||
base_icon_state = "base"
|
||||
base_neon_state = "lights"
|
||||
base_emissive_state = "glow"
|
||||
floor_tile = /obj/item/stack/tile/carpet/emissive/neon/simple
|
||||
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_SIMPLE_NEON)
|
||||
canSmoothWith = list(SMOOTH_GROUP_CARPET_SIMPLE_NEON)
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple/white
|
||||
name = "Simple White Neon Carpet"
|
||||
desc = "A carpet with a simple design woven into it using white phosphorescent thread."
|
||||
neon_color = COLOR_WHITE
|
||||
emissive_color = COLOR_WHITE
|
||||
floor_tile = /obj/item/stack/tile/carpet/emissive/neon/simple/white
|
||||
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_SIMPLE_NEON_WHITE)
|
||||
canSmoothWith = list(SMOOTH_GROUP_CARPET_SIMPLE_NEON_WHITE)
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple/red
|
||||
name = "Simple Red Neon Carpet"
|
||||
desc = "A carpet with a simple design woven into it using red phosphorescent thread."
|
||||
neon_color = COLOR_RED
|
||||
emissive_color = COLOR_RED
|
||||
floor_tile = /obj/item/stack/tile/carpet/emissive/neon/simple/red
|
||||
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_SIMPLE_NEON_RED)
|
||||
canSmoothWith = list(SMOOTH_GROUP_CARPET_SIMPLE_NEON_RED)
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple/orange
|
||||
name = "Simple Orange Neon Carpet"
|
||||
desc = "A carpet with a simple design woven into it using orange phosphorescent thread."
|
||||
neon_color = COLOR_ORANGE
|
||||
emissive_color = COLOR_ORANGE
|
||||
floor_tile = /obj/item/stack/tile/carpet/emissive/neon/simple/orange
|
||||
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_SIMPLE_NEON_ORANGE)
|
||||
canSmoothWith = list(SMOOTH_GROUP_CARPET_SIMPLE_NEON_ORANGE)
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple/yellow
|
||||
name = "Simple Yellow Neon Carpet"
|
||||
desc = "A carpet with a simple design woven into it using yellow phosphorescent thread."
|
||||
neon_color = COLOR_YELLOW
|
||||
emissive_color = COLOR_YELLOW
|
||||
floor_tile = /obj/item/stack/tile/carpet/emissive/neon/simple/yellow
|
||||
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_SIMPLE_NEON_YELLOW)
|
||||
canSmoothWith = list(SMOOTH_GROUP_CARPET_SIMPLE_NEON_YELLOW)
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple/lime
|
||||
name = "Simple Lime Neon Carpet"
|
||||
desc = "A carpet with a simple design woven into it using lime phosphorescent thread."
|
||||
neon_color = COLOR_LIME
|
||||
emissive_color = COLOR_LIME
|
||||
floor_tile = /obj/item/stack/tile/carpet/emissive/neon/simple/lime
|
||||
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_SIMPLE_NEON_LIME)
|
||||
canSmoothWith = list(SMOOTH_GROUP_CARPET_SIMPLE_NEON_LIME)
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple/green
|
||||
name = "Simple Green Neon Carpet"
|
||||
desc = "A carpet with a simple design woven into it using green phosphorescent thread."
|
||||
neon_color = COLOR_GREEN
|
||||
emissive_color = COLOR_GREEN
|
||||
floor_tile = /obj/item/stack/tile/carpet/emissive/neon/simple/green
|
||||
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_SIMPLE_NEON_GREEN)
|
||||
canSmoothWith = list(SMOOTH_GROUP_CARPET_SIMPLE_NEON_GREEN)
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple/cyan
|
||||
name = "Simple Cyan Neon Carpet"
|
||||
desc = "A carpet with a simple design woven into it using cyan phosphorescent thread."
|
||||
neon_color = COLOR_CYAN
|
||||
emissive_color = COLOR_CYAN
|
||||
floor_tile = /obj/item/stack/tile/carpet/emissive/neon/simple/cyan
|
||||
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_SIMPLE_NEON_CYAN)
|
||||
canSmoothWith = list(SMOOTH_GROUP_CARPET_SIMPLE_NEON_CYAN)
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple/teal
|
||||
name = "Simple Cyan Neon Carpet"
|
||||
desc = "A carpet with a simple design woven into it using teal phosphorescent thread."
|
||||
neon_color = COLOR_TEAL
|
||||
emissive_color = COLOR_TEAL
|
||||
floor_tile = /obj/item/stack/tile/carpet/emissive/neon/simple/teal
|
||||
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_SIMPLE_NEON_TEAL)
|
||||
canSmoothWith = list(SMOOTH_GROUP_CARPET_SIMPLE_NEON_TEAL)
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple/blue
|
||||
name = "Simple Blue Neon Carpet"
|
||||
desc = "A carpet with a simple design woven into it using blue phosphorescent thread."
|
||||
neon_color = COLOR_BLUE
|
||||
emissive_color = COLOR_BLUE
|
||||
floor_tile = /obj/item/stack/tile/carpet/emissive/neon/simple/blue
|
||||
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_SIMPLE_NEON_BLUE)
|
||||
canSmoothWith = list(SMOOTH_GROUP_CARPET_SIMPLE_NEON_BLUE)
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple/purple
|
||||
name = "Simple Indigo Neon Carpet"
|
||||
desc = "A carpet with a simple design woven into it using purple phosphorescent thread."
|
||||
neon_color = COLOR_PURPLE
|
||||
emissive_color = COLOR_PURPLE
|
||||
floor_tile = /obj/item/stack/tile/carpet/emissive/neon/simple/purple
|
||||
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_SIMPLE_NEON_PURPLE)
|
||||
canSmoothWith = list(SMOOTH_GROUP_CARPET_SIMPLE_NEON_PURPLE)
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple/violet
|
||||
name = "Simple Indigo Neon Carpet"
|
||||
desc = "A carpet with a simple design woven into it using violet phosphorescent thread."
|
||||
neon_color = COLOR_VIOLET
|
||||
emissive_color = COLOR_VIOLET
|
||||
floor_tile = /obj/item/stack/tile/carpet/emissive/neon/simple/violet
|
||||
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_SIMPLE_NEON_VIOLET)
|
||||
canSmoothWith = list(SMOOTH_GROUP_CARPET_SIMPLE_NEON_VIOLET)
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple/pink
|
||||
name = "Simple Indigo Neon Carpet"
|
||||
desc = "A carpet with a simple design woven into it using pink phosphorescent thread."
|
||||
neon_color = COLOR_PINK
|
||||
emissive_color = COLOR_PINK
|
||||
floor_tile = /obj/item/stack/tile/carpet/emissive/neon/simple/pink
|
||||
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_SIMPLE_NEON_PINK)
|
||||
canSmoothWith = list(SMOOTH_GROUP_CARPET_SIMPLE_NEON_PINK)
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple/black
|
||||
name = "Simple Black Neon Carpet"
|
||||
desc = "A carpet with a simple design wiven into it using especially dark thread."
|
||||
neon_color = COLOR_BLACK
|
||||
emissive_color = COLOR_BLACK
|
||||
floor_tile = /obj/item/stack/tile/carpet/emissive/neon/simple/black
|
||||
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_SIMPLE_NEON_BLACK)
|
||||
canSmoothWith = list(SMOOTH_GROUP_CARPET_SIMPLE_NEON_BLACK)
|
||||
|
||||
//*****Airless versions of all of the above.*****
|
||||
/turf/open/floor/carpet/airless
|
||||
initial_gas_mix = AIRLESS_ATMOS
|
||||
@@ -539,60 +356,6 @@
|
||||
/turf/open/floor/carpet/royalblue/airless
|
||||
initial_gas_mix = AIRLESS_ATMOS
|
||||
|
||||
/turf/open/floor/carpet/executive/airless
|
||||
initial_gas_mix = AIRLESS_ATMOS
|
||||
|
||||
/turf/open/floor/carpet/stellar/airless
|
||||
initial_gas_mix = AIRLESS_ATMOS
|
||||
|
||||
/turf/open/floor/carpet/donk/airless
|
||||
initial_gas_mix = AIRLESS_ATMOS
|
||||
|
||||
/turf/open/floor/carpet/emissive/airless
|
||||
initial_gas_mix = AIRLESS_ATMOS
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/airless
|
||||
initial_gas_mix = AIRLESS_ATMOS
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple/airless
|
||||
initial_gas_mix = AIRLESS_ATMOS
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple/white/airless
|
||||
initial_gas_mix = AIRLESS_ATMOS
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple/red/airless
|
||||
initial_gas_mix = AIRLESS_ATMOS
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple/orange/airless
|
||||
initial_gas_mix = AIRLESS_ATMOS
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple/yellow/airless
|
||||
initial_gas_mix = AIRLESS_ATMOS
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple/green/airless
|
||||
initial_gas_mix = AIRLESS_ATMOS
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple/cyan/airless
|
||||
initial_gas_mix = AIRLESS_ATMOS
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple/teal/airless
|
||||
initial_gas_mix = AIRLESS_ATMOS
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple/blue/airless
|
||||
initial_gas_mix = AIRLESS_ATMOS
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple/purple/airless
|
||||
initial_gas_mix = AIRLESS_ATMOS
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple/violet/airless
|
||||
initial_gas_mix = AIRLESS_ATMOS
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple/pink/airless
|
||||
initial_gas_mix = AIRLESS_ATMOS
|
||||
|
||||
/turf/open/floor/carpet/emissive/neon/simple/black/airless
|
||||
initial_gas_mix = AIRLESS_ATMOS
|
||||
|
||||
/turf/open/floor/carpet/narsie_act(force, ignore_mobs, probability = 20)
|
||||
. = (prob(probability) || force)
|
||||
for(var/I in src)
|
||||
|
||||
@@ -1579,40 +1579,6 @@
|
||||
/obj/item/stack/tile/carpet/royalblack/fifty)
|
||||
crate_name = "exotic carpet crate"
|
||||
|
||||
/datum/supply_pack/service/carpet_neon
|
||||
name = "Simple Neon Carpet Crate"
|
||||
desc = "Simple knitted carpets with phosphorescent lining. Contains 120 tiles each of 13 color variants."
|
||||
cost = CARGO_CRATE_VALUE * 15
|
||||
contains = list(
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/white/sixty,
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/white/sixty,
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/red/sixty,
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/red/sixty,
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/orange/sixty,
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/orange/sixty,
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/yellow/sixty,
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/yellow/sixty,
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/lime/sixty,
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/lime/sixty,
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/green/sixty,
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/green/sixty,
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/cyan/sixty,
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/cyan/sixty,
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/teal/sixty,
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/teal/sixty,
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/blue/sixty,
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/blue/sixty,
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/purple/sixty,
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/purple/sixty,
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/violet/sixty,
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/violet/sixty,
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/pink/sixty,
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/pink/sixty,
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/black/sixty,
|
||||
/obj/item/stack/tile/carpet/emissive/neon/simple/black/sixty,
|
||||
)
|
||||
crate_name = "neon carpet crate"
|
||||
|
||||
/datum/supply_pack/service/lightbulbs
|
||||
name = "Replacement Lights"
|
||||
desc = "May the light of Aether shine upon this station! Or at least, the light of forty two light tubes and twenty one light bulbs."
|
||||
|
||||
@@ -41,7 +41,9 @@
|
||||
. += "<span class='notice'>The status display reads: This unit can hold a maximum of <b>[max_n_of_items]</b> items.</span>"
|
||||
|
||||
/obj/machinery/smartfridge/update_icon_state()
|
||||
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
|
||||
if(!machine_stat)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "smartfridge-light-mask", EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha)
|
||||
if (visible_contents)
|
||||
switch(contents.len)
|
||||
if(0)
|
||||
@@ -57,10 +59,7 @@
|
||||
else
|
||||
icon_state = "[initial(icon_state)]-off"
|
||||
|
||||
/obj/machinery/smartfridge/update_overlays()
|
||||
. = ..()
|
||||
if(!machine_stat)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "smartfridge-light-mask", EMISSIVE_STRUCTURE_LAYER, EMISSIVE_STRUCTURE_PLANE, dir, alpha)
|
||||
|
||||
|
||||
/*******************
|
||||
* Item Adding
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
/atom/movable/emissive_blocker
|
||||
name = ""
|
||||
plane = EMISSIVE_BLOCKER_PLANE
|
||||
layer = EMISSIVE_LAYER
|
||||
layer = EMISSIVE_BLOCKER_LAYER
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
//Why?
|
||||
//render_targets copy the transform of the target as well, but vis_contents also applies the transform
|
||||
@@ -17,12 +17,11 @@
|
||||
//Since only render_target handles transform we don't get any applied transform "stacking"
|
||||
appearance_flags = RESET_TRANSFORM
|
||||
|
||||
/atom/movable/emissive_blocker/Initialize(mapload, source, render_plane = EMISSIVE_BLOCKER_PLANE)
|
||||
/atom/movable/emissive_blocker/Initialize(mapload, source)
|
||||
. = ..()
|
||||
verbs.Cut() //Cargo culting from lighting object, this maybe affects memory usage?
|
||||
|
||||
render_source = source
|
||||
plane = render_plane
|
||||
|
||||
/atom/movable/emissive_blocker/ex_act(severity)
|
||||
return FALSE
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
mouse_drag_pointer = MOUSE_ACTIVE_POINTER
|
||||
throwforce = 10
|
||||
blocks_emissive = EMISSIVE_BLOCK_GENERIC
|
||||
emissive_blocker_plane = MOB_EMISSIVE_BLOCKER_PLANE
|
||||
pass_flags_self = PASSMOB
|
||||
|
||||
///when this be added to vis_contents of something it inherit something.plane, important for visualisation of mob in openspace.
|
||||
|
||||
+55
-52
@@ -197,7 +197,6 @@
|
||||
/obj/machinery/power/apc/Destroy()
|
||||
GLOB.apcs_list -= src
|
||||
|
||||
UnregisterSignal(src, COMSIG_ATOM_UPDATE_ICON)
|
||||
if(malfai && operating)
|
||||
malfai.malf_picker.processing_time = clamp(malfai.malf_picker.processing_time - 10,0,1000)
|
||||
area.power_light = FALSE
|
||||
@@ -229,7 +228,6 @@
|
||||
|
||||
/obj/machinery/power/apc/Initialize(mapload)
|
||||
. = ..()
|
||||
RegisterSignal(src, COMSIG_ATOM_UPDATE_ICON, .proc/check_updates)
|
||||
if(!mapload)
|
||||
return
|
||||
has_electronics = APC_ELECTRONICS_SECURED
|
||||
@@ -294,11 +292,55 @@
|
||||
// update the APC icon to show the three base states
|
||||
// also add overlays for indicator lights
|
||||
/obj/machinery/power/apc/update_icon()
|
||||
. = ..()
|
||||
if(!.)
|
||||
var/update = check_updates() //returns 0 if no need to update icons.
|
||||
// 1 if we need to update the icon_state
|
||||
// 2 if we need to update the overlays
|
||||
if(!update)
|
||||
icon_update_needed = FALSE
|
||||
return
|
||||
|
||||
if(update & 1) // Updating the icon state
|
||||
if(update_state & UPSTATE_ALLGOOD)
|
||||
icon_state = "apc0"
|
||||
else if(update_state & (UPSTATE_OPENED1|UPSTATE_OPENED2))
|
||||
var/basestate = "apc[ cell ? "2" : "1" ]"
|
||||
if(update_state & UPSTATE_OPENED1)
|
||||
if(update_state & (UPSTATE_MAINT|UPSTATE_BROKE))
|
||||
icon_state = "apcmaint" //disabled APC cannot hold cell
|
||||
else
|
||||
icon_state = basestate
|
||||
else if(update_state & UPSTATE_OPENED2)
|
||||
if (update_state & UPSTATE_BROKE || malfhack)
|
||||
icon_state = "[basestate]-b-nocover"
|
||||
else
|
||||
icon_state = "[basestate]-nocover"
|
||||
else if(update_state & UPSTATE_BROKE)
|
||||
icon_state = "apc-b"
|
||||
else if(update_state & UPSTATE_BLUESCREEN)
|
||||
icon_state = "apcemag"
|
||||
else if(update_state & UPSTATE_WIREEXP)
|
||||
icon_state = "apcewires"
|
||||
else if(update_state & UPSTATE_MAINT)
|
||||
icon_state = "apc0"
|
||||
|
||||
if(!(update_state & UPSTATE_ALLGOOD))
|
||||
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
|
||||
|
||||
if(update & 2)
|
||||
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
|
||||
if(!(machine_stat & (BROKEN|MAINT)) && update_state & UPSTATE_ALLGOOD)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "apcox-[locked]", layer, plane, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "apcox-[locked]", layer, EMISSIVE_PLANE, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "apco3-[charging]", layer, plane, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "apco3-[charging]", layer, EMISSIVE_PLANE, dir)
|
||||
if(operating)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "apco0-[equipment]", layer, plane, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "apco0-[equipment]", layer, EMISSIVE_PLANE, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "apco1-[lighting]", layer, plane, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "apco1-[lighting]", layer, EMISSIVE_PLANE, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "apco2-[environ]", layer, plane, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "apco2-[environ]", layer, EMISSIVE_PLANE, dir)
|
||||
|
||||
// And now, separately for cleanness, the lighting changing
|
||||
if(update_state & UPSTATE_ALLGOOD)
|
||||
switch(charging)
|
||||
@@ -318,49 +360,7 @@
|
||||
|
||||
icon_update_needed = FALSE
|
||||
|
||||
/obj/machinery/power/apc/update_icon_state()
|
||||
if(update_state & UPSTATE_ALLGOOD)
|
||||
icon_state = "apc0"
|
||||
return
|
||||
if(update_state & (UPSTATE_OPENED1|UPSTATE_OPENED2))
|
||||
var/basestate = "apc[cell ? 2 : 1]"
|
||||
if(update_state & UPSTATE_OPENED1)
|
||||
icon_state = (update_state & (UPSTATE_MAINT|UPSTATE_BROKE)) ? "apcmaint" : basestate
|
||||
else if(update_state & UPSTATE_OPENED2)
|
||||
icon_state = "[basestate][((update_state & UPSTATE_BROKE) || malfhack) ? "-b" : null]-nocover"
|
||||
return
|
||||
if(update_state & UPSTATE_BROKE)
|
||||
icon_state = "apc-b"
|
||||
return
|
||||
if(update_state & UPSTATE_BLUESCREEN)
|
||||
icon_state = "apcemag"
|
||||
return
|
||||
if(update_state & UPSTATE_WIREEXP)
|
||||
icon_state = "apcewires"
|
||||
return
|
||||
if(update_state & UPSTATE_MAINT)
|
||||
icon_state = "apc0"
|
||||
return
|
||||
|
||||
/obj/machinery/power/apc/update_overlays()
|
||||
. = ..()
|
||||
if((machine_stat & (BROKEN|MAINT)) || !(update_state & UPSTATE_ALLGOOD))
|
||||
return
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "apcox-[locked]", layer, plane, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "apcox-[locked]", layer, EMISSIVE_STRUCTURE_PLANE, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "apco3-[charging]", layer, plane, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "apco3-[charging]", layer, EMISSIVE_STRUCTURE_PLANE, dir)
|
||||
if(!operating)
|
||||
return
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "apco0-[equipment]", layer, plane, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "apco0-[equipment]", layer, EMISSIVE_STRUCTURE_PLANE, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "apco1-[lighting]", layer, plane, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "apco1-[lighting]", layer, EMISSIVE_STRUCTURE_PLANE, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "apco2-[environ]", layer, plane, dir)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "apco2-[environ]", layer, EMISSIVE_STRUCTURE_PLANE, dir)
|
||||
|
||||
/obj/machinery/power/apc/proc/check_updates(obj/machinery/power/apc/self)
|
||||
SIGNAL_HANDLER
|
||||
/obj/machinery/power/apc/proc/check_updates()
|
||||
var/last_update_state = update_state
|
||||
var/last_update_overlay = update_overlay
|
||||
update_state = 0
|
||||
@@ -420,11 +420,14 @@
|
||||
update_overlay |= APC_UPOVERLAY_ENVIRON2
|
||||
|
||||
|
||||
. = NONE
|
||||
if(last_update_state == update_state)
|
||||
. |= COMSIG_ATOM_NO_UPDATE_ICON_STATE
|
||||
if((last_update_overlay == update_overlay) && (update_state & UPSTATE_ALLGOOD))
|
||||
. |= COMSIG_ATOM_NO_UPDATE_OVERLAYS
|
||||
var/results = 0
|
||||
if(last_update_state == update_state && last_update_overlay == update_overlay)
|
||||
return 0
|
||||
if(last_update_state != update_state)
|
||||
results += 1
|
||||
if(last_update_overlay != update_overlay)
|
||||
results += 2
|
||||
return results
|
||||
|
||||
// Used in process so it doesn't update the icon too much
|
||||
/obj/machinery/power/apc/proc/queue_icon_update()
|
||||
|
||||
@@ -400,6 +400,7 @@
|
||||
|
||||
/obj/machinery/light/update_overlays()
|
||||
. = ..()
|
||||
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
|
||||
if(on && status == LIGHT_OK)
|
||||
var/area/A = get_area(src)
|
||||
if(emergency_mode || (A?.fire))
|
||||
|
||||
@@ -1708,104 +1708,6 @@
|
||||
taste_description = "blueyalty" //also intentional
|
||||
carpet_type = /turf/open/floor/carpet/royalblue
|
||||
|
||||
/datum/reagent/carpet/neon
|
||||
name = "Neon Carpet"
|
||||
description = "For those who like the 1980s, vegas, and debugging."
|
||||
color = COLOR_ALMOST_BLACK
|
||||
taste_description = "neon"
|
||||
carpet_type = /turf/open/floor/carpet/emissive/neon
|
||||
|
||||
/datum/reagent/carpet/neon/simple_white
|
||||
name = "Simple White Neon Carpet"
|
||||
description = "For those who like fluorescent lighting."
|
||||
color = LIGHT_COLOR_HALOGEN
|
||||
taste_description = "sodium vapor"
|
||||
carpet_type = /turf/open/floor/carpet/emissive/neon/simple/white
|
||||
|
||||
/datum/reagent/carpet/neon/simple_red
|
||||
name = "Simple Red Neon Carpet"
|
||||
description = "For those who like a bit of uncertainty."
|
||||
color = COLOR_RED
|
||||
taste_description = "neon hallucinations"
|
||||
carpet_type = /turf/open/floor/carpet/emissive/neon/simple/red
|
||||
|
||||
/datum/reagent/carpet/neon/simple_orange
|
||||
name = "Simple Orange Neon Carpet"
|
||||
description = "For those who like some sharp edges."
|
||||
color = COLOR_ORANGE
|
||||
taste_description = "neon spines"
|
||||
carpet_type = /turf/open/floor/carpet/emissive/neon/simple/orange
|
||||
|
||||
/datum/reagent/carpet/neon/simple_yellow
|
||||
name = "Simple Yellow Neon Carpet"
|
||||
description = "For those who need a little stability in their lives."
|
||||
color = COLOR_YELLOW
|
||||
taste_description = "stabilized neon"
|
||||
carpet_type = /turf/open/floor/carpet/emissive/neon/simple/yellow
|
||||
|
||||
/datum/reagent/carpet/neon/simple_lime
|
||||
name = "Simple Lime Neon Carpet"
|
||||
description = "For those who need a little bitterness."
|
||||
color = COLOR_LIME
|
||||
taste_description = "neon citrus"
|
||||
carpet_type = /turf/open/floor/carpet/emissive/neon/simple/lime
|
||||
|
||||
/datum/reagent/carpet/neon/simple_green
|
||||
name = "Simple Green Neon Carpet"
|
||||
description = "For those who need a little bit of change in their lives."
|
||||
color = COLOR_GREEN
|
||||
taste_description = "radium"
|
||||
carpet_type = /turf/open/floor/carpet/emissive/neon/simple/green
|
||||
|
||||
/datum/reagent/carpet/neon/simple_cyan
|
||||
name = "Simple Cyan Neon Carpet"
|
||||
description = "For those who need to take a breath."
|
||||
color = COLOR_DARK_CYAN
|
||||
taste_description = "neon air"
|
||||
carpet_type = /turf/open/floor/carpet/emissive/neon/simple/cyan
|
||||
|
||||
/datum/reagent/carpet/neon/simple_teal
|
||||
name = "Simple Teal Neon Carpet"
|
||||
description = "For those who need a smoke."
|
||||
color = COLOR_TEAL
|
||||
taste_description = "neon tobacco"
|
||||
carpet_type = /turf/open/floor/carpet/emissive/neon/simple/teal
|
||||
|
||||
/datum/reagent/carpet/neon/simple_blue
|
||||
name = "Simple Blue Neon Carpet"
|
||||
description = "For those who need to feel joy again."
|
||||
color = COLOR_NAVY
|
||||
taste_description = "neon blue"
|
||||
carpet_type = /turf/open/floor/carpet/emissive/neon/simple/blue
|
||||
|
||||
/datum/reagent/carpet/neon/simple_purple
|
||||
name = "Simple Purple Neon Carpet"
|
||||
description = "For those that need a little bit of exploration."
|
||||
color = COLOR_PURPLE
|
||||
taste_description = "neon hell"
|
||||
carpet_type = /turf/open/floor/carpet/emissive/neon/simple/purple
|
||||
|
||||
/datum/reagent/carpet/neon/simple_violet
|
||||
name = "Simple Violet Neon Carpet"
|
||||
description = "For those who want to temp fate."
|
||||
color = COLOR_VIOLET
|
||||
taste_description = "neon hell"
|
||||
carpet_type = /turf/open/floor/carpet/emissive/neon/simple/violet
|
||||
|
||||
/datum/reagent/carpet/neon/simple_pink
|
||||
name = "Simple Pink Neon Carpet"
|
||||
description = "For those just want to stop thinking so much."
|
||||
color = COLOR_PINK
|
||||
taste_description = "neon pink"
|
||||
carpet_type = /turf/open/floor/carpet/emissive/neon/simple/pink
|
||||
|
||||
/datum/reagent/carpet/neon/simple_black
|
||||
name = "Simple Black Neon Carpet"
|
||||
description = "For those who need to catch their breath."
|
||||
color = COLOR_BLACK
|
||||
taste_description = "neon ash"
|
||||
carpet_type = /turf/open/floor/carpet/emissive/neon/simple/black
|
||||
|
||||
/datum/reagent/bromine
|
||||
name = "Bromine"
|
||||
description = "A brownish liquid that's highly reactive. Useful for stopping free radicals, but not intended for human consumption."
|
||||
|
||||
@@ -387,57 +387,6 @@
|
||||
results = list(/datum/reagent/carpet/royal/blue = 2)
|
||||
required_reagents = list(/datum/reagent/carpet/blue = 1, /datum/reagent/royal_bee_jelly = 1)
|
||||
|
||||
/datum/chemical_reaction/carpet/simple_neon_white
|
||||
results = list(/datum/reagent/carpet/neon/simple_white = 2)
|
||||
required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/tinlux = 1, /datum/reagent/sodium = 1)
|
||||
|
||||
/datum/chemical_reaction/carpet/simple_neon_red
|
||||
results = list(/datum/reagent/carpet/neon/simple_red = 2)
|
||||
required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/tinlux = 1, /datum/reagent/toxin/mindbreaker = 1)
|
||||
|
||||
/datum/chemical_reaction/carpet/simple_neon_orange
|
||||
results = list(/datum/reagent/carpet/neon/simple_orange = 2)
|
||||
required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/tinlux = 1, /datum/reagent/consumable/vitfro = 1)
|
||||
|
||||
/datum/chemical_reaction/carpet/simple_neon_yellow
|
||||
results = list(/datum/reagent/carpet/neon/simple_yellow = 2)
|
||||
required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/tinlux = 1, /datum/reagent/stabilizing_agent = 1)
|
||||
|
||||
/datum/chemical_reaction/carpet/simple_neon_lime
|
||||
results = list(/datum/reagent/carpet/neon/simple_lime = 2)
|
||||
required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/tinlux = 1, /datum/reagent/consumable/limejuice = 1)
|
||||
|
||||
/datum/chemical_reaction/carpet/simple_neon_green
|
||||
results = list(/datum/reagent/carpet/neon/simple_green = 2)
|
||||
required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/tinlux = 1, /datum/reagent/toxin/mutagen = 1)
|
||||
|
||||
/datum/chemical_reaction/carpet/simple_neon_cyan
|
||||
results = list(/datum/reagent/carpet/neon/simple_cyan = 2)
|
||||
required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/tinlux = 1, /datum/reagent/medicine/salbutamol = 1)
|
||||
|
||||
/datum/chemical_reaction/carpet/simple_neon_teal
|
||||
results = list(/datum/reagent/carpet/neon/simple_teal = 2)
|
||||
required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/tinlux = 1, /datum/reagent/drug/nicotine = 1)
|
||||
|
||||
/datum/chemical_reaction/carpet/simple_neon_blue
|
||||
results = list(/datum/reagent/carpet/neon/simple_blue = 2)
|
||||
required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/tinlux = 1, /datum/reagent/drug/happiness = 1)
|
||||
|
||||
/datum/chemical_reaction/carpet/simple_neon_purple
|
||||
results = list(/datum/reagent/carpet/neon/simple_purple = 2)
|
||||
required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/tinlux = 1, /datum/reagent/plasma_oxide = 1)
|
||||
|
||||
/datum/chemical_reaction/carpet/simple_neon_violet
|
||||
results = list(/datum/reagent/carpet/neon/simple_violet = 2)
|
||||
required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/tinlux = 1, /datum/reagent/medicine/c2/helbital = 1)
|
||||
|
||||
/datum/chemical_reaction/carpet/simple_neon_pink
|
||||
results = list(/datum/reagent/carpet/neon/simple_pink = 2)
|
||||
required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/tinlux = 1, /datum/reagent/impedrezene = 1)
|
||||
|
||||
/datum/chemical_reaction/carpet/simple_neon_black
|
||||
results = list(/datum/reagent/carpet/neon/simple_black = 2)
|
||||
required_reagents = list(/datum/reagent/carpet = 1, /datum/reagent/consumable/tinlux = 1, /datum/reagent/medicine/c2/multiver = 1)
|
||||
|
||||
/datum/chemical_reaction/oil
|
||||
results = list(/datum/reagent/fuel/oil = 3)
|
||||
|
||||
@@ -346,6 +346,7 @@
|
||||
/obj/machinery/disposal/bin/update_overlays()
|
||||
. = ..()
|
||||
|
||||
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
|
||||
luminosity = 0
|
||||
|
||||
if(machine_stat & BROKEN)
|
||||
@@ -363,15 +364,15 @@
|
||||
//check for items in disposal - occupied light
|
||||
if(contents.len > 0)
|
||||
. += "dispover-full"
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "dispover-full", EMISSIVE_STRUCTURE_LAYER, EMISSIVE_STRUCTURE_PLANE, dir, alpha)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "dispover-full", EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha)
|
||||
|
||||
//charging and ready light
|
||||
if(pressure_charging)
|
||||
. += "dispover-charge"
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "dispover-charge-glow", EMISSIVE_STRUCTURE_LAYER, EMISSIVE_STRUCTURE_PLANE, dir, alpha)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "dispover-charge-glow", EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha)
|
||||
else if(full_pressure)
|
||||
. += "dispover-ready"
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "dispover-ready-glow", EMISSIVE_STRUCTURE_LAYER, EMISSIVE_STRUCTURE_PLANE, dir, alpha)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "dispover-ready-glow", EMISSIVE_LAYER, EMISSIVE_PLANE, dir, alpha)
|
||||
|
||||
/obj/machinery/disposal/bin/proc/do_flush()
|
||||
set waitfor = FALSE
|
||||
|
||||
@@ -28,10 +28,11 @@
|
||||
|
||||
/obj/machinery/nanite_program_hub/update_overlays()
|
||||
. = ..()
|
||||
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
|
||||
if((machine_stat & (NOPOWER|MAINT|BROKEN)) || panel_open)
|
||||
return
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "nanite_program_hub_on", layer, plane)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "nanite_program_hub_on", EMISSIVE_STRUCTURE_LAYER, EMISSIVE_STRUCTURE_PLANE)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "nanite_program_hub_on", EMISSIVE_LAYER, EMISSIVE_PLANE)
|
||||
|
||||
/obj/machinery/nanite_program_hub/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/disk/nanite_program))
|
||||
|
||||
@@ -13,10 +13,11 @@
|
||||
|
||||
/obj/machinery/nanite_programmer/update_overlays()
|
||||
. = ..()
|
||||
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
|
||||
if((machine_stat & (NOPOWER|MAINT|BROKEN)) || panel_open)
|
||||
return
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "nanite_programmer_on", layer, plane)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "nanite_programmer_on", EMISSIVE_STRUCTURE_LAYER, EMISSIVE_STRUCTURE_PLANE)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, "nanite_programmer_on", EMISSIVE_LAYER, EMISSIVE_PLANE)
|
||||
|
||||
/obj/machinery/nanite_programmer/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/disk/nanite_program))
|
||||
|
||||
@@ -7,8 +7,6 @@
|
||||
armor = list(MELEE = 30, BULLET = 30, LASER = 30, ENERGY = 0, BOMB = 30, BIO = 0, RAD = 0, FIRE = 60, ACID = 60)
|
||||
density = TRUE
|
||||
anchored = FALSE
|
||||
blocks_emissive = EMISSIVE_BLOCK_GENERIC
|
||||
emissive_blocker_plane = STRUCTURE_EMISSIVE_BLOCKER_PLANE
|
||||
COOLDOWN_DECLARE(cooldown_vehicle_move)
|
||||
var/list/mob/occupants //mob = bitflags of their control level.
|
||||
///Maximum amount of passengers plus drivers
|
||||
|
||||
@@ -259,8 +259,9 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
|
||||
if(!light_mask)
|
||||
return
|
||||
|
||||
SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays)
|
||||
if(!(machine_stat & BROKEN) && powered())
|
||||
SSvis_overlays.add_vis_overlay(src, icon, light_mask, EMISSIVE_STRUCTURE_LAYER, EMISSIVE_STRUCTURE_PLANE)
|
||||
SSvis_overlays.add_vis_overlay(src, icon, light_mask, EMISSIVE_LAYER, EMISSIVE_PLANE)
|
||||
|
||||
/obj/machinery/vending/obj_break(damage_flag)
|
||||
. = ..()
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 6.9 KiB |
+1
-3
@@ -623,12 +623,12 @@
|
||||
#include "code\datums\elements\caltrop.dm"
|
||||
#include "code\datums\elements\cleaning.dm"
|
||||
#include "code\datums\elements\climbable.dm"
|
||||
#include "code\datums\elements\decal.dm"
|
||||
#include "code\datums\elements\deferred_aquarium_content.dm"
|
||||
#include "code\datums\elements\digitalcamo.dm"
|
||||
#include "code\datums\elements\dryable.dm"
|
||||
#include "code\datums\elements\earhealing.dm"
|
||||
#include "code\datums\elements\embed.dm"
|
||||
#include "code\datums\elements\emissive_blocker.dm"
|
||||
#include "code\datums\elements\empprotection.dm"
|
||||
#include "code\datums\elements\firestacker.dm"
|
||||
#include "code\datums\elements\forced_gravity.dm"
|
||||
@@ -652,9 +652,7 @@
|
||||
#include "code\datums\elements\update_icon_blocker.dm"
|
||||
#include "code\datums\elements\update_icon_updates_onmob.dm"
|
||||
#include "code\datums\elements\waddling.dm"
|
||||
#include "code\datums\elements\decals\_decal.dm"
|
||||
#include "code\datums\elements\decals\blood.dm"
|
||||
#include "code\datums\elements\decals\smoothing.dm"
|
||||
#include "code\datums\elements\food\dunkable.dm"
|
||||
#include "code\datums\elements\food\food_trash.dm"
|
||||
#include "code\datums\elements\food\processable.dm"
|
||||
|
||||
Reference in New Issue
Block a user