Fix cream pie bomb when eaten or sliced (#25928)
* fix bomb activation when eaten * no swap / no eject * activate when sliced
This commit is contained in:
committed by
GitHub
parent
855def1fba
commit
0d0edbba4a
@@ -1,12 +1,11 @@
|
|||||||
using Content.Server.Chemistry.Containers.EntitySystems;
|
using Content.Server.Chemistry.Containers.EntitySystems;
|
||||||
using Content.Server.Explosion.Components;
|
|
||||||
using Content.Server.Explosion.EntitySystems;
|
using Content.Server.Explosion.EntitySystems;
|
||||||
using Content.Server.Fluids.EntitySystems;
|
using Content.Server.Fluids.EntitySystems;
|
||||||
using Content.Server.Nutrition.Components;
|
using Content.Server.Nutrition.Components;
|
||||||
using Content.Server.Popups;
|
using Content.Server.Popups;
|
||||||
using Content.Shared.Containers.ItemSlots;
|
using Content.Shared.Containers.ItemSlots;
|
||||||
using Content.Shared.Explosion.Components;
|
using Content.Shared.Explosion.Components;
|
||||||
using Content.Shared.Interaction;
|
using Content.Shared.Nutrition;
|
||||||
using Content.Shared.Nutrition.Components;
|
using Content.Shared.Nutrition.Components;
|
||||||
using Content.Shared.Nutrition.EntitySystems;
|
using Content.Shared.Nutrition.EntitySystems;
|
||||||
using Content.Shared.Rejuvenate;
|
using Content.Shared.Rejuvenate;
|
||||||
@@ -32,7 +31,10 @@ namespace Content.Server.Nutrition.EntitySystems
|
|||||||
{
|
{
|
||||||
base.Initialize();
|
base.Initialize();
|
||||||
|
|
||||||
SubscribeLocalEvent<CreamPieComponent, InteractUsingEvent>(OnInteractUsing);
|
// activate BEFORE entity is deleted and trash is spawned
|
||||||
|
SubscribeLocalEvent<CreamPieComponent, ConsumeDoAfterEvent>(OnConsume, before: [typeof(FoodSystem)]);
|
||||||
|
SubscribeLocalEvent<CreamPieComponent, SliceFoodEvent>(OnSlice);
|
||||||
|
|
||||||
SubscribeLocalEvent<CreamPiedComponent, RejuvenateEvent>(OnRejuvenate);
|
SubscribeLocalEvent<CreamPiedComponent, RejuvenateEvent>(OnRejuvenate);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,7 +58,12 @@ namespace Content.Server.Nutrition.EntitySystems
|
|||||||
EntityManager.QueueDeleteEntity(uid);
|
EntityManager.QueueDeleteEntity(uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnInteractUsing(Entity<CreamPieComponent> entity, ref InteractUsingEvent args)
|
private void OnConsume(Entity<CreamPieComponent> entity, ref ConsumeDoAfterEvent args)
|
||||||
|
{
|
||||||
|
ActivatePayload(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnSlice(Entity<CreamPieComponent> entity, ref SliceFoodEvent args)
|
||||||
{
|
{
|
||||||
ActivatePayload(entity);
|
ActivatePayload(entity);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using Content.Server.Chemistry.Containers.EntitySystems;
|
using Content.Server.Chemistry.Containers.EntitySystems;
|
||||||
using Content.Server.Nutrition.Components;
|
using Content.Server.Nutrition.Components;
|
||||||
|
using Content.Shared.Nutrition;
|
||||||
using Content.Shared.Nutrition.Components;
|
using Content.Shared.Nutrition.Components;
|
||||||
using Content.Shared.Chemistry.Components;
|
using Content.Shared.Chemistry.Components;
|
||||||
using Content.Shared.Examine;
|
using Content.Shared.Examine;
|
||||||
@@ -66,6 +67,8 @@ namespace Content.Server.Nutrition.EntitySystems
|
|||||||
FillSlice(sliceUid, lostSolution);
|
FillSlice(sliceUid, lostSolution);
|
||||||
|
|
||||||
_audio.PlayPvs(component.Sound, transform.Coordinates, AudioParams.Default.WithVolume(-2));
|
_audio.PlayPvs(component.Sound, transform.Coordinates, AudioParams.Default.WithVolume(-2));
|
||||||
|
var ev = new SliceFoodEvent();
|
||||||
|
RaiseLocalEvent(uid, ref ev);
|
||||||
|
|
||||||
// Decrease size of item based on count - Could implement in the future
|
// Decrease size of item based on count - Could implement in the future
|
||||||
// Bug with this currently is the size in a container is not updated
|
// Bug with this currently is the size in a container is not updated
|
||||||
|
|||||||
@@ -53,3 +53,9 @@ public sealed partial class VapeDoAfterEvent : DoAfterEvent
|
|||||||
|
|
||||||
public override DoAfterEvent Clone() => this;
|
public override DoAfterEvent Clone() => this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Raised before food is sliced
|
||||||
|
/// </summary>
|
||||||
|
[ByRefEvent]
|
||||||
|
public record struct SliceFoodEvent();
|
||||||
|
|||||||
@@ -156,6 +156,8 @@
|
|||||||
path: /Audio/Weapons/Guns/Empty/empty.ogg
|
path: /Audio/Weapons/Guns/Empty/empty.ogg
|
||||||
ejectSound:
|
ejectSound:
|
||||||
path: /Audio/Weapons/Guns/Empty/empty.ogg
|
path: /Audio/Weapons/Guns/Empty/empty.ogg
|
||||||
|
swap: false
|
||||||
|
disableEject: true
|
||||||
- type: Tag
|
- type: Tag
|
||||||
tags:
|
tags:
|
||||||
- Fruit
|
- Fruit
|
||||||
|
|||||||
Reference in New Issue
Block a user