public List <IAttackCard> GetTargetCards(IAttackCard card, IBattelBase battel) { var cards = new List <IAttackCard>(card.Warrior.FriendPerson.AttackCards); cards.Remove(card); return(cards); }
public void AddAttacker(IAttackCard attacker) { if (Enemies.Count >= Combat.MaxCountAttackers) { return; // Уже атакует максимум врагов } Action <int> Final = (x) => attacker.View.Frame(false).SetSortingOrder(x); if (Enemies.Count > 0) { if (Enemies[0].Combat.Initiative > attacker.Combat.Initiative) { // Поменять атакующие карты местами attacker.Moving.SetPosition(new Vector3(View.Position.x + x1, View.Position.y - y1, 0)).Run(0.3f, () => Final(1)); Enemies[0].Moving.SetPosition(new Vector3(View.Position.x + x2, View.Position.y - y2, 0)).Run(0.3f, () => Enemies[0].View.SetSortingOrder(2)); } else { // Назначить второй атакующей attacker.Moving.SetPosition(new Vector3(View.Position.x + x2, View.Position.y - y2, 0)).Run(0.3f, () => Final(2)); } } else { // Назначить первой атакующей attacker.Moving.SetPosition(new Vector3(View.Position.x + x1, View.Position.y - y1, 0)).Run(0.3f, () => Final(1)); } Enemies.Add(attacker.Warrior); attacker.Warrior.AttackTargetID = Id; }
public override bool StandardDamage(IAttackCard enemy) { if (IsDownAuraBroken() == false) { return(false); } return(base.StandardDamage(enemy)); }
public override bool StandardDamage(IAttackCard enemy) { if (enemy.Combat.Attack < 5) { startSpecificity.Invoke(TypeSpecificityEnum.MoonShield); return(false); } return(base.StandardDamage(enemy)); }
protected List <IAttackCard> GetTargetCards(IAttackCard card, IBattelBase battel) { if (targetCards == null) { return(new List <IAttackCard>()); } else { return(targetCards.GetTargetCards(card, battel)); } }
private void AssignAttack(IAttackCard attackCard) { if (current == null || attackCard.Warrior.Enemies.Count >= attackCard.Combat.MaxCountAttackers) { return; } attackCard.AddAttacker(current); current.SetClickListener(CancelAttacker); current = null; }
protected override void Next(IAttackCard current) { if (current.Warrior.AttackTargetID == -1 || current.Warrior.AttackTargetUnit == null || current.Warrior.AttackTargetUnit.Combat.Class.Type != ClassCardEnum.sunset) { new CommonActionsPhase(battel, RunQueue, cards).Run(current); } else { new SunSetActionsPhase(battel, RunQueue, cards).Run(current); } }
private void SelectReserveCard(IAttackCard battelCard) { current?.View.SetOldSortingOrder().Frame(false); if (battelCard != current) { (current = battelCard)?.View.SetSortingOrder(200).Frame(true); } else { current = null; } }
private void SelectReserveCard(IAttackCard attackCard) { current?.View.Frame(false); if (attackCard != current) { (current = attackCard)?.View.Frame(true); } else { current = null; } }
public void TriggerEvent(EventTriggerEnum requestTrigger, IAttackCard card, IBattelBase battel, Action finish) { this.finish = finish; if (isReady == false || triggers.Contains(requestTrigger) == false || conditionsAbility.IsConditions(card, battel) == false) { finish?.Invoke(); } else { Finish(card, effectAbility.IsResult(card, battel, specificityFactory)); } }
private void FinishPutCardFromReserve() { current = null; if (battel.Player.AttackCards.Count >= 4) { battel.OnNextTurn(); } else { battel.Player.ReservCards.ForEach(x => x.SetClickListener(SelectReserveCard)); battel.Player.Cell.ForEach(x => x.SetClickListener(PutCardFromReserve)); } }
public bool IsConditions(IAttackCard card, IBattelBase battel) { var cards = GetTargetCards(card, battel); foreach (var item in startingConditions) { if (item.IsConditions(card, cards, battel) == false) { return(false); } } return(true); }
public List <IAttackCard> GetTargetCards(IAttackCard card, IBattelBase battel) { if (card.Warrior.AttackTargetID != -1) { return new List <IAttackCard>() { card.Warrior.AttackTargetUnit } } ; return(new List <IAttackCard>()); } }
private void Finish(IAttackCard card, bool result) { if (result) { if (oneOff) { isReady = false; } card.ImplementAbility(specificity, finish); } else { finish?.Invoke(); } }
public bool Execute(IAttackCard card, List <IAttackCard> cardsTarget, IBattelBase battel, ISFXFactory specificityFactory) { bool result = false; foreach (var item in cardsTarget) { if (item.Tokens.AddToken(token, count)) { result = true; item.StartSFX(specificityTarget); } } return(result); }
public List <IAttackCard> GetTargetCards(IAttackCard card, List <IAttackCard> cardsTarget, IBattelBase battel) { int i = 0; while (i < cardsTarget.Count) { if (SetResult(cardsTarget[i].Combat.Initiative) == false) { cardsTarget.RemoveAt(i); } else { i++; } } return(cardsTarget); }
public bool IsResult(IAttackCard card, IBattelBase battel, ISFXFactory specificityFactory) { var cards = GetTargetCards(card, battel); foreach (var item in postConditions) { cards = item.GetTargetCards(card, cards, battel); } bool result = false; foreach (var item in effectAbility) { if (item.Execute(card, cards, battel, specificityFactory)) { result = true; } } return(result); }
public List <IAttackCard> GetTargetCards(IAttackCard card, IBattelBase battel) { var cards = new List <IAttackCard>(); var cells = card.Warrior.FriendPerson.Cell; if (card.Id + 1 < cells.Count) { if (cells[card.Id + 1].IsExist) { cards.Add(cells[card.Id + 1].Unit); } } if (card.Id - 1 >= 0) { if (cells[card.Id - 1].IsExist) { cards.Add(cells[card.Id - 1].Unit); } } return(cards); }
private void ApplyAbility(EventTriggerEnum eventTrigger, IAttackCard current, Action nextAct) => current.ExecuteAbility(eventTrigger, battel, () => CheckForDeath(nextAct));
protected override bool Buff(IAttackCard card) => card.Combat.BuffAttack(attack);
public bool Execute(IAttackCard card, List <IAttackCard> cardsTarget, IBattelBase battel, ISFXFactory specificityFactory) => Execute(cardsTarget);
protected override bool Buff(IAttackCard card) => card.Combat.BuffInitiative(initiative);
public bool IsConditions(IAttackCard card, List <IAttackCard> cards, IBattelBase battel) => GetTargetCards(card, cards, battel).Count > 0;
public List <IAttackCard> GetTargetCards(IAttackCard card, IBattelBase battel) => new List <IAttackCard>(card.Warrior.EnemyPerson.AttackCards);
public List <IAttackCard> GetTargetCards(IAttackCard card, IBattelBase battel) => new List <IAttackCard>() { card };
public void Run(IAttackCard current) { this.current = current; current.View.Frame(true); ApplyAbility(EventTriggerEnum.LeadUp, current, MoveToAttack); }
public void AddAttacker(IAttackCard current) => Warrior.AddAttacker(current);
protected override bool Buff(IAttackCard card) => card.Combat.BuffDefense(defense);
protected override bool Buff(IAttackCard card) => card.Combat.BuffHealth(health);
protected abstract bool Buff(IAttackCard card);