public bool LevelUp(Game game) { var val = false; if (Level < 40) { Level++; Exp -= NextLevelExp; BattleStats.MaxHP += StatGain[0] * 4; BattleStats.MaxSP += StatGain[1] * 4; BattleStats.HP += StatGain[0] * 4; BattleStats.SP += StatGain[1] * 4; BattleStats.baseAttributes[Magicians.Attributes.Strength] += StatGain[0]; BattleStats.baseAttributes[Magicians.Attributes.Magic] += StatGain[1]; BattleStats.baseAttributes[Magicians.Attributes.Dexterity] += StatGain[2]; var randomStatBoost = game.randomNumber.Next(1, 3); BattleStats.baseAttributes[(Attributes)randomStatBoost] += 1; if (randomStatBoost == 0) { BattleStats.MaxHP += 4; BattleStats.HP += 4; } if (randomStatBoost == 1) { BattleStats.MaxSP += 4; BattleStats.SP += 4; } if (Level < 40) { NextLevelExp = ExpRequirements[this.Level - 1]; } else { NextLevelExp = -1; } BattleStats.RecalculateStats(); if (LearnableSpellLevels != null) { while (LearnableSpellLevels.Contains(Level)) { if (!Spells.Contains(LearnableSpells[0])) { Spells.Add(LearnableSpells[0]); LearnableSpells.RemoveAt(0); val = true; } LearnableSpellLevels.RemoveAt(0); } } if (Exp > NextLevelExp) { LevelUp(game); } } return(val); }
public void OnBeginTurn() { if (inOrder && BattleStats.canAct) { actionNumber += 1; } for (int x = 0; x < BattleStats.Modifiers.Count; x++) { if (BattleStats.Modifiers[x].turnsLeft == 0) { Console.WriteLine(Name + " loses " + BattleStats.Modifiers[x].Name); BattleStats.Modifiers.RemoveAt(x); x--; BattleStats.RecalculateStats(); break; } if (BattleStats.Modifiers[x].effectPerTurn != null) { BattleStats.Modifiers[x].effectPerTurn.DoTick(BattleStats); } if (BattleStats.Modifiers[x].turnsLeft != -1) { BattleStats.Modifiers[x].turnsLeft--; } } }
public PlayerCharacter(Game game, CharacterSave charsave) { ID = charsave.ID; BattleStats = new BattleStats(null); Name = charsave.Name; BattleStats.HP = charsave.HpSp[0]; BattleStats.MaxHP = charsave.HpSp[1]; BattleStats.SP = charsave.HpSp[2]; BattleStats.MaxSP = charsave.HpSp[3]; BattleStats.baseAttributes.Add(Magicians.Attributes.Strength, charsave.Stats[0]); BattleStats.baseAttributes.Add(Magicians.Attributes.Magic, charsave.Stats[1]); BattleStats.baseAttributes.Add(Magicians.Attributes.Dexterity, charsave.Stats[2]); StatGain = charsave.StatGain.ToArray(); Inventory.Capacity = 16; Spells.Capacity = 8; foreach (KeyValuePair <Attributes, int> kvp in BattleStats.baseAttributes) { BattleStats.Attributes.Add(kvp.Key, kvp.Value); } BattleStats.baseResistances.Add(DamageTypes.Physical, 0); BattleStats.baseResistances.Add(DamageTypes.Fire, 0); BattleStats.baseResistances.Add(DamageTypes.Cold, 0); BattleStats.baseResistances.Add(DamageTypes.Electricity, 0); BattleStats.baseResistances.Add(DamageTypes.Poison, 0); BattleStats.baseResistances.Add(DamageTypes.Raw, 0); BattleStats.baseResistances.Add(DamageTypes.Light, 100); foreach (KeyValuePair <DamageTypes, int> kvp in BattleStats.baseResistances) { BattleStats.Resistances.Add(kvp.Key, kvp.Value); } this.Arcana = charsave.Arcana; for (int i = 0; i < charsave.Inventory.Count; i++) { Inventory.Add(game.Items.Find(p => p.InternalName == charsave.Inventory[i])); } for (int i = 0; i < charsave.Equips.Length; i++) { for (int e = 0; e < Inventory.Count; e++) { if (Inventory[e].InternalName == charsave.Equips[i]) { EquipItem(e); } } } for (int i = 0; i < charsave.Spells.Count; i++) { for (int x = 0; x < game.Spells.Count; x++) { if (game.Spells[x].InternalName == charsave.Spells[i]) { LearnSpell(game.Spells[x]); break; } } } Level = charsave.Level; Exp = charsave.Exp; TotalExp = charsave.TotalExp; NextLevelExp = charsave.NextLevelExp; BattleStats.RecalculateStats(); GraphicsFolderName = charsave.SpriteFolder; Gender = charsave.Gender; if (Spells.Count > 8) { Spells.RemoveRange(8, Spells.Count - 8); } Spells.Capacity = 8; GetLevelUps(game); LearnableSpellLevels = charsave.LearnLevels; if (charsave.LearnSpells != null) { foreach (string s in charsave.LearnSpells) { var spell = game.Spells.Find(spl => spl.InternalName == s); if (spell != null) { LearnableSpells.Add(spell); } } } }