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); }
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()); }