using Content.Shared._CP14.Knowledge.Components; using Content.Shared._CP14.Knowledge.Events; using Content.Shared._CP14.Knowledge.Prototypes; using Robust.Shared.Prototypes; 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; } }