private void ExpGain(RPGInfo rpgInfo, int experience, BasePlayer player) { var steamId = RPGHelper.SteamId(player); if (IsNight()) experience *= 2; if (rpgInfo.AddExperience(experience, RequiredExperience(rpgInfo.Level))) { NotifyLevelUp(player, rpgInfo); PlayerLastPercentChange[steamId] = 0; } else { var currentPercent = CurrentPercent(rpgInfo); if (!PlayerLastPercentChange.ContainsKey(steamId)) PlayerLastPercentChange.Add(steamId, currentPercent); var lastPercent = PlayerLastPercentChange[steamId]; var requiredPercentChange = rpgInfo.Preferences.ShowXPMessagePercent; float percentChange = currentPercent - lastPercent; if (percentChange < requiredPercentChange) return; ChatMessage(player, XPProgression(rpgInfo)); PlayerLastPercentChange[steamId] = currentPercent; } }
public void LevelUpPlayer(RPGInfo rpgInfo, int desiredLevel) { var levelsToUp = desiredLevel - rpgInfo.Level; for (int i = 0; i < levelsToUp; i++) { long requiredXP = RequiredExperience(rpgInfo.Level); rpgInfo.AddExperience(requiredXP, requiredXP); } }