mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-23 00:22:12 +00:00
Makes all light tubes & bulbs have colour according to the light they emit. There are 6 preset colours: RGB CMY. Any other color is possible by simply changing the already present brightness_color variable. This PR makes it so it actually changes the color of the item and wall object too.
Added two new colour defines used only along with preset coloured lights.
Coloured lights are only obtainable by random maintenace loot, cargo spawn or trader.
Added box of randomly mixed light colours and box for every preset light colour.
Removed two sets of redundant defines.
Converted light item New() to Initialize() (hopefully correctly).
Made couple tiny tweaks to the lights code.
EDIT, 7. Oct 2017:
When you hit light machinery or item with paint, it will change it's brightness_color var, instead of the color var.
Paint buckets can now paint items and people again.
You can now wash paint off by spraying yourself with fire extinguisher or otherwise covering yourself in water.
EDIT, 8. Oct 2017:
Removed one apparently unused global list.
Converted pain bucket New to Initialize and changed it's pathing style.
Shower can now wash paint too.
Fixed paint bucket sprites to be bit more dynamic and fixed the in hand sprite. Also added bucket lid.
128 lines
6.2 KiB
Plaintext
128 lines
6.2 KiB
Plaintext
#define LIGHTING_INTERVAL 1 // Frequency, in 1/10ths of a second, of the lighting process.
|
|
|
|
#define LIGHTING_HEIGHT 1 // height off the ground of light sources on the pseudo-z-axis, you should probably leave this alone
|
|
#define LIGHTING_Z_FACTOR 10 // Z diff is multiplied by this and LIGHTING_HEIGHT to get the final height of a light source. Affects how much darker A Z light gets with each level transitioned.
|
|
#define LIGHTING_ROUND_VALUE 1 / 200 //Value used to round lumcounts, values smaller than 1/255 don't matter (if they do, thanks sinking points), greater values will make lighting less precise, but in turn increase performance, VERY SLIGHTLY.
|
|
|
|
#define LIGHTING_ICON 'icons/effects/lighting_overlay.dmi' // icon used for lighting shading effects
|
|
#define LIGHTING_BASE_ICON_STATE "matrix" // icon_state used for normal color-matrix based lighting overlays.
|
|
#define LIGHTING_STATION_ICON_STATE "tubedefault" // icon_state used for lighting overlays that are just displaying standard station lighting.
|
|
#define LIGHTING_DARKNESS_ICON_STATE "black" // icon_state used for lighting overlays with no luminosity.
|
|
#define LIGHTING_TRANSPARENT_ICON_STATE "blank"
|
|
|
|
#define LIGHTING_SOFT_THRESHOLD 0.001 // If the max of the lighting lumcounts of each spectrum drops below this, disable luminosity on the lighting overlays.
|
|
#define LIGHTING_BLOCKED_FACTOR 0.5 // How much the range of a directional light will be reduced while facing a wall.
|
|
|
|
// If defined, instant updates will be used whenever server load permits. Otherwise queued updates are always used.
|
|
#define USE_INTELLIGENT_LIGHTING_UPDATES
|
|
|
|
// If I were you I'd leave this alone.
|
|
#define LIGHTING_BASE_MATRIX \
|
|
list \
|
|
( \
|
|
1, 1, 1, 0, \
|
|
1, 1, 1, 0, \
|
|
1, 1, 1, 0, \
|
|
1, 1, 1, 0, \
|
|
0, 0, 0, 1 \
|
|
) \
|
|
|
|
// Helpers so we can (more easily) control the colour matrices.
|
|
#define CL_MATRIX_RR 1
|
|
#define CL_MATRIX_RG 2
|
|
#define CL_MATRIX_RB 3
|
|
#define CL_MATRIX_RA 4
|
|
#define CL_MATRIX_GR 5
|
|
#define CL_MATRIX_GG 6
|
|
#define CL_MATRIX_GB 7
|
|
#define CL_MATRIX_GA 8
|
|
#define CL_MATRIX_BR 9
|
|
#define CL_MATRIX_BG 10
|
|
#define CL_MATRIX_BB 11
|
|
#define CL_MATRIX_BA 12
|
|
#define CL_MATRIX_AR 13
|
|
#define CL_MATRIX_AG 14
|
|
#define CL_MATRIX_AB 15
|
|
#define CL_MATRIX_AA 16
|
|
#define CL_MATRIX_CR 17
|
|
#define CL_MATRIX_CG 18
|
|
#define CL_MATRIX_CB 19
|
|
#define CL_MATRIX_CA 20
|
|
|
|
// Higher numbers override lower.
|
|
#define LIGHTING_NO_UPDATE 0
|
|
#define LIGHTING_VIS_UPDATE 1
|
|
#define LIGHTING_CHECK_UPDATE 2
|
|
#define LIGHTING_FORCE_UPDATE 3
|
|
|
|
// This color of overlay is very common - most of the station is this color when lit fully.
|
|
// Tube lights are a bluish-white, so we can't just assume 1-1-1 is full-illumination.
|
|
#define LIGHTING_DEFAULT_TUBE_R 0.96
|
|
#define LIGHTING_DEFAULT_TUBE_G 1
|
|
#define LIGHTING_DEFAULT_TUBE_B 1
|
|
|
|
//Some defines to generalise colours used in lighting.
|
|
//Important note on colors. Colors can end up significantly different from the basic html picture, especially when saturated
|
|
#define LIGHT_COLOR_RED "#FA8282" //Warm but extremely diluted red. rgb(250, 130, 130)
|
|
#define LIGHT_COLOR_GREEN "#64C864" //Bright but quickly dissipating neon green. rgb(100, 200, 100)
|
|
#define LIGHT_COLOR_BLUE "#6496FA" //Cold, diluted blue. rgb(100, 150, 250)
|
|
|
|
#define LIGHT_COLOR_CYAN "#7DE1E1" //Diluted cyan. rgb(125, 225, 225)
|
|
#define LIGHT_COLOR_PINK "#E17DE1" //Diluted, mid-warmth pink. rgb(225, 125, 225)
|
|
#define LIGHT_COLOR_YELLOW "#E1E17D" //Dimmed yellow, leaning kaki. rgb(225, 225, 125)
|
|
#define LIGHT_COLOR_BROWN "#966432" //Clear brown, mostly dim. rgb(150, 100, 50)
|
|
#define LIGHT_COLOR_ORANGE "#FA9632" //Mostly pure orange. rgb(250, 150, 50)
|
|
#define LIGHT_COLOR_PURPLE "#A97FAA" //Soft purple. rgb(169, 127, 170)
|
|
#define LIGHT_COLOR_VIOLET "#B43CB8" //Deep purple. rgb(180, 60, 184)
|
|
#define LIGHT_COLOR_SCARLET "#E85656" //Light red. rgb(232, 86, 86)
|
|
|
|
//These ones aren't a direct colour like the ones above, because nothing would fit
|
|
#define LIGHT_COLOR_FIRE "#FAA019" //Warm orange color, leaning strongly towards yellow. rgb(250, 160, 25)
|
|
#define LIGHT_COLOR_FLARE "#FA644B" //Bright, non-saturated red. Leaning slightly towards pink for visibility. rgb(250, 100, 75)
|
|
#define LIGHT_COLOR_SLIME_LAMP "#AFC84B" //Weird color, between yellow and green, very slimy. rgb(175, 200, 75)
|
|
#define LIGHT_COLOR_TUNGSTEN "#FAE1AF" //Extremely diluted yellow, close to skin color (for some reason). rgb(250, 225, 175)
|
|
#define LIGHT_COLOR_HALOGEN "#F0FAFA" //Barely visible cyan-ish hue, as the doctor prescribed. rgb(240, 250, 250)
|
|
|
|
//Defines for lighting status, see power/lighting.dm
|
|
#define LIGHT_OK 0
|
|
#define LIGHT_EMPTY 1
|
|
#define LIGHT_BROKEN 2
|
|
#define LIGHT_BURNED 3
|
|
|
|
// Some angle presets for directional lighting.
|
|
#define LIGHT_OMNI null
|
|
#define LIGHT_SEMI 180
|
|
#define LIGHT_WIDE 90
|
|
#define LIGHT_NARROW 45
|
|
|
|
// Night lighting controller times
|
|
// The time (in hours based on worldtime2hours()) that various actions trigger
|
|
#define MORNING_LIGHT_RESET 7 // 7am or 07:00 - lighting restores to normal in morning
|
|
#define NIGHT_LIGHT_ACTIVE 18 // 6pm or 18:00 - night lighting mode activates
|
|
|
|
// Some brightness/range defines for objects.
|
|
#define L_WALLMOUNT_POWER 0.4
|
|
#define L_WALLMOUNT_RANGE 2
|
|
#define L_WALLMOUNT_HI_POWER 1 // For red/delta alert on fire alarms.
|
|
#define L_WALLMOUNT_HI_RANGE 4
|
|
// This controls by how much console sprites are dimmed before being overlayed.
|
|
#define HOLOSCREEN_ADDITION_FACTOR 1
|
|
#define HOLOSCREEN_MULTIPLICATION_FACTOR 0.5
|
|
#define HOLOSCREEN_ADDITION_OPACITY 0.8
|
|
#define HOLOSCREEN_MULTIPLICATION_OPACITY 1
|
|
|
|
// Just so we can avoid unneeded proc calls when profiling is disabled.
|
|
#define L_PROF(O,T) if (lighting_profiling) {lprof_write(O,T);}
|
|
|
|
// -- Ambient Occlusion --
|
|
|
|
// Not handled by the lighting engine, but related. Controls the alpha of the ambient occlusion effect on opaque atoms and openturfs.
|
|
#define WALL_AO_ALPHA 80
|
|
|
|
#define AO_UPDATE_NONE 0
|
|
#define AO_UPDATE_OVERLAY 1
|
|
#define AO_UPDATE_REBUILD 2
|
|
|
|
// If defined, integrate with the lighting engine and use its opacity value. Otherwise a simple turf opacity check is used. This may cause visual artifacts with opaque non-square movables.
|
|
//#define AO_USE_LIGHTING_OPACITY
|