Aetheria/Assets/Scripts/ServerShared
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
..
Agents Move the ServerShared data model onto CultLib's CultCache 2026-09-14 19:00:42 +02:00
Behaviors F4/F5: shield restore survives inactivity, and CanTakeHit stops mutating 2026-09-19 05:32:29 +02:00
Narrative Move the ServerShared data model onto CultLib's CultCache 2026-09-14 19:00:42 +02:00
NIH Swap Unity.Mathematics usings for CultMath 2026-09-14 17:39:12 +02:00
Serialization Delete the in-tree cache, JsonKnownTypes and vendored MessagePack 2026-09-14 18:42:09 +02:00
Aetheria.Shared.Unity.asmdef Replace the Database Tools with the Studio and cut Unity over 2026-09-14 19:15:20 +02:00
Aetheria.Shared.Unity.asmdef.meta Slime Stuff & DB Prep 2021-03-30 01:17:58 +01:00
AetheriaStores.cs Cut 6: wire StatSource.PowerSupply and refuse a power request that reads it 2026-09-19 03:47:07 +02:00
AetheriaStores.cs.meta Move the ServerShared data model onto CultLib's CultCache 2026-09-14 19:00:42 +02:00
Agents.meta Local AI Testing & Interactive Tech Tab 2020-04-23 03:31:17 +01:00
AssemblyInfo.cs Move the ServerShared data model onto CultLib's CultCache 2026-09-14 19:00:42 +02:00
AssemblyInfo.cs.meta Move the ServerShared data model onto CultLib's CultCache 2026-09-14 19:00:42 +02:00
Attributes.cs Delete the in-tree cache, JsonKnownTypes and vendored MessagePack 2026-09-14 18:42:09 +02:00
Attributes.cs.meta Restore the stable legacy Unity project 2026-08-10 14:57:50 +01:00
Behaviors.meta Behavior Refactoring 2020-04-09 10:33:16 +01:00
BezierCurve.cs Swap Unity.Mathematics usings for CultMath 2026-09-14 17:39:12 +02:00
BezierCurve.cs.meta Database Improvements 2021-04-07 01:27:35 +01:00
CapabilityEvents.cs Add an engine-free capability event contract 2026-09-17 14:36:14 +02:00
CapabilityEvents.cs.meta Add an engine-free capability event contract 2026-09-17 14:36:14 +02:00
ColorMath.cs Swap Unity.Mathematics usings for CultMath 2026-09-14 17:39:12 +02:00
ColorMath.cs.meta Improved Level Generator 2020-12-01 20:38:28 +00:00
Corporations.cs Switch engine asset references from Resources paths to Addressables GUIDs 2026-09-18 05:04:50 +02:00
Corporations.cs.meta Infrastructure and Production 2020-06-02 07:01:03 +01:00
Entity.cs F1: power supply multiplies the resolved stat, it does not interpolate 2026-09-19 05:03:31 +02:00
Entity.cs.meta Behavior Refactoring 2020-04-09 10:33:16 +01:00
EntitySerializer.cs Cut 0: give Entity its own EntitySettings copy, delete the duplicate copies 2026-09-17 18:22:22 +02:00
EntitySerializer.cs.meta Restore the stable legacy Unity project 2026-08-10 14:57:50 +01:00
EntitySettings.cs Restore the stable legacy Unity project 2026-08-10 14:57:50 +01:00
EntitySettings.cs.meta Save/Load and Main Menu Submenus 2021-03-14 03:56:49 +00:00
EnumDictionary.cs Restore the stable legacy Unity project 2026-08-10 14:57:50 +01:00
EnumDictionary.cs.meta Database Improvements 2021-04-07 01:27:35 +01:00
Enums.cs Unified Volumetric Flow 2021-06-18 12:32:03 +01:00
Enums.cs.meta Database Support 2020-03-22 19:05:26 +00:00
Environment.cs Swap Unity.Mathematics usings for CultMath 2026-09-14 17:39:12 +02:00
Environment.cs.meta Unified Volumetric Flow 2021-06-18 12:32:03 +01:00
ExponentialCurve.cs Swap Unity.Mathematics usings for CultMath 2026-09-14 17:39:12 +02:00
ExponentialCurve.cs.meta Initial ARPG Port 2020-11-27 22:47:33 +00:00
Extensions.cs Seed zones from a stable name hash instead of string.GetHashCode (Cut 10) 2026-09-14 22:09:37 +02:00
Extensions.cs.meta Database Support 2020-03-22 19:05:26 +00:00
FactionProduct.cs Move the ServerShared data model onto CultLib's CultCache 2026-09-14 19:00:42 +02:00
FactionProduct.cs.meta Author manufacturer variation as faction products 2026-09-12 01:12:12 +02:00
Galaxy.cs Move the ServerShared data model onto CultLib's CultCache 2026-09-14 19:00:42 +02:00
Galaxy.cs.meta Hostility Fix + Story Work 2021-05-14 03:03:28 +01:00
GlobalData.cs Delete the in-tree cache, JsonKnownTypes and vendored MessagePack 2026-09-14 18:42:09 +02:00
GlobalData.cs.meta Restore the stable legacy Unity project 2026-08-10 14:57:50 +01:00
InputLayout.cs Move the ServerShared data model onto CultLib's CultCache 2026-09-14 19:00:42 +02:00
InputLayout.cs.meta Move the ServerShared data model onto CultLib's CultCache 2026-09-14 19:00:42 +02:00
ItemData.cs F1: power supply multiplies the resolved stat, it does not interpolate 2026-09-19 05:03:31 +02:00
ItemData.cs.meta Restore the stable legacy Unity project 2026-08-10 14:57:50 +01:00
ItemInstance.cs Cut 5: priority tiers replace PowerBus's single shared GrantRatio 2026-09-19 02:58:38 +02:00
ItemInstance.cs.meta Database Support 2020-03-22 19:05:26 +00:00
ItemManager.cs Cut 1: terms replace the four fixed exponents; R-heat 2026-09-18 17:18:06 +02:00
ItemManager.cs.meta New Inventory System + Overhaul 2020-12-10 23:20:38 +00:00
Loadout.cs Add the lot ledger and mint every crafted instance through it 2026-09-17 04:16:23 +02:00
Loadout.cs.meta Make loadouts player-store design documents built all-or-nothing (Cut 10) 2026-09-14 22:06:06 +02:00
LoadoutGenerator.cs Add the lot ledger and mint every crafted instance through it 2026-09-17 04:16:23 +02:00
LoadoutGenerator.cs.meta Enemy Loadout Generation 2021-03-18 00:36:34 +00:00
MarkovNameGenerator.cs Swap Unity.Mathematics usings for CultMath 2026-09-14 17:39:12 +02:00
MarkovNameGenerator.cs.meta Sector Generation 2021-03-10 09:18:07 +00:00
Narrative.meta UI Improvements 2021-04-27 16:44:44 +01:00
NIH.meta Database Support 2020-03-22 19:05:26 +00:00
Noise1D.cs Swap Unity.Mathematics usings for CultMath 2026-09-14 17:39:12 +02:00
Noise1D.cs.meta Hellfire 2021-01-10 03:59:47 +00:00
OrbitalEntity.cs Move the ServerShared data model onto CultLib's CultCache 2026-09-14 19:00:42 +02:00
OrbitalEntity.cs.meta Stat Effects and Tech Tree Improvements 2020-04-16 03:08:18 +01:00
PlayerSettings.cs Move mouse-look sensitivity into the PlayerSettings CultCache global 2026-09-17 17:22:09 +02:00
PlayerSettings.cs.meta Restore the stable legacy Unity project 2026-08-10 14:57:50 +01:00
PowerBus.cs F3: an empty tier is not a satisfied tier, and sub-epsilon demand pays its way 2026-09-19 05:15:30 +02:00
PowerBus.cs.meta Add the meta Unity generated for PowerBus 2026-09-18 21:43:08 +02:00
PowerTiers.cs Cut 5: priority tiers replace PowerBus's single shared GrantRatio 2026-09-19 02:58:38 +02:00
PowerTiers.cs.meta Cut 5: priority tiers replace PowerBus's single shared GrantRatio 2026-09-19 02:58:38 +02:00
Provenance.cs Add the lot ledger and mint every crafted instance through it 2026-09-17 04:16:23 +02:00
Provenance.cs.meta Add the lot ledger and mint every crafted instance through it 2026-09-17 04:16:23 +02:00
Rect.cs Swap Unity.Mathematics usings for CultMath 2026-09-14 17:39:12 +02:00
Rect.cs.meta TECH TREES WHOO 2020-04-11 19:18:02 +01:00
SampleElimination.cs Swap Unity.Mathematics usings for CultMath 2026-09-14 17:39:12 +02:00
SampleElimination.cs.meta Sector Generation 2021-03-10 09:18:07 +00:00
SavedGame.cs Fix F6: update the stale RunSave.Clear comment to include the ledger 2026-09-17 05:12:31 +02:00
SavedGame.cs.meta Restore the stable legacy Unity project 2026-08-10 14:57:50 +01:00
Serialization.meta Delete the in-tree cache, JsonKnownTypes and vendored MessagePack 2026-09-14 18:42:09 +02:00
Settings.cs Spawn neutral wanderers so combat has something non-hostile to target 2026-09-17 14:00:22 +02:00
Settings.cs.meta Asteroids & Refactoring 2020-12-01 00:16:11 +00:00
Ship.cs Delete AetheriaMath in favour of CultMath 2026-09-14 18:02:41 +02:00
Ship.cs.meta Database Support 2020-03-22 19:05:26 +00:00
StatResolver.cs Gate 1: give the resolver a Forget(owner); correct the recompute-cost comment 2026-09-18 20:41:42 +02:00
StatResolver.cs.meta Cut 2: give every entity its own StatResolver, delete the catalog leak 2026-09-18 19:53:59 +02:00
Wormhole.cs Swap Unity.Mathematics usings for CultMath 2026-09-14 17:39:12 +02:00
Wormhole.cs.meta Restore the stable legacy Unity project 2026-08-10 14:57:50 +01:00
WwiseMetadata.cs Restore the stable legacy Unity project 2026-08-10 14:57:50 +01:00
WwiseMetadata.cs.meta Wwise Audio Integration 2021-04-30 06:39:57 +01:00
WwiseSoundBinding.cs Restore the stable legacy Unity project 2026-08-10 14:57:50 +01:00
WwiseSoundBinding.cs.meta Wwise Audio Integration 2021-04-30 06:39:57 +01:00
Zone.cs Seed zones from a stable name hash instead of string.GetHashCode (Cut 10) 2026-09-14 22:09:37 +02:00
Zone.cs.meta Initial ARPG Port 2020-11-27 22:47:33 +00:00
ZoneData.cs Move the ServerShared data model onto CultLib's CultCache 2026-09-14 19:00:42 +02:00
ZoneData.cs.meta Restore the stable legacy Unity project 2026-08-10 14:57:50 +01:00
ZoneGenerator.cs Spawn neutral wanderers so combat has something non-hostile to target 2026-09-17 14:00:22 +02:00
ZoneGenerator.cs.meta Database Support 2020-03-22 19:05:26 +00:00