コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: Battler.cs プロジェクト: hoptond/magiciansdemo
 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--;
         }
     }
 }
コード例 #3
0
        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);
                    }
                }
            }
        }