using System.Text; using Content.Shared._CP14.Knowledge.Components; using Content.Shared._CP14.Knowledge.Events; using Content.Shared._CP14.Knowledge.Prototypes; using Content.Shared.DoAfter; using Content.Shared.Ghost; using Content.Shared.MagicMirror; using Content.Shared.Paper; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; namespace Content.Shared._CP14.Knowledge; public abstract class SharedCP14KnowledgeSystem : EntitySystem { public bool HasKnowledge(Entity entity, ProtoId knowledge) { if (HasComp(entity)) return true; return Resolve(entity, ref entity.Comp, false) && entity.Comp.Knowledge.Contains(knowledge); } public bool TryUseKnowledge(Entity entity, ProtoId knowledge, float factor = 1f) { if (!Resolve(entity, ref entity.Comp, false)) return false; if (!entity.Comp.Knowledge.Contains(knowledge)) return false; var ev = new CP14KnowledgeUsedEvent(entity, knowledge, factor); RaiseLocalEvent(entity, ev); return true; } }