From f151ecedc13335fc59e9830e57edf80c8f758a21 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Sun, 14 Jun 2026 17:37:51 +0100 Subject: [PATCH] Move weapon damage type behind runtime owner --- .voidbot/state/aetheria.cc | Bin 85367 -> 85265 bytes .../Weapons/GuidedProjectileManager.cs | 4 ++-- .../Gameplay/Weapons/HitscanManager.cs | 4 ++-- .../Scripts/Gameplay/Weapons/LaserManager.cs | 2 +- .../Gameplay/Weapons/LightningGunManager.cs | 4 ++-- .../Scripts/Gameplay/Weapons/MineManager.cs | 2 +- .../Gameplay/Weapons/ProjectileManager.cs | 2 +- .../Scripts/ServerShared/Behaviors/Weapon.cs | 3 +++ docs/aetheria-perfect-machine-map.md | 3 +++ 9 files changed, 15 insertions(+), 9 deletions(-) diff --git a/.voidbot/state/aetheria.cc b/.voidbot/state/aetheria.cc index a450437ae971f956001921c4ce444e91a0dbc675..f1167c1c9ede9e12c9b9d39d00eaa15daa1d20cc 100644 GIT binary patch delta 1034 zcmah|y=xRf6lao4NJK2e#Gpc6B?fYry?mHY&DV*g77^hh;$-*j-RSMiGBbN;5Dc15 zM2HJ61Ur>90mUYzA7G!tCVz&NojAKYms2dPc6sxAGry1be(v_{?Dl-v>*}ALD^Hci z%d^!TG7x|3dTtBj6InrYKkCg9$-Naa6!#T|yB5B0j}#6@3S?$Fe*N(Tw2+2^7d;x# z8W#0th(#H3%>pcn7Dt(cr^ubH^6d-;ISf)5Fa=z+;7_y%0cz?|O-t|G24%s~%bQZ% zM_023jzXPjEKFx8o6SEAHBbxzm=T7LWZ{*G~#X@lB z+-EhYtld!H3khx{o2W9D0aMCo0;Q=|^WaB~25exRHkpt`+ZRTX=}iM+=8z+LDl_gc zZ6TG^c!m=CsOzFqLdH+74d9E4Fz#xgo@ZKH#)H&?qO~A%K>bhXJmAAnC~Rk(=GjRI zgnV_0oJ}rVCDF#Z&DW)&j-=7pu?u`D0?_r$4y9#e!W6viO`2H#iUMZnnsD;z=}f}* z8;Sm>_{Y7W-u#thaFKx19;sYeCtPEmiURy6-{jdMsm{(;glkT@R@M?blG)^1TLRHE zGiBWI?Iq~|#9w}mC+kb(%tGZB&teJ0gG`fVJTi)1(L|Z{rNix6&yF+Ag2u6Ae~Cb0 zX0Gfchf8Gmbow{vI3>q%s&6%|sW>6aWH7n7OeXv6a$b%PyU*FhoR~=$Gud4xpKWEb iy{f&*;}sINt5X^7RxhMpix!t#y@pfmHnYlZI zMUb?Dh6PvBScs$xcEQdRRyLNV68{4$?ZnyHNiYP`9J_D#{pP*z`)+slihuTsANPmG z<`&&r#hsns*mWk8FGDX+3N=&Uh3B^5x~4EXd}U~Pac6q?aC+FOEnJ%+s5VhhQdT`7 zP?ZNrV$RB<#}tjQEEQ2QjmMoQ+x3=tV~sNMFLLUTS z9R$LB=wrw|sUw5+%d0wbb9 zdS%d>K`dxrFABM0;Bgkv4zvaJJ9xv4B9QqgP|U=FKSjM>h!7D*Iw&OQDZ)@Q^;BmG zjn)J3Q4t!-T+txVz2&P~qkyyxxYMIPVV<@pMvn&6gFcl#5+*O2lijqzwKEEc?*qdD z*bX7#QHdsauaNfhXHG(p)3j1)_N&tk4cW<&^W@JSN*fN4{6Js{Gl;l50NE<3O8 zHEl8PlNUxH6Ynh1qAEM@^?t{<5_fPtxqnnjf8TbdTI=VMqGgu72v0L-VJ8zA#V$@$ zx^l znk7O;ysLkW!5;5tZmX?Wt9Ndj{QWEhZQ^wk=j-I9YRg?%yy>PtMxDz=bNOc6DNPuF z84M5FHoEDj6=!MGegWL%TVcxn+2_pXAg!)CpGWe?$*)2w;f0a3RCi+AGG9wy*PXZa RuIe7nt~uYwETUT7_y_V2l2iZy diff --git a/Assets/Scripts/Gameplay/Weapons/GuidedProjectileManager.cs b/Assets/Scripts/Gameplay/Weapons/GuidedProjectileManager.cs index 5817d17b2..2d7435e73 100644 --- a/Assets/Scripts/Gameplay/Weapons/GuidedProjectileManager.cs +++ b/Assets/Scripts/Gameplay/Weapons/GuidedProjectileManager.cs @@ -29,7 +29,7 @@ public class GuidedProjectileManager : InstantWeaponEffectManager p.Range = weapon.Range; p.Penetration = weapon.Penetration; p.Spread = weapon.DamageSpread; - p.DamageType = weapon.WeaponData.DamageType; + p.DamageType = weapon.DamageType; p.GuidanceCurve = launcher.GuidanceCurve.ToCurve(); p.LiftCurve = launcher.LiftCurve.ToCurve(); p.ThrustCurve = launcher.ThrustCurve.ToCurve(); @@ -51,7 +51,7 @@ public class GuidedProjectileManager : InstantWeaponEffectManager p.Range = weapon.Range; p.Penetration = weapon.Penetration; p.Spread = weapon.DamageSpread; - p.DamageType = weapon.WeaponData.DamageType; + p.DamageType = weapon.DamageType; p.GuidanceCurve = guidance.GuidanceCurve.ToCurve(); p.LiftCurve = guidance.LiftCurve.ToCurve(); p.ThrustCurve = guidance.ThrustCurve.ToCurve(); diff --git a/Assets/Scripts/Gameplay/Weapons/HitscanManager.cs b/Assets/Scripts/Gameplay/Weapons/HitscanManager.cs index 046b99434..ca611ac9c 100644 --- a/Assets/Scripts/Gameplay/Weapons/HitscanManager.cs +++ b/Assets/Scripts/Gameplay/Weapons/HitscanManager.cs @@ -19,8 +19,8 @@ public class HitscanManager : InstantWeaponEffectManager p.Damage = weapon.Damage; p.Penetration = weapon.Penetration; p.Spread = weapon.DamageSpread; - p.DamageType = weapon.WeaponData.DamageType; + p.DamageType = weapon.DamageType; p.Zone = source.Entity.Zone; p.Fire(); } -} \ No newline at end of file +} diff --git a/Assets/Scripts/Gameplay/Weapons/LaserManager.cs b/Assets/Scripts/Gameplay/Weapons/LaserManager.cs index 04177bf48..889920466 100644 --- a/Assets/Scripts/Gameplay/Weapons/LaserManager.cs +++ b/Assets/Scripts/Gameplay/Weapons/LaserManager.cs @@ -20,6 +20,6 @@ public class LaserManager : InstantWeaponEffectManager p.Range = weapon.Range; p.Penetration = weapon.Penetration; p.Spread = weapon.DamageSpread; - p.DamageType = weapon.WeaponData.DamageType; + p.DamageType = weapon.DamageType; } } diff --git a/Assets/Scripts/Gameplay/Weapons/LightningGunManager.cs b/Assets/Scripts/Gameplay/Weapons/LightningGunManager.cs index 93621217a..cb764b3e2 100644 --- a/Assets/Scripts/Gameplay/Weapons/LightningGunManager.cs +++ b/Assets/Scripts/Gameplay/Weapons/LightningGunManager.cs @@ -17,8 +17,8 @@ public class LightningGunManager : InstantWeaponEffectManager p.Range = weapon.Range; p.Penetration = weapon.Penetration; p.Spread = weapon.DamageSpread; - p.DamageType = weapon.WeaponData.DamageType; + p.DamageType = weapon.DamageType; p.Target = target; p.Fire(); } -} \ No newline at end of file +} diff --git a/Assets/Scripts/Gameplay/Weapons/MineManager.cs b/Assets/Scripts/Gameplay/Weapons/MineManager.cs index 3a9b671e3..8bc69a585 100644 --- a/Assets/Scripts/Gameplay/Weapons/MineManager.cs +++ b/Assets/Scripts/Gameplay/Weapons/MineManager.cs @@ -28,7 +28,7 @@ public class MineManager : InstantWeaponEffectManager p.GridObject.Velocity += new Vector3(source.Entity.Velocity.x, 0, source.Entity.Velocity.y); p.Damage = weapon.Damage; p.Range = weapon.Range; - p.DamageType = weapon.WeaponData.DamageType; + p.DamageType = weapon.DamageType; p.GridObject.Zone = source.Entity.Zone; } } diff --git a/Assets/Scripts/Gameplay/Weapons/ProjectileManager.cs b/Assets/Scripts/Gameplay/Weapons/ProjectileManager.cs index f60db5e5e..31d31b67f 100644 --- a/Assets/Scripts/Gameplay/Weapons/ProjectileManager.cs +++ b/Assets/Scripts/Gameplay/Weapons/ProjectileManager.cs @@ -30,7 +30,7 @@ public class ProjectileManager : InstantWeaponEffectManager p.Range = weapon.Range; p.Penetration = weapon.Penetration; p.Spread = weapon.DamageSpread; - p.DamageType = weapon.WeaponData.DamageType; + p.DamageType = weapon.DamageType; p.Zone = source.Entity.Zone; p.AirburstDistance = target != null ? length(source.Entity.Position - target.Entity.Position) : (weapon.Range * .75f); p.Trail.Clear(); diff --git a/Assets/Scripts/ServerShared/Behaviors/Weapon.cs b/Assets/Scripts/ServerShared/Behaviors/Weapon.cs index 4d81c3691..b8a562e17 100644 --- a/Assets/Scripts/ServerShared/Behaviors/Weapon.cs +++ b/Assets/Scripts/ServerShared/Behaviors/Weapon.cs @@ -68,6 +68,7 @@ public abstract class Weapon : Behavior, IActivatedBehavior public abstract float RangeDamagePerSecond(float range); public abstract int Ammo { get; } public WeaponData WeaponData => _data; + public DamageType DamageType { get; } public float Damage { get; protected set; } public float Penetration { get; protected set; } @@ -90,11 +91,13 @@ public abstract class Weapon : Behavior, IActivatedBehavior public Weapon(WeaponData data, EquippedItem item) : base(data, item) { _data = data; + DamageType = data.DamageType; } public Weapon(WeaponData data, ConsumableItemEffect item) : base(data, item) { _data = data; + DamageType = data.DamageType; } protected virtual void UpdateStats() diff --git a/docs/aetheria-perfect-machine-map.md b/docs/aetheria-perfect-machine-map.md index f1aa5d5e7..d8b587cdd 100644 --- a/docs/aetheria-perfect-machine-map.md +++ b/docs/aetheria-perfect-machine-map.md @@ -1000,6 +1000,9 @@ First Aetheria surfaces to publish: - Done: move TurretController's weapon range/velocity reads off `WeaponData` casts and onto `Weapon.EvaluateRange`/`EvaluateVelocity`; weapon config fields remain private inputs to the weapon runtime owner. + - Done: move projectile, hitscan, beam, lightning, and mine effect damage + type reads off `WeaponData` and onto `Weapon.DamageType`; effect managers + consume live weapon metadata instead of config DTO fields. - Done: delete the legacy `Behaviors` lists from `ConsumableItemData` and `EquippableItemData`; item DTOs can no longer carry behavior config state. - Done: move runtime blueprint price aggregation and conductivity restore