public override void OnCardSelected(BoardUnit unit) { if (TutorialManager.IsTutorial && TutorialManager.CurrentTutorialDataStep.BoardArrowCantUsableOnUnit) { return; } if (IgnoreBoardObjectsList != null && IgnoreBoardObjectsList.Contains(unit)) { return; } if (unit.CurrentHp <= 0) { return; } if (ElementType.Count > 0 && !ElementType.Contains(unit.Card.LibraryCard.CardSetType)) { return; } if (TargetsType.Contains(Enumerators.SkillTargetType.ALL_CARDS) || TargetsType.Contains(Enumerators.SkillTargetType.PLAYER_CARD) && unit.Transform.CompareTag("PlayerOwned") || TargetsType.Contains(Enumerators.SkillTargetType.OPPONENT_CARD) && unit.Transform.CompareTag("OpponentOwned")) { bool opponentHasProvoke = OpponentBoardContainsProvokingCreatures(); if (!opponentHasProvoke || opponentHasProvoke && unit.IsHeavyUnit() || IgnoreHeavy) { SelectedCard?.SetSelectedUnit(false); SelectedCard = unit; SelectedPlayer?.SetGlowStatus(false); SelectedPlayer = null; SelectedCard.SetSelectedUnit(true); } } }
public int GetStatModificatorByAbility(BoardUnit attacker, BoardUnit attacked, bool isAttackking) { int value = 0; Card attackedCard = attacked.Card.LibraryCard; Card attackerCard = attacker.Card.LibraryCard; List <AbilityData> abilities; if (isAttackking) { abilities = attackerCard.Abilities.FindAll(x => x.AbilityType == Enumerators.AbilityType.MODIFICATOR_STATS); for (int i = 0; i < abilities.Count; i++) { if (attackedCard.CardSetType == abilities[i].AbilitySetType) { value += abilities[i].Value; } } } abilities = attackerCard.Abilities.FindAll(x => x.AbilityType == Enumerators.AbilityType.ADDITIONAL_DAMAGE_TO_HEAVY_IN_ATTACK); for (int i = 0; i < abilities.Count; i++) { if (attacked.IsHeavyUnit()) { value += abilities[i].Value; } } return(value); }