From 94d92803b4e7fed07a865d54473b4d8a6821b23f Mon Sep 17 00:00:00 2001 From: Matt Atlas Date: Tue, 4 Nov 2025 22:27:42 +0100 Subject: [PATCH] Replaces our lighting system with CM's. (#21465) Depends on #21458. Ports https://github.com/cmss13-devs/cmss13/pull/4229, with the original authors as: - https://github.com/tgstation/TerraGov-Marine-Corps/pull/1964 for the lighting controller (A-lexa) - https://github.com/tgstation/TerraGov-Marine-Corps/pull/4747 and https://github.com/tgstation/TerraGov-Marine-Corps/pull/7263 for the lighting (TiviPlus) - https://github.com/tgstation/tgstation/pull/54520 for the dir lighting component - https://github.com/tgstation/tgstation/pull/75018 for the out of bounds fix in lighting - https://github.com/tgstation/TerraGov-Marine-Corps/pull/6678 for the emissives (TiviPlus) The main driving reason behind this is that current lighting consumes way too much processing power, especially for things like odysseys/away sites where a billion light sources are processing/moving at once and the game slows down to a crawl. Hopefully this improves the situation by a good margin, but we will need some testmerging to confirm that. image image - [x] Resolve todos - [x] Look into open space fuckery (border objects) --------- Co-authored-by: Matt Atlas Co-authored-by: JohnWildkins --- aurorastation.dme | 30 +- code/ZAS/Fire.dm | 6 +- code/__DEFINES/_macros.dm | 1 + .../signals/signals_atom/signals_atom_main.dm | 20 + code/__DEFINES/emissives.dm | 28 - code/__DEFINES/flags.dm | 3 +- code/__DEFINES/global.dm | 2 + code/__DEFINES/is_helpers.dm | 2 + code/__DEFINES/layers.dm | 41 +- code/__DEFINES/lighting.dm | 208 +++--- code/__DEFINES/misc.dm | 1 - code/__DEFINES/traits.dm | 4 + code/__DEFINES/turfs.dm | 8 - code/__HELPERS/_lists.dm | 26 + code/__HELPERS/emissives.dm | 16 +- code/__HELPERS/icons.dm | 11 - code/__HELPERS/spatial_info.dm | 21 +- code/__HELPERS/turfs.dm | 1 + code/__HELPERS/unsorted.dm | 32 + code/__linters.dm | 2 - code/_onclick/hud/fullscreen.dm | 27 + code/controllers/subsystems/ao.dm | 45 -- code/controllers/subsystems/explosives.dm | 9 +- code/controllers/subsystems/lighting.dm | 270 +++---- code/controllers/subsystems/mob.dm | 3 - code/controllers/subsystems/sunlight.dm | 1 - code/controllers/subsystems/ticker.dm | 7 +- code/controllers/subsystems/zcopy.dm | 101 --- code/datums/components/overlay_lighting.dm | 524 ++++++++++++++ code/datums/elements/light_blocking.dm | 43 ++ code/game/area/areas.dm | 10 +- code/game/atom/_atom.dm | 33 +- .../game/atom/atoms_initializing_EXPENSIVE.dm | 11 +- code/game/atoms.dm | 9 +- code/game/atoms_movable.dm | 91 ++- code/game/gamemodes/cult/hell_universe.dm | 14 +- code/game/gamemodes/cult/structures/pylon.dm | 15 +- .../endgame/supermatter_cascade/blob.dm | 1 - .../endgame/supermatter_cascade/universe.dm | 8 - .../technomancer/devices/shield_armor.dm | 5 +- .../technomancer/devices/tesla_armor.dm | 5 +- .../game/gamemodes/technomancer/spell_objs.dm | 1 + .../technomancer/spells/aura/aura.dm | 3 +- .../gamemodes/technomancer/spells/chroma.dm | 8 +- .../technomancer/spells/flame_tongue.dm | 3 +- .../technomancer/spells/insert/insert.dm | 7 +- .../technomancer/spells/instability_tap.dm | 3 +- .../technomancer/spells/mark_recall.dm | 3 +- .../technomancer/spells/modifier/modifier.dm | 3 +- .../technomancer/spells/phase_shift.dm | 6 +- .../gamemodes/technomancer/spells/radiance.dm | 7 +- .../gamemodes/technomancer/spells/reflect.dm | 3 +- .../gamemodes/technomancer/spells/shield.dm | 3 +- .../technomancer/spells/spawner/darkness.dm | 3 +- .../technomancer/spells/spawner/destablize.dm | 3 +- .../technomancer/spells/spawner/pulsar.dm | 3 +- code/game/machinery/alarm.dm | 6 +- code/game/machinery/atmoalter/canister.dm | 18 +- code/game/machinery/body_scanner.dm | 1 - code/game/machinery/bots/bots.dm | 9 +- code/game/machinery/computer/computer.dm | 1 - code/game/machinery/crusher_piston.dm | 2 - code/game/machinery/cryo.dm | 1 - code/game/machinery/firealarm.dm | 2 +- code/game/machinery/floodlight.dm | 15 +- code/game/machinery/lightswitch.dm | 4 +- code/game/machinery/newscaster.dm | 3 +- code/game/machinery/portable_turret.dm | 1 + code/game/machinery/requests_console.dm | 9 +- code/game/machinery/ringer.dm | 7 +- code/game/machinery/rotating_alarm.dm | 2 +- code/game/machinery/status_display.dm | 2 +- code/game/machinery/suit_cycler.dm | 1 - code/game/machinery/vending/_vending.dm | 1 - code/game/objects/auras/radiant_aura.dm | 3 +- .../objects/effects/decals/Cleanable/misc.dm | 1 - code/game/objects/effects/decals/misc.dm | 2 +- code/game/objects/effects/effect_system.dm | 7 +- code/game/objects/effects/shockwave.dm | 2 +- code/game/objects/items.dm | 7 +- .../objects/items/devices/lighting/flare.dm | 12 +- .../items/devices/lighting/flashlight.dm | 77 +- .../items/devices/lighting/glowstick.dm | 12 +- .../objects/items/devices/lighting/lamp.dm | 18 +- .../devices/lighting/marshalling_wand.dm | 3 +- .../items/devices/lighting/survival.dm | 5 +- code/game/objects/items/devices/lightmeter.dm | 2 - code/game/objects/items/devices/oxycandle.dm | 7 +- code/game/objects/items/devices/powersink.dm | 1 - .../objects/items/devices/radio/intercom.dm | 1 - code/game/objects/items/recharger_backpack.dm | 13 +- code/game/objects/items/skrell.dm | 1 - code/game/objects/items/weapons/candle.dm | 7 +- code/game/objects/items/weapons/cards_ids.dm | 3 +- .../objects/items/weapons/chaplain_items.dm | 7 +- .../objects/items/weapons/cigs_lighters.dm | 18 +- code/game/objects/items/weapons/tools.dm | 14 +- code/game/objects/structures/light_pole.dm | 4 - code/game/objects/structures/urban.dm | 8 +- code/game/turfs/simulated/shuttle_turfs.dm | 15 +- code/game/turfs/space/space.dm | 12 +- code/game/turfs/turf.dm | 52 +- code/game/turfs/turf_changing.dm | 68 +- code/modules/admin/admin_verbs.dm | 5 - code/modules/admin/verbs/bluespacetech.dm | 16 +- code/modules/ambient_occlusion/ao_turf.dm | 116 --- code/modules/ambient_occlusion/ao_verbs.dm | 23 - code/modules/clothing/clothing.dm | 14 +- code/modules/clothing/glasses/glasses.dm | 30 +- code/modules/clothing/glasses/hud.dm | 2 +- code/modules/clothing/head/hardhat.dm | 3 +- code/modules/clothing/head/helmet.dm | 3 +- .../clothing/spacesuits/rig/rig_pieces.dm | 3 +- .../clothing/spacesuits/rig/suits/station.dm | 2 +- .../modules/clothing/spacesuits/spacesuits.dm | 3 +- code/modules/clothing/spacesuits/syndi.dm | 2 +- .../clothing/spacesuits/void/alien/unathi.dm | 4 +- code/modules/clothing/spacesuits/void/merc.dm | 2 +- code/modules/clothing/spacesuits/void/misc.dm | 30 +- .../clothing/spacesuits/void/station.dm | 10 +- code/modules/clothing/suits/armor.dm | 4 + .../clothing/under/accessories/accessory.dm | 14 +- code/modules/detectivework/tools/uvlight.dm | 1 - code/modules/heavy_vehicle/components/head.dm | 7 + .../heavy_vehicle/equipment/utility.dm | 9 +- code/modules/heavy_vehicle/mech_life.dm | 1 + code/modules/heavy_vehicle/premade/combat.dm | 2 +- code/modules/heavy_vehicle/premade/light.dm | 2 +- .../heavy_vehicle/premade/powerloader.dm | 2 +- code/modules/heavy_vehicle/premade/pra.dm | 2 +- code/modules/holodeck/HolodeckObjects.dm | 1 - code/modules/hydroponics/seed.dm | 10 +- code/modules/hydroponics/trays/tray.dm | 5 +- .../modules/hydroponics/trays/tray_process.dm | 5 +- .../integrated_electronics/core/assemblies.dm | 2 + .../integrated_electronics/subtypes/output.dm | 20 +- code/modules/lighting/_LIGHTING_README.MD | 75 ++ code/modules/lighting/__lighting_docs.dm | 56 -- code/modules/lighting/_lighting_defs.dm | 58 -- code/modules/lighting/emissive_blocker.dm | 34 + code/modules/lighting/lighting_area.dm | 74 +- code/modules/lighting/lighting_atom.dm | 244 ++++--- code/modules/lighting/lighting_corner.dm | 233 ------ .../lighting_mask/dynamic_lighting_source.dm | 103 +++ .../lighting/lighting_mask/lighting_mask.dm | 172 +++++ .../lighting_mask/lighting_mask_holder.dm | 22 + .../lighting_mask/shadow_calculator.dm | 662 ++++++++++++++++++ code/modules/lighting/lighting_overlay.dm | 161 ----- code/modules/lighting/lighting_profiler.dm | 41 -- code/modules/lighting/lighting_setup.dm | 10 - code/modules/lighting/lighting_source.dm | 468 ------------- .../lighting/lighting_source_sunlight.dm | 197 ------ .../lighting_static/static_lighting_area.dm | 12 + .../lighting_static/static_lighting_atom.dm | 25 + .../lighting_static/static_lighting_corner.dm | 176 +++++ .../lighting_static/static_lighting_object.dm | 115 +++ .../lighting_static/static_lighting_setup.dm | 10 + .../lighting_static/static_lighting_source.dm | 306 ++++++++ .../lighting_static/static_lighting_turf.dm | 64 ++ code/modules/lighting/lighting_turf.dm | 232 ++---- code/modules/lighting/lighting_verbs.dm | 102 --- code/modules/lighting/~lighting_undefs.dm | 13 - code/modules/mapping/map_template.dm | 10 +- code/modules/mapping/reader.dm | 1 + .../space_management/zlevel_manager.dm | 1 + code/modules/mining/mine_items.dm | 2 - code/modules/mining/mine_turf_types.dm | 2 +- code/modules/mining/mine_turfs.dm | 45 +- code/modules/mining/minebot.dm | 2 +- code/modules/mob/abstract/freelook/eye.dm | 15 - code/modules/mob/abstract/ghost/ghost.dm | 45 +- .../mob/abstract/ghost/observer/login.dm | 5 - .../mob/abstract/ghost/observer/observer.dm | 56 +- code/modules/mob/living/carbon/diona_base.dm | 2 +- code/modules/mob/living/carbon/human/human.dm | 2 + .../mob/living/carbon/human/human_defines.dm | 3 + .../mob/living/carbon/human/human_helpers.dm | 4 +- .../mob/living/carbon/human/human_powers.dm | 2 +- code/modules/mob/living/carbon/human/life.dm | 1 + .../carbon/human/species/outsider/revenant.dm | 1 + .../carbon/human/species/outsider/undead.dm | 1 + .../living/carbon/human/species/species.dm | 5 +- .../mob/living/carbon/human/update_icons.dm | 7 +- code/modules/mob/living/life.dm | 1 + code/modules/mob/living/silicon/pai/pai.dm | 9 +- code/modules/mob/living/silicon/robot/life.dm | 4 +- .../modules/mob/living/silicon/robot/robot.dm | 1 - code/modules/mob/living/silicon/silicon.dm | 1 - .../simple_animal/friendly/cosmozoan.dm | 2 +- .../living/simple_animal/friendly/ratking.dm | 2 +- .../living/simple_animal/hostile/adhomai.dm | 4 +- .../mob/living/simple_animal/hostile/bat.dm | 4 - .../simple_animal/hostile/cavern_geist.dm | 2 +- .../simple_animal/hostile/changeling.dm | 4 +- .../living/simple_animal/hostile/creature.dm | 3 - .../living/simple_animal/hostile/faithless.dm | 4 - .../living/simple_animal/hostile/hostile.dm | 36 - .../simple_animal/hostile/icarus_drone.dm | 2 +- .../simple_animal/hostile/ipc_zombie.dm | 3 - .../living/simple_animal/hostile/krampus.dm | 2 +- .../living/simple_animal/hostile/moghes.dm | 2 +- .../mob/living/simple_animal/hostile/morph.dm | 8 +- .../simple_animal/hostile/phoron_worm.dm | 2 +- .../mob/living/simple_animal/hostile/pra.dm | 2 +- .../simple_animal/hostile/retaliate/cavern.dm | 3 +- .../living/simple_animal/hostile/sarlacc.dm | 2 +- .../simple_animal/hostile/space_fauna.dm | 4 +- .../simple_animal/hostile/spider_queen.dm | 2 +- code/modules/mob/mob.dm | 18 +- code/modules/mob/mob_defines.dm | 2 + code/modules/mob/mob_movement.dm | 5 - code/modules/multiz/turfs/open_space.dm | 3 +- code/modules/multiz/zmimic/mimic_movable.dm | 41 -- .../modules/organs/internal/species/tajara.dm | 6 +- .../subtypes/augment/augments/sight_lights.dm | 11 +- code/modules/organs/subtypes/autakh.dm | 2 +- .../organs/subtypes/parasite/black_kois.dm | 3 +- code/modules/overmap/_defines.dm | 5 +- .../overmap/exoplanets/decor/_turfs.dm | 1 - .../overmap/exoplanets/themes/_theme.dm | 8 +- code/modules/power/apc.dm | 13 +- code/modules/power/lights/fixtures.dm | 7 +- code/modules/power/radial_floodlight.dm | 4 +- code/modules/projectiles/gun.dm | 20 +- code/modules/projectiles/projectile.dm | 22 +- code/modules/projectiles/projectile/beams.dm | 1 + .../psionics/abilities/hollow_purple.dm | 8 +- code/modules/rendering/plane_master.dm | 31 +- code/modules/rendering/render_plate.dm | 4 + code/modules/shieldgen/energy_field.dm | 3 + code/modules/shuttles/shuttle.dm | 12 +- code/modules/shuttles/shuttle_supply.dm | 30 + code/modules/supermatter/supermatter.dm | 1 - code/modules/vehicles/animal.dm | 4 + code/modules/vehicles/bike.dm | 1 + code/modules/vehicles/cargo_train.dm | 4 + code/modules/vehicles/vehicle.dm | 10 +- code/unit_tests/create_and_destroy.dm | 3 +- code/unit_tests/equipment_tests.dm | 66 -- html/changelogs/mattatlas-fallingapart.yml | 60 ++ .../changelogs/mattatlas-returntooblivion.yml | 58 ++ icons/effects/224x192.dmi | Bin 8713 -> 62356 bytes icons/effects/alphacolors.dmi | Bin 395 -> 544 bytes icons/effects/light_overlays/light_128.dmi | Bin 0 -> 7040 bytes icons/effects/light_overlays/light_160.dmi | Bin 0 -> 9920 bytes icons/effects/light_overlays/light_192.dmi | Bin 0 -> 13534 bytes icons/effects/light_overlays/light_224.dmi | Bin 0 -> 17004 bytes icons/effects/light_overlays/light_256.dmi | Bin 0 -> 21365 bytes icons/effects/light_overlays/light_288.dmi | Bin 0 -> 26103 bytes icons/effects/light_overlays/light_32.dmi | Bin 0 -> 1140 bytes icons/effects/light_overlays/light_320.dmi | Bin 0 -> 30919 bytes icons/effects/light_overlays/light_352.dmi | Bin 0 -> 35566 bytes icons/effects/light_overlays/light_384.dmi | Bin 0 -> 40005 bytes icons/effects/light_overlays/light_416.dmi | Bin 0 -> 42716 bytes icons/effects/light_overlays/light_64.dmi | Bin 0 -> 2482 bytes icons/effects/light_overlays/light_96.dmi | Bin 0 -> 4643 bytes icons/effects/light_overlays/light_cone.dmi | Bin 0 -> 19272 bytes icons/effects/light_overlays/shockwave.dmi | Bin 0 -> 655732 bytes icons/effects/lighting_object.dmi | Bin 0 -> 2092 bytes icons/effects/lighting_object_big.dmi | Bin 0 -> 2031049 bytes maps/_common/areas/areas.dm | 1 - maps/_common/areas/holodeck.dm | 2 - maps/_common/areas/special.dm | 3 +- maps/away/away_site/blueriver/blueriver.dm | 1 - .../away/away_site/hivebot_hub/hivebot_hub.dm | 1 - .../away/away_site/idris_wreck/idris_wreck.dm | 1 - .../tajara/mining_jack/mining_jack_areas.dm | 1 - .../peoples_station/peoples_station_zones.dm | 1 - .../saniorios_outpost_zones.dm | 1 - .../tajara/scrapper/scrapper_areas.dm | 1 - .../uueoaesa/omgolo/omgolo_smuggler.dm | 1 - .../uueoaesa/omgolo/omgolo_tourist.dm | 1 - .../reclamation/ihss_reclamation_areas.dm | 1 - .../tret/tret_industrial_complex_areas.dm | 1 - .../cryo_outpost/cryo_outpost_areas.dm | 1 - .../enviro_testing_facility_areas.dm | 1 - .../nuclear_silo/nuclear_silo_areas.dm | 1 - .../tcaf_corvette/tcaf_corvette_areas.dm | 1 - .../ships/coc/coc_scarab/coc_scarab_areas.dm | 1 - .../coc/coc_surveyor/coc_surveyor_areas.dm | 1 - .../gadpathur_patrol_areas.dm | 1 - .../dominian_corvette_areas.dm | 1 - .../ships/dpra/hailstorm/hailstorm_areas.dm | 1 - .../elyra_corvette/elyra_corvette_areas.dm | 1 - .../freebooter_salvager_areas.dm | 1 - .../ships/golden_deep/golden_deep_areas.dm | 1 - .../fishing_league_trawler_areas.dm | 1 - .../hegemony_corvette_areas.dm | 1 - .../merchant_freighter_areas.dm | 1 - .../miners_guild/miners_guild_areas.dm | 1 - .../heph/cyclops/cyclops_mining_areas.dm | 1 - .../heph/heph_security/heph_security_areas.dm | 1 - .../ships/himeo/himeo_patrol_ship_areas.dm | 1 - .../ships/kataphracts/kataphract_areas.dm | 1 - .../konyang/air_konyang/air_konyang_areas.dm | 1 - .../einstein_shuttle/einstein_shuttle.dm | 1 - .../ipc_refugee/ipc_refugee_ship_areas.dm | 1 - .../konyang/kasf_ship/kasf_ship_areas.dm | 1 - .../konyang_wreck/konyang_wreck_areas.dm | 1 - .../konyang/water_barge/water_barge_areas.dm | 1 - .../nka/nka_merchant/nka_merchant_areas.dm | 1 - maps/away/ships/orion/orion_express_ship.dm | 1 - .../database_freighter_areas.dm | 1 - .../ships/pra/headmaster/headmaster_areas.dm | 1 - .../ships/sadar_scout/sadar_scout_areas.dm | 1 - .../sol/sol_merc/fsf_patrol_ship_areas.dm | 1 - .../ships/sol/sol_splf/splf_raider_areas.dm | 1 - .../ships/sol/sol_ssrm/ssrm_ship_areas.dm | 1 - .../tajara/circus/adhomian_circus_areas.dm | 1 - .../taj_smuggler/tajaran_smuggler_areas.dm | 1 - .../tirakqi_smuggler/tirakqi_smuggler.dm | 1 - .../tirakqi_smuggler_areas.dm | 1 - .../tramp_freighter/tramp_freighter_areas.dm | 2 - .../hiskyn/unathi_pirate_hiskyn_areas.dm | 1 - .../tarwa/unathi_pirate_tarwa_areas.dm | 1 - .../generic_dock/code/generic_dock_areas.dm | 2 - maps/event/halloween/halloweenareas.dm | 14 - .../idris_cruise/code/idris_cruise_areas.dm | 9 +- maps/event/rooftop/code/rooftop_areas.dm | 5 +- .../eventshuttles_areas_readme.dm | 1 - .../exoplanets/adhomai/adhomai_archeology.dm | 1 - .../exoplanets/adhomai/adhomai_bar.dm | 1 - .../adhomai/adhomai_fallout_bunker.dm | 1 - .../exoplanets/adhomai/adhomai_hunting.dm | 1 - .../adhomai/adhomai_nuclear_waste.dm | 1 - .../adhomai_nuclear_waste_makeshift.dm | 1 - .../adhomai/adhomai_raskariim_hideout.dm | 1 - .../adhomai/adhomai_schlorrgo_cage.dm | 1 - .../exoplanets/adhomai/adhomai_silo.dm | 1 - .../exoplanets/adhomai/adhomai_village.dm | 1 - .../exoplanets/adhomai/ala_base.dm | 1 - .../exoplanets/adhomai/nka_base.dm | 1 - .../exoplanets/adhomai/pra_base.dm | 1 - .../exoplanets/adhomai/pra_mining_camp.dm | 1 - .../exoplanets/adhomai/psis_outpost.dm | 1 - .../abandoned_prison/abandoned_prison.dm | 1 - .../asteroid/coalition_base/coalition_base.dm | 1 - .../listening_post/listening_post_unique.dm | 1 - .../exoplanets/biesel/biesel_camp_site.dm | 1 - .../exoplanets/burzsia/burzsia_mining.dm | 1 - maps/random_ruins/exoplanets/desert/desert.dm | 1 - maps/random_ruins/exoplanets/grove/grove.dm | 1 - .../exoplanets/haneunim/haneunim_mining.dm | 1 - .../exoplanets/konyang/fireoutpost.dm | 1 - .../exoplanets/konyang/hivebot_burrows_1.dm | 1 - .../exoplanets/konyang/hivebot_burrows_2.dm | 1 - .../exoplanets/konyang/homestead.dm | 1 - .../exoplanets/konyang/landing_zone.dm | 1 - .../exoplanets/konyang/pirate_moonshine.dm | 1 - .../exoplanets/konyang/pirate_outpost.dm | 1 - .../exoplanets/konyang/swamp_4.dm | 1 - .../exoplanets/konyang/telecomms_outpost.dm | 1 - .../exoplanets/konyang/village.dm | 1 - .../exoplanets/moghes/moghes_bar.dm | 1 - .../exoplanets/moghes/moghes_diona_traders.dm | 1 - .../moghes/moghes_gawgaryn_bikers.dm | 1 - .../exoplanets/moghes/moghes_guild_mining.dm | 1 - .../exoplanets/moghes/moghes_hegemony_base.dm | 1 - .../exoplanets/moghes/moghes_heph_mining.dm | 1 - .../moghes/moghes_kataphract_wasteland.dm | 1 - .../exoplanets/moghes/moghes_skakh.dm | 1 - .../exoplanets/moghes/moghes_thakh.dm | 1 - .../moghes/moghes_untouched_village.dm | 1 - .../moghes/moghes_wasteland_dorviza.dm | 1 - .../moghes/moghes_wasteland_izwesk.dm | 1 - .../moghes/moghes_wasteland_klax.dm | 1 - .../moghes/moghes_wasteland_mikuetz.dm | 1 - .../moghes/moghes_wasteland_ozeuoi.dm | 1 - .../moghes/moghes_wasteland_priests.dm | 1 - .../moghes/moghes_wasteland_queendom.dm | 1 - .../moghes/moghes_wasteland_reclaimer.dm | 1 - .../moghes/moghes_wasteland_tomb.dm | 1 - .../moghes/moghes_wasteland_vihnmes.dm | 1 - .../exoplanets/new_gibson/gibson_resupply.dm | 1 - .../exoplanets/ouerea/ouerea_autakh.dm | 1 - .../exoplanets/ouerea/ouerea_bar.dm | 1 - .../exoplanets/ouerea/ouerea_farm.dm | 1 - .../exoplanets/ouerea/ouerea_freewater.dm | 1 - .../exoplanets/ouerea/ouerea_guild_mining.dm | 1 - .../exoplanets/ouerea/ouerea_hegemony_base.dm | 1 - .../exoplanets/ouerea/ouerea_heph_mining.dm | 1 - .../exoplanets/ouerea/ouerea_nt_ruin.dm | 1 - .../exoplanets/ouerea/ouerea_skrell_base.dm | 1 - .../exoplanets/ouerea/ouerea_sol_base.dm | 1 - .../exoplanets/ouerea/ouerea_village.dm | 1 - .../exoplanets/raskara/raskara_okon.dm | 1 - .../uueoaesa/heph_mining_station.dm | 1 - .../exoplanets/uueoaesa/heph_survey_post.dm | 1 - .../uueoaesa/miners_guild_outpost.dm | 1 - .../exoplanets/uueoaesa/pid_kois_farm.dm | 1 - .../exoplanets/uueoaesa/sol_listening_post.dm | 1 - maps/sccv_horizon/areas/_horizon_areas.dm | 1 - .../areas/horizon_areas_holodeck.dm | 6 +- maps/sccv_horizon/sccv_horizon.dmm | 6 +- tools/ci/check_grep.sh | 2 +- 395 files changed, 3906 insertions(+), 3299 deletions(-) delete mode 100644 code/__DEFINES/emissives.dm delete mode 100644 code/controllers/subsystems/ao.dm create mode 100644 code/datums/components/overlay_lighting.dm create mode 100644 code/datums/elements/light_blocking.dm delete mode 100644 code/modules/ambient_occlusion/ao_turf.dm delete mode 100644 code/modules/ambient_occlusion/ao_verbs.dm create mode 100644 code/modules/lighting/_LIGHTING_README.MD delete mode 100644 code/modules/lighting/__lighting_docs.dm delete mode 100644 code/modules/lighting/_lighting_defs.dm create mode 100644 code/modules/lighting/emissive_blocker.dm delete mode 100644 code/modules/lighting/lighting_corner.dm create mode 100644 code/modules/lighting/lighting_mask/dynamic_lighting_source.dm create mode 100644 code/modules/lighting/lighting_mask/lighting_mask.dm create mode 100644 code/modules/lighting/lighting_mask/lighting_mask_holder.dm create mode 100644 code/modules/lighting/lighting_mask/shadow_calculator.dm delete mode 100644 code/modules/lighting/lighting_overlay.dm delete mode 100644 code/modules/lighting/lighting_profiler.dm delete mode 100644 code/modules/lighting/lighting_setup.dm delete mode 100644 code/modules/lighting/lighting_source.dm delete mode 100644 code/modules/lighting/lighting_source_sunlight.dm create mode 100644 code/modules/lighting/lighting_static/static_lighting_area.dm create mode 100644 code/modules/lighting/lighting_static/static_lighting_atom.dm create mode 100644 code/modules/lighting/lighting_static/static_lighting_corner.dm create mode 100644 code/modules/lighting/lighting_static/static_lighting_object.dm create mode 100644 code/modules/lighting/lighting_static/static_lighting_setup.dm create mode 100644 code/modules/lighting/lighting_static/static_lighting_source.dm create mode 100644 code/modules/lighting/lighting_static/static_lighting_turf.dm delete mode 100644 code/modules/lighting/lighting_verbs.dm delete mode 100644 code/modules/lighting/~lighting_undefs.dm delete mode 100644 code/modules/mob/abstract/ghost/observer/login.dm delete mode 100644 code/unit_tests/equipment_tests.dm create mode 100644 html/changelogs/mattatlas-fallingapart.yml create mode 100644 html/changelogs/mattatlas-returntooblivion.yml create mode 100644 icons/effects/light_overlays/light_128.dmi create mode 100644 icons/effects/light_overlays/light_160.dmi create mode 100644 icons/effects/light_overlays/light_192.dmi create mode 100644 icons/effects/light_overlays/light_224.dmi create mode 100644 icons/effects/light_overlays/light_256.dmi create mode 100644 icons/effects/light_overlays/light_288.dmi create mode 100644 icons/effects/light_overlays/light_32.dmi create mode 100644 icons/effects/light_overlays/light_320.dmi create mode 100644 icons/effects/light_overlays/light_352.dmi create mode 100644 icons/effects/light_overlays/light_384.dmi create mode 100644 icons/effects/light_overlays/light_416.dmi create mode 100644 icons/effects/light_overlays/light_64.dmi create mode 100644 icons/effects/light_overlays/light_96.dmi create mode 100644 icons/effects/light_overlays/light_cone.dmi create mode 100644 icons/effects/light_overlays/shockwave.dmi create mode 100644 icons/effects/lighting_object.dmi create mode 100644 icons/effects/lighting_object_big.dmi diff --git a/aurorastation.dme b/aurorastation.dme index f36a13e5db0..0d59ddf337d 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -57,7 +57,6 @@ #include "code\__DEFINES\drinks.dm" #include "code\__DEFINES\dview.dm" #include "code\__DEFINES\economy.dm" -#include "code\__DEFINES\emissives.dm" #include "code\__DEFINES\emitter.dm" #include "code\__DEFINES\empulse.dm" #include "code\__DEFINES\evacuation.dm" @@ -331,7 +330,6 @@ #include "code\controllers\subsystems\ai_obfuscation.dm" #include "code\controllers\subsystems\air.dm" #include "code\controllers\subsystems\alarm.dm" -#include "code\controllers\subsystems\ao.dm" #include "code\controllers\subsystems\arrivals.dm" #include "code\controllers\subsystems\asset_loading.dm" #include "code\controllers\subsystems\assets.dm" @@ -476,6 +474,7 @@ #include "code\datums\components\leanable.dm" #include "code\datums\components\local_network.dm" #include "code\datums\components\orbiter.dm" +#include "code\datums\components\overlay_lighting.dm" #include "code\datums\components\armor\armor.dm" #include "code\datums\components\base_name\base_name.dm" #include "code\datums\components\eye\_eye.dm" @@ -490,6 +489,7 @@ #include "code\datums\elements\_element.dm" #include "code\datums\elements\connect_loc.dm" #include "code\datums\elements\empprotection.dm" +#include "code\datums\elements\light_blocking.dm" #include "code\datums\elements\temporary.dm" #include "code\datums\ert\corporate.dm" #include "code\datums\ert\outsider.dm" @@ -1687,8 +1687,6 @@ #include "code\modules\alarm\fire_alarm.dm" #include "code\modules\alarm\motion_alarm.dm" #include "code\modules\alarm\power_alarm.dm" -#include "code\modules\ambient_occlusion\ao_turf.dm" -#include "code\modules\ambient_occlusion\ao_verbs.dm" #include "code\modules\assembly\assembly.dm" #include "code\modules\assembly\bomb.dm" #include "code\modules\assembly\helpers.dm" @@ -2504,19 +2502,21 @@ #include "code\modules\law\laws\med_severity.dm" #include "code\modules\library\lib_items.dm" #include "code\modules\library\lib_machines.dm" -#include "code\modules\lighting\__lighting_docs.dm" -#include "code\modules\lighting\_lighting_defs.dm" +#include "code\modules\lighting\emissive_blocker.dm" #include "code\modules\lighting\lighting_area.dm" #include "code\modules\lighting\lighting_atom.dm" -#include "code\modules\lighting\lighting_corner.dm" -#include "code\modules\lighting\lighting_overlay.dm" -#include "code\modules\lighting\lighting_profiler.dm" -#include "code\modules\lighting\lighting_setup.dm" -#include "code\modules\lighting\lighting_source.dm" -#include "code\modules\lighting\lighting_source_sunlight.dm" #include "code\modules\lighting\lighting_turf.dm" -#include "code\modules\lighting\lighting_verbs.dm" -#include "code\modules\lighting\~lighting_undefs.dm" +#include "code\modules\lighting\lighting_mask\dynamic_lighting_source.dm" +#include "code\modules\lighting\lighting_mask\lighting_mask.dm" +#include "code\modules\lighting\lighting_mask\lighting_mask_holder.dm" +#include "code\modules\lighting\lighting_mask\shadow_calculator.dm" +#include "code\modules\lighting\lighting_static\static_lighting_area.dm" +#include "code\modules\lighting\lighting_static\static_lighting_atom.dm" +#include "code\modules\lighting\lighting_static\static_lighting_corner.dm" +#include "code\modules\lighting\lighting_static\static_lighting_object.dm" +#include "code\modules\lighting\lighting_static\static_lighting_setup.dm" +#include "code\modules\lighting\lighting_static\static_lighting_source.dm" +#include "code\modules\lighting\lighting_static\static_lighting_turf.dm" #include "code\modules\liquid\splash_simulation.dm" #include "code\modules\lock\key.dm" #include "code\modules\lock\lock.dm" @@ -2625,7 +2625,6 @@ #include "code\modules\mob\abstract\freelook\ai\update_triggers.dm" #include "code\modules\mob\abstract\freelook\blueprints\blueprints.dm" #include "code\modules\mob\abstract\ghost\ghost.dm" -#include "code\modules\mob\abstract\ghost\observer\login.dm" #include "code\modules\mob\abstract\ghost\observer\logout.dm" #include "code\modules\mob\abstract\ghost\observer\observer.dm" #include "code\modules\mob\abstract\ghost\observer\say.dm" @@ -3868,7 +3867,6 @@ #include "code\unit_tests\chemistry_tests.dm" #include "code\unit_tests\cooking_tests.dm" #include "code\unit_tests\create_and_destroy.dm" -#include "code\unit_tests\equipment_tests.dm" #include "code\unit_tests\foundation_tests.dm" #include "code\unit_tests\gamemode_tests.dm" #include "code\unit_tests\hydroponics_tests.dm" diff --git a/code/ZAS/Fire.dm b/code/ZAS/Fire.dm index c3dd7946134..6c926260c9d 100644 --- a/code/ZAS/Fire.dm +++ b/code/ZAS/Fire.dm @@ -161,11 +161,11 @@ If it gains pressure too slowly, it may leak or just rupture instead of explodin var/datum/gas_mixture/air_contents = my_tile.return_air() if(firelevel > 6) - set_light(9, FIRE_LIGHT_3, no_update = TRUE) // We set color later in the proc, that should trigger an update. + set_light(9, FIRE_LIGHT_3) // We set color later in the proc, that should trigger an update. else if(firelevel > 2.5) - set_light(7, FIRE_LIGHT_2, no_update = TRUE) + set_light(7, FIRE_LIGHT_2) else - set_light(5, FIRE_LIGHT_1, no_update = TRUE) + set_light(5, FIRE_LIGHT_1) air_contents.adjust_gas(GAS_CO2, firelevel * 0.07) diff --git a/code/__DEFINES/_macros.dm b/code/__DEFINES/_macros.dm index 7d8df104543..8ccae0598f6 100644 --- a/code/__DEFINES/_macros.dm +++ b/code/__DEFINES/_macros.dm @@ -40,6 +40,7 @@ #define isweakref(target) istype(target, /datum/weakref) #define isopenspace(A) istype(A, /turf/simulated/open) #define isatom(D) istype(D, /atom) +#define ismovableatom(A) (ismovable(A)) #define isdatum(target) istype(target, /datum) #define isitem(D) istype(D, /obj/item) #define islist(D) istype(D, /list) diff --git a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_main.dm b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_main.dm index a6f77c71fdb..f5d03812dcd 100644 --- a/code/__DEFINES/dcs/signals/signals_atom/signals_atom_main.dm +++ b/code/__DEFINES/dcs/signals/signals_atom/signals_atom_main.dm @@ -23,6 +23,9 @@ ///from base of atom/has_gravity(): (turf/location, list/forced_gravities) #define COMSIG_ATOM_HAS_GRAVITY "atom_has_gravity" +///from base of atom/set_dir(): (old_dir, new_dir). Called before the direction changes. +#define COMSIG_ATOM_DIR_CHANGE "atom_dir_change" + ///called when an atom starts orbiting another atom: (atom) #define COMSIG_ATOM_ORBIT_BEGIN "atom_orbit_begin" ///called when an atom stops orbiting another atom: (atom) @@ -42,3 +45,20 @@ /// From /atom/proc/set_density(new_value) for when an atom changes density #define COMSIG_ATOM_DENSITY_CHANGED "atom_density_change" + +//from atom/set_light(): (l_range, l_power, l_color) +#define COMSIG_ATOM_SET_LIGHT "atom_set_light" + +///Called right before the atom changes the value of light_range to a different one, from base atom/set_light_range(): (new_range) +#define COMSIG_ATOM_SET_LIGHT_RANGE "atom_set_light_range" +///Called right before the atom changes the value of light_power to a different one, from base atom/set_light_power(): (new_power) +#define COMSIG_ATOM_SET_LIGHT_POWER "atom_set_light_power" +///Called right before the atom changes the value of light_color to a different one, from base atom/set_light_color(): (new_color) +#define COMSIG_ATOM_SET_LIGHT_COLOR "atom_set_light_color" +///Called right before the atom changes the value of light_on to a different one, from base atom/set_light_on(): (new_value) +#define COMSIG_ATOM_SET_LIGHT_ON "atom_set_light_on" +///Called right before the atom changes the value of light_flags to a different one, from base atom/set_light_flags(): (new_value) +#define COMSIG_ATOM_SET_LIGHT_FLAGS "atom_set_light_flags" + +///from base of atom/set_opacity(): (new_opacity) +#define COMSIG_ATOM_SET_OPACITY "atom_set_opacity" diff --git a/code/__DEFINES/emissives.dm b/code/__DEFINES/emissives.dm deleted file mode 100644 index b9311b81ed3..00000000000 --- a/code/__DEFINES/emissives.dm +++ /dev/null @@ -1,28 +0,0 @@ -// Emissive blockers -/// For anything that shouldn't block emissives. Small objects or translucent objects primarily -#define EMISSIVE_BLOCK_NONE 0 -/// For anything that doesn't change outline or opaque area much or at all. -#define EMISSIVE_BLOCK_GENERIC 1 -/// Uses a dedicated render_target object to copy the entire appearance in real time to the blocking layer. For things that can change in appearance a lot from the base state, like humans. -#define EMISSIVE_BLOCK_UNIQUE 2 - -#define _EMISSIVE_COLOR(val) list(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, val,val,val,0) -/// The color matrix applied to all emissive overlays. Should be solely dependent on alpha and not have RGB overlap with [EM_BLOCK_COLOR]. -#define EMISSIVE_COLOR _EMISSIVE_COLOR(1) -/// A globally cached version of [EMISSIVE_COLOR] for quick access. -GLOBAL_LIST_INIT(emissive_color, EMISSIVE_COLOR) - -#define _EM_BLOCK_COLOR(val) list(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,val, 0,0,0,0) -/// The color matrix applied to all emissive blockers. Should be solely dependent on alpha and not have RGB overlap with [EMISSIVE_COLOR]. -#define EM_BLOCK_COLOR _EM_BLOCK_COLOR(1) -/// A globally cached version of [EM_BLOCK_COLOR] for quick access. -GLOBAL_LIST_INIT(em_block_color, EM_BLOCK_COLOR) - - -/// The color matrix used to mask out emissive blockers on the emissive plane. Alpha should default to zero, be solely dependent on the RGB value of [EMISSIVE_COLOR], and be independant of the RGB value of [EM_BLOCK_COLOR]. -#define EM_MASK_MATRIX list(0,0,0,1/3, 0,0,0,1/3, 0,0,0,1/3, 0,0,0,0, 1,1,1,0) -/// A globally cached version of [EM_MASK_MATRIX] for quick access. -GLOBAL_LIST_INIT(em_mask_matrix, EM_MASK_MATRIX) - -/// A set of appearance flags applied to all emissive and emissive blocker overlays. -#define EMISSIVE_APPEARANCE_FLAGS (KEEP_APART|KEEP_TOGETHER|RESET_COLOR|NO_CLIENT_COLOR) diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index fdf4f4c766d..41bc149831e 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -12,7 +12,6 @@ // Movable flags. #define ZMM_IGNORE 1 //! Do not copy this movable. -#define ZMM_MANGLE_PLANES 2 //! Check this movable's overlays/underlays for explicit plane use and mangle for compatibility with Z-Mimic. If you're using emissive overlays, you probably should be using this flag. Expensive, only use if necessary. // Convenience flag. #define ZM_MIMIC_DEFAULTS (ZM_MIMIC_BELOW) @@ -115,3 +114,5 @@ GLOBAL_LIST_INIT(mimic_defines, list("ZM_MIMIC_BELOW", /// Can be used for surgery, giving the "You're not sure what you can do with this." message if no surgery is available. #define ITEM_FLAG_SURGERY FLAG(13) +///All the cardinal direction bitflags. +#define ALL_CARDINALS (NORTH|SOUTH|EAST|WEST) diff --git a/code/__DEFINES/global.dm b/code/__DEFINES/global.dm index 157df823171..92d332e0b6e 100644 --- a/code/__DEFINES/global.dm +++ b/code/__DEFINES/global.dm @@ -171,3 +171,5 @@ GLOBAL_LIST_INIT(department_funds, list( //List of exosuit tracking beacons, to save performance GLOBAL_LIST_EMPTY(exo_beacons) + +GLOBAL_VAR_INIT(minimum_exterior_lighting_alpha, 255) diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 54903e7ea00..aaeab50a661 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -78,3 +78,5 @@ #define isprojectile(A) istype(A, /obj/projectile) #define isbeam(A) istype(A, /obj/projectile/beam) #define isenergy(A) istype(A, /obj/projectile/energy) + +#define istransparentturf(A) (HAS_TRAIT(A, TURF_Z_TRANSPARENT_TRAIT)) diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm index 8f5c706d47e..ab11c972e6d 100644 --- a/code/__DEFINES/layers.dm +++ b/code/__DEFINES/layers.dm @@ -38,13 +38,11 @@ #define OPEN_SPACE_PLANE_END -70 #define OPENTURF_MAX_DEPTH 10 // The maxiumum number of planes deep we'll go before we just dump everything on the same plane. -#define HEAT_EFFECT_PLANE -4 -#define WARP_EFFECT_PLANE -3 - -#define BLACKNESS_PLANE 0 //Blackness plane as per DM documentation. +#define HEAT_EFFECT_PLANE -8 +#define WARP_EFFECT_PLANE -7 /// Game Plane, where most of the game objects reside -#define GAME_PLANE 1 +#define GAME_PLANE -6 #define PLATING_LAYER 1 //ABOVE PLATING #define HOLOMAP_LAYER 1.01 @@ -145,20 +143,34 @@ #define AREA_LAYER 999 /// Above Game Plane. For things which are above game objects, but below screen effects. -#define ABOVE_GAME_PLANE 2 +#define ABOVE_GAME_PLANE -5 -#define ROOF_PLANE 3 +#define ROOF_PLANE -4 -#define DISPLACEMENT_PLATE_RENDER_LAYER 4 +#define BLACKNESS_PLANE 0 //Blackness plane as per DM documentation. + +#define DISPLACEMENT_PLATE_RENDER_LAYER 1 #define DISPLACEMENT_PLATE_RENDER_TARGET "*DISPLACEMENT_PLATE_RENDER_TARGET" #define GHOST_PLANE 80 #define LIGHTING_PLANE 100 #define LIGHTING_LAYER 1 +#define EXTERIOR_LIGHTING_PLANE 101 +#define NVG_PLANE 110 #define BALLOON_CHAT_PLANE 110 +#define O_LIGHTING_VISUAL_PLANE 120 +#define O_LIGHTING_VISUAL_LAYER 16 +#define O_LIGHTING_VISUAL_RENDER_TARGET "O_LIGHT_VISUAL_PLANE" + +#define LIGHTING_PRIMARY_LAYER 15 //The layer for the main lights of the station +#define LIGHTING_PRIMARY_DIMMER_LAYER 15.1 //The layer that dims the main lights of the station +#define LIGHTING_SECONDARY_LAYER 16 //The colourful, usually small lights that go on top + +#define LIGHTING_SHADOW_LAYER 17 //Where the shadows happen + #define ABOVE_LIGHTING_PLANE 150 #define EYE_GLOW_LAYER 1 #define BEAM_PROJECTILE_LAYER 2 @@ -167,7 +179,7 @@ #define RUNECHAT_PLANE 501 -#define FULLSCREEN_PLANE 9 +#define FULLSCREEN_PLANE 900 #define FULLSCREEN_LAYER 1 #define DAMAGE_LAYER 2 #define IMPAIRED_LAYER 3 @@ -208,11 +220,16 @@ /// This plane masks out lighting, to create an "emissive" effect for e.g glowing screens in otherwise dark areas. #define EMISSIVE_PLANE 90 #define EMISSIVE_TARGET "*emissive" - /// The layer you should use when you -really- don't want an emissive overlay to be blocked. - #define EMISSIVE_LAYER_UNBLOCKABLE 9999 - /// The render target used by the emissive layer. #define EMISSIVE_RENDER_TARGET "*EMISSIVE_PLANE" +/// The layer you should use when you -really- don't want an emissive overlay to be blocked. +#define EMISSIVE_LAYER_UNBLOCKABLE 9999 + +#define LIGHTING_BACKPLANE_LAYER 14.5 + +#define LIGHTING_RENDER_TARGET "LIGHT_PLANE" + +#define SHADOW_RENDER_TARGET "SHADOW_RENDER_TARGET" #define DEFAULT_APPEARANCE_FLAGS (PIXEL_SCALE) diff --git a/code/__DEFINES/lighting.dm b/code/__DEFINES/lighting.dm index 69a5fdb2ac6..9de84a857f4 100644 --- a/code/__DEFINES/lighting.dm +++ b/code/__DEFINES/lighting.dm @@ -1,73 +1,3 @@ -#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 defined, lighting corners will 'bleed' luminosity to corners above them to simulate cross-Z lighting upwards. Downwards Z-lighting will continue to work with this disabled. -#define USE_CORNER_ZBLEED - -#define TURF_IS_DYNAMICALLY_LIT(T) (isturf(T) && T:dynamic_lighting && T:loc:dynamic_lighting) -// mostly identical to above, but doesn't make sure T is valid first. Should only be used by lighting code. -#define TURF_IS_DYNAMICALLY_LIT_UNSAFE(T) (T:dynamic_lighting && T:loc:dynamic_lighting) - -// 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) @@ -112,17 +42,11 @@ #define LIGHT_EMERGENCY_POWER_USE 0.2 //How much power emergency lights will consume per tick -// Some angle presets for directional lighting. -#define LIGHT_OMNI null -#define LIGHT_SEMI 180 -#define LIGHT_WIDE 90 -#define LIGHT_NARROW 45 - // Some brightness/range defines for objects. -#define L_WALLMOUNT_POWER 1.3 -#define L_WALLMOUNT_RANGE 2 +#define L_WALLMOUNT_POWER 0.5 +#define L_WALLMOUNT_RANGE 1 #define L_WALLMOUNT_HI_POWER 1 // For red/delta alert on fire alarms. -#define L_WALLMOUNT_HI_RANGE 4 +#define L_WALLMOUNT_HI_RANGE 2 // This controls by how much console sprites are dimmed before being overlayed. #define HOLOSCREEN_MULTIPLICATION_FACTOR 0.5 #define HOLOSCREEN_ADDITION_OPACITY 0.75 @@ -132,19 +56,115 @@ // Just so we can avoid unneeded proc calls when profiling is disabled. #define L_PROF(O,T) if (GLOB.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 ao_neighbors equals this, no AO shadows are present. -#define AO_ALL_NEIGHBORS 1910 - -// 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 - #define MINIMUM_USEFUL_LIGHT_RANGE 1.4 + +///Object doesn't use any of the light systems. Should be changed to add a light source to the object. +#define NO_LIGHT_SUPPORT 0 +///Light made with the lighting datums, applying a matrix. +#define STATIC_LIGHT 1 +///Light made by masking the lighting darkness plane. +#define MOVABLE_LIGHT 2 +///A mix of the above, cheaper on moving items than dynamic, but heavier on rendering than movable +#define HYBRID_LIGHT 3 +///Pointy light +#define DIRECTIONAL_LIGHT 4 + +#define LIGHT_ATTACHED (1<<0) + +#define LIGHTING_ICON 'icons/effects/lighting_object.dmi' // icon used for lighting shading effects +#define LIGHTING_ICON_BIG 'icons/effects/lighting_object_big.dmi' //! icon used for lighting shading effects + +#define ALPHA_TO_INTENSITY(alpha) (-(((clamp(alpha, 0, 22) - 22) / 6) ** 4) + 255) + + +#define LIGHT_RANGE_FIRE 3 //How many tiles standard fires glow. + +#define LIGHTING_PLANE_ALPHA_VISIBLE 255 +#define LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE 192 +#define LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE 127 +#define LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE 80 +#define LIGHTING_PLANE_ALPHA_INVISIBLE 0 + +#define FLASH_LIGHT_DURATION 2 +#define FLASH_LIGHT_POWER 3 +#define FLASH_LIGHT_RANGE 3.8 + +#define IS_OPAQUE_TURF(turf) (turf.directional_opacity == ALL_CARDINALS) + +// Emissive blocking. +/// For anything that shouldn't block emissives. Small objects or translucent objects primarily +#define EMISSIVE_BLOCK_NONE 0 +/// For anything that doesn't change outline or opaque area much or at all. +#define EMISSIVE_BLOCK_GENERIC 1 +/// Uses a dedicated render_target object to copy the entire appearance in real time to the blocking layer. For things that can change in appearance a lot from the base state, like humans. +#define EMISSIVE_BLOCK_UNIQUE 2 + + +/// The color matrix applied to all emissive overlays. Should be solely dependent on alpha and not have RGB overlap with [EM_BLOCK_COLOR]. +#define EMISSIVE_COLOR list(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 1,1,1,0) +/// A globaly cached version of [EMISSIVE_COLOR] for quick access. +GLOBAL_LIST_INIT(emissive_color, EMISSIVE_COLOR) +/// The color matrix applied to all emissive blockers. Should be solely dependent on alpha and not have RGB overlap with [EMISSIVE_COLOR]. +#define EM_BLOCK_COLOR list(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0) +/// A globaly cached version of [EM_BLOCK_COLOR] for quick access. +GLOBAL_LIST_INIT(em_block_color, EM_BLOCK_COLOR) +/// A set of appearance flags applied to all emissive and emissive blocker overlays. +#define EMISSIVE_APPEARANCE_FLAGS (KEEP_APART|KEEP_TOGETHER|RESET_COLOR|RESET_TRANSFORM) +/// The color matrix used to mask out emissive blockers on the emissive plane. Alpha should default to zero, be solely dependent on the RGB value of [EMISSIVE_COLOR], and be independent of the RGB value of [EM_BLOCK_COLOR]. +#define EM_MASK_MATRIX list(0,0,0,1/3, 0,0,0,1/3, 0,0,0,1/3, 0,0,0,0, 1,1,1,0) +/// A globaly cached version of [EM_MASK_MATRIX] for quick access. +GLOBAL_LIST_INIT(em_mask_matrix, EM_MASK_MATRIX) + +/// Returns the red part of a #RRGGBB hex sequence as number +#define GETREDPART(hexa) hex2num(copytext(hexa, 2, 4)) + +/// Returns the green part of a #RRGGBB hex sequence as number +#define GETGREENPART(hexa) hex2num(copytext(hexa, 4, 6)) + +/// Returns the blue part of a #RRGGBB hex sequence as number +#define GETBLUEPART(hexa) hex2num(copytext(hexa, 6, 8)) + +/// Parse the hexadecimal color into lumcounts of each perspective. +#define PARSE_LIGHT_COLOR(source) \ +do { \ + if (source.light_color != COLOR_WHITE) { \ + var/__light_color = source.light_color; \ + source.lum_r = GETREDPART(__light_color) / 255; \ + source.lum_g = GETGREENPART(__light_color) / 255; \ + source.lum_b = GETBLUEPART(__light_color) / 255; \ + } else { \ + source.lum_r = 1; \ + source.lum_g = 1; \ + source.lum_b = 1; \ + }; \ +} while (FALSE) + + +//Bay lighting engine shit, not in /code/modules/lighting because BYOND is being shit about it //thats how defines work, hello? +#define LIGHTING_INTERVAL 5 // frequency, in 1/10ths of a second, of the lighting process + +#define MOVABLE_MAX_RANGE 7 + +#define LIGHTING_FALLOFF 1 // type of falloff to use for lighting; 1 for circular, 2 for square +#define LIGHTING_LAMBERTIAN 0 // use lambertian shading for light sources +#define LIGHTING_HEIGHT 1 // height off the ground of light sources on the pseudo-z-axis, you should probably leave this alone +#define LIGHTING_ROUND_VALUE (1 / 64) //Value used to round lumcounts, values smaller than 1/129 don't matter (if they do, thanks sinking points), greater values will make lighting less precise, but in turn increase performance, VERY SLIGHTLY. + +/// If the max of the lighting lumcounts of each spectrum drops below this, disable luminosity on the lighting objects. Set to zero to disable soft lighting. Luminosity changes then work if it's lit at all. +#define LIGHTING_SOFT_THRESHOLD 0 + +// 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 \ + ) \ + +#define LIGHTING_NO_UPDATE 0 +#define LIGHTING_VIS_UPDATE 1 +#define LIGHTING_CHECK_UPDATE 2 +#define LIGHTING_FORCE_UPDATE 3 diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 1181d91963d..b8e2918b953 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -17,7 +17,6 @@ #define INVISIBILITY_SYSTEM 99 #define SEE_INVISIBLE_LIVING 25 -#define SEE_INVISIBLE_NOLIGHTING 15 #define SEE_INVISIBLE_LEVEL_ONE 35 #define SEE_INVISIBLE_LEVEL_TWO 45 #define SEE_INVISIBLE_CULT 60 diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index abea96f8a82..cc61bc58d66 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -121,6 +121,7 @@ #define GENERIC_ITEM_TRAIT "generic_item" #define DISABILITY_TRAIT "disability" +#define TRAIT_SOURCE_INHERENT "t_s_inherent" /// cannot be removed without admin intervention #define ROUNDSTART_TRAIT "roundstart" #define CULTURE_TRAIT "culture" @@ -220,3 +221,6 @@ /// A trait gained by leaning against something #define TRAIT_LEANING "leaning" + +/// traits transparent turf +#define TURF_Z_TRANSPARENT_TRAIT "turf_z_transparent" diff --git a/code/__DEFINES/turfs.dm b/code/__DEFINES/turfs.dm index 9af116da7ab..af9e5b12e34 100644 --- a/code/__DEFINES/turfs.dm +++ b/code/__DEFINES/turfs.dm @@ -36,14 +36,6 @@ MACROS/FUNCTIONS ################################*/ -/** - * Checks if a turf is opaque, - * NOT the same inner-working as the TG version, but should be equivalent - * - * * turf - The `/turf` to check - */ -#define IS_OPAQUE_TURF(turf) (turf.opacity || turf.has_opaque_atom) - //supposedly the fastest way to do this according to https://gist.github.com/Giacom/be635398926bb463b42a ///Returns a list of turf in a square #define RANGE_TURFS(RADIUS, CENTER) \ diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm index 1a33d1e43b0..c0832ebb15f 100644 --- a/code/__HELPERS/_lists.dm +++ b/code/__HELPERS/_lists.dm @@ -159,6 +159,32 @@ };\ } while(FALSE) +// binary search sorted insert +// IN: Object to be inserted +// LIST: List to insert object into +#define BINARY_INSERT_NUM(IN, LIST) \ + var/__BIN_CTTL = length(LIST);\ + if(!__BIN_CTTL) {\ + LIST += IN;\ + } else {\ + var/__BIN_LEFT = 1;\ + var/__BIN_RIGHT = __BIN_CTTL;\ + var/__BIN_MID = (__BIN_LEFT + __BIN_RIGHT) >> 1;\ + var/__BIN_ITEM;\ + while(__BIN_LEFT < __BIN_RIGHT) {\ + __BIN_ITEM = LIST[__BIN_MID];\ + if(__BIN_ITEM <= IN) {\ + __BIN_LEFT = __BIN_MID + 1;\ + } else {\ + __BIN_RIGHT = __BIN_MID;\ + };\ + __BIN_MID = (__BIN_LEFT + __BIN_RIGHT) >> 1;\ + };\ + __BIN_ITEM = LIST[__BIN_MID];\ + __BIN_MID = __BIN_ITEM > IN ? __BIN_MID : __BIN_MID + 1;\ + LIST.Insert(__BIN_MID, IN);\ + } + /** * Custom binary search sorted insert utilising comparison procs instead of vars. * INPUT: Object to be inserted diff --git a/code/__HELPERS/emissives.dm b/code/__HELPERS/emissives.dm index 1c584e6f90c..08c360849b5 100644 --- a/code/__HELPERS/emissives.dm +++ b/code/__HELPERS/emissives.dm @@ -1,21 +1,11 @@ /// Produces a mutable appearance glued to the [EMISSIVE_PLANE] dyed to be the [EMISSIVE_COLOR]. -/// Produces a mutable appearance glued to the [EMISSIVE_PLANE] dyed to be the [EMISSIVE_COLOR]. /proc/emissive_appearance(icon, icon_state = "", layer = FLOAT_LAYER, alpha = 255, appearance_flags = NONE) var/mutable_appearance/appearance = mutable_appearance(icon, icon_state, layer, EMISSIVE_PLANE, alpha, appearance_flags | EMISSIVE_APPEARANCE_FLAGS) - if(alpha == 255) - appearance.color = GLOB.emissive_color - else - var/alpha_ratio = alpha/255 - appearance.color = _EMISSIVE_COLOR(alpha_ratio) + appearance.color = GLOB.emissive_color return appearance /// Produces a mutable appearance glued to the [EMISSIVE_PLANE] dyed to be the [EM_BLOCK_COLOR]. -/proc/emissive_blocker(icon, icon_state = "", layer = FLOAT_LAYER, alpha = 255, appearance_flags = EMPTY_BITFIELD, source = null) +/proc/emissive_blocker(icon, icon_state = "", layer = FLOAT_LAYER, alpha = 255, appearance_flags = NONE) var/mutable_appearance/appearance = mutable_appearance(icon, icon_state, layer, EMISSIVE_PLANE, alpha, appearance_flags | EMISSIVE_APPEARANCE_FLAGS) - if(alpha == 255) - appearance.color = GLOB.em_block_color - else - var/alpha_ratio = alpha/255 - appearance.color = _EM_BLOCK_COLOR(alpha_ratio) + appearance.color = GLOB.em_block_color return appearance - diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index 291b7afcd03..7d416d13f84 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -880,9 +880,6 @@ lighting determines lighting capturing (optional), suppress_errors suppreses err for(var/turf/T in turfstocapture) atoms += T for(var/atom/A in T) - if(istype(A, /atom/movable/lighting_overlay)) //Special case for lighting - continue - if(A.invisibility) continue @@ -905,14 +902,6 @@ lighting determines lighting capturing (optional), suppress_errors suppreses err var/yoff = (A.y - ty) * 32 cap.Blend(img, blendMode2iconMode(A.blend_mode), A.pixel_x + xoff, A.pixel_y + yoff) - if (lighting) - for (var/turf/T in turfstocapture) - var/icon/im = new(LIGHTING_ICON, "blank") - var/color = T.get_avg_color() // We're going to lose some detail, but it's all we can do without color matrixes. - if (color) - im.Blend(color, ICON_MULTIPLY) - cap.Blend(im, ICON_MULTIPLY, (T.x - tx) * 32, (T.y - ty) * 32) - return cap /proc/percentage_to_colour(var/P) diff --git a/code/__HELPERS/spatial_info.dm b/code/__HELPERS/spatial_info.dm index 31618be8c8c..89b8f7a5741 100644 --- a/code/__HELPERS/spatial_info.dm +++ b/code/__HELPERS/spatial_info.dm @@ -206,16 +206,16 @@ ///Calculate if two atoms are in sight, returns TRUE or FALSE /proc/inLineOfSight(X1,Y1,X2,Y2,Z=1,PX1=16.5,PY1=16.5,PX2=16.5,PY2=16.5) var/turf/T - if(X1 == X2) - if(Y1 == Y2) - return TRUE //Light cannot be blocked on same tile + if(X1==X2) + if(Y1==Y2) + return 1 //Light cannot be blocked on same tile else var/s = SIGN(Y2-Y1) Y1+=s - while(Y1 != Y2) + while(Y1!=Y2) T=locate(X1,Y1,Z) - if(IS_OPAQUE_TURF(T)) - return FALSE + if(T.opacity) + return 0 Y1+=s else var/m=(32*(Y2-Y1)+(PY2-PY1))/(32*(X2-X1)+(PX2-PX1)) @@ -224,17 +224,16 @@ var/signY = SIGN(Y2-Y1) if(X1 !!current_turf.lighting_overlay) - for (var/thing in current_turf) - var/atom/movable/AM = thing - if (AM.simulated && AM.explosion_resistance) - current_power -= AM.explosion_resistance - if (current_power <= 0) CHECK_TICK continue @@ -395,7 +388,7 @@ SUBSYSTEM_DEF(explosives) if (T.simulated) T.ex_act(severity) - if (T.contents.len > !!T.lighting_overlay) + if (T.contents.len) for (var/subthing in T) var/atom/movable/AM = subthing if (AM.simulated) diff --git a/code/controllers/subsystems/lighting.dm b/code/controllers/subsystems/lighting.dm index c2e129f6f5d..231ac9980b7 100644 --- a/code/controllers/subsystems/lighting.dm +++ b/code/controllers/subsystems/lighting.dm @@ -1,217 +1,123 @@ -GLOBAL_VAR_INIT(lighting_profiling, FALSE) -GLOBAL_VAR_INIT(lighting_overlays_initialized, FALSE) - SUBSYSTEM_DEF(lighting) name = "Lighting" - wait = LIGHTING_INTERVAL - runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY - - priority = SS_PRIORITY_LIGHTING + wait = 2 init_order = INIT_ORDER_LIGHTING - var/total_lighting_overlays = 0 - var/total_lighting_sources = 0 - var/list/lighting_corners = list() // List of all lighting corners in the world. + //debug var for tracking updates before init is complete + var/duplicate_shadow_updates_in_init = 0 + ///Total times shadows were updated, debug + var/total_shadow_calculations = 0 - var/list/light_queue = list() // lighting sources queued for update. - var/lq_idex = 1 - var/list/corner_queue = list() // lighting corners queued for update. - var/cq_idex = 1 - var/list/overlay_queue = list() // lighting overlays queued for update. - var/oq_idex = 1 + ///Whether the SS has begun setting up yet + var/started = FALSE - var/tmp/processed_lights = 0 - var/tmp/processed_corners = 0 - var/tmp/processed_overlays = 0 + var/static/list/static_sources_queue = list() //! List of static lighting sources queued for update. + var/static/list/corners_queue = list() //! List of lighting corners queued for update. + var/static/list/objects_queue = list() //! List of lighting objects queued for update. - var/total_ss_updates = 0 - var/total_instant_updates = 0 - -#ifdef USE_INTELLIGENT_LIGHTING_UPDATES - var/force_queued = TRUE - var/force_override = FALSE // For admins. -#endif - -/datum/controller/subsystem/lighting/stat_entry(msg) - var/list/out = list( -#ifdef USE_INTELLIGENT_LIGHTING_UPDATES - "IUR: [total_ss_updates ? round(total_instant_updates/(total_instant_updates+total_ss_updates)*100, 0.1) : "NaN"]%\n", -#endif - "\tT:{L:[total_lighting_sources] C:[lighting_corners.len] O:[total_lighting_overlays]}\n", - "\tP:{L:[light_queue.len - (lq_idex - 1)]|C:[corner_queue.len - (cq_idex - 1)]|O:[overlay_queue.len - (oq_idex - 1)]}\n", - "\tL:{L:[processed_lights]|C:[processed_corners]|O:[processed_overlays]}\n" - ) - msg = out.Join() - return ..() - -#ifdef USE_INTELLIGENT_LIGHTING_UPDATES - -/datum/controller/subsystem/lighting/ExplosionStart() - force_queued = TRUE - can_fire = FALSE - -/datum/controller/subsystem/lighting/ExplosionEnd() - can_fire = TRUE - if (!force_override) - force_queued = FALSE - - -/datum/controller/subsystem/lighting/proc/handle_roundstart() - force_queued = FALSE - total_ss_updates = 0 - total_instant_updates = 0 - -#endif + var/static/list/mask_queue = list() //! List of hybrid lighting sources queued for update. /datum/controller/subsystem/lighting/Initialize(timeofday) - var/overlaycount = 0 - var/starttime = REALTIMEOFDAY - // Generate overlays. - var/turf/T - var/thing - for (var/zlevel = 1 to world.maxz) - for (thing in Z_TURFS(zlevel)) - T = thing - if(GLOB.config.starlight) - var/turf/space/S = T - if(istype(S) && S.use_starlight) - S.update_starlight() - - if (!T.dynamic_lighting) - continue - - var/area/A = T.loc - if (!A.dynamic_lighting) - continue - - T.lighting_build_overlay() - overlaycount++ - - CHECK_TICK - - GLOB.lighting_overlays_initialized = TRUE - - admin_notice(SPAN_DANGER("Created [overlaycount] lighting overlays in [(REALTIMEOFDAY - starttime)/10] seconds."), R_DEBUG) - - starttime = REALTIMEOFDAY - // Tick once to clear most lights. + started = TRUE + if(!initialized) + //Handle static lightnig + create_all_lighting_objects() fire(FALSE, TRUE) - - admin_notice(SPAN_DANGER("Processed [processed_lights] light sources."), R_DEBUG) - admin_notice(SPAN_DANGER("Processed [processed_corners] light corners."), R_DEBUG) - admin_notice(SPAN_DANGER("Processed [processed_overlays] light overlays."), R_DEBUG) - admin_notice(SPAN_DANGER("Lighting pre-bake completed in [(REALTIMEOFDAY - starttime)/10] seconds."), R_DEBUG) - - log_subsystem("lighting", "NOv:[overlaycount] L:[processed_lights] C:[processed_corners] O:[processed_overlays]") - -#ifdef USE_INTELLIGENT_LIGHTING_UPDATES - SSticker.OnRoundstart(CALLBACK(src, PROC_REF(handle_roundstart))) -#endif - return SS_INIT_SUCCESS -/datum/controller/subsystem/lighting/fire(resumed = FALSE, no_mc_tick = FALSE) - if (!resumed) - processed_lights = 0 - processed_corners = 0 - processed_overlays = 0 +/datum/controller/subsystem/lighting/stat_entry() + . = ..("ShCalcs:[total_shadow_calculations]|SourcQ:[length(static_sources_queue)]|CcornQ:[length(corners_queue)]|ObjQ:[length(objects_queue)]|HybrQ:[length(mask_queue)]") +/datum/controller/subsystem/lighting/fire(resumed, init_tick_checks) MC_SPLIT_TICK_INIT(3) - if (!no_mc_tick) + if(!init_tick_checks) MC_SPLIT_TICK + var/updators_num = 0 + while(updators_num < length(static_sources_queue)) + updators_num += 1 - var/list/curr_lights = light_queue - var/list/curr_corners = corner_queue - var/list/curr_overlays = overlay_queue - - while (lq_idex <= curr_lights.len) - var/datum/light_source/L = curr_lights[lq_idex++] - if(QDELETED(L)) - continue - - if (L.needs_update != LIGHTING_NO_UPDATE) - total_ss_updates += 1 - L.update_corners() + var/datum/static_light_source/L = static_sources_queue[updators_num] + L.update_corners() + if(!QDELETED(L)) L.needs_update = LIGHTING_NO_UPDATE - - processed_lights++ - - if (no_mc_tick) - CHECK_TICK + else + updators_num -= 1 + if(init_tick_checks) + if(!TICK_CHECK) + continue + static_sources_queue.Cut(1, updators_num + 1) + updators_num = 0 + stoplag() else if (MC_TICK_CHECK) break + if(updators_num) + static_sources_queue.Cut(1, updators_num + 1) + updators_num = 0 - if (lq_idex > 1) - curr_lights.Cut(1, lq_idex) - lq_idex = 1 - - if (!no_mc_tick) + if(!init_tick_checks) MC_SPLIT_TICK - while (cq_idex <= curr_corners.len) - var/datum/lighting_corner/C = curr_corners[cq_idex++] - if(QDELETED(C)) + while(updators_num < length(corners_queue)) + updators_num += 1 + + var/datum/static_lighting_corner/C = corners_queue[updators_num] + C.needs_update = FALSE //update_objects() can call qdel if the corner is storing no data + C.update_objects() + + if(init_tick_checks) + if(!TICK_CHECK) + continue + corners_queue.Cut(1, updators_num + 1) + updators_num = 0 + stoplag() + else if (MC_TICK_CHECK) + break + if(updators_num) + corners_queue.Cut(1, updators_num + 1) + updators_num = 0 + if(!init_tick_checks) + MC_SPLIT_TICK + + while(updators_num < length(objects_queue)) + updators_num += 1 + + var/datum/static_lighting_object/O = objects_queue[updators_num] + if (QDELETED(O)) continue + O.update() + O.needs_update = FALSE - if (C.needs_update) - C.update_overlays() - - C.needs_update = FALSE - - processed_corners++ - - if (no_mc_tick) - CHECK_TICK + if(init_tick_checks) + if(!TICK_CHECK) + continue + objects_queue.Cut(1, updators_num + 1) + updators_num = 0 else if (MC_TICK_CHECK) break - - if (cq_idex > 1) - curr_corners.Cut(1, cq_idex) - cq_idex = 1 - - if (!no_mc_tick) + if(updators_num) + objects_queue.Cut(1, updators_num + 1) + updators_num = 0 + if(!init_tick_checks) MC_SPLIT_TICK - while (oq_idex <= curr_overlays.len) - var/atom/movable/lighting_overlay/O = curr_overlays[oq_idex++] + while(updators_num > length(mask_queue)) + updators_num += 1 - if (!QDELETED(O) && O.needs_update) - O.update_overlay() - O.needs_update = FALSE + var/atom/movable/lighting_mask/mask_to_update = mask_queue[updators_num] + mask_to_update.calculate_lighting_shadows() - processed_overlays++ - - if (no_mc_tick) - CHECK_TICK + if(init_tick_checks) + if(!TICK_CHECK) + continue + mask_queue.Cut(1, updators_num + 1) + updators_num = 0 + stoplag() else if (MC_TICK_CHECK) break - - if (oq_idex > 1) - curr_overlays.Cut(1, oq_idex) - oq_idex = 1 + if(updators_num) + mask_queue.Cut(1, updators_num + 1) /datum/controller/subsystem/lighting/Recover() - lighting_corners = SSlighting.lighting_corners - total_lighting_overlays = SSlighting.total_lighting_overlays - total_lighting_sources = SSlighting.total_lighting_sources - - light_queue = SSlighting.light_queue - corner_queue = SSlighting.corner_queue - overlay_queue = SSlighting.overlay_queue - - lq_idex = SSlighting.lq_idex - cq_idex = SSlighting.cq_idex - oq_idex = SSlighting.oq_idex - - if (lq_idex > 1) - light_queue.Cut(1, lq_idex) - lq_idex = 1 - - if (cq_idex > 1) - corner_queue.Cut(1, cq_idex) - cq_idex = 1 - - if (oq_idex > 1) - overlay_queue.Cut(1, oq_idex) - oq_idex = 1 + initialized = SSlighting.initialized + return ..() diff --git a/code/controllers/subsystems/mob.dm b/code/controllers/subsystems/mob.dm index c7dc399f0b9..a289b1e272a 100644 --- a/code/controllers/subsystems/mob.dm +++ b/code/controllers/subsystems/mob.dm @@ -16,9 +16,6 @@ SUBSYSTEM_DEF(mobs) var/list/greatworms = list() var/list/greatasses = list() - var/list/ghost_darkness_images = list() //this is a list of images for things ghosts should still be able to see when they toggle darkness - var/list/ghost_sightless_images = list() //this is a list of images for things ghosts should still be able to see even without ghost sight - // Devour types (these are typecaches). Only simple_animals check these, other types are handled specially. var/list/mtl_synthetic = list( /mob/living/simple_animal/hostile/hivebot diff --git a/code/controllers/subsystems/sunlight.dm b/code/controllers/subsystems/sunlight.dm index 34036aa5544..ff29c383b94 100644 --- a/code/controllers/subsystems/sunlight.dm +++ b/code/controllers/subsystems/sunlight.dm @@ -53,7 +53,6 @@ SUBSYSTEM_DEF(sunlight) /atom/movable/sunobj name = "sunlight emitter" desc = DESC_PARENT - light_novis = TRUE light_range = 16 simulated = FALSE mouse_opacity = FALSE diff --git a/code/controllers/subsystems/ticker.dm b/code/controllers/subsystems/ticker.dm index 4e0d85f69ae..ef51776ec84 100644 --- a/code/controllers/subsystems/ticker.dm +++ b/code/controllers/subsystems/ticker.dm @@ -7,9 +7,7 @@ ///The time at which the next automatic transfer vote will be called GLOBAL_VAR_INIT(next_transfer_time, null) -var/datum/controller/subsystem/ticker/SSticker - -/datum/controller/subsystem/ticker +SUBSYSTEM_DEF(ticker) // -- Subsystem stuff -- name = "Ticker" @@ -73,9 +71,6 @@ var/datum/controller/subsystem/ticker/SSticker var/total_players_ready = 0 var/list/ready_player_jobs -/datum/controller/subsystem/ticker/New() - NEW_SS_GLOBAL(SSticker) - /datum/controller/subsystem/ticker/Initialize(timeofday) pregame() restart_timeout = GLOB.config.restart_timeout diff --git a/code/controllers/subsystems/zcopy.dm b/code/controllers/subsystems/zcopy.dm index dc600b5cfa7..11cc4d57328 100644 --- a/code/controllers/subsystems/zcopy.dm +++ b/code/controllers/subsystems/zcopy.dm @@ -250,8 +250,6 @@ SUBSYSTEM_DEF(zcopy) TO.plane = t_target TO.mouse_opacity = initial(TO.mouse_opacity) - T.queue_ao(T.ao_neighbors_mimic == null) // If ao_neighbors hasn't been set yet, we need to do a rebuild - // Explicitly copy turf delegates so they show up properly on below levels. // I think it's possible to get this to work without discrete delegate copy objects, but I'd rather this just work. if ((T.below.z_flags & (ZM_MIMIC_BELOW|ZM_MIMIC_OVERWRITE)) == ZM_MIMIC_BELOW) @@ -275,11 +273,6 @@ SUBSYSTEM_DEF(zcopy) // Don't queue deleted stuff, stuff that's not visible, blacklisted stuff, or stuff that's centered on another tile but intersects ours. continue - // Special case: these are merged into the shadower to reduce memory usage. - if (object.type == /atom/movable/lighting_overlay) - //T.shadower.copy_lighting(object) - continue - if (!object.bound_overlay) // Generate a new overlay if the atom doesn't already have one. object.bound_overlay = new(T) object.bound_overlay.associated_atom = object @@ -393,13 +386,6 @@ SUBSYSTEM_DEF(zcopy) if (OO.bound_overlay) // If we have a bound overlay, queue it too. OO.update_above() - // If an atom has explicit plane sets on its overlays/underlays, we need to replace the appearance so they can be mangled to work with our planing. - if (OO.z_flags & ZMM_MANGLE_PLANES) - var/new_appearance = fixup_appearance_planes(OO.appearance) - if (new_appearance) - OO.appearance = new_appearance - OO.have_performed_fixup = TRUE - if (no_mc_tick) CHECK_TICK else if (MC_TICK_CHECK) @@ -439,93 +425,6 @@ SUBSYSTEM_DEF(zcopy) if (TO.plane == 0 && target_plane) TO.plane = target_plane -/// Generate a new appearance from `appearance` with planes mangled to work with Z-Mimic. Do not pass a depth. -/datum/controller/subsystem/zcopy/proc/fixup_appearance_planes(appearance, depth = 0) - - // Adding this to guard against a reported runtime - supposed to be impossible, so cause is unclear. - if(!appearance) - return null - - if (fixup_known_good[appearance]) - fixup_hit += 1 - return null - if (fixup_cache[appearance]) - fixup_hit += 1 - return fixup_cache[appearance] - - // If you have more than 4 layers of overlays within overlays, I dunno what to say. - if (depth > 4) - var/icon_name = "[appearance:icon]" - WARNING("Fixup of appearance with icon [icon_name || ""] exceeded maximum recursion limit, bailing") - return null - - var/plane_needs_fix = FALSE - - // Don't fixup the root object's plane. - if (depth > 0) - switch (appearance:plane) - if (GAME_PLANE, FLOAT_PLANE) - plane_needs_fix = FALSE //For lint - else - plane_needs_fix = TRUE - - // Scan & fix overlays - var/list/fixed_overlays - if (appearance:overlays:len) - var/mutated = FALSE - var/fixed_appearance - for (var/i in 1 to appearance:overlays:len) - if ((fixed_appearance = .(appearance:overlays[i], depth + 1))) - mutated = TRUE - if (!fixed_overlays) - fixed_overlays = new( length(appearance:overlays)) - fixed_overlays[i] = fixed_appearance - - if (mutated) - for (var/i in 1 to length(fixed_overlays)) - if (fixed_overlays[i] == null) - fixed_overlays[i] = appearance:overlays[i] - - // Scan & fix underlays - var/list/fixed_underlays - if (appearance:underlays:len) - var/mutated = FALSE - var/fixed_appearance - for (var/i in 1 to appearance:underlays:len) - if ((fixed_appearance = .(appearance:underlays[i], depth + 1))) - mutated = TRUE - if (!fixed_underlays) - fixed_underlays = new( length(appearance:underlays)) - fixed_underlays[i] = fixed_appearance - - if (mutated) - for (var/i in 1 to length(fixed_overlays)) - if (fixed_underlays[i] == null) - fixed_underlays[i] = appearance:underlays[i] - - // If we did nothing (no violations), don't bother creating a new appearance - if (!plane_needs_fix && !fixed_overlays && !fixed_underlays) - fixup_noop += 1 - fixup_known_good[appearance] = TRUE - return null - - fixup_miss += 1 - - var/mutable_appearance/MA = new(appearance) - if (plane_needs_fix) - MA.plane = depth == 0 ? GAME_PLANE : FLOAT_PLANE - MA.layer = FLY_LAYER // probably fine - - if (fixed_overlays) - MA.overlays = fixed_overlays - - if (fixed_underlays) - MA.underlays = fixed_underlays - - fixup_cache[appearance] = MA.appearance - - return MA - #define FMT_DEPTH(X) (X == null ? "(null)" : X) // This is a dummy object used so overlays can be shown in the analyzer. diff --git a/code/datums/components/overlay_lighting.dm b/code/datums/components/overlay_lighting.dm new file mode 100644 index 00000000000..665b7f3d055 --- /dev/null +++ b/code/datums/components/overlay_lighting.dm @@ -0,0 +1,524 @@ +///For switchable lights, is it on and currently emitting light? +#define LIGHTING_ON (1<<0) +///Is the parent attached to something else, its loc? Then we need to keep an eye of this. +#define LIGHTING_ATTACHED (1<<1) + +#define GET_PARENT (parent_attached_to || parent) + +#define SHORT_CAST 2 + + +/** + * Movable atom overlay-based lighting component. + * + * * Component works by applying a visual object to the parent target. + * + * * The component tracks the parent's loc to determine the current_holder. + * * The current_holder is either the parent or its loc, whichever is on a turf. If none, then the current_holder is null and the light is not visible. + * + * * Lighting works at its base by applying a dark overlay and "cutting" said darkness with light, adding (possibly colored) transparency. + * * This component uses the visible_mask visual object to apply said light mask on the darkness. + * + * * The main limitation of this system is that it uses a limited number of pre-baked geometrical shapes, but for most uses it does the job. + * + * * Another limitation is for big lights: you only see the light if you see the object emiting it. + * * For small objects this is good (you can't see them behind a wall), but for big ones this quickly becomes prety clumsy. +*/ +/datum/component/overlay_lighting + ///How far the light reaches, float. + var/range = 1 + ///Ceiling of range, integer without decimal entries. + var/lumcount_range = 0 + ///How much this light affects the dynamic_lumcount of turfs. + var/lum_power = 0.5 + ///Transparency value. + var/set_alpha = 0 + ///For light sources that can be turned on and off. + var/overlay_lighting_flags = NONE + + ///Cache of the possible light overlays, according to size. + var/static/list/light_overlays = list( + "32" = 'icons/effects/light_overlays/light_32.dmi', + "64" = 'icons/effects/light_overlays/light_64.dmi', + "96" = 'icons/effects/light_overlays/light_96.dmi', + "128" = 'icons/effects/light_overlays/light_128.dmi', + "160" = 'icons/effects/light_overlays/light_160.dmi', + "192" = 'icons/effects/light_overlays/light_192.dmi', + "224" = 'icons/effects/light_overlays/light_224.dmi', + "256" = 'icons/effects/light_overlays/light_256.dmi', + "288" = 'icons/effects/light_overlays/light_288.dmi', + "320" = 'icons/effects/light_overlays/light_320.dmi', + "352" = 'icons/effects/light_overlays/light_352.dmi', + "384" = 'icons/effects/light_overlays/light_384.dmi', + "416" = 'icons/effects/light_overlays/light_416.dmi', + ) + + ///Overlay effect to cut into the darkness and provide light. + var/image/visible_mask + ///Lazy list to track the turfs being affected by our light, to determine their visibility. + var/list/turf/affected_turfs + ///Movable atom currently holding the light. Parent might be a flashlight, for example, but that might be held by a mob or something else. + var/atom/movable/current_holder + ///Movable atom the parent is attached to. For example, a flashlight into a helmet or gun. We'll need to track the thing the parent is attached to as if it were the parent itself. + var/atom/movable/parent_attached_to + ///Whether we're a directional light + var/directional = FALSE + ///A cone overlay for directional light, it's alpha and color are dependant on the light + var/image/cone + ///Current tracked direction for the directional cast behaviour + var/current_direction + ///Tracks current directional x offset so we dont update unecessarily + var/directional_offset_x + ///Tracks current directional y offset so we dont update unecessarily + var/directional_offset_y + ///Cast range for the directional cast (how far away the atom is moved) + var/cast_range = 2 + + +/datum/component/overlay_lighting/Initialize(_range, _power, _color, starts_on, is_directional) + if(!ismovable(parent)) + return COMPONENT_INCOMPATIBLE + + var/atom/movable/movable_parent = parent + if(movable_parent.light_system != MOVABLE_LIGHT && movable_parent.light_system != DIRECTIONAL_LIGHT) + stack_trace("[type] added to [parent], with [movable_parent.light_system] value for the light_system var. Use [MOVABLE_LIGHT]/[DIRECTIONAL_LIGHT] instead.") + return COMPONENT_INCOMPATIBLE + + . = ..() + + visible_mask = image('icons/effects/light_overlays/light_32.dmi', icon_state = "light") + visible_mask.plane = O_LIGHTING_VISUAL_PLANE + visible_mask.appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM + visible_mask.alpha = 0 + if(is_directional) + directional = TRUE + cone = image('icons/effects/light_overlays/light_cone.dmi', icon_state = "light") + cone.plane = O_LIGHTING_VISUAL_PLANE + cone.appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM + cone.alpha = 110 + cone.transform = cone.transform.Translate(-32, -32) + set_direction(movable_parent.dir) + if(!isnull(_range)) + movable_parent.set_light_range(_range) + set_range(parent, movable_parent.light_range) + if(!isnull(_power)) + movable_parent.set_light_power(_power) + set_power(parent, movable_parent.light_power) + if(!isnull(_color)) + movable_parent.set_light_color(_color) + set_color(parent, movable_parent.light_color) + if(!isnull(starts_on)) + movable_parent.set_light_on(starts_on) + +/datum/component/overlay_lighting/RegisterWithParent() + . = ..() + if(directional) + RegisterSignal(parent, COMSIG_ATOM_DIR_CHANGE, PROC_REF(on_parent_dir_change)) + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(on_parent_moved)) + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(check_holder)) + RegisterSignal(parent, COMSIG_ATOM_SET_LIGHT_RANGE, PROC_REF(set_range)) + RegisterSignal(parent, COMSIG_ATOM_SET_LIGHT_POWER, PROC_REF(set_power)) + RegisterSignal(parent, COMSIG_ATOM_SET_LIGHT_COLOR, PROC_REF(set_color)) + RegisterSignal(parent, COMSIG_ATOM_SET_LIGHT_ON, PROC_REF(on_toggle)) + RegisterSignal(parent, COMSIG_ATOM_SET_LIGHT_FLAGS, PROC_REF(on_light_flags_change)) + var/atom/movable/movable_parent = parent + if(movable_parent.light_flags & LIGHT_ATTACHED) + overlay_lighting_flags |= LIGHTING_ATTACHED + set_parent_attached_to(ismovable(movable_parent.loc) ? movable_parent.loc : null) + check_holder() + if(movable_parent.light_on) + turn_on() + + + +/datum/component/overlay_lighting/UnregisterFromParent() + overlay_lighting_flags &= ~LIGHTING_ATTACHED + set_parent_attached_to(null) + set_holder(null) + clean_old_turfs() + UnregisterSignal(parent, list( + COMSIG_MOVABLE_MOVED, + COMSIG_ATOM_SET_LIGHT_RANGE, + COMSIG_ATOM_SET_LIGHT_POWER, + COMSIG_ATOM_SET_LIGHT_COLOR, + COMSIG_ATOM_SET_LIGHT_ON, + COMSIG_ATOM_SET_LIGHT_FLAGS, + )) + if(directional) + UnregisterSignal(parent, COMSIG_ATOM_DIR_CHANGE) + if(overlay_lighting_flags & LIGHTING_ON) + turn_off() + return ..() + + +/datum/component/overlay_lighting/Destroy() + set_parent_attached_to(null) + set_holder(null) + clean_old_turfs() + visible_mask = null + cone = null + parent_attached_to = null + return ..() + + +///Clears the affected_turfs lazylist, removing from its contents the effects of being near the light. +/datum/component/overlay_lighting/proc/clean_old_turfs() + for(var/turf/lit_turf as anything in affected_turfs) + lit_turf.dynamic_lumcount -= lum_power + affected_turfs = null + + +///Populates the affected_turfs lazylist, adding to its contents the effects of being near the light. +/datum/component/overlay_lighting/proc/get_new_turfs() + if(!current_holder) + return + LAZYINITLIST(affected_turfs) + if(range <= 2) + //Range here is 1 because actual range of lighting mask is 1 tile even if it says that range is 2 + for(var/turf/lit_turf as anything in RANGE_TURFS(1, current_holder.loc)) + lit_turf.dynamic_lumcount += lum_power + affected_turfs += lit_turf + else + for(var/turf/lit_turf in view(lumcount_range, get_turf(current_holder))) + lit_turf.dynamic_lumcount += lum_power + affected_turfs += lit_turf + + +///Clears the old affected turfs and populates the new ones. +/datum/component/overlay_lighting/proc/make_luminosity_update() + clean_old_turfs() + if(!isturf(current_holder?.loc)) + return + if(directional) + cast_directional_light() + get_new_turfs() + + +///Adds the luminosity and source for the affected movable atoms to keep track of their visibility. +/datum/component/overlay_lighting/proc/add_dynamic_lumi() + LAZYSET(current_holder.affected_movable_lights, src, lumcount_range + 1) + current_holder.underlays += visible_mask + current_holder.update_dynamic_luminosity() + if(directional) + current_holder.underlays += cone + +///Removes the luminosity and source for the affected movable atoms to keep track of their visibility. +/datum/component/overlay_lighting/proc/remove_dynamic_lumi() + LAZYREMOVE(current_holder.affected_movable_lights, src) + current_holder.underlays -= visible_mask + current_holder.update_dynamic_luminosity() + if(directional) + current_holder.underlays -= cone + +///Called to change the value of parent_attached_to. +/datum/component/overlay_lighting/proc/set_parent_attached_to(atom/movable/new_parent_attached_to) + if(new_parent_attached_to == parent_attached_to) + return + + . = parent_attached_to + parent_attached_to = new_parent_attached_to + if(.) + var/atom/movable/old_parent_attached_to = . + UnregisterSignal(old_parent_attached_to, list(COMSIG_QDELETING, COMSIG_MOVABLE_MOVED)) + if(old_parent_attached_to == current_holder) + RegisterSignal(old_parent_attached_to, COMSIG_QDELETING, PROC_REF(on_holder_qdel)) + RegisterSignal(old_parent_attached_to, COMSIG_MOVABLE_MOVED, PROC_REF(on_holder_moved)) + if(parent_attached_to) + if(parent_attached_to == current_holder) + UnregisterSignal(current_holder, list(COMSIG_QDELETING, COMSIG_MOVABLE_MOVED)) + RegisterSignal(parent_attached_to, COMSIG_QDELETING, PROC_REF(on_parent_attached_to_qdel)) + RegisterSignal(parent_attached_to, COMSIG_MOVABLE_MOVED, PROC_REF(on_parent_attached_to_moved)) + check_holder() + + +///Called to change the value of current_holder. +/datum/component/overlay_lighting/proc/set_holder(atom/movable/new_holder) + if(new_holder == current_holder) + return + if(current_holder) + if(current_holder != parent && current_holder != parent_attached_to) + UnregisterSignal(current_holder, list(COMSIG_QDELETING, COMSIG_MOVABLE_MOVED)) + if(directional) + UnregisterSignal(current_holder, COMSIG_ATOM_DIR_CHANGE) + if(overlay_lighting_flags & LIGHTING_ON) + remove_dynamic_lumi() + current_holder = new_holder + if(new_holder == null) + clean_old_turfs() + return + if(new_holder != parent && new_holder != parent_attached_to) + RegisterSignal(new_holder, COMSIG_QDELETING, PROC_REF(on_holder_qdel)) + if(overlay_lighting_flags & LIGHTING_ON) + RegisterSignal(new_holder, COMSIG_MOVABLE_MOVED, PROC_REF(on_holder_moved)) + if(directional) + RegisterSignal(new_holder, COMSIG_ATOM_DIR_CHANGE, PROC_REF(on_holder_dir_change)) + if(directional && current_direction != new_holder.dir) + current_direction = new_holder.dir + if(overlay_lighting_flags & LIGHTING_ON) + add_dynamic_lumi() + make_luminosity_update() + + +///Used to determine the new valid current_holder from the parent's loc. +/datum/component/overlay_lighting/proc/check_holder() + var/atom/movable/movable_parent = GET_PARENT + if(QDELETED(movable_parent)) + set_holder(null) + return + if(isturf(movable_parent.loc)) + set_holder(movable_parent) + return + var/atom/inside = movable_parent.loc //Parent's loc + if(isnull(inside)) + set_holder(null) + return + if(isturf(inside.loc)) + // storage items block light, also don't be moving into a qdeleted item + if(QDELETED(inside) || istype(inside, /obj/item/storage)) + set_holder(null) + else + set_holder(inside) + return + set_holder(null) + + +///Called when the current_holder is qdeleted, to remove the light effect. +/datum/component/overlay_lighting/proc/on_holder_qdel(atom/movable/source, force) + SIGNAL_HANDLER + if(QDELETED(current_holder)) + set_holder(null) + return + UnregisterSignal(current_holder, list(COMSIG_QDELETING, COMSIG_MOVABLE_MOVED)) + if(directional) + UnregisterSignal(current_holder, COMSIG_ATOM_DIR_CHANGE) + set_holder(null) + + +///Called when current_holder changes loc. +/datum/component/overlay_lighting/proc/on_holder_moved(atom/movable/source, OldLoc, Dir, Forced) + SIGNAL_HANDLER + if(!(overlay_lighting_flags & LIGHTING_ON)) + return + make_luminosity_update() + +///Called when the current_holder is qdeleted, to remove the light effect. +/datum/component/overlay_lighting/proc/on_parent_attached_to_qdel(atom/movable/source, force) + SIGNAL_HANDLER + UnregisterSignal(parent_attached_to, list(COMSIG_QDELETING, COMSIG_MOVABLE_MOVED)) + if(directional) + UnregisterSignal(parent_attached_to, COMSIG_ATOM_DIR_CHANGE) + if(parent_attached_to == current_holder) + set_holder(null) + set_parent_attached_to(null) + +///Called when parent_attached_to changes loc. +/datum/component/overlay_lighting/proc/on_parent_attached_to_moved(atom/movable/source, OldLoc, Dir, Forced) + SIGNAL_HANDLER + check_holder() + if(!(overlay_lighting_flags & LIGHTING_ON) || !current_holder) + return + make_luminosity_update() + +///Called when parent changes loc. +/datum/component/overlay_lighting/proc/on_parent_moved(atom/movable/source, OldLoc, Dir, Forced) + SIGNAL_HANDLER + var/atom/movable/movable_parent = parent + if(overlay_lighting_flags & LIGHTING_ATTACHED) + set_parent_attached_to(ismovable(movable_parent.loc) ? movable_parent.loc : null) + check_holder() + if(!(overlay_lighting_flags & LIGHTING_ON) || !current_holder) + return + make_luminosity_update() + + +///Changes the range which the light reaches. 0 means no light, 7 is the maximum value. +/datum/component/overlay_lighting/proc/set_range(atom/source, new_range) + SIGNAL_HANDLER + if(range == new_range) + return + if(range == 0) + turn_off() + range = clamp(CEILING(new_range, 0.5), 1, 7) + var/pixel_bounds = ((range - 1) * 64) + 32 + lumcount_range = ceil(range) + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays -= visible_mask + visible_mask.icon = light_overlays["[pixel_bounds]"] + if(pixel_bounds == 32) + visible_mask.transform = null + return + var/offset = (pixel_bounds - 32) * 0.5 + var/matrix/transform = new + transform.Translate(-offset, -offset) + visible_mask.transform = transform + directional_offset_x = 0 + directional_offset_y = 0 + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays += visible_mask + if(directional) + cast_range = clamp(floor(new_range * 0.5), 1, 3) + if(overlay_lighting_flags & LIGHTING_ON) + make_luminosity_update() + + +///Changes the intensity/brightness of the light by altering the visual object's alpha. +/datum/component/overlay_lighting/proc/set_power(atom/source, new_power) + SIGNAL_HANDLER + set_lum_power(new_power >= 0 ? 0.5 : -0.5) + set_alpha = min(230, (abs(new_power) * 120) + 30) + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays -= visible_mask + visible_mask.alpha = set_alpha + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays += visible_mask + + if(!directional) + return + + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays -= cone + cone.alpha = min(200, (abs(new_power) * 90)+20) + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays += cone + + +///Changes the light's color, pretty straightforward. +/datum/component/overlay_lighting/proc/set_color(atom/source, new_color) + SIGNAL_HANDLER + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays -= visible_mask + visible_mask.color = new_color + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays += visible_mask + + if(!directional) + return + + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays -= cone + cone.color = new_color + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays += cone + + +///Toggles the light on and off. +/datum/component/overlay_lighting/proc/on_toggle(atom/source, new_value) + SIGNAL_HANDLER + if(new_value) //Truthy value input, turn on. + turn_on() + return + turn_off() //Falsey value, turn off. + +///Triggered right after the parent light flags change. +/datum/component/overlay_lighting/proc/on_light_flags_change(atom/source, new_flags) + SIGNAL_HANDLER + var/atom/movable/movable_parent = parent + + if(new_flags & LIGHT_ATTACHED) // Gained the [LIGHT_ATTACHED] property + overlay_lighting_flags |= LIGHTING_ATTACHED + if(ismovable(movable_parent.loc)) + set_parent_attached_to(movable_parent.loc) + else // Lost the [LIGHT_ATTACHED] property + overlay_lighting_flags &= ~LIGHTING_ATTACHED + set_parent_attached_to(null) + +///Toggles the light on. +/datum/component/overlay_lighting/proc/turn_on() + if(overlay_lighting_flags & LIGHTING_ON) + return + overlay_lighting_flags |= LIGHTING_ON + if(current_holder) + add_dynamic_lumi(current_holder) + if(directional) + cast_directional_light() + if(current_holder && current_holder != parent && current_holder != parent_attached_to) + RegisterSignal(current_holder, COMSIG_MOVABLE_MOVED, PROC_REF(on_holder_moved)) + get_new_turfs() + + +///Toggles the light off. +/datum/component/overlay_lighting/proc/turn_off() + if(!(overlay_lighting_flags & LIGHTING_ON)) + return + if(current_holder) + remove_dynamic_lumi() + overlay_lighting_flags &= ~LIGHTING_ON + if(current_holder && current_holder != parent && current_holder != parent_attached_to) + UnregisterSignal(current_holder, COMSIG_MOVABLE_MOVED) + clean_old_turfs() + + +///Here we append the behavior associated to changing lum_power. +/datum/component/overlay_lighting/proc/set_lum_power(new_lum_power) + if(lum_power == new_lum_power) + return + . = lum_power + lum_power = new_lum_power + var/difference = . - lum_power + for(var/turf/lit_turf as anything in affected_turfs) + lit_turf.dynamic_lumcount -= difference + +///Here we append the behavior associated to changing lum_power. +/datum/component/overlay_lighting/proc/cast_directional_light() + var/final_distance = cast_range + //Lower the distance by 1 if we're not looking at a cardinal direction, and we're not a short cast + if(final_distance > SHORT_CAST && !(ALL_CARDINALS & current_direction)) + final_distance -= 1 + var/turf/scanning = get_turf(current_holder) + for(var/i in 1 to final_distance) + var/turf/next_turf = get_step(scanning, current_direction) + if(isnull(next_turf) || IS_OPAQUE_TURF(next_turf)) + final_distance = i + break + scanning = next_turf + + current_holder.underlays -= visible_mask + + var/translate_x = -((range - 1) * 32) + var/translate_y = translate_x + switch(current_direction) + if(NORTH) + translate_y += 32 * final_distance + if(SOUTH) + translate_y += -32 * final_distance + if(EAST) + translate_x += 32 * final_distance + if(WEST) + translate_x += -32 * final_distance + if((directional_offset_x != translate_x) || (directional_offset_y != translate_y)) + directional_offset_x = translate_x + directional_offset_y = translate_y + var/matrix/transform = matrix() + transform.Translate(translate_x, translate_y) + visible_mask.transform = transform + if(overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays += visible_mask + +///Called when current_holder changes loc. +/datum/component/overlay_lighting/proc/on_holder_dir_change(atom/movable/source, olddir, newdir) + SIGNAL_HANDLER + set_direction(newdir) + +///Called when parent changes loc. +/datum/component/overlay_lighting/proc/on_parent_dir_change(atom/movable/source, olddir, newdir) + SIGNAL_HANDLER + + if(current_holder?.dir != newdir) + return + + set_direction(newdir) + +///Sets a new direction for the directional cast, then updates luminosity +/datum/component/overlay_lighting/proc/set_direction(newdir) + if(!newdir) + return + if(current_direction == newdir) + return + current_direction = newdir + if(overlay_lighting_flags & LIGHTING_ON) + make_luminosity_update() + +#undef LIGHTING_ON +#undef LIGHTING_ATTACHED +#undef GET_PARENT +#undef SHORT_CAST diff --git a/code/datums/elements/light_blocking.dm b/code/datums/elements/light_blocking.dm new file mode 100644 index 00000000000..08e7ea35436 --- /dev/null +++ b/code/datums/elements/light_blocking.dm @@ -0,0 +1,43 @@ +/** + * Attached to movable atoms with opacity. Listens to them move and updates their old and new turf loc's opacity accordingly. + */ +/datum/element/light_blocking + element_flags = ELEMENT_DETACH_ON_HOST_DESTROY + + +/datum/element/light_blocking/Attach(datum/target) + . = ..() + if(!ismovable(target)) + return ELEMENT_INCOMPATIBLE + RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(on_target_move)) + var/atom/movable/movable_target = target + if(!isturf(movable_target.loc)) + return + for(var/turf/turf_loc as anything in movable_target.locs) + turf_loc.add_opacity_source(target) + + +/datum/element/light_blocking/Detach(datum/target) + . = ..() + UnregisterSignal(target, list(COMSIG_MOVABLE_MOVED)) + var/atom/movable/movable_target = target + if(!isturf(movable_target.loc)) + return + for(var/turf/turf_loc as anything in movable_target.locs) + turf_loc.remove_opacity_source(target) + + +///Updates old and new turf loc opacities. +///Updates old and new turf loc opacities. +/datum/element/light_blocking/proc/on_target_move(atom/movable/source, atom/old_loc, dir, forced, list/old_locs) + SIGNAL_HANDLER + if(isturf(old_loc)) + if(old_locs) + for(var/turf/old_turf as anything in old_locs) + old_turf.remove_opacity_source(source) + else + var/turf/old_turf = old_loc + old_turf.remove_opacity_source(source) + if(isturf(source.loc)) + for(var/turf/new_turf as anything in source.locs) + new_turf.add_opacity_source(source) diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 38439f300df..554fdcbf432 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -29,9 +29,9 @@ GLOBAL_LIST_INIT(area_blurb_stated_to, list()) icon = 'icons/turf/areas.dmi' icon_state = "unknown" layer = AREA_LAYER - luminosity = 0 mouse_opacity = MOUSE_OPACITY_TRANSPARENT invisibility = INVISIBILITY_LIGHTING + plane = BLACKNESS_PLANE var/obj/machinery/power/apc/apc = null /// The base turf type of the area, which can be used to override the z-level's base turf. @@ -139,11 +139,6 @@ GLOBAL_LIST_INIT(area_blurb_stated_to, list()) power_equip = 0 power_environ = 0 - if(dynamic_lighting) - luminosity = 0 - else - luminosity = 1 - if(centcomm_area) GLOB.centcom_areas[src] = TRUE alwaysgravity = 1 @@ -161,8 +156,7 @@ GLOBAL_LIST_INIT(area_blurb_stated_to, list()) . = ..() - if(dynamic_lighting) - luminosity = FALSE + update_base_lighting() if (mapload && turf_initializer) for(var/turf/T in src) diff --git a/code/game/atom/_atom.dm b/code/game/atom/_atom.dm index d2cc218e2f3..7d222ab3698 100644 --- a/code/game/atom/_atom.dm +++ b/code/game/atom/_atom.dm @@ -56,6 +56,36 @@ var/gfi_layer_rotation = GFI_ROTATION_DEFAULT + //light stuff + + ///Light systems, only one of the three should be active at the same time. + var/light_system = STATIC_LIGHT + ///Range of the light in tiles. Zero means no light. + var/light_range = 0 + ///Intensity of the light. The stronger, the less shadows you will see on the lit area. + var/light_power = 1 + ///Hexadecimal RGB string representing the colour of the light. White by default. + var/light_color = COLOR_WHITE + ///Boolean variable for toggleable lights. Has no effect without the proper light_system, light_range and light_power values. + var/light_on = FALSE + ///Bitflags to determine lighting-related atom properties. + var/light_flags = NONE + ///Our light source. Don't fuck with this directly unless you have a good reason! + var/tmp/datum/dynamic_light_source/light + ///Any light sources that are "inside" of us, for example, if src here was a mob that's carrying a flashlight, that flashlight's light source would be part of this list. + var/tmp/list/hybrid_light_sources + + //Values should avoid being close to -16, 16, -48, 48 etc. + //Best keep them within 10 units of a multiple of 32, as when the light is closer to a wall, the probability + //that a shadow extends to opposite corners of the light mask square is increased, resulting in more shadow + //overlays. + ///x offset for dynamic lights on this atom + var/light_pixel_x + ///y offset for dynamic lights on this atom + var/light_pixel_y + ///typepath for the lighting maskfor dynamic light sources + var/light_mask_type = null + /* * EXTRA DESCRIPTIONS * Adds additional information of different types about a given object. @@ -122,9 +152,6 @@ if(light) QDEL_NULL(light) - if(length(light_sources)) - light_sources.Cut() - if(smoothing_flags & SMOOTH_QUEUED) SSicon_smooth.remove_from_queues(src) diff --git a/code/game/atom/atoms_initializing_EXPENSIVE.dm b/code/game/atom/atoms_initializing_EXPENSIVE.dm index 6e93664a28e..cee45a2cda8 100644 --- a/code/game/atom/atoms_initializing_EXPENSIVE.dm +++ b/code/game/atom/atoms_initializing_EXPENSIVE.dm @@ -129,20 +129,15 @@ reagents.maximum_volume += max(LAZYACCESS(reagents_to_add, v) - REAGENTS_FREE_SPACE(reagents), 0) reagents.add_reagent(v, LAZYACCESS(reagents_to_add, v), LAZYACCESS(reagent_data, v)) - if(light_power && light_range) + if(light_system != MOVABLE_LIGHT && light_system != DIRECTIONAL_LIGHT && light_power && light_range) update_light() if(loc) SEND_SIGNAL(loc, COMSIG_ATOM_INITIALIZED_ON, src) // used for large_object_transparency component if(isturf(loc) && opacity) - var/turf/T = loc - T.has_opaque_atom = TRUE // No need to recalculate it in this case, it's guaranteed to be on afterwards anyways. - - #ifdef AO_USE_LIGHTING_OPACITY - if(!mapload) - T.regenerate_ao() - #endif + var/turf/opaque_turf = loc + opaque_turf.directional_opacity = ALL_CARDINALS // No need to recalculate it in this case, it's guaranteed to be on afterwards anyways. if(update_icon_on_init) SSicon_update.add_to_queue(src) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index de1193ec7fb..13fcc2b8e92 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -239,14 +239,9 @@ var/old_dir = dir dir = new_dir - // Lighting. + SEND_SIGNAL(src, COMSIG_ATOM_DIR_CHANGE, dir, new_dir) if (.) - var/datum/light_source/L - for (var/thing in light_sources) - L = thing - if (L.light_angle) - L.source_atom.update_light() - GLOB.dir_set_event.raise_event(src, old_dir, dir) + GLOB.dir_set_event.raise_event(src, old_dir, dir) //todomat: probaly get ird of this shit /atom/proc/melt() return diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 37e603e4f57..44d23df9354 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -76,24 +76,33 @@ ///Internal holder for emissive blocker object, DO NOT USE DIRECTLY. Use blocks_emissive var/mutable_appearance/em_block + ///Lazylist to keep track on the sources of illumination. + var/list/affected_movable_lights + ///Highest-intensity light affecting us, which determines our visibility. + var/affecting_dynamic_lumi = 0 + + /// Holds a reference to the emissive blocker overlay + var/emissive_overlay + /// Whether this atom should have its dir automatically changed when it moves. Setting this to FALSE allows for things such as directional windows to retain dir on moving without snowflake code all of the place. var/set_dir_on_move = TRUE /atom/movable/Initialize(mapload, ...) . = ..() update_emissive_blocker() - if (em_block) - AddOverlays(em_block) + + if(opacity) + AddElement(/datum/element/light_blocking) + if(light_system == MOVABLE_LIGHT) + AddComponent(/datum/component/overlay_lighting) + if(light_system == DIRECTIONAL_LIGHT) + AddComponent(/datum/component/overlay_lighting, is_directional = TRUE) /atom/movable/Destroy(force) if(orbiting) stop_orbit() - //Recalculate opacity - var/turf/T = loc - if(opacity && istype(T)) - T.recalc_atom_opacity() - T.reconsider_lights() + QDEL_NULL(emissive_overlay) if(move_packet) if(!QDELETED(move_packet)) @@ -139,6 +148,9 @@ if(em_block) QDEL_NULL(em_block) + QDEL_NULL(light) + QDEL_NULL(static_light) + /atom/movable/proc/moveToNullspace() . = TRUE @@ -370,19 +382,23 @@ src.throw_at(pick(turfs), maxrange, speed) /atom/movable/proc/update_emissive_blocker() - switch (blocks_emissive) - if (EMISSIVE_BLOCK_GENERIC) + if(emissive_overlay) + CutOverlays(emissive_overlay) + + switch(blocks_emissive) + if(EMISSIVE_BLOCK_GENERIC) var/mutable_appearance/gen_emissive_blocker = mutable_appearance(icon, icon_state, plane = EMISSIVE_PLANE, alpha = src.alpha) gen_emissive_blocker.color = GLOB.em_block_color gen_emissive_blocker.dir = dir gen_emissive_blocker.appearance_flags |= appearance_flags - em_block = gen_emissive_blocker + emissive_overlay = gen_emissive_blocker + AddOverlays(emissive_overlay) - if (EMISSIVE_BLOCK_UNIQUE) + if(EMISSIVE_BLOCK_UNIQUE) render_target = REF(src) em_block = new(src, render_target) - - return em_block + emissive_overlay = em_block + AddOverlays(emissive_overlay) /atom/movable/update_icon() ..() @@ -522,13 +538,6 @@ if(opacity) updateVisibility(src) - //Lighting recalculation - var/datum/light_source/L - var/thing - for (thing in light_sources) - L = thing - L.source_atom.update_light() - RESOLVE_ACTIVE_MOVEMENT return TRUE @@ -567,6 +576,13 @@ SSspatial_grid.enter_cell(src, new_turf) /* END Spatial grid stuffs */ + for(var/datum/dynamic_light_source/light as anything in hybrid_light_sources) + light.source_atom.update_light() + if(!isturf(loc)) + light.find_containing_atom() + for(var/datum/static_light_source/L as anything in static_light_sources) // Cycle through the light sources on this atom and tell them to update. + L.source_atom.static_update_light() + /atom/movable/Exited(atom/movable/gone, direction) . = ..() @@ -926,14 +942,6 @@ if(oldarea != newarea) newarea.Entered(src, oldarea) - // Lighting. - if(light_sources) - var/datum/light_source/L - var/thing - for(thing in light_sources) - L = thing - L.source_atom.update_light() - // Openturf. if(bound_overlay) // The overlay will handle cleaning itself up on non-openspace turfs. @@ -1035,3 +1043,30 @@ /atom/movable/proc/add_point_filter() add_filter("pointglow", 1, list(type = "drop_shadow", x = 0, y = -1, offset = 1, size = 1, color = "#F00")) addtimer(CALLBACK(src, PROC_REF(remove_filter), "pointglow"), 2 SECONDS) + +///Keeps track of the sources of dynamic luminosity and updates our visibility with the highest. +/atom/movable/proc/update_dynamic_luminosity() + var/highest = 0 + for(var/i in affected_movable_lights) + if(affected_movable_lights[i] <= highest) + continue + highest = affected_movable_lights[i] + if(highest == affecting_dynamic_lumi) + return + luminosity -= affecting_dynamic_lumi + affecting_dynamic_lumi = highest + luminosity += affecting_dynamic_lumi + + +///Helper to change several lighting overlay settings. +/atom/movable/proc/set_light_range_power_color(range, power, color) + set_light_range(range) + set_light_power(power) + set_light_color(color) + +/** + * Called when a movable is moved by a shuttle. Eventually, God willing, replace this with the TG shuttle version. + */ +/atom/movable/proc/afterShuttleMove(obj/effect/shuttle_landmark/destination) + if(light) + update_light() diff --git a/code/game/gamemodes/cult/hell_universe.dm b/code/game/gamemodes/cult/hell_universe.dm index a30f247df44..d5814ded795 100644 --- a/code/game/gamemodes/cult/hell_universe.dm +++ b/code/game/gamemodes/cult/hell_universe.dm @@ -61,24 +61,14 @@ In short: /datum/universal_state/hell/OverlayAndAmbientSet() set waitfor = FALSE for(var/turf/T in world) // Expensive, but CHECK_TICK should prevent lag. - if(istype(T, /turf/space)) - T.AddOverlays("hell01") - else - var/static/image/I = image('icons/turf/space.dmi', "hell01") - T.underlays += I + var/static/image/I = image('icons/turf/space.dmi', "hell01") + T.underlays += I if (istype(T, /turf/simulated/floor) && !T.holy && prob(1)) new /obj/effect/gateway/active/cult(T) CHECK_TICK - for(var/datum/lighting_corner/C in SSlighting.lighting_corners) - if (!C.active) - continue - - C.update_lumcount(0.5, 0, 0) - CHECK_TICK - /datum/universal_state/hell/proc/MiscSet() for (var/obj/machinery/firealarm/alm in SSmachinery.processing) if (!(alm.stat & BROKEN)) diff --git a/code/game/gamemodes/cult/structures/pylon.dm b/code/game/gamemodes/cult/structures/pylon.dm index a85ea35e2fe..68ab4594026 100644 --- a/code/game/gamemodes/cult/structures/pylon.dm +++ b/code/game/gamemodes/cult/structures/pylon.dm @@ -6,9 +6,11 @@ name = "pylon" desc = "A floating crystal that hums with an unearthly energy." icon_state = "pylonbase" - var/isbroken = FALSE + light_system = MOVABLE_LIGHT light_range = 5 light_color = "#3e0000" + anchored = FALSE + var/isbroken = FALSE var/pylonmode = PYLON_IDLE var/damagetaken = 0 @@ -42,7 +44,6 @@ var/process_interval = 1 var/ticks - anchored = FALSE /obj/structure/cult/pylon/condition_hints(mob/user, distance, is_adjacent) . = list() @@ -512,12 +513,14 @@ anchored = TRUE if(empowered) AddOverlays("crystal_overcharge") - set_light(7, 3, l_color = "#a160bf") + set_light_range_power_color(4, 1.5, "#a160bf") else - set_light(6, 3, l_color = "#3e0000") + set_light_range_power_color(3, 1.5, "#3e0000") AddOverlays("crystal_turret") + set_light_on(TRUE) else if(!isbroken) - set_light(5, 2, l_color = "#3e0000") + set_light_range_power_color(2, 1, "#3e0000") + set_light_on(TRUE) AddOverlays("crystal_idle") if(pylonmode == PYLON_AWAITING_SACRIFICE) anchored = TRUE @@ -525,7 +528,7 @@ anchored = FALSE else anchored = FALSE - set_light(0) + set_light_on(FALSE) #undef PYLON_IDLE #undef PYLON_AWAITING_SACRIFICE diff --git a/code/game/gamemodes/endgame/supermatter_cascade/blob.dm b/code/game/gamemodes/endgame/supermatter_cascade/blob.dm index 1ae268a6e9d..2b9189c6bb4 100644 --- a/code/game/gamemodes/endgame/supermatter_cascade/blob.dm +++ b/code/game/gamemodes/endgame/supermatter_cascade/blob.dm @@ -49,7 +49,6 @@ STOP_PROCESSING(SScalamity, src) /turf/unsimulated/wall/supermatter/proc/after_tick(turf/T) - T.lighting_clear_overlay() for(var/atom/movable/A in T) if (A && A.simulated) // No eating lighting overlays. if(istype(A, /mob/living)) diff --git a/code/game/gamemodes/endgame/supermatter_cascade/universe.dm b/code/game/gamemodes/endgame/supermatter_cascade/universe.dm index 2c4ef0f095a..57113a482c2 100644 --- a/code/game/gamemodes/endgame/supermatter_cascade/universe.dm +++ b/code/game/gamemodes/endgame/supermatter_cascade/universe.dm @@ -107,14 +107,6 @@ The access requirements on the Asteroid Shuttles' consoles have now been revoked T.underlays += "end01" CHECK_TICK - for(var/datum/lighting_corner/C in SSlighting.lighting_corners) - if (!C.active) - continue - - if (isNotAdminLevel(C.z)) - C.update_lumcount(0.15, 0.15, 0.5) - CHECK_TICK - /datum/universal_state/supermatter_cascade/proc/MiscSet() for (var/obj/machinery/firealarm/alm in SSmachinery.processing) if (!(alm.stat & BROKEN)) diff --git a/code/game/gamemodes/technomancer/devices/shield_armor.dm b/code/game/gamemodes/technomancer/devices/shield_armor.dm index e4991504f78..4477cd4a66a 100644 --- a/code/game/gamemodes/technomancer/devices/shield_armor.dm +++ b/code/game/gamemodes/technomancer/devices/shield_armor.dm @@ -86,8 +86,9 @@ icon_state = "shield_armor_[active]" item_state = "shield_armor_[active]" if(active) - set_light(2, 1, l_color = "#006AFF") + set_light_range_power_color(2, 1, "#006AFF") + set_light_on(TRUE) else - set_light(0, 0, l_color = "#000000") + set_light_on(FALSE) ..() return diff --git a/code/game/gamemodes/technomancer/devices/tesla_armor.dm b/code/game/gamemodes/technomancer/devices/tesla_armor.dm index a8af9c013d6..b08d16e2e03 100644 --- a/code/game/gamemodes/technomancer/devices/tesla_armor.dm +++ b/code/game/gamemodes/technomancer/devices/tesla_armor.dm @@ -73,11 +73,12 @@ if(active && ready) icon_state = ready_icon_state item_state = ready_icon_state - set_light(2, 1, l_color = "#006AFF") + set_light_range_power_color(2, 1, "#006AFF") + set_light_on(TRUE) else icon_state = normal_icon_state item_state = normal_icon_state - set_light(0, 0, l_color = "#000000") + set_light_on(FALSE) if(ishuman(loc)) var/mob/living/carbon/human/H = loc diff --git a/code/game/gamemodes/technomancer/spell_objs.dm b/code/game/gamemodes/technomancer/spell_objs.dm index ca5a800aeb0..f49c84dd63c 100644 --- a/code/game/gamemodes/technomancer/spell_objs.dm +++ b/code/game/gamemodes/technomancer/spell_objs.dm @@ -34,6 +34,7 @@ throwforce = 0 force = 0 item_flags = ITEM_FLAG_NO_BLUDGEON + light_system = MOVABLE_LIGHT var/mob/living/carbon/human/owner var/obj/item/technomancer_core/core var/cast_methods = null // Controls how the spell is casted. diff --git a/code/game/gamemodes/technomancer/spells/aura/aura.dm b/code/game/gamemodes/technomancer/spells/aura/aura.dm index 5a9df276ff5..ba58e61609e 100644 --- a/code/game/gamemodes/technomancer/spells/aura/aura.dm +++ b/code/game/gamemodes/technomancer/spells/aura/aura.dm @@ -8,7 +8,8 @@ /obj/item/spell/aura/Initialize() . = ..() - set_light(calculate_spell_power(7), calculate_spell_power(4), l_color = glow_color) + set_light_range_power_color(calculate_spell_power(7), calculate_spell_power(4), glow_color) + set_light_on(TRUE) START_PROCESSING(SSprocessing, src) log_and_message_admins("has started casting [src].") diff --git a/code/game/gamemodes/technomancer/spells/chroma.dm b/code/game/gamemodes/technomancer/spells/chroma.dm index 1e43aaf33b8..6bf8961cb7b 100644 --- a/code/game/gamemodes/technomancer/spells/chroma.dm +++ b/code/game/gamemodes/technomancer/spells/chroma.dm @@ -17,7 +17,8 @@ /obj/item/spell/chroma/Initialize() . = ..() - set_light(6, 5, l_color = color_to_use) + set_light_range_power_color(6, 5, color_to_use) + set_light_on(TRUE) /obj/effect/temporary_effect/chroma name = "chroma" @@ -27,7 +28,8 @@ /obj/effect/temporary_effect/chroma/Initialize(var/mapload, var/new_color = "#FFFFFF") . = ..() - set_light(6, 5, l_color = new_color) + set_light_range_power_color(6, 5, new_color) + set_light_on(TRUE) /obj/item/spell/chroma/on_ranged_cast(atom/hit_atom, mob/user) . = ..() @@ -42,4 +44,4 @@ var/new_color = input(user, "Choose the color you want your light to be.", "Color selection") as null|color if(new_color) color_to_use = new_color - set_light(6, 5, l_color = new_color) + set_light_range_power_color(6, 5, new_color) diff --git a/code/game/gamemodes/technomancer/spells/flame_tongue.dm b/code/game/gamemodes/technomancer/spells/flame_tongue.dm index ec316d5ff6f..f82fb4943cf 100644 --- a/code/game/gamemodes/technomancer/spells/flame_tongue.dm +++ b/code/game/gamemodes/technomancer/spells/flame_tongue.dm @@ -16,7 +16,8 @@ /obj/item/spell/flame_tongue/Initialize() . = ..() - set_light(3, 2, l_color = "#FF6A00") + set_light_range_power_color(6, 5, "#FF6A00") + set_light_on(TRUE) visible_message(SPAN_WARNING("\The [loc]'s hand begins to emit a flame.")) welder = new /obj/item/weldingtool/spell(src) welder.setWelding(1) diff --git a/code/game/gamemodes/technomancer/spells/insert/insert.dm b/code/game/gamemodes/technomancer/spells/insert/insert.dm index ea92498923b..187c7d71477 100644 --- a/code/game/gamemodes/technomancer/spells/insert/insert.dm +++ b/code/game/gamemodes/technomancer/spells/insert/insert.dm @@ -13,7 +13,8 @@ /obj/item/spell/insert/New() ..() - set_light(spell_light_range, spell_light_intensity, l_color = light_color) + set_light_range_power_color(spell_light_range, spell_light_intensity, light_color) + set_light_on(TRUE) /obj/item/inserted_spell var/mob/living/carbon/human/origin = null @@ -24,8 +25,8 @@ ..(newloc) host = newloc origin = user - if(light_color) - set_light(inserter.spell_light_range, inserter.spell_light_intensity, inserter.spell_color) + if(light_color && inserter) + set_light_range_power_color(inserter.spell_light_range, inserter.spell_light_intensity, inserter.spell_color) on_insert() /obj/item/inserted_spell/proc/on_insert() diff --git a/code/game/gamemodes/technomancer/spells/instability_tap.dm b/code/game/gamemodes/technomancer/spells/instability_tap.dm index e68fdb8e6d1..b206f71feb3 100644 --- a/code/game/gamemodes/technomancer/spells/instability_tap.dm +++ b/code/game/gamemodes/technomancer/spells/instability_tap.dm @@ -16,7 +16,8 @@ /obj/item/spell/instability_tap/New() ..() - set_light(3, 2, l_color = "#FA58F4") + set_light_range_power_color(3, 2, "#FA58F4") + set_light_on(TRUE) /obj/item/spell/instability_tap/on_use_cast(mob/user) . = ..() diff --git a/code/game/gamemodes/technomancer/spells/mark_recall.dm b/code/game/gamemodes/technomancer/spells/mark_recall.dm index 89bead3c48e..0f7552122e5 100644 --- a/code/game/gamemodes/technomancer/spells/mark_recall.dm +++ b/code/game/gamemodes/technomancer/spells/mark_recall.dm @@ -78,13 +78,14 @@ GLOBAL_DATUM(mark_spell_ref, /obj/effect/mark_spell) var/time_left = 3 if(check_for_scepter()) time_left = 2 + set_light_on(TRUE) while(time_left) if(user.incapacitated()) visible_message(SPAN_NOTICE("\The [user]'s glow fades.")) to_chat(user, SPAN_DANGER("You cannot Recall while incapacitated!")) return 0 light_intensity++ - set_light(light_intensity, light_intensity, l_color = "#006AFF") + set_light_range_power_color(light_intensity, light_intensity, "#006AFF") time_left-- sleep(1 SECOND) diff --git a/code/game/gamemodes/technomancer/spells/modifier/modifier.dm b/code/game/gamemodes/technomancer/spells/modifier/modifier.dm index 5f7c621f63c..731379240f3 100644 --- a/code/game/gamemodes/technomancer/spells/modifier/modifier.dm +++ b/code/game/gamemodes/technomancer/spells/modifier/modifier.dm @@ -11,7 +11,8 @@ /obj/item/spell/modifier/Initialize() . = ..() - set_light(spell_light_range, spell_light_intensity, l_color = light_color) + set_light_range_power_color(spell_light_range, spell_light_intensity, light_color) + set_light_on(TRUE) /obj/item/spell/modifier/on_melee_cast(atom/hit_atom, mob/user) . = ..() diff --git a/code/game/gamemodes/technomancer/spells/phase_shift.dm b/code/game/gamemodes/technomancer/spells/phase_shift.dm index 7c1111cfe94..abd90986f29 100644 --- a/code/game/gamemodes/technomancer/spells/phase_shift.dm +++ b/code/game/gamemodes/technomancer/spells/phase_shift.dm @@ -17,7 +17,8 @@ /obj/item/spell/phase_shift/Initialize() . = ..() - set_light(3, 2, l_color = "#FA58F4") + set_light_range_power_color(3, 2, "#FA58F4") + set_light_on(TRUE) /obj/effect/phase_shift name = "rift" @@ -30,7 +31,8 @@ /obj/effect/phase_shift/Initialize(mapload, ...) . = ..() - set_light(3, 5, l_color = "#FA58F4") + set_light_range_power_color(3, 5, "#FA58F4") + set_light_on(TRUE) START_PROCESSING(SSprocessing, src) /obj/effect/phase_shift/Destroy() diff --git a/code/game/gamemodes/technomancer/spells/radiance.dm b/code/game/gamemodes/technomancer/spells/radiance.dm index 59b84fd0dde..63c97f548f2 100644 --- a/code/game/gamemodes/technomancer/spells/radiance.dm +++ b/code/game/gamemodes/technomancer/spells/radiance.dm @@ -17,9 +17,10 @@ var/power = 250 toggled = 1 -/obj/item/spell/radiance/New() - ..() - set_light(7, 4, l_color = "#D9D900") +/obj/item/spell/radiance/Initialize() + . = ..() + set_light_range_power_color(7, 4, "#D9D900") + set_light_on(TRUE) START_PROCESSING(SSprocessing, src) log_and_message_admins("has casted [src].") diff --git a/code/game/gamemodes/technomancer/spells/reflect.dm b/code/game/gamemodes/technomancer/spells/reflect.dm index 626fa079a6d..c5814ba1729 100644 --- a/code/game/gamemodes/technomancer/spells/reflect.dm +++ b/code/game/gamemodes/technomancer/spells/reflect.dm @@ -17,7 +17,8 @@ /obj/item/spell/reflect/Initialize() . = ..() - set_light(3, 2, l_color = "#006AFF") + set_light_range_power_color(3, 2, "#006AFF") + set_light_on(TRUE) to_chat(owner, SPAN_NOTICE("Your shield will expire in 5 seconds!")) QDEL_IN(src, 5 SECONDS) diff --git a/code/game/gamemodes/technomancer/spells/shield.dm b/code/game/gamemodes/technomancer/spells/shield.dm index 54835aeefdd..2135877ddea 100644 --- a/code/game/gamemodes/technomancer/spells/shield.dm +++ b/code/game/gamemodes/technomancer/spells/shield.dm @@ -19,7 +19,8 @@ /obj/item/spell/shield/Initialize() . = ..() - set_light(3, 2, l_color = "#006AFF") + set_light_range_power_color(3, 2, "#006AFF") + set_light_on(TRUE) /obj/item/spell/shield/update_icon() var/mob/living/carbon/human/H = owner diff --git a/code/game/gamemodes/technomancer/spells/spawner/darkness.dm b/code/game/gamemodes/technomancer/spells/spawner/darkness.dm index 07b4a4bfd3c..4037ff4a045 100644 --- a/code/game/gamemodes/technomancer/spells/spawner/darkness.dm +++ b/code/game/gamemodes/technomancer/spells/spawner/darkness.dm @@ -21,7 +21,8 @@ /obj/item/spell/spawner/darkness/New() ..() - set_light(6, -20, l_color = "#FFFFFF") + set_light_range_power_color(6, -20, "#FFFFFF") + set_light_on(TRUE) /obj/effect/temporary_effect/darkness name = "darkness" diff --git a/code/game/gamemodes/technomancer/spells/spawner/destablize.dm b/code/game/gamemodes/technomancer/spells/spawner/destablize.dm index c44aa5e25aa..480bfbc7929 100644 --- a/code/game/gamemodes/technomancer/spells/spawner/destablize.dm +++ b/code/game/gamemodes/technomancer/spells/spawner/destablize.dm @@ -17,7 +17,8 @@ /obj/item/spell/spawner/destabilize/New() ..() - set_light(3, 2, l_color = "#C26DDE") + set_light_range_power_color(3, 2, "#C26DDE") + set_light_on(TRUE) /obj/item/spell/spawner/destabilize/on_ranged_cast(atom/hit_atom, mob/user) if(within_range(hit_atom) && pay_energy(2000)) diff --git a/code/game/gamemodes/technomancer/spells/spawner/pulsar.dm b/code/game/gamemodes/technomancer/spells/spawner/pulsar.dm index b2c428e420e..82f8fa3f584 100644 --- a/code/game/gamemodes/technomancer/spells/spawner/pulsar.dm +++ b/code/game/gamemodes/technomancer/spells/spawner/pulsar.dm @@ -16,7 +16,8 @@ /obj/item/spell/spawner/pulsar/New() ..() - set_light(3, 2, l_color = "#2ECCFA") + set_light_range_power_color(3, 2, "#2ECCFA") + set_light_on(TRUE) /obj/item/spell/spawner/pulsar/on_ranged_cast(atom/hit_atom, mob/user) if(within_range(hit_atom) && pay_energy(4000)) diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index bb7616d38b5..3fc517cbe24 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -115,7 +115,6 @@ pixel_x = 10; clicksound = /singleton/sound_category/button_sound clickvol = 30 obj_flags = OBJ_FLAG_MOVES_UNSUPPORTED - z_flags = ZMM_MANGLE_PLANES var/alarm_id = null var/frequency = 1439 @@ -583,7 +582,7 @@ pixel_x = 10; alarm_overlay = image(icon, "alarm[icon_level]") AddOverlays(alarm_overlay) - var/emissive_overlay = emissive_appearance(icon, "alarm[icon_level]") + emissive_overlay = emissive_appearance(icon, "alarm[icon_level]") AddOverlays(emissive_overlay) var/new_color = null @@ -595,7 +594,8 @@ pixel_x = 10; if (2) new_color = COLOR_RED_LIGHT - set_light(l_range = L_WALLMOUNT_RANGE, l_power = L_WALLMOUNT_POWER, l_color = new_color) + if(light_color != new_color) + set_light(L_WALLMOUNT_RANGE, L_WALLMOUNT_POWER, new_color) if(regulating_temperature) AddOverlays("alarm_fan_on") diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 75973b7e3eb..302f4817b49 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -3,7 +3,8 @@ desc = "Holds gas. Has a built-in valve to allow for filling portable tanks." icon = 'icons/obj/atmos.dmi' icon_state = "yellow" - density = 1 + density = TRUE + light_system = MOVABLE_LIGHT var/health = 100.0 obj_flags = OBJ_FLAG_SIGNALER | OBJ_FLAG_CONDUCTABLE w_class = WEIGHT_CLASS_HUGE @@ -301,7 +302,7 @@ update_flag if (src.destroyed) ClearOverlays() - set_light(FALSE) + set_light_on(FALSE) src.icon_state = "[src.canister_color]-1" return @@ -312,7 +313,6 @@ update_flag return ClearOverlays() - set_light(FALSE) if(signaler) AddOverlays("signaler") @@ -324,19 +324,23 @@ update_flag if(update_flag & 4) var/mutable_appearance/indicator_overlay = mutable_appearance(icon, "can-o0", plane = ABOVE_LIGHTING_PLANE) AddOverlays(indicator_overlay) - set_light(1.4, 1, COLOR_RED_LIGHT) + set_light_range_power_color(0.5, 0.5, COLOR_RED_LIGHT) + set_light_on(TRUE) if(update_flag & 8) var/mutable_appearance/indicator_overlay = mutable_appearance(icon, "can-o1", plane = ABOVE_LIGHTING_PLANE) AddOverlays(indicator_overlay) - set_light(1.4, 1, COLOR_RED_LIGHT) + set_light_range_power_color(0.5, 0.5, COLOR_RED_LIGHT) + set_light_on(TRUE) else if(update_flag & 16) var/mutable_appearance/indicator_overlay = mutable_appearance(icon, "can-o2", plane = ABOVE_LIGHTING_PLANE) AddOverlays(indicator_overlay) - set_light(1.4, 1, COLOR_YELLOW) + set_light_range_power_color(0.5, 0.5, COLOR_YELLOW) + set_light_on(TRUE) else if(update_flag & 32) var/mutable_appearance/indicator_overlay = mutable_appearance(icon, "can-o3", plane = ABOVE_LIGHTING_PLANE) AddOverlays(indicator_overlay) - set_light(1.4, 1, COLOR_BRIGHT_GREEN) + set_light_range_power_color(0.5, 0.5, COLOR_BRIGHT_GREEN) + set_light_on(TRUE) /obj/machinery/portable_atmospherics/canister/fire_act(exposed_temperature, exposed_volume) . = ..() diff --git a/code/game/machinery/body_scanner.dm b/code/game/machinery/body_scanner.dm index a3e9b40ce19..8207fc84a39 100644 --- a/code/game/machinery/body_scanner.dm +++ b/code/game/machinery/body_scanner.dm @@ -261,7 +261,6 @@ var/has_external_injuries = FALSE density = FALSE anchored = TRUE - z_flags = ZMM_MANGLE_PLANES component_types = list( /obj/item/circuitboard/bodyscannerconsole, /obj/item/stock_parts/scanning_module = 2, diff --git a/code/game/machinery/bots/bots.dm b/code/game/machinery/bots/bots.dm index 6eba6b53b97..c1537172578 100644 --- a/code/game/machinery/bots/bots.dm +++ b/code/game/machinery/bots/bots.dm @@ -5,6 +5,7 @@ layer = MOB_LAYER light_range = 3 use_power = POWER_USE_OFF + light_system = MOVABLE_LIGHT var/obj/item/card/id/botcard // the ID card that the bot "holds" var/on = 1 var/health = 0 //do not forget to set health for your bot! @@ -33,14 +34,14 @@ return ..() /obj/machinery/bot/proc/turn_on() - if(stat) return 0 + if(stat) + return 0 on = 1 - set_light(initial(light_range)) - return 1 + set_light_on(on) /obj/machinery/bot/proc/turn_off() on = 0 - set_light(0) + set_light_on(on) /obj/machinery/bot/proc/explode() qdel(src) diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index 9de9b2de0cc..3bb652e0087 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -8,7 +8,6 @@ idle_power_usage = 300 active_power_usage = 300 clicksound = /singleton/sound_category/keyboard_sound - z_flags = ZMM_MANGLE_PLANES var/circuit = null //The path to the circuit board type. If circuit==null, the computer can't be disassembled. var/processing = 0 diff --git a/code/game/machinery/crusher_piston.dm b/code/game/machinery/crusher_piston.dm index 65481df4431..64d6a60fa25 100644 --- a/code/game/machinery/crusher_piston.dm +++ b/code/game/machinery/crusher_piston.dm @@ -11,7 +11,6 @@ opacity = 1 //Just 300 Watts here. Power is drawn by the piston when it moves idle_power_usage = 300 - z_flags = ZMM_MANGLE_PLANES var/obj/machinery/crusher_piston/pstn //Piston @@ -158,7 +157,6 @@ icon_state = asmtype var/image_overlay - var/emissive_overlay if(powered(AREA_USAGE_EQUIP)) if(blocked == 1) image_overlay = image(icon, "[asmtype]-overlay-red") diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index 345f365cb9f..1bbc2e5ddbd 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -9,7 +9,6 @@ anchored = TRUE layer = ABOVE_HUMAN_LAYER interact_offline = TRUE - z_flags = ZMM_MANGLE_PLANES var/on = 0 idle_power_usage = 20 diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index f39f9d72762..a49f183b863 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -79,7 +79,7 @@ var/area/A = get_area(src) if(A.fire) AddOverlays("fire1") - set_light(l_range = L_WALLMOUNT_HI_RANGE, l_power = L_WALLMOUNT_HI_POWER, l_color = COLOR_RED) + set_light(L_WALLMOUNT_HI_RANGE, L_WALLMOUNT_HI_POWER, COLOR_RED) else AddOverlays("fire0") set_light(0) diff --git a/code/game/machinery/floodlight.dm b/code/game/machinery/floodlight.dm index e4157be33e2..59f9384a61c 100644 --- a/code/game/machinery/floodlight.dm +++ b/code/game/machinery/floodlight.dm @@ -6,14 +6,15 @@ icon_state = "flood00" density = TRUE obj_flags = OBJ_FLAG_ROTATABLE + light_system = MOVABLE_LIGHT + light_range = 6 + light_color = LIGHT_COLOR_TUNGSTEN + var/on = FALSE var/obj/item/cell/cell = null var/use = 200 // 200W light var/unlocked = FALSE var/open = FALSE - var/brightness_on = 12 //can't remember what the maxed out value is - light_color = LIGHT_COLOR_TUNGSTEN - light_wedge = LIGHT_WIDE /obj/machinery/floodlight/feedback_hints(mob/user, distance, is_adjacent) . += ..() @@ -42,14 +43,14 @@ // If the cell is almost empty rarely "flicker" the light. Aesthetic only. if((cell.percent() < 10) && prob(5)) - set_light(brightness_on/3, 0.5) + set_light_range_power_color(light_range/3, 0.5, light_color) addtimer(CALLBACK(src, PROC_REF(stop_flicker)), 5, TIMER_UNIQUE) cell.use(use*CELLRATE) /obj/machinery/floodlight/proc/stop_flicker() if(on) - set_light(brightness_on, 1) + set_light_range_power_color(light_range, 1, light_color) // Returns 0 on failure and 1 on success /obj/machinery/floodlight/proc/turn_on(var/loud = FALSE) @@ -59,7 +60,7 @@ return FALSE on = TRUE - set_light(brightness_on, 1) + set_light_on(on) update_icon() if(loud) visible_message(SPAN_NOTICE("\The [src] turns on.")) @@ -67,7 +68,7 @@ /obj/machinery/floodlight/proc/turn_off(var/loud = FALSE) on = FALSE - set_light(0) + set_light_on(on) update_icon() if(loud) visible_message(SPAN_NOTICE("\The [src] shuts down.")) diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm index a879bfe0774..96b8abb4ac2 100644 --- a/code/game/machinery/lightswitch.dm +++ b/code/game/machinery/lightswitch.dm @@ -12,8 +12,6 @@ var/area/area = null var/otherarea = null power_channel = AREA_USAGE_LIGHT - z_flags = ZMM_MANGLE_PLANES - // luminosity = 1 /obj/machinery/light_switch/feedback_hints(mob/user, distance, is_adjacent) . += ..() @@ -39,7 +37,7 @@ ClearOverlays() if(!(stat & NOPOWER)) var/switch_overlay = image(icon, "light[on]-overlay") - var/emissive_overlay = emissive_appearance(icon, "light[on]-overlay") + emissive_overlay = emissive_appearance(icon, "light[on]-overlay") AddOverlays(switch_overlay) AddOverlays(emissive_overlay) if (!light_range || light_color != on ? "#82ff4c" : "#f86060") diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index dce87018ba8..f9cc8e29de2 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -29,7 +29,6 @@ GLOBAL_LIST_INIT_TYPED(allCasters, /obj/machinery/newscaster, list()) anchored = TRUE appearance_flags = TILE_BOUND // prevents people from viewing the overlay through a wall obj_flags = OBJ_FLAG_MOVES_UNSUPPORTED - z_flags = ZMM_MANGLE_PLANES ///If the newscaster is broken, boolean var/isbroken = FALSE @@ -169,7 +168,7 @@ GLOBAL_LIST_INIT_TYPED(allCasters, /obj/machinery/newscaster, list()) screen_hologram.blend_mode = BLEND_MULTIPLY screen.blend_mode = BLEND_ADD AddOverlays(list(screen_hologram, screen, screen_emis)) - set_light(1.4, 1.3, COLOR_CYAN) + set_light(L_WALLMOUNT_RANGE, L_WALLMOUNT_POWER, COLOR_CYAN) if(!alert || !SSnews.wanted_issue) var/mutable_appearance/screen_title = overlay_image(icon, "newscaster-title") diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index ca1a5609899..8f775b048ba 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -201,6 +201,7 @@ spark_system = null if(fast_processing) STOP_PROCESSING(SSfast_process, src) + QDEL_NULL(installation) clear_from_target_grid() diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index c67031a4e2f..f521f51b099 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -63,7 +63,6 @@ GLOBAL_LIST_INIT_TYPED(allConsoles, /obj/machinery/requests_console, list()) ) anchored = TRUE appearance_flags = TILE_BOUND // prevents people from viewing the overlay through a wall - z_flags = ZMM_MANGLE_PLANES ///The list of all departments on the station (Determined from this variable on each unit) Set this to the same thing if you want several consoles in one department var/department = "Unknown" @@ -162,16 +161,16 @@ GLOBAL_LIST_INIT_TYPED(allConsoles, /obj/machinery/requests_console, list()) switch(newmessagepriority) if(0) screen = overlay_image(icon, "req_comp-idle") - set_light(1.4, 1.3, COLOR_CYAN) + set_light(L_WALLMOUNT_RANGE, L_WALLMOUNT_POWER, COLOR_CYAN) if(1) screen = overlay_image(icon, "req_comp-alert") - set_light(1.4, 1.3, COLOR_CYAN) + set_light(L_WALLMOUNT_RANGE, L_WALLMOUNT_POWER, COLOR_CYAN) if(2) screen = overlay_image(icon, "req_comp-redalert") - set_light(1.4, 1.3, COLOR_ORANGE) + set_light(L_WALLMOUNT_RANGE,L_WALLMOUNT_POWER, COLOR_ORANGE) if(3) screen = overlay_image(icon, "req_comp-yellowalert") - set_light(1.4, 1.3, COLOR_ORANGE) + set_light(L_WALLMOUNT_RANGE, L_WALLMOUNT_POWER, COLOR_ORANGE) AddOverlays(screen_hologram) AddOverlays(screen) AddOverlays(screen_emis) diff --git a/code/game/machinery/ringer.dm b/code/game/machinery/ringer.dm index a72f8e1143e..35b05ce2052 100644 --- a/code/game/machinery/ringer.dm +++ b/code/game/machinery/ringer.dm @@ -21,7 +21,6 @@ pixel_x = 8; icon_state = "bell" anchored = TRUE appearance_flags = TILE_BOUND // prevents people from viewing the overlay through a wall - z_flags = ZMM_MANGLE_PLANES req_access = list() //what access it needs to link your pda @@ -100,15 +99,15 @@ pixel_x = 8; return if(rings_pdas || rings_pdas.len) screen = overlay_image(icon, "bell-active") - set_light(1.4, 1, COLOR_CYAN) + set_light(L_WALLMOUNT_POWER, L_WALLMOUNT_RANGE, COLOR_CYAN) if(pinged) screen = overlay_image(icon, "bell-alert") - set_light(1.4, 1, COLOR_CYAN) + set_light(L_WALLMOUNT_POWER, L_WALLMOUNT_RANGE, COLOR_CYAN) if(on) AddOverlays("bell-scanline") else screen = overlay_image(icon, "bell-standby") - set_light(1.4, 1, COLOR_CYAN) + set_light(L_WALLMOUNT_POWER, L_WALLMOUNT_RANGE, COLOR_CYAN) AddOverlays(screen_hologram) AddOverlays(screen) AddOverlays(screen_emis) diff --git a/code/game/machinery/rotating_alarm.dm b/code/game/machinery/rotating_alarm.dm index 1941597242e..c8ce3cb7e5f 100644 --- a/code/game/machinery/rotating_alarm.dm +++ b/code/game/machinery/rotating_alarm.dm @@ -113,5 +113,5 @@ set_light(0) else vis_contents += spin_effect - set_light(2, 0.5, alarm_light_color) + set_light(2, 1, alarm_light_color) on = !on diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index cbf072804d8..6f74ca24791 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -222,7 +222,7 @@ ) set_light(0) return - set_light(1.5, 0.7, LIGHT_COLOR_FAINT_CYAN) // blue light + set_light(L_WALLMOUNT_RANGE, L_WALLMOUNT_POWER, LIGHT_COLOR_FAINT_CYAN) // blue light /obj/machinery/status_display/proc/get_shuttle_timer() var/timeleft = GLOB.evacuation_controller.get_eta() diff --git a/code/game/machinery/suit_cycler.dm b/code/game/machinery/suit_cycler.dm index df59efe5f7a..06bdbe49bbc 100644 --- a/code/game/machinery/suit_cycler.dm +++ b/code/game/machinery/suit_cycler.dm @@ -35,7 +35,6 @@ icon_state = "base" req_access = list(ACCESS_CAPTAIN, ACCESS_HEADS) - z_flags = ZMM_MANGLE_PLANES /// PLEASE HOLD. var/active = FALSE /// The cycler won't start with a living thing inside it unless safeties are off. diff --git a/code/game/machinery/vending/_vending.dm b/code/game/machinery/vending/_vending.dm index 2091fa3c244..43e6b22e15b 100644 --- a/code/game/machinery/vending/_vending.dm +++ b/code/game/machinery/vending/_vending.dm @@ -63,7 +63,6 @@ density = 1 clicksound = /singleton/sound_category/button_sound manufacturer = "idris" - z_flags = ZMM_MANGLE_PLANES // Every vending machine has one of these. /// `icon_state` when off. Defined on init. diff --git a/code/game/objects/auras/radiant_aura.dm b/code/game/objects/auras/radiant_aura.dm index 39818bfe880..e1eaca1e062 100644 --- a/code/game/objects/auras/radiant_aura.dm +++ b/code/game/objects/auras/radiant_aura.dm @@ -13,7 +13,8 @@ /obj/aura/radiant_aura/added_to(mob/living/user) ..() to_chat(user, SPAN_NOTICE("A bubble of light appears around you, exuding protection and warmth.")) - set_light(6, 6, COLOR_AMBER) + set_light_range_power_color(6, 6, COLOR_AMBER) + set_light_on(TRUE) /obj/aura/radiant_aura/Destroy() to_chat(user, SPAN_WARNING("Your protective aura dissipates, leaving you feeling cold and unsafe.")) diff --git a/code/game/objects/effects/decals/Cleanable/misc.dm b/code/game/objects/effects/decals/Cleanable/misc.dm index 3b2636bc55c..23371daa6c7 100644 --- a/code/game/objects/effects/decals/Cleanable/misc.dm +++ b/code/game/objects/effects/decals/Cleanable/misc.dm @@ -50,7 +50,6 @@ light_range = 2 light_power = 0.5 light_color = LIGHT_COLOR_GREEN - uv_intensity = 0 icon = 'icons/effects/effects.dmi' icon_state = "greenglow" diff --git a/code/game/objects/effects/decals/misc.dm b/code/game/objects/effects/decals/misc.dm index acfad0f687a..2907949596a 100644 --- a/code/game/objects/effects/decals/misc.dm +++ b/code/game/objects/effects/decals/misc.dm @@ -51,7 +51,7 @@ /obj/effect/decal/fake_object/light_source/Initialize() .=..() - set_light() + set_light(light_power, light_range, light_color) /obj/effect/decal/fake_object/light_source/invisible simulated = 0 diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 5f2f869b07e..b764bc8b382 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -122,6 +122,11 @@ would spawn and follow the beaker, even if it is carried or thrown. AddElement(/datum/element/connect_loc, loc_connections) +/obj/effect/smoke/Destroy() + if(opacity) + set_opacity(FALSE) + return ..() + /obj/effect/smoke/proc/kill() animate(src, alpha = 0, time = 2 SECONDS, easing = QUAD_EASING) set_opacity(FALSE) @@ -157,7 +162,7 @@ would spawn and follow the beaker, even if it is carried or thrown. icon = 'icons/effects/effects.dmi' icon_state = "sparks" -/obj/effect/smoke/illumination/New(var/newloc, var/brightness=15, var/lifetime=10) +/obj/effect/smoke/illumination/New(var/newloc, var/brightness=15, var/lifetime=5) time_to_live=lifetime ..() set_light(brightness) diff --git a/code/game/objects/effects/shockwave.dm b/code/game/objects/effects/shockwave.dm index d100de1dba0..9f8280b9fb2 100644 --- a/code/game/objects/effects/shockwave.dm +++ b/code/game/objects/effects/shockwave.dm @@ -4,7 +4,7 @@ /obj/effect/shockwave - icon = 'icons/effects/shockwave.dmi' + icon = 'icons/effects/light_overlays/shockwave.dmi' icon_state = "shockwave" mouse_opacity = MOUSE_OPACITY_TRANSPARENT plane = DISPLACEMENT_PLATE_RENDER_LAYER diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 5342f40a722..fad88c059e9 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -2,6 +2,7 @@ name = "item" icon = 'icons/obj/items.dmi' w_class = WEIGHT_CLASS_NORMAL + light_system = MOVABLE_LIGHT blocks_emissive = EMISSIVE_BLOCK_GENERIC /// This saves our blood splatter overlay, which will be processed not to go over the edges of the sprite @@ -491,9 +492,6 @@ SEND_SIGNAL(src, COMSIG_ITEM_DROPPED, user) in_inventory = FALSE - if(user && (z_flags & ZMM_MANGLE_PLANES)) - addtimer(CALLBACK(user, /mob/proc/check_emissive_equipment), 0, TIMER_UNIQUE) - user?.update_equipment_speed_mods() try_make_persistent_trash() @@ -629,9 +627,6 @@ //Äšent for observable SEND_SIGNAL(src, COMSIG_ITEM_REMOVE, src) - if(user && (z_flags & ZMM_MANGLE_PLANES)) - addtimer(CALLBACK(user, /mob/proc/check_emissive_equipment), 0, TIMER_UNIQUE) - user.update_equipment_speed_mods() if(persistency_considered_trash || persistence_track_active) // The moment trash like items get picked up they are no longer persistent diff --git a/code/game/objects/items/devices/lighting/flare.dm b/code/game/objects/items/devices/lighting/flare.dm index 3116061917a..fe31d2f4dd7 100644 --- a/code/game/objects/items/devices/lighting/flare.dm +++ b/code/game/objects/items/devices/lighting/flare.dm @@ -2,17 +2,15 @@ name = "flare" desc = "A red standard-issue flare. There are instructions on the side reading 'twist cap off, make light'." w_class = WEIGHT_CLASS_TINY - brightness_on = 5 // Pretty bright. + light_range = 5 // Pretty bright. light_power = 6 light_color = LIGHT_COLOR_FLARE //"#E58775" icon_state = "flare" item_state = "flare" action_button_name = null //just pull it manually, neckbeard. var/fuel = 0 - uv_intensity = 100 var/on_damage = 7 var/produce_heat = 1500 - light_wedge = LIGHT_OMNI power_use = FALSE activation_sound = 'sound/items/flare.ogg' toggle_sound = null @@ -77,6 +75,7 @@ SPAN_NOTICE("\The [src] sputters out.") ) update_icon() + set_light_on(on) /obj/item/device/flashlight/flare/proc/update_damage() if(on) @@ -90,12 +89,11 @@ name = "torch" desc = "A rustic source of light." w_class = WEIGHT_CLASS_BULKY - brightness_on = 2 + light_range = 2 light_power = 3 light_color = LIGHT_COLOR_FIRE icon_state = "torch" item_state = "torch" - uv_intensity = 40 produce_heat = 1000 on_damage = 10 @@ -121,12 +119,12 @@ H.update_inv_l_hand() H.update_inv_r_hand() - /obj/item/device/flashlight/flare/torch/proc/light(mob/user) user.visible_message(SPAN_NOTICE("\The [user] lights \the [src]."), SPAN_NOTICE("You light \the [src].")) force = on_damage damtype = "fire" on = TRUE + set_light_on(on) START_PROCESSING(SSprocessing, src) update_icon() @@ -177,7 +175,7 @@ /obj/item/device/flashlight/flare/torch/stick name = "flaming stick" desc = "How exciting!" - brightness_on = 1.5 + light_range = 1.5 light_power = 1 produce_heat = 400 diff --git a/code/game/objects/items/devices/lighting/flashlight.dm b/code/game/objects/items/devices/lighting/flashlight.dm index 3f3f444672e..a9a908542ed 100644 --- a/code/game/objects/items/devices/lighting/flashlight.dm +++ b/code/game/objects/items/devices/lighting/flashlight.dm @@ -8,16 +8,14 @@ obj_flags = OBJ_FLAG_CONDUCTABLE slot_flags = SLOT_BELT light_color = LIGHT_COLOR_HALOGEN - uv_intensity = 50 - light_wedge = LIGHT_WIDE + light_system = DIRECTIONAL_LIGHT + light_range = 4 matter = list(MATERIAL_PLASTIC = 50, MATERIAL_GLASS = 20) action_button_name = "Toggle Flashlight" /// Is the light currently on or off? var/on = FALSE - /// Luminosity when on - var/brightness_on = 4 // Lighting power when on var/flashlight_power = 0.8 /// Sound the light makes when it's switched @@ -55,36 +53,29 @@ . += "\The [src] is set to [brightness_level]." if(cell) . += "\The [src] has \a [cell] attached. It has [round(cell.percent())]% charge remaining." - if(light_wedge && isturf(loc)) - . += SPAN_NOTICE("\The [src] is facing [dir2text(dir)].") /obj/item/device/flashlight/Initialize() if(power_use && cell_type) if(starts_with_cell) cell = new cell_type(src) - brightness_levels = list("low" = 1/32, "medium" = 1/16, "high" = 1/8) // ~26 minutes at high power with a device cell. - power_usage = (brightness_levels[brightness_level] / efficiency_modifier) + brightness_levels = list("low" = 2, "medium" = 3, "high" = 4) + power_usage = ((brightness_levels[brightness_level]/ 10 ) / efficiency_modifier) else verbs -= /obj/item/device/flashlight/verb/toggle_brightness if (on) if(brightness_level == "low") - light_range = brightness_on * 0.5 + light_range = light_range * 0.5 else if(brightness_level == "high") - light_range = brightness_on * 1.5 + light_range = light_range * 1.5 else - light_range = brightness_on + light_range = light_range update_icon() + set_light_on(on) . = ..() - if(light_wedge) - set_dir(pick(NORTH, SOUTH, EAST, WEST)) - if(spawn_dir) - set_dir(spawn_dir) - update_light() - /obj/item/device/flashlight/Destroy() STOP_PROCESSING(SSprocessing, src) QDEL_NULL(cell) @@ -96,7 +87,7 @@ /obj/item/device/flashlight/proc/set_brightness(mob/user) var/choice = tgui_input_list(user, "Choose a brightness level.", "Flashlight", brightness_levels) if(choice) - brightness_level = choice + set_light_range(brightness_levels[choice]) power_usage = brightness_levels[choice] to_chat(user, SPAN_NOTICE("You set the brightness level on \the [src] to [brightness_level].")) update_icon() @@ -120,15 +111,8 @@ if(on) icon_state = "[initial(icon_state)]-on" - if(brightness_level == "low") - set_light(brightness_on * 0.5, flashlight_power * 0.75, light_color) - else if(brightness_level == "high") - set_light(brightness_on * 1.5, flashlight_power * 1.1, light_color) - else - set_light(brightness_on, flashlight_power, light_color) else icon_state = "[initial(icon_state)]" - set_light(0) if (ismob(src.loc)) //for reasons, this makes headlights work. var/mob/M = src.loc M.update_inv_l_ear() @@ -198,24 +182,12 @@ START_PROCESSING(SSprocessing, src) else if (power_use) STOP_PROCESSING(SSprocessing, src) + set_light_on(on) update_icon() /obj/item/device/flashlight/vendor_action(var/obj/machinery/vending/V) toggle() -/obj/item/device/flashlight/dropped(mob/user) - . = ..() - if(light_wedge) - set_dir(user.dir) - update_light() - -/obj/item/device/flashlight/throw_at(atom/target, range, speed, thrower, do_throw_animation) - . = ..() - if(light_wedge) - var/new_dir = pick(NORTH, SOUTH, EAST, WEST) - set_dir(new_dir) - update_light() - /obj/item/device/flashlight/emp_act(severity) . = ..() @@ -229,7 +201,7 @@ if(((user.is_clumsy()) || (user.mutations & DUMB)) && prob(50)) //too dumb to use flashlight properly return ..() //just hit them in the head - if(brightness_on < 2) + if(light_range < 2) to_chat(user, SPAN_WARNING("This light is too dim to see anything with!")) return @@ -253,7 +225,7 @@ inspect_vision(vision, user) user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) //can be used offensively - if (!(brightness_on < 2)) + if (!(light_range < 2)) H.flash_act(length = 1 SECOND) else return ..() @@ -312,9 +284,8 @@ pickup_sound = 'sound/items/pickup/accessory.ogg' obj_flags = OBJ_FLAG_CONDUCTABLE slot_flags = SLOT_EARS - brightness_on = 2 + light_range = 2 w_class = WEIGHT_CLASS_TINY - light_wedge = LIGHT_OMNI /obj/item/device/flashlight/drone name = "low-power flashlight" @@ -322,7 +293,7 @@ icon_state = "penlight" item_state = "" obj_flags = OBJ_FLAG_CONDUCTABLE - brightness_on = 2 + light_range = 2 efficiency_modifier = 2 w_class = WEIGHT_CLASS_TINY @@ -331,11 +302,9 @@ desc = "A high-luminosity flashlight, for specialist duties." icon_state = "heavyflashlight" item_state = "heavyflashlight" - brightness_on = 4 + light_range = 4 w_class = WEIGHT_CLASS_NORMAL - uv_intensity = 60 matter = list(MATERIAL_PLASTIC = 100, MATERIAL_GLASS = 70) - light_wedge = LIGHT_SEMI /obj/item/device/flashlight/heavy/on on = TRUE @@ -346,14 +315,12 @@ icon_state = "maglight" item_state = "maglight" force = 9 - brightness_on = 5 + light_range = 5 efficiency_modifier = 0.8 w_class = WEIGHT_CLASS_NORMAL - uv_intensity = 70 attack_verb = list("slammed", "whacked", "bashed", "thunked", "battered", "bludgeoned", "thrashed") matter = list(MATERIAL_ALUMINIUM = 200, MATERIAL_GLASS = 100) hitsound = 'sound/weapons/smash.ogg' - light_wedge = LIGHT_NARROW /obj/item/device/flashlight/maglight/update_icon() ..() @@ -373,13 +340,12 @@ icon_state = "yellow slime extract" item_state = "flashlight" w_class = WEIGHT_CLASS_TINY - brightness_on = 6 - uv_intensity = 200 + light_range = 6 on = TRUE //Bio-luminesence has one setting, on. always_on = TRUE power_usage = FALSE light_color = LIGHT_COLOR_SLIME_LAMP - light_wedge = LIGHT_OMNI + light_system = MOVABLE_LIGHT /obj/item/device/flashlight/headlights name = "headlights" @@ -388,9 +354,8 @@ item_state = "headlights" obj_flags = OBJ_FLAG_CONDUCTABLE slot_flags = SLOT_HEAD | SLOT_EARS - brightness_on = 2 + light_range = 2 w_class = WEIGHT_CLASS_TINY - light_wedge = LIGHT_WIDE body_parts_covered = 0 /******************************Lantern*******************************/ @@ -403,11 +368,11 @@ attack_verb = list("bludgeoned, bashed, whacked") matter = list(MATERIAL_STEEL = 200,MATERIAL_GLASS = 100) flashlight_power = 1 - brightness_on = 4 + light_range = 4 cell_type = /obj/item/cell accepts_large_cells = TRUE - light_wedge = LIGHT_OMNI light_color = LIGHT_COLOR_FIRE + light_system = MOVABLE_LIGHT /obj/item/device/flashlight/lantern/update_icon() ..() diff --git a/code/game/objects/items/devices/lighting/glowstick.dm b/code/game/objects/items/devices/lighting/glowstick.dm index 5c2eba0aec4..2d721010c46 100644 --- a/code/game/objects/items/devices/lighting/glowstick.dm +++ b/code/game/objects/items/devices/lighting/glowstick.dm @@ -2,21 +2,20 @@ name = "green glowstick" desc = "A green military-grade glowstick." w_class = WEIGHT_CLASS_SMALL - brightness_on = 1.2 + light_system = MOVABLE_LIGHT + light_range = 1.2 flashlight_power = 2 light_color = "#49F37C" icon_state = "glowstick" item_state = "glowstick" produce_heat = 0 - uv_intensity = 255 - light_wedge = LIGHT_OMNI activation_sound = 'sound/items/glowstick.ogg' toggle_sound = null /obj/item/device/flashlight/flare/glowstick/Initialize() . = ..() fuel = rand(9 MINUTES, 12 MINUTES) - light_color = color + set_light_color(color) /obj/item/device/flashlight/flare/glowstick/process() fuel = max(fuel - 1, 0) @@ -30,14 +29,15 @@ overlays.Cut() if(!fuel) icon_state = "[initial(icon_state)]-empty" - set_light(0) + set_light_on(0) else if(on) var/image/I = overlay_image(icon, "glowstick-overlay", color) I.blend_mode = BLEND_ADD AddOverlays(I) icon_state = "[initial(icon_state)]-on" item_state = "[initial(icon_state)]-on" - set_light(brightness_on, flashlight_power, light_color) + set_light_range_power_color(light_range, flashlight_power, light_color) + set_light_on(on) else icon_state = initial(icon_state) update_held_icon() diff --git a/code/game/objects/items/devices/lighting/lamp.dm b/code/game/objects/items/devices/lighting/lamp.dm index c07a0d31ddf..85967abc7d8 100644 --- a/code/game/objects/items/devices/lighting/lamp.dm +++ b/code/game/objects/items/devices/lighting/lamp.dm @@ -4,17 +4,16 @@ icon_state = "lamp" item_state = "lamp" center_of_mass = list("x" = 13,"y" = 11) - brightness_on = 4 - flashlight_power = 1.0 w_class = WEIGHT_CLASS_HUGE obj_flags = OBJ_FLAG_CONDUCTABLE - uv_intensity = 100 power_use = FALSE on = TRUE slot_flags = 0 //No wearing desklamps - light_wedge = LIGHT_OMNI toggle_sound = /singleton/sound_category/switch_sound activation_sound = 'sound/effects/lighton.ogg' + light_system = MOVABLE_LIGHT + light_range = 3 + flashlight_power = 1.0 /obj/item/device/flashlight/lamp/mechanics_hints(mob/user, distance, is_adjacent) . += ..() @@ -32,7 +31,7 @@ desc = "A classic green-shaded desk lamp." icon_state = "lampgreen" item_state = "lampgreen" - brightness_on = 5 + light_range = 4 light_color = "#FFC58F" toggle_sound = 'sound/machines/switch_chain.ogg' @@ -49,15 +48,16 @@ name = "data encryption lamp" desc = "Random oil globules within were parsed in photos for your protection. Enjoy this kitschy memorabilia by sticking it on your desk." icon_state = "lavalamp" - brightness_on = 3 + light_range = 3 flashlight_power = 0.5 matter = list(DEFAULT_WALL_MATERIAL = 250, MATERIAL_GLASS = 200) /obj/item/device/flashlight/lamp/lava/update_icon() if(on) - set_light(brightness_on, flashlight_power, light_color) + set_light_range_power_color(light_range, flashlight_power, light_color) else set_light(0) + set_light_on(on) ClearOverlays() var/image/I = image(icon = icon, icon_state = "lavalamp-[on ? "on" : "off"]") I.color = light_color @@ -97,7 +97,7 @@ name = "holographic lighting orb" desc = "A floating orb that comes in a variety of colors. Optional holodeck lighting." anchored = 1 - brightness_on = 12 + light_range = 12 light_color = "#ffcb9b" icon = 'icons/effects/props/holodeck/holodeck_tools.dmi' icon_state = "orb" @@ -108,7 +108,7 @@ /obj/item/device/flashlight/lamp/box name = "box lamp" desc = "A box-shaped traditional flame lamp. Less safe, more pretty." - brightness_on = 5 + light_range = 5 light_color = "#ffcb9b" icon = 'icons/effects/props/holodeck/konyang/32x32.dmi' icon_state = "boxlamp" diff --git a/code/game/objects/items/devices/lighting/marshalling_wand.dm b/code/game/objects/items/devices/lighting/marshalling_wand.dm index 6b06aa788c2..b36cc2e2bca 100644 --- a/code/game/objects/items/devices/lighting/marshalling_wand.dm +++ b/code/game/objects/items/devices/lighting/marshalling_wand.dm @@ -5,8 +5,7 @@ item_state = "marshallingwand" w_class = WEIGHT_CLASS_SMALL light_color = LIGHT_COLOR_RED - light_wedge = LIGHT_OMNI - brightness_on = 2 + light_range = 2 action_button_name = "Toggle Marshalling Wands" /obj/item/device/flashlight/marshallingwand/AltClick(mob/user) diff --git a/code/game/objects/items/devices/lighting/survival.dm b/code/game/objects/items/devices/lighting/survival.dm index 355effc8089..fbe42929d95 100644 --- a/code/game/objects/items/devices/lighting/survival.dm +++ b/code/game/objects/items/devices/lighting/survival.dm @@ -3,10 +3,7 @@ desc = "A hand-held emergency light. This one has been modified with a larger, more efficient bulb pointing inwards." icon_state = "survival_flashlight" item_state = "survival_flashlight" - light_wedge = null - - uv_intensity = 255 light_power = 2 - brightness_on = 2 + light_range = 2 light_color = LIGHT_COLOR_GREEN efficiency_modifier = 1.2 // 120% more efficient compared to other flashlights diff --git a/code/game/objects/items/devices/lightmeter.dm b/code/game/objects/items/devices/lightmeter.dm index c5acc8eee86..f32eede9c4e 100644 --- a/code/game/objects/items/devices/lightmeter.dm +++ b/code/game/objects/items/devices/lightmeter.dm @@ -24,11 +24,9 @@ return var/visible_reading = T.get_lumcount(low, high) - var/uv_reading = T.get_uv_lumcount(low, high) var/reading = "Light analysis for \the [T].
" reading += "Visible light: [visible_reading] lx
" - reading += "Ultraviolet light: [uv_reading] lx ([uv_reading * 5.5 - 1.5] adlx)" to_chat(usr, SPAN_NOTICE(reading)) diff --git a/code/game/objects/items/devices/oxycandle.dm b/code/game/objects/items/devices/oxycandle.dm index 31082c805de..705ee1b2973 100644 --- a/code/game/objects/items/devices/oxycandle.dm +++ b/code/game/objects/items/devices/oxycandle.dm @@ -11,15 +11,14 @@ var/on = FALSE var/activation_sound = 'sound/items/flare.ogg' light_color = LIGHT_COLOR_FLARE - uv_intensity = 50 - var/brightness_on = 2 // Moderate bright. + light_range = 2 // Moderate bright. light_power = 2 action_button_name = null /obj/item/device/oxycandle/attack_self(mob/user) if(!on) to_chat(user, SPAN_NOTICE("You pull the cord and [src] ignites.")) - light_range = brightness_on + light_range = light_range on = TRUE update_icon() playsound(src.loc, activation_sound, 75, 1) @@ -65,7 +64,7 @@ if(on) icon_state = "oxycandle_on" item_state = icon_state - set_light(brightness_on) + set_light(light_range) else icon_state = "oxycandle" item_state = icon_state diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index 2b3a209f87d..e8545dac9f8 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -121,7 +121,6 @@ if(!PN) return 1 - set_light(12) PN.trigger_warning() // found a powernet, so drain up to max power from it drained = PN.draw_power(drain_rate * seconds_per_tick) diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index bbf7a76dab5..a72283e1d28 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -29,7 +29,6 @@ pixel_x = 8; canhear_range = 2 atom_flags = ATOM_FLAG_NO_BLOOD obj_flags = OBJ_FLAG_MOVES_UNSUPPORTED | OBJ_FLAG_CONDUCTABLE - z_flags = ZMM_MANGLE_PLANES var/number = 0 var/obj/machinery/abstract/intercom_listener/power_interface var/radio_sound = null diff --git a/code/game/objects/items/recharger_backpack.dm b/code/game/objects/items/recharger_backpack.dm index b1e707d3d8d..471a8e50d4b 100644 --- a/code/game/objects/items/recharger_backpack.dm +++ b/code/game/objects/items/recharger_backpack.dm @@ -64,7 +64,7 @@ if(!powersupply) icon_state = "recharger_backpack" item_state = "recharger_backpack" - set_light(0) + set_light_on(FALSE) else var/current_charge = powersupply.percent() @@ -72,19 +72,22 @@ if(70 to INFINITY) icon_state = "recharger_backpack_full" item_state = "recharger_backpack_full" - set_light(2, 0.75, LIGHT_COLOR_GREEN) + set_light_range_power_color(2, 0.75, LIGHT_COLOR_GREEN) + set_light_on(TRUE) if(35 to 70) icon_state = "recharger_backpack_med" item_state = "recharger_backpack_med" - set_light(2, 0.75, LIGHT_COLOR_FIRE) + set_light_range_power_color(2, 0.75, LIGHT_COLOR_FIRE) + set_light_on(TRUE) if(1 to 35) icon_state = "recharger_backpack_low" item_state = "recharger_backpack_low" - set_light(2, 0.75, LIGHT_COLOR_RED) + set_light_range_power_color(2, 0.75, LIGHT_COLOR_RED) + set_light_on(TRUE) if(-INFINITY to 1) icon_state = "recharger_backpack" item_state = "recharger_backpack" - set_light(0) + set_light_on(FALSE) /obj/item/recharger_backpack/get_cell() if(powersupply) diff --git a/code/game/objects/items/skrell.dm b/code/game/objects/items/skrell.dm index 05132115faa..f494a5a11d0 100644 --- a/code/game/objects/items/skrell.dm +++ b/code/game/objects/items/skrell.dm @@ -54,7 +54,6 @@ light_power = 1 light_range = 1 light_color = LIGHT_COLOR_HALOGEN - z_flags = ZMM_MANGLE_PLANES var/global/image/glow_state /obj/effect/temp_visual/constellation/Initialize() diff --git a/code/game/objects/items/weapons/candle.dm b/code/game/objects/items/weapons/candle.dm index 9a1f79ddf7f..ba444b968e4 100644 --- a/code/game/objects/items/weapons/candle.dm +++ b/code/game/objects/items/weapons/candle.dm @@ -8,6 +8,8 @@ pickup_sound = 'sound/items/pickup/gloves.ogg' w_class = WEIGHT_CLASS_TINY light_color = "#E09D37" + light_range = 2 + light_power = CANDLE_LUM var/wax = 3200 var/start_lit = FALSE @@ -47,8 +49,7 @@ if(!src.lit) src.lit = 1 playsound(src.loc, 'sound/items/cigs_lighters/cig_light.ogg', 50, 1) - //src.damtype = "fire" - set_light(CANDLE_LUM) + set_light_on(TRUE) update_icon() START_PROCESSING(SSprocessing, src) @@ -76,4 +77,4 @@ to_chat(user, SPAN_NOTICE("You snuff out the flame.")) playsound(src.loc, 'sound/items/cigs_lighters/cig_snuff.ogg', 50, 1) update_icon() - set_light(0) + set_light_on(FALSE) diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 9e3c9b67b3a..fe34283e21e 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -770,7 +770,8 @@ var/list/pilot_access = list() for(var/mob/pilot as anything in exosuit.pilots) var/obj/item/ID = pilot.GetIdCard() - pilot_access |= ID.GetAccess() + if(ID) + pilot_access |= ID.GetAccess() return pilot_access #undef ID_CARD_UNSET diff --git a/code/game/objects/items/weapons/chaplain_items.dm b/code/game/objects/items/weapons/chaplain_items.dm index 6975da04d41..492a4013059 100644 --- a/code/game/objects/items/weapons/chaplain_items.dm +++ b/code/game/objects/items/weapons/chaplain_items.dm @@ -126,6 +126,9 @@ icon_state = "azubarre_torch" item_state = "azubarre_torch" contained_sprite = TRUE + light_range = 3 + light_power = 1 + light_color = LIGHT_COLOR_FIRE var/lit = FALSE /obj/item/nullrod/azubarre/attack_self(mob/user) @@ -142,10 +145,10 @@ /obj/item/nullrod/azubarre/update_icon() if(lit) icon_state = "azubarre_torch-on" - set_light(3, 1, LIGHT_COLOR_FIRE) + set_light_on(TRUE) else icon_state = "azubarre_torch-empty" - set_light(0) + set_light_on(FALSE) item_state = icon_state /obj/item/nullrod/azubarre/isFlameSource() diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm index 648712b015b..7dc64eb5eef 100644 --- a/code/game/objects/items/weapons/cigs_lighters.dm +++ b/code/game/objects/items/weapons/cigs_lighters.dm @@ -40,6 +40,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM attack_verb = list("burnt", "singed") drop_sound = 'sound/items/drop/food.ogg' pickup_sound = 'sound/items/pickup/food.ogg' + light_system = MOVABLE_LIGHT /obj/item/trash/match name = "burnt match" @@ -113,7 +114,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM M.update_inv_wear_mask(0) M.update_inv_l_hand(0) M.update_inv_r_hand(1) - set_light(2, 0.25, "#E38F46") + set_light_range_power_color(2, 0.25, "#E38F46") + set_light_on(TRUE) START_PROCESSING(SSprocessing, src) /obj/item/flame/match/proc/die(var/nomessage = FALSE) @@ -135,7 +137,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM M.update_inv_l_hand(0) M.update_inv_r_hand(1) M.put_in_hands(burnt) - set_light(0) + set_light_on(FALSE) STOP_PROCESSING(SSprocessing, src) qdel(src) @@ -227,12 +229,13 @@ ABSTRACT_TYPE(/obj/item/clothing/mask/smokable) M.update_inv_r_hand(1) var/turf/T = get_turf(src) T.visible_message(flavor_text) - set_light(2, 0.25, "#E38F46") + set_light_range_power_color(2, 0.25, "#E38F46") + set_light_on(TRUE) START_PROCESSING(SSprocessing, src) /obj/item/clothing/mask/smokable/proc/die(var/no_message = FALSE, var/intentionally = FALSE) var/turf/T = get_turf(src) - set_light(0) + set_light_on(FALSE) playsound(src.loc, 'sound/items/cigs_lighters/cig_snuff.ogg', 50, 1) if(type_butt) var/obj/item/butt = new type_butt(src.loc) @@ -965,7 +968,7 @@ ABSTRACT_TYPE(/obj/item/clothing/mask/smokable) else user.visible_message(SPAN_NOTICE("[user] quietly shuts off \the [src]."), range = 3) - set_light(0) + set_light_on(FALSE) STOP_PROCESSING(SSprocessing, src) else return ..() @@ -975,7 +978,8 @@ ABSTRACT_TYPE(/obj/item/clothing/mask/smokable) lit = TRUE update_icon() playsound(src.loc, pick(activation_sound), 75, 1) - set_light(flame_light_power, flame_light_range, l_color = flame_light_color) + set_light_range_power_color(flame_light_range, flame_light_power, flame_light_color) + set_light_on(TRUE) START_PROCESSING(SSprocessing, src) /obj/item/flame/lighter/vendor_action(var/obj/machinery/vending/V) @@ -1032,7 +1036,7 @@ ABSTRACT_TYPE(/obj/item/clothing/mask/smokable) lit = 0 icon_state = "[base_state]" item_state = "[base_state]" - set_light(0) + set_light_on(FALSE) STOP_PROCESSING(SSprocessing, src) return diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 8a675b8aa38..d6dbe61c16d 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -237,6 +237,10 @@ attack_verb = list("hit", "bludgeoned", "whacked") + light_system = MOVABLE_LIGHT + light_range = 1 + light_color = LIGHT_COLOR_LAVA + //Amount of OUCH when it's thrown force = 3 throwforce = 5 @@ -299,6 +303,7 @@ max_fuel = 40 matter = list(DEFAULT_WALL_MATERIAL = 100, MATERIAL_GLASS = 120) origin_tech = list(TECH_ENGINEERING = 4, TECH_BIO = 4) + light_color = LIGHT_COLOR_BLUE var/last_gen = 0 var/fuelgen_delay = 400 //The time, in deciseconds, required to regenerate one unit of fuel @@ -333,11 +338,14 @@ item_state = "[initial(item_state)]" if(welding == 2) - set_light(0.7, 2, l_color = LIGHT_COLOR_CYAN) + set_light_range_power_color(light_range * 1.5, light_power * 1.5, light_color) + set_light_on(TRUE) else if (welding == 1) - set_light(0.6, 1.5, l_color = LIGHT_COLOR_LAVA) + set_light_range_power_color(light_range, light_power, light_color) + set_light_on(TRUE) else - set_light(0) + set_light_range_power_color(light_range, light_power, light_color) + set_light_on(FALSE) /obj/item/weldingtool/update_icon() ClearOverlays() diff --git a/code/game/objects/structures/light_pole.dm b/code/game/objects/structures/light_pole.dm index 33618c73166..0f3982821ca 100644 --- a/code/game/objects/structures/light_pole.dm +++ b/code/game/objects/structures/light_pole.dm @@ -5,7 +5,6 @@ icon_state = "rustlamp_l" anchored = TRUE density = TRUE - light_wedge = LIGHT_OMNI light_color = LIGHT_COLOR_HALOGEN light_range = 8 light_power = 8 @@ -29,7 +28,6 @@ anchored = TRUE density = FALSE light_color = "#FA644B" - light_wedge = LIGHT_OMNI light_range = 6 light_power = 1 @@ -66,7 +64,6 @@ /obj/structure/utility_pole/street/on desc = "A tall light source. This one shines brightly." - light_wedge = LIGHT_OMNI light_color = "#e8ffeb" light_range = 8 light_power = 1.9 @@ -82,7 +79,6 @@ /obj/structure/utility_pole/street/classic/on desc = "A tall light source. This one shines brightly." - light_wedge = LIGHT_OMNI light_color = LIGHT_COLOR_TUNGSTEN light_range = 8 light_power = 1.9 diff --git a/code/game/objects/structures/urban.dm b/code/game/objects/structures/urban.dm index 0e6441534e5..b97ea7f6a7f 100644 --- a/code/game/objects/structures/urban.dm +++ b/code/game/objects/structures/urban.dm @@ -241,7 +241,7 @@ ABSTRACT_TYPE(/obj/structure/stairs/urban) icon = 'icons/obj/structure/urban/ledges.dmi' icon_state = "stairs-single" layer = 2.01 - opacity = 1 + opacity = TRUE /obj/structure/stairs/urban/right dir = EAST @@ -821,6 +821,10 @@ ABSTRACT_TYPE(/obj/structure/stairs/urban/road_ramp) if(storage_type) storage_compartment = new storage_type(src) +/obj/structure/cash_register/Destroy() + QDEL_NULL(storage_compartment) + return ..() + /obj/item/storage/toolbox/cash_register_storage name = "cash compartment" @@ -960,7 +964,7 @@ ABSTRACT_TYPE(/obj/structure/stairs/urban/road_ramp) autoclose = TRUE support_ids = TRUE glass = TRUE - opacity = 0 //otherwise it is opaque until opened/closed for the first time. + opacity = FALSE //otherwise it is opaque until opened/closed for the first time. /obj/machinery/door/urban/glass_sliding/double //use north state for left side and south state for right side icon_state = "double_glass_sliding_closed" diff --git a/code/game/turfs/simulated/shuttle_turfs.dm b/code/game/turfs/simulated/shuttle_turfs.dm index 478f8e554de..a1c5dfcb3df 100644 --- a/code/game/turfs/simulated/shuttle_turfs.dm +++ b/code/game/turfs/simulated/shuttle_turfs.dm @@ -4,7 +4,6 @@ /turf/simulated/wall/shuttle icon = 'icons/turf/smooth/shuttle_wall_dark.dmi' icon_state = "map-shuttle" - permit_ao = 0 smoothing_flags = SMOOTH_MORE canSmoothWith = list( /turf/unsimulated/wall/steel, // Centcomm wall. @@ -197,6 +196,12 @@ atmos_canpass = CANPASS_DENSITY obj_flags = OBJ_FLAG_MOVES_UNSUPPORTED|OBJ_FLAG_NOFALL +/obj/structure/shuttle_part/afterShuttleMove(obj/effect/shuttle_landmark/destination) + . = ..() + if(outside_part) + var/turf/target_turf = get_turf(src) + target_turf.ChangeTurf(destination.base_turf) + /obj/structure/window/shuttle/unique name = "shuttle window" desc = "It looks extremely strong. Might take many good hits to crack it." @@ -210,6 +215,12 @@ can_be_unanchored = FALSE var/outside_window = FALSE +/obj/structure/window/shuttle/unique/afterShuttleMove(obj/effect/shuttle_landmark/destination) + . = ..() + if(outside_window) + var/turf/target_turf = get_turf(src) + target_turf.ChangeTurf(destination.base_turf) + //merchant shuttle /turf/simulated/wall/shuttle/unique/merchant @@ -516,7 +527,6 @@ name = "shuttle floor" icon = 'icons/turf/shuttle.dmi' icon_state = "floor" - permit_ao = 0 initial_flooring = /singleton/flooring/shuttle footstep_sound = /singleton/sound_category/plating_footstep @@ -593,7 +603,6 @@ smooth_underlays = TRUE initial_gas = null roof_type = null - permit_ao = 0 canSmoothWith = list( /turf/simulated/shuttle_roof ) diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index 7bc01e7ab66..55875705a03 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -3,7 +3,6 @@ name = "\proper space" desc = "The final frontier." icon_state = "0" - dynamic_lighting = 0 footstep_sound = null //Override to make sure because yeah tracks_footprint = FALSE @@ -14,7 +13,6 @@ // heat_capacity = 700000 No. is_hole = TRUE - permit_ao = FALSE z_eventually_space = TRUE turf_flags = TURF_FLAG_BACKGROUND explosion_resistance = 3 @@ -22,7 +20,7 @@ var/use_space_appearance = TRUE /turf/space/dynamic //For use in edge cases where you want the turf to not be completely lit, like in places where you have placed lattice. - dynamic_lighting = 1 + //todomatt: this is useless now // Copypaste of parent for performance. /turf/space/Initialize() @@ -34,7 +32,8 @@ if(use_space_appearance) appearance = SSskybox.space_appearance_cache[(((x + y) ^ ~(x * y) + z) % 25) + 1] - if(GLOB.config.starlight && GLOB.lighting_overlays_initialized) + + if(GLOB.config.starlight) update_starlight() for(var/atom/movable/AM as mob|obj in src) @@ -43,11 +42,6 @@ // if (is_station_level(z)) // GLOB.station_turfs += src - if(dynamic_lighting) - luminosity = 0 - else - luminosity = 1 - return INITIALIZE_HINT_NORMAL // Handles starlight logic unique to space turfs. diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index b7ad7658d02..d3bf65fb14f 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -3,6 +3,7 @@ level = 1 layer = TURF_LAYER + vis_flags = VIS_INHERIT_PLANE var/holy = 0 @@ -62,6 +63,18 @@ var/base_icon_state = "plating" var/base_color = null + ///Lumcount added by sources other than lighting datum objects, such as the overlay lighting component. + var/dynamic_lumcount = 0 + + ///List of light sources affecting this turf. + ///Which directions does this turf block the vision of, taking into account both the turf's opacity and the movable opacity_sources. + var/directional_opacity = NONE + ///Lazylist of movable atoms providing opacity sources. + var/list/atom/movable/opacity_sources + + ///hybrid lights affecting this turf + var/tmp/list/atom/movable/lighting_mask/hybrid_lights_affecting + ///for clean log spam. var/last_clean @@ -112,20 +125,9 @@ if (is_station_level(z)) GLOB.station_turfs += src - if(dynamic_lighting) - luminosity = 0 - else - luminosity = 1 - if (smoothing_flags) QUEUE_SMOOTH(src) - if (opacity) - has_opaque_atom = TRUE - - if (mapload && permit_ao) - queue_ao() - var/area/A = loc if(A.base_turf) @@ -136,6 +138,14 @@ if (light_range && light_power) update_light() + //Get area light + var/area/current_area = loc + if(current_area?.lighting_effect) + overlays += current_area.lighting_effect + + if(opacity) + directional_opacity = ALL_CARDINALS + else if(!baseturf) // Hard-coding this for performance reasons. baseturf = SSatlas.current_map.base_turf_by_z["[z]"] || /turf/space @@ -149,6 +159,11 @@ return INITIALIZE_HINT_NORMAL /turf/Destroy() + if(hybrid_lights_affecting) + for(var/atom/movable/lighting_mask/mask as anything in hybrid_lights_affecting) + LAZYREMOVE(mask.affecting_turfs, src) + hybrid_lights_affecting.Cut() + if (!changing_turf) crash_with("Improper turf qdeletion.") @@ -160,10 +175,6 @@ remove_cleanables() cleanup_roof() - if (ao_queued) - SSao.queue -= src - ao_queued = 0 - if (z_flags & ZM_MIMIC_BELOW) cleanup_zmimic() @@ -198,7 +209,7 @@ // We do this prior to the unique space logic so this also covers space turfs within a needs_starlight area. var/area/A = get_area(src) if(A.needs_starlight) - set_light(SSatlas.current_sector.starlight_range, SSatlas.current_sector.starlight_power, l_color = SSskybox.background_color) + set_light(SSatlas.current_sector.starlight_range, SSatlas.current_sector.starlight_power, SSskybox.background_color) return TRUE else // If we aren't assigning starlight lighting, set the lighting to default so it's possible to undo starlight lighting if an area changes. set_default_lighting() @@ -463,15 +474,6 @@ if (oAM.simulated && (oAM.movable_flags & MOVABLE_FLAG_PROXMOVE)) arrived.proximity_callback(oAM) - if (arrived && arrived.opacity && !has_opaque_atom) - has_opaque_atom = TRUE // Make sure to do this before reconsider_lights(), incase we're on instant updates. Guaranteed to be on in this case. - reconsider_lights() - -#ifdef AO_USE_LIGHTING_OPACITY - // Hook for AO. - regenerate_ao() -#endif - if(!(arrived.bound_overlay || (arrived.z_flags & ZMM_IGNORE) || !TURF_IS_MIMICING(above))) above.update_mimic() diff --git a/code/game/turfs/turf_changing.dm b/code/game/turfs/turf_changing.dm index 15e6e087cea..ed7a7f40f12 100644 --- a/code/game/turfs/turf_changing.dm +++ b/code/game/turfs/turf_changing.dm @@ -49,11 +49,6 @@ var/obj/fire/old_fire = fire var/old_baseturf = baseturf var/old_above = above - var/old_opacity = opacity - var/old_dynamic_lighting = dynamic_lighting - var/list/old_affecting_lights = affecting_lights - var/old_lighting_overlay = lighting_overlay - var/list/old_corners = corners var/list/old_blueprints = blueprints var/list/old_decals = decals var/old_outside = is_outside @@ -61,6 +56,17 @@ var/list/old_resources = resources ? resources.Copy() : null SEND_SIGNAL(src, COMSIG_TURF_CHANGE, path) + + //static lighting + var/old_lighting_object = static_lighting_object + var/old_lighting_corner_NE = lighting_corner_NE + var/old_lighting_corner_SE = lighting_corner_SE + var/old_lighting_corner_SW = lighting_corner_SW + var/old_lighting_corner_NW = lighting_corner_NW + //hybrid lighting + var/list/old_hybrid_lights_affecting = hybrid_lights_affecting?.Copy() + var/old_directional_opacity = directional_opacity + changing_turf = TRUE if(connections) @@ -87,34 +93,38 @@ if(old_signal_procs) LAZYOR(new_turf._signal_procs, old_signal_procs) -#ifndef AO_USE_LIGHTING_OPACITY - // If we're using opacity-based AO, this is done in recalc_atom_opacity(). - if (permit_ao) - regenerate_ao() -#endif + new_turf.hybrid_lights_affecting = old_hybrid_lights_affecting + new_turf.dynamic_lumcount = dynamic_lumcount - if(GLOB.lighting_overlays_initialized) - recalc_atom_opacity() - lighting_overlay = old_lighting_overlay - if (lighting_overlay && lighting_overlay.loc != src) - // This is a hack, but I can't figure out why the fuck they're not on the correct turf in the first place. - lighting_overlay.forceMove(src, harderforce = TRUE) + lighting_corner_NE = old_lighting_corner_NE + lighting_corner_SE = old_lighting_corner_SE + lighting_corner_SW = old_lighting_corner_SW + lighting_corner_NW = old_lighting_corner_NW - affecting_lights = old_affecting_lights - corners = old_corners + //static Update + if(SSlighting.initialized) + recalculate_directional_opacity() - if ((old_opacity != opacity) || (dynamic_lighting != old_dynamic_lighting) || force_lighting_update) - reconsider_lights() + new_turf.static_lighting_object = old_lighting_object - if (dynamic_lighting != old_dynamic_lighting) - if (dynamic_lighting) - lighting_build_overlay() - else - lighting_clear_overlay() + if(static_lighting_object && !static_lighting_object.needs_update) + static_lighting_object.update() - if (GLOB.config.starlight) - for (var/turf/space/S in RANGE_TURFS(1, src)) - S.update_starlight() + //Since the old turf was removed from hybrid_lights_affecting, readd the new turf here + if(new_turf.hybrid_lights_affecting) + for(var/atom/movable/lighting_mask/mask as anything in new_turf.hybrid_lights_affecting) + LAZYADD(mask.affecting_turfs, new_turf) + + if(new_turf.directional_opacity != old_directional_opacity) + new_turf.reconsider_lights() + + var/area/thisarea = get_area(new_turf) + if(thisarea.lighting_effect) + new_turf.AddOverlays(thisarea.lighting_effect) + + if(GLOB.config.starlight) + for(var/turf/space/S in RANGE_TURFS(1, src)) + S.update_starlight() new_turf.above = old_above @@ -167,7 +177,6 @@ src.icon_state = other.icon_state src.icon = other.icon src.overlays = other.overlays.Copy() - src.underlays = other.underlays.Copy() if(other.decals) src.decals = other.decals.Copy() other.decals.Cut() @@ -200,7 +209,6 @@ other.icon = icon other.icon_state = icon_state - other.underlays = underlays.Copy() other.name = name other.layer = layer other.decals = decals diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 26c827ab4f9..66654ac2ab0 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -224,7 +224,6 @@ GLOBAL_LIST_INIT(admin_verbs_debug, list( /client/proc/toggle_recursive_explosions, /client/proc/restart_sql, /client/proc/fix_player_list, - /client/proc/lighting_show_verbs, /client/proc/restart_controller, /client/proc/cmd_display_del_log, /client/proc/cmd_display_harddel_log, @@ -236,7 +235,6 @@ GLOBAL_LIST_INIT(admin_verbs_debug, list( /datum/admins/proc/map_template_load, /datum/admins/proc/map_template_load_new_z, /datum/admins/proc/map_template_upload, - /client/proc/global_ao_regenerate, /client/proc/add_client_color, /client/proc/connect_ntsl, /client/proc/disconnect_ntsl, @@ -342,7 +340,6 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list( /client/proc/end_round, /datum/admins/proc/immreboot, /client/proc/cmd_dev_bst, - /client/proc/global_ao_regenerate, /client/proc/everyone_random, /datum/admins/proc/toggleAI, /client/proc/cmd_admin_delete, @@ -420,7 +417,6 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list( /datum/admins/proc/capture_map, /turf/proc/view_chunk, /turf/proc/update_chunk, - /client/proc/lighting_show_verbs, /client/proc/callproc, /client/proc/callproc_target, /client/proc/debug_controller, @@ -498,7 +494,6 @@ GLOBAL_LIST_INIT(admin_verbs_dev, list( //will need to be altered - Ryan784 /client/proc/toggledebuglogs, /client/proc/ZASSettings, /client/proc/cmd_dev_bst, - /client/proc/lighting_show_verbs, /client/proc/cmd_display_del_log, /client/proc/cmd_display_harddel_log, /client/proc/cmd_display_init_log, diff --git a/code/modules/admin/verbs/bluespacetech.dm b/code/modules/admin/verbs/bluespacetech.dm index a3412513899..4ef1a60e5d5 100644 --- a/code/modules/admin/verbs/bluespacetech.dm +++ b/code/modules/admin/verbs/bluespacetech.dm @@ -419,7 +419,7 @@ name = "bluespace technician's glasses" desc = "A pair of modified sunglasses. The word 'BST' is stamped on the side." vision_flags = (SEE_TURFS|SEE_OBJS|SEE_MOBS) - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE canremove = 0 flash_protection = FLASH_PROTECTION_MAJOR @@ -431,17 +431,17 @@ switch (mode) if ("X-Ray without Lighting") - vision_flags = SEE_TURFS|SEE_OBJS|SEE_MOBS|SEE_BLACKNESS|SEE_SELF - see_invisible = SEE_INVISIBLE_NOLIGHTING + vision_flags = SEE_TURFS|SEE_OBJS|SEE_MOBS|SEE_SELF + lighting_alpha = LIGHTING_PLANE_ALPHA_INVISIBLE if ("X-Ray with Lighting") - vision_flags = SEE_TURFS|SEE_OBJS|SEE_MOBS|SEE_BLACKNESS|SEE_SELF - see_invisible = -1 + vision_flags = SEE_TURFS|SEE_OBJS|SEE_MOBS|SEE_SELF + lighting_alpha = LIGHTING_PLANE_ALPHA_VISIBLE if ("Darkvision") - vision_flags = SEE_BLACKNESS|SEE_SELF - see_invisible = SEE_INVISIBLE_NOLIGHTING + vision_flags = SEE_SELF + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE if ("Normal vision") vision_flags = 0 - see_invisible = -1 + lighting_alpha = LIGHTING_PLANE_ALPHA_VISIBLE to_chat(usr, SPAN_NOTICE("\The [src]'s vision mode is now [mode].")) diff --git a/code/modules/ambient_occlusion/ao_turf.dm b/code/modules/ambient_occlusion/ao_turf.dm deleted file mode 100644 index 36fca99efb5..00000000000 --- a/code/modules/ambient_occlusion/ao_turf.dm +++ /dev/null @@ -1,116 +0,0 @@ -#ifdef AO_USE_LIGHTING_OPACITY -#define AO_TURF_CHECK(T) (!T.has_opaque_atom || !T.permit_ao) -#define AO_SELF_CHECK(T) (!T.has_opaque_atom) -#else -#define AO_TURF_CHECK(T) (!T.density || !T.opacity || !T.permit_ao) -#define AO_SELF_CHECK(T) (!T.density && !T.opacity) -#endif - -/turf - var/permit_ao = TRUE - var/tmp/list/ao_overlays // Current ambient occlusion overlays. Tracked so we can reverse them without dropping all priority overlays. - var/tmp/ao_neighbors - var/tmp/list/ao_overlays_mimic - var/tmp/ao_neighbors_mimic - var/ao_queued = AO_UPDATE_NONE - -/turf/proc/regenerate_ao() - if (GLOB.config.fastboot) - return - for (var/thing in RANGE_TURFS(1, src)) - var/turf/T = thing - if (T.permit_ao) - T.queue_ao(TRUE) - -/turf/proc/calculate_ao_neighbors() - ao_neighbors = 0 - ao_neighbors_mimic = 0 - if (!permit_ao) - return - - var/turf/T - if (z_flags & ZM_MIMIC_BELOW) - CALCULATE_NEIGHBORS(src, ao_neighbors_mimic, T, (T.z_flags & ZM_MIMIC_BELOW)) - if (AO_SELF_CHECK(src) && !(z_flags & ZM_MIMIC_NO_AO)) - CALCULATE_NEIGHBORS(src, ao_neighbors, T, AO_TURF_CHECK(T)) - -/proc/make_ao_image(corner, i, px = 0, py = 0, pz = 0, pw = 0) - var/list/cache = SSicon_cache.ao_cache - var/cstr = "[corner]" - var/key = "[cstr]-[i]-[px]/[py]/[pz]/[pw]" - - var/image/I = image('icons/turf/flooring/shadows.dmi', cstr, dir = 1 << (i-1)) - I.alpha = WALL_AO_ALPHA - I.blend_mode = BLEND_OVERLAY - I.appearance_flags = RESET_ALPHA|RESET_COLOR|TILE_BOUND - I.layer = AO_LAYER - // If there's an offset, counteract it. - if (px || py || pz || pw) - I.pixel_x = -px - I.pixel_y = -py - I.pixel_z = -pz - I.pixel_w = -pw - - . = cache[key] = I - -/turf/proc/queue_ao(rebuild = TRUE) - if (GLOB.config.fastboot) - return - if (!ao_queued) - SSao.queue += src - - var/new_level = rebuild ? AO_UPDATE_REBUILD : AO_UPDATE_OVERLAY - if (ao_queued < new_level) - ao_queued = new_level - -#define PROCESS_AO_CORNER(AO_LIST, NEIGHBORS, CORNER_INDEX, CDIR) \ - corner = 0; \ - if (NEIGHBORS & (1 << CDIR)) { \ - corner |= 2; \ - } \ - if (NEIGHBORS & (1 << turn(CDIR, 45))) { \ - corner |= 1; \ - } \ - if (NEIGHBORS & (1 << turn(CDIR, -45))) { \ - corner |= 4; \ - } \ - if (corner != 7) { /* 7 is the 'no shadows' state, no reason to add overlays for it. */ \ - var/image/I = cache["[corner]-[CORNER_INDEX]-[pixel_x]/[pixel_y]/[pixel_z]/[pixel_w]"]; \ - if (!I) { \ - I = make_ao_image(corner, CORNER_INDEX, pixel_x, pixel_y, pixel_z, pixel_w) /* this will also add the image to the cache. */ \ - } \ - LAZYADD(AO_LIST, I); \ - } - -#define CUT_AO(TARGET, AO_LIST) \ - if (AO_LIST) { \ - TARGET.CutOverlays(AO_LIST, ATOM_ICON_CACHE_PROTECTED); \ - AO_LIST.Cut(); \ - } - -#define REGEN_AO(TARGET, AO_LIST, NEIGHBORS) \ - if (permit_ao && NEIGHBORS != AO_ALL_NEIGHBORS) { \ - var/corner;\ - PROCESS_AO_CORNER(AO_LIST, NEIGHBORS, 1, NORTHWEST); \ - PROCESS_AO_CORNER(AO_LIST, NEIGHBORS, 2, SOUTHEAST); \ - PROCESS_AO_CORNER(AO_LIST, NEIGHBORS, 3, NORTHEAST); \ - PROCESS_AO_CORNER(AO_LIST, NEIGHBORS, 4, SOUTHWEST); \ - } \ - UNSETEMPTY(AO_LIST); \ - if (AO_LIST) { \ - TARGET.AddOverlays(AO_LIST, ATOM_ICON_CACHE_PROTECTED); \ - } - -/turf/proc/update_ao() - var/list/cache = SSicon_cache.ao_cache - CUT_AO(shadower, ao_overlays_mimic) - CUT_AO(src, ao_overlays) - if (z_flags & ZM_MIMIC_BELOW) - REGEN_AO(shadower, ao_overlays_mimic, ao_neighbors_mimic) - if (!has_opaque_atom && !(z_flags & ZM_MIMIC_NO_AO)) - REGEN_AO(src, ao_overlays, ao_neighbors) - -#undef REGEN_AO -#undef PROCESS_AO_CORNER -#undef AO_TURF_CHECK -#undef AO_SELF_CHECK diff --git a/code/modules/ambient_occlusion/ao_verbs.dm b/code/modules/ambient_occlusion/ao_verbs.dm deleted file mode 100644 index 1a8ac2fba0a..00000000000 --- a/code/modules/ambient_occlusion/ao_verbs.dm +++ /dev/null @@ -1,23 +0,0 @@ -/client/proc/global_ao_regenerate() - set name = "Regenerate AO (Global)" - set desc = "Regenerates AO caches across the map." - set category = "Debug" - - if (!check_rights(R_DEBUG)) return - - log_and_message_admins("has triggered a global ambient occlusion rebuild.") - to_chat(usr, "Beginning global AO rebuild.") - - SSao.can_fire = FALSE - - for (var/turf/T in world) // Yes, in world. - T.ao_neighbors = null // To force a recalc. - T.ao_neighbors_mimic = null - if (T.permit_ao) - T.queue_ao() - - CHECK_TICK - - SSao.can_fire = TRUE - - to_chat(usr, "AO rebuild complete.") diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index f69f77540bc..0b5b6944ce1 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -600,7 +600,6 @@ body_parts_covered = HEAD slot_flags = SLOT_HEAD w_class = WEIGHT_CLASS_SMALL - uv_intensity = 50 //Light emitted by this object or creature has limited interaction with diona species_restricted = list("exclude",BODYTYPE_VAURCA_BREEDER,BODYTYPE_VAURCA_WARFORM,BODYTYPE_TESLA_BODY) drop_sound = 'sound/items/drop/hat.ogg' @@ -608,13 +607,14 @@ valid_accessory_slots = list(ACCESSORY_SLOT_HEAD) + light_system = DIRECTIONAL_LIGHT + /// In case if you want to allow someone to switch the BLOCKHEADHAIR var from the helmet or not var/allow_hair_covering = TRUE var/light_overlay = "helmet_light" var/light_applied - var/brightness_on - var/on = 0 + var/on = FALSE var/protects_against_weather = FALSE /obj/item/clothing/head/Initialize(mapload, material_key) @@ -638,22 +638,22 @@ return on /obj/item/clothing/head/attack_self(mob/user) - if(brightness_on) + if(light_range) if(!isturf(user.loc)) to_chat(user, "You cannot turn the light on while in this [user.loc]") return on = !on - to_chat(user, "You [on ? "enable" : "disable"] the helmet light.") + to_chat(user, SPAN_NOTICE("You [on ? "enable" : "disable"] the helmet light.")) update_flashlight(user) else return ..(user) /obj/item/clothing/head/proc/update_flashlight(var/mob/user = null) if(on && !light_applied) - set_light(brightness_on) + set_light_on(on) light_applied = 1 else if(!on && light_applied) - set_light(0) + set_light_on(on) light_applied = 0 update_icon(user) user.update_action_buttons() diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 2cde7080e5a..70564936b13 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -19,9 +19,12 @@ BLIND // can't see anything w_class = WEIGHT_CLASS_SMALL slot_flags = SLOT_EYES body_parts_covered = EYES + light_system = MOVABLE_LIGHT var/vision_flags = 0 var/darkness_view = 0//Base human is 2 var/prescription = 0 + /// The amount of nightvision these glasses have. This should be a number between 0 and 1. + var/lighting_alpha = LIGHTING_PLANE_ALPHA_VISIBLE var/see_invisible = -1 var/toggleable = 0 var/toggle_changes_appearance = TRUE @@ -77,18 +80,18 @@ BLIND // can't see anything /obj/item/clothing/glasses/attack_self(mob/user) if(toggleable) if(active) - active = 0 + active = FALSE if(toggle_changes_appearance) icon_state = off_state item_state = off_state user.update_inv_glasses() flash_protection = FLASH_PROTECTION_NONE tint = TINT_NONE - to_chat(usr, "You deactivate the optical matrix on the [src].") + to_chat(usr, SPAN_NOTICE("You deactivate the optical matrix on the [src].")) if(activated_color) - set_light(0) + set_light_on(active) else - active = 1 + active = TRUE if(toggle_changes_appearance) icon_state = initial(icon_state) item_state = initial(icon_state) @@ -97,9 +100,10 @@ BLIND // can't see anything sound_to(usr, activation_sound) flash_protection = initial(flash_protection) tint = initial(tint) - to_chat(usr, "You activate the optical matrix on the [src].") + to_chat(usr, SPAN_NOTICE("You activate the optical matrix on the [src].")) if(activated_color) - set_light(2, 0.4, activated_color) + set_light_range_power_color(2, 0.4, activated_color) + set_light_on(active) user.update_action_buttons() user.update_inv_l_hand(0) user.update_inv_r_hand(1) @@ -120,7 +124,7 @@ BLIND // can't see anything origin_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2) toggleable = 1 vision_flags = SEE_TURFS - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE item_flags = ITEM_FLAG_AIRTIGHT activated_color = LIGHT_COLOR_GREEN @@ -225,7 +229,7 @@ BLIND // can't see anything origin_tech = list(TECH_MAGNET = 2) darkness_view = 7 toggleable = 1 - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE off_state = "denight" /obj/item/clothing/glasses/night/Initialize() @@ -1048,7 +1052,7 @@ BLIND // can't see anything origin_tech = list(TECH_MAGNET = 3) toggleable = 1 vision_flags = SEE_MOBS - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE flash_protection = FLASH_PROTECTION_REDUCED item_flags = ITEM_FLAG_AIRTIGHT @@ -1165,11 +1169,9 @@ BLIND // can't see anything if(active && slot == slot_glasses) user.AddOverlays(mob_overlay, ATOM_ICON_CACHE_PROTECTED) user.AddOverlays(mob_overlay_emis, TRUE) - user.z_flags |= ZMM_MANGLE_PLANES else user.CutOverlays(mob_overlay, ATOM_ICON_CACHE_PROTECTED) user.AddOverlays(mob_overlay_emis, TRUE) - user.z_flags &= ZMM_MANGLE_PLANES return ..() /obj/item/clothing/glasses/eyepatch/hud/Destroy() @@ -1229,7 +1231,7 @@ BLIND // can't see anything name = "MESpatch" desc = "An optical meson scanner display that connects directly to the optic nerve of the user, giving you cool green vision at the low cost of your only other eye." vision_flags = SEE_TURFS - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE eye_color = COLOR_LIME /obj/item/clothing/glasses/eyepatch/hud/meson/Initialize() @@ -1255,7 +1257,7 @@ BLIND // can't see anything name = "HEATpatch" desc = "A thermal-type heads-up display that connects directly to the optic nerve of the user. Double the tacticool, half the eyes." vision_flags = SEE_MOBS - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE eye_color = COLOR_ORANGE /obj/item/clothing/glasses/eyepatch/hud/thermal/Initialize() @@ -1273,7 +1275,7 @@ BLIND // can't see anything name = "NITEpatch" desc = "A light-amplifying display that connects directly to the optic nerve of the user. Helps you avoid a battery charge from bumping an officer in the dark." darkness_view = 7 - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE eye_color = COLOR_GREEN /obj/item/clothing/glasses/eyepatch/hud/night/Initialize() diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index c96d1257d4a..9602747180f 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -133,7 +133,7 @@ icon_state = "jensenshades" item_state = "jensenshades" vision_flags = SEE_MOBS - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE /obj/item/clothing/glasses/hud/security/process_hud(var/mob/M) process_sec_hud(M, 1) diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index 96698c7b8d3..01b1732eedd 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -7,7 +7,7 @@ light_overlay = "hardhat_light" contained_sprite = TRUE action_button_name = "Toggle Headlamp" - brightness_on = 4 //luminosity when on + light_range = 4 //luminosity when on armor = list( MELEE = ARMOR_MELEE_RESISTANT, BULLET = ARMOR_BALLISTIC_MINOR, @@ -21,7 +21,6 @@ w_class = WEIGHT_CLASS_NORMAL siemens_coefficient = 0.9 max_pressure_protection = FIRESUIT_MAX_PRESSURE - light_wedge = LIGHT_WIDE drop_sound = 'sound/items/drop/helm.ogg' pickup_sound = 'sound/items/pickup/helm.ogg' diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 9c4af5e6984..2ece6e05a7e 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -469,7 +469,6 @@ action_button_name = "Toggle Helmet Light" light_overlay = "helmet_light_dual" - brightness_on = 6 - light_wedge = LIGHT_WIDE + light_range = 6 camera = /obj/machinery/camera/network/tcfl on = 0 diff --git a/code/modules/clothing/spacesuits/rig/rig_pieces.dm b/code/modules/clothing/spacesuits/rig/rig_pieces.dm index af91868996a..ebc43a992c7 100644 --- a/code/modules/clothing/spacesuits/rig/rig_pieces.dm +++ b/code/modules/clothing/spacesuits/rig/rig_pieces.dm @@ -9,8 +9,7 @@ body_parts_covered = HEAD|FACE|EYES heat_protection = HEAD|FACE|EYES cold_protection = HEAD|FACE|EYES - brightness_on = 4 - light_wedge = LIGHT_WIDE + light_range = 4 icon = 'icons/obj/clothing/hats.dmi' contained_sprite = FALSE diff --git a/code/modules/clothing/spacesuits/rig/suits/station.dm b/code/modules/clothing/spacesuits/rig/suits/station.dm index d3229631457..47c048b3980 100644 --- a/code/modules/clothing/spacesuits/rig/suits/station.dm +++ b/code/modules/clothing/spacesuits/rig/suits/station.dm @@ -2,7 +2,7 @@ camera = /obj/machinery/camera/network/mining light_overlay = "helmet_light_dual" light_color = "#ffcf2f" - brightness_on = 6 + light_range = 6 /obj/item/clothing/head/helmet/space/rig/industrial/himeo light_overlay = "helmet_light_himeo" diff --git a/code/modules/clothing/spacesuits/spacesuits.dm b/code/modules/clothing/spacesuits/spacesuits.dm index b7f3e79a4ac..f67bccec010 100644 --- a/code/modules/clothing/spacesuits/spacesuits.dm +++ b/code/modules/clothing/spacesuits/spacesuits.dm @@ -30,8 +30,7 @@ action_button_name = "Toggle Helmet Light" light_overlay = "helmet_light" - brightness_on = 4 - light_wedge = LIGHT_WIDE + light_range = 4 on = 0 /obj/item/clothing/head/helmet/space/Initialize() diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm index 1e1c1cb7c00..9cdf8806a1f 100644 --- a/code/modules/clothing/spacesuits/syndi.dm +++ b/code/modules/clothing/spacesuits/syndi.dm @@ -15,7 +15,7 @@ RAD = ARMOR_RAD_MINOR ) siemens_coefficient = 0.5 - brightness_on = 6 + light_range = 6 contained_sprite = FALSE /obj/item/clothing/suit/space/syndicate diff --git a/code/modules/clothing/spacesuits/void/alien/unathi.dm b/code/modules/clothing/spacesuits/void/alien/unathi.dm index f4dd11852b6..9b8b2cd23bf 100644 --- a/code/modules/clothing/spacesuits/void/alien/unathi.dm +++ b/code/modules/clothing/spacesuits/void/alien/unathi.dm @@ -82,7 +82,7 @@ RAD = ARMOR_RAD_SMALL ) light_overlay = "helmet_light_dual_low" - brightness_on = 6 + light_range = 6 species_restricted = list(BODYTYPE_UNATHI) refittable = FALSE @@ -156,7 +156,7 @@ RAD = ARMOR_RAD_SHIELDED ) light_overlay = "helmet_light_dual_low" - brightness_on = 6 + light_range = 6 species_restricted = list(BODYTYPE_UNATHI) refittable = FALSE diff --git a/code/modules/clothing/spacesuits/void/merc.dm b/code/modules/clothing/spacesuits/void/merc.dm index 8be192e783b..f83d394b597 100644 --- a/code/modules/clothing/spacesuits/void/merc.dm +++ b/code/modules/clothing/spacesuits/void/merc.dm @@ -21,7 +21,7 @@ species_restricted = list(BODYTYPE_HUMAN) light_overlay = "merc_voidsuit_lights" camera = /obj/machinery/camera/network/mercenary - brightness_on = 6 + light_range = 6 light_color = "#ffffff" /obj/item/clothing/suit/space/void/merc diff --git a/code/modules/clothing/spacesuits/void/misc.dm b/code/modules/clothing/spacesuits/void/misc.dm index b9b7bebf5de..fbafae3da81 100644 --- a/code/modules/clothing/spacesuits/void/misc.dm +++ b/code/modules/clothing/spacesuits/void/misc.dm @@ -17,7 +17,7 @@ siemens_coefficient = 0.35 species_restricted = list(BODYTYPE_HUMAN) - brightness_on = 6 + light_range = 6 refittable = FALSE /obj/item/clothing/suit/space/void/sol @@ -65,7 +65,7 @@ refittable_species = list(BODYTYPE_HUMAN, BODYTYPE_TAJARA, BODYTYPE_IPC, BODYTYPE_SKRELL) - brightness_on = 6 + light_range = 6 /obj/item/clothing/suit/space/void/coalition name = "coalition vulture voidsuit" @@ -101,7 +101,7 @@ species_restricted = list(BODYTYPE_HUMAN) light_overlay = "helmet_light_xanu_voidsuit" - brightness_on = 6 + light_range = 6 /obj/item/clothing/suit/space/void/coalition/xanu name = "\improper Xanan eagle voidsuit" @@ -139,7 +139,7 @@ refittable_species = list(BODYTYPE_HUMAN, BODYTYPE_TAJARA, BODYTYPE_IPC) icon_supported_species_tags = list("taj") - brightness_on = 6 + light_range = 6 light_color = "#ffce01" /obj/item/clothing/head/helmet/space/void/coalition/galatea @@ -184,7 +184,7 @@ siemens_coefficient = 0.35 species_restricted = list(BODYTYPE_HUMAN) w_class = WEIGHT_CLASS_NORMAL - brightness_on = 6 + light_range = 6 refittable = FALSE /obj/item/clothing/suit/space/void/cruiser @@ -228,7 +228,7 @@ siemens_coefficient = 0.35 species_restricted = list(BODYTYPE_HUMAN) max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE + 10000 - brightness_on = 6 + light_range = 6 icon_supported_species_tags = list("ipc") refittable_species = list(BODYTYPE_HUMAN, BODYTYPE_IPC) @@ -330,7 +330,7 @@ siemens_coefficient = 0.35 species_restricted = list(BODYTYPE_HUMAN) light_overlay = "helmet_light_banshee" - brightness_on = 6 + light_range = 6 light_color = "#7ffbf7" desc_extended = "An easily recognized Einstein Engines-made PMC voidsuit piece. It is a telltale mark of corporate espionage and more often than not ends up buried with its user." icon_supported_species_tags = list("skr", "ipc") @@ -382,7 +382,7 @@ siemens_coefficient = 0.35 species_restricted = list(BODYTYPE_HUMAN) light_overlay = "helmet_light_dragon" - brightness_on = 6 + light_range = 6 light_color = "#7ffbf7" desc_extended = "An easily recognized Zeng-Hu Pharmaceuticals biohazard control suit helmet. Its bug-eyed goggle visor design is unique among its class, alongside cutting-edge radiation protection." icon_supported_species_tags = list("skr", "ipc") @@ -434,7 +434,7 @@ siemens_coefficient = 0.35 species_restricted = list(BODYTYPE_HUMAN) light_overlay = "helmet_light_caiman" - brightness_on = 6 + light_range = 6 light_color = "#ffce01" desc_extended = "An easily recognized Hephaestus terraforming suit helmet. Its low, protruding brow and heavy plating is useful in the event you happen to be cutting down things. Mostly trees. Hopefully trees." icon_supported_species_tags = list("una") @@ -486,7 +486,7 @@ siemens_coefficient = 0.35 species_restricted = list(BODYTYPE_HUMAN) light_overlay = "helmet_light_revenant" - brightness_on = 6 + light_range = 6 light_color = "#f65858" desc_extended = "An ominous helmet of Zavodskoi Interstellar make with its past veiled in mystery, used for high-end corporate backstabbing and secret operations." @@ -535,7 +535,7 @@ siemens_coefficient = 0.35 species_restricted = list(BODYTYPE_HUMAN) light_overlay = "freelancer_light" - brightness_on = 6 + light_range = 6 light_color = "#7ffbf7" refittable_species = list(BODYTYPE_HUMAN, BODYTYPE_TAJARA, BODYTYPE_IPC, BODYTYPE_UNATHI, BODYTYPE_SKRELL) @@ -582,7 +582,7 @@ ) siemens_coefficient = 0.35 species_restricted = list(BODYTYPE_HUMAN, BODYTYPE_UNATHI) - brightness_on = 6 + light_range = 6 icon_supported_species_tags = list("una") refittable_species = list(BODYTYPE_HUMAN, BODYTYPE_UNATHI) @@ -648,7 +648,7 @@ ) siemens_coefficient = 0.35 species_restricted = list(BODYTYPE_HUMAN, BODYTYPE_IPC, BODYTYPE_IPC_INDUSTRIAL, BODYTYPE_IPC_ZENGHU, BODYTYPE_IPC_BISHOP) - brightness_on = 6 + light_range = 6 /obj/item/clothing/suit/space/void/golden_deep name = "golden suit" @@ -1022,7 +1022,7 @@ item_state = "gadpathur_vulture_helm" species_restricted = list(BODYTYPE_HUMAN) - brightness_on = 6 + light_range = 6 /obj/item/clothing/suit/space/void/coalition/gadpathur name = "coalition vulture-GP voidsuit" @@ -1095,7 +1095,7 @@ contained_sprite = TRUE icon_supported_species_tags = list("ipc", "skr", "taj", "una", "vau", "vaw") refittable_species = list(BODYTYPE_HUMAN, BODYTYPE_IPC, BODYTYPE_TAJARA, BODYTYPE_UNATHI, BODYTYPE_SKRELL, BODYTYPE_VAURCA) - brightness_on = 6 + light_range = 6 siemens_coefficient = 0.35 /obj/item/clothing/head/helmet/space/void/sci/assunzione diff --git a/code/modules/clothing/spacesuits/void/station.dm b/code/modules/clothing/spacesuits/void/station.dm index 0fbf63a5adc..adc934c1212 100644 --- a/code/modules/clothing/spacesuits/void/station.dm +++ b/code/modules/clothing/spacesuits/void/station.dm @@ -24,7 +24,7 @@ max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE + 2500 max_pressure_protection = ENG_VOIDSUIT_MAX_PRESSURE light_overlay = "helmet_light_dual_low" - brightness_on = 6 + light_range = 6 /obj/item/clothing/suit/space/void/engineering name = "engineering voidsuit" @@ -74,7 +74,7 @@ RAD = ARMOR_RAD_MINOR ) light_overlay = "merc_voidsuit_lights" - brightness_on = 6 + light_range = 6 /obj/item/clothing/suit/space/void/mining name = "mining voidsuit" @@ -120,7 +120,7 @@ RAD = ARMOR_RAD_SMALL ) light_overlay = "helmet_light_dual_low" - brightness_on = 6 + light_range = 6 refittable_species = list(BODYTYPE_HUMAN, BODYTYPE_TAJARA, BODYTYPE_IPC, BODYTYPE_UNATHI, BODYTYPE_SKRELL) /obj/item/clothing/suit/space/void/medical @@ -167,7 +167,7 @@ RAD = ARMOR_RAD_MINOR ) light_overlay = "helmet_light_dual_low" - brightness_on = 6 + light_range = 6 refittable_species = list(BODYTYPE_HUMAN, BODYTYPE_TAJARA, BODYTYPE_IPC, BODYTYPE_UNATHI, BODYTYPE_SKRELL) /obj/item/clothing/suit/space/void/security @@ -217,7 +217,7 @@ max_heat_protection_temperature = FIRE_HELMET_MAX_HEAT_PROTECTION_TEMPERATURE + 10000 // It is a suit designed for fire, enclosed max_pressure_protection = FIRESUIT_MAX_PRESSURE light_overlay = "helmet_light_dual_low" - brightness_on = 6 + light_range = 6 refittable_species = list(BODYTYPE_HUMAN, BODYTYPE_TAJARA, BODYTYPE_IPC, BODYTYPE_UNATHI, BODYTYPE_SKRELL, BODYTYPE_VAURCA) /obj/item/clothing/suit/space/void/atmos diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index f0fbfd31754..b817df8296b 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -217,6 +217,10 @@ QDEL_NULL(pockets) //Tactical armor has internal holster instead of pockets, so we null this out ClearOverlays() // Remove the holster's overlay. +/obj/item/clothing/suit/armor/tactical/Destroy() + QDEL_NULL(holster) + return ..() + /obj/item/clothing/suit/armor/tactical/attackby(obj/item/attacking_item, mob/user) ..() holster.attackby(attacking_item, user) diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm index 0cda0fd85d6..5fa0a2ded08 100644 --- a/code/modules/clothing/under/accessories/accessory.dm +++ b/code/modules/clothing/under/accessories/accessory.dm @@ -11,6 +11,8 @@ BODYTYPE_VAURCA_BULWARK = 'icons/mob/species/bulwark/accessories.dmi' ) + light_system = MOVABLE_LIGHT + var/slot = ACCESSORY_SLOT_GENERIC /// Determines how accessories will layer over eachother, with lower being beneath everything, and upper above @@ -120,13 +122,6 @@ /obj/item/clothing/accessory/proc/on_clothing_change(var/mob/user) update_light() -/obj/item/clothing/accessory/get_light_atom() - if(isclothing(loc)) - if(ismob(loc.loc)) - return loc.loc - return loc - return ..() - //default attackby behaviour /obj/item/clothing/accessory/attackby(obj/item/attacking_item, mob/user) ..() @@ -1412,14 +1407,15 @@ /obj/item/clothing/accessory/led_collar/Initialize() . = ..() color = pick("#00FFFF", "#FF0000", "#FF00FF", "#FF6600", "#CC00CC") - set_light(MINIMUM_USEFUL_LIGHT_RANGE, 1.2, color) + set_light_range_power_color(MINIMUM_USEFUL_LIGHT_RANGE, 1.2, color) + set_light_on(TRUE) /obj/item/clothing/accessory/led_collar/attack_self(mob/user) . = ..() var/new_color = input(user, "Select the color of \the [src]", "LED Collar Color Selection", color) as null|color if(new_color) color = new_color - set_light(MINIMUM_USEFUL_LIGHT_RANGE, 1.2, color) + set_light_range_power_color(MINIMUM_USEFUL_LIGHT_RANGE, 1.2, color) /obj/item/clothing/accessory/led_collar/get_accessory_mob_overlay(var/mob/living/carbon/human/H, var/force = FALSE) var/image/I = ..() diff --git a/code/modules/detectivework/tools/uvlight.dm b/code/modules/detectivework/tools/uvlight.dm index 2136bca6355..fa426bb7d39 100644 --- a/code/modules/detectivework/tools/uvlight.dm +++ b/code/modules/detectivework/tools/uvlight.dm @@ -11,7 +11,6 @@ var/list/scanned = list() var/list/stored_alpha = list() var/list/reset_objects = list() - uv_intensity = 255 var/range = 3 var/on = 0 var/step_alpha = 50 diff --git a/code/modules/heavy_vehicle/components/head.dm b/code/modules/heavy_vehicle/components/head.dm index 6b7ac4aa03d..9196023465b 100644 --- a/code/modules/heavy_vehicle/components/head.dm +++ b/code/modules/heavy_vehicle/components/head.dm @@ -6,6 +6,7 @@ gender = NEUTER var/vision_flags = 0 + var/lighting_alpha = LIGHTING_PLANE_ALPHA_VISIBLE var/see_invisible = 0 var/obj/item/robot_parts/robot_component/radio/radio var/obj/item/robot_parts/robot_component/camera/camera @@ -79,6 +80,12 @@ invisible = see_invisible return invisible +/obj/item/mech_component/sensors/proc/get_lighting_alpha(powered) + var/l_alpha = 0 + if((total_damage <= 0.8 * max_damage) && active_sensors && powered) + l_alpha = lighting_alpha + return l_alpha + /obj/item/mech_component/sensors/ready_to_install() return (radio && camera) diff --git a/code/modules/heavy_vehicle/equipment/utility.dm b/code/modules/heavy_vehicle/equipment/utility.dm index 48399168b9c..9473125aa97 100644 --- a/code/modules/heavy_vehicle/equipment/utility.dm +++ b/code/modules/heavy_vehicle/equipment/utility.dm @@ -221,14 +221,15 @@ mech_layer = MECH_GEAR_LAYER var/on = 0 - var/brightness_on = 12 //can't remember what the maxed out value is + light_range = 8 light_color = LIGHT_COLOR_TUNGSTEN - light_wedge = LIGHT_WIDE origin_tech = list(TECH_MATERIAL = 1, TECH_ENGINEERING = 1) module_hints = list( "Alt Click(Icon): Light up a large area in front of the mech.", ) + light_system = MOVABLE_LIGHT + /obj/item/mecha_equipment/light/attack_self(var/mob/user) . = ..() if(.) @@ -250,10 +251,10 @@ /obj/item/mecha_equipment/light/update_icon() if(on) icon_state = "[initial(icon_state)]-on" - set_light(brightness_on, 1) else icon_state = "[initial(icon_state)]" - set_light(0) + set_light_on(on) + /obj/item/mecha_equipment/light/uninstalled() on = FALSE diff --git a/code/modules/heavy_vehicle/mech_life.dm b/code/modules/heavy_vehicle/mech_life.dm index 7e012dcfffc..9c23c83ed98 100644 --- a/code/modules/heavy_vehicle/mech_life.dm +++ b/code/modules/heavy_vehicle/mech_life.dm @@ -168,6 +168,7 @@ if(head) sight = head.get_sight(powered) see_invisible = head.get_invisible(powered) + lighting_alpha = head.get_lighting_alpha(power_profiled_time) if(!hatch_closed || (body && (body.pilot_coverage < 100 || body.transparent_cabin))) sight &= ~BLIND diff --git a/code/modules/heavy_vehicle/premade/combat.dm b/code/modules/heavy_vehicle/premade/combat.dm index 1cbea5729e6..2e948dc65aa 100644 --- a/code/modules/heavy_vehicle/premade/combat.dm +++ b/code/modules/heavy_vehicle/premade/combat.dm @@ -43,7 +43,7 @@ max_damage = 50 power_use = 50000 vision_flags = SEE_MOBS - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE /obj/item/mech_component/sensors/combat/prebuild() ..() diff --git a/code/modules/heavy_vehicle/premade/light.dm b/code/modules/heavy_vehicle/premade/light.dm index 8c1fd9c619a..ef42515577b 100644 --- a/code/modules/heavy_vehicle/premade/light.dm +++ b/code/modules/heavy_vehicle/premade/light.dm @@ -42,7 +42,7 @@ power_use = 12000 desc = "A series of high resolution optical sensors." vision_flags = SEE_TURFS - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE /obj/item/mech_component/sensors/light/prebuild() ..() diff --git a/code/modules/heavy_vehicle/premade/powerloader.dm b/code/modules/heavy_vehicle/premade/powerloader.dm index 89c46a621f3..bd788417190 100644 --- a/code/modules/heavy_vehicle/premade/powerloader.dm +++ b/code/modules/heavy_vehicle/premade/powerloader.dm @@ -160,7 +160,7 @@ gender = PLURAL power_use = 50000 vision_flags = SEE_MOBS - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE /obj/item/mech_component/sensors/combatripley/prebuild() ..() diff --git a/code/modules/heavy_vehicle/premade/pra.dm b/code/modules/heavy_vehicle/premade/pra.dm index 09758da491c..bffc8271987 100644 --- a/code/modules/heavy_vehicle/premade/pra.dm +++ b/code/modules/heavy_vehicle/premade/pra.dm @@ -42,7 +42,7 @@ max_damage = 50 power_use = 50000 vision_flags = SEE_MOBS - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE /obj/item/mech_component/sensors/pra_egg/prebuild() ..() diff --git a/code/modules/holodeck/HolodeckObjects.dm b/code/modules/holodeck/HolodeckObjects.dm index 72d522aa424..07fa8e31bab 100644 --- a/code/modules/holodeck/HolodeckObjects.dm +++ b/code/modules/holodeck/HolodeckObjects.dm @@ -91,7 +91,6 @@ icon_state = "0" footstep_sound = null plane = SPACE_PLANE - dynamic_lighting = 0 /turf/simulated/floor/holofloor/space/Initialize() . = ..() diff --git a/code/modules/hydroponics/seed.dm b/code/modules/hydroponics/seed.dm index 011a05ea7f0..91e96979c10 100644 --- a/code/modules/hydroponics/seed.dm +++ b/code/modules/hydroponics/seed.dm @@ -338,10 +338,7 @@ // Handle light requirements. if(!light_supplied) - if (TURF_IS_DYNAMICALLY_LIT(current_turf)) - light_supplied = current_turf.get_lumcount(0, 3) * 10 - else - light_supplied = 5 + light_supplied = current_turf.get_lumcount(0, 3) * 10 if(light_supplied) if(check_light_tolerances(light_supplied)) @@ -382,10 +379,7 @@ // Handle light requirements. if(!light_supplied) - if (TURF_IS_DYNAMICALLY_LIT(current_turf)) - light_supplied = current_turf.get_lumcount(0, 3) * 10 - else - light_supplied = 5 + light_supplied = current_turf.get_lumcount(0, 3) * 10 // Are we within the preference zone for temperature? If so, add to the chance of growth. if(check_heat_preferences(environment)) diff --git a/code/modules/hydroponics/trays/tray.dm b/code/modules/hydroponics/trays/tray.dm index 110d1e89ad0..9e00381b3ac 100644 --- a/code/modules/hydroponics/trays/tray.dm +++ b/code/modules/hydroponics/trays/tray.dm @@ -758,10 +758,7 @@ if(closed_system && mechanical) light_available = tray_light else - if(TURF_IS_DYNAMICALLY_LIT(T)) - light_available = T.get_lumcount(0, 3) * 10 - else - light_available = 5 + light_available = T.get_lumcount(0, 3) * 5 // If it's a mechanical tray, provide precise information to the user about the plant's conditions. if(mechanical) diff --git a/code/modules/hydroponics/trays/tray_process.dm b/code/modules/hydroponics/trays/tray_process.dm index 76e9236d09c..bc5c00ecb6b 100644 --- a/code/modules/hydroponics/trays/tray_process.dm +++ b/code/modules/hydroponics/trays/tray_process.dm @@ -104,10 +104,7 @@ // Handle light requirements for upcoming logic. var/light_supplied if(!closed_system) - if (TURF_IS_DYNAMICALLY_LIT(T)) - light_supplied = T.get_lumcount(0, 3) * 10 - else - light_supplied = 5 + light_supplied = T.get_lumcount(0, 3) * 10 else light_supplied = tray_light diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm index 903b0ffacbd..74bb3f85275 100644 --- a/code/modules/integrated_electronics/core/assemblies.dm +++ b/code/modules/integrated_electronics/core/assemblies.dm @@ -5,6 +5,8 @@ icon = 'icons/obj/assemblies/electronic_setups.dmi' icon_state = "setup_small" item_flags = ITEM_FLAG_NO_BLUDGEON + light_system = MOVABLE_LIGHT + var/max_components = IC_COMPONENTS_BASE var/max_complexity = IC_COMPLEXITY_BASE var/opened = 0 diff --git a/code/modules/integrated_electronics/subtypes/output.dm b/code/modules/integrated_electronics/subtypes/output.dm index 5ec321e5671..ab71ac6fbad 100644 --- a/code/modules/integrated_electronics/subtypes/output.dm +++ b/code/modules/integrated_electronics/subtypes/output.dm @@ -69,7 +69,8 @@ var/light_brightness = 3 var/light_rgb = COLOR_WHITE power_draw_idle = 0 // Adjusted based on brightness. - light_wedge = LIGHT_WIDE + + light_system = MOVABLE_LIGHT /obj/item/integrated_circuit/output/light/do_work() light_toggled = !light_toggled @@ -77,12 +78,13 @@ /obj/item/integrated_circuit/output/light/proc/update_lighting() if(assembly) - var/atom/atom_holder = assembly.get_assembly_holder() - if(light_toggled) - atom_holder.set_light(l_range = light_brightness, l_power = light_brightness, l_color = light_rgb, uv = 0, angle = light_wedge) - else - atom_holder.set_light(0) - power_draw_idle = light_toggled ? light_brightness * 2 : 0 + var/atom/movable/atom_holder = assembly.get_assembly_holder() + if(istype(atom_holder)) + if(light_toggled) + atom_holder.set_light_on(FALSE) //make sure the atom holder has movable_light set + else + atom_holder.set_light_on(TRUE) + power_draw_idle = light_toggled ? light_brightness * 2 : 0 /obj/item/integrated_circuit/output/light/disconnect_all() ..() @@ -98,6 +100,10 @@ light_rgb = new_color light_brightness = brightness + var/atom/movable/atom_holder = assembly.get_assembly_holder() + if(istype(atom_holder)) + atom_holder.set_light_range_power_color(light_brightness, light_brightness, light_rgb) + ..() /obj/item/integrated_circuit/output/light/power_fail() // Turns off the flashlight if there's no power left. diff --git a/code/modules/lighting/_LIGHTING_README.MD b/code/modules/lighting/_LIGHTING_README.MD new file mode 100644 index 00000000000..a7e7166e6b8 --- /dev/null +++ b/code/modules/lighting/_LIGHTING_README.MD @@ -0,0 +1,75 @@ +# The Lighting Systems +## Introduction + +Hello reader, and welcome to the coders guide to lighting. TGMC uses three different lighting systems: Static Lighting, Movable Lighting and Hybrid Lighting +These all have their pros and cons, and are explained later in this file. +For now we will look at the frameworks we have pertaining to lighting. + +```dm +//Our vars: +//The "intensity" of our light to determine how much it actually lights up +var/light_power +// The range of our light, aka how many turfs are actually lit up +var/light_range +//the color of our light +var/light_color +///whether the light is actually on or not, use /atom/proc/turn_on() to set this +var/light_on +``` + +Additionally, we have SSlighting, the lighting subsystem which handles lighting updates for Static and Hybrid lighting. +This subsystems processes enqueued lighting object, corner and source updates, as well as taking enqueued hybrid lighting updates. +You shouldnt really be touching this as it primarily just stops too many updates from happening at once. + +## The Lighting systems +As mentioned previously,lighting is split into three seperate systems who's functionality, benefits and downsides will be discussed below + +Seperate from these systems we also have a system to update the base lighting of an area, we do this using "Base lighting" + +```dm +/area/proc/set_base_lighting(new_base_lighting_color = -1, new_alpha = -1) +``` +Use this to set areas as required to luminosity. This is expensive-ish to apply/update but is very cheap to maintain. It also enables area specific light intensity and color changes. + +### Static Lighting +Static lighting consists of a single, static_lighting_source light source which gets all turfs in view, then tells their /datum/static_lighting_objects to update themselves. These lighting objects manage two things: lighting corners, and an underlay. The lighting corners hold data for the edges of turfs next to darkness to allow a smooth transition from dark to light, and the actual lighting is done using an underlay which is layered over the darkness layer in order to create light. Color is changed using a color matrix. +The advantage of this system, is that it is cheap, as long as it does not need to actively update opacity changes or a moving light target. +This system can also be used for as large lights as you want. +The disadvantage however is that updating this type of light, such as when it moves is relatively expensive, and colors are not always the prettiest. Additionally, lighting corners are known to be a large source of RAM usage and thus you should only load lighting objects in areas hat it is needed using /area/var/static_lighting. +Thus this should be your go to choice for large, frequent, immobile lights. + +To update lights using this system use +```dm +/atom/proc/set_light(l_range, l_power, l_color, mask_type) +``` +Note that the use of mask_type only is applicable to Hybrid lights. + +### Movable lighting +Movable lighting is extremely simple and cheap as it requires no updates. This is done by replacing a large amount of updating objects with one single, large vis_contents overlay, which we apply and manage through a component (/datum/component/overlay_lighting). This means that it will move smoothly when the owner moves and requires no updating, but also means that rendering issues might occur, where the overlay will seemingly "pop in" to existence as it suddenly renders when someone walks around a corner or into the 1/2-tile render buffer around the edges of the viewport. +Thus this should be your go to ideal cheap light for small and mobile lights (NOT turfs or anchored objects!). This light also typically has more saturated colors than static lighting. + +Note that this lighting type utilises special update procs from the other two lighting types, specifically +```dm +//update light variables +/atom/movable/proc/set_light_range_power_color(range, power, color) + set_light_range(range) + set_light_power(power) + set_light_color(color) + +//turn the light on and off without changing any variables +/atom/proc/set_light_on(new_value) +``` + +### Hybrid lighting +Hybrid lighting is, as the name implies, a hybrid of the two above systems. It still needs to update when the owner moves, or something in view changes like static lighting does, but uses overlays to hide areas using shadows. As a result, this has similar if not better performance to Static lighting, but has a higher drain on player GPU and thus you should ideally avoid lagging players that play on terrible computers too much. This means that you should use this lighting in decently sized lights that act as centerpieces for a scene (i.e. a fire, supermatter, etc.) since it combines the best of static and movable lighting at a clientside performance cost. +As a rule of thumb most items will be fine using this except for light fixtures, as lag mostly seems to crop up from multiple large lighting sources. +Using lights for turf based fires and large floodlights is thus fine, but be careful with frquesnt use. +It functions by fetching all nearby blockers, then calculating triangles behind these blocked areas which it then masks with overlays. +These overlays then render as an alpha mask blocking the light from appearing. +This system also supports non-round lights, such as light cones, rotating lights, and shimmering lights through the use of +```dm +var/mask_type +``` +which determines which type of icon we are going to use as the base when drawing this lights (/atom/movable/lighting_mask/flicker for shimmering lights as an example). + +Actual updates however are handled through the same procs as Static lighting, and the mask_type argument on set_light() allows you to change the mask type that is being used on the fly. diff --git a/code/modules/lighting/__lighting_docs.dm b/code/modules/lighting/__lighting_docs.dm deleted file mode 100644 index fcd2e63d51a..00000000000 --- a/code/modules/lighting/__lighting_docs.dm +++ /dev/null @@ -1,56 +0,0 @@ -/* - -- Aurora directional lighting system, based off of /vg/lights. -- - - Documentation is present in most of the code files. - lighting_atom.dm -> procs/vars for tracking/managing lights attached to objects. - lighting_turf.dm -> procs/vars for managing lighting overlays bound to turfs, tracking lights affecting said turf, and getting information about the turf's light level. - lighting_corner.dm -> contains code for tracking per-corner lighting data. - lighting_source.dm -> contains actual light emitter datum & core lighting calculations. Directional lights and Z-lights are implemented here. - lighting_source_novis.dm -> Same as lighting_source.dm, but does not take visibility into account - used for sun objects. - lighting_profiler.dm -> contains code used for the diagnostic lighting profiler (currently disabled). - lighting_area.dm -> contains area vars/procs for managing an area's dynamic lighting state. - lighting_verbs.dm -> contains verbs for debugging lighting. - -*/ - -/* - Useful procs when using lights: - -/atom/proc/set_light(range, power, color, uv_power, angle, no_update) - desc: Sets an atom's light emission. `set_light(FALSE)` will disable the light. - args: - range -> the range of the light. 1.4 is the lowest possible value here. - power -> the power (intensity) of the light. Generally should be 1 or lower. Optional. - color -> The hex string (#FFFFFF) color of the light. Optional. - uv_power -> The UV power of this light. Must be between 0 and 255. Optional. - angle -> The angle of the cone that the light should shine at (directional lighting). Behavior of lights over 180 degrees is undefined. Best to stick to using the LIGHT_ defines for this. Optional. - no_update -> if TRUE, the light will not be updated. Useful for when making several of these calls to the same object. Optional. - -/atom/proc/set_opacity(new_opacity) - desc: Sets an atom's opacity, updating affecting lights' visibility. Returns TRUE if opacity changed, FALSE otherwise. - args: - new_opacity -> the new opacity value. - -/turf/proc/reconsider_lights() - desc: Cause all lights affecting this turf to recalculate visibility. - args: none - -/turf/proc/force_update_lights() - desc: Force all lights affecting this turf to regenerate. Slow, use reconsider_lights instead when possible. - args: none - -/turf/proc/get_avg_color() - desc: Gets the average color of this tile as a hexadecimal color string. Used by cameras. - -/turf/proc/get_lumcount(minlum = 0, maxlum = 1) - desc: Gets the brightness of this tile. If not dynamically lit, always returns 0.5, otherwise returns the average brightness of all 4 corners, scaled between minlum and maxlum. - args: - minlum -> the low-bound of the scalar. - maxlum -> the high-bound of the scalar. - -/turf/proc/get_uv_lumcount(minlum = 0, maxlum = 1) - desc: Same as above, but only considers UV light. - args: - minlum -> the low-bound of the scalar. - maxlum -> the high-bound of the scalar. -*/ diff --git a/code/modules/lighting/_lighting_defs.dm b/code/modules/lighting/_lighting_defs.dm deleted file mode 100644 index c4cb90e3236..00000000000 --- a/code/modules/lighting/_lighting_defs.dm +++ /dev/null @@ -1,58 +0,0 @@ -// This is the define used to calculate falloff. -#define LUM_FALLOFF(Cx,Cy,Tx,Ty,HEIGHT) (1 - CLAMP01(sqrt(((Cx) - (Tx)) ** 2 + ((Cy) - (Ty)) ** 2 + HEIGHT) / max(1, actual_range))) - -// Macro that applies light to a new corner. -// It is a macro in the interest of speed, yet not having to copy paste it. -// If you're wondering what's with the backslashes, the backslashes cause BYOND to not automatically end the line. -// As such this all gets counted as a single line. -// The braces and semicolons are there to be able to do this on a single line. - -#define APPLY_CORNER_SIMPLE(C) \ - . = light_power; \ - var/OLD = effect_str[C]; \ - effect_str[C] = .; \ - C.update_lumcount \ - ( \ - (. * lum_r) - (OLD * applied_lum_r), \ - (. * lum_g) - (OLD * applied_lum_g), \ - (. * lum_b) - (OLD * applied_lum_b), \ - (. * lum_u) - (OLD * applied_lum_u), \ - FALSE \ - ); - -#define APPLY_CORNER(C,now,Tx,Ty,hdiff) \ - . = LUM_FALLOFF(C.x, C.y, Tx, Ty, hdiff) * light_power; \ - var/OLD = effect_str[C]; \ - effect_str[C] = .; \ - C.update_lumcount \ - ( \ - (. * lum_r) - (OLD * applied_lum_r), \ - (. * lum_g) - (OLD * applied_lum_g), \ - (. * lum_b) - (OLD * applied_lum_b), \ - (. * lum_u) - (OLD * applied_lum_u), \ - now \ - ); - -// I don't need to explain what this does, do I? -#define REMOVE_CORNER(C,now) \ - . = -effect_str[C]; \ - C.update_lumcount \ - ( \ - . * applied_lum_r, \ - . * applied_lum_g, \ - . * applied_lum_b, \ - . * applied_lum_u, \ - now \ - ); - -// Converts two Z levels into a height value for LUM_FALLOFF or HEIGHT_FALLOFF. -#define CALCULATE_CORNER_HEIGHT(ZA,ZB) (((max(ZA,ZB) - min(ZA,ZB)) + 1) * LIGHTING_HEIGHT * LIGHTING_Z_FACTOR) - -#define APPLY_CORNER_BY_HEIGHT(now) \ - if (C.z != Sz) { \ - corner_height = CALCULATE_CORNER_HEIGHT(C.z, Sz); \ - } \ - else { \ - corner_height = LIGHTING_HEIGHT; \ - } \ - APPLY_CORNER(C, now, Sx, Sy, corner_height); diff --git a/code/modules/lighting/emissive_blocker.dm b/code/modules/lighting/emissive_blocker.dm new file mode 100644 index 00000000000..218847852cf --- /dev/null +++ b/code/modules/lighting/emissive_blocker.dm @@ -0,0 +1,34 @@ +/** + * Internal atom that copies an appearance on to the blocker plane + * + * Copies an appearance vis render_target and render_source on to the emissive blocking plane. + * This means that the atom in question will block any emissive sprites. + * This should only be used internally. If you are directly creating more of these, you're + * almost guaranteed to be doing something wrong. + */ +/atom/movable/emissive_blocker + name = "emissive blocker" + plane = EMISSIVE_PLANE + layer = FLOAT_LAYER + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + //Why? + //render_targets copy the transform of the target as well, but vis_contents also applies the transform + //to what's in it. Applying RESET_TRANSFORM here makes vis_contents not apply the transform. + //Since only render_target handles transform we don't get any applied transform "stacking" + appearance_flags = EMISSIVE_APPEARANCE_FLAGS + +/atom/movable/emissive_blocker/Initialize(mapload, source) + . = ..() + verbs.Cut() //Cargo culting from lighting object, this maybe affects memory usage? + + render_source = source + color = GLOB.em_block_color + + +/atom/movable/emissive_blocker/ex_act(severity) + return FALSE + +//Prevents people from moving these after creation, because they shouldn't be. +/atom/movable/emissive_blocker/forceMove(atom/destination, no_tp=FALSE, harderforce = FALSE) + if(harderforce) + return ..() diff --git a/code/modules/lighting/lighting_area.dm b/code/modules/lighting/lighting_area.dm index 78328caf474..2b6a1409f38 100644 --- a/code/modules/lighting/lighting_area.dm +++ b/code/modules/lighting/lighting_area.dm @@ -1,23 +1,59 @@ /area - luminosity = TRUE - var/dynamic_lighting = TRUE + luminosity = 1 + ///The mutable appearance we underlay to show light + var/mutable_appearance/lighting_effect = null + ///Whether this area has a currently active base lighting, bool + var/area_has_base_lighting = FALSE + ///alpha 0-255 of lighting_effect and thus baselighting intensity + var/base_lighting_alpha = 0 + ///The colour of the light acting on this area + var/base_lighting_color = COLOR_WHITE -/area/proc/set_dynamic_lighting(var/new_dynamic_lighting = TRUE) - //L_PROF(src, "area_sdl") - - if (new_dynamic_lighting == dynamic_lighting) +/area/proc/set_base_lighting(new_base_lighting_color = -1, new_alpha = -1) + if(base_lighting_alpha == new_alpha && base_lighting_color == new_base_lighting_color) return FALSE - - dynamic_lighting = new_dynamic_lighting - - if (new_dynamic_lighting) - for (var/turf/T in src) - if (T.dynamic_lighting) - T.lighting_build_overlay() - - else - for (var/turf/T in src) - if (T.lighting_overlay) - T.lighting_clear_overlay() - + if(new_alpha != -1) + base_lighting_alpha = new_alpha + if(new_base_lighting_color != -1) + base_lighting_color = new_base_lighting_color + update_base_lighting() return TRUE + +/area/vv_edit_var(var_name, var_value) + switch(var_name) + if("base_lighting_color") + set_base_lighting(new_base_lighting_color = var_value) + return TRUE + if("base_lighting_alpha") + set_base_lighting(new_alpha = var_value) + return TRUE + return ..() + +/area/proc/update_base_lighting() + if(!area_has_base_lighting && (!base_lighting_alpha || !base_lighting_color)) + return + + if(!area_has_base_lighting) + add_base_lighting() + return + remove_base_lighting() + if(base_lighting_alpha && base_lighting_color) + add_base_lighting() + +/area/proc/remove_base_lighting() + for(var/turf/T in src) + T.overlays -= lighting_effect + QDEL_NULL(lighting_effect) + area_has_base_lighting = FALSE + +/area/proc/add_base_lighting() + lighting_effect = mutable_appearance('icons/effects/alphacolors.dmi', "white") + lighting_effect.plane = LIGHTING_PLANE + lighting_effect.layer = LIGHTING_PRIMARY_LAYER + lighting_effect.blend_mode = BLEND_ADD + lighting_effect.alpha = base_lighting_alpha + lighting_effect.color = base_lighting_color + for(var/turf/T in src) + T.overlays += lighting_effect + T.luminosity = 1 + area_has_base_lighting = TRUE diff --git a/code/modules/lighting/lighting_atom.dm b/code/modules/lighting/lighting_atom.dm index 092a2534ad4..a544dd38209 100644 --- a/code/modules/lighting/lighting_atom.dm +++ b/code/modules/lighting/lighting_atom.dm @@ -1,123 +1,185 @@ -/atom - var/light_power = 1 // Intensity of the light. - var/light_range = 0 // Range in tiles of the light. - var/light_color // Hexadecimal RGB string representing the colour of the light. - var/uv_intensity = 255 // How much UV light is being emitted by this object. Valid range: 0-255. - var/light_wedge // The angle that the light's emission should be restricted to. null for omnidirectional. -#ifdef ENABLE_SUNLIGHT - var/light_novis // If TRUE, visibility checks will be skipped when calculating this light. -#endif - - var/tmp/datum/light_source/light // Our light source. Don't fuck with this directly unless you have a good reason! - var/tmp/list/light_sources // Any light sources that are "inside" of us, for example, if src here was a mob that's carrying a flashlight, that flashlight's light source would be part of this list. - -// Nonesensical value for l_color default, so we can detect if it gets set to null. -#define NONSENSICAL_VALUE -99999 // The proc you should always use to set the light of this atom. -/atom/proc/set_light(var/l_range, var/l_power, var/l_color = NONSENSICAL_VALUE, var/uv = NONSENSICAL_VALUE, var/angle = NONSENSICAL_VALUE, var/no_update = FALSE) - //L_PROF(src, "atom_setlight") - . = FALSE // don't update if nothing changed - +// Nonesensical value for l_color default, so we can detect if it gets set to null. +#define NONSENSICAL_VALUE -99999 +/atom/proc/set_light(l_range, l_power, l_color = NONSENSICAL_VALUE, mask_type = null) if(l_range > 0 && l_range < MINIMUM_USEFUL_LIGHT_RANGE) l_range = MINIMUM_USEFUL_LIGHT_RANGE //Brings the range up to 1.4, which is just barely brighter than the soft lighting that surrounds players. - . = TRUE - if (l_power != null && light_power != l_power) + + if(l_power != null && l_power != light_power) light_power = l_power . = TRUE - if (l_range != null && light_range != l_range) + + if(l_range != null && l_range != light_range) light_range = l_range + light_on = (light_range>0) ? TRUE : FALSE . = TRUE - if (l_color != NONSENSICAL_VALUE && light_color != l_color) + if(l_color != NONSENSICAL_VALUE && l_color != light_color) light_color = l_color . = TRUE - if (uv != NONSENSICAL_VALUE && uv_intensity != uv) - set_uv(uv, no_update = TRUE) + if(mask_type != null && mask_type != light_mask_type) + light_mask_type = mask_type . = TRUE - if (angle != NONSENSICAL_VALUE && light_wedge != angle) - light_wedge = angle - . = TRUE - - if(!no_update && .) + if(.) update_light() -#undef NONSENSICAL_VALUE + SEND_SIGNAL(src, COMSIG_ATOM_SET_LIGHT, l_range, l_power, l_color) -/atom/proc/set_uv(var/intensity, var/no_update) - //L_PROF(src, "atom_setuv") - if (intensity < 0 || intensity > 255) - intensity = min(max(intensity, 255), 0) - uv_intensity = intensity +/atom/proc/fade_light(new_colour, time) + light_color = new_colour + if(light?.our_mask) + animate(light.our_mask, color = new_colour, time = time) - if (no_update) - return - - update_light() - -// Will update the light (duh). -// Creates or destroys it if needed, makes it update values, makes sure it's got the correct source turf... +/// Will update the light (duh).Creates or destroys it if needed, makes it update values, makes sure it's got the correct source turf... /atom/proc/update_light() - SHOULD_NOT_SLEEP(TRUE) + set waitfor = FALSE - if (QDELING(src)) + if(QDELETED(src)) + return + if(light_system == STATIC_LIGHT) + static_update_light() return - //L_PROF(src, "atom_update") - - if (!light_power || !light_range) // We won't emit light anyways, destroy the light source. + if((!light_power || !light_range) && light) // We won't emit light anyways, destroy the light source. QDEL_NULL(light) - else - . = get_light_atom() - -#ifdef ENABLE_SUNLIGHT - if (light) // Update the light or create it if it does not exist. - light.update(.) - else if (light_novis) - light = new/datum/light_source/sunlight(src, .) - else - light = new/datum/light_source(src, .) -#else - if (light) - light.update(.) - else - light = new /datum/light_source(src, .) -#endif - -/atom/proc/get_light_atom() - if (!istype(loc, /atom/movable)) // We choose what atom should be the top atom of the light here. - return src - return loc + return + if(light && light_mask_type && (light_mask_type != light.mask_type)) + QDEL_NULL(light) + if(!light) // Update the light or create it if it does not exist. + light = new /datum/dynamic_light_source(src, light_mask_type) + return + light.set_light(light_range, light_power, light_color) + light.update_position() -// Should always be used to change the opacity of an atom. -// It notifies (potentially) affected light sources so they can update (if needed). -/atom/proc/set_opacity(var/new_opacity) - if (new_opacity == opacity) - return FALSE - - //L_PROF(src, "atom_setopacity") +/** + * Updates the atom's opacity value. + * + * This exists to act as a hook for associated behavior. + * It notifies (potentially) affected light sources so they can update (if needed). + */ +/atom/proc/set_opacity(new_opacity) + if(new_opacity == opacity) + return + SEND_SIGNAL(src, COMSIG_ATOM_SET_OPACITY, new_opacity) + . = opacity opacity = new_opacity - var/turf/T = loc - if (!isturf(T)) - return FALSE - if (new_opacity == TRUE) - T.has_opaque_atom = TRUE - T.reconsider_lights() -#ifdef AO_USE_LIGHTING_OPACITY - T.regenerate_ao() -#endif +/atom/movable/set_opacity(new_opacity) + . = ..() + if(isnull(.) || !isturf(loc)) + return + + if(opacity) + AddElement(/datum/element/light_blocking) else - var/old_has_opaque_atom = T.has_opaque_atom - T.recalc_atom_opacity() - if (old_has_opaque_atom != T.has_opaque_atom) - T.reconsider_lights() + RemoveElement(/datum/element/light_blocking) - updateVisibility(src, FALSE) - return TRUE +/turf/set_opacity(new_opacity) + . = ..() + if(isnull(.)) + return + recalculate_directional_opacity() + +/atom/vv_edit_var(var_name, var_value) + switch(var_name) + if("light_range") + if(light_system != MOVABLE_LIGHT) + set_light(l_range = var_value) + else + set_light_range(var_value) + datum_flags |= DF_VAR_EDITED + return TRUE + + if("light_power") + if(light_system != MOVABLE_LIGHT) + set_light(l_power = var_value) + else + set_light_power(var_value) + datum_flags |= DF_VAR_EDITED + return TRUE + + if("light_color") + if(light_system != MOVABLE_LIGHT) + set_light(l_color = var_value) + else + set_light_color(var_value) + datum_flags |= DF_VAR_EDITED + return TRUE + return ..() + + +/atom/proc/flash_lighting_fx( + _range = FLASH_LIGHT_RANGE, + _power = FLASH_LIGHT_POWER, + _color = COLOR_WHITE, + _duration = FLASH_LIGHT_DURATION, + _reset_lighting = TRUE, + _flash_times = 1) + new /obj/effect/light_flash(get_turf(src), _range, _power, _color, _duration, _flash_times) + + +/obj/effect/light_flash/Initialize(mapload, _range = FLASH_LIGHT_RANGE, _power = FLASH_LIGHT_POWER, _color = COLOR_WHITE, _duration = FLASH_LIGHT_DURATION, _flash_times = 1) + light_range = _range + light_power = _power + light_color = _color + . = ..() + do_flashes(_flash_times, _duration) + +/obj/effect/light_flash/proc/do_flashes(_flash_times, _duration) + set waitfor = FALSE + for(var/i in 1 to _flash_times) + //Something bad happened + if(!(light?.our_mask)) + break + light.our_mask.alpha = 255 + animate(light.our_mask, time = _duration, easing = SINE_EASING, alpha = 0, flags = ANIMATION_END_NOW) + sleep(_duration) //this is extremely short so it's ok to sleep + qdel(src) + +/atom/proc/set_light_range(new_range) + if(new_range == light_range) + return + SEND_SIGNAL(src, COMSIG_ATOM_SET_LIGHT_RANGE, new_range) + . = light_range + light_range = new_range + + +/atom/proc/set_light_power(new_power) + if(new_power == light_power) + return + SEND_SIGNAL(src, COMSIG_ATOM_SET_LIGHT_POWER, new_power) + . = light_power + light_power = new_power + + +/atom/proc/set_light_color(new_color) + if(new_color == light_color) + return + SEND_SIGNAL(src, COMSIG_ATOM_SET_LIGHT_COLOR, new_color) + . = light_color + light_color = new_color + + +/atom/proc/set_light_on(new_value) + if(new_value == light_on) + return + SEND_SIGNAL(src, COMSIG_ATOM_SET_LIGHT_ON, new_value) + . = light_on + light_on = new_value + + +/// Setter for the light flags of this atom. +/atom/proc/set_light_flags(new_value) + if(new_value == light_flags) + return + SEND_SIGNAL(src, COMSIG_ATOM_SET_LIGHT_FLAGS, new_value) + . = light_flags + light_flags = new_value + diff --git a/code/modules/lighting/lighting_corner.dm b/code/modules/lighting/lighting_corner.dm deleted file mode 100644 index f8fa2082fb5..00000000000 --- a/code/modules/lighting/lighting_corner.dm +++ /dev/null @@ -1,233 +0,0 @@ -/var/datum/lighting_corner/dummy/dummy_lighting_corner = new -// Because we can control each corner of every lighting overlay. -// And corners get shared between multiple turfs (unless you're on the corners of the map, then 1 corner doesn't). -// For the record: these should never ever ever be deleted, even if the turf doesn't have dynamic lighting. - -// This list is what the code that assigns corners listens to, the order in this list is the order in which corners are added to the /turf/corners list. -/var/list/LIGHTING_CORNER_DIAGONAL = list(NORTHEAST, SOUTHEAST, SOUTHWEST, NORTHWEST) - -// This is the reverse of the above - the position in the array is a dir. Update this if the above changes. -var/list/REVERSE_LIGHTING_CORNER_DIAGONAL = list(0, 0, 0, 0, 3, 4, 0, 0, 2, 1) - -/datum/lighting_corner - var/turf/t1 // These are in no particular order. - var/t1i // Our index in this turf's corners list. - var/turf/t2 - var/t2i - var/turf/t3 - var/t3i - var/turf/t4 - var/t4i - - var/list/datum/light_source/affecting // Light sources affecting us. - var/active = FALSE // TRUE if one of our masters has dynamic lighting. - - var/x = 0 - var/y = 0 - var/z = 0 - - var/lum_r = 0 - var/lum_g = 0 - var/lum_b = 0 - var/lum_u = 0 // UV Radiation, not visible. - - var/needs_update = FALSE - - var/cache_r = LIGHTING_SOFT_THRESHOLD - var/cache_g = LIGHTING_SOFT_THRESHOLD - var/cache_b = LIGHTING_SOFT_THRESHOLD - var/cache_mx = 0 - -/datum/lighting_corner/New(turf/new_turf, diagonal) - SSlighting.lighting_corners += src - - t1 = new_turf - z = new_turf.z - t1i = REVERSE_LIGHTING_CORNER_DIAGONAL[diagonal] - - var/vertical = diagonal & ~(diagonal - 1) // The horizontal directions (4 and 8) are bigger than the vertical ones (1 and 2), so we can reliably say the lsb is the horizontal direction. - var/horizontal = diagonal & ~vertical // Now that we know the horizontal one we can get the vertical one. - - x = new_turf.x + (horizontal == EAST ? 0.5 : -0.5) - y = new_turf.y + (vertical == NORTH ? 0.5 : -0.5) - - // My initial plan was to make this loop through a list of all the dirs (horizontal, vertical, diagonal). - // Issue being that the only way I could think of doing it was very messy, slow and honestly overengineered. - // So we'll have this hardcode instead. - var/turf/T - var/i - - // Diagonal one is easy. - T = get_step(new_turf, diagonal) - if (T) // In case we're on the map's border. - if (!T.corners) - T.corners = list(null, null, null, null) - - t2 = T - i = REVERSE_LIGHTING_CORNER_DIAGONAL[diagonal] - t2i = i - T.corners[i] = src - - // Now the horizontal one. - T = get_step(new_turf, horizontal) - if (T) // Ditto. - if (!T.corners) - T.corners = list(null, null, null, null) - - t3 = T - i = REVERSE_LIGHTING_CORNER_DIAGONAL[((T.x > x) ? EAST : WEST) | ((T.y > y) ? NORTH : SOUTH)] // Get the dir based on coordinates. - t3i = i - T.corners[i] = src - - // And finally the vertical one. - T = get_step(new_turf, vertical) - if (T) - if (!T.corners) - T.corners = list(null, null, null, null) - - t4 = T - i = REVERSE_LIGHTING_CORNER_DIAGONAL[((T.x > x) ? EAST : WEST) | ((T.y > y) ? NORTH : SOUTH)] // Get the dir based on coordinates. - t4i = i - T.corners[i] = src - - update_active() - -#define OVERLAY_PRESENT(T) (T && T.lighting_overlay) - -/datum/lighting_corner/proc/update_active() - active = FALSE - - if (OVERLAY_PRESENT(t1) || OVERLAY_PRESENT(t2) || OVERLAY_PRESENT(t3) || OVERLAY_PRESENT(t4)) - active = TRUE - -#undef OVERLAY_PRESENT - -// God that was a mess, now to do the rest of the corner code! Hooray! -/datum/lighting_corner/proc/update_lumcount(delta_r, delta_g, delta_b, delta_u, now = FALSE) - if (!(delta_r + delta_g + delta_b)) // Don't check u since the overlay doesn't care about it. - return - - lum_r += delta_r - lum_g += delta_g - lum_b += delta_b - lum_u += delta_u - - // This needs to be down here instead of the above if so the lum values are properly updated. - if (needs_update) - return - - if (!now) - needs_update = TRUE - SSlighting.corner_queue += src - else - update_overlays(TRUE) - -#define UPDATE_MASTER(T) \ - if (T && T.lighting_overlay) { \ - if (now) { \ - T.lighting_overlay.update_overlay(); \ - } \ - else if (!T.lighting_overlay.needs_update) { \ - T.lighting_overlay.needs_update = TRUE; \ - SSlighting.overlay_queue += T.lighting_overlay; \ - } \ - } - - -#define AVERAGE_BELOW_CORNER(Tt, Ti) \ - if (TURF_IS_MIMICING(Tt)) { \ - T = GET_TURF_BELOW(Tt); \ - if (T && T.corners && TURF_IS_DYNAMICALLY_LIT_UNSAFE(T)) { \ - C = T.corners[Ti]; \ - if (C) { \ - divisor += 1; \ - lr += C.lum_r; \ - lg += C.lum_g; \ - lb += C.lum_b; \ - } \ - } \ - } - -#define UPDATE_ABOVE_CORNER(Tt, Ti) \ - if (Tt) { \ - T = GET_TURF_ABOVE(Tt); \ - if (TURF_IS_MIMICING(T) && TURF_IS_DYNAMICALLY_LIT_UNSAFE(T)) { \ - if (!T.corners) { \ - T.generate_missing_corners(); \ - } \ - C = T.corners[Ti]; \ - if (C && !C.needs_update) { \ - C.update_overlays(FALSE); \ - } \ - } \ - } - -/datum/lighting_corner/proc/update_overlays(now = FALSE) - var/lr = lum_r - var/lg = lum_g - var/lb = lum_b - -#ifdef USE_CORNER_ZBLEED - - var/divisor = 1 - var/datum/lighting_corner/C - var/turf/T - - AVERAGE_BELOW_CORNER(t1, t1i) - AVERAGE_BELOW_CORNER(t2, t2i) - AVERAGE_BELOW_CORNER(t3, t3i) - AVERAGE_BELOW_CORNER(t4, t4i) - - if (divisor > 1) - lr /= divisor - lg /= divisor - lb /= divisor - -#endif - - // Cache these values a head of time so 4 individual lighting overlays don't all calculate them individually. - var/mx = max(lr, lg, lb) // Scale it so 1 is the strongest lum, if it is above 1. - . = 1 // factor - if (mx > 1) - . = 1 / mx - - else if (mx < LIGHTING_SOFT_THRESHOLD) - . = 0 // 0 means soft lighting. - - if (.) - cache_r = round(lr * ., LIGHTING_ROUND_VALUE) || LIGHTING_SOFT_THRESHOLD - cache_g = round(lg * ., LIGHTING_ROUND_VALUE) || LIGHTING_SOFT_THRESHOLD - cache_b = round(lb * ., LIGHTING_ROUND_VALUE) || LIGHTING_SOFT_THRESHOLD - else - cache_r = cache_g = cache_b = LIGHTING_SOFT_THRESHOLD - - cache_mx = round(mx, LIGHTING_ROUND_VALUE) - - UPDATE_MASTER(t1) - UPDATE_MASTER(t2) - UPDATE_MASTER(t3) - UPDATE_MASTER(t4) - -#ifdef USE_CORNER_ZBLEED - - UPDATE_ABOVE_CORNER(t1, t1i) - UPDATE_ABOVE_CORNER(t2, t2i) - UPDATE_ABOVE_CORNER(t3, t3i) - UPDATE_ABOVE_CORNER(t4, t4i) - -#endif - -#undef UPDATE_MASTER -#undef AVERAGE_BELOW_CORNER -#undef UPDATE_ABOVE_CORNER - -/datum/lighting_corner/Destroy(force = FALSE) - crash_with("Some fuck [force ? "force-" : ""]deleted a lighting corner.") - if (!force) - return QDEL_HINT_LETMELIVE - - SSlighting.lighting_corners -= src - return ..() - -/datum/lighting_corner/dummy/New() - return diff --git a/code/modules/lighting/lighting_mask/dynamic_lighting_source.dm b/code/modules/lighting/lighting_mask/dynamic_lighting_source.dm new file mode 100644 index 00000000000..c0bf02daae4 --- /dev/null +++ b/code/modules/lighting/lighting_mask/dynamic_lighting_source.dm @@ -0,0 +1,103 @@ +// This is where the fun begins. +// These are the main datums that emit light. + +/datum/dynamic_light_source + ///source atom that we belong to + var/atom/source_atom + ///The atom that the source atom is contained inside + var/atom/movable/contained_atom + ///our last loc + var/atom/cached_loc + //the turf where cached loc was + var/turf/source_turf + ///the turf the contained atom appears to be covering + var/turf/pixel_turf + /// Intensity of the emitter light. + var/light_power = 0 + /// The range of the emitted light. + var/light_range = 0 + /// The colour of the light, string, decomposed by PARSE_LIGHT_COLOR() + var/light_color = NONSENSICAL_VALUE + + /// Whether we have applied our light yet or not. + var/applied = FALSE + + ///typepath for the mask type we are using + var/mask_type + ///reference to the mask holder effect + var/obj/effect/lighting_mask_holder/mask_holder + ///reference to the mask contained within the mask_holder objects vis_contents + var/atom/movable/lighting_mask/our_mask + +/datum/dynamic_light_source/New(atom/movable/owner, mask_type = /atom/movable/lighting_mask) + source_atom = owner // Set our new owner. + LAZYADD(source_atom.hybrid_light_sources, src) + + //Find the atom that contains us + find_containing_atom() + + source_turf = get_turf(source_atom) + + src.mask_type = mask_type + mask_holder = new(source_turf) + our_mask = new mask_type + mask_holder.assign_mask(our_mask) + our_mask.attached_atom = owner + + //Set light vars + set_light(owner.light_range, owner.light_power, owner.light_color) + + //Calculate shadows + our_mask.queue_mask_update() + + //Set direction + our_mask.rotate_mask_on_holder_turn(contained_atom.dir) + RegisterSignal(our_mask, COMSIG_ATOM_DIR_CHANGE, TYPE_PROC_REF(/atom/movable/lighting_mask, rotate_mask_on_holder_turn)) + +/datum/dynamic_light_source/Destroy(force) + //Remove references to ourself. + LAZYREMOVE(source_atom?.hybrid_light_sources, src) + LAZYREMOVE(contained_atom?.hybrid_light_sources, src) + QDEL_NULL(mask_holder) + our_mask = null//deletion handled on holder + return ..() + +///Updates containing atom +/datum/dynamic_light_source/proc/find_containing_atom() + //Remove ourselves from the old containing atoms light sources + if(contained_atom && contained_atom != source_atom) + LAZYREMOVE(contained_atom.hybrid_light_sources, src) + //Find our new container + if(isturf(source_atom) || isarea(source_atom)) + contained_atom = source_atom + return + contained_atom = source_atom.loc + for(var/sanity in 1 to 20) + if(!contained_atom) + //Welcome to nullspace my friend. + contained_atom = source_atom + return + if(isturf(contained_atom.loc)) + break + contained_atom = contained_atom.loc + //Add ourselves to their light sources + if(contained_atom != source_atom) + LAZYADD(contained_atom.hybrid_light_sources, src) + +///Update light if changed. +/datum/dynamic_light_source/proc/set_light(l_range, l_power, l_color = NONSENSICAL_VALUE) + if(!our_mask) + return + if(l_range && l_range != light_range) + light_range = l_range + our_mask.set_radius(l_range) + if(l_power && l_power != light_power) + light_power = l_power + our_mask.set_intensity(l_power) + if(l_color != NONSENSICAL_VALUE && l_color != light_color) + light_color = l_color + our_mask.set_color(l_color) + +/datum/dynamic_light_source/proc/update_position() + mask_holder.forceMove(get_turf(source_atom)) + find_containing_atom() diff --git a/code/modules/lighting/lighting_mask/lighting_mask.dm b/code/modules/lighting/lighting_mask/lighting_mask.dm new file mode 100644 index 00000000000..e6d3da36da4 --- /dev/null +++ b/code/modules/lighting/lighting_mask/lighting_mask.dm @@ -0,0 +1,172 @@ +///Lighting mask sprite radius in tiles +#define LIGHTING_MASK_RADIUS 4 +///Lighting mask sprite diameter in pixels +#define LIGHTING_MASK_SPRITE_SIZE LIGHTING_MASK_RADIUS * 64 + +/atom/movable/lighting_mask + name = "" + icon = LIGHTING_ICON_BIG + icon_state = "light_normalized" + + anchored = TRUE + plane = LIGHTING_PLANE + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + layer = LIGHTING_SECONDARY_LAYER + invisibility = INVISIBILITY_LIGHTING + blend_mode = BLEND_ADD + appearance_flags = KEEP_TOGETHER|RESET_TRANSFORM + + ///The current angle the item is pointing at + var/current_angle = 0 + + ///The radius of illumination of the mask + var/radius = 0 + + ///The atom that we are attached to, does not need hard del protection as we are deleted with it + var/atom/attached_atom + + ///Reference to the holder /obj/effect + var/obj/effect/lighting_mask_holder/mask_holder + + ///Prevents us from registering for update twice before SSlighting init + var/awaiting_update = FALSE + ///Set to TRUE if you want the light to rotate with the owner + var/is_directional = FALSE + + ///Turfs that are being affected by this mask, this is for the sake of luminosity + var/list/turf/affecting_turfs + ///list of mutable appearance shadows + var/list/mutable_appearance/shadows + var/times_calculated = 0 + + //Please dont change these + var/calculated_position_x + var/calculated_position_y + +/atom/movable/lighting_mask/Initialize(mapload, ...) + . = ..() + add_filter("pixel_smoother", 3, gauss_blur_filter(2)) + add_filter("shadow_alpha_masking", 4, alpha_mask_filter(render_source = SHADOW_RENDER_TARGET, flags = MASK_INVERSE)) + +/atom/movable/lighting_mask/Destroy() + //Make sure we werent destroyed in init + SSlighting.mask_queue -= src + //Remove from affecting turfs + if(affecting_turfs) + for(var/turf/thing as anything in affecting_turfs) + var/area/A = thing.loc + LAZYREMOVE(thing.hybrid_lights_affecting, src) + if(!A.base_lighting_alpha) + thing.luminosity -= 1 + affecting_turfs = null + //Cut the shadows. Since they are overlays they will be deleted when cut from overlays. + LAZYCLEARLIST(shadows) + mask_holder = null + attached_atom = null + return ..() + +///Sets the radius of the mask, and updates everything that needs to be updated +/atom/movable/lighting_mask/proc/set_radius(new_radius, transform_time = 0) + //Update our matrix + var/matrix/new_size_matrix = get_matrix(new_radius) + apply_matrix(new_size_matrix, transform_time) + radius = new_radius + //then recalculate and redraw + queue_mask_update() + +///if you want the matrix to grow or shrink, you can do that using this proc when applyng it +/atom/movable/lighting_mask/proc/apply_matrix(matrix/to_apply, transform_time = 0) + if(transform_time) + animate(src, transform = to_apply, time = transform_time) + else + transform = to_apply + +///Creates a matrix for the lighting mak to use +/atom/movable/lighting_mask/proc/get_matrix(radius = 1) + var/matrix/new_size_matrix = new() + //Scale + // - Scale to the appropriate radius + new_size_matrix.Scale(radius / LIGHTING_MASK_RADIUS) + //Translate + // - Center the overlay image + // - Ok so apparently translate is affected by the scale we already did huh. + // ^ Future me here, its because it works as translate then scale since its backwards. + // ^ ^ Future future me here, it totally shouldnt since the translation component of a matrix is independent to the scale component. + new_size_matrix.Translate(-128 + 16) + //Adjust for pixel offsets + var/invert_offsets = attached_atom.dir & (NORTH | EAST) + var/left_or_right = attached_atom.dir & (EAST | WEST) + var/offset_x = (left_or_right ? attached_atom.light_pixel_y : attached_atom.light_pixel_x) * (invert_offsets ? -1 : 1) + var/offset_y = (left_or_right ? attached_atom.light_pixel_x : attached_atom.light_pixel_y) * (invert_offsets ? -1 : 1) + new_size_matrix.Translate(offset_x, offset_y) + if(is_directional) + //Rotate + // - Rotate (Directional lights) + new_size_matrix.Turn(current_angle) + return new_size_matrix + +///Rotates the light source to angle degrees. +/atom/movable/lighting_mask/proc/rotate(angle = 0) + //Converting our transform is pretty simple. + var/matrix/rotated_matrix = matrix() + rotated_matrix.Turn(angle - current_angle) + rotated_matrix *= transform + //Overlays cannot be edited while applied, meaning their transform cannot be changed. + //Disconnect the shadows from the overlay, apply the transform and then reapply them as an overlay. + //Oh also since the matrix is really weird standard rotation matrices wont work here. + overlays.Cut() + //Disconnect from parent matrix, become a global position + for(var/mutable_appearance/shadow as anything in shadows) //Mutable appearances are children of icon + shadow.transform *= transform + shadow.transform /= rotated_matrix + //Apply our matrix + transform = rotated_matrix + overlays += shadows + + //Now we are facing this direction + current_angle = angle + +///Setter proc for colors +/atom/movable/lighting_mask/proc/set_color(colour = "#ffffff") + color = colour + +///Setter proc for the intensity of the mask +/atom/movable/lighting_mask/proc/set_intensity(intensity = 1) + if(intensity >= 0) + alpha = ALPHA_TO_INTENSITY(intensity) + blend_mode = BLEND_ADD + else + alpha = ALPHA_TO_INTENSITY(-intensity) + blend_mode = BLEND_SUBTRACT + +///The holder atom turned, spins the mask if it's needed +/atom/movable/lighting_mask/proc/rotate_mask_on_holder_turn(new_direction) + SIGNAL_HANDLER + rotate(dir2angle(new_direction) - 180) + +///Flickering lighting mask +/atom/movable/lighting_mask/flicker + icon_state = "light_flicker" + +///Conical Light mask +/atom/movable/lighting_mask/conical + icon_state = "light_conical" + is_directional = TRUE + +///Rotating Light mask +/atom/movable/lighting_mask/rotating + icon_state = "light_rotating-1" + +/atom/movable/lighting_mask/rotating/Initialize(mapload, ...) + . = ..() + icon_state = "light_rotating-[rand(1, 3)]" + +///rotating light mask, but only pointing in one direction +/atom/movable/lighting_mask/rotating_conical + icon_state = "light_conical_rotating" + +/atom/movable/lighting_mask/ex_act(severity, target) + return + +#undef LIGHTING_MASK_SPRITE_SIZE +#undef LIGHTING_MASK_RADIUS diff --git a/code/modules/lighting/lighting_mask/lighting_mask_holder.dm b/code/modules/lighting/lighting_mask/lighting_mask_holder.dm new file mode 100644 index 00000000000..750a16fa1bf --- /dev/null +++ b/code/modules/lighting/lighting_mask/lighting_mask_holder.dm @@ -0,0 +1,22 @@ +///Holder for lighting mask, this is done for ensuing correct render as a viscontents +/obj/effect/lighting_mask_holder + name = "" + anchored = TRUE + appearance_flags = NONE //Removes TILE_BOUND meaning that the lighting mask will be visible even if the source turf is not. + glide_size = INFINITY //prevent shadow jitter + ///The movable mask this holder is holding in its vis contents + var/atom/movable/lighting_mask/held_mask + +/obj/effect/lighting_mask_holder/proc/assign_mask(atom/movable/lighting_mask/mask) + vis_contents += mask + held_mask = mask + mask.mask_holder = src + +/obj/effect/lighting_mask_holder/Destroy(force) + vis_contents -= held_mask + QDEL_NULL(held_mask) + return ..() + +/obj/effect/lighting_mask_holder/Moved(atom/OldLoc, Dir) + . = ..() + held_mask?.queue_mask_update()//held mask can be null when it is deleted diff --git a/code/modules/lighting/lighting_mask/shadow_calculator.dm b/code/modules/lighting/lighting_mask/shadow_calculator.dm new file mode 100644 index 00000000000..2571bf870d2 --- /dev/null +++ b/code/modules/lighting/lighting_mask/shadow_calculator.dm @@ -0,0 +1,662 @@ +//Lighting texture scales in world units (divide by 32) +//256 = 8,4,2 +//1024 = 32,16,8 +#define LIGHTING_SHADOW_TEX_SIZE 8 + +///Eyeball number for radius based offsets do not touch +#define RADIUS_BASED_OFFSET 3.5 + +///Inserts a coord list into a grouped list +#define COORD_LIST_ADD(listtoadd, x, y) \ + if(islist(listtoadd["[x]"])) { \ + var/list/_L = listtoadd["[x]"]; \ + BINARY_INSERT_NUM(y, _L); \ + } else { \ + listtoadd["[x]"] = list(y);\ + } + +#ifdef SHADOW_DEBUG +///Color coded atom debug, note will break when theres planetside lgihting +#define DEBUG_HIGHLIGHT(x, y, colour) \ + do { \ + var/turf/T = locate(x, y, 3); \ + if(T) { \ + T.color = colour; \ + }\ + } while (FALSE) + +//For debugging use when we want to know if a turf is being affected multiple times +//#define DEBUG_HIGHLIGHT(x, y, colour) do{var/turf/T=locate(x,y,2);if(T){switch(T.color){if("#ff0000"){T.color = "#00ff00"}if("#00ff00"){T.color="#0000ff"}else{T.color="#ff0000"}}}}while(0) +#define DO_SOMETHING_IF_DEBUGGING_SHADOWS(something) something +#else +#define DEBUG_HIGHLIGHT(x, y, colour) +#define DO_SOMETHING_IF_DEBUGGING_SHADOWS(something) +#endif + +/atom/movable/lighting_mask/proc/link_turf_to_light(turf/T) + LAZYOR(affecting_turfs, T) + LAZYOR(T.hybrid_lights_affecting, src) + +/atom/movable/lighting_mask/proc/unlink_turf_from_light(turf/T) + LAZYREMOVE(affecting_turfs, T) + LAZYREMOVE(T.hybrid_lights_affecting, src) + +///Enqueues the mask in the queue properly +/atom/movable/lighting_mask/proc/queue_mask_update() + SSlighting.mask_queue |= src + awaiting_update = TRUE + +/** + * Returns a list of matrices corresponding to the matrices that should be applied to triangles of + * coordinates (0,0),(1,0),(0,1) to create a triangcalculate_shadows_matricesle that respresents the shadows + * takes in the old turf to smoothly animate shadow movement + */ +/atom/movable/lighting_mask/proc/calculate_lighting_shadows() + //Check to make sure lighting is actually started + //If not count the amount of duplicate requests created. + if(!SSlighting.started) + if(awaiting_update) + SSlighting.duplicate_shadow_updates_in_init++ + return + queue_mask_update() + return + awaiting_update = FALSE + //we moved to nullspace meanwhile dont bother + if(!attached_atom.loc) + return + + //Incremement the global counter for shadow calculations + SSlighting.total_shadow_calculations ++ + + //Ceiling the range since we need it in integer form + var/range = ceil(radius) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(var/timer = TICK_USAGE) + + //Work out our position + //Calculate shadow origin offset + var/invert_offsets = attached_atom.dir & (NORTH | EAST) + var/left_or_right = attached_atom.dir & (EAST | WEST) + var/offset_x = (left_or_right ? attached_atom.light_pixel_y : attached_atom.light_pixel_x) * (invert_offsets ? -1 : 1) + var/offset_y = (left_or_right ? attached_atom.light_pixel_x : attached_atom.light_pixel_y) * (invert_offsets ? -1 : 1) + + //Get the origin points + var/turf/our_turf = get_turf(attached_atom) //The mask is in nullspace, so we need the source turf of the container + + //Account for pixel shifting and light offset + calculated_position_x = our_turf.x + ((offset_x) / world.icon_size) + calculated_position_y = our_turf.y + ((offset_y) / world.icon_size) + + //Remove the old shadows + overlays.Cut() + + + //Reset the list + if(islist(affecting_turfs)) + for(var/turf/T as anything in affecting_turfs) + LAZYREMOVE(T?.hybrid_lights_affecting, src) + //The turf is no longer affected by any lights, make it non-luminous. + var/area/A = T.loc + if(T?.luminosity && !A.base_lighting_alpha) + T.luminosity -= 1 + + //Clear the list + LAZYCLEARLIST(affecting_turfs) + LAZYCLEARLIST(shadows) + + //Optimise grouping by storing as + // Key : x (AS A STRING BECAUSE BYOND DOESNT ALLOW FOR INT KEY DICTIONARIES) + // Value: List(y values) + var/list/opaque_atoms_in_view = list() + + //Rebuild the list + var/is_on_closed_turf = our_turf.density + var/list/turfs = list() + DVIEW(turfs, range, get_turf(attached_atom), INVISIBILITY_LIGHTING) + for(var/turf/thing in turfs) //most expensive part of shadow code is this DVIEW and group_atoms + link_turf_to_light(thing) + //The turf is now affected by our light, make it luminous + thing.luminosity += 1 + //Dont consider shadows about our turf. + if(!is_on_closed_turf) + if(thing == our_turf) + continue + if(thing.directional_opacity) + //At this point we no longer care about + //the atom itself, only the position values + COORD_LIST_ADD(opaque_atoms_in_view, thing.x, thing.y) + DEBUG_HIGHLIGHT(thing.x, thing.y, "#0000FF") + + //We are too small to consider shadows on, luminsoty has been considered at least. + if(radius < 2) + return + + DO_SOMETHING_IF_DEBUGGING_SHADOWS(log_game("[TICK_USAGE_TO_MS(timer)]ms to process view([range], src).")) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(var/temp_timer = TICK_USAGE) + + //Group atoms together for optimisation + var/list/grouped_atoms = group_atoms(opaque_atoms_in_view) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(log_game("[TICK_USAGE_TO_MS(temp_timer)]ms to process group_atoms")) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(temp_timer = TICK_USAGE) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(var/total_coordgroup_time = 0) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(var/total_cornergroup_time = 0) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(var/triangle_time = 0) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(var/culling_time = 0) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(var/triangle_to_matrix_time = 0) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(var/matrix_division_time = 0) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(var/MA_new_time = 0) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(var/MA_vars_time = 0) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(var/overlays_add_time = 0) + + var/list/overlays_to_add = list() + for(var/group in grouped_atoms) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(temp_timer = TICK_USAGE) + + var/list/coordgroup = calculate_corners_in_group(group) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(total_coordgroup_time += TICK_USAGE_TO_MS(temp_timer)) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(temp_timer = TICK_USAGE) + + //This is where the lines are made + var/list/cornergroup = get_corners_from_coords(coordgroup) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(total_cornergroup_time += TICK_USAGE_TO_MS(temp_timer)) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(temp_timer = TICK_USAGE) + + var/list/culledlinegroup = cull_blocked_in_group(cornergroup, opaque_atoms_in_view) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(culling_time += TICK_USAGE_TO_MS(temp_timer)) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(temp_timer = TICK_USAGE) + + if(!LAZYLEN(culledlinegroup)) + continue + + var/list/triangles = calculate_triangle_vertices(culledlinegroup) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(triangle_time += TICK_USAGE_TO_MS(temp_timer)) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(temp_timer = TICK_USAGE) + + for(var/triangle in triangles) + var/matrix/triangle_matrix = triangle_to_matrix(triangle) + + DO_SOMETHING_IF_DEBUGGING_SHADOWS(triangle_to_matrix_time += TICK_USAGE_TO_MS(temp_timer)) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(temp_timer = TICK_USAGE) + + triangle_matrix /= transform + + DO_SOMETHING_IF_DEBUGGING_SHADOWS(matrix_division_time += TICK_USAGE_TO_MS(temp_timer)) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(temp_timer = TICK_USAGE) + + var/mutable_appearance/shadow = new() + + DO_SOMETHING_IF_DEBUGGING_SHADOWS(MA_new_time += TICK_USAGE_TO_MS(temp_timer)) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(temp_timer = TICK_USAGE) + + shadow.icon = LIGHTING_ICON_BIG + shadow.icon_state = "triangle" + shadow.color = "#000" + shadow.transform = triangle_matrix + shadow.render_target = SHADOW_RENDER_TARGET + shadow.blend_mode = BLEND_OVERLAY + + DO_SOMETHING_IF_DEBUGGING_SHADOWS(MA_vars_time += TICK_USAGE_TO_MS(temp_timer)) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(temp_timer = TICK_USAGE) + + LAZYADD(shadows, shadow) + overlays_to_add += shadow + + DO_SOMETHING_IF_DEBUGGING_SHADOWS(overlays_add_time += TICK_USAGE_TO_MS(temp_timer)) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(temp_timer = TICK_USAGE) + + DO_SOMETHING_IF_DEBUGGING_SHADOWS(var/overlay_apply_time = TICK_USAGE) + + overlays += overlays_to_add //batch appearance generation for free lag(tm) + + DO_SOMETHING_IF_DEBUGGING_SHADOWS(overlay_apply_time = TICK_USAGE_TO_MS(overlay_apply_time)) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(log_game("total_coordgroup_time: [total_coordgroup_time]ms")) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(log_game("total_cornergroup_time: [total_cornergroup_time]ms")) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(log_game("triangle_time calculation: [triangle_time]ms")) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(log_game("triangle_to_matrix_time: [triangle_to_matrix_time]ms")) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(log_game("Culling Time: [culling_time]ms")) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(log_game("matrix_division_time: [matrix_division_time]ms")) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(log_game("MA_new_time: [MA_new_time]ms")) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(log_game("MA_vars_time: [MA_vars_time]ms")) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(log_game("overlays_add_time: [overlays_add_time]ms")) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(log_game("overlay_apply_time: [overlay_apply_time]ms")) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(log_game("[TICK_USAGE_TO_MS(timer)]ms to process total.")) + + +/** + * Converts a triangle into a matrix that can be applied to a standardized triangle + * to make it represent the points. + */ +/atom/movable/lighting_mask/proc/triangle_to_matrix(list/triangle) + //We need the world position raw, if we use the calculated position then the pixel values will cancel. + var/turf/our_turf = get_turf(attached_atom) + var/ourx = our_turf.x + var/oury = our_turf.y + + var/originx = triangle[1][1] - ourx //~Simultaneous Variable: U + var/originy = triangle[1][2] - oury //~Simultaneous Variable: V + //Get points translating the first point to (0, 0) + var/translatedPoint2x = triangle[2][1] - ourx //Simultaneous Variable: W + var/translatedPoint2y = triangle[2][2] - oury //Simultaneous Variable: X + var/translatedPoint3x = triangle[3][1] - ourx //Simultaneous Variable: Y + var/translatedPoint3y = triangle[3][2] - oury //Simultaneous Variable: Z + //message_admins("Point 1: ([originx], [originy])") + //message_admins("Point 2: ([translatedPoint2x], [translatedPoint2y])") + //message_admins("Point 3: ([translatedPoint3x], [translatedPoint3y])") + //Assumption that is incorrect + //Triangle points are + // (-4, -4) + // (-4, 4) + // ( 4, -4) + //Would be much easier if it was (0, 0) instead of (-4, -4) but since we have 6 inputs and 6 unknowns + //we can solve the values of the matrix pretty easilly simultaneously. + //In fact since variables U,W,Y,A,B,C are separate to V,X,Z,D,E,F its easy since its 2 identical tri-variable simultaneous equations. + //By solving the equations simultaneously we get these results: + //a = (y-u)/8 + var/a = (translatedPoint3x - originx) / LIGHTING_SHADOW_TEX_SIZE + //b = (w-u)/ 8 + var/b = (translatedPoint2x - originx) / LIGHTING_SHADOW_TEX_SIZE + //c = (y+w)/2 + var/c = (translatedPoint3x + translatedPoint2x) / 2 + //d = (z-v)/8 + var/d = (translatedPoint3y - originy) / LIGHTING_SHADOW_TEX_SIZE + //e = (x-v)/8 + var/e = (translatedPoint2y - originy) / LIGHTING_SHADOW_TEX_SIZE + //f = (z+x)/2 + var/f = (translatedPoint3y + translatedPoint2y) / 2 + //Matrix time g + //a,b,d and e can be used to define the shape, C and F can be used for translation god matrices are so beautiful + //Completely random offset that I didnt derive, I just trialled and errored for about 4 hours until it randomly worked + //var/radius_based_offset = radius * 3 + RADIUS_BASED_OFFSET <-- for 1024x1024 lights DO NOT USE 1024x1024 SHADOWS UNLESS YOU ARE PLAYING WITH RTX200000 OR SOMETHING + var/radius_based_offset = RADIUS_BASED_OFFSET + var/matrix/M = matrix(a, b, (c * 32) - ((radius_based_offset) * 32), d, e, (f * 32) - ((radius_based_offset) * 32)) + //log_game("[M.a], [M.d], 0") + //log_game("[M.b], [M.e], 0") + //log_game("[M.c], [M.f], 1") + return M + +/** + * Basically takes the 2-4 corners, extends them and then generates triangle coordinates representing shadows + * Input: list(list(list(x, y), list(x, y))) + * Layer 1: Lines + * Layer 2: Vertex + * Layer 3: X/Y value + * OUTPUT: The same thing but with 3 lists embedded rather than 2 because they are triangles not lines now. + */ +/atom/movable/lighting_mask/proc/calculate_triangle_vertices(list/cornergroup) + var/shadow_radius = max(radius + 1, 3) + //Get the origin poin's + var/ourx = calculated_position_x + var/oury = calculated_position_y + //The output + . = list() + //Every line has 2 triangles innit + for(var/list/line as anything in cornergroup) + //Get the corner vertices + var/vertex1 = line[1] + var/vertex2 = line[2] + //Extend them and get end vertices + //Calculate vertex 3 position + var/delta_x = vertex1[1] - ourx + var/delta_y = vertex1[2] - oury + var/vertex3 = extend_line_to_radius(delta_x, delta_y, shadow_radius, ourx, oury) + var/vertex3side = (vertex3[1] - ourx) == -shadow_radius ? WEST : (vertex3[1] - ourx) == shadow_radius ? EAST : (vertex3[2] - oury) == shadow_radius ? NORTH : SOUTH + + //For vertex 4 + delta_x = vertex2[1] - ourx + delta_y = vertex2[2] - oury + var/vertex4 = extend_line_to_radius(delta_x, delta_y, shadow_radius, ourx, oury) + var/vertex4side = (vertex4[1] - ourx) == -shadow_radius ? WEST : (vertex4[1] - ourx) == shadow_radius ? EAST : (vertex4[2] - oury) == shadow_radius ? NORTH : SOUTH + + //If vertex3 is not on the same border as vertex 4 then we need more triangles to fill in the space. + if(vertex3side != vertex4side) + var/eitherNorth = (vertex3side == NORTH || vertex4side == NORTH) + var/eitherEast = (vertex3side == EAST || vertex4side == EAST) + var/eitherSouth = (vertex3side == SOUTH || vertex4side == SOUTH) + var/eitherWest = (vertex3side == WEST || vertex4side == WEST) + if(eitherNorth && eitherEast) + //Add a vertex top right + var/vertex5 = list(shadow_radius + ourx, shadow_radius + oury) + var/triangle3 = list(vertex3, vertex4, vertex5) + . += list(triangle3) + else if(eitherNorth && eitherWest) + //Add a vertex top left + var/vertex5 = list(-shadow_radius + ourx, shadow_radius + oury) + var/triangle3 = list(vertex3, vertex4, vertex5) + . += list(triangle3) + else if(eitherNorth && eitherSouth) //BLOCKER IS A | SHAPE + //If vertex3 is to the right of the center, both vertices are to the right. + if(vertex3[1] > ourx) + //New vertexes are on the right + var/vertex5 = list(ourx + shadow_radius, oury + shadow_radius) + var/vertex6 = list(ourx + shadow_radius, oury - shadow_radius) + //If vertex 4 is greater than 3 then triangles link as 4,5,6 and 3,4,6 + if(vertex4[2] > vertex3[2]) + var/triangle3 = list(vertex3, vertex5, vertex6) + . += list(triangle3) + var/triangle4 = list(vertex3, vertex4, vertex5) + . += list(triangle4) + else + //Vertex 3 is greater than 4, so triangles link as 3,5,6 and 3,4,6 + var/triangle3 = list(vertex3, vertex4, vertex5) + . += list(triangle3) + var/triangle4 = list(vertex4, vertex5, vertex6) + . += list(triangle4) + else + //New vertexes are on the left + var/vertex5 = list(ourx - shadow_radius, oury + shadow_radius) + var/vertex6 = list(ourx - shadow_radius, oury - shadow_radius) + //If vertex 4 is higher than 3 then triangles link as 4,5,6 and 3,4,6 + if(vertex4[2] > vertex3[2]) + var/triangle3 = list(vertex3, vertex5, vertex6) + . += list(triangle3) + var/triangle4 = list(vertex3, vertex4, vertex5) + . += list(triangle4) + else + //Vertex 3 is greater than 4, so triangles link as 3,5,6 and 3,4,6 + var/triangle3 = list(vertex3, vertex4, vertex5) + . += list(triangle3) + var/triangle4 = list(vertex4, vertex5, vertex6) + . += list(triangle4) + else if(eitherEast && eitherSouth) + //Add a vertex bottom right + var/vertex5 = list(shadow_radius + ourx, -shadow_radius + oury) + var/triangle3 = list(vertex3, vertex4, vertex5) + . += list(triangle3) + else if(eitherEast && eitherWest) //BLOCKER IS A --- SHAPE + //If vertex3 is above the center, then pointers are along the top + if(vertex3[2] > oury) + //New vertexes are on the right + var/vertex5 = list(ourx + shadow_radius, oury + shadow_radius) + var/vertex6 = list(ourx - shadow_radius, oury + shadow_radius) + //If vertex 4 is greater than 3 then triangles link as 4,5,6 and 3,4,6 + if(vertex4[1] > vertex3[1]) + var/triangle3 = list(vertex3, vertex5, vertex6) + . += list(triangle3) + var/triangle4 = list(vertex3, vertex4, vertex5) + . += list(triangle4) + else + //Vertex 3 is greater than 4, so triangles link as 3,5,6 and 3,4,6 + var/triangle3 = list(vertex3, vertex4, vertex5) + . += list(triangle3) + var/triangle4 = list(vertex4, vertex5, vertex6) + . += list(triangle4) + else + //New vertexes are on the bottom + var/vertex5 = list(ourx + shadow_radius, oury - shadow_radius) + var/vertex6 = list(ourx - shadow_radius, oury - shadow_radius) + //If vertex 4 is higher than 3 then triangles link as 4,5,6 and 3,4,6 + if(vertex4[1] > vertex3[1]) + var/triangle3 = list(vertex3, vertex4, vertex5) + . += list(triangle3) + var/triangle4 = list(vertex3, vertex5, vertex6) + . += list(triangle4) + else + //Vertex 3 is greater than 4, so triangles link as 3,5,6 and 3,4,6 + var/triangle3 = list(vertex3, vertex4, vertex5) + . += list(triangle3) + var/triangle4 = list(vertex4, vertex5, vertex6) + . += list(triangle4) + else if(eitherSouth && eitherWest) + //Bottom left + var/vertex5 = list(-shadow_radius + ourx, -shadow_radius + oury) + var/triangle3 = list(vertex3, vertex4, vertex5) + . += list(triangle3) + else + //bug + stack_trace("Major error: vertex in a bad position (North: [eitherNorth], East: [eitherEast], South: [eitherSouth], West: [eitherWest])") + + //Generate triangles + var/triangle1 = list(vertex1, vertex2, vertex3) + var/triangle2 = list(vertex2, vertex3, vertex4) + . += list(triangle1) + . += list(triangle2) + +///Takes in the list of lines and sight blockers and returns only the lines that are not blocked +/atom/movable/lighting_mask/proc/cull_blocked_in_group(list/lines, list/sight_blockers) + . = list() + for(var/list/line in lines) + var/vertex1 = line[1] + var/vertex2 = line[2] + var/list/lines_to_add = list() + if(vertex1[1] == vertex2[1]) + //Vertical line. + //Requires a block to the left and right all the way from the bottom to the top + var/left = vertex1[1] - 0.5 + var/right = vertex1[1] + 0.5 + var/bottom = min(vertex1[2], vertex2[2]) + 0.5 + var/top = max(vertex1[2], vertex2[2]) - 0.5 + var/list/current_bottom_vertex = list(vertex1[1], bottom - 0.5) + var/list/current_top_vertex = list(vertex1[1], bottom - 0.5) + for(var/i in bottom to top) + var/list/left_list = sight_blockers["[left]"] + var/isLeftBlocked = left_list?.Find(i) ? TRUE : FALSE + var/list/right_list = sight_blockers["[right]"] + var/isRightBlocked = right_list?.Find(i) ? TRUE : FALSE + if(isLeftBlocked == isRightBlocked) + if(current_bottom_vertex[2] != current_top_vertex[2]) + lines_to_add += list(list(current_bottom_vertex, current_top_vertex)) + current_bottom_vertex = list(vertex1[1], i + 0.5) + current_top_vertex = list(vertex1[1], i + 0.5) + if(current_bottom_vertex[2] != current_top_vertex[2]) + lines_to_add += list(list(current_bottom_vertex, current_top_vertex)) + else + //Horizontal line + //Requires a block above and below for every position from left to right + var/left = min(vertex1[1], vertex2[1]) + 0.5 + var/right = max(vertex1[1], vertex2[1]) - 0.5 + var/top = vertex1[2] + 0.5 + var/bottom = vertex1[2] - 0.5 + var/list/current_left_vertex = list(left - 0.5, vertex1[2]) + var/list/current_right_vertex = list(left - 0.5, vertex1[2]) + for(var/i in left to right) + var/list/check_list = sight_blockers["[i]"] + var/isAboveBlocked = check_list?.Find(top) ? TRUE : FALSE + var/isBelowBlocked = check_list?.Find(bottom) ? TRUE : FALSE + if(isAboveBlocked == isBelowBlocked) + if(current_left_vertex[1] != current_right_vertex[1]) + lines_to_add += list(list(current_left_vertex, current_right_vertex)) + current_left_vertex = list(i + 0.5, vertex1[2]) + current_right_vertex = list(i + 0.5, vertex1[2]) + if(current_left_vertex[1] != current_right_vertex[1]) + lines_to_add += list(list(current_left_vertex, current_right_vertex)) + . += lines_to_add + +/** + * Converts the corners into the 3 (or 2) valid points + * For example if a wall is top right of the source, the bottom left wall corner + * can be removed otherwise the wall itself will be in the shadow. + * Input: list(list(x1, y1), list(x2, y2)) + * Output: list(list(list(x, y), list(x, y))) <-- 2 coordinates that form a line + */ +/atom/movable/lighting_mask/proc/get_corners_from_coords(list/coordgroup) + //Get the raw numbers + var/xlow = coordgroup[1][1] + var/ylow = coordgroup[1][2] + var/xhigh = coordgroup[2][1] + var/yhigh = coordgroup[2][2] + + var/ourx = calculated_position_x + var/oury = calculated_position_y + + //The source is above the point (Bottom Quad) + if(oury > yhigh) + //Bottom Right + if(ourx < xlow) + return list( + list(list(xlow, ylow), list(xhigh, ylow)), + list(list(xhigh, ylow), list(xhigh, yhigh)), + ) + //Bottom Left + else if(ourx > xhigh) + return list( + list(list(xlow, yhigh), list(xlow, ylow)), + list(list(xlow, ylow), list(xhigh, ylow)), + ) + //Bottom Middle + else + return list( + list(list(xlow, yhigh), list(xlow, ylow)), + list(list(xlow, ylow), list(xhigh, ylow)), + list(list(xhigh, ylow), list(xhigh, yhigh)) + ) + //The source is below the point (Top quad) + else if(oury < ylow) + //Top Right + if(ourx < xlow) + return list( + list(list(xlow, yhigh), list(xhigh, yhigh)), + list(list(xhigh, yhigh), list(xhigh, ylow)), + ) + //Top Left + else if(ourx > xhigh) + return list( + list(list(xlow, ylow), list(xlow, yhigh)), + list(list(xlow, yhigh), list(xhigh, yhigh)), + ) + //Top Middle + else + return list( + list(list(xlow, ylow), list(xlow, yhigh)), + list(list(xlow, yhigh), list(xhigh, yhigh)), + list(list(xhigh, yhigh), list(xhigh, ylow)) + ) + //the source is between the group Middle something + else + //Middle Right + if(ourx < xlow) + return list( + list(list(xlow, yhigh), list(xhigh, yhigh)), + list(list(xhigh, yhigh), list(xhigh, ylow)), + list(list(xhigh, ylow), list(xlow, ylow)) + ) + //Middle Left + else if(ourx > xhigh) + return list( + list(list(xhigh, ylow), list(xlow, ylow)), + list(list(xlow, ylow), list(xlow, yhigh)), + list(list(xlow, yhigh), list(xhigh, yhigh)) + ) + //Middle Middle (Why?????????) + else + return list( + list(list(xhigh, ylow), list(xlow, ylow)), + list(list(xlow, ylow), list(xlow, yhigh)), + list(list(xlow, yhigh), list(xhigh, yhigh)), + list(list(xlow, yhigh), list(xhigh, ylow)) + ) + +//Calculates the coordinates of the corner +//Takes a list of blocks and calculates the bottom left corner and the top right corner. +//Input: Group list(list(list(x,y), list(x,y)), list(list(x, y))) +//Output: Coordinates list(list(left, bottom), list(right, top)) +/atom/movable/lighting_mask/proc/calculate_corners_in_group(list/group) + if(length(group) == 0) + CRASH("Calculate_corners_in_group called on a group of length 0. Critical error.") + if(length(group) == 1) + var/x = group[1][1] + var/y = group[1][2] + return list( + list(x - 0.5, y - 0.5), + list(x + 0.5, y + 0.5) + ) + //Group is multiple length, find top left and bottom right + var/first = group[1] + var/second = group[2] + var/group_direction = NORTH + if(first[1] != second[1]) + group_direction = EAST +#ifdef SHADOW_DEBUG6 + else if(first[2] != second[2]) + message_admins("Major error, group is not 1xN or Nx1") +#endif + var/lowest = INFINITY + var/highest = 0 + for(var/vector in group) + var/value_to_comp = vector[1] + if(group_direction == NORTH) + value_to_comp = vector[2] + lowest = min(lowest, value_to_comp) + highest = max(highest, value_to_comp) + //done ez + if(group_direction == NORTH) + return list( + list(first[1] - 0.5, lowest - 0.5), + list(first[1] + 0.5, highest + 0.5) + ) + else + return list( + list(lowest - 0.5, first[2] - 0.5), + list(highest + 0.5, first[2] + 0.5) + ) + +///Groups things into vertical and horizontal lines. +///Input: All atoms ungrouped list(atom1, atom2, atom3) +///Output: List(List(Group), list(group2), ... , list(groupN)) +///Output: List(List(atom1, atom2), list(atom3, atom4...), ... , list(atom)) +/atom/movable/lighting_mask/proc/group_atoms(list/ungrouped_things) + . = list() + //Ungrouped things comes in as + // Key: X + // Value = list(y values) + //This makes sorting vertically easy, however sorting horizontally is harder + //While grouping elements vertically, we can put them into a new list with + // Key: Y + // Value = list(x values) + //to make it much easier. + var/list/horizontal_atoms = list() + //================================================= + //Vertical sorting (X locked) + for(var/x_key in ungrouped_things) + var/list/y_components = ungrouped_things[x_key] + var/pointer = y_components[1] + var/list/group = list(list(text2num(x_key), y_components[1])) + for(var/i in 2 to length(y_components)) + var/next = y_components[i] + if(next != pointer + 1) + if(length(group) == 1) + //Add the element in group to horizontal + COORD_LIST_ADD(horizontal_atoms, pointer, text2num(x_key)) + DEBUG_HIGHLIGHT(text2num(x_key), pointer, "#FFFF00") + else + //Add the group to the output + . += list(group) + group = list() + group += list(list(text2num(x_key), next)) + DEBUG_HIGHLIGHT(text2num(x_key), next, "#FF0000") + pointer = next + if(length(group) == 1) + //Add the element in group to horizontal + COORD_LIST_ADD(horizontal_atoms, pointer, text2num(x_key)) + DEBUG_HIGHLIGHT(text2num(x_key), pointer, "#FFFF00") + else + //Add the group to the output + . += list(group) + //================================================= + //Horizontal sorting (Y locked) + for(var/y_key in horizontal_atoms) + var/list/x_components = horizontal_atoms[y_key] + var/pointer = x_components[1] + var/list/group = list(list(x_components[1], text2num(y_key))) + for(var/i in 2 to length(x_components)) + var/next = x_components[i] + if(next != pointer + 1) + . += list(group) + group = list() + group += list(list(next, text2num(y_key))) + DEBUG_HIGHLIGHT(next, text2num(y_key), "#00FF00") + pointer = next + . += list(group) + +///gets a line from a x and y, to the offset x and y of length radius +/proc/extend_line_to_radius(delta_x, delta_y, radius, offset_x, offset_y) + if(abs(delta_x) < abs(delta_y)) + //top or bottom + var/proportion = radius / abs(delta_y) + return list(delta_x * proportion + offset_x, delta_y * proportion + offset_y) + else + var/proportion = radius / abs(delta_x) + return list(delta_x * proportion + offset_x, delta_y * proportion + offset_y) + +#undef LIGHTING_SHADOW_TEX_SIZE +#undef COORD_LIST_ADD +#undef DEBUG_HIGHLIGHT +#undef DO_SOMETHING_IF_DEBUGGING_SHADOWS diff --git a/code/modules/lighting/lighting_overlay.dm b/code/modules/lighting/lighting_overlay.dm deleted file mode 100644 index 05655ff0837..00000000000 --- a/code/modules/lighting/lighting_overlay.dm +++ /dev/null @@ -1,161 +0,0 @@ -/atom/movable/lighting_overlay - name = "" - anchored = TRUE - icon = LIGHTING_ICON - icon_state = LIGHTING_BASE_ICON_STATE - color = LIGHTING_BASE_MATRIX - mouse_opacity = MOUSE_OPACITY_TRANSPARENT - layer = LIGHTING_LAYER - plane = LIGHTING_PLANE - invisibility = INVISIBILITY_LIGHTING - simulated = 0 - blend_mode = BLEND_OVERLAY - appearance_flags = NO_CLIENT_COLOR - - var/needs_update = FALSE - - #if WORLD_ICON_SIZE != 32 - transform = matrix(WORLD_ICON_SIZE / 32, 0, (WORLD_ICON_SIZE - 32) / 2, 0, WORLD_ICON_SIZE / 32, (WORLD_ICON_SIZE - 32) / 2) - #endif - -/atom/movable/lighting_overlay/Initialize(mapload, ...) - . = ..() - SSlighting.total_lighting_overlays++ - - var/turf/T = loc // If this runtimes atleast we'll know what's creating overlays in things that aren't turfs. - T.lighting_overlay = src - T.luminosity = 0 - - needs_update = TRUE - SSlighting.overlay_queue += src - -/atom/movable/lighting_overlay/Destroy(force = FALSE) - if (!force) - return QDEL_HINT_LETMELIVE // STOP DELETING ME - - //L_PROF(loc, "overlay_destroy") - SSlighting.total_lighting_overlays-- - - var/turf/T = loc - if (istype(T)) - T.lighting_overlay = null - T.luminosity = 1 - - SSlighting.overlay_queue -= src - - return ..() - -// This is a macro PURELY so that the if below is actually readable. -#define ALL_EQUAL ((rr == gr && gr == br && br == ar) && (rg == gg && gg == bg && bg == ag) && (rb == gb && gb == bb && bb == ab)) - -/atom/movable/lighting_overlay/proc/update_overlay() - var/turf/T = loc - if (!isturf(T)) // Erm... - if (loc) - warning("A lighting overlay realised its loc was NOT a turf (actual loc: [loc], [loc.type]) in update_overlay() and got deleted!") - - else - warning("A lighting overlay realised it was in nullspace in update_overlay() and got deleted!") - - qdel(src, TRUE) - return - - // See LIGHTING_CORNER_DIAGONAL in lighting_corner.dm for why these values are what they are. - var/list/corners = T.corners - - //Local cache, because otherwise it accesses the global variable repeatedly, which is slower - var/dummy_lighting_corner_cache = dummy_lighting_corner - - var/datum/lighting_corner/cr = dummy_lighting_corner_cache - var/datum/lighting_corner/cg = dummy_lighting_corner_cache - var/datum/lighting_corner/cb = dummy_lighting_corner_cache - var/datum/lighting_corner/ca = dummy_lighting_corner_cache - if (corners) - cr = corners[3] || dummy_lighting_corner_cache - cg = corners[2] || dummy_lighting_corner_cache - cb = corners[4] || dummy_lighting_corner_cache - ca = corners[1] || dummy_lighting_corner_cache - - luminosity = max(cr.cache_mx, cg.cache_mx, cb.cache_mx, ca.cache_mx) > LIGHTING_SOFT_THRESHOLD - - var/rr = cr.cache_r - var/rg = cr.cache_g - var/rb = cr.cache_b - - var/gr = cg.cache_r - var/gg = cg.cache_g - var/gb = cg.cache_b - - var/br = cb.cache_r - var/bg = cb.cache_g - var/bb = cb.cache_b - - var/ar = ca.cache_r - var/ag = ca.cache_g - var/ab = ca.cache_b - - if ((rr & gr & br & ar) && (rg + gg + bg + ag + rb + gb + bb + ab == 8)) - icon_state = LIGHTING_TRANSPARENT_ICON_STATE - color = null - else if (!luminosity) - icon_state = LIGHTING_DARKNESS_ICON_STATE - color = null - else if (rr == LIGHTING_DEFAULT_TUBE_R && rg == LIGHTING_DEFAULT_TUBE_G && rb == LIGHTING_DEFAULT_TUBE_B && ALL_EQUAL) - icon_state = LIGHTING_STATION_ICON_STATE - color = null - else - icon_state = LIGHTING_BASE_ICON_STATE - if (islist(color)) - var/list/c_list = color - c_list[CL_MATRIX_RR] = rr - c_list[CL_MATRIX_RG] = rg - c_list[CL_MATRIX_RB] = rb - c_list[CL_MATRIX_GR] = gr - c_list[CL_MATRIX_GG] = gg - c_list[CL_MATRIX_GB] = gb - c_list[CL_MATRIX_BR] = br - c_list[CL_MATRIX_BG] = bg - c_list[CL_MATRIX_BB] = bb - c_list[CL_MATRIX_AR] = ar - c_list[CL_MATRIX_AG] = ag - c_list[CL_MATRIX_AB] = ab - color = c_list - else - color = list( - rr, rg, rb, 0, - gr, gg, gb, 0, - br, bg, bb, 0, - ar, ag, ab, 0, - 0, 0, 0, 1 - ) - -#undef ALL_EQUAL - -// Variety of overrides so the overlays don't get affected by weird things. - -/atom/movable/lighting_overlay/ex_act(severity) - return 0 - -/atom/movable/lighting_overlay/singularity_act() - return - -/atom/movable/lighting_overlay/singularity_pull() - return - -/atom/movable/lighting_overlay/singuloCanEat() - return FALSE - -/atom/movable/lighting_overlay/can_fall() - return FALSE - -// Override here to prevent things accidentally moving around overlays. -/atom/movable/lighting_overlay/forceMove(atom/destination, no_tp = FALSE, harderforce = FALSE) - if(harderforce) - //L_PROF(loc, "overlay_forcemove") - . = ..() - -/atom/movable/lighting_overlay/shuttle_move(turf/loc) - return - -/atom/movable/lighting_overlay/conveyor_act() - return diff --git a/code/modules/lighting/lighting_profiler.dm b/code/modules/lighting/lighting_profiler.dm deleted file mode 100644 index ec6ae781125..00000000000 --- a/code/modules/lighting/lighting_profiler.dm +++ /dev/null @@ -1,41 +0,0 @@ -// Writes lighting updates to the database. -// FOR DEBUGGING ONLY! - -/proc/lprof_write(var/atom/movable/obj, var/type = "UNKNOWN") - if (!GLOB.lighting_profiling || !obj || !establish_db_connection(GLOB.dbcon)) - return - - var/x = null - var/y = null - var/z = null - - var/name = null - var/locname = null - if (istype(obj)) - name = obj.name - locname = obj.loc.name - x = obj.loc.x - y = obj.loc.y - z = obj.loc.z - - var/static/DBQuery/lprof_q - if (!lprof_q) - lprof_q = GLOB.dbcon.NewQuery({"INSERT INTO ss13dbg_lighting (time,tick_usage,type,name,loc_name,x,y,z) - VALUES (:time:,:tick_usage:,:type:,:name:,:loc_name:,:x:,:y:,:z:);"}) - - lprof_q.Execute( - list( - "time" = world.time, - "tick_usage" = world.tick_usage, - "type" = type, - "name" = name, - "loc_name" = locname, - "x" = x, - "y" = y, - "z" = z)) - - var/err = lprof_q.ErrorMsg() - if (err) - LOG_DEBUG("lprof_write: SQL Error: [err]") - message_admins(SPAN_DANGER("SQL Error during lighting profiling; disabling!")) - GLOB.lighting_profiling = FALSE diff --git a/code/modules/lighting/lighting_setup.dm b/code/modules/lighting/lighting_setup.dm deleted file mode 100644 index 68311a32b2f..00000000000 --- a/code/modules/lighting/lighting_setup.dm +++ /dev/null @@ -1,10 +0,0 @@ -/proc/create_all_lighting_overlays() - for(var/zlevel = 1 to world.maxz) - create_lighting_overlays_zlevel(zlevel) - -/proc/create_lighting_overlays_zlevel(var/zlevel) - ASSERT(zlevel) - - for(var/turf/T in block(locate(1, 1, zlevel), locate(world.maxx, world.maxy, zlevel))) - if(T.dynamic_lighting) - T.lighting_build_overlay() diff --git a/code/modules/lighting/lighting_source.dm b/code/modules/lighting/lighting_source.dm deleted file mode 100644 index 7bf7c40f7ed..00000000000 --- a/code/modules/lighting/lighting_source.dm +++ /dev/null @@ -1,468 +0,0 @@ -// This is where the fun begins. -// These are the main datums that emit light. - -/datum/light_source - var/atom/top_atom // The atom we're emitting light from (for example a mob if we're from a flashlight that's being held). - var/atom/source_atom // The atom that we belong to. - - var/turf/source_turf // The turf under the above. - var/light_power // Intensity of the emitter light. - var/light_range // The range of the emitted light. - var/light_color // The colour of the light, string, decomposed by parse_light_color() - var/light_uv // The intensity of UV light, between 0 and 255. - var/light_angle // The light's emission angle, in degrees. - - // Variables for keeping track of the colour. - var/lum_r - var/lum_g - var/lum_b - var/lum_u - - // The lumcount values used to apply the light. - var/tmp/applied_lum_r - var/tmp/applied_lum_g - var/tmp/applied_lum_b - var/tmp/applied_lum_u - - // Variables used to keep track of the atom's angle. - var/tmp/limit_a_x // The first test point's X coord for the cone. - var/tmp/limit_a_y // The first test point's Y coord for the cone. - var/tmp/limit_a_t // The first test point's angle. - var/tmp/limit_b_x // The second test point's X coord for the cone. - var/tmp/limit_b_y // The second test point's Y coord for the cone. - var/tmp/limit_b_t // The second test point's angle. - var/tmp/cached_origin_x // The last known X coord of the origin. - var/tmp/cached_origin_y // The last known Y coord of the origin. - var/tmp/old_direction // The last known direction of the origin. - var/tmp/test_x_offset // How much the X coord should be offset due to direction. - var/tmp/test_y_offset // How much the Y coord should be offset due to direction. - var/tmp/facing_opaque = FALSE - - var/list/datum/lighting_corner/effect_str // List used to store how much we're affecting corners. - var/list/turf/affecting_turfs - - var/applied = FALSE // Whether we have applied our light yet or not. - - var/needs_update = LIGHTING_NO_UPDATE - - var/skip_falloff = FALSE // ONLY for use with sunlight, behavior is undefined if TRUE on regular sources. - -/datum/light_source/New(atom/owner, atom/top) - SSlighting.total_lighting_sources++ - source_atom = owner // Set our new owner. - - LAZYADD(source_atom.light_sources, src) - - top_atom = top - if (top_atom != source_atom) - LAZYADD(top_atom.light_sources, src) - - source_turf = top_atom - light_power = source_atom.light_power - light_range = source_atom.light_range - light_color = source_atom.light_color - light_uv = source_atom.uv_intensity - light_angle = source_atom.light_wedge - - parse_light_color() - - update() - - //L_PROF(source_atom, "source_new([type])") - -// Kill ourselves. -/datum/light_source/Destroy(force) - //L_PROF(source_atom, "source_destroy") - SSlighting.total_lighting_sources-- - - remove_lum() - if (source_atom) - LAZYREMOVE(source_atom.light_sources, src) - - if (top_atom) - LAZYREMOVE(top_atom.light_sources, src) - - . = ..() - if (!force) - return QDEL_HINT_IWILLGC - -#ifdef USE_INTELLIGENT_LIGHTING_UPDATES -// Picks either scheduled or instant updates based on current server load. -#define INTELLIGENT_UPDATE(level) \ - var/_should_update = needs_update == LIGHTING_NO_UPDATE; \ - if (needs_update < level) { \ - needs_update = level; \ - } \ - if (_should_update) { \ - if (world.tick_usage > Master.current_ticklimit || SSlighting.force_queued) { \ - SSlighting.light_queue += src; \ - } \ - else { \ - SSlighting.total_instant_updates += 1; \ - update_corners(TRUE); \ - needs_update = LIGHTING_NO_UPDATE; \ - } \ - } -#else -#define INTELLIGENT_UPDATE(level) \ - if (needs_update == LIGHTING_NO_UPDATE) \ - SSlighting.light_queue += src; \ - if (needs_update < level) \ - needs_update = level; -#endif - -// This proc will cause the light source to update the top atom, and add itself to the update queue. -/datum/light_source/proc/update(atom/new_top_atom) - // This top atom is different. - if (new_top_atom && new_top_atom != top_atom) - if(top_atom != source_atom) // Remove ourselves from the light sources of that top atom. - LAZYREMOVE(top_atom.light_sources, src) - - top_atom = new_top_atom - - if (top_atom != source_atom) - LAZYADD(top_atom.light_sources, src) // Add ourselves to the light sources of our new top atom. - - //L_PROF(source_atom, "source_update") - - INTELLIGENT_UPDATE(LIGHTING_CHECK_UPDATE) - -// Will force an update without checking if it's actually needed. -/datum/light_source/proc/force_update() - //L_PROF(source_atom, "source_forceupdate") - - INTELLIGENT_UPDATE(LIGHTING_FORCE_UPDATE) - -// Will cause the light source to recalculate turfs that were removed or added to visibility only. -/datum/light_source/proc/vis_update() - //L_PROF(source_atom, "source_visupdate") - - INTELLIGENT_UPDATE(LIGHTING_VIS_UPDATE) - -// Decompile the hexadecimal colour into lumcounts of each perspective. -/datum/light_source/proc/parse_light_color() - if (light_color) - lum_r = GetRedPart (light_color) / 255 - lum_g = GetGreenPart (light_color) / 255 - lum_b = GetBluePart (light_color) / 255 - else - lum_r = 1 - lum_g = 1 - lum_b = 1 - - if (light_uv) - lum_u = light_uv / 255 - else - lum_u = 0 - -#define POLAR_TO_CART_X(R,T) ((R) * cos(T)) -#define POLAR_TO_CART_Y(R,T) ((R) * sin(T)) -#define PSEUDO_WEDGE(A_X,A_Y,B_X,B_Y) ((A_X)*(B_Y) - (A_Y)*(B_X)) -#define MINMAX(NUM) ((NUM) < 0 ? -round(-(NUM)) : round(NUM)) -#define ARBITRARY_NUMBER 10 - -/datum/light_source/proc/regenerate_angle(ndir) - old_direction = ndir - - var/turf/front = get_step(source_turf, old_direction) - facing_opaque = (front && front.has_opaque_atom) - - cached_origin_x = test_x_offset = source_turf.x - cached_origin_y = test_y_offset = source_turf.y - - if (facing_opaque) - return - - var/angle = light_angle * 0.5 - switch (old_direction) - if (NORTH) - limit_a_t = angle + 90 - limit_b_t = -(angle) + 90 - ++test_y_offset - - if (SOUTH) - limit_a_t = (angle) - 90 - limit_b_t = -(angle) - 90 - --test_y_offset - - if (EAST) - limit_a_t = angle - limit_b_t = -(angle) - ++test_x_offset - - if (WEST) - limit_a_t = angle + 180 - limit_b_t = -(angle) - 180 - --test_x_offset - - // Convert our angle + range into a vector. - limit_a_x = POLAR_TO_CART_X(light_range + ARBITRARY_NUMBER, limit_a_t) - limit_a_x = MINMAX(limit_a_x) - limit_a_y = POLAR_TO_CART_Y(light_range + ARBITRARY_NUMBER, limit_a_t) - limit_a_y = MINMAX(limit_a_y) - limit_b_x = POLAR_TO_CART_X(light_range + ARBITRARY_NUMBER, limit_b_t) - limit_b_x = MINMAX(limit_b_x) - limit_b_y = POLAR_TO_CART_Y(light_range + ARBITRARY_NUMBER, limit_b_t) - limit_b_y = MINMAX(limit_b_y) - -#undef ARBITRARY_NUMBER -#undef POLAR_TO_CART_X -#undef POLAR_TO_CART_Y -#undef MINMAX - -/datum/light_source/proc/remove_lum(now = FALSE) - applied = FALSE - - var/thing - for (thing in affecting_turfs) - var/turf/T = thing - LAZYREMOVE(T.affecting_lights, src) - - affecting_turfs = null - - for (thing in effect_str) - var/datum/lighting_corner/C = thing - REMOVE_CORNER(C,now) - - LAZYREMOVE(C.affecting, src) - - effect_str = null - -/datum/light_source/proc/recalc_corner(datum/lighting_corner/C, now = FALSE) - LAZYINITLIST(effect_str) - if (effect_str[C]) // Already have one. - REMOVE_CORNER(C,now) - effect_str[C] = 0 - - var/actual_range = light_range - - var/Sx = source_turf.x - var/Sy = source_turf.y - var/Sz = source_turf.z - - if (skip_falloff) - APPLY_CORNER_SIMPLE(C) - else - var/height = C.z == Sz ? LIGHTING_HEIGHT : CALCULATE_CORNER_HEIGHT(C.z, Sz) - APPLY_CORNER(C, now, Sx, Sy, height) - - UNSETEMPTY(effect_str) - -// If you update this, update the equivalent proc in lighting_source_novis.dm. -/datum/light_source/proc/update_corners(now = FALSE) - var/update = FALSE - - if (QDELETED(source_atom)) - qdel(src) - return - - if (source_atom.light_power != light_power) - light_power = source_atom.light_power - update = TRUE - - if (source_atom.light_range != light_range) - light_range = source_atom.light_range - update = TRUE - - if (!top_atom) - top_atom = source_atom - update = TRUE - - if (top_atom.loc != source_turf) - source_turf = top_atom.loc - update = TRUE - - if (!light_range || !light_power) - qdel(src) - return - - if (isturf(top_atom)) - if (source_turf != top_atom) - source_turf = top_atom - update = TRUE - else if (top_atom.loc != source_turf) - source_turf = top_atom.loc - update = TRUE - - if (!source_turf) - return // Somehow we've got a light in nullspace, no-op. - - if (light_range && light_power && !applied) - update = TRUE - - if (source_atom.light_color != light_color) - light_color = source_atom.light_color - parse_light_color() - update = TRUE - - else if (applied_lum_r != lum_r || applied_lum_g != lum_g || applied_lum_b != lum_b) - update = TRUE - - if (source_atom.light_wedge != light_angle) - light_angle = source_atom.light_wedge - update = TRUE - - if (light_angle) - var/ndir - if(istype(top_atom, /mob) && top_atom:facing_dir) - var/mob/mob = top_atom - if(mob.facing_dir) - ndir = mob.facing_dir - else - ndir = top_atom.dir - else - ndir = top_atom.dir - - if (old_direction != ndir) // If our direction has changed, we need to regenerate all the angle info. - regenerate_angle(ndir) - update = TRUE - else // Check if it was just a x/y translation, and update our vars without an regenerate_angle() call if it is. - var/co_updated = FALSE - if (source_turf.x != cached_origin_x) - test_x_offset += source_turf.x - cached_origin_x - cached_origin_x = source_turf.x - - co_updated = TRUE - - if (source_turf.y != cached_origin_y) - test_y_offset += source_turf.y - cached_origin_y - cached_origin_y = source_turf.y - - co_updated = TRUE - - if (co_updated) - // We might be facing a wall now. - var/turf/front = get_step(source_turf, old_direction) - var/new_fo = (front && front.has_opaque_atom) - if (new_fo != facing_opaque) - facing_opaque = new_fo - regenerate_angle(ndir) - - update = TRUE - - if (update) - needs_update = LIGHTING_CHECK_UPDATE - else if (needs_update == LIGHTING_CHECK_UPDATE) - return // No change. - - var/list/datum/lighting_corner/corners = list() - var/list/turf/turfs = list() - var/thing - var/datum/lighting_corner/C - var/turf/T - var/list/Tcorners - var/Sx = source_turf.x - var/Sy = source_turf.y - var/Sz = source_turf.z - var/corner_height = LIGHTING_HEIGHT - var/actual_range = (light_angle && facing_opaque) ? light_range * LIGHTING_BLOCKED_FACTOR : light_range - var/test_x - var/test_y - - FOR_DVIEW(T, Ceiling(actual_range), source_turf, 0) - check_t: - - if (light_angle && !facing_opaque) // Directional lighting coordinate filter. - test_x = T.x - test_x_offset - test_y = T.y - test_y_offset - - // if the signs of both of these are NOT the same, the point is NOT within the cone. - if ((PSEUDO_WEDGE(limit_a_x, limit_a_y, test_x, test_y) > 0) || (PSEUDO_WEDGE(test_x, test_y, limit_b_x, limit_b_y) > 0)) - continue - - if (TURF_IS_DYNAMICALLY_LIT_UNSAFE(T) || T.light_sources) - Tcorners = T.corners - if (!T.lighting_corners_initialised) - T.lighting_corners_initialised = TRUE - - if (!Tcorners) - T.corners = list(null, null, null, null) - Tcorners = T.corners - - for (var/i = 1 to 4) - if (Tcorners[i]) - continue - - Tcorners[i] = new /datum/lighting_corner(T, LIGHTING_CORNER_DIAGONAL[i]) - - if (!T.has_opaque_atom) - for(var/v = 1 to 4) - var/val = Tcorners[v] - if(val) - corners[val] = 0 - - - - turfs += T - - // Note: above is defined on ALL turfs, but below is only defined on OPEN TURFS. - - // Upwards lights are handled at the corner level, so only search down. - if (T && (T.z_flags & ZM_MIMIC_BELOW) && T.below) - T = T.below - goto check_t - - END_FOR_DVIEW - - LAZYINITLIST(affecting_turfs) - - var/list/L = turfs - affecting_turfs // New turfs, add us to the affecting lights of them. - affecting_turfs += L - for (var/turf/affected_turf as anything in L) - if(!QDELETED(affected_turf)) - T = affected_turf - LAZYADD(T.affecting_lights, src) - - L = affecting_turfs - turfs // Now-gone turfs, remove us from the affecting lights. - affecting_turfs -= L - for (thing in L) - T = thing - LAZYREMOVE(T.affecting_lights, src) - - LAZYINITLIST(effect_str) - if (needs_update == LIGHTING_VIS_UPDATE) - for (thing in corners - effect_str) - C = thing - LAZYADD(C.affecting, src) - if (!C.active) - effect_str[C] = 0 - continue - - APPLY_CORNER_BY_HEIGHT(now) - else - L = corners - effect_str - for (thing in L) - C = thing - LAZYADD(C.affecting, src) - if (!C.active) - effect_str[C] = 0 - continue - - APPLY_CORNER_BY_HEIGHT(now) - - for (thing in corners - L) - C = thing - if (!C.active) - effect_str[C] = 0 - continue - - APPLY_CORNER_BY_HEIGHT(now) - - L = effect_str - corners - for (thing in L) - C = thing - REMOVE_CORNER(C, now) - LAZYREMOVE(C.affecting, src) - - effect_str -= L - - applied_lum_r = lum_r - applied_lum_g = lum_g - applied_lum_b = lum_b - applied_lum_u = lum_u - - UNSETEMPTY(effect_str) - UNSETEMPTY(affecting_turfs) - -#undef INTELLIGENT_UPDATE -#undef PSEUDO_WEDGE diff --git a/code/modules/lighting/lighting_source_sunlight.dm b/code/modules/lighting/lighting_source_sunlight.dm deleted file mode 100644 index 6124e517266..00000000000 --- a/code/modules/lighting/lighting_source_sunlight.dm +++ /dev/null @@ -1,197 +0,0 @@ -#ifdef ENABLE_SUNLIGHT - -/datum/light_source/sunlight - skip_falloff = TRUE - -/datum/light_source/sunlight/update_corners() - var/update = FALSE - - if (QDELETED(source_atom)) - qdel(src) - return - - if (source_atom.light_power != light_power) - light_power = source_atom.light_power - update = TRUE - - if (source_atom.light_range != light_range) - light_range = source_atom.light_range - update = TRUE - - if (!top_atom) - top_atom = source_atom - update = TRUE - - if (top_atom.loc != source_turf) - source_turf = top_atom.loc - update = TRUE - - if (!light_range || !light_power) - qdel(src) - return - - if (isturf(top_atom)) - if (source_turf != top_atom) - source_turf = top_atom - update = TRUE - else if (top_atom.loc != source_turf) - source_turf = top_atom.loc - update = TRUE - - if (!source_turf) - return // Somehow we've got a light in nullspace, no-op. - - if (light_range && light_power && !applied) - update = TRUE - - if (source_atom.light_color != light_color) - light_color = source_atom.light_color - parse_light_color() - update = TRUE - - else if (applied_lum_r != lum_r || applied_lum_g != lum_g || applied_lum_b != lum_b) - update = TRUE - - if (update) - needs_update = LIGHTING_CHECK_UPDATE - else if (needs_update == LIGHTING_CHECK_UPDATE) - return // No change. - - var/list/datum/lighting_corner/corners = list() - var/list/turf/turfs = list() - var/thing - var/datum/lighting_corner/C - var/turf/T - var/Tthing - var/list/Tcorners - - // We don't need no damn vis checks! - for (Tthing in RANGE_TURFS(Ceiling(light_range), source_turf)) - T = Tthing - if (GLOB.the_station_areas[T.loc]) - continue - - check_t: - - if (TURF_IS_DYNAMICALLY_LIT_UNSAFE(T) || T.light_sources) - Tcorners = T.corners - if (!T.lighting_corners_initialised) - T.lighting_corners_initialised = TRUE - - if (!Tcorners) - T.corners = list(null, null, null, null) - Tcorners = T.corners - - for (var/i = 1 to 4) - if (Tcorners[i]) - continue - - Tcorners[i] = new /datum/lighting_corner(T, LIGHTING_CORNER_DIAGONAL[i]) - - if (!T.has_opaque_atom) - corners[Tcorners[1]] = 0 - corners[Tcorners[2]] = 0 - corners[Tcorners[3]] = 0 - corners[Tcorners[4]] = 0 - - turfs += T - - CHECK_TICK - - // Sunlight only checks downwards as it has no need to shine upwards, really. - if (T && (T.z_flags & ZM_MIMIC_BELOW) && T.below) - T = T.below - goto check_t - - LAZYINITLIST(affecting_turfs) - - var/list/L = turfs - affecting_turfs // New turfs, add us to the affecting lights of them. - affecting_turfs += L - for (thing in L) - T = thing - LAZYADD(T.affecting_lights, src) - - L = affecting_turfs - turfs // Now-gone turfs, remove us from the affecting lights. - affecting_turfs -= L - for (thing in L) - T = thing - LAZYREMOVE(T.affecting_lights, src) - - LAZYINITLIST(effect_str) - if (needs_update == LIGHTING_VIS_UPDATE) - for (thing in corners - effect_str) - C = thing - LAZYADD(C.affecting, src) - if (!C.active) - effect_str[C] = 0 - continue - - APPLY_CORNER_SIMPLE(C) - else - L = corners - effect_str - for (thing in L) - C = thing - LAZYADD(C.affecting, src) - if (!C.active) - effect_str[C] = 0 - continue - - APPLY_CORNER_SIMPLE(C) - - for (thing in corners - L) - C = thing - if (!C.active) - effect_str[C] = 0 - continue - - APPLY_CORNER_SIMPLE(C) - - L = effect_str - corners - for (thing in L) - C = thing - REMOVE_CORNER(C, FALSE) - LAZYREMOVE(C.affecting, src) - - effect_str -= L - - applied_lum_r = lum_r - applied_lum_g = lum_g - applied_lum_b = lum_b - applied_lum_u = lum_u - - UNSETEMPTY(effect_str) - UNSETEMPTY(affecting_turfs) - -/datum/light_source/sunlight/regenerate_angle() - return - -#define QUEUE_UPDATE(level) \ - if (needs_update == LIGHTING_NO_UPDATE) \ - SSlighting.light_queue += src; \ - if (needs_update < level) \ - needs_update = level; - -/datum/light_source/sunlight/update(atom/new_top_atom) - // This top atom is different. - if (new_top_atom && new_top_atom != top_atom) - if(top_atom != source_atom) // Remove ourselves from the light sources of that top atom. - LAZYREMOVE(top_atom.light_sources, src) - - top_atom = new_top_atom - - if (top_atom != source_atom) - LAZYADD(top_atom.light_sources, src) // Add ourselves to the light sources of our new top atom. - - //L_PROF(source_atom, "source_update") - - QUEUE_UPDATE(LIGHTING_CHECK_UPDATE) - -/datum/light_source/sunlight/force_update() - QUEUE_UPDATE(LIGHTING_FORCE_UPDATE) - -/datum/light_source/sunlight/vis_update() - QUEUE_UPDATE(LIGHTING_VIS_UPDATE) - -#undef QUEUE_UPDATE - -#endif diff --git a/code/modules/lighting/lighting_static/static_lighting_area.dm b/code/modules/lighting/lighting_static/static_lighting_area.dm new file mode 100644 index 00000000000..2e95c77e9ec --- /dev/null +++ b/code/modules/lighting/lighting_static/static_lighting_area.dm @@ -0,0 +1,12 @@ +/area + ///Whether this area allows static lighting and thus loads the lighting objects + var/static_lighting = TRUE + +//Non static lighting areas. +//Any lighting area that wont support static lights. +//These areas will NOT have corners generated. + +/area/space + static_lighting = FALSE + base_lighting_alpha = 255 + diff --git a/code/modules/lighting/lighting_static/static_lighting_atom.dm b/code/modules/lighting/lighting_static/static_lighting_atom.dm new file mode 100644 index 00000000000..0f7be52b351 --- /dev/null +++ b/code/modules/lighting/lighting_static/static_lighting_atom.dm @@ -0,0 +1,25 @@ + +/atom + ///The light source, datum. Dont fuck with this directly + var/tmp/datum/static_light_source/static_light + ///Static light sources currently attached to this atom, this includes ones owned by atoms inside this atom + var/tmp/list/static_light_sources + +///Pretty simple, just updates static lights on this atom +/atom/proc/static_update_light() + set waitfor = FALSE + if (QDELETED(src)) + return + + if (!light_power || !light_range) // We won't emit light anyways, destroy the light source. + QDEL_NULL(static_light) + else + if(!ismovableatom(loc)) // We choose what atom should be the top atom of the light here. + . = src + else + . = loc + + if(static_light) // Update the light or create it if it does not exist. + static_light.update(.) + else + static_light = new/datum/static_light_source(src, .) diff --git a/code/modules/lighting/lighting_static/static_lighting_corner.dm b/code/modules/lighting/lighting_static/static_lighting_corner.dm new file mode 100644 index 00000000000..4f026e05e86 --- /dev/null +++ b/code/modules/lighting/lighting_static/static_lighting_corner.dm @@ -0,0 +1,176 @@ +// Because we can control each corner of every lighting object. +// And corners get shared between multiple turfs (unless you're on the corners of the map, then 1 corner doesn't). +// For the record: these should never ever ever be deleted, even if the turf doesn't have dynamic lighting. + +/datum/static_lighting_corner + var/list/datum/static_light_source/affecting // Light sources affecting us. + + var/x = 0 + var/y = 0 + + var/turf/master_NE + var/turf/master_SE + var/turf/master_SW + var/turf/master_NW + + var/lum_r = 0 + var/lum_g = 0 + var/lum_b = 0 + + //true color values, guaranteed to be between 0 and 1 + var/cache_r = LIGHTING_SOFT_THRESHOLD + var/cache_g = LIGHTING_SOFT_THRESHOLD + var/cache_b = LIGHTING_SOFT_THRESHOLD + + ///the maximum of lum_r, lum_g, and lum_b. if this is > 1 then the three cached color values are divided by this + var/largest_color_luminosity = 0 + + ///whether we are to be added to SSlighting's corners_queue list for an update + var/needs_update = FALSE + +/datum/static_lighting_corner/New(turf/new_turf, diagonal) + . = ..() + save_master(new_turf, turn(diagonal, 180)) + + var/vertical = diagonal & ~(diagonal - 1) // The horizontal directions (4 and 8) are bigger than the vertical ones (1 and 2), so we can reliably say the lsb is the horizontal direction. + var/horizontal = diagonal & ~vertical // Now that we know the horizontal one we can get the vertical one. + + x = new_turf.x + (horizontal == EAST ? 0.5 : -0.5) + y = new_turf.y + (vertical == NORTH ? 0.5 : -0.5) + + // My initial plan was to make this loop through a list of all the dirs (horizontal, vertical, diagonal). + // Issue being that the only way I could think of doing it was very messy, slow and honestly overengineered. + // So we'll have this hardcode instead. + var/turf/new_master_turf + + // Diagonal one is easy. + new_master_turf = get_step(new_turf, diagonal) + if(new_master_turf) // In case we're on the map's border. + save_master(new_master_turf, diagonal) + + // Now the horizontal one. + new_master_turf = get_step(new_turf, horizontal) + if(new_master_turf) // Ditto. + save_master(new_master_turf, ((new_master_turf.x > x) ? EAST : WEST) | ((new_master_turf.y > y) ? NORTH : SOUTH)) // Get the dir based on coordinates. + + // And finally the vertical one. + new_master_turf = get_step(new_turf, vertical) + if (new_master_turf) + save_master(new_master_turf, ((new_master_turf.x > x) ? EAST : WEST) | ((new_master_turf.y > y) ? NORTH : SOUTH)) // Get the dir based on coordinates. + +/datum/static_lighting_corner/proc/save_master(turf/master, dir) + switch (dir) + if (NORTHEAST) + master_NE = master + master.lighting_corner_SW = src + if (SOUTHEAST) + master_SE = master + master.lighting_corner_NW = src + if (SOUTHWEST) + master_SW = master + master.lighting_corner_NE = src + if (NORTHWEST) + master_NW = master + master.lighting_corner_SE = src + +/datum/static_lighting_corner/proc/self_destruct_if_idle() + if (!LAZYLEN(affecting)) + qdel(src, force = TRUE) + +/datum/static_lighting_corner/proc/vis_update() + for (var/datum/static_light_source/light_source as anything in affecting) + light_source.vis_update() + +/datum/static_lighting_corner/proc/full_update() + for (var/datum/static_light_source/light_source as anything in affecting) + light_source.recalc_corner(src) + +// God that was a mess, now to do the rest of the corner code! Hooray! +/datum/static_lighting_corner/proc/update_lumcount(delta_r, delta_g, delta_b) + + if(!(delta_r || delta_g || delta_b)) // 0 is falsey ok + return + + lum_r += delta_r + lum_g += delta_g + lum_b += delta_b + + if(!needs_update) + needs_update = TRUE + SSlighting.corners_queue += src + +/datum/static_lighting_corner/proc/update_objects() + // Cache these values a head of time so 4 individual lighting objects don't all calculate them individually. + var/lum_r = src.lum_r + var/lum_g = src.lum_g + var/lum_b = src.lum_b + var/largest_color_luminosity = max(lum_r, lum_g, lum_b) // Scale it so one of them is the strongest lum, if it is above 1. + . = 1 // factor + if (largest_color_luminosity > 1) + . = 1 / largest_color_luminosity + + #if LIGHTING_SOFT_THRESHOLD != 0 + else if (largest_color_luminosity < LIGHTING_SOFT_THRESHOLD) + . = 0 // 0 means soft lighting. + + cache_r = round(lum_r * ., LIGHTING_ROUND_VALUE) || LIGHTING_SOFT_THRESHOLD + cache_g = round(lum_g * ., LIGHTING_ROUND_VALUE) || LIGHTING_SOFT_THRESHOLD + cache_b = round(lum_b * ., LIGHTING_ROUND_VALUE) || LIGHTING_SOFT_THRESHOLD + #else + cache_r = round(lum_r * ., LIGHTING_ROUND_VALUE) + cache_g = round(lum_g * ., LIGHTING_ROUND_VALUE) + cache_b = round(lum_b * ., LIGHTING_ROUND_VALUE) + #endif + + src.largest_color_luminosity = round(largest_color_luminosity, LIGHTING_ROUND_VALUE) + + var/datum/static_lighting_object/lighting_object = master_NE?.static_lighting_object + if (lighting_object && !lighting_object.needs_update) + lighting_object.needs_update = TRUE + SSlighting.objects_queue += lighting_object + + lighting_object = master_SE?.static_lighting_object + if (lighting_object && !lighting_object.needs_update) + lighting_object.needs_update = TRUE + SSlighting.objects_queue += lighting_object + + lighting_object = master_SW?.static_lighting_object + if (lighting_object && !lighting_object.needs_update) + lighting_object.needs_update = TRUE + SSlighting.objects_queue += lighting_object + + lighting_object = master_NW?.static_lighting_object + if (lighting_object && !lighting_object.needs_update) + lighting_object.needs_update = TRUE + SSlighting.objects_queue += lighting_object + + self_destruct_if_idle() + + +/datum/static_lighting_corner/dummy/New() + return + + +/datum/static_lighting_corner/Destroy(force) + if (!force) + return QDEL_HINT_LETMELIVE + + for(var/datum/static_light_source/light_source as anything in affecting) + LAZYREMOVE(light_source.effect_str, src) + affecting = null + + if(master_NE) + master_NE.lighting_corner_SW = null + master_NE.lighting_corners_initialised = FALSE + if(master_SE) + master_SE.lighting_corner_NW = null + master_SE.lighting_corners_initialised = FALSE + if(master_SW) + master_SW.lighting_corner_NE = null + master_SW.lighting_corners_initialised = FALSE + if(master_NW) + master_NW.lighting_corner_SE = null + master_NW.lighting_corners_initialised = FALSE + if(needs_update) + SSlighting.corners_queue -= src + return ..() diff --git a/code/modules/lighting/lighting_static/static_lighting_object.dm b/code/modules/lighting/lighting_static/static_lighting_object.dm new file mode 100644 index 00000000000..bc61bdb06c1 --- /dev/null +++ b/code/modules/lighting/lighting_static/static_lighting_object.dm @@ -0,0 +1,115 @@ +/datum/static_lighting_object + ///the underlay we are currently applying to our turf to apply light + var/mutable_appearance/current_underlay + + ///whether we are already in the SSlighting.objects_queue list + var/needs_update = FALSE + + ///the turf that our light is applied to + var/turf/affected_turf + +/datum/static_lighting_object/New(turf/source) + if(!isturf(source)) + qdel(src, force=TRUE) + stack_trace("a lighting object was assigned to [source], a non turf! ") + return + ..() + + current_underlay = mutable_appearance(LIGHTING_ICON, "transparent", FLOAT_LAYER, LIGHTING_PLANE, 255, RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM) + + affected_turf = source + if (affected_turf.static_lighting_object) + qdel(affected_turf.static_lighting_object, force = TRUE) + stack_trace("a lighting object was assigned to a turf that already had a lighting object!") + + affected_turf.static_lighting_object = src + affected_turf.luminosity = 0 + + needs_update = TRUE + SSlighting.objects_queue += src + +/datum/static_lighting_object/Destroy(force) + if (!force) + return QDEL_HINT_LETMELIVE + SSlighting.objects_queue -= src + if (isturf(affected_turf)) + affected_turf.static_lighting_object = null + affected_turf.luminosity = 1 + affected_turf.underlays -= current_underlay + affected_turf = null + return ..() + +/datum/static_lighting_object/proc/update() + + // To the future coder who sees this and thinks + // "Why didn't he just use a loop?" + // Well my man, it's because the loop performed like shit. + // And there's no way to improve it because + // without a loop you can make the list all at once which is the fastest you're gonna get. + // Oh it's also shorter line wise. + // Including with these comments. + + var/static/datum/static_lighting_corner/dummy/dummy_lighting_corner = new + + var/datum/static_lighting_corner/red_corner = affected_turf.lighting_corner_SW || dummy_lighting_corner + var/datum/static_lighting_corner/green_corner = affected_turf.lighting_corner_SE || dummy_lighting_corner + var/datum/static_lighting_corner/blue_corner = affected_turf.lighting_corner_NW || dummy_lighting_corner + var/datum/static_lighting_corner/alpha_corner = affected_turf.lighting_corner_NE || dummy_lighting_corner + + var/max = max(red_corner.largest_color_luminosity, green_corner.largest_color_luminosity, blue_corner.largest_color_luminosity, alpha_corner.largest_color_luminosity) + + var/rr = red_corner.cache_r + var/rg = red_corner.cache_g + var/rb = red_corner.cache_b + + var/gr = green_corner.cache_r + var/gg = green_corner.cache_g + var/gb = green_corner.cache_b + + var/br = blue_corner.cache_r + var/bg = blue_corner.cache_g + var/bb = blue_corner.cache_b + + var/ar = alpha_corner.cache_r + var/ag = alpha_corner.cache_g + var/ab = alpha_corner.cache_b + + #if LIGHTING_SOFT_THRESHOLD != 0 + var/set_luminosity = max > LIGHTING_SOFT_THRESHOLD + #else + // Because of floating points�?, it won't even be a flat 0. + // This number is mostly arbitrary. + var/set_luminosity = max > 1e-6 + #endif + + if((rr & gr & br & ar) && (rg + gg + bg + ag + rb + gb + bb + ab == 8)) + //anything that passes the first case is very likely to pass the second, and addition is a little faster in this case + affected_turf.underlays -= current_underlay + current_underlay.icon_state = "lighting_transparent" + current_underlay.color = null + affected_turf.underlays += current_underlay + else if(!set_luminosity) + affected_turf.underlays -= current_underlay + current_underlay.icon_state = "lighting_dark" + current_underlay.color = null + affected_turf.underlays += current_underlay + else + affected_turf.underlays -= current_underlay + current_underlay.icon_state = null + current_underlay.color = list( + rr, rg, rb, 00, + gr, gg, gb, 00, + br, bg, bb, 00, + ar, ag, ab, 00, + 00, 00, 00, 01 + ) + + affected_turf.underlays += current_underlay + + var/area/A = affected_turf.loc + //We are luminous + if(set_luminosity) + affected_turf.luminosity = set_luminosity + //We are not lit by static light OR dynamic light. + else if(!LAZYLEN(affected_turf.hybrid_lights_affecting) && !A.base_lighting_alpha) + affected_turf.luminosity = 0 diff --git a/code/modules/lighting/lighting_static/static_lighting_setup.dm b/code/modules/lighting/lighting_static/static_lighting_setup.dm new file mode 100644 index 00000000000..6e1641585b9 --- /dev/null +++ b/code/modules/lighting/lighting_static/static_lighting_setup.dm @@ -0,0 +1,10 @@ +/proc/create_all_lighting_objects() + for(var/area/A in world) + + if(!A.static_lighting) + continue + + for(var/turf/T in A) + new/datum/static_lighting_object(T) + CHECK_TICK + CHECK_TICK diff --git a/code/modules/lighting/lighting_static/static_lighting_source.dm b/code/modules/lighting/lighting_static/static_lighting_source.dm new file mode 100644 index 00000000000..f22ed40418d --- /dev/null +++ b/code/modules/lighting/lighting_static/static_lighting_source.dm @@ -0,0 +1,306 @@ +// This is where the fun begins. +// These are the main datums that emit light. + +/datum/static_light_source + ///The atom we're emitting light from (for example a mob if we're from a flashlight that's being held). + var/atom/top_atom + ///The atom that we belong to. + var/atom/source_atom + + ///The turf under the source atom. + var/turf/source_turf + ///The turf the top_atom appears to over. + var/turf/pixel_turf + ///Intensity of the emitter light. + var/light_power + /// The range of the emitted light. + var/light_range + /// The colour of the light, string, decomposed by parse_light_color() + var/light_color + // Variables for keeping track of the colour. + var/lum_r + var/lum_g + var/lum_b + + // The lumcount values used to apply the light. + var/tmp/applied_lum_r + var/tmp/applied_lum_g + var/tmp/applied_lum_b + + /// List used to store how much we're affecting corners. + var/list/datum/static_lighting_corner/effect_str + + /// Whether we have applied our light yet or not. + var/applied = FALSE + + /// whether we are to be added to SSlighting's static_sources_queue list for an update + var/needs_update = LIGHTING_NO_UPDATE + +// Thanks to Lohikar for flinging this tiny bit of code at me, increasing my brain cell count from 1 to 2 in the process. +// This macro will only offset up to 1 tile, but anything with a greater offset is an outlier and probably should handle its own lighting offsets. +// Anything pixelshifted 16px or more will be considered on the next tile. +#define GET_APPROXIMATE_PIXEL_DIR(PX, PY) ((!(PX) ? 0 : ((PX >= 16 ? EAST : (PX <= -16 ? WEST : 0)))) | (!PY ? 0 : (PY >= 16 ? NORTH : (PY <= -16 ? SOUTH : 0)))) +#define UPDATE_APPROXIMATE_PIXEL_TURF var/_mask = GET_APPROXIMATE_PIXEL_DIR(top_atom.pixel_x, top_atom.pixel_y); pixel_turf = _mask ? (get_step(source_turf, _mask) || source_turf) : source_turf + +/datum/static_light_source/New(atom/owner, atom/top) + source_atom = owner // Set our new owner. + LAZYADD(source_atom.static_light_sources, src) + top_atom = top + if (top_atom != source_atom) + LAZYADD(top_atom.static_light_sources, src) + + source_turf = top_atom + UPDATE_APPROXIMATE_PIXEL_TURF + + light_power = source_atom.light_power + light_range = source_atom.light_range + light_color = source_atom.light_color + + PARSE_LIGHT_COLOR(src) + + update() + +/datum/static_light_source/Destroy(force) + remove_lum() + if (source_atom) + LAZYREMOVE(source_atom.static_light_sources, src) + + if (top_atom) + LAZYREMOVE(top_atom.static_light_sources, src) + + if (needs_update) + SSlighting.static_sources_queue -= src + return ..() + +#define EFFECT_UPDATE(level) \ + if (needs_update == LIGHTING_NO_UPDATE) \ + SSlighting.static_sources_queue += src; \ + if (needs_update < level) \ + needs_update = level; \ + + +/// This proc will cause the light source to update the top atom, and add itself to the update queue. +/datum/static_light_source/proc/update(atom/new_top_atom) + // This top atom is different. + if (new_top_atom && new_top_atom != top_atom) + if(top_atom != source_atom && top_atom.static_light_sources) // Remove ourselves from the light sources of that top atom. + LAZYREMOVE(top_atom.static_light_sources, src) + + top_atom = new_top_atom + + if (top_atom != source_atom) + LAZYADD(top_atom.static_light_sources, src) // Add ourselves to the light sources of our new top atom. + + EFFECT_UPDATE(LIGHTING_CHECK_UPDATE) + +/// Will force an update without checking if it's actually needed. +/datum/static_light_source/proc/force_update() + EFFECT_UPDATE(LIGHTING_FORCE_UPDATE) + +/// Will cause the light source to recalculate turfs that were removed or added to visibility only. +/datum/static_light_source/proc/vis_update() + EFFECT_UPDATE(LIGHTING_VIS_UPDATE) + +// Macro that applies light to a new corner. +// It is a macro in the interest of speed, yet not having to copy paste it. +// If you're wondering what's with the backslashes, the backslashes cause BYOND to not automatically end the line. +// As such this all gets counted as a single line. +// The braces and semicolons are there to be able to do this on a single line. + +//Original lighting falloff calculation. This looks the best out of the three. However, this is also the most expensive. +//#define LUM_FALLOFF(C, T) (1 - CLAMP01(sqrt((C.x - T.x) ** 2 + (C.y - T.y) ** 2 + LIGHTING_HEIGHT) / max(1, light_range))) + +//Cubic lighting falloff. This has the *exact* same range as the original lighting falloff calculation, down to the exact decimal, but it looks a little unnatural due to the harsher falloff and how it's generally brighter across the board. +//#define LUM_FALLOFF(C, T) (1 - CLAMP01((((C.x - T.x) * (C.x - T.x)) + ((C.y - T.y) * (C.y - T.y)) + LIGHTING_HEIGHT) / max(1, light_range*light_range))) + +//Linear lighting falloff. This resembles the original lighting falloff calculation the best, but results in lights having a slightly larger range, which is most noticeable with large light sources. This also results in lights being diamond-shaped, fuck. This looks the darkest out of the three due to how lights are brighter closer to the source compared to the original falloff algorithm. This falloff method also does not at all take into account lighting height, as it acts as a flat reduction to light range with this method. +//#define LUM_FALLOFF(C, T) (1 - CLAMP01(((abs(C.x - T.x) + abs(C.y - T.y))) / max(1, light_range+1))) + +//Linear lighting falloff but with an octagonal shape in place of a diamond shape. Lummox JR please add pointer support. +#define GET_LUM_DIST(DISTX, DISTY) (DISTX + DISTY + abs(DISTX - DISTY)*0.4) +#define LUM_FALLOFF(C, T) (1 - CLAMP01(max(GET_LUM_DIST(abs(C.x - T.x), abs(C.y - T.y)),LIGHTING_HEIGHT) / max(1, light_range+1))) + +#define APPLY_CORNER(C) \ + . = LUM_FALLOFF(C, pixel_turf); \ + . *= light_power; \ + var/OLD = effect_str[C]; \ + C.update_lumcount \ + ( \ + (. * lum_r) - (OLD * applied_lum_r), \ + (. * lum_g) - (OLD * applied_lum_g), \ + (. * lum_b) - (OLD * applied_lum_b) \ + ); + +#define REMOVE_CORNER(C) \ + . = -effect_str[C]; \ + C.update_lumcount \ + ( \ + . * applied_lum_r, \ + . * applied_lum_g, \ + . * applied_lum_b \ + ); + +/// This is the define used to calculate falloff. +/datum/static_light_source/proc/remove_lum() + applied = FALSE + for(var/datum/static_lighting_corner/corner as anything in effect_str) + REMOVE_CORNER(corner) + LAZYREMOVE(corner.affecting, src) + + effect_str = null + +/datum/static_light_source/proc/recalc_corner(datum/static_lighting_corner/corner) + LAZYINITLIST(effect_str) + if (effect_str[corner]) // Already have one. + REMOVE_CORNER(corner) + effect_str[corner] = 0 + + APPLY_CORNER(corner) + effect_str[corner] = . + +/datum/static_light_source/proc/update_corners() + var/update = FALSE + var/atom/source_atom = src.source_atom + + if (QDELETED(source_atom)) + qdel(src) + return + + if (source_atom.light_power != light_power) + light_power = source_atom.light_power + update = TRUE + + if (source_atom.light_range != light_range) + light_range = source_atom.light_range + update = TRUE + + if (!top_atom) + top_atom = source_atom + update = TRUE + + if (!light_range || !light_power) + qdel(src) + return + + if (isturf(top_atom)) + if (source_turf != top_atom) + source_turf = top_atom + UPDATE_APPROXIMATE_PIXEL_TURF + update = TRUE + else if (top_atom.loc != source_turf) + source_turf = top_atom.loc + UPDATE_APPROXIMATE_PIXEL_TURF + update = TRUE + else + var/pixel_loc = get_turf_pixel(top_atom) + if (pixel_loc != pixel_turf) + pixel_turf = pixel_loc + update = TRUE + + if (!isturf(source_turf)) + if (applied) + remove_lum() + return + + if (light_range && light_power && !applied) + update = TRUE + + if (source_atom.light_color != light_color) + light_color = source_atom.light_color + PARSE_LIGHT_COLOR(src) + update = TRUE + + else if (applied_lum_r != lum_r || applied_lum_g != lum_g || applied_lum_b != lum_b) + update = TRUE + + if (update) + needs_update = LIGHTING_CHECK_UPDATE + applied = TRUE + else if (needs_update == LIGHTING_CHECK_UPDATE) + return //nothing's changed + + var/list/datum/static_lighting_corner/corners = list() + var/list/turf/turfs = list() + if (source_turf) + var/oldlum = source_turf.luminosity + source_turf.luminosity = ceil(light_range) + for(var/turf/T in view(ceil(light_range), source_turf)) + if(!IS_OPAQUE_TURF(T)) + if (!T.lighting_corners_initialised) + T.static_generate_missing_corners() + corners[T.lighting_corner_NE] = 0 + corners[T.lighting_corner_SE] = 0 + corners[T.lighting_corner_SW] = 0 + corners[T.lighting_corner_NW] = 0 + turfs += T + + var/turf/above = GET_TURF_ABOVE(T) + + while(above && istransparentturf(above)) + if (!above.lighting_corners_initialised) + above.static_generate_missing_corners() + corners[above.lighting_corner_NE] = 0 + corners[above.lighting_corner_SE] = 0 + corners[above.lighting_corner_SW] = 0 + corners[above.lighting_corner_NW] = 0 + + above = GET_TURF_ABOVE(above) + + turfs += above + + var/turf/below = GET_TURF_BELOW(T) + var/turf/previous = T + + while(below && istransparentturf(previous)) + if (!below.lighting_corners_initialised) + below.static_generate_missing_corners() + corners[below.lighting_corner_NE] = 0 + corners[below.lighting_corner_SE] = 0 + corners[below.lighting_corner_SW] = 0 + corners[below.lighting_corner_NW] = 0 + + previous = below + below = GET_TURF_BELOW(below) + + source_turf.luminosity = oldlum + + var/list/datum/static_lighting_corner/new_corners = (corners - effect_str) + LAZYINITLIST(effect_str) + if (needs_update == LIGHTING_VIS_UPDATE) + for (var/datum/static_lighting_corner/corner as anything in new_corners) + APPLY_CORNER(corner) + if (. != 0) + LAZYADD(corner.affecting, src) + effect_str[corner] = . + else + for (var/datum/static_lighting_corner/corner as anything in new_corners) + APPLY_CORNER(corner) + if (. != 0) + LAZYADD(corner.affecting, src) + effect_str[corner] = . + + for (var/datum/static_lighting_corner/corner as anything in corners - new_corners) // Existing corners + APPLY_CORNER(corner) + if (. != 0) + effect_str[corner] = . + else + LAZYREMOVE(corner.affecting, src) + effect_str -= corner + + var/list/datum/static_lighting_corner/gone_corners = effect_str - corners + for (var/datum/static_lighting_corner/corner as anything in gone_corners) + REMOVE_CORNER(corner) + LAZYREMOVE(corner.affecting, src) + effect_str -= gone_corners + + applied_lum_r = lum_r + applied_lum_g = lum_g + applied_lum_b = lum_b + + UNSETEMPTY(effect_str) + +#undef EFFECT_UPDATE +#undef LUM_FALLOFF +#undef GET_LUM_DIST +#undef REMOVE_CORNER +#undef APPLY_CORNER diff --git a/code/modules/lighting/lighting_static/static_lighting_turf.dm b/code/modules/lighting/lighting_static/static_lighting_turf.dm new file mode 100644 index 00000000000..ec91e17e4fc --- /dev/null +++ b/code/modules/lighting/lighting_static/static_lighting_turf.dm @@ -0,0 +1,64 @@ +/turf + var/tmp/lighting_corners_initialised = FALSE + var/tmp/datum/static_lighting_object/static_lighting_object + + ///Lighting Corner datums. + var/tmp/datum/static_lighting_corner/lighting_corner_NE + var/tmp/datum/static_lighting_corner/lighting_corner_SE + var/tmp/datum/static_lighting_corner/lighting_corner_SW + var/tmp/datum/static_lighting_corner/lighting_corner_NW + +/turf/proc/static_lighting_clear_overlay() + if (static_lighting_object) + qdel(static_lighting_object, TRUE) + +/// Builds a lighting object for us, but only if our area is dynamic. +/turf/proc/static_lighting_build_overlay(area/our_area = loc) + if(static_lighting_object) + qdel(static_lighting_object, force=TRUE) //Shitty fix for lighting objects persisting after death + + new/datum/static_lighting_object(src) + + + +// Returns a boolean whether the turf is on soft lighting. +// Soft lighting being the threshold at which point the overlay considers +// itself as too dark to allow sight and see_in_dark becomes useful. +// So basically if this returns true the tile is unlit black. +/turf/proc/static_is_softly_lit() + if (!static_lighting_object) + return FALSE + + return !(luminosity || dynamic_lumcount) + +///Transfer the lighting of one area to another +/turf/proc/transfer_area_lighting(area/old_area, area/new_area) + if(SSlighting.initialized) + if (new_area.static_lighting != old_area.static_lighting) + if (new_area.static_lighting) + static_lighting_build_overlay(new_area) + else + static_lighting_clear_overlay() + //Inherit overlay of new area + if(old_area.lighting_effect) + overlays -= old_area.lighting_effect + if(new_area.lighting_effect) + overlays += new_area.lighting_effect + + + +/turf/proc/static_generate_missing_corners() + if (!lighting_corner_NE) + lighting_corner_NE = new/datum/static_lighting_corner(src, NORTH|EAST) + + if (!lighting_corner_SE) + lighting_corner_SE = new/datum/static_lighting_corner(src, SOUTH|EAST) + + if (!lighting_corner_SW) + lighting_corner_SW = new/datum/static_lighting_corner(src, SOUTH|WEST) + + if (!lighting_corner_NW) + lighting_corner_NW = new/datum/static_lighting_corner(src, NORTH|WEST) + + lighting_corners_initialised = TRUE + diff --git a/code/modules/lighting/lighting_turf.dm b/code/modules/lighting/lighting_turf.dm index ea6c460b230..cc2b27c9035 100644 --- a/code/modules/lighting/lighting_turf.dm +++ b/code/modules/lighting/lighting_turf.dm @@ -1,184 +1,84 @@ -/turf - var/dynamic_lighting = TRUE - luminosity = 1 +///Estimates the light power based on the alpha of the light and the range. +///Assumes a linear fallout at (0, alpha/255) to (range, 0) +///Used for lightig mask lumcount calculations +#define LIGHT_POWER_ESTIMATION(alpha, range, distance) max((alpha * (range - distance)) / (255 * range), 0) - var/tmp/lighting_corners_initialised = FALSE - - var/tmp/list/datum/light_source/affecting_lights // List of light sources affecting this turf. - var/tmp/atom/movable/lighting_overlay/lighting_overlay // Our lighting overlay. - var/tmp/list/datum/lighting_corner/corners - var/tmp/has_opaque_atom = FALSE // Not to be confused with opacity, this will be TRUE if there's any opaque atom on the tile. - -// Causes any affecting light sources to be queued for a visibility update, for example a door got opened. +/// Causes any affecting light sources to be queued for a visibility update, for example a door got opened. /turf/proc/reconsider_lights() - //L_PROF(src, "turf_reconsider") - var/datum/light_source/L - for (var/thing in affecting_lights) - L = thing - L.vis_update() + //Consider static lights + lighting_corner_NE?.vis_update() + lighting_corner_SE?.vis_update() + lighting_corner_SW?.vis_update() + lighting_corner_NW?.vis_update() -// Forces a lighting update. Reconsider lights is preferred when possible. -/turf/proc/force_update_lights() - //L_PROF(src, "turf_forceupdate") - var/datum/light_source/L - for (var/thing in affecting_lights) - L = thing - L.force_update() - -/turf/proc/lighting_clear_overlay() - if (lighting_overlay) - if (lighting_overlay.loc != src) - var/turf/badT = lighting_overlay.loc - crash_with("Lighting overlay variable on turf [DEBUG_REF(src)] is insane, lighting overlay actually located on [DEBUG_REF(lighting_overlay.loc)] at ([badT.x],[badT.y],[badT.z])!") - - qdel(lighting_overlay, TRUE) - lighting_overlay = null - - //L_PROF(src, "turf_clear_overlay") - - for (var/datum/lighting_corner/C in corners) - C.update_active() - -// Builds a lighting overlay for us, but only if our area is dynamic. -/turf/proc/lighting_build_overlay() - if (lighting_overlay) - return - - //L_PROF(src, "turf_build_overlay") - - var/area/A = loc - if (A.dynamic_lighting && dynamic_lighting) - if (!lighting_corners_initialised || !corners) - generate_missing_corners() - - new /atom/movable/lighting_overlay(src) - - for (var/datum/lighting_corner/C in corners) - if (!C.active) // We would activate the corner, calculate the lighting for it. - for (var/L in C.affecting) - var/datum/light_source/S = L - S.recalc_corner(C, TRUE) - - C.active = TRUE - -// Returns the average color of this tile. Roughly corresponds to the color of a single old-style lighting overlay. -/turf/proc/get_avg_color() - if (!lighting_overlay) - return null - - var/lum_r - var/lum_g - var/lum_b - - for (var/datum/lighting_corner/L in corners) - lum_r += L.lum_r - lum_g += L.lum_g - lum_b += L.lum_b - - lum_r = CLAMP01(lum_r / 4) * 255 - lum_g = CLAMP01(lum_g / 4) * 255 - lum_b = CLAMP01(lum_b / 4) * 255 - - return "#[num2hex(lum_r, 2)][num2hex(lum_g, 2)][num2hex(lum_g, 2)]" - -#define SCALE(targ,min,max) (targ - min) / (max - min) + //consider dynamic lights + for(var/atom/movable/lighting_mask/mask as anything in hybrid_lights_affecting) + mask.queue_mask_update() // Used to get a scaled lumcount. /turf/proc/get_lumcount(minlum = 0, maxlum = 1) - if (!lighting_overlay) - return 0.5 - var/totallums = 0 - for (var/datum/lighting_corner/L in corners) - totallums += L.lum_r + L.lum_b + L.lum_g + if (static_lighting_object) + var/datum/static_lighting_corner/L + L = lighting_corner_NE + if (L) + totallums += L.lum_r + L.lum_b + L.lum_g + L = lighting_corner_SE + if (L) + totallums += L.lum_r + L.lum_b + L.lum_g + L = lighting_corner_SW + if (L) + totallums += L.lum_r + L.lum_b + L.lum_g + L = lighting_corner_NW + if (L) + totallums += L.lum_r + L.lum_b + L.lum_g - totallums /= 12 // 4 corners, each with 3 channels, get the average. + totallums /= 12 // 4 corners, each with 3 channels, get the average. - totallums = SCALE(totallums, minlum, maxlum) + totallums = (totallums - minlum) / (maxlum - minlum) - return CLAMP01(totallums) - -// Gets the current UV illumination of the turf. Always 100% for space & other static-lit tiles. -/turf/proc/get_uv_lumcount(minlum = 0, maxlum = 1) - if (!lighting_overlay) - return 1 - - L_PROF(src, "turf_get_uv") - - var/totallums = 0 - for (var/datum/lighting_corner/L in corners) - totallums += L.lum_u - - totallums /= 4 // average of four corners. - - totallums = SCALE(totallums, minlum, maxlum) - - return CLAMP01(totallums) - -#undef SCALE - -// Can't think of a good name, this proc will recalculate the has_opaque_atom variable. -/turf/proc/recalc_atom_opacity() -#ifdef AO_USE_LIGHTING_OPACITY - var/old = has_opaque_atom -#endif - - has_opaque_atom = FALSE - if (opacity) - has_opaque_atom = TRUE + totallums = CLAMP01(totallums) else - for (var/thing in src) // Loop through every movable atom on our tile - var/atom/movable/A = thing - if (A.opacity && !QDELETED(A)) - has_opaque_atom = TRUE - break // No need to continue if we find something opaque. - -#ifdef AO_USE_LIGHTING_OPACITY - if (old != has_opaque_atom) - regenerate_ao() -#endif - -/turf/Exited(atom/movable/Obj, atom/newloc) - . = ..() - - if (Obj && Obj.opacity) - recalc_atom_opacity() // Make sure to do this before reconsider_lights(), incase we're on instant updates. - reconsider_lights() - -/turf/proc/transfer_area_lighting(area/old_area, area/new_area) - if (new_area.dynamic_lighting != old_area.dynamic_lighting) - if (new_area.dynamic_lighting) - lighting_build_overlay() + totallums = 1 + for(var/atom/movable/lighting_mask/mask as anything in hybrid_lights_affecting) + if(mask.blend_mode == BLEND_ADD) + totallums += LIGHT_POWER_ESTIMATION(mask.alpha, mask.radius, get_dist(src, get_turf(mask.attached_atom))) else - lighting_clear_overlay() + totallums -= LIGHT_POWER_ESTIMATION(mask.alpha, mask.radius, get_dist(src, get_turf(mask.attached_atom))) + totallums += dynamic_lumcount + return clamp(totallums, 0.0, 1.0) -// This is inlined in lighting_source.dm and lighting_source_novis.dm. -// Update them too if you change this. -/turf/proc/get_corners() - if (!dynamic_lighting && !light_sources) - return null - - if (!lighting_corners_initialised) - generate_missing_corners() - - if (has_opaque_atom) - return null // Since this proc gets used in a for loop, null won't be looped though. - - return corners - -// This is inlined in lighting_source.dm and lighting_source_novis.dm. -// Update them too if you change this. -/turf/proc/generate_missing_corners() - if (!dynamic_lighting && !light_sources) +///Proc to add movable sources of opacity on the turf and let it handle lighting code. +/turf/proc/add_opacity_source(atom/movable/new_source) + LAZYADD(opacity_sources, new_source) + if(opacity) return + recalculate_directional_opacity() - lighting_corners_initialised = TRUE - if (!corners) - corners = list(null, null, null, null) - for (var/i = 1 to 4) - if (corners[i]) // Already have a corner on this direction. - continue +///Proc to remove movable sources of opacity on the turf and let it handle lighting code. +/turf/proc/remove_opacity_source(atom/movable/old_source) + LAZYREMOVE(opacity_sources, old_source) + if(opacity) //Still opaque, no need to worry on updating. + return + recalculate_directional_opacity() - corners[i] = new/datum/lighting_corner(src, LIGHTING_CORNER_DIAGONAL[i]) + +///Calculate on which directions this turfs block view. +/turf/proc/recalculate_directional_opacity() + . = directional_opacity + if(opacity) + directional_opacity = ALL_CARDINALS + if(. != directional_opacity) + reconsider_lights() + return + directional_opacity = NONE + for(var/atom/movable/opacity_source as anything in opacity_sources) + if(opacity_source.atom_flags & ATOM_FLAG_CHECKS_BORDER) + directional_opacity |= opacity_source.dir + else //If fulltile and opaque, then the whole tile blocks view, no need to continue checking. + directional_opacity = ALL_CARDINALS + break + if(. != directional_opacity && (. == ALL_CARDINALS || directional_opacity == ALL_CARDINALS)) + reconsider_lights() //The lighting system only cares whether the tile is fully concealed from all directions or not. diff --git a/code/modules/lighting/lighting_verbs.dm b/code/modules/lighting/lighting_verbs.dm deleted file mode 100644 index ceb67c51993..00000000000 --- a/code/modules/lighting/lighting_verbs.dm +++ /dev/null @@ -1,102 +0,0 @@ -GLOBAL_LIST_INIT(admin_verbs_lighting, list( - /client/proc/lighting_hide_verbs, - /client/proc/lighting_flush, - /client/proc/lighting_reconsider_target, - /client/proc/lighting_build_overlay, - /client/proc/lighting_clear_overlay, - /client/proc/lighting_toggle_profiling -)) - -/client/proc/lighting_show_verbs() - set category = "Debug" - set name = "Show Lighting Verbs" - set desc = "Shows the lighting debug verbs." - - if (!check_rights(R_DEBUG|R_DEV)) return - - to_chat(src, SPAN_NOTICE("Lighting debug verbs have been shown.")) - add_verb(src, GLOB.admin_verbs_lighting) - -/client/proc/lighting_hide_verbs() - set category = "Lighting" - set name = "Hide Lighting Verbs" - set desc = "Hides the lighting debug verbs." - - if (!check_rights(R_DEBUG|R_DEV)) return - - to_chat(src, SPAN_NOTICE("Lighting debug verbs have been hidden.")) - remove_verb(src, GLOB.admin_verbs_lighting) - -/client/proc/lighting_flush() - set category = "Lighting" - set name = "Flush Work Queue" - set desc = "Flushes the lighting processor's current work queue." - - if (!check_rights(R_DEBUG|R_DEV)) return - - if (alert("Flush Lighting Work Queue? This will invalidate all pending lighting updates.", "Reset Lighting", "No", "No", "Yes") != "Yes") - return - - log_and_message_admins("has flushed the lighting processor queues.") - SSlighting.light_queue = list() - SSlighting.corner_queue = list() - SSlighting.overlay_queue = list() - -/client/proc/lighting_reconsider_target(turf/T in world) - set category = "Lighting" - set name = "Reconsider Visibility" - set desc = "Triggers a visibility update for a turf." - - if (!check_rights(R_DEBUG|R_DEV)) return - - if (TURF_IS_DYNAMICALLY_LIT(T)) - to_chat(src, "That turf is not dynamically lit.") - return - - log_and_message_admins("has triggered a lighting update for turf [REF(T)] - [T] at ([T.x],[T.y],[T.z]) in area [T.loc].") - - T.reconsider_lights() - -/client/proc/lighting_build_overlay(turf/T in world) - set category = "Lighting" - set name = "Build Overlay" - set desc = "Builds a lighting overlay for a turf if it does not have one." - - if (!check_rights(R_DEBUG|R_DEV)) return - - if (T.lighting_overlay) - to_chat(src, "That turf already has a lighting overlay.") - return - - log_and_message_admins("has generated a lighting overlay for turf [REF(T)] - [T] ([T.x],[T.y],[T.z]) in area [T.loc].") - - T.lighting_build_overlay() - -/client/proc/lighting_clear_overlay(turf/T in world) - set category = "Lighting" - set name = "Clear Overlay" - set desc = "Clears a lighting overlay for a turf if it has one." - - if (!check_rights(R_DEBUG|R_DEV)) return - - if (!T.lighting_overlay) - to_chat(src, "That turf doesn't have a lighting overlay.") - return - - log_and_message_admins("has cleared a lighting overlay for turf [REF(T)] - [T] ([T.x],[T.y],[T.z]) in area [T.loc].") - - T.lighting_clear_overlay() - -/client/proc/lighting_toggle_profiling() - set category = "Lighting" - set name = "Profile Lighting" - set desc = "Spams the database with lighting updates. Y'know, just 'cause." - - if (!check_rights(R_DEBUG|R_SERVER)) return - - if (!establish_db_connection(GLOB.dbcon)) - to_chat(usr, SPAN_ALERT("Unable to start profiling: No active database connection.")) - return - - GLOB.lighting_profiling = !GLOB.lighting_profiling - log_and_message_admins("has [GLOB.lighting_profiling ? "enabled" : "disabled"] lighting profiling.") diff --git a/code/modules/lighting/~lighting_undefs.dm b/code/modules/lighting/~lighting_undefs.dm deleted file mode 100644 index dd53aa937f5..00000000000 --- a/code/modules/lighting/~lighting_undefs.dm +++ /dev/null @@ -1,13 +0,0 @@ -#undef LIGHTING_HEIGHT - -#undef LIGHTING_ICON - -#undef LIGHTING_BASE_MATRIX - -#undef LUM_FALLOFF -#undef REMOVE_CORNER -#undef APPLY_CORNER - -#undef CALCULATE_CORNER_HEIGHT -#undef APPLY_CORNER_BY_HEIGHT -#undef APPLY_CORNER_SIMPLE diff --git a/code/modules/mapping/map_template.dm b/code/modules/mapping/map_template.dm index 9885f829136..86e8a83f7f0 100644 --- a/code/modules/mapping/map_template.dm +++ b/code/modules/mapping/map_template.dm @@ -54,7 +54,6 @@ /datum/map_template/proc/load_new_z(var/no_changeturf = TRUE) var/x = round((world.maxx - width)/2) var/y = round((world.maxy - height)/2) - var/initial_z = world.maxz + 1 if (x < 1) x = 1 if (y < 1) y = 1 @@ -97,8 +96,6 @@ //initialize things that are normally initialized after map load init_atoms(atoms_to_initialise) init_shuttles(shuttle_state) - for(var/light_z = initial_z to world.maxz) - create_lighting_overlays_zlevel(light_z) log_game("Z-level [name] loaded at [x], [y], [world.maxz]") message_admins("Z-level [name] loaded at [x], [y], [world.maxz]") SSicon_smooth.can_fire = TRUE @@ -164,10 +161,17 @@ T.post_change(FALSE) if(template_flags & TEMPLATE_FLAG_NO_RUINS) T.turf_flags |= TURF_NORUINS + if(istype(T,/turf/simulated)) var/turf/simulated/sim = T sim.update_air_properties() + if(SSlighting.initialized) //don't generate lighting overlays before SSlighting in case these templates are loaded before + var/area/A = T.loc + if(A?.area_has_base_lighting) + continue + T.static_lighting_build_overlay() + /datum/map_template/proc/load(turf/T, centered = FALSE) if(centered) T = locate(T.x - round(width / 2) , T.y - round(height / 2) , T.z) diff --git a/code/modules/mapping/reader.dm b/code/modules/mapping/reader.dm index a83b502eb0c..f52208b7ece 100644 --- a/code/modules/mapping/reader.dm +++ b/code/modules/mapping/reader.dm @@ -140,6 +140,7 @@ GLOBAL_DATUM_INIT(_preloader, /dmm_suite/preloader, new) else world.maxz = zcrd //create a new z_level if needed SEND_GLOBAL_SIGNAL(COMSIG_GLOB_NEW_Z, world.maxz) + SSzcopy.calculate_zstack_limits() if(!no_changeturf) WARNING("Z-level expansion occurred without no_changeturf set, this may cause problems when /turf/post_change is called.") diff --git a/code/modules/mapping/space_management/zlevel_manager.dm b/code/modules/mapping/space_management/zlevel_manager.dm index d9c2d797106..f813d2c4ed8 100644 --- a/code/modules/mapping/space_management/zlevel_manager.dm +++ b/code/modules/mapping/space_management/zlevel_manager.dm @@ -13,6 +13,7 @@ generate_linkages_for_z_level(new_z) adding_new_zlevel = FALSE SEND_GLOBAL_SIGNAL(COMSIG_GLOB_NEW_Z, S) + SSzcopy.calculate_zstack_limits() return S /datum/controller/subsystem/mapping/proc/get_level(z) diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index b6f61c4c5a1..3c0a2159c27 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -549,7 +549,6 @@ light_power = 1 light_range = 6 - light_wedge = LIGHT_WIDE light_color = LIGHT_COLOR_FIRE /obj/vehicle/train/cargo/engine/mining/Initialize() @@ -601,7 +600,6 @@ light_power = 1 light_range = 3 - light_wedge = LIGHT_OMNI light_color = LIGHT_COLOR_FIRE /obj/item/key/minecarts diff --git a/code/modules/mining/mine_turf_types.dm b/code/modules/mining/mine_turf_types.dm index c6684439104..9df91fea42c 100644 --- a/code/modules/mining/mine_turf_types.dm +++ b/code/modules/mining/mine_turf_types.dm @@ -107,7 +107,7 @@ /turf/simulated/floor/exoplanet/basalt/cave/Initialize() // to make these tiles dark even on daytime exoplanets . = ..() - set_light(0, 1, null) + set_light(0) footprint_color = null update_icon(1) diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 01db9e9be79..4d943feeb4e 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -76,12 +76,16 @@ GLOBAL_LIST_INIT(mineral_can_smooth_with, list( if(is_station_level(z)) GLOB.station_turfs += src - if(dynamic_lighting) - luminosity = 0 - else - luminosity = 1 + if (light_range && light_power) + update_light() - has_opaque_atom = TRUE + //Get area light + var/area/current_area = loc + if(current_area?.lighting_effect) + overlays += current_area.lighting_effect + + if(opacity) + directional_opacity = ALL_CARDINALS if(smoothing_flags) canSmoothWith = GLOB.mineral_can_smooth_with @@ -210,12 +214,16 @@ GLOBAL_LIST_INIT(mineral_can_smooth_with, list( if(is_station_level(z)) GLOB.station_turfs += src - if(dynamic_lighting) - luminosity = 0 - else - luminosity = 1 + if (light_range && light_power) + update_light() - has_opaque_atom = TRUE + //Get area light + var/area/current_area = loc + if(current_area?.lighting_effect) + overlays += current_area.lighting_effect + + if(opacity) + directional_opacity = ALL_CARDINALS if(smoothing_flags) canSmoothWith = asteroid_can_smooth_with @@ -753,14 +761,6 @@ GLOBAL_LIST_INIT(asteroid_floor_smooth, list( if(is_station_level(z)) GLOB.station_turfs += src - if(dynamic_lighting) - luminosity = 0 - else - luminosity = 1 - - if(mapload && permit_ao) - queue_ao() - if(smoothing_flags) canSmoothWith = GLOB.asteroid_floor_smooth pixel_x = -4 @@ -769,6 +769,11 @@ GLOBAL_LIST_INIT(asteroid_floor_smooth, list( if(light_range && light_power) update_light() + //Get area light + var/area/current_area = loc + if(current_area?.lighting_effect) + overlays += current_area.lighting_effect + return INITIALIZE_HINT_NORMAL /turf/simulated/floor/exoplanet/asteroid/ex_act(severity) @@ -926,7 +931,7 @@ GLOBAL_LIST_INIT(asteroid_floor_smooth, list( return /turf/simulated/floor/exoplanet/asteroid/proc/gets_dug(mob/user) - AddOverlays("asteroid_dug", TRUE) + AddOverlays("asteroid_dug") if(prob(75)) new /obj/item/ore/glass(src) @@ -980,7 +985,7 @@ GLOBAL_LIST_INIT(asteroid_floor_smooth, list( if(dug <= 10) dug += 1 - AddOverlays("asteroid_dug", TRUE) + AddOverlays("asteroid_dug") else var/turf/below = GET_TURF_BELOW(src) if(below) diff --git a/code/modules/mining/minebot.dm b/code/modules/mining/minebot.dm index d3c86706839..318a4a1567d 100644 --- a/code/modules/mining/minebot.dm +++ b/code/modules/mining/minebot.dm @@ -132,7 +132,7 @@ /mob/living/silicon/robot/drone/mining/update_robot_light() if(lights_on) - set_light(5, 1, LIGHT_COLOR_FIRE, angle = LIGHT_OMNI) + set_light(5, 1, LIGHT_COLOR_FIRE) else set_light(0) diff --git a/code/modules/mob/abstract/freelook/eye.dm b/code/modules/mob/abstract/freelook/eye.dm index 27a9cd9b755..fa18f23cfa5 100644 --- a/code/modules/mob/abstract/freelook/eye.dm +++ b/code/modules/mob/abstract/freelook/eye.dm @@ -22,7 +22,6 @@ var/mob/owner = null var/list/visibleChunks = list() - var/ghostimage = null var/datum/visualnet/visualnet ///Set if the eye uses special click handling. Distinct from parent mob click handling for AI eye. var/click_handler_type = /datum/click_handler/eye @@ -30,21 +29,7 @@ ///Whether or not our eye uses normal living vision handling var/living_eye = TRUE -/mob/abstract/eye/New() - ghostimage = image(src.icon,src,src.icon_state) - SSmobs.ghost_darkness_images |= ghostimage //so ghosts can see the eye when they disable darkness - SSmobs.ghost_sightless_images |= ghostimage //so ghosts can see the eye when they disable ghost sight - updateallghostimages() - ..() - /mob/abstract/eye/Destroy() - if (ghostimage) - SSmobs.ghost_darkness_images -= ghostimage - SSmobs.ghost_sightless_images -= ghostimage - qdel(ghostimage) - ghostimage = null - updateallghostimages() - release(owner) owner = null visualnet = null diff --git a/code/modules/mob/abstract/ghost/ghost.dm b/code/modules/mob/abstract/ghost/ghost.dm index d0162ea6937..39c9b2ec8f2 100644 --- a/code/modules/mob/abstract/ghost/ghost.dm +++ b/code/modules/mob/abstract/ghost/ghost.dm @@ -1,10 +1,8 @@ /mob/abstract/ghost stat = DEAD - /// Toggle darkness. - var/see_darkness = FALSE /// Is the ghost able to see things humans can't? - var/ghostvision = FALSE + var/ghostvision = TRUE /// This variable generally controls whether a ghost has restrictions on where it can go or not (ex. if the ghost can bypass holy places). var/has_ghost_restrictions = TRUE /// If the ghost has antagHUD. @@ -56,17 +54,22 @@ set name = "Toggle Darkness" set category = "Ghost" - see_darkness = !see_darkness - update_sight() - -/mob/abstract/ghost/proc/update_sight() - set_sight(sight|SEE_TURFS|SEE_MOBS|SEE_OBJS) - set_see_invisible(SEE_INVISIBLE_LEVEL_TWO) - - if (!see_darkness) - set_see_invisible(SEE_INVISIBLE_NOLIGHTING) - else - set_see_invisible(ghostvision ? SEE_INVISIBLE_OBSERVER : SEE_INVISIBLE_LIVING) + var/level_message + switch(lighting_alpha) + if(LIGHTING_PLANE_ALPHA_VISIBLE) + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE + level_message = "half night vision" + if(LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE) + lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE + level_message = "three quarters night vision" + if(LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE) + lighting_alpha = LIGHTING_PLANE_ALPHA_INVISIBLE + level_message = "full night vision" + if(LIGHTING_PLANE_ALPHA_INVISIBLE) + lighting_alpha = LIGHTING_PLANE_ALPHA_VISIBLE + level_message = "no night vision" + to_chat(src, SPAN_NOTICE("Night vision mode switched and saved to [level_message].")) + sync_lighting_plane_alpha() /mob/abstract/ghost/verb/toggle_ghostsee() set name = "Toggle Ghost Vision" @@ -152,6 +155,20 @@ to_chat(src, SPAN_NOTICE("Now following \the [target].")) update_sight() +/mob/abstract/ghost/proc/update_sight() + //if they are on a restricted level, then set the ghost vision for them. + if(on_restricted_level()) + //On the restricted level they have the same sight as the mob + set_sight(sight&(~SEE_TURFS)&(~SEE_MOBS)&(~SEE_OBJS)) + else + //Outside of the restrcited level, they have enhanced vision + set_sight(sight|SEE_TURFS|SEE_MOBS|SEE_OBJS) + + if(ghostvision) + set_see_invisible(SEE_INVISIBLE_OBSERVER) //overmap viewing breaks if this is lower + else + set_see_invisible(SEE_INVISIBLE_LIVING) + /mob/abstract/ghost/proc/on_restricted_level(var/check) if(!check) check = z diff --git a/code/modules/mob/abstract/ghost/observer/login.dm b/code/modules/mob/abstract/ghost/observer/login.dm deleted file mode 100644 index 7bbc25e8d36..00000000000 --- a/code/modules/mob/abstract/ghost/observer/login.dm +++ /dev/null @@ -1,5 +0,0 @@ -/mob/abstract/ghost/observer/LateLogin() - ..() - if (ghostimage) - ghostimage.icon_state = src.icon_state - updateghostimages() diff --git a/code/modules/mob/abstract/ghost/observer/observer.dm b/code/modules/mob/abstract/ghost/observer/observer.dm index aadc4fdd5ab..a360afa2762 100644 --- a/code/modules/mob/abstract/ghost/observer/observer.dm +++ b/code/modules/mob/abstract/ghost/observer/observer.dm @@ -8,6 +8,7 @@ blinded = FALSE anchored = TRUE // don't get pushed around invisibility = INVISIBILITY_OBSERVER + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE simulated = FALSE universal_speak = TRUE incorporeal_move = INCORPOREAL_GHOST @@ -28,8 +29,6 @@ var/admin_ghosted = 0 /// If this ghost has enabled chat anonymization. var/anonsay = 0 - /// This mob's ghost image, for deleting and stuff. - var/image/ghostimage /// If the ghost can be seen through cult shenanigans. var/is_manifest = 0 /// Cooldown for ghost abilities, such as move_item(). @@ -42,10 +41,6 @@ set_stat(DEAD) - ghostimage = image(icon, src, icon_state) - SSmobs.ghost_darkness_images |= ghostimage - updateallghostimages() - var/turf/T if (ismob(body)) T = get_turf(body) //Where is the body located? @@ -54,6 +49,7 @@ var/originaldesc = desc var/o_transform = transform set_appearance(body) + underlays.Cut() appearance_flags = KEEP_TOGETHER desc = originaldesc transform = o_transform @@ -88,15 +84,6 @@ name = capitalize(pick(GLOB.first_names_male)) + " " + capitalize(pick(GLOB.last_names)) real_name = name -/mob/abstract/ghost/observer/Destroy() - if (ghostimage) - SSmobs.ghost_darkness_images -= ghostimage - qdel(ghostimage) - ghostimage = null - updateallghostimages() - - return ..() - /mob/abstract/ghost/observer/proc/initialise_postkey(set_timers = TRUE) //This function should be run after a ghost has been created and had a ckey assigned if (!set_timers) @@ -574,47 +561,12 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp /mob/abstract/ghost/observer/can_admin_interact() return check_rights(R_ADMIN, 0, src) -/mob/abstract/ghost/observer/update_sight() - //if they are on a restricted level, then set the ghost vision for them. - if(on_restricted_level()) - //On the restricted level they have the same sight as the mob - set_sight(sight&(~SEE_TURFS)&(~SEE_MOBS)&(~SEE_OBJS)) - set_see_invisible(SEE_INVISIBLE_OBSERVER) - else - //Outside of the restrcited level, they have enhanced vision - set_sight(sight|SEE_TURFS|SEE_MOBS|SEE_OBJS) - set_see_invisible(SEE_INVISIBLE_LEVEL_TWO) - - if (!see_darkness) - set_see_invisible(SEE_INVISIBLE_NOLIGHTING) - else - set_see_invisible(ghostvision ? SEE_INVISIBLE_OBSERVER : SEE_INVISIBLE_LIVING) - - updateghostimages() - -/proc/updateallghostimages() - for (var/mob/abstract/ghost/observer/O in GLOB.player_list) - O.updateghostimages() - -/mob/abstract/ghost/observer/proc/updateghostimages() - if (!client) - return - if (see_darkness || !ghostvision) - client.images -= SSmobs.ghost_darkness_images - client.images |= SSmobs.ghost_sightless_images - else - //add images for the 60inv things ghosts can normally see when darkness is enabled so they can see them now - client.images -= SSmobs.ghost_sightless_images - client.images |= SSmobs.ghost_darkness_images - if (ghostimage) - client.images -= ghostimage //remove ourself - /** * We use this proc to set appearance because doing so resets the plane. * We want the plane to stay at GHOST_PLANE to avoid weird overlaying stuff. */ -/mob/abstract/ghost/observer/proc/set_appearance(new_appearance) - appearance = new_appearance +/mob/abstract/ghost/observer/proc/set_appearance(mob/body) + appearance = body.appearance plane = GHOST_PLANE /mob/abstract/ghost/observer/MayRespawn(var/feedback = 0, var/respawn_type = null) diff --git a/code/modules/mob/living/carbon/diona_base.dm b/code/modules/mob/living/carbon/diona_base.dm index 687b3dbf5c5..961ec4504a6 100644 --- a/code/modules/mob/living/carbon/diona_base.dm +++ b/code/modules/mob/living/carbon/diona_base.dm @@ -493,7 +493,7 @@ Lightstates: light_factor = 1 if (T) - var/raw = min(T.get_uv_lumcount(0, 2) * light_factor * 5.5, 5.5) + var/raw = min(T.get_lumcount(0, 1) * light_factor * 5.5, 5.5) return raw - 1.5 /// Getter for health. diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 28f7351f405..2652b8724bb 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1553,6 +1553,8 @@ nutrition_loss = HUNGER_FACTOR * species.nutrition_loss_factor hydration_loss = THIRST_FACTOR * species.hydration_loss_factor + default_lighting_alpha = species.default_lighting_alpha + speech_bubble_type = species.possible_speech_bubble_types[1] if(typing_indicator) adjust_typing_indicator_offsets(typing_indicator) diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index c1d96fd77a7..301b443944c 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -1,4 +1,5 @@ /mob/living/carbon/human + light_system = MOVABLE_LIGHT blocks_emissive = EMISSIVE_BLOCK_NONE @@ -39,6 +40,8 @@ var/damage_multiplier = 1 //multiplies melee combat damage var/icon_update = 1 //whether icon updating shall take place + var/default_lighting_alpha = LIGHTING_PLANE_ALPHA_VISIBLE + var/lipstick_color = null //no lipstick by default var/age = 30 //Player's age (pure fluff) diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 4cd32138245..8a42240dcbd 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -79,7 +79,9 @@ equipment_prescription = equipment_prescription || G.prescription if(G.overlay) equipment_overlays |= G.overlay - if(G.see_invisible >= 0) + if(G.lighting_alpha != lighting_alpha) + lighting_alpha = G.lighting_alpha + if(G.see_invisible) if(equipment_see_invis) equipment_see_invis = min(equipment_see_invis, G.see_invisible) else diff --git a/code/modules/mob/living/carbon/human/human_powers.dm b/code/modules/mob/living/carbon/human/human_powers.dm index 2eb7f87c842..61620471722 100644 --- a/code/modules/mob/living/carbon/human/human_powers.dm +++ b/code/modules/mob/living/carbon/human/human_powers.dm @@ -672,7 +672,7 @@ if (!stop_sight_update) to_chat(src, SPAN_NOTICE("Your eyes shift around, allowing you to see in the dark.")) src.stop_sight_update = 1 - src.see_invisible = SEE_INVISIBLE_NOLIGHTING + src.lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE else to_chat(src, SPAN_NOTICE("You return your vision to normal.")) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 0b983e4ea2f..25c8e47c522 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1497,6 +1497,7 @@ return if((mutations & XRAY)) set_sight(sight|SEE_TURFS|SEE_MOBS|SEE_OBJS) + lighting_alpha = default_lighting_alpha /** * This proc assumes that if shock_value = null, then a shock value was NOT passed in, and thus it calculates it itself. diff --git a/code/modules/mob/living/carbon/human/species/outsider/revenant.dm b/code/modules/mob/living/carbon/human/species/outsider/revenant.dm index 4f5da19aed0..b0b020a15e5 100644 --- a/code/modules/mob/living/carbon/human/species/outsider/revenant.dm +++ b/code/modules/mob/living/carbon/human/species/outsider/revenant.dm @@ -61,6 +61,7 @@ spawn_flags = IS_RESTRICTED vision_flags = DEFAULT_SIGHT | SEE_MOBS + default_lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE has_organ = list( BP_EYES = /obj/item/organ/internal/eyes/night/revenant diff --git a/code/modules/mob/living/carbon/human/species/outsider/undead.dm b/code/modules/mob/living/carbon/human/species/outsider/undead.dm index b6e583af2f0..9896f9ae2e9 100644 --- a/code/modules/mob/living/carbon/human/species/outsider/undead.dm +++ b/code/modules/mob/living/carbon/human/species/outsider/undead.dm @@ -198,6 +198,7 @@ slowdown = 1 vision_flags = DEFAULT_SIGHT + default_lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE reagent_tag = IS_UNDEAD diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 6d4c1e9ad1b..ff9882e1af8 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -450,6 +450,8 @@ var/snore_key = "snore" /// Whether this species can choose to sleep indefinitely var/indefinite_sleep = FALSE + /// The default lighting alpha of this species. Override to set innate NVGs. + var/default_lighting_alpha = LIGHTING_PLANE_ALPHA_VISIBLE /datum/species/proc/get_eyes(var/mob/living/carbon/human/H) return @@ -736,7 +738,8 @@ var/obj/item/organ/internal/eyes/night/NE = H.get_eyes() if(istype(NE) && NE.night_vision && NE.can_change_invisible()) - H.set_see_invisible(SEE_INVISIBLE_NOLIGHTING) + H.lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE + H.update_sight() return 1 diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index e328c6ea64f..1bc2562975e 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -516,7 +516,7 @@ There are several things that need to be remembered: var/datum/sprite_accessory/hair_style = GLOB.hair_styles_list[h_style] if (hair_style) var/col = species.get_light_color(src) || "#FFFFFF" - set_light(species.light_range, species.light_power, col, uv = 0, angle = LIGHT_WIDE) + set_light(species.light_range, species.light_power, col) else set_light(0) @@ -1509,6 +1509,11 @@ There are several things that need to be remembered: if(QDELETED(src)) return + if(!on_fire) + set_light_on(FALSE) + else + set_light_on(TRUE) + var/image/fire_image_lower = on_fire ? image(species.onfire_overlay, "lower", layer = FIRE_LAYER_LOWER) : null var/image/fire_image_upper = on_fire ? image(species.onfire_overlay, "upper", layer = FIRE_LAYER_UPPER) : null diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index 1660485bd97..d0f69bde4c1 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -173,6 +173,7 @@ var/list/vision = get_accumulated_vision_handlers() set_sight(sight | vision[1]) set_see_invisible(max(vision[2], see_invisible)) + sync_lighting_plane_alpha() /mob/living/proc/update_living_sight() var/set_sight_flags = is_ventcrawling ? (SEE_TURFS) : sight & ~(SEE_TURFS|SEE_MOBS|SEE_OBJS) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 3ce068fc9ea..53806ec14c9 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -113,7 +113,6 @@ light_power = 0 light_range = 4 light_color = COLOR_BRIGHT_GREEN - light_wedge = 45 /mob/living/silicon/pai/movement_delay() return 0.8 @@ -140,21 +139,21 @@ /mob/living/silicon/pai/proc/toggle_flashlight() flashlight_active = !flashlight_active if(flashlight_active) - set_light(4, 1, COLOR_BRIGHT_GREEN, angle = 45) + set_light(4, 1, COLOR_BRIGHT_GREEN) else set_light(0) -/mob/living/silicon/pai/set_light(l_range, l_power, l_color, uv, angle, no_update) +/mob/living/silicon/pai/set_light(l_range, l_power, l_color) ..() if(istype(loc, /obj/item/holder/pai)) var/obj/item/holder/pai/P = loc - P.set_light(l_range, l_power, l_color, uv, angle, no_update) + P.set_light(l_range, l_power, l_color) /mob/living/silicon/pai/post_scoop() ..() if(istype(loc, /obj/item/holder/pai)) var/obj/item/holder/pai/P = loc - P.set_light(light_range, light_power, light_color, uv_intensity, light_wedge) + P.set_light(light_range, light_power, light_color) /mob/living/silicon/pai/Initialize(mapload) var/obj/item/device/paicard/paicard = loc diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index 1c070db78b3..7d6113b5b84 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -154,10 +154,10 @@ set_see_invisible(SEE_INVISIBLE_LEVEL_TWO) else if((sight_mode & BORGMESON) && (sight_mode & BORGTHERM)) set_sight(sight|SEE_TURFS|SEE_MOBS) - set_see_invisible(SEE_INVISIBLE_NOLIGHTING) + lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE else if(sight_mode & BORGMESON) set_sight(sight|SEE_TURFS) - set_see_invisible(SEE_INVISIBLE_NOLIGHTING) + lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE else if(sight_mode & BORGMATERIAL) set_sight(sight|SEE_OBJS) else if(sight_mode & BORGTHERM) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 608b737f638..4d0b9bb0bfc 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -34,7 +34,6 @@ var/speed = 0 // Lighting and sight - light_wedge = LIGHT_WIDE var/lights_on = FALSE // Is our integrated light on? var/intense_light = FALSE // Whether cyborg's integrated light was upgraded var/sight_mode = NO_HUD diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 95b2ff3c750..46c9a136989 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -53,7 +53,6 @@ var/can_hear_hivenet = TRUE // Misc - uv_intensity = 175 //Lights cast by robots have reduced effect on diona mob_thinks = FALSE var/can_speak_basic = TRUE diff --git a/code/modules/mob/living/simple_animal/friendly/cosmozoan.dm b/code/modules/mob/living/simple_animal/friendly/cosmozoan.dm index c028b97b3cb..71a80211459 100644 --- a/code/modules/mob/living/simple_animal/friendly/cosmozoan.dm +++ b/code/modules/mob/living/simple_animal/friendly/cosmozoan.dm @@ -31,7 +31,7 @@ minbodytemp = 0 flying = TRUE - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE sample_data = list("Cellular biochemistry include bioluminescent reactions", "Tissue sample contains micro-gas release structures") /mob/living/simple_animal/cosmozoan/Initialize() diff --git a/code/modules/mob/living/simple_animal/friendly/ratking.dm b/code/modules/mob/living/simple_animal/friendly/ratking.dm index bebb36362e0..4714ba0016f 100644 --- a/code/modules/mob/living/simple_animal/friendly/ratking.dm +++ b/code/modules/mob/living/simple_animal/friendly/ratking.dm @@ -21,7 +21,7 @@ icon_dead = "rat_gray_dead" icon_rest = "rat_gray_sleep" - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE var/swarm_name = "peasentry" var/announce_name = "Request" diff --git a/code/modules/mob/living/simple_animal/hostile/adhomai.dm b/code/modules/mob/living/simple_animal/hostile/adhomai.dm index 0557cd92897..dafedd145cf 100644 --- a/code/modules/mob/living/simple_animal/hostile/adhomai.dm +++ b/code/modules/mob/living/simple_animal/hostile/adhomai.dm @@ -101,7 +101,7 @@ environment_smash = 1 attack_emote = "wiggles toward" - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE blood_type = "#281C2D" @@ -131,7 +131,7 @@ mob_size = 5 attack_emote = "hums at" - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE smart_ranged = TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/bat.dm b/code/modules/mob/living/simple_animal/hostile/bat.dm index 8749a22d2fe..cc7b213a78a 100644 --- a/code/modules/mob/living/simple_animal/hostile/bat.dm +++ b/code/modules/mob/living/simple_animal/hostile/bat.dm @@ -79,7 +79,3 @@ /mob/living/simple_animal/hostile/scarybat/cult/cultify() return - -/mob/living/simple_animal/hostile/scarybat/cult/Life(seconds_per_tick, times_fired) - ..() - check_horde() diff --git a/code/modules/mob/living/simple_animal/hostile/cavern_geist.dm b/code/modules/mob/living/simple_animal/hostile/cavern_geist.dm index e44baeca4b2..168123e81cf 100644 --- a/code/modules/mob/living/simple_animal/hostile/cavern_geist.dm +++ b/code/modules/mob/living/simple_animal/hostile/cavern_geist.dm @@ -33,7 +33,7 @@ attacktext = "mangled" attack_sound = 'sound/weapons/bloodyslice.ogg' - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE pixel_x = -16 speed = -1 diff --git a/code/modules/mob/living/simple_animal/hostile/changeling.dm b/code/modules/mob/living/simple_animal/hostile/changeling.dm index f51f2a63704..adcd2b33365 100644 --- a/code/modules/mob/living/simple_animal/hostile/changeling.dm +++ b/code/modules/mob/living/simple_animal/hostile/changeling.dm @@ -37,7 +37,7 @@ attack_sound = 'sound/weapons/bloodyslice.ogg' emote_sounds = list('sound/effects/creatures/bear_loud_1.ogg', 'sound/effects/creatures/bear_loud_2.ogg', 'sound/effects/creatures/bear_loud_3.ogg', 'sound/effects/creatures/bear_loud_4.ogg') - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE minbodytemp = 0 maxbodytemp = 350 @@ -166,7 +166,7 @@ attacktext = "mangled" attack_sound = 'sound/weapons/bloodyslice.ogg' - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE pass_flags = PASSTABLE diff --git a/code/modules/mob/living/simple_animal/hostile/creature.dm b/code/modules/mob/living/simple_animal/hostile/creature.dm index 783cd5823bd..20f6ff6ebc5 100644 --- a/code/modules/mob/living/simple_animal/hostile/creature.dm +++ b/code/modules/mob/living/simple_animal/hostile/creature.dm @@ -37,6 +37,3 @@ /mob/living/simple_animal/hostile/creature/cult/cultify() return -/mob/living/simple_animal/hostile/creature/cult/Life(seconds_per_tick, times_fired) - ..() - check_horde() diff --git a/code/modules/mob/living/simple_animal/hostile/faithless.dm b/code/modules/mob/living/simple_animal/hostile/faithless.dm index 59984542d04..90a58866544 100644 --- a/code/modules/mob/living/simple_animal/hostile/faithless.dm +++ b/code/modules/mob/living/simple_animal/hostile/faithless.dm @@ -64,10 +64,6 @@ /mob/living/simple_animal/hostile/faithless/cult/cultify() return -/mob/living/simple_animal/hostile/faithless/cult/Life(seconds_per_tick, times_fired) - ..() - check_horde() - /mob/living/simple_animal/hostile/faithless/can_fall() return FALSE diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 1a4f8c8563e..d6e07302eec 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -520,42 +520,6 @@ ABSTRACT_TYPE(/mob/living/simple_animal/hostile) return UnarmedAttack(target, TRUE) return ..() -/mob/living/simple_animal/hostile/proc/check_horde() - if(GLOB.evacuation_controller.is_prepared()) - if(!enroute && !last_found_target) //The shuttle docked, all monsters rush for the escape hallway - if(!shuttletarget && GLOB.escape_list.len) //Make sure we didn't already assign it a target, and that there are targets to pick - shuttletarget = pick(GLOB.escape_list) //Pick a shuttle target - enroute = 1 - stop_automated_movement = 1 - if(!src.stat) - horde() - - if(get_dist(src, shuttletarget) <= 2) //The monster reached the escape hallway - enroute = 0 - stop_automated_movement = 0 - -/mob/living/simple_animal/hostile/proc/horde() - var/turf/T = get_step_to(src, shuttletarget) - for(var/atom/A in T) - if(istype(A,/obj/machinery/door/airlock)) - var/obj/machinery/door/airlock/D = A - D.open(1) - else if(istype(A,/obj/structure/simple_door)) - var/obj/structure/simple_door/D = A - if(D.density) - D.Open() - else if(istype(A,/obj/structure/cult/pylon)) - A.attack_generic(src, rand(melee_damage_lower, melee_damage_upper)) - else if(istype(A, /obj/structure/window) || istype(A, /obj/structure/closet) || istype(A, /obj/structure/table) || istype(A, /obj/structure/grille)) - A.attack_generic(src, rand(melee_damage_lower, melee_damage_upper)) - Move(T) - var/atom/target = FindTarget() - if(istype(target) && !QDELETED(target)) - set_last_found_target(target) - if(!last_found_target || enroute) - if(!src.stat) - horde() - ////////////////////////////// ///////VALIDATOR PROCS//////// ////////////////////////////// diff --git a/code/modules/mob/living/simple_animal/hostile/icarus_drone.dm b/code/modules/mob/living/simple_animal/hostile/icarus_drone.dm index bfd6f141d1e..e7ec42a57c5 100644 --- a/code/modules/mob/living/simple_animal/hostile/icarus_drone.dm +++ b/code/modules/mob/living/simple_animal/hostile/icarus_drone.dm @@ -56,7 +56,7 @@ tameable = FALSE flying = TRUE - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE psi_pingable = FALSE sample_data = null diff --git a/code/modules/mob/living/simple_animal/hostile/ipc_zombie.dm b/code/modules/mob/living/simple_animal/hostile/ipc_zombie.dm index 4e3c5a9d9e9..ec911058fc0 100644 --- a/code/modules/mob/living/simple_animal/hostile/ipc_zombie.dm +++ b/code/modules/mob/living/simple_animal/hostile/ipc_zombie.dm @@ -41,9 +41,6 @@ ///Overlay of a screen to display on the zombie's monitor var/image/screen_overlay - ///Emissive overlay of above - var/image/emissive_overlay - ///IPC corpse to spawn on the simplemob's death var/corpse = /obj/effect/landmark/corpse/ipc_zombie diff --git a/code/modules/mob/living/simple_animal/hostile/krampus.dm b/code/modules/mob/living/simple_animal/hostile/krampus.dm index 0117abe17ca..208e0b17131 100644 --- a/code/modules/mob/living/simple_animal/hostile/krampus.dm +++ b/code/modules/mob/living/simple_animal/hostile/krampus.dm @@ -30,7 +30,7 @@ attacktext = "punished" attack_sound = 'sound/weapons/bladeslice.ogg' - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE minbodytemp = 0 maxbodytemp = 350 diff --git a/code/modules/mob/living/simple_animal/hostile/moghes.dm b/code/modules/mob/living/simple_animal/hostile/moghes.dm index cd57c5e0fea..a88c5558c55 100644 --- a/code/modules/mob/living/simple_animal/hostile/moghes.dm +++ b/code/modules/mob/living/simple_animal/hostile/moghes.dm @@ -31,7 +31,7 @@ attacktext = "chomped" attack_sound = 'sound/weapons/bloodyslice.ogg' - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE faction = "Moghes" butchering_products = list(/obj/item/stack/material/animalhide/lizard = 20) diff --git a/code/modules/mob/living/simple_animal/hostile/morph.dm b/code/modules/mob/living/simple_animal/hostile/morph.dm index 11db0c0af39..512237860b2 100644 --- a/code/modules/mob/living/simple_animal/hostile/morph.dm +++ b/code/modules/mob/living/simple_animal/hostile/morph.dm @@ -32,7 +32,7 @@ melee_damage_lower = 12 melee_damage_upper = 16 - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE stop_sight_update = TRUE minbodytemp = 0 @@ -95,10 +95,10 @@ set desc = "Toggles whether you see light or not." set category = "Abilities" - if(see_invisible == SEE_INVISIBLE_NOLIGHTING) - see_invisible = SEE_INVISIBLE_LIVING + if(lighting_alpha == LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE) + lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE else - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_VISIBLE /mob/living/simple_animal/hostile/morph/examine(mob/user, distance, is_adjacent, infix, suffix, show_extended) if(morphed) diff --git a/code/modules/mob/living/simple_animal/hostile/phoron_worm.dm b/code/modules/mob/living/simple_animal/hostile/phoron_worm.dm index 18d67639116..28e7fcf4e18 100644 --- a/code/modules/mob/living/simple_animal/hostile/phoron_worm.dm +++ b/code/modules/mob/living/simple_animal/hostile/phoron_worm.dm @@ -31,7 +31,7 @@ mob_swap_flags = HUMAN|SIMPLE_ANIMAL|SLIME|MONKEY mob_push_flags = ALLMOBS - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE minbodytemp = 0 maxbodytemp = 350 diff --git a/code/modules/mob/living/simple_animal/hostile/pra.dm b/code/modules/mob/living/simple_animal/hostile/pra.dm index 27822a1c937..46022240be0 100644 --- a/code/modules/mob/living/simple_animal/hostile/pra.dm +++ b/code/modules/mob/living/simple_animal/hostile/pra.dm @@ -195,7 +195,7 @@ tameable = FALSE flying = TRUE - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE emote_sounds = list('sound/effects/creatures/PRA_drone.ogg') diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/cavern.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/cavern.dm index ad99e686a85..f272c63c2b9 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/cavern.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/cavern.dm @@ -45,7 +45,7 @@ faction = "cavern" flying = TRUE - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE /mob/living/simple_animal/hostile/retaliate/cavern_dweller/Allow_Spacemove(var/check_drift = 0) return 1 @@ -110,7 +110,6 @@ max_n2 = 0 minbodytemp = 0 light_range = 10 - light_wedge = LIGHT_WIDE psi_pingable = FALSE faction = "sol" diff --git a/code/modules/mob/living/simple_animal/hostile/sarlacc.dm b/code/modules/mob/living/simple_animal/hostile/sarlacc.dm index ae27fcef94c..74c3627dcec 100644 --- a/code/modules/mob/living/simple_animal/hostile/sarlacc.dm +++ b/code/modules/mob/living/simple_animal/hostile/sarlacc.dm @@ -316,7 +316,7 @@ desc = "This pulsating brain seems somehow connected to all the other orifices in this room..." icon = 'icons/mob/npc/cavern.dmi' icon_state = "sarlaccbrain" - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE universal_speak = 1 universal_understand = 1 diff --git a/code/modules/mob/living/simple_animal/hostile/space_fauna.dm b/code/modules/mob/living/simple_animal/hostile/space_fauna.dm index 7fdc843352f..e05265e87eb 100644 --- a/code/modules/mob/living/simple_animal/hostile/space_fauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/space_fauna.dm @@ -53,7 +53,7 @@ attack_emote = "nashes at" flying = TRUE - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE smart_melee = FALSE sample_data = list("Cellular structure shows adaptation for survival in vacuum", "Genetic biomarkers identified linked with agressiveness", "Tissue sample contains micro-gas release structures") @@ -307,5 +307,5 @@ attack_emote = "nashes at" flying = TRUE - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE sample_data = list("Cellular structure shows adaptation for survival in vacuum", "Genetic biomarkers identified linked with agressiveness", "Tissue sample contains micro-gas release structures") diff --git a/code/modules/mob/living/simple_animal/hostile/spider_queen.dm b/code/modules/mob/living/simple_animal/hostile/spider_queen.dm index b18a752db6f..ecad360d847 100644 --- a/code/modules/mob/living/simple_animal/hostile/spider_queen.dm +++ b/code/modules/mob/living/simple_animal/hostile/spider_queen.dm @@ -13,7 +13,7 @@ emote_hear = list("chitters") speak_chance = 5 turns_per_move = 5 - see_invisible = SEE_INVISIBLE_NOLIGHTING + lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE meat_type = /obj/item/reagent_containers/food/snacks/xenomeat organ_names = list("thorax", "legs", "head") response_help = "pets" diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index cd7de8d61d6..93a78353f8f 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1574,15 +1574,15 @@ // if(thing.item_flags & SLOWS_WHILE_IN_HAND) . += thing -/mob/proc/check_emissive_equipment() - var/old_zflags = z_flags - z_flags &= ~ZMM_MANGLE_PLANES - for(var/atom/movable/AM in get_equipped_items(INCLUDE_POCKETS|INCLUDE_HELD)) - if(AM.z_flags & ZMM_MANGLE_PLANES) - z_flags |= ZMM_MANGLE_PLANES - break - if(old_zflags != z_flags) - UPDATE_OO_IF_PRESENT +///Set the lighting plane hud alpha to the mobs lighting_alpha var +/mob/proc/sync_lighting_plane_alpha() + if(hud_used) + var/atom/movable/screen/plane_master/lighting/lighting = hud_used.plane_masters["[LIGHTING_PLANE]"] + if (lighting) + lighting.alpha = lighting_alpha + var/atom/movable/screen/plane_master/lighting/exterior_lighting = hud_used.plane_masters["[EXTERIOR_LIGHTING_PLANE]"] + if (exterior_lighting) + exterior_lighting.alpha = min(GLOB.minimum_exterior_lighting_alpha, lighting_alpha) #undef UNBUCKLED #undef PARTIALLY_BUCKLED diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index f1208af42b9..b7ada2c1f4a 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -6,6 +6,8 @@ sight = DEFAULT_SIGHT blocks_emissive = EMISSIVE_BLOCK_GENERIC pass_flags_self = PASSMOB + // Determines what the alpha of the lighting is to this mob. + var/lighting_alpha = LIGHTING_PLANE_ALPHA_VISIBLE var/datum/mind/mind var/static/next_mob_id = 0 diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 7f0ef278a8a..d29835b4a33 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -452,11 +452,6 @@ use_mob.forceMove(get_step(use_mob, direct)) use_mob.dir = direct - // Crossed is always a bit iffy - for(var/obj/S in use_mob.loc) - if(istype(S,/obj/effect/step_trigger) || istype(S,/obj/effect/beam)) - S.Crossed(use_mob) - var/area/A = get_area_master(use_mob) if(A) A.Entered(use_mob) diff --git a/code/modules/multiz/turfs/open_space.dm b/code/modules/multiz/turfs/open_space.dm index 464fe6817dd..8e7a4443e06 100644 --- a/code/modules/multiz/turfs/open_space.dm +++ b/code/modules/multiz/turfs/open_space.dm @@ -175,9 +175,10 @@ /turf/simulated/open/Initialize(mapload) . = ..() icon_state = "" // Clear out the debug icon. - + ADD_TRAIT(src, TURF_Z_TRANSPARENT_TRAIT, TRAIT_SOURCE_INHERENT) update(mapload) + /** * Updates the turf with open turf's variables and basically resets it properly. */ diff --git a/code/modules/multiz/zmimic/mimic_movable.dm b/code/modules/multiz/zmimic/mimic_movable.dm index 169ef9a5172..7b52e762cb4 100644 --- a/code/modules/multiz/zmimic/mimic_movable.dm +++ b/code/modules/multiz/zmimic/mimic_movable.dm @@ -74,47 +74,6 @@ return ..() -/atom/movable/openspace/multiplier/proc/copy_lighting(atom/movable/lighting_overlay/LO) - appearance = LO - layer = MIMICED_LIGHTING_LAYER - plane = OPEN_SPACE_PLANE_END - set_invisibility(0) - if (icon_state == null) - blend_mode = BLEND_MULTIPLY - // We're using a color matrix, so just darken the colors across the board. - // Bay stores lights as inverted so the lighting PM can invert it for darksight, but - // we don't have a plane master, so invert it again. - var/list/c_list = color - c_list[CL_MATRIX_RR] *= -SHADOWER_DARKENING_FACTOR - c_list[CL_MATRIX_RG] *= -SHADOWER_DARKENING_FACTOR - c_list[CL_MATRIX_RB] *= -SHADOWER_DARKENING_FACTOR - c_list[CL_MATRIX_GR] *= -SHADOWER_DARKENING_FACTOR - c_list[CL_MATRIX_GG] *= -SHADOWER_DARKENING_FACTOR - c_list[CL_MATRIX_GB] *= -SHADOWER_DARKENING_FACTOR - c_list[CL_MATRIX_BR] *= -SHADOWER_DARKENING_FACTOR - c_list[CL_MATRIX_BG] *= -SHADOWER_DARKENING_FACTOR - c_list[CL_MATRIX_BB] *= -SHADOWER_DARKENING_FACTOR - c_list[CL_MATRIX_AR] *= -SHADOWER_DARKENING_FACTOR - c_list[CL_MATRIX_AG] *= -SHADOWER_DARKENING_FACTOR - c_list[CL_MATRIX_AB] *= -SHADOWER_DARKENING_FACTOR - color = c_list - else - // Not a color matrix, so we just ignore the lighting values. - icon_state = "dark" // this is actually just a white sprite, which is what this blending needs - color = list( - SHADOWER_DARKENING_FACTOR, 0, 0, - 0, SHADOWER_DARKENING_FACTOR, 0, - 0, 0, SHADOWER_DARKENING_FACTOR - ) - - var/turf/parent = loc - ASSERT(isturf(parent)) - if (LAZYLEN(parent.ao_overlays_mimic)) - overlays += parent.ao_overlays_mimic - - if (bound_overlay) - update_above() - // -- OPENSPACE OVERLAY -- // todo: rename diff --git a/code/modules/organs/internal/species/tajara.dm b/code/modules/organs/internal/species/tajara.dm index 04e84b9d7d7..061fa190cab 100644 --- a/code/modules/organs/internal/species/tajara.dm +++ b/code/modules/organs/internal/species/tajara.dm @@ -93,13 +93,14 @@ night_vision = TRUE if(can_change_invisible()) - owner.set_see_invisible(SEE_INVISIBLE_NOLIGHTING) + owner.lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE if(status & ORGAN_ROBOT) if(vision_mechanical_color) owner.add_client_color(vision_mechanical_color) else if(vision_color) owner.add_client_color(vision_color) + owner.update_sight() /obj/item/organ/internal/eyes/night/proc/disable_night_vision() if(!owner) @@ -108,13 +109,14 @@ return night_vision = FALSE if(can_change_invisible()) - owner.set_see_invisible(SEE_INVISIBLE_LIVING) + owner.lighting_alpha = LIGHTING_PLANE_ALPHA_VISIBLE if(status & ORGAN_ROBOT) if(vision_mechanical_color) owner.remove_client_color(vision_mechanical_color) else if(vision_color) owner.remove_client_color(vision_color) + owner.update_sight() /obj/item/organ/internal/stomach/tajara name = "reinforced stomach" diff --git a/code/modules/organs/subtypes/augment/augments/sight_lights.dm b/code/modules/organs/subtypes/augment/augments/sight_lights.dm index 7e203eef974..14c81fa9350 100644 --- a/code/modules/organs/subtypes/augment/augments/sight_lights.dm +++ b/code/modules/organs/subtypes/augment/augments/sight_lights.dm @@ -31,18 +31,19 @@ lights_on = !lights_on if(lights_on) - set_light(lights_range, lights_intensity, lights_color, uv = 0, angle = LIGHT_WIDE) + set_light_range_power_color(lights_range, lights_intensity, lights_color) + set_light_on(TRUE) else - set_light(0) + set_light_on(FALSE) /obj/item/organ/internal/augment/sightlights/emp_act(severity) . = ..() - set_light(0) + set_light_on(FALSE) /obj/item/organ/internal/augment/sightlights/take_damage(var/amount, var/silent = 0) . = ..() - set_light(0) + set_light_on(FALSE) /obj/item/organ/internal/augment/sightlights/take_internal_damage(var/amount, var/silent = 0) . = ..() - set_light(0) + set_light_on(FALSE) diff --git a/code/modules/organs/subtypes/autakh.dm b/code/modules/organs/subtypes/autakh.dm index d0e0e063228..203aeadc01a 100644 --- a/code/modules/organs/subtypes/autakh.dm +++ b/code/modules/organs/subtypes/autakh.dm @@ -226,7 +226,7 @@ return FALSE if(!online) - set_light(3, 2, LIGHT_COLOR_RED, uv = 0, angle = LIGHT_WIDE) + set_light(3, 2, LIGHT_COLOR_RED) owner.change_eye_color(250, 130, 130) owner.update_eyes() online = TRUE diff --git a/code/modules/organs/subtypes/parasite/black_kois.dm b/code/modules/organs/subtypes/parasite/black_kois.dm index 06fe25816b6..f99087dc451 100644 --- a/code/modules/organs/subtypes/parasite/black_kois.dm +++ b/code/modules/organs/subtypes/parasite/black_kois.dm @@ -84,8 +84,9 @@ owner.set_default_language(LANGUAGE_LIIDRA) removed_langs = TRUE - owner.set_see_invisible(SEE_INVISIBLE_NOLIGHTING) + owner.lighting_alpha = LIGHTING_PLANE_ALPHA_SOMEWHAT_INVISIBLE owner.add_client_color(/datum/client_color/vaurca) + owner.update_sight() if(prob(10)) if(owner.can_feel_pain()) diff --git a/code/modules/overmap/_defines.dm b/code/modules/overmap/_defines.dm index 2397936f9b7..4ddcf323a45 100644 --- a/code/modules/overmap/_defines.dm +++ b/code/modules/overmap/_defines.dm @@ -12,17 +12,16 @@ GLOBAL_LIST_EMPTY(map_sectors) /// to an instance of `/datum/map_template`. GLOBAL_LIST_EMPTY(map_templates) -/area/overmap/ +/area/overmap name = "System Map" icon_state = "start" requires_power = 0 base_turf = /turf/unsimulated/map - dynamic_lighting = 0 + base_lighting_alpha = 255 /turf/unsimulated/map icon = 'icons/obj/overmap/overmap.dmi' icon_state = "map" - permit_ao = FALSE /turf/unsimulated/map/edge opacity = 1 diff --git a/code/modules/overmap/exoplanets/decor/_turfs.dm b/code/modules/overmap/exoplanets/decor/_turfs.dm index caebf8f887e..3b0772ec47c 100644 --- a/code/modules/overmap/exoplanets/decor/_turfs.dm +++ b/code/modules/overmap/exoplanets/decor/_turfs.dm @@ -139,7 +139,6 @@ desc = "Government didn't want you to see this!" density = TRUE blocks_air = TRUE - dynamic_lighting = FALSE icon = null icon_state = null diff --git a/code/modules/overmap/exoplanets/themes/_theme.dm b/code/modules/overmap/exoplanets/themes/_theme.dm index e91f2166949..44ed9c82588 100644 --- a/code/modules/overmap/exoplanets/themes/_theme.dm +++ b/code/modules/overmap/exoplanets/themes/_theme.dm @@ -270,7 +270,7 @@ gen_turf.resources[ORE_SAND] = rand(3, 5) gen_turf.resources[ORE_COAL] = rand(3, 5) if(ground_resources_roll) - var/image/resource_indicator = image('icons/obj/mining.dmi', null, "indicator_" + ground_resources_roll, gen_turf.layer, pick(GLOB.cardinals)) + var/image/resource_indicator = image('icons/obj/mining.dmi', null, "indicator_" + ground_resources_roll, dir = pick(GLOB.cardinals)) resource_indicator.alpha = rand(30, 60) gen_turf.resource_indicator = resource_indicator if(!gen_turf.density) @@ -279,6 +279,12 @@ var/rand_vals = ground_ore_levels[ground_resources_roll][OT] gen_turf.resources[OT] = rand(rand_vals[1], rand_vals[2]) + if(SSlighting.initialized) //don't generate lighting overlays before SSlighting in case these templates are loaded before + var/area/A = gen_turf.loc + if(A?.area_has_base_lighting) + continue + gen_turf.static_lighting_build_overlay() + if(gen_turf.density) // No need to check flora/fauna/grass if we're a wall continue diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 7875ca2a1e4..f912fdd62be 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -80,7 +80,6 @@ ABSTRACT_TYPE(/obj/machinery/power/apc) gfi_layer_rotation = GFI_ROTATION_DEFDIR clicksound = /singleton/sound_category/switch_sound obj_flags = OBJ_FLAG_MOVES_UNSUPPORTED - z_flags = ZMM_MANGLE_PLANES var/area/area var/areastring = null var/obj/item/cell/cell @@ -388,17 +387,17 @@ ABSTRACT_TYPE(/obj/machinery/power/apc) if(update & 3) if(update_state & UPDATE_BLUESCREEN) - set_light(l_range = L_WALLMOUNT_RANGE, l_power = L_WALLMOUNT_POWER, l_color = COLOR_BLUE) + set_light_color(LIGHT_COLOR_BLUE) + set_light(L_WALLMOUNT_RANGE) else if(!(stat & (BROKEN|MAINT)) && update_state & UPDATE_ALLGOOD) - var/color switch(charging) if(CHARGING_OFF) - color = "#F86060" + set_light_color("#F86060") if(CHARGING_ON) - color = "#A8B0F8" + set_light_color("#A8B0F8") if(CHARGING_FULL) - color = "#82FF4C" - set_light(l_range = L_WALLMOUNT_RANGE, l_power = L_WALLMOUNT_POWER, l_color = color) + set_light_color("#82FF4C") + set_light(L_WALLMOUNT_RANGE) else set_light(0) diff --git a/code/modules/power/lights/fixtures.dm b/code/modules/power/lights/fixtures.dm index c09d27eef4e..7d06275f530 100644 --- a/code/modules/power/lights/fixtures.dm +++ b/code/modules/power/lights/fixtures.dm @@ -19,14 +19,13 @@ always_area_sensitive = TRUE gfi_layer_rotation = GFI_ROTATION_DEFDIR obj_flags = OBJ_FLAG_MOVES_UNSUPPORTED - var/brightness_range = 8 // luminosity when on, also used in power calculation - var/brightness_power = 0.45 - var/night_brightness_range = 6 + var/brightness_range = 7 // luminosity when on, also used in power calculation + var/brightness_power = 1 + var/night_brightness_range = 5 var/night_brightness_power = 0.4 var/supports_nightmode = TRUE var/nightmode = FALSE var/brightness_color = LIGHT_COLOR_HALOGEN - uv_intensity = 255 var/status = LIGHT_OK // LIGHT_OK, _EMPTY, _BURNED or _BROKEN var/flickering = 0 var/light_type = /obj/item/light/tube // the type of light item diff --git a/code/modules/power/radial_floodlight.dm b/code/modules/power/radial_floodlight.dm index 46dbe7b4ab8..ea4e1b303e2 100644 --- a/code/modules/power/radial_floodlight.dm +++ b/code/modules/power/radial_floodlight.dm @@ -7,9 +7,9 @@ density = TRUE active_power_usage = 800 light_color = LIGHT_COLOR_TUNGSTEN + light_range = 8 var/on = FALSE - var/brightness_on = 12 /obj/machinery/power/radial_floodlight/proc/toggle_active(var/force_state) if(!isnull(force_state)) @@ -19,7 +19,7 @@ else on = !on if(on) - set_light(brightness_on, 1) + set_light(light_range, 1) START_PROCESSING(SSprocessing, src) else set_light(0) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 186d925ebbd..1bdf5d49905 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -59,6 +59,7 @@ origin_tech = list(TECH_COMBAT = 1) attack_verb = list("struck", "hit", "bashed") zoomdevicename = "scope" + light_system = DIRECTIONAL_LIGHT /* * Suppression vars @@ -461,9 +462,11 @@ handle_post_fire() // should be safe to not include arguments here, as there are failsafes in effect (?) + var/prev_light = light_range if (muzzle_flash) - set_light(muzzle_flash) - addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, set_light), 0), 2, TIMER_UNIQUE | TIMER_OVERRIDE) + set_light_range(muzzle_flash) + set_light_on(TRUE) + addtimer(CALLBACK(src, PROC_REF(reset_light_range), prev_light), 0.5 SECONDS) update_icon() if(i < burst) @@ -477,6 +480,12 @@ accuracy = initial(accuracy) //Reset the gun's accuracy +/// called by a timer to remove the light range from muzzle flash +/obj/item/gun/proc/reset_light_range(lightrange) + set_light_range(lightrange) + if(lightrange <= 0) + set_light_on(FALSE) + //obtains the next projectile to fire /obj/item/gun/proc/consume_next_projectile() return null @@ -513,8 +522,11 @@ ) if(muzzle_flash) - set_light(muzzle_flash) - addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, set_light), 0), 2) + var/prev_light = light_range + if (muzzle_flash) + set_light_range(muzzle_flash) + set_light_on(TRUE) + addtimer(CALLBACK(src, PROC_REF(reset_light_range), prev_light), 0.5 SECONDS) if(recoil) shake_camera(user, recoil + 1, recoil) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 8599fee3eec..d22d3b8abf1 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -720,6 +720,8 @@ process_hitscan() if(QDELETED(src)) return + else + generate_muzzle_flash() if(!(datum_flags & DF_ISPROCESSING)) START_PROCESSING(SSprojectiles, src) pixel_move(pixel_speed_multiplier, FALSE) //move it now! @@ -1009,6 +1011,19 @@ beam_segments[beam_index] = point_cache generate_hitscan_tracers(null, null, impacting) +/obj/projectile/proc/generate_muzzle_flash(duration = 3) + if(duration <= 0) + return + if(!muzzle_type || suppressed) + return + var/datum/point/p = trajectory + var/atom/movable/thing = new muzzle_type + p.move_atom_to_src(thing) + var/matrix/M = new + M.Turn(original_angle) + thing.transform = M + QDEL_IN(thing, duration) + /obj/projectile/proc/generate_hitscan_tracers(cleanup = TRUE, duration = 3, impacting = TRUE) if(!length(beam_segments)) return @@ -1024,7 +1039,8 @@ matrix.Turn(original_angle) thing.transform = matrix thing.color = color - thing.set_light(muzzle_flash_range, muzzle_flash_intensity, muzzle_flash_color_override? muzzle_flash_color_override : color) + thing.set_light_range_power_color(muzzle_flash_range, muzzle_flash_intensity, muzzle_flash_color_override ? muzzle_flash_color_override : color) + thing.set_light_on(TRUE) QDEL_IN(thing, duration) if(impacting && impact_type && duration > 0) var/datum/point/p = beam_segments[beam_segments[beam_segments.len]] @@ -1034,7 +1050,8 @@ matrix.Turn(Angle) thing.transform = matrix thing.color = color - thing.set_light(impact_light_range, impact_light_intensity, impact_light_color_override? impact_light_color_override : color) + thing.set_light_range_power_color(impact_light_range, impact_light_intensity, impact_light_color_override? impact_light_color_override : color) + thing.set_light_on(TRUE) QDEL_IN(thing, duration) if(cleanup) cleanup_beam_segments() @@ -1075,6 +1092,7 @@ bullet.original = target bullet.preparePixelProjectile(target, src) bullet.fire() + return bullet diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 7d24a6e149c..49b1ed15242 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -13,6 +13,7 @@ var/frequency = 1 hitscan = 1 invisibility = 101 //beam projectiles are invisible as they are rendered by the effect engine + color = COLOR_RED muzzle_type = /obj/effect/projectile/muzzle/laser tracer_type = /obj/effect/projectile/tracer/laser diff --git a/code/modules/psionics/abilities/hollow_purple.dm b/code/modules/psionics/abilities/hollow_purple.dm index ae019caead6..75cf907b339 100644 --- a/code/modules/psionics/abilities/hollow_purple.dm +++ b/code/modules/psionics/abilities/hollow_purple.dm @@ -29,17 +29,17 @@ user.visible_message(SPAN_NOTICE("[user] puts [user.get_pronoun("his")] palms together...")) START_PROCESSING(SSprocessing, src) user.say("Cursed Technique Amplification: Blue...") - user.set_light(7, 10, COLOR_BLUE) + user.set_light_range_power_color(7, 10, COLOR_BLUE) + user.set_light_on(TRUE) color = COLOR_BLUE if(do_after(user, 4 SECONDS)) stage = 2 color = COLOR_RED user.say("Cursed Technique Reversal: Red...") - user.set_light(0) - user.set_light(7, 10, COLOR_RED) + user.set_light_range_power_color(7, 10, COLOR_RED) if(do_after(user, 4 SECONDS)) user.say("Hollow Technique: Purple!") - user.set_light(0) + user.set_light_on(FALSE) user.visible_message(SPAN_CULT("[user] fires a gigantic purple sphere from [user.get_pronoun("his")] hand!")) . = ..() diff --git a/code/modules/rendering/plane_master.dm b/code/modules/rendering/plane_master.dm index e1b27036501..351826e2620 100644 --- a/code/modules/rendering/plane_master.dm +++ b/code/modules/rendering/plane_master.dm @@ -34,11 +34,13 @@ /atom/movable/screen/plane_master/game_world name = "game world plane master" plane = GAME_PLANE + appearance_flags = PLANE_MASTER blend_mode = BLEND_OVERLAY -/atom/movable/screen/plane_master/rendering_plate/game_world/Initialize(mapload, datum/hud/hud_owner) +/atom/movable/screen/plane_master/game_world/backdrop(mob/mymob) . = ..() - add_filter("displacer", 1, displacement_map_filter(render_source = DISPLACEMENT_PLATE_RENDER_TARGET, size = 10)) + remove_filter("AO") + add_filter("AO", 1, drop_shadow_filter(x = 0, y = -2, size = 4, color = "#04080FAA")) /atom/movable/screen/plane_master/game_world_above name = "above game world plane master" @@ -96,13 +98,18 @@ /atom/movable/screen/plane_master/lighting name = "lighting plane master" plane = LIGHTING_PLANE + blend_mode_override = BLEND_MULTIPLY mouse_opacity = MOUSE_OPACITY_TRANSPARENT - blend_mode = BLEND_MULTIPLY + +/atom/movable/screen/plane_master/lighting/backdrop(mob/mymob) + . = ..() + mymob.overlay_fullscreen("lighting_backdrop", /atom/movable/screen/fullscreen/lighting_backdrop/backplane) + mymob.overlay_fullscreen("lighting_backdrop_lit_secondary", /atom/movable/screen/fullscreen/lighting_backdrop/lit_secondary) /atom/movable/screen/plane_master/lighting/Initialize() . = ..() add_filter("emissives", 1, alpha_mask_filter(render_source = EMISSIVE_RENDER_TARGET, flags = MASK_INVERSE)) - + add_filter("object_lighting", 2, alpha_mask_filter(render_source = O_LIGHTING_VISUAL_RENDER_TARGET, flags = MASK_INVERSE)) /** * Handles emissive overlays and emissive blockers. */ @@ -120,6 +127,8 @@ /atom/movable/screen/plane_master/above_lighting name = "above lighting plane master" plane = ABOVE_LIGHTING_PLANE + appearance_flags = PLANE_MASTER //should use client color + blend_mode = BLEND_OVERLAY render_relay_plane = RENDER_PLANE_GAME /atom/movable/screen/plane_master/runechat @@ -134,6 +143,20 @@ remove_filter("AO") add_filter("AO", 1, drop_shadow_filter(x = 0, y = -2, size = 4, color = "#04080FAA")) +/atom/movable/screen/plane_master/o_light_visual + name = "overlight light visual plane master" + plane = O_LIGHTING_VISUAL_PLANE + render_target = O_LIGHTING_VISUAL_RENDER_TARGET + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + blend_mode = BLEND_MULTIPLY + blend_mode_override = BLEND_MULTIPLY + +/atom/movable/screen/plane_master/nvg_plane + name = "NVG plane" + plane = NVG_PLANE + render_relay_plane = RENDER_PLANE_GAME + blend_mode_override = BLEND_MULTIPLY + /atom/movable/screen/plane_master/fullscreen name = "fullscreen alert plane" plane = FULLSCREEN_PLANE diff --git a/code/modules/rendering/render_plate.dm b/code/modules/rendering/render_plate.dm index 15cfa96c268..24ab4484588 100644 --- a/code/modules/rendering/render_plate.dm +++ b/code/modules/rendering/render_plate.dm @@ -39,6 +39,10 @@ plane = RENDER_PLANE_GAME render_relay_plane = RENDER_PLANE_MASTER +/atom/movable/screen/plane_master/rendering_plate/game_world/Initialize(mapload, datum/hud/hud_owner) + . = ..() + add_filter("displacer", 1, displacement_map_filter(render_source = DISPLACEMENT_PLATE_RENDER_TARGET, size = 10)) + ///render plate for OOC stuff like ghosts, hud-screen effects, etc /atom/movable/screen/plane_master/rendering_plate/non_game name = "non-game rendering plate" diff --git a/code/modules/shieldgen/energy_field.dm b/code/modules/shieldgen/energy_field.dm index 8780a463905..fa9c7e64328 100644 --- a/code/modules/shieldgen/energy_field.dm +++ b/code/modules/shieldgen/energy_field.dm @@ -155,3 +155,6 @@ return TRUE return (!density || air_group) + +/obj/effect/energy_field/afterShuttleMove(obj/effect/shuttle_landmark/destination) + qdel_self() diff --git a/code/modules/shuttles/shuttle.dm b/code/modules/shuttles/shuttle.dm index 08e62ab241e..91b081360c5 100644 --- a/code/modules/shuttles/shuttle.dm +++ b/code/modules/shuttles/shuttle.dm @@ -261,16 +261,8 @@ TA.ChangeTurf(ceiling_type, TRUE, TRUE, TRUE) for(var/area/sub_area in shuttle_area) - for(var/obj/structure/shuttle_part/part in sub_area) - var/turf/target_turf = get_turf(part) - if(part.outside_part) - target_turf.ChangeTurf(destination.base_turf) - for(var/obj/structure/window/shuttle/unique/SW in sub_area) - if(SW.outside_window) - var/turf/target_turf = get_turf(SW) - target_turf.ChangeTurf(destination.base_turf) - for(var/obj/effect/energy_field/ef in sub_area) - qdel(ef) + for(var/atom/movable/movable in sub_area) + movable.afterShuttleMove(destination) // Remove all powernets that were affected, and rebuild them. var/list/cables = list() diff --git a/code/modules/shuttles/shuttle_supply.dm b/code/modules/shuttles/shuttle_supply.dm index 6d646b3f759..63b538c21df 100644 --- a/code/modules/shuttles/shuttle_supply.dm +++ b/code/modules/shuttles/shuttle_supply.dm @@ -36,6 +36,9 @@ /// Area cache of Horizon elevator bay. var/area/horizon_elevator_area + /// Underlays of the elevator saved before transit. + var/list/saved_underlays + /datum/shuttle/autodock/ferry/supply/New(var/_name, var/obj/effect/shuttle_landmark/start_waypoint) ..(_name, start_waypoint) SScargo.shuttle = src @@ -165,15 +168,42 @@ NW.forceMove(locate(target_dest_x, target_dest_y, target_dest_z)) NE.forceMove(locate(target_dest_x + SHAFT_WIDTH, target_dest_y, target_dest_z)) + for(var/area/A in shuttle_area) // we have to do this here or we turn the elevator into a white cube + for(var/obj/machinery/light/L in A) // we turn off lights to avoid having to fight the lighting plane + L.stat |= POWEROFF + L.update() + + sleep(2 SECONDS) + + elevator_animation.icon_state = "elevator_test" + for(var/area/A in shuttle_area) // an image copy of the elevator platform is prepared here for(var/turf/T in A) + LAZYADDASSOC(saved_underlays, T, T.underlays) + T.underlays.Cut() elevator_animation.vis_contents += T + for(var/atom/movable/AM in T.contents) + AM.blocks_emissive = FALSE + AM.update_emissive_blocker() if(!returning_to_CC) handle_arrival_sequence() // coming to Horizon else handle_departure_sequence() // leaving the Horizon + for(var/turf/T in elevator_animation.vis_contents) + T.underlays = LAZYACCESS(saved_underlays, T) + LAZYREMOVE(saved_underlays, T) + for(var/atom/movable/AM in T.contents) + AM.blocks_emissive = initial(AM.blocks_emissive) + AM.update_emissive_blocker() + AM.update_light() + for(var/obj/machinery/light/L in T.contents) + L.stat &= ~POWEROFF + L.update() + + elevator_animation.icon_state = null + elevator_animation.vis_contents.Cut() // animation is done, we can get rid of the elevator platform image /datum/shuttle/autodock/ferry/supply/proc/handle_arrival_sequence() diff --git a/code/modules/supermatter/supermatter.dm b/code/modules/supermatter/supermatter.dm index b8c0ee210bf..62376a44ba6 100644 --- a/code/modules/supermatter/supermatter.dm +++ b/code/modules/supermatter/supermatter.dm @@ -64,7 +64,6 @@ var/explosion_point = 1000 light_color = "#8A8A00" - uv_intensity = 255 var/warning_color = "#B8B800" var/emergency_color = "#D9D900" var/rotation_angle = 0 diff --git a/code/modules/vehicles/animal.dm b/code/modules/vehicles/animal.dm index 5b881a833e7..221fb6faa5d 100644 --- a/code/modules/vehicles/animal.dm +++ b/code/modules/vehicles/animal.dm @@ -40,6 +40,10 @@ . += "Click-drag yourself onto the animal to climb onto it." . += "Click-drag it onto yourself to access its mounted storage." +/obj/vehicle/animal/Destroy() + QDEL_NULL(storage_compartment) + return ..() + /obj/vehicle/animal/setup_vehicle() ..() on = TRUE diff --git a/code/modules/vehicles/bike.dm b/code/modules/vehicles/bike.dm index ce5d65505d6..d4452b627ea 100644 --- a/code/modules/vehicles/bike.dm +++ b/code/modules/vehicles/bike.dm @@ -71,6 +71,7 @@ /obj/vehicle/bike/Destroy() QDEL_NULL(key) QDEL_NULL(ion) + QDEL_NULL(storage_compartment) return ..() /obj/vehicle/bike/setup_vehicle() diff --git a/code/modules/vehicles/cargo_train.dm b/code/modules/vehicles/cargo_train.dm index 8cf67b3a64a..3793719f9b6 100644 --- a/code/modules/vehicles/cargo_train.dm +++ b/code/modules/vehicles/cargo_train.dm @@ -18,6 +18,10 @@ var/obj/item/key/key var/key_type = /obj/item/key/cargo_train +/obj/vehicle/train/cargo/engine/Destroy() + QDEL_NULL(key) + return ..() + /obj/vehicle/train/cargo/engine/mechanics_hints(mob/user, distance, is_adjacent) . += ..() . += "Click-drag yourself onto the truck to climb onto it." diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm index f3a766e6a35..90d702a0071 100644 --- a/code/modules/vehicles/vehicle.dm +++ b/code/modules/vehicles/vehicle.dm @@ -50,6 +50,10 @@ . = ..() setup_vehicle() +/obj/vehicle/Destroy() + QDEL_NULL(cell) + return ..() + /obj/vehicle/proc/setup_vehicle() LAZYADD(can_buckle, /mob/living) @@ -198,13 +202,15 @@ if(powered && cell?.charge < charge_use && !organic) return FALSE on = TRUE - set_light(initial(light_range)) + set_light_range_power_color(initial(light_range)) + set_light_on(on) update_icon() return TRUE /obj/vehicle/proc/turn_off() on = FALSE - set_light(0) + set_light_range_power_color(0) + set_light_on(on) update_icon() /obj/vehicle/emag_act(var/remaining_charges, mob/user as mob) diff --git a/code/unit_tests/create_and_destroy.dm b/code/unit_tests/create_and_destroy.dm index 1b04e4fca50..56cae2a727d 100644 --- a/code/unit_tests/create_and_destroy.dm +++ b/code/unit_tests/create_and_destroy.dm @@ -105,7 +105,8 @@ GLOBAL_VAR_INIT(running_create_and_destroy, FALSE) /atom/movable/flick_visual, //Weather system, requires a z level - /obj/abstract/weather_system + /obj/abstract/weather_system, + /atom/movable/lighting_mask, //leave it alone ) diff --git a/code/unit_tests/equipment_tests.dm b/code/unit_tests/equipment_tests.dm deleted file mode 100644 index ea1115a271a..00000000000 --- a/code/unit_tests/equipment_tests.dm +++ /dev/null @@ -1,66 +0,0 @@ -#define SUCCESS 1 -#define FAILURE 0 - - -/datum/unit_test/vision_glasses/ - name = "EQUIPMENT: Vision Template" - groups = list("generic", "vision") - - - var/mob/living/carbon/human/H = null - var/expectation = SEE_INVISIBLE_NOLIGHTING - var/glasses_type = null - async = 1 - -/datum/unit_test/vision_glasses/start_test() - var/list/test = create_test_mob_with_mind(null, /mob/living/carbon/human) - if(isnull(test)) - TEST_FAIL("Check Runtimed in Mob creation") - - if(test["result"] == FAILURE) - TEST_FAIL(test["msg"]) - async = 0 - - return 0 - - H = locate(test["mobref"]) - - var/obj/item/clothing/glasses/G = new glasses_type() - H.glasses = G - - return 1 - - -/datum/unit_test/vision_glasses/check_result() - - if(isnull(H) || H.life_tick < 2) - return 0 - - if(isnull(H.glasses)) - TEST_FAIL("Mob doesn't have glasses on") - - H.handle_vision() // Because Life has a client check that bypasses updating vision - - if(H.see_invisible == expectation) - TEST_PASS("Mob See invisible is [H.see_invisible]") - else - TEST_FAIL("Mob See invisible is [H.see_invisible] / expected [expectation]") - - return 1 - -/datum/unit_test/vision_glasses/NVG - name = "EQUIPMENT: NVG see_invis" - glasses_type = /obj/item/clothing/glasses/night - -/datum/unit_test/vision_glasses/mesons - name = "EQUIPMENT: Mesons see_invis" - glasses_type = /obj/item/clothing/glasses/meson - -/datum/unit_test/vision_glasses/plain - name = "EQUIPMENT: Plain glasses. see_invis" - glasses_type = /obj/item/clothing/glasses/regular - expectation = SEE_INVISIBLE_LIVING - -#undef SUCCESS -#undef FAILURE - diff --git a/html/changelogs/mattatlas-fallingapart.yml b/html/changelogs/mattatlas-fallingapart.yml new file mode 100644 index 00000000000..dd427f12ddc --- /dev/null +++ b/html/changelogs/mattatlas-fallingapart.yml @@ -0,0 +1,60 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# - (fixes bugs) +# wip +# - (work in progress) +# qol +# - (quality of life) +# soundadd +# - (adds a sound) +# sounddel +# - (removes a sound) +# rscadd +# - (adds a feature) +# rscdel +# - (removes a feature) +# imageadd +# - (adds an image or sprite) +# imagedel +# - (removes an image or sprite) +# spellcheck +# - (fixes spelling or grammar) +# experiment +# - (experimental change) +# balance +# - (balance changes) +# code_imp +# - (misc internal code change) +# refactor +# - (refactors code) +# config +# - (makes a change to the config files) +# admin +# - (makes changes to administrator tools) +# server +# - (miscellaneous changes to server) +################################# + +# Your name. +author: MattAtlas (porting), CM and /tg/ coders (original code) + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. +# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. +changes: + - experiment: "Replaced our renderer system with TG and CM's planemasters." + - rscadd: "Open space now has a gaussian blur filter." + - bugfix: "Fixed esoteric smoothing behaviour that was a bug for a long time; lattices should no longer smooth with nothing." diff --git a/html/changelogs/mattatlas-returntooblivion.yml b/html/changelogs/mattatlas-returntooblivion.yml new file mode 100644 index 00000000000..d796acf2ca4 --- /dev/null +++ b/html/changelogs/mattatlas-returntooblivion.yml @@ -0,0 +1,58 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# - (fixes bugs) +# wip +# - (work in progress) +# qol +# - (quality of life) +# soundadd +# - (adds a sound) +# sounddel +# - (removes a sound) +# rscadd +# - (adds a feature) +# rscdel +# - (removes a feature) +# imageadd +# - (adds an image or sprite) +# imagedel +# - (removes an image or sprite) +# spellcheck +# - (fixes spelling or grammar) +# experiment +# - (experimental change) +# balance +# - (balance changes) +# code_imp +# - (misc internal code change) +# refactor +# - (refactors code) +# config +# - (makes a change to the config files) +# admin +# - (makes changes to administrator tools) +# server +# - (miscellaneous changes to server) +################################# + +# Your name. +author: MattAtlas (porting), TiviPlus, A-lexa, Synclt21, Azarak, harryob, MorrowWolf, Zonespace (code) + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. +# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. +changes: + - experiment: "Replaced our lighting engine with CM's. There may be bugs!" diff --git a/icons/effects/224x192.dmi b/icons/effects/224x192.dmi index 3e4d63de7256735ec8f3db8e191aff516265c8c7..9a87187cb481e7967c0c3aaca25fbc2d391c8342 100644 GIT binary patch literal 62356 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 literal 8713 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 aw$!L8)N~v__Xb`uU~|ynz#R+Ul>Y-&F_)YG diff --git a/icons/effects/alphacolors.dmi b/icons/effects/alphacolors.dmi index 02316fbf64de161a7da31202f1c857995c09211a..b63636c14f7bed3a1415c8fc03876a3b389f37bc 100644 GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^4M3d0!3HF+R#kZdsd-f)5hX6E#mPmP1tppJc?=8{ zbEft=avd@dak>6;xx}s92~m%Yq&+9<-Lek(l*_cW_5O-4-}Ja1IR%y*e|TnS$#->Q z-osh5@^p&lxJAtHb$lgP%eCRg)Fn*E?Urmkv(lTVTSxin;xij=OtSJWe`spoc)8%| z_X&zmD_@93NW{Jh+P|hMQLetQTPNNy@&A8j`QU_`;`85FuDW*6)YO*Yz|PQ$Ux_vS z3=E96o-U3d6?5KR+33q+AmDn?)K(zIP1r+aiAZf}0Gp)HO3mbE^UDYBKe+k)UUm9K z%g_6E+8f)S{#`%&vHtAGZ-gD@Fg#)rP;ancJi@8q$56=BL5|S7Gk3OM<=%Jh`Ky1$ z`^=xe|D^ndnG*Am9a8@8%kUBDL|^HDkP%BCAB!YD6^m>Ge3`k zp<>R|K1Z%Y1|qE2e=e`sa$CW-^K_1i>!ytN0w=?nx3nKGX}bRhYfu` zBrjn1KKYu7efR4XS0W_&&Svf_cGgPOEHGGdPAEU-L4v31yvJ}P@Ru0Ln~5zWLSAehk5!NBaoBB7vkfI*Ovt%JkB!KHywiF#6h Y7y?dm%)Gkt9mp39p00i_>zopr049f!RsaA1 diff --git a/icons/effects/light_overlays/light_128.dmi b/icons/effects/light_overlays/light_128.dmi new file mode 100644 index 0000000000000000000000000000000000000000..22dc0b0108702f5dbc74a2d1170026743fa7dd9d GIT binary patch literal 7040 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 literal 0 HcmV?d00001 diff --git a/icons/effects/light_overlays/light_224.dmi b/icons/effects/light_overlays/light_224.dmi new file mode 100644 index 0000000000000000000000000000000000000000..9fab531d1a691cf1cc53c3f54aec69c2e4bfba09 GIT binary patch literal 17004 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 P00000NkvXXu0mjf9iK$$ literal 0 HcmV?d00001 diff --git a/icons/effects/light_overlays/light_256.dmi b/icons/effects/light_overlays/light_256.dmi new file mode 100644 index 0000000000000000000000000000000000000000..701562efcd8f85fea23b0bf9475c33698c57c338 GIT binary patch literal 21365 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 literal 0 HcmV?d00001 diff --git a/icons/effects/light_overlays/light_32.dmi b/icons/effects/light_overlays/light_32.dmi new file mode 100644 index 0000000000000000000000000000000000000000..5269b1fba36d8ad0dcde7862da177a51a4632e26 GIT binary patch literal 1140 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 TI$=2z10LMB_#1QAE$RON=Yb3V literal 0 HcmV?d00001 diff --git a/icons/effects/light_overlays/light_352.dmi b/icons/effects/light_overlays/light_352.dmi new file mode 100644 index 0000000000000000000000000000000000000000..f895792da42d63143e15641a198443e290f3671c GIT binary patch literal 35566 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 M07*qoM6N<$g7@%=qW}N^ literal 0 HcmV?d00001 diff --git a/icons/effects/light_overlays/light_416.dmi b/icons/effects/light_overlays/light_416.dmi new file mode 100644 index 0000000000000000000000000000000000000000..6a32ecbda661814205e3c722131b7ebcb79a571a GIT binary patch literal 42716 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 (w-GXaas-#7das;I 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 literal 0 HcmV?d00001 diff --git a/icons/effects/light_overlays/light_64.dmi b/icons/effects/light_overlays/light_64.dmi new file mode 100644 index 0000000000000000000000000000000000000000..37fc5084abcf3eea7d1fe167910834dc3992ce74 GIT binary patch literal 2482 zcmV;j2~GBiP)V=-0C=1w$Gr-GAQT4B+4~e9wnssXDLN-?Eh-MvEVtLrRvlNveV> z6iA8(rqOd?0L^~<_@V!ES^g6r*=#nmxRmEEd!B5!+x^IW7c0L7fDm}5PGBAj#}st$ z^UY?n=Wo9Qkc$BTq211Lo>g)0zGzt`>AihpFI^6dF9Q&Qv(C}Zi{Jc=1R>QI{0+x5 z{I^Sz{3NiXf%3(j}#__f`ucut$m z=46#P34lWQ9O-pCHvJ6%TZ3f~2*5i8v0!fy{22hewDV;zE-EN1Z2^U(;Im741nqWjP^y+V{2FKn)~yFcTy#ef-nidi10LaD}5L#3jM7e zUk3nJ0FNHRg1aTfEx3=@4Fs#yvR$94V~IWk!YBX}!mrd>WeZQseWN}o2Fs&w5T+Pl z7QE^U5T^EI?kN)0{@7noYJ6{6?s(}S30A_$)UK%_DaIbpw&7>-nmRi76 zv0wl|5#*Tm27m$1U8~>K4``?k1iJI1U{?jgm@6?a#Y#41Y{XUM`OdU<_{t^Jchr*iy7QPoEs~T7cqET|Yj>eKL<0XB9P-h%s__Tff- z+7bX#SL#oCUfcKV1{qqj&vc; z8N<0$x<0eOBY3T0@Z)0(&H%{wavs3xag`*Y+R^?{1qtwNe9wKjiSJ%%$e_7non%0E zg45jVs8#qorT52jf_Xf~6y^))E}vQ-+&X@!?9YJ(Qz~HElFBrORtx(2ocUEougct1 zY4Ze&Mv?*3Q}n}=Fb|q%jhUP50l)+WnZN|cI$AR!g{QwRKRN<}h2(GZ`0c%Y!@_eA z$Ue7ZGwsj81urA+&+s=}GJzg~_f_t0YV=tumB_H%ZjuI?cE(XFGgMXdI7@_Gh*Sc? z>1YK^CHSerS3u;HJmZt9U(2{JjeC!c74;3mJYLQOCqGur%raQ{jPMm0shXLDtp{xgeP9wy-L6`>t)9D7sX)#FVt=ask20XT$?FN7LB;3pkFQAq#Fz@?NAqKub$QW{1!D&F9N|;H z$NDffFli(YWsVFfX`aF|%i?1%S9t-GBS1D(mUv9)F{@qW04y~7^o%wck$uv3yWM*_ zd`KJPgQR-}g6HDb>Zh)&Ne7u`_cc~HAht(jAQwxsQh4qqNG2TAJyXp7FzNOZ)yq`Q z06l3q?PLJrZ;S;?2}l~_v_%yD2`v{<$&_ku(VlEFSFq5cKo2>ygQSgtJY4X z#VX-5*H896Mtx{4neYIxxSM1U6U?Q<4y($y?leT3AHQ$aop9@W-SM;y=`r#;M=%#i zAC6Q4K?B`mLA5TBD)6dq1Al{FTni)+#f^$Xvi{dcvWpDI6bBJG5hF!ESOd9m!v-dgw@b3Re+J;Ug~e7 zs}@I-1qR_s{VYrxys;6?gF!JeNb zj6CTA>3Z)`83>&;`XvAW!Ny4%1~C4OQ_{+BSNjDM0I9E|xzue2&<$qn@qqg%yx)7) zHo3Iwv*P-c-{$&ZE~bpBfIWb%_gE1206=o&Y5AwJLDK+06{OA{BtQuOg?A|JrK+)= zqJF>MXWiu3;4JV${gJJLy7m!vobJCubb>lZ8JD zzz7HqYu#}h8oNCDZyG-@wNdvMc(2>s=#(HNAepQw1D>-1C_oTCL>74F=+5QpY;JSQ zASzj4AgUw?sm@8(r-VNlfC7ZQhAz;%y4*=ll(<%xf0&T^xyV!nGQsDs#l44#&S(BH zGCSv=qs1R6a@E!oB!vmNZh}mamq;op`=}~7n3jpcte~pbTtz|Sxbx33T9`_yc zd*{e;HUKUs{BMvs0RHA@q#*;SS_w=qdHS#YZ_vdZz*IVg^2{;;QgLqz$ROsO_g?Cs wqhDq~RW9}4;W++p|96-rI=bKdhyOkPHv+x>4op1J82|tP07*qoM6N<$f(ezScK`qY literal 0 HcmV?d00001 diff --git a/icons/effects/light_overlays/light_96.dmi b/icons/effects/light_overlays/light_96.dmi new file mode 100644 index 0000000000000000000000000000000000000000..b689a137016322424accea3488b7cd02c6c846ac GIT binary patch literal 4643 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 Z{{vX6W?B4;ZxR3i002ovPDHLkV1k{4F%AF# literal 0 HcmV?d00001 diff --git a/icons/effects/light_overlays/light_cone.dmi b/icons/effects/light_overlays/light_cone.dmi new file mode 100644 index 0000000000000000000000000000000000000000..75f322a9371748a733958ba34c81728cb2b5bc32 GIT binary patch literal 19272 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 OB?sXAJzG5@bN>P3h2ZZ1 literal 0 HcmV?d00001 diff --git a/icons/effects/light_overlays/shockwave.dmi b/icons/effects/light_overlays/shockwave.dmi new file mode 100644 index 0000000000000000000000000000000000000000..c22acfa1d59e8e48854ee78ea250e0675eaa6c1d GIT binary patch literal 655732 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

*Ef!4uCj;3rEY4Moh0df4J?Mxmh)1s*p; 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

C6;G4n;Czyx^&#*dAGTox=48!a( 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

FF3V`HsCto}5q2f7cgLvd197G#uM5Y9woxU|aU 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%0AMeXKGJ4usrhxMi2FT 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