using Content.Server.Chat.Systems; using Content.Shared._CP14.Actions; using Content.Shared._CP14.Actions.Components; using Content.Shared.Actions.Events; namespace Content.Server._CP14.Actions; public sealed partial class CP14ActionSystem { private void InitializeDoAfter() { SubscribeLocalEvent(OnVerbalActionStarted); SubscribeLocalEvent(OnVerbalActionPerformed); SubscribeLocalEvent(OnEmoteActionStarted); SubscribeLocalEvent(OnEmoteActionPerformed); SubscribeLocalEvent(OnSpawnMagicVisualEffect); SubscribeLocalEvent(OnDespawnMagicVisualEffect); } private void OnVerbalActionStarted(Entity ent, ref CP14ActionStartDoAfterEvent args) { var performer = GetEntity(args.Performer); _chat.TrySendInGameICMessage(performer, ent.Comp.StartSpeech, ent.Comp.Whisper ? InGameICChatType.Whisper : InGameICChatType.Speak, true); } private void OnEmoteActionStarted(Entity ent, ref CP14ActionStartDoAfterEvent args) { var performer = GetEntity(args.Performer); _chat.TrySendInGameICMessage(performer, Loc.GetString(ent.Comp.StartEmote), InGameICChatType.Emote, true); } private void OnVerbalActionPerformed(Entity ent, ref ActionDoAfterEvent args) { if (args.Cancelled) return; if (!args.Handled) return; var performer = GetEntity(args.Performer); _chat.TrySendInGameICMessage(performer, ent.Comp.EndSpeech, ent.Comp.Whisper ? InGameICChatType.Whisper : InGameICChatType.Speak, true); } private void OnEmoteActionPerformed(Entity ent, ref ActionDoAfterEvent args) { if (args.Cancelled) return; if (!args.Handled) return; var performer = GetEntity(args.Performer); _chat.TrySendInGameICMessage(performer, Loc.GetString(ent.Comp.EndEmote), InGameICChatType.Emote, true); } private void OnSpawnMagicVisualEffect(Entity ent, ref CP14ActionStartDoAfterEvent args) { QueueDel(ent.Comp.SpawnedEntity); var performer = GetEntity(args.Performer); var vfx = SpawnAttachedTo(ent.Comp.Proto, Transform(performer).Coordinates); _transform.SetParent(vfx, performer); ent.Comp.SpawnedEntity = vfx; } private void OnDespawnMagicVisualEffect(Entity ent, ref ActionDoAfterEvent args) { if (args.Repeat) return; QueueDel(ent.Comp.SpawnedEntity); ent.Comp.SpawnedEntity = null; } }