public bool AddExp(long amount)
        {
            var currentLevel = Level;

            Exp += amount;

            var leveled = false;

            while (Exp >= ExpToLevel)
            {
                CheckLevelUp();
                leveled = currentLevel < Level;
                if (leveled)
                {
                    HandleLevelUp();
                }

                if (Rm_RPGHandler.Instance.ASVT.AllowExpToOverflow)
                {
                    break;
                }
            }

            if (leveled)
            {
                if (Rm_RPGHandler.Instance.Customise.EnableLevelReachedPopup)
                {
                    RPG.Popup.ShowInfo("Level " + Level + " Reached!");
                }

                HandleLevelUpVisualAndSound();
            }

            var args = new RPGEvents.GainedExpEventArgs {
                ExpGained = amount, Leveled = leveled
            };

            RPG.Events.OnGainedExp(args);

            if (Rm_RPGHandler.Instance.Customise.EnableExpGainedPopup)
            {
                RPG.Popup.ShowInfo("+" + amount + " Exp");
            }

            return(leveled);
        }
Beispiel #2
0
 private void UpdateFromGainedExp(object sender, RPGEvents.GainedExpEventArgs e)
 {
     UpdateStats();
 }
Beispiel #3
0
 private void GainedExpAlt(object sender, RPGEvents.GainedExpEventArgs e)
 {
     StartCoroutine("ShowExpGained", e.ExpGained);
 }