using NeonSprawl.Server.Game.Mastery; namespace NeonSprawl.Server.Game.Skills; /// /// NEO-43: E7.M2 mission/quest reward apply should call so XP uses the same path as /// POST …/skill-progression. Outcome is ignored on success paths (mirror NEO-42); use /// directly when callers need deny envelopes. /// public static class MissionRewardSkillXpGrant { /// Applies one grant with sourceKind: mission_reward if the catalog allowlist permits it. /// Pass a normalized (e.g. route-trimmed), matching other grant hook callers. public static void GrantFromMissionReward( string playerId, string skillId, int amount, ISkillDefinitionRegistry registry, IPlayerSkillProgressionStore xpStore, ISkillLevelCurve levelCurve, PerkUnlockEngine perkUnlockEngine) { _ = SkillProgressionGrantOperations.TryApplyGrant( playerId, skillId, amount, MissionRewardSkillXpConstants.MissionRewardSourceKind, registry, xpStore, levelCurve, perkUnlockEngine); } }