Ejemplo n.º 1
0
        public double GetValueGain(double experience, double levelLimit = 0)
        {
            CharacterAbilityBase copy = MakeCopy();

            copy.AddExperience(experience, levelLimit);
            return(copy.Value - Value);
        }
Ejemplo n.º 2
0
        public virtual double GetAbilityMaximumFromReading(Ability ability)
        {
            CharacterAbilityBase charAbility = GetAbility(ability).MakeCopy();
            double value = charAbility.Value;
            var    books = GetReadableBooksFromCollection(ability);
            IBook  summa = books.Where(b => b.Level < 1000).OrderBy(b => b.Level).FirstOrDefault();

            if (summa != null && summa.Level > value)
            {
                charAbility.AddExperience(1000, summa.Level);
            }
            foreach (IBook book in books.Where(b => b.Level == 1000))
            {
                charAbility.AddExperience(book.Quality);
            }
            return(charAbility.Value);
        }
Ejemplo n.º 3
0
        public virtual void ReadBook(IBook book)
        {
            Log.Add("Reading " + book.Title);
            CharacterAbilityBase ability = GetAbility(book.Topic);
            bool previouslyRead          = _booksRead.Contains(book);

            if (!previouslyRead || (book.Level != 1000 && ability.Value < book.Level))
            {
                ability.AddExperience(book.Quality, book.Level);
            }
            if (!previouslyRead)
            {
                _booksRead.Add(book);
            }
        }
Ejemplo n.º 4
0
        public override void Act(Character character)
        {
            Magus mage = ConfirmCharacterIsMage(character);

            // determine the amount of vis needed
            CharacterAbilityBase charAbility = mage.GetAbility(Art);
            double visNeeded = 0.5 + (charAbility.Value / 10.0);

            // decrement the used vis
            mage.UseVis(Art, visNeeded);

            // add experience
            ushort roll = Die.Instance.RollExplodingDie();
            double aura = mage.Covenant != null && mage.Covenant.Aura != null ? mage.Covenant.Aura.Strength : 0;
            double gain = roll + aura;

            character.Log.Add("Studying " + visNeeded.ToString("0.000") + " pawns of " + Art.AbilityName + " vis.");
            character.Log.Add("Gained " + gain + " experience.");
            charAbility.AddExperience(gain);
        }