Added decelerator percentage drain (#35643)
* 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>
This commit is contained in:
@@ -6,8 +6,20 @@ namespace Content.Server.Singularity.Components
|
|||||||
[RegisterComponent]
|
[RegisterComponent]
|
||||||
public sealed partial class SinguloFoodComponent : Component
|
public sealed partial class SinguloFoodComponent : Component
|
||||||
{
|
{
|
||||||
[ViewVariables(VVAccess.ReadWrite)]
|
/// <summary>
|
||||||
[DataField("energy")]
|
/// Flat adjustment to the singularity's energy when this entity is eaten by the event horizon.
|
||||||
public float Energy { get; set; } = 1f;
|
/// </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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -256,7 +256,12 @@ public sealed class SingularitySystem : SharedSingularitySystem
|
|||||||
public void OnConsumed(EntityUid uid, SinguloFoodComponent comp, ref EventHorizonConsumedEntityEvent args)
|
public void OnConsumed(EntityUid uid, SinguloFoodComponent comp, ref EventHorizonConsumedEntityEvent args)
|
||||||
{
|
{
|
||||||
if (EntityManager.TryGetComponent<SingularityComponent>(args.EventHorizonUid, out var singulo))
|
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>
|
/// <summary>
|
||||||
|
|||||||
@@ -80,3 +80,4 @@
|
|||||||
lifetime: 0.6
|
lifetime: 0.6
|
||||||
- type: SinguloFood
|
- type: SinguloFood
|
||||||
energy: -10
|
energy: -10
|
||||||
|
energyFactor: 0.97
|
||||||
|
|||||||
Reference in New Issue
Block a user