//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()); } } }
//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(); }
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!")); } } } } }
//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(); }
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); } }
public bool CanSelectPickup(PickupUI pickup) { return(improvedCard.AddBonus(pickup.pickupDefinition) && pickupSimpleUI.currentPickup != pickup); }