Aetheria/Assets
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Meta Vens 95d6fd3b14 F4/F5: shield restore survives inactivity, and CanTakeHit stops mutating
F4: a hit that breaks the shield usually also cooks it (TakeHit's own
AddHeat), which can knock the item thermally offline in the same tick. The
reserve's recharge and its Broken-clearing check lived inside Execute, which
Entity.Update only runs while Item.Active is true -- so a shield broken by a
hit that also shuts it down could never come back, no matter how long
RestoreDuration allows for. That logic now lives in Shield.Update
(IAlwaysUpdatedBehavior), which Entity.Update calls every tick unconditionally
(Cooldown.cs already relies on the same interface for the same reason).

F5: CanTakeHit broke the shield and drained the reserve as a side effect of
the query itself, on the premise that every caller queries it exactly once
per hit. That premise was false: RaycastAll/SphereCastAll/OverlapSphere hand
every caller under Assets/Scripts/Gameplay/Weapons both the shield collider
and the hull collider for one shot, so the same shield's CanTakeHit was
queried twice per hit. CanTakeHit is now a pure read (Broken + the reserve's
own CanSpend); the mutation moved to a new Shield.Break(), idempotent, called
by each weapon file exactly where it already decided to route a hit past the
shield instead of absorbing it.

Pinned in tests/Aetheria.Shared.Tests/ShieldReserveTests.cs:
RestorationProceedsWhileTheItemIsInactive (F4),
CanTakeHitNeverMutatesRegardlessOfHowManyTimesItIsCalled and
BreakIsIdempotentAcrossRepeatedCalls (F5). Updated every existing test that
relied on CanTakeHit's old mutating side effect to call Break() explicitly,
matching the new caller pattern.

Cannot compile-verify Assets/Scripts/Gameplay/Weapons/*.cs here (UnityEngine,
Unity batchmode unavailable in this environment) -- reviewed by hand for
brace/control-flow correctness; Self or a Unity batchmode pass should confirm.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-19 05:32:29 +02:00
..
AddressableAssetsData Add Addressables as a direct dependency and settings, Content group entry 2026-09-18 04:31:28 +02:00
Audio Combat & Visibility & Collisions 2021-02-26 19:01:47 +00:00
Content Switch engine asset references from Resources paths to Addressables GUIDs 2026-09-18 05:04:50 +02:00
Editor Restore the stable legacy Unity project 2026-08-10 14:57:50 +01:00
Fonts Action Bar (WIP) 2021-04-18 05:13:20 +01:00
Images Upgrade to Unity 6000.3.24f1 2026-09-11 22:04:28 +02:00
Materials Restore the stable legacy Unity project 2026-08-10 14:57:50 +01:00
Models Shields 2025-01-30 01:58:05 +00:00
Plugins Delete the in-tree cache, JsonKnownTypes and vendored MessagePack 2026-09-14 18:42:09 +02:00
Prefabs Upgrade to Unity 6000.3.24f1 2026-09-11 22:04:28 +02:00
Resources Map the shield panel onto the built-in pipeline and the absorb event 2026-09-18 04:47:36 +02:00
Scenes Drive the field shield test scene by publishing capability events 2026-09-17 14:36:54 +02:00
Scripts F4/F5: shield restore survives inactivity, and CanTakeHit stops mutating 2026-09-19 05:32:29 +02:00
Shaders Shield panel: gate reuse and Hit on the panel's own radius 2026-09-18 21:02:18 +02:00
StreamingAssets Unified Volumetric Flow 2021-06-18 12:32:03 +01:00
TextMesh Pro Bugfixes & Reactive Refactor 2025-07-18 00:21:33 +01:00
Textures Upgrade to Unity 6000.3.24f1 2026-09-11 22:04:28 +02:00
AddressableAssetsData.meta Add Addressables as a direct dependency and settings, Content group entry 2026-09-18 04:31:28 +02:00
Audio.meta Combat & Visibility & Collisions 2021-02-26 19:01:47 +00:00
Content.meta Add Addressables as a direct dependency and settings, Content group entry 2026-09-18 04:31:28 +02:00
Editor.meta Add Epiphany Unity editor bridge 2026-04-30 15:03:15 +01:00
Fonts.meta Menu Prototype 2020-03-23 14:36:59 +00:00
HoverCursorChange.cs Playability 2022-08-08 22:43:55 +01:00
HoverCursorChange.cs.meta Trade Menu Spreadsheet 2021-01-14 03:20:27 +00:00
Images.meta Menu Prototype 2020-03-23 14:36:59 +00:00
MainMenuMusic.cs NEW CLOUDS NEW CLOUDS NEW CLOUDS WHOOO 2022-07-10 02:53:09 +01:00
MainMenuMusic.cs.meta Music & SFX 2021-04-30 11:19:25 +01:00
Materials.meta Old Aetheria Code 2020-03-09 01:28:55 +00:00
Models.meta Initial ARPG Port 2020-11-27 22:47:33 +00:00
MouseRotate.cs Move the remaining Assets scripts off Unity.Mathematics 2026-09-14 18:01:54 +02:00
MouseRotate.cs.meta Playability 2022-08-08 22:43:55 +01:00
Plugins.meta Initial Client/Server Communication 2020-02-26 17:48:40 +00:00
Prefabs.meta Smooth AF Tab Menu 2020-03-24 21:51:38 +00:00
Resources.meta Old Aetheria Code 2020-03-09 01:28:55 +00:00
Scenes.meta Created Unity Project 2020-02-19 15:09:31 +00:00
Scripts.meta Initial Client/Server Communication 2020-02-26 17:48:40 +00:00
Shaders.meta Copy Aetheria Code 2020-02-27 18:51:07 +00:00
Steel.mat Combat & Visibility & Collisions 2021-02-26 19:01:47 +00:00
Steel.mat.meta Combat & Visibility & Collisions 2021-02-26 19:01:47 +00:00
StreamingAssets.meta Initial Wwise Integration 2021-02-27 20:53:36 +00:00
TextMesh Pro.meta Smooth AF Tab Menu 2020-03-24 21:51:38 +00:00
Textures.meta Initial ARPG Port 2020-11-27 22:47:33 +00:00