using System.Linq; using Content.Shared._CP14.Actions.Components; using Content.Shared.Examine; using Content.Shared.Mobs; namespace Content.Shared._CP14.Actions; public abstract partial class CP14SharedActionSystem { private void InitializeExamine() { SubscribeLocalEvent(OnManacostExamined); SubscribeLocalEvent(OnStaminaCostExamined); SubscribeLocalEvent(OnSkillPointCostExamined); SubscribeLocalEvent(OnVerbalExamined); SubscribeLocalEvent(OnSomaticExamined); SubscribeLocalEvent(OnMaterialExamined); SubscribeLocalEvent(OnMusicExamined); SubscribeLocalEvent(OnMobStateExamined); } private void OnManacostExamined(Entity ent, ref ExaminedEvent args) { args.PushMarkup($"{Loc.GetString("cp14-magic-manacost")}: [color=#5da9e8]{ent.Comp.ManaCost}[/color]", priority: 9); } private void OnStaminaCostExamined(Entity ent, ref ExaminedEvent args) { args.PushMarkup($"{Loc.GetString("cp14-magic-staminacost")}: [color=#3fba54]{ent.Comp.Stamina}[/color]", priority: 9); } private void OnSkillPointCostExamined(Entity ent, ref ExaminedEvent args) { if (!_proto.TryIndex(ent.Comp.SkillPoint, out var indexedSkillPoint)) return; args.PushMarkup($"{Loc.GetString("cp14-magic-skillpointcost", ("name", Loc.GetString(indexedSkillPoint.Name)), ("count", ent.Comp.Count))}", priority: 9); } private void OnVerbalExamined(Entity ent, ref ExaminedEvent args) { args.PushMarkup(Loc.GetString("cp14-magic-verbal-aspect"), 8); } private void OnSomaticExamined(Entity ent, ref ExaminedEvent args) { args.PushMarkup(Loc.GetString("cp14-magic-somatic-aspect") + " " + ent.Comp.FreeHandRequired, 8); } private void OnMaterialExamined(Entity ent, ref ExaminedEvent args) { if (ent.Comp.Requirement is not null) args.PushMarkup(Loc.GetString("cp14-magic-material-aspect") + " " + ent.Comp.Requirement.GetRequirementTitle(_proto)); } private void OnMusicExamined(Entity ent, ref ExaminedEvent args) { args.PushMarkup(Loc.GetString("cp14-magic-music-aspect")); } private void OnMobStateExamined(Entity ent, ref ExaminedEvent args) { var states = string.Join(", ", ent.Comp.AllowedStates.Select(state => state switch { MobState.Alive => Loc.GetString("cp14-magic-spell-target-mob-state-live"), MobState.Dead => Loc.GetString("cp14-magic-spell-target-mob-state-dead"), MobState.Critical => Loc.GetString("cp14-magic-spell-target-mob-state-critical") })); args.PushMarkup(Loc.GetString("cp14-magic-spell-target-mob-state", ("state", states))); } }