예제 #1
0
    protected void Attack(int partyMemberNo)
    {
        ChangeState(CombatBehaviours.CharacterState.Attack);
        PartyMemberControllers[partyMemberNo].Damage(CombatCalculator.GetEnemyAttackDamage(this, PartyMemberControllers[partyMemberNo]));

        affectedPartyMembersNo.Add(partyMemberNo);
    }
예제 #2
0
 public void DoCombatTest()
 {
     var result = CombatCalculator.DoCombat(
         new Fleet()
     {
         Ships = new List <Ships>()
         {
             new Ships()
             {
                 Ship = ShipUtils.ShipStats[ShipUtils.Interceptor], Count = 10
             }
         }
     },
         new Fleet()
     {
         Ships = new List <Ships>()
         {
             new Ships()
             {
                 Ship = ShipUtils.ShipStats[ShipUtils.Interceptor], Count = 10
             }
         }
     }
         );
 }
        public void attackers_strength_modifier_adds_to_roll_when_attacking()
        {
            // +1 strength modifier
            calculator = new CombatCalculator(new Character(strength: 12));

            var opponent = new Character(armorClass: 10);
            calculator.Attack(opponent, 9).ShouldEqual(AttackResult.Hit);
        }
        public void attackers_strength_modifier_adds_to_damage_dealt_when_attacking()
        {
            // +1 strength modifier
            calculator = new CombatCalculator(new Character(strength: 12));

            var opponent = new Character(armorClass: 10, hitPoints: 5);
            calculator.Attack(opponent, 10);
            opponent.HitPoints.ShouldEqual(3);
        }
예제 #5
0
    public void Attack(int enemyNo)
    {
        ChangeState(CombatBehaviours.CharacterState.Attack);

        enemyControllers[enemyNo].Damage(CombatCalculator.GetPartyMemberAttackDamage(this, enemyControllers[enemyNo]));

        enemyControllers[enemyNo].IsTarget   = false;
        enemyControllers[enemyNo].IsSelected = false;

        affectedEnemiesNo.Add(enemyNo);
    }
예제 #6
0
        public static List <IEffect> getCommand(FullCombatCharacter source, List <FullCombatCharacter> targets, CombatData combatData)
        {
            List <IEffect>      effects     = new List <IEffect>();
            float               coefficient = 1.0f;
            FullCombatCharacter target      = BasicAbilityProcessing.identifyWeakestTarget(targets);
            int dmg = (int)((CombatCalculator.getNormalAttackValue(source) * 5 / target.vitality));

            if (target.inflictDamage(ref dmg) == FullCombatCharacter.HitEffect.Unbalance)
            {
                coefficient = coefficient * 2;
            }
            effects.Add(new Effect(EffectTypes.Attack, source.combatUniq, string.Empty, 0));
            effects.Add(new Effect(EffectTypes.DealDamage, target.combatUniq, string.Empty, dmg));
            effects.Add(new Effect(EffectTypes.Message, 0, source.name + " has attacked " + target.name + " for " + dmg.ToString() + " damage!", 0));
            GeneralProcessor.calculateNextAttackTime(source, coefficient, combatData);

            return(effects);
        }
예제 #7
0
 protected void CalculateMoveOrder()
 {
     moveOrder       = CombatCalculator.GetMoveOrder(partyMemberControllers, enemyControllers);
     activeCharacter = 0;
 }
 public void Setup()
 {
     calculator = new CombatCalculator(new Character());
 }
        public void opponents_dexterity_modifier_is_added_to_armor_class_when_attacking()
        {
            // A strength of 10 will give no bonus;
            calculator = new CombatCalculator(new Character(strength: 10));

            // A dexterity of 12 will give a +1 bonus.
            var opponent = new Character(armorClass: 10, dexterity: 12);
            calculator.Attack(opponent, 10).ShouldEqual(AttackResult.Miss);
        }
        public void minimum_damage_on_hit_when_attacking_is_1()
        {
            // -5 strength modifier
            calculator = new CombatCalculator(new Character(strength: 1));

            var opponent = new Character(armorClass: 10, hitPoints: 5);
            calculator.Attack(opponent, 15);
            opponent.HitPoints.ShouldEqual(4);
        }