/// <summary>
        /// Add modifiers.
        /// </summary>
        /// <param name="stage">
        /// The stage during character update this is called.
        /// </param>
        /// <param name="addModifier">
        /// Add modifiers by calling this method.
        /// </param>
        /// <param name="character">
        /// The character to add modifiers for.
        /// </param>
        protected override void AddModifiers(CharacterUpdateStage stage, Action<Modifier> addModifier, Character character)
        {
            base.AddModifiers(stage, addModifier, character);

            addModifier(new Modifier(this, character[ScoreType.Reflex], 2));
            addModifier(new Modifier(this, character[ScoreType.Athletics], 4));
        }
        /// <summary>
        /// Add modifiers.
        /// </summary>
        /// <param name="stage">
        /// The stage during character update this is called.
        /// </param>
        /// <param name="addModifier">
        /// Add modifiers by calling this method.
        /// </param>
        /// <param name="character">
        /// The character to add modifiers for.
        /// </param>
        protected override void AddModifiers(CharacterUpdateStage stage, Action<Modifier> addModifier, Character character)
        {
            base.AddModifiers(stage, addModifier, character);

            addModifier(new Modifier(this, character[ScoreType.Fortitude], 2));
            addModifier(new Modifier(this, character[ScoreType.Science], 4));
        }
        /// <summary>
        /// Add modifiers based on this score's current value(s).
        /// </summary>
        /// <param name="stage">
        /// The stage during character update this is called.
        /// </param>
        /// <param name="addModifier">
        /// Add modifiers by calling this method.
        /// </param>
        /// <param name="character">
        /// The character to add modifiers for.
        /// </param>
        protected override void AddModifiers(CharacterUpdateStage stage, Action<Modifier> addModifier, Character character)
        {
            base.AddModifiers(stage, addModifier, character);

            addModifier(new Modifier(character[ScoreType.HitPoints], this,
                character[ScoreType.HitPoints].Total / 2));
        }
        /// <summary>
        /// Add modifiers.
        /// </summary>
        /// <param name="stage">
        /// The stage during character update this is called.
        /// </param>
        /// <param name="addModifier">
        /// Add modifiers by calling this method.
        /// </param>
        /// <param name="character">
        /// The character to add modifiers for.
        /// </param>
        protected override void AddModifiers(CharacterUpdateStage stage, Action<Modifier> addModifier, Character character)
        {
            base.AddModifiers(stage, addModifier, character);

            addModifier(new Modifier(character[ScoreType.Speed], character[MovementMode], character[ScoreType.Speed].Total));
            addModifier(new Modifier(this, character[MovementMode], 0, string.Format("see {0}", Name)));
        }
 /// <summary>
 /// Add the ability score modifier and half level.
 /// </summary>
 /// <param name="stage">
 /// The stage during which this is called.
 /// </param>
 /// <param name="addModifier">
 /// Add modifiers by calling this method.
 /// </param>
 /// <param name="character">
 /// The <see cref="Character"/> to add modifiers for.
 /// </param>
 protected override void AddModifiers(CharacterUpdateStage stage, Action<Modifier> addModifier, Character character)
 {
     base.AddModifiers(stage, addModifier, character);
     addModifier(new Modifier(character[ScoreType.Level], this,
         character[ScoreType.Level].Total));
     addModifier(new Modifier(character[abilityScore], this,
         ((AbilityScore) character[abilityScore]).Modifier));
 }
        /// <summary>
        /// Add modifiers.
        /// </summary>
        /// <param name="stage">
        /// The stage during character update this is called.
        /// </param>
        /// <param name="addModifier">
        /// Add modifiers by calling this method.
        /// </param>
        /// <param name="character">
        /// The character to add modifiers for.
        /// </param>
        protected override void AddModifiers(CharacterUpdateStage stage, Action<Modifier> addModifier, Character character)
        {
            base.AddModifiers(stage, addModifier, character);

            addModifier(new Modifier(this, character[ScoreType.Reflex], 2));
            addModifier(new Modifier(this, character[ScoreType.Mechanics], 4));
            addModifier(new Modifier(this, character[ScoreType.ElectricityResistance], 10));
        }
 /// <summary>
 /// Add the specified modifiers.
 /// </summary>
 /// <param name="stage">
 /// The character update stage this is called.
 /// </param>
 /// <param name="addModifier">
 /// Add modifiers by calling this method.
 /// </param>
 /// <param name="character">
 /// The character to add modifiers for.
 /// </param>
 protected override void AddModifiers(CharacterUpdateStage stage, Action<Modifier> addModifier, Character character)
 {
     base.AddModifiers(stage, addModifier, character);
     foreach (ScoreType scoreType in ScoreTypes)
     {
         addModifier(new Modifier(character[scoreType], this, character[scoreType].Total));
     }
 }
        /// <summary>
        /// Check that Effect has been set.
        /// </summary>
        /// <param name="stage">
        /// The stage when this is called.
        /// </param>
        /// <param name="addModifier">
        /// Add modifiers by calling this method.
        /// </param>
        /// <param name="character">
        /// The <see cref="Character"/> to add modifiers for.
        /// </param>
        protected override void AddModifiers(CharacterUpdateStage stage, Action<Modifier> addModifier, Character character)
        {
            base.AddModifiers(stage, addModifier, character);

            if (!HasEffect)
            {
                throw new InvalidOperationException(string.Format("Effect not set in power '{0}'. Call SetEffect().",
                    Name));
            }
        }
        /// <summary>
        /// Add modifiers.
        /// </summary>
        /// <param name="stage">
        /// The stage during character update this is called.
        /// </param>
        /// <param name="addModifier">
        /// Add modifiers by calling this method.
        /// </param>
        /// <param name="character">
        /// The character to add modifiers for.
        /// </param>
        protected override void AddModifiers(CharacterUpdateStage stage, Action<Modifier> addModifier, Character character)
        {
            base.AddModifiers(stage, addModifier, character);

            addModifier(new Modifier(this, character[ScoreType.Stealth], 4));
            addModifier(new Modifier(this, character[ScoreType.Reflex], 2));
            if (!character.IsWearingHeavyArmor())
            {
                addModifier(new Modifier(this, character[ScoreType.Speed], 1));
            }
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Add modifiers based on this score's current value(s).
        /// </summary>
        /// <param name="stage">
        /// The stage during character update this is called.
        /// </param>
        /// <param name="addModifier">
        /// Add modifiers by calling this method.
        /// </param>
        /// <param name="character">
        /// The character to add modifiers for.
        /// </param>
        protected override void AddModifiers(CharacterUpdateStage stage, Action<Modifier> addModifier, Character character)
        {
            base.AddModifiers(stage, addModifier, character);

            // Add the AC bonus
            addModifier(new Modifier(this, character[ScoreType.ArmorClass], ArmorBonus));

            if (SpeedPenalty < 0)
            {
                addModifier(new Modifier(this, character[ScoreType.Speed], SpeedPenalty));
            }
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Add modifiers.
        /// </summary>
        /// <param name="stage">
        /// The stage during character update this is called.
        /// </param>
        /// <param name="addModifier">
        /// Add modifiers by calling this method.
        /// </param>
        /// <param name="character">
        /// The character to add modifiers for.
        /// </param>
        protected override void AddModifiers(CharacterUpdateStage stage, Action<Modifier> addModifier, Character character)
        {
            base.AddModifiers(stage, addModifier, character);

            addModifier(new Modifier(this, character[ScoreType.Athletics], 4));
            addModifier(new Modifier(this, character[ScoreType.Fortitude], 2));

            if (character.IsWearingHeavyArmor())
            {
                addModifier(new Modifier(this, character[ScoreType.Speed], 1));
            }
        }
        /// <summary>
        /// Add modifiers based on this score's current value(s).
        /// </summary>
        /// <param name="stage">
        /// The stage during character update this is called.
        /// </param>
        /// <param name="addModifier">
        /// Add modifiers by calling this method.
        /// </param>
        /// <param name="character">
        /// The character to add modifiers for.
        /// </param>
        protected override void AddModifiers(CharacterUpdateStage stage, Action<Modifier> addModifier, Character character)
        {
            base.AddModifiers(stage, addModifier, character);

            // Add Con to hps
            addModifier(new Modifier(character[ScoreType.Constitution], this,
                character[ScoreType.Constitution].Total));

            // At (Level - 1) * (hps per level) to hps
            addModifier(new Modifier(character[ScoreType.Level], character.HitPoints,
                (character.Level - 1) * HitPointsPerLevel));
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Add modifiers based on this score's current value(s).
        /// </summary>
        /// <param name="stage">
        /// The stage during character update this is called.
        /// </param>
        /// <param name="addModifier">
        /// Add modifiers by calling this method.
        /// </param>
        /// <param name="character">
        /// The character to add modifiers for.
        /// </param>
        protected override void AddModifiers(CharacterUpdateStage stage, Action<Modifier> addModifier, Character character)
        {
            base.AddModifiers(stage, addModifier, character);

            // Add the specified ability score's modfiier.
            addModifier(new Modifier(character[abilityScore], this,
                ((AbilityScore) character[abilityScore]).Modifier));

            // Add the character's level.
            addModifier(new Modifier(character[ScoreType.Level], this,
                character[ScoreType.Level].Total));
        }
        /// <summary>
        /// Add modifiers.
        /// </summary>
        /// <param name="stage">
        /// The stage during character update this is called.
        /// </param>
        /// <param name="addModifier">
        /// Add modifiers by calling this method.
        /// </param>
        /// <param name="character">
        /// The character to add modifiers for.
        /// </param>
        protected override void AddModifiers(CharacterUpdateStage stage, Action<Modifier> addModifier, Character character)
        {
            Weapon weapon;

            base.AddModifiers(stage, addModifier, character);

            weapon = character.GetHeldItem<Weapon>(Hand);
            if (weapon != null)
            {
                // Add the accuracy bonus
                addModifier(new Modifier(weapon, this, weapon.AccuracyBonus));
            }
        }
        /// <summary>
        /// Add modifiers.
        /// </summary>
        /// <param name="stage">
        /// The stage during character update this is called.
        /// </param>
        /// <param name="addModifier">
        /// Add modifiers by calling this method.
        /// </param>
        /// <param name="character">
        /// The character to add modifiers for.
        /// </param>
        protected override void AddModifiers(CharacterUpdateStage stage, Action<Modifier> addModifier, Character character)
        {
            Weapon weapon;

            base.AddModifiers(stage, addModifier, character);

            weapon = character.GetHeldItem<Weapon>(Hand);
            if (weapon != null)
            {
                // Add the greatest ability score's modifier
                BonusHelper.AddGreatestScoreModifier(this, addModifier, character, weapon.BasicAttackAbilityScores);
            }
        }
 /// <summary>
 /// Add modifiers based on this score's current value(s).
 /// </summary>
 /// <param name="stage">
 /// The stage during character update this is called.
 /// </param>
 /// <param name="addModifier">
 /// Add modifiers by calling this method.
 /// </param>
 /// <param name="character">
 /// The character to add modifiers for.
 /// </param>
 protected override void AddModifiers(CharacterUpdateStage stage, Action<Modifier> addModifier, Character character)
 {
     // Add to Armor Class
     if (!character.IsWearingHeavyArmor())
     {
         base.AddModifiers(stage, addModifier, character);
     }
     else
     {
         // Add half the character's level.
         addModifier(new Modifier(character[ScoreType.Level], this,
             character[ScoreType.Level].Total));
     }
 }
        /// <summary>
        /// Set the level score.
        /// </summary>
        /// <param name="stage">
        /// The stage at which this is called.
        /// </param>
        /// <param name="addModifier">
        /// Add modifiers by calling this method.
        /// </param>
        /// <param name="character">
        /// The character to add modifiers for.
        /// </param>
        protected override void AddModifiers(CharacterUpdateStage stage, Action<Modifier> addModifier, Character character)
        {
            base.AddModifiers(stage, addModifier, character);

            // Set the level
            addModifier(new Modifier(this, character[ScoreType.Level],
                character.Level));

            // Set the trained skill
            addModifier(new Modifier(this, character[TrainedSkill], 4));
        }
        /// <summary>
        /// Add the modifier to the modifier score.
        /// </summary>
        /// <param name="stage">
        /// The stage during character update this is called.
        /// </param>
        /// <param name="addModifier">
        /// Add modifiers by calling this method.
        /// </param>
        /// <param name="character">
        /// The character to add modifiers for. This should not be modified directly.
        /// </param>
        /// <exception cref="ArgumentNullException">
        /// Neither modifiers nor character can be null.
        /// </exception>
        protected override void AddModifiers(CharacterUpdateStage stage, Action<Modifier> addModifier, Character character)
        {
            base.AddModifiers(stage, addModifier, character);

            addModifier(new Modifier(this, character[ModifierScore], Modifier));
        }
        /// <summary>
        /// Ensure the character meets the minimum requirements for the power during the
        /// score updating phase.
        /// </summary>
        /// <param name="stage">
        /// The character update stage at which this is called.
        /// </param>
        /// <param name="addModifier">
        /// Add modifiers by calling this method.
        /// </param>
        /// <param name="character">
        /// The <see cref="Character"/> to add modifiers for.
        /// </param>
        protected override void AddModifiers(CharacterUpdateStage stage, Action<Modifier> addModifier, Character character)
        {
            base.AddModifiers(stage, addModifier, character);

            OriginChoice level2CriticalHitBenefitOrigin;

            criticals.Clear();
            if (character.Level >= 2)
            {
                level2CriticalHitBenefitOrigin = ((Level02) character.Levels.OfType<Level02>().First()).CriticalHitBenefitOrigin;
                if (level2CriticalHitBenefitOrigin == OriginChoice.Primary)
                {
                    criticals.Add(character.PrimaryOrigin.CriticalHitBenefit);
                }
                else
                {
                    criticals.Add(character.SecondaryOrigin.CriticalHitBenefit);
                }
            }
            else if (character.Level >= 6)
            {
                criticals.Add(character.PrimaryOrigin.CriticalHitBenefit);
                criticals.Add(character.SecondaryOrigin.CriticalHitBenefit);
            }
        }
 /// <summary>
 /// Add the bloodied value to the amout of hit points healed.
 /// </summary>
 /// <param name="stage">
 /// The character update stage this is called.
 /// </param>
 /// <param name="addModifier">
 /// Add modifiers by calling this method.
 /// </param>
 /// <param name="character">
 /// The character to add modifiers for.
 /// </param>
 protected override void AddModifiers(CharacterUpdateStage stage, Action<Modifier> addModifier, Character character)
 {
     base.AddModifiers(stage, addModifier, character);
     addModifier(new Modifier(character[ScoreType.Bloodied], HitPointsHealed, character[ScoreType.Bloodied].Total));
 }
 /// <summary>
 /// Set the level score.
 /// </summary>
 /// <param name="stage">
 /// The stage at which this is called.
 /// </param>
 /// <param name="addModifier">
 /// Add modifiers by calling this method.
 /// </param>
 /// <param name="character">
 /// The character to add modifiers for.
 /// </param>
 protected override void AddModifiers(CharacterUpdateStage stage, Action<Modifier> addModifier, Character character)
 {
     base.AddModifiers(stage, addModifier, character);
 }
 /// <summary>
 /// Add half level to the existing modifiers.
 /// </summary>
 /// <param name="stage">
 /// The character update stage this is called.
 /// </param>
 /// <param name="addModifier">
 /// Add modifiers by calling this method.
 /// </param>
 /// <param name="character">
 /// The character to add modifiers for.
 /// </param>
 protected override void AddModifiers(CharacterUpdateStage stage, Action<Modifier> addModifier, Character character)
 {
     base.AddModifiers(stage, addModifier, character);
     addModifier(new Modifier(character[ScoreType.Level], this, LevelMulitplier * character.Level));
 }
        /// <summary>
        /// Add modifiers.
        /// </summary>
        /// <param name="stage">
        /// The stage during character update this is called.
        /// </param>
        /// <param name="addModifier">
        /// Add modifiers by calling this method.
        /// </param>
        /// <param name="character">
        /// The character to add modifiers for.
        /// </param>
        protected override void AddModifiers(CharacterUpdateStage stage, Action<Modifier> addModifier, Character character)
        {
            base.AddModifiers(stage, addModifier, character);

            AbilityScore attackingAbilityScore;

            // Add the ability score modifier.
            foreach(ScoreType score in abilityScores)
            {
                attackingAbilityScore = (AbilityScore)character[score];
                addModifier(new Modifier(attackingAbilityScore, this,
                    attackingAbilityScore.Modifier));
            }
        }
        /// <summary>
        /// Add modifiers.
        /// </summary>
        /// <param name="stage">
        /// The stage during character update this is called.
        /// </param>
        /// <param name="addModifier">
        /// Add modifiers by calling this method.
        /// </param>
        /// <param name="character">
        /// The character to add modifiers for.
        /// </param>
        /// <exception cref="InvalidOperationException">
        /// The character must be wielding a weapon.
        /// </exception>
        protected override void AddModifiers(CharacterUpdateStage stage, Action<Modifier> addModifier, Character character)
        {
            Weapon weapon;

            base.AddModifiers(stage, addModifier, character);

            weapon = character.GetHeldItem<Weapon>(Hand);
            if (weapon != null)
            {
                SetDice(new Dice(Multiplier * weapon.Damage.Number,
                    weapon.Damage.DiceType));
            }

            // Do nothing if the weapon is not present. Certain powers like a ranger's TwinStrike may
            // not be available depending on certain weapon configurations.
        }
        /// <summary>
        /// Add modifiers based on this score's current value(s).
        /// </summary>
        /// <param name="stage">
        /// The stage during character update this is called.
        /// </param>
        /// <param name="addModifier">
        /// Add modifiers by calling this method.
        /// </param>
        /// <param name="character">
        /// The character to add modifiers for.
        /// </param>
        protected override void AddModifiers(CharacterUpdateStage stage, Action<Modifier> addModifier, Character character)
        {
            base.AddModifiers(stage, addModifier, character);

            foreach (ScoreType scoreType in ScoreTypeHelper.AbilityScores)
            {
                addModifier(new Modifier(this, character[scoreType], scores[scoreType]));
            }
        }
        /// <summary>
        /// Add modifiers based on this score's current value(s).
        /// </summary>
        /// <param name="stage">
        /// The stage during character update this is called.
        /// </param>
        /// <param name="addModifier">
        /// Add modifiers by calling this method.
        /// </param>
        /// <param name="character">
        /// The character to add modifiers for.
        /// </param>
        protected override void AddModifiers(CharacterUpdateStage stage, Action<Modifier> addModifier, Character character)
        {
            AbilityScore abilityScoreWithLargestModifier;
            AbilityScore currentAbilityScore;

            base.AddModifiers(stage, addModifier, character);

            abilityScoreWithLargestModifier = null;
            foreach (ScoreType abilityScore in abilityScores)
            {
                currentAbilityScore = (AbilityScore) character[abilityScore];
                if (abilityScoreWithLargestModifier == null)
                {
                    abilityScoreWithLargestModifier = currentAbilityScore;
                }
                else if(currentAbilityScore.Modifier> abilityScoreWithLargestModifier.Modifier)
                {
                    abilityScoreWithLargestModifier = currentAbilityScore;
                }
            }

            addModifier(new Modifier(abilityScoreWithLargestModifier,this,
                abilityScoreWithLargestModifier.Modifier));

            // Add the character's level.
            addModifier(new Modifier(character[ScoreType.Level], this,
                character[ScoreType.Level].Total));
        }