Skip to content

Commit

Permalink
Firestarter fixes (space-wizards#24647)
Browse files Browse the repository at this point in the history
* Firestarter fixes

- Actually networks the action.
- Namespace fixes.

* No networky for you
  • Loading branch information
metalgearsloth authored Jan 31, 2024
1 parent 1f389d7 commit a6ea8b2
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 22 deletions.
8 changes: 8 additions & 0 deletions Content.Client/Atmos/EntitySystems/FirestarterSystem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using Content.Shared.Atmos.EntitySystems;

namespace Content.Client.Atmos.EntitySystems;

public sealed class FirestarterSystem : SharedFirestarterSystem
{

}
Original file line number Diff line number Diff line change
@@ -1,36 +1,37 @@
using Content.Server.Atmos.Components;
using Content.Shared.Actions.Events;
using Content.Shared.Atmos.Components;
using Content.Shared.Atmos.EntitySystems;
using Robust.Shared.Audio.Systems;
using Robust.Shared.Containers;
using Robust.Shared.Map;
using Content.Server.Atmos.Components;
using Content.Server.Atmos.EntitySystems;
using Robust.Shared.Audio.Systems;
using Content.Shared.Abilities.Firestarter;

namespace Content.Server.Atmos.EntitySystems;

/// <summary>
/// Adds an action ability that will cause all flammable targets in a radius to ignite, also heals the owner
/// of the component when used.
/// </summary>
namespace Content.Server.Abilities.Firestarter;

public sealed class FirestarterSystem : EntitySystem
public sealed class FirestarterSystem : SharedFirestarterSystem
{
[Dependency] private readonly EntityLookupSystem _lookup = default!;
[Dependency] private readonly FlammableSystem _flammable = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly SharedContainerSystem _container = default!;

private readonly HashSet<Entity<FlammableComponent>> _flammables = new();

public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<FirestarterComponent, FireStarterActionEvent>(OnStartFire);
}

/// <summary>
/// Checks Radius for igniting nearby flammable objects .
/// Checks Radius for igniting nearby flammable objects
/// </summary>
private void OnStartFire(EntityUid uid, FirestarterComponent component, FireStarterActionEvent args)
{

if (_container.IsEntityOrParentInContainer(uid))
return;

Expand All @@ -47,10 +48,10 @@ private void OnStartFire(EntityUid uid, FirestarterComponent component, FireStar
/// </summary>
public void IgniteNearby(EntityUid uid, EntityCoordinates coordinates, float severity, float radius)
{
var flammables = new HashSet<Entity<FlammableComponent>>();
_lookup.GetEntitiesInRange(coordinates, radius, flammables);
_flammables.Clear();
_lookup.GetEntitiesInRange(coordinates, radius, _flammables);

foreach (var flammable in flammables)
foreach (var flammable in _flammables)
{
var ent = flammable.Owner;
var stackAmount = 2 + (int) (severity / 0.15f);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
using Robust.Shared.Prototypes;
using Content.Shared.Atmos.EntitySystems;
using Robust.Shared.Audio;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
using Robust.Shared.GameStates;
using Robust.Shared.Prototypes;

namespace Content.Shared.Abilities.Firestarter;
namespace Content.Shared.Atmos.Components;

/// <summary>
/// Lets its owner entity ignite flammables around it and also heal some damage.
Expand All @@ -14,21 +14,21 @@ public sealed partial class FirestarterComponent : Component
/// <summary>
/// Radius of objects that will be ignited if flammable.
/// </summary>
[DataField("ignitionRadius")]
[DataField]
public float IgnitionRadius = 4f;

/// <summary>
/// The action entity.
/// </summary>
[DataField("fireStarterAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
public string? FireStarterAction = "ActionFireStarter";
[DataField]
public EntProtoId? FireStarterAction = "ActionFireStarter";

[DataField("fireStarterActionEntity")] public EntityUid? FireStarterActionEntity;
[DataField] public EntityUid? FireStarterActionEntity;


/// <summary>
/// Radius of objects that will be ignited if flammable.
/// </summary>
[DataField("igniteSound")]
[DataField]
public SoundSpecifier IgniteSound = new SoundPathSpecifier("/Audio/Magic/rumble.ogg");
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
using Content.Shared.Actions;
using Content.Shared.Atmos.Components;

namespace Content.Shared.Abilities.Firestarter;
namespace Content.Shared.Atmos.EntitySystems;

public sealed class SharedFirestarterSystem : EntitySystem
public abstract class SharedFirestarterSystem : EntitySystem
{
[Dependency] private readonly SharedActionsSystem _actionsSystem = default!;

Expand All @@ -18,5 +19,6 @@ public override void Initialize()
private void OnComponentInit(EntityUid uid, FirestarterComponent component, ComponentInit args)
{
_actionsSystem.AddAction(uid, ref component.FireStarterActionEntity, component.FireStarterAction, uid);
Dirty(uid, component);
}
}

0 comments on commit a6ea8b2

Please sign in to comment.