* Added variable PercentageDrain to SinguloFoodComponent
* Set percentageDrain to 0.03 (3%) for anti particles
* Added percentageDrain logic in public OnConsumed
* Simplify SinguloFoodComponent and set percentageDrain to negative
* EnergyFactor now applies to positive values too
* Better commenting on EnergyFactor
* Update Content.Server/Singularity/Components/SinguloFoodComponent.cs
* Documentation of EnergyFactor
* Fixing spelling mistake
---------
Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
[RegisterComponent]
public sealed partial class SinguloFoodComponent : Component
{
- [ViewVariables(VVAccess.ReadWrite)]
- [DataField("energy")]
- public float Energy { get; set; } = 1f;
+ /// <summary>
+ /// Flat adjustment to the singularity's energy when this entity is eaten by the event horizon.
+ /// </summary>
+ [DataField]
+ public float Energy = 1f;
+
+ /// <summary>
+ /// Multiplier applied to singularity's energy.
+ /// 1.0 = no change, 0.97 = 3% reduction, 1.05 = 5% increase
+ /// </summary>
+ /// /// <remarks>
+ /// This is calculated using the singularity's energy level before <see cref="Energy"/> has been added.
+ /// </remarks>
+ [DataField]
+ public float EnergyFactor = 1f;
}
}
public void OnConsumed(EntityUid uid, SinguloFoodComponent comp, ref EventHorizonConsumedEntityEvent args)
{
if (EntityManager.TryGetComponent<SingularityComponent>(args.EventHorizonUid, out var singulo))
- AdjustEnergy(args.EventHorizonUid, comp.Energy, singularity: singulo);
+ {
+ // Calculate the percentage change (positive or negative)
+ var percentageChange = singulo.Energy * (comp.EnergyFactor - 1f);
+ // Apply both the flat and percentage changes
+ AdjustEnergy(args.EventHorizonUid, comp.Energy + percentageChange, singularity: singulo);
+ }
}
/// <summary>
lifetime: 0.6
- type: SinguloFood
energy: -10
+ energyFactor: 0.97