From ff7f8a5c2a611fc19020c1e2e7e3b0d8d294e5f2 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sat, 19 Sep 2026 04:41:23 +0200 Subject: [PATCH] Cut 8: presentation reads Condition instead of recomputing durability ShipInstance's thruster and aether-drive emission were the operator's actual complaint (2026-09-19): thrust intent times a raw durability ratio that ignored heat and power and duplicated simulation arithmetic in presentation. Both now multiply intent by Thruster.Condition / AetherDrive.Condition -- no durability/heat/power math left in presentation. Unity-side; not covered by the shared test suite. Small and obvious for Self's batchmode run on merge to check. Co-Authored-By: Claude Opus 5 --- Assets/Scripts/Gameplay/ShipInstance.cs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Assets/Scripts/Gameplay/ShipInstance.cs b/Assets/Scripts/Gameplay/ShipInstance.cs index 7999d27cb..8a0b22b6e 100644 --- a/Assets/Scripts/Gameplay/ShipInstance.cs +++ b/Assets/Scripts/Gameplay/ShipInstance.cs @@ -123,16 +123,20 @@ public class ShipInstance : EntityInstance forceOverLifetime.xMultiplier = _aetherDrive.Drive.ThrustDirection.x * _aetherDrive.BaseForce; forceOverLifetime.zMultiplier = _aetherDrive.Drive.ThrustDirection.y * _aetherDrive.BaseForce; var emissionModule = _aetherDrive.Particles.emission; - emissionModule.rateOverTimeMultiplier = _aetherDrive.BaseEmission * thrust; + // Cut 8 (operator ask 2026-09-19): intent (thrust) times condition -- presentation reads the + // simulation's own ratio rather than recomputing any part of it. AetherDrive.Condition is the + // equivalent of Thruster.Condition below (Torque in place of Thrust). + emissionModule.rateOverTimeMultiplier = _aetherDrive.BaseEmission * thrust * _aetherDrive.Drive.Condition; } - + foreach (var thrusterInstance in _thrusters) { var emissionModule = thrusterInstance.System.emission; - var item = thrusterInstance.Thruster.Item.EquippableItem; - var data = Entity.ItemManager.GetData(item); thrusterInstance.MaxParticleCount = thrusterInstance.System.particleCount; - emissionModule.rateOverTimeMultiplier = thrusterInstance.BaseEmission * thrusterInstance.Thruster.Axis * (item.Durability / data.Durability); + // Cut 8 (operator ask 2026-09-19): intent (Axis) times condition (Thruster.Condition, the item's + // resolved Thrust against its own perfect-conditions Thrust) -- no durability/heat/power arithmetic + // recomputed here, only the same emission math that already existed. + emissionModule.rateOverTimeMultiplier = thrusterInstance.BaseEmission * thrusterInstance.Thruster.Axis * thrusterInstance.Thruster.Condition; } transform.rotation = Ship.Rotation.ToUnity();