//Megadott laphoz az összes bónuszt hozzáadja
 public void ApplyFieldBonusToCard(Card card)
 {
     //Ha van bónusz a listában
     if (fieldBonusList.Any())
     {
         foreach (FieldBonus fieldBonus in fieldBonusList)
         {
             card.AddBonus(fieldBonus.GetBonus());
         }
     }
 }
예제 #2
0
        //Mi támadunk a következő körben, illetve +2 Reflex most ha védekezünk.
        private void CheekyTricks()
        {
            int  currentKey   = modules.GetGameModule().GetCurrentKey();
            int  cardPosition = modules.GetGameModule().GetActiveCardID();
            Card card         = modules.GetDataModule().GetCardFromPlayer(currentKey, cardPosition, CardListTarget.Field);

            modules.GetGameModule().AddKeyToLateSkills(currentKey);

            //Csak a normál skill fázisban fejti ki hatását: Védekezéskor bónuszt kapunk
            if (modules.GetGameModule().GetGameState() == MainGameStates.NormalSkills &&
                modules.GetDataModule().GetPlayerWithKey(currentKey).GetRole() == PlayerTurnRole.Defender)
            {
                card.AddBonus(new StatBonus(0, 0, 2));
            }

            modules.GetGameModule().StartCoroutine(CheekyTricks_LateEffect(currentKey, card));
            modules.GetGameModule().SkillFinished();
        }
예제 #3
0
        private IEnumerator BurstFire_LateEffect(Card cardForBonus, int currentKey)
        {
            List <Card> opponentCardList = new List <Card>();
            List <int>  keylist          = modules.GetDataModule().GetKeyList();

            while (true)
            {
                //Ha nincs már a kártya a mezőn
                if (!modules.GetDataModule().IsCardOnTheField(currentKey, cardForBonus))
                {
                    break;
                }

                foreach (int key in keylist)
                {
                    if (key != currentKey)
                    {
                        foreach (Card card in modules.GetDataModule().GetCardsFromPlayer(key, CardListTarget.Field))
                        {
                            if (!opponentCardList.Contains(card) && modules.GetDataModule().IsCardOnTheField(currentKey, cardForBonus))
                            {
                                opponentCardList.Add(card);
                                cardForBonus.AddBonus(new StatBonus(1, 1, 1));
                            }
                        }
                    }
                }


                if (modules.GetGameModule().GetGameState() == MainGameStates.CompareCards)
                {
                    break;
                }

                else
                {
                    yield return(null);
                }
            }
        }
        public void ReportNameBoxTapping(int playerKey)
        {
            //Nem vált ki akciót magunkra tappelve
            if (playerKey != modules.GetGameModule().GetCurrentKey())
            {
                //Kivégzés képesség
                if (modules.GetGameModule().GetCurrentAction() == SkillEffectAction.Execute)
                {
                    //Csak akkor dob le lapot, ha legalább 1 van még a kezében azon kívül
                    if (modules.GetDataModule().GetHandCount(playerKey) > 1)
                    {
                        modules.GetGameModule().SetCurrentAction(SkillEffectAction.TossCard);
                        modules.GetGameModule().SetSwitchType(CardListTarget.Hand);

                        //Ha ember a választott játékos
                        if (modules.GetGameModule().IsThisPlayerHuman(playerKey))
                        {
                            modules.GetGameModule().StartCoroutine(modules.GetClientModule().DisplayCardList(playerKey, CardListFilter.None, 0));
                        }
                    }

                    else
                    {
                        ReportActionEnd();
                        modules.GetGameModule().SkillFinished();
                    }
                }

                //Dühöngés képesség
                else if (modules.GetGameModule().GetCurrentAction() == SkillEffectAction.CheckWinnerAmount)
                {
                    //Szükséges adatok lekérése
                    int  cardPosition     = modules.GetGameModule().GetActiveCardID();
                    int  ownKey           = modules.GetGameModule().GetCurrentKey();
                    int  ownWinners       = modules.GetDataModule().GetWinnerAmount(ownKey);
                    int  opponentWinners  = modules.GetDataModule().GetWinnerAmount(playerKey);
                    Card cardToStrengthen = modules.GetDataModule().GetCardFromPlayer(ownKey, cardPosition, CardListTarget.Field);

                    //Ha olyat választottunk, akinek több győztese van, bónuszt kapunk
                    if (ownWinners < opponentWinners)
                    {
                        int difference = opponentWinners - ownWinners;
                        cardToStrengthen.AddBonus(new StatBonus(difference, difference, difference));
                    }

                    //Ha olyat választott, akinek kevesebb vagy egyenlő a győzteseinek száma
                    else
                    {
                        //Ha játékos, akkor erről tájékoztatást is kap
                        if (modules.GetGameModule().IsThisPlayerHuman(ownKey))
                        {
                            modules.GetGameModule().StartCoroutine(modules.GetClientModule().DisplayNotification("A választott játékos nem rendelkezik több győztessel!\nBónusz nem lett aktiválva!"));
                        }
                    }
                    modules.GetGameModule().SetSelectionAction(SkillEffectAction.None);
                    ReportActionEnd();
                }

                //"Van másik!" képesség
                else if (modules.GetGameModule().GetCurrentAction() == SkillEffectAction.SwitchOpponentCard)
                {
                    int ownKey = modules.GetGameModule().GetCurrentKey();
                    //A kiválasztott játékosnak van a paklijában lap
                    if (modules.GetDataModule().GetDeckAmount(playerKey) > 0)
                    {
                        modules.GetGameModule().SetSwitchType(CardListTarget.Field);

                        //Ha emberek a választó fél
                        if (modules.GetGameModule().IsThisPlayerHuman(ownKey))
                        {
                            modules.GetGameModule().StartCoroutine(modules.GetClientModule().DisplayCardList(playerKey, CardListFilter.None, 0));
                        }

                        //Ha bot
                        else
                        {
                            modules.GetGameModule().SetSelectionAction(SkillEffectAction.PickCardForSwitch);
                        }
                    }

                    //Ha nincs elég lapja a választott játékosnak
                    else
                    {
                        //Ha játékos, akkor erről tájékoztatást kap
                        if (modules.GetGameModule().IsThisPlayerHuman(ownKey))
                        {
                            modules.GetGameModule().StartCoroutine(modules.GetClientModule().DisplayNotification("A választott játékos nem rendelkezik elég lappal a pakliban!"));
                        }
                    }
                }
            }
        }
예제 #5
0
        //A játékos listáról választott lapjával kezdünk valamit
        public void HandleSelectionForSkill(int selectedCard, int currentKey)
        {
            //Ha az akció a csere volt
            if (modules.GetGameModule().GetCurrentAction() == SkillEffectAction.Switch)
            {
                SwitchCard(currentKey, modules.GetGameModule().GetActiveCardID(), selectedCard);
                modules.GetGameModule().SetCurrentAction(SkillEffectAction.None);
                modules.GetGameModule().ActionFinished();
            }

            //Ha az akció skill lopás volt
            else if (modules.GetGameModule().GetCurrentAction() == SkillEffectAction.SkillUse)
            {
                Card otherCard = modules.GetDataModule().GetCardFromPlayer(currentKey, selectedCard, CardListTarget.Losers);

                //Másik Devil crok képesség esetén passzolunk
                if (otherCard.GetCardID() == 3)
                {
                    modules.GetGameModule().Pass();
                    modules.GetGameModule().SetCurrentAction(SkillEffectAction.None);
                }

                //Amúgy meg használjuk a másik lap képességét
                else
                {
                    UseSkill(otherCard.GetCardID());
                    return;
                }
            }

            else if (modules.GetGameModule().GetCurrentAction() == SkillEffectAction.Revive)
            {
                ReviveCard(selectedCard);
                modules.GetGameModule().SetCurrentAction(SkillEffectAction.None);
                modules.GetGameModule().ActionFinished();
            }

            else if (modules.GetGameModule().GetCurrentAction() == SkillEffectAction.TossCard)
            {
                modules.GetDataModule().TossCardFromHand(currentKey, selectedCard);
                modules.GetClientModule().TossCard(currentKey, selectedCard);
                modules.GetGameModule().SetCurrentAction(SkillEffectAction.None);
                modules.GetGameModule().ActionFinished();
            }

            else if (modules.GetGameModule().GetCurrentAction() == SkillEffectAction.SwitchOpponentCard)
            {
                modules.GetGameModule().SetSwitchType(CardListTarget.Deck);
                int deckCardID = (modules.GetDataModule().GetDeckAmount(currentKey)) - 1;
                SwitchCard(currentKey, selectedCard, deckCardID);
            }

            else if (modules.GetGameModule().GetCurrentAction() == SkillEffectAction.SacrificeFromHand)
            {
                //Kártya adatok bekérése
                Card ownCard    = modules.GetDataModule().GetCardFromPlayer(currentKey, modules.GetGameModule().GetActiveCardID(), CardListTarget.Field);
                Card sacrificed = modules.GetDataModule().GetCardFromPlayer(currentKey, selectedCard, CardListTarget.Hand);

                //Bónusz meghatározása és aktiválása
                int ownPower  = ownCard.GetPower();
                int sacrPower = sacrificed.GetPower();
                ownCard.AddBonus(new StatBonus((sacrPower - ownPower), 0, 0));

                //Választott kártya eldobása
                modules.GetDataModule().TossCardFromHand(currentKey, selectedCard);
                modules.GetClientModule().TossCard(currentKey, selectedCard);

                modules.GetGameModule().SetCurrentAction(SkillEffectAction.None);
                modules.GetGameModule().ActionFinished();
            }

            else if (modules.GetGameModule().GetCurrentAction() == SkillEffectAction.SacrificeDoppelganger)
            {
                //Kártya adatok bekérése
                Card ownCard    = modules.GetDataModule().GetCardFromPlayer(currentKey, modules.GetGameModule().GetActiveCardID(), CardListTarget.Field);
                Card sacrificed = modules.GetDataModule().GetCardFromPlayer(currentKey, selectedCard, CardListTarget.Hand);

                //Választott kártya eldobása
                modules.GetDataModule().TossCardFromHand(currentKey, selectedCard);
                modules.GetClientModule().TossCard(currentKey, selectedCard);

                modules.GetGameModule().MakeWinner(currentKey);
                modules.GetGameModule().ActionFinished();
            }

            modules.GetGameModule().SkillFinished();
        }
예제 #6
0
        private IEnumerator Overpowering_LateEffect(int playerKey, Card target)
        {
            bool        needsToCheck     = false;
            bool        bonusGiven       = false;
            List <Card> opponentCardList = new List <Card>();
            List <int>  keylist          = modules.GetDataModule().GetKeyList();

            while (true)
            {
                //Ha nincs már a kártya a mezőn
                if (!modules.GetDataModule().IsCardOnTheField(playerKey, target))
                {
                    break;
                }


                //Ellenséges lapok feljegyzése: Ha új lap kerül a pályára, ami miatt változhat a képesség hatása.
                //A változást a pályán észre kell venni és felül kell vizsgálni a helyzetünket.
                foreach (int key in keylist)
                {
                    if (key != playerKey)
                    {
                        foreach (Card card in modules.GetDataModule().GetCardsFromPlayer(key, CardListTarget.Field))
                        {
                            if (!opponentCardList.Contains(card))
                            {
                                opponentCardList.Add(card);
                                needsToCheck = true;
                            }
                        }
                    }
                }

                //Ha felülvizsgálásra van szükség
                if (needsToCheck)
                {
                    Debug.Log("Player with Overpowering effect: " + playerKey.ToString());
                    needsToCheck = false;

                    //Ha magasabb az intelligencia statja, mint az ellenfeleié: +2 Erőt kap
                    bool result = modules.GetDataModule().IsMyStatIsTheHighest(playerKey, target.GetIntelligence(), CardStatType.Intelligence);
                    if (result && !bonusGiven)
                    {
                        StatBonus newBonus = new StatBonus(2, 0, 0);
                        target.AddBonus(newBonus);
                        bonusGiven = true;
                    }

                    //Ha már megadtuk a bónuszt, de nem vagyunk többé a legokosabbak: elvesszük a bónuszt
                    else if (!result && bonusGiven)
                    {
                        StatBonus newBonus = new StatBonus(-2, 0, 0);
                        target.AddBonus(newBonus);
                        bonusGiven = false;
                    }
                }

                //Ha az összehasonlítás fázis eljött: végeztünk
                if (modules.GetGameModule().GetGameState() == MainGameStates.CompareCards)
                {
                    break;
                }

                yield return(null);
            }
        }
예제 #7
0
 public bool CanSelectPickup(PickupUI pickup)
 {
     return(improvedCard.AddBonus(pickup.pickupDefinition) && pickupSimpleUI.currentPickup != pickup);
 }