Beispiel #1
0
        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);
        }