private void DoAttack(BattalionEffectsBuilder builder, BattalionState self, BattleStageSide enemies)
    {
        BattalionState     target          = enemies.GetTargetFor(self.Position);
        BattalionAttribute damageAttribute = GetDamageAttributeFor(damageType);

        builder.Add(target.Id, damageAttribute, weaponStrength);

        if (splashDamage > 0)
        {
            IEnumerable <BattalionState> splashTargets = GetSplashTargets(target, enemies).ToArray();
            foreach (BattalionState splashTarget in splashTargets)
            {
                builder.Add(splashTarget.Id, damageAttribute, splashDamage);
            }
        }

        int reloadingSpeed = self.GetAttribute(BattalionAttribute.ReloadingSpeed);

        builder.Add(self.Id, BattalionAttribute.ReloadingState, reloadingSpeed);
    }
Exemple #2
0
    public override BattalionBattleEffects GetEffect(BattalionState self, BattleStageSide allies, BattleStageSide enemies)
    {
        BattalionEffectsBuilder builder = new BattalionEffectsBuilder(this);

        if (self.Position.X == 0)
        {
            BattalionState target = enemies.GetTargetFor(self.Position);
            if (attackType == MeleeAttackType.Regular || attackType == MeleeAttackType.Charging)
            {
                DoMeleeAttack(builder, self, target);
            }
            if (attackType == MeleeAttackType.Charging)
            {
                IEnumerable <BattalionState> chargeTargets = GetChargeTargets(enemies, target);
                foreach (BattalionState chargeTarget in chargeTargets)
                {
                    DoMeleeAttack(builder, self, chargeTarget);
                }
            }
        }
        return(builder.ToEffects());
    }