Sentry turrets - Part 4: The sentry turret and its primary systems (#35123)
* Initial commit * Removed mention of StationAiTurretComponent (for now) * Prep for moving out of draft * Fixing merge conflict * Re-added new net frequencies to AI turrets * Removed turret control content * Removed unintended change * Final tweaks * Fixed incorrect file name * Improvement to fire mode handling * Addressed review comments * Updated how turret wire panel auto-closing is handled * Ranged NPCs no longer waste shots on stunned targets * Fixed bug in tracking broken state * Addressed review comments * Bug fix * Removed unnecessary event call
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
using Content.Shared.Power.EntitySystems;
|
||||
using Robust.Shared.GameStates;
|
||||
|
||||
namespace Content.Shared.Power.Components;
|
||||
|
||||
/// <summary>
|
||||
/// Attached to APC powered entities that possess a rechargeable internal battery.
|
||||
/// If external power is interrupted, the entity will draw power from this battery instead.
|
||||
/// Requires <see cref="Content.Server.Power.Components.ApcPowerReceiverComponent"/> and <see cref="Content.Server.Power.Components.BatteryComponent"/> to function.
|
||||
/// </summary>
|
||||
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
|
||||
[Access(typeof(SharedPowerNetSystem), typeof(SharedPowerReceiverSystem))]
|
||||
public sealed partial class ApcPowerReceiverBatteryComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// Indicates whether power is currently being drawn from the battery.
|
||||
/// </summary>
|
||||
[DataField, AutoNetworkedField]
|
||||
public bool Enabled = false;
|
||||
|
||||
/// <summary>
|
||||
/// The passive load the entity places on the APC power network.
|
||||
/// If not connected to an active APC power network, this amount
|
||||
/// of power is drained from the battery every second.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public float IdleLoad = 5f;
|
||||
|
||||
/// <summary>
|
||||
/// Determines how much battery charge the entity's battery gains
|
||||
/// per second when connected to an active APC power network.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public float BatteryRechargeRate = 50f;
|
||||
|
||||
/// <summary>
|
||||
/// While the battery is being recharged, the load this entity places on the APC
|
||||
/// power network is increased by the <see cref="BatteryRechargeRate"/> multiplied
|
||||
/// by this factor.
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public float BatteryRechargeEfficiency = 1f;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Raised whenever an ApcPowerReceiverBattery starts / stops discharging
|
||||
/// </summary>
|
||||
[ByRefEvent]
|
||||
public readonly record struct ApcPowerReceiverBatteryChangedEvent(bool Enabled);
|
||||
Reference in New Issue
Block a user