public override void LevelUp() { CharacterController characterController = FindObjectOfType <CharacterController>(); this.level++; List <string> stats = new List <string>(); foreach (var stat in upgradePointsDictionary) { stats.Add(stat.Key.ToString()); } stats.ForEach(stat => { upgradePointsDictionary[stat]++; characterController.ApplyUpgradePoint(stat, this); }); int maxRoll = upgradePointsDictionary.Count; int dieRoll = Random.Range(0, maxRoll + 1); if (dieRoll == maxRoll) { experience++; } else { // Give enemies an extra random boost string statToIncrease = stats[dieRoll]; upgradePointsDictionary[statToIncrease]++; characterController.ApplyUpgradePoint(statToIncrease, this); } health = maxHealth; energyPoints = maxEnergyPoints; }
public void Populate() { partyMember = partyPanel.LookUpSelectedPartyMember(); buttonList.ForEach(button => { Destroy(button.gameObject); }); buttonList.Clear(); foreach (var multiplier in partyMember.upgradePointsDictionary) { Button button = Instantiate <Button>(upgradePointButton, this.transform); buttonList.Add(button); UpdateButtonLabel(button, multiplier.Key.ToString(), multiplier.Value.ToString()); button.GetComponent <Button>().onClick.AddListener(() => { string key = multiplier.Key.ToString(); partyMember.upgradePointsDictionary[key]++; UpdateButtonLabel(button, key, partyMember.upgradePointsDictionary[key].ToString()); partyMember.SpendUpgradePoint(); characterController.ApplyUpgradePoint(key, (BattleCharacter)partyMember); playerInfoPanel.Populate(partyMember.characterName); }); } }