Move weapon damage type behind runtime owner

This commit is contained in:
Meta Vens 2026-06-14 17:37:51 +01:00
commit f151ecedc1
9 changed files with 15 additions and 9 deletions

Binary file not shown.

View file

@ -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();

View file

@ -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();
}
}
}

View file

@ -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;
}
}

View file

@ -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();
}
}
}

View file

@ -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;
}
}

View file

@ -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();

View file

@ -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()

View file

@ -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