Added ability to drink from context menu (#7732)

Co-authored-by: Saakra <xfallenfighterswolfx@gmail.com>
This commit is contained in:
Saakra
2022-04-23 19:38:21 -04:00
committed by GitHub
parent d28de2655a
commit e48366b42a
5 changed files with 99 additions and 1 deletions

View File

@@ -17,8 +17,10 @@ using Content.Shared.FixedPoint;
using Content.Shared.Interaction;
using Content.Shared.Interaction.Events;
using Content.Shared.Interaction.Helpers;
using Content.Shared.MobState.Components;
using Content.Shared.Nutrition.Components;
using Content.Shared.Throwing;
using Content.Shared.Verbs;
using JetBrains.Annotations;
using Robust.Shared.Audio;
using Robust.Shared.GameObjects;
@@ -53,6 +55,7 @@ namespace Content.Server.Nutrition.EntitySystems
SubscribeLocalEvent<DrinkComponent, LandEvent>(HandleLand);
SubscribeLocalEvent<DrinkComponent, UseInHandEvent>(OnUse);
SubscribeLocalEvent<DrinkComponent, AfterInteractEvent>(AfterInteract);
SubscribeLocalEvent<DrinkComponent, GetVerbsEvent<AlternativeVerb>>(AddDrinkVerb);
SubscribeLocalEvent<DrinkComponent, ExaminedEvent>(OnExamined);
SubscribeLocalEvent<DrinkComponent, SolutionTransferAttemptEvent>(OnTransferAttempt);
SubscribeLocalEvent<SharedBodyComponent, DrinkEvent>(OnDrink);
@@ -328,5 +331,34 @@ namespace Content.Server.Nutrition.EntitySystems
{
args.Drink.CancelToken = null;
}
private void AddDrinkVerb(EntityUid uid, DrinkComponent component, GetVerbsEvent<AlternativeVerb> ev)
{
if (component.CancelToken != null)
return;
if (uid == ev.User ||
!ev.CanInteract ||
!ev.CanAccess ||
!EntityManager.TryGetComponent(ev.User, out SharedBodyComponent? body) ||
!_bodySystem.TryGetComponentsOnMechanisms<StomachComponent>(ev.User, out var stomachs, body))
return;
if (EntityManager.TryGetComponent<MobStateComponent>(uid, out var mobState) && mobState.IsAlive())
return;
AlternativeVerb verb = new()
{
Act = () =>
{
TryDrink(ev.User, ev.User, component);
},
IconTexture = "/Textures/Interface/VerbIcons/drink.svg.192dpi.png",
Text = Loc.GetString("drink-system-verb-drink"),
Priority = -1
};
ev.Verbs.Add(verb);
}
}
}