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:
rokudara-sen
2025-03-03 17:37:28 +01:00
committed by GitHub
parent 69115870ea
commit 8b7f175f84
3 changed files with 22 additions and 4 deletions

View File

@@ -6,8 +6,20 @@ namespace Content.Server.Singularity.Components
[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;
}
}

View File

@@ -256,7 +256,12 @@ public sealed class SingularitySystem : SharedSingularitySystem
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>

View File

@@ -80,3 +80,4 @@
lifetime: 0.6
- type: SinguloFood
energy: -10
energyFactor: 0.97