Allow Flares to light cigarettes (#29476)
* Allow Flares to light cigarettes * !IsHot check * nicer looking(and I think the right way to do that...) * heh, whoops * Adds IgnitionEvent, IgnitionSource now functions as IsHot when Ignited * Fixes + remove redundancy * Hows this? * press enter Co-authored-by: ShadowCommander <10494922+ShadowCommander@users.noreply.github.com> * Flare is not forever hot anymore * Formatting fixes * Make IgnitionEvent readonly --------- Co-authored-by: ShadowCommander <10494922+ShadowCommander@users.noreply.github.com>
This commit is contained in:
7
Content.Server/IgnitionSource/IgnitionEvent.cs
Normal file
7
Content.Server/IgnitionSource/IgnitionEvent.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace Content.Server.IgnitionSource;
|
||||
|
||||
/// <summary>
|
||||
/// Raised in order to toggle the ignitionSourceComponent on an entity on or off
|
||||
/// </summary>
|
||||
[ByRefEvent]
|
||||
public readonly record struct IgnitionEvent(bool Ignite = false);
|
||||
@@ -19,18 +19,25 @@ public sealed class IgnitionSourceSystem : EntitySystem
|
||||
|
||||
SubscribeLocalEvent<IgnitionSourceComponent, IsHotEvent>(OnIsHot);
|
||||
SubscribeLocalEvent<ItemToggleHotComponent, ItemToggledEvent>(OnItemToggle);
|
||||
SubscribeLocalEvent<IgnitionSourceComponent, IgnitionEvent>(OnIgnitionEvent);
|
||||
}
|
||||
|
||||
private void OnIsHot(Entity<IgnitionSourceComponent> ent, ref IsHotEvent args)
|
||||
{
|
||||
SetIgnited((ent.Owner, ent.Comp), args.IsHot);
|
||||
args.IsHot = ent.Comp.Ignited;
|
||||
}
|
||||
|
||||
private void OnItemToggle(Entity<ItemToggleHotComponent> ent, ref ItemToggledEvent args)
|
||||
{
|
||||
if (TryComp<IgnitionSourceComponent>(ent, out var comp))
|
||||
SetIgnited((ent.Owner, comp), args.Activated);
|
||||
}
|
||||
|
||||
private void OnIgnitionEvent(Entity<IgnitionSourceComponent> ent, ref IgnitionEvent args)
|
||||
{
|
||||
SetIgnited((ent.Owner, ent.Comp), args.Ignite);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Simply sets the ignited field to the ignited param.
|
||||
/// </summary>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using Content.Server.IgnitionSource;
|
||||
using Content.Server.Light.Components;
|
||||
using Content.Shared.Clothing.Components;
|
||||
using Content.Shared.Clothing.EntitySystems;
|
||||
@@ -99,8 +100,8 @@ namespace Content.Server.Light.EntitySystems
|
||||
_item.SetHeldPrefix(ent, "lit", component: item);
|
||||
}
|
||||
|
||||
var isHotEvent = new IsHotEvent() {IsHot = true};
|
||||
RaiseLocalEvent(ent, isHotEvent);
|
||||
var ignite = new IgnitionEvent(true);
|
||||
RaiseLocalEvent(ent, ref ignite);
|
||||
|
||||
component.CurrentState = ExpendableLightState.Lit;
|
||||
component.StateExpiryTime = component.GlowDuration;
|
||||
@@ -134,8 +135,8 @@ namespace Content.Server.Light.EntitySystems
|
||||
|
||||
case ExpendableLightState.Dead:
|
||||
_appearance.SetData(ent, ExpendableLightVisuals.Behavior, string.Empty, appearance);
|
||||
var isHotEvent = new IsHotEvent() {IsHot = true};
|
||||
RaiseLocalEvent(ent, isHotEvent);
|
||||
var ignite = new IgnitionEvent(false);
|
||||
RaiseLocalEvent(ent, ref ignite);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
loop: true
|
||||
volume: -10
|
||||
maxDistance: 5
|
||||
|
||||
- type: Sprite
|
||||
sprite: Objects/Misc/flare.rsi
|
||||
layers:
|
||||
|
||||
Reference in New Issue
Block a user