Example #1
0
 public override bool canBePlayed(Gamestate gs)
 {
     try
     {
         foreach (Personality per in gs.performingPlayer.cardsInPlay)
         {
             if (per.isHonourable && per.personalHonor > 0 && gs.performingPlayer.familyHonour > gs.performingPlayer.opposingPlayer.familyHonour)
             {
                 gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
                 return(true);
             }
             else
             {
                 gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
                 return(false);
             }
         }
     }
     catch
     {
         //Personalities not in play
     }
     gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
     return(false);
 }
        public override bool applyEffects(Gamestate gs)
        {
            if (this.effectOwner.targetsSelected)
            {
                foreach (Card crd in this.effectOwner.selectedTargets)
                {
                    Personality per = (Personality)crd;
                    //Move the card from home
                    per.playerOwner.pHome.removeCardFromPlay(per);

                    //Move the card from a battlefield
                    foreach (Battlefield bf in gs.allBattlefields)
                    {
                        bf.removeUnitFromBattlefield(per);
                    }

                    //To the current battlefield
                    gs.currentBattlefield.moveUnitToBattleField(per);
                }
                gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
                return(true);
            }
            else
            {
                this.effectOwner.selectedTargets = gs.pickTargets(this.effectTarget.returnTargetList(gs, this.effectCondition), this.effectTarget.numOfTargets, this.effectOwner.actionOwner.playerOwner);
                this.effectOwner.targetsSelected = true;
                this.applyEffects(gs);
            }
            gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
            return(false);
        }
 public override bool applyEffects(Gamestate gs)
 {
     if (this.cardOwner.playerOwner.hasImperialFavour)
     {
         this.cardOwner.playerOwner.hasImperialFavour = false;
         gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
         return(true);
     }
     else
     {
         gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
         return(false);
     }
 }
Example #4
0
 public override bool applyEffects(Gamestate gs)
 {
     if (effectOwner.willDestroy == true)
     {
         effectOwner.actionOwner.destroyCard();
         gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
         return(true);
     }
     else
     {
         gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
         return(false);
     }
 }
Example #5
0
        public override bool applyEffects(Gamestate gs)
        {
            bool returnValue       = true;
            int  numCardsinDiscard = gs.performingPlayer.pFateDiscard.numberOfCardsDiscarded();

            foreach (Card crd in gs.pickTargets(this.effectTarget.returnTargetList(gs, this.effectCondition), this.effectTarget.numOfTargets, gs.performingPlayer))
            {
                try
                {
                    gs.performingPlayer.pHand.discardCard((FateCard)crd);
                    gs.performingPlayer.pFateDiscard.addCardToDiscard((FateCard)crd);
                }
                catch
                {
                }
            }

            if (gs.performingPlayer.pFateDiscard.numberOfCardsDiscarded() > numCardsinDiscard)
            {
                returnValue = true;
            }
            else
            {
                returnValue = false;
            }
            gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
            return(returnValue);
        }
Example #6
0
        public override bool applyEffects(Gamestate gs)
        {
            List <Card> selectedCards = new List <Card>();

            selectedCards = gs.pickTargets(this.effectTarget.returnTargetList(gs, this.effectCondition), 4, gs.performingPlayer);

            foreach (DynastyCard crd in selectedCards)
            {
                Console.WriteLine("Selected target: " + crd.name);
                foreach (Province pv in gs.performingPlayer.playerProvinces)
                {
                    if (pv.purchasableCard.Equals(crd))
                    {
                        pv.refillProvince();
                        gs.performingPlayer.pDynastyDeck.addCardsToDeck(crd);
                        pv.purchasableCard.IsFaceDown = false;
                    }
                }
            }

            foreach (Province pv in gs.performingPlayer.playerProvinces)
            {
                Console.WriteLine("Card Name:" + pv.purchasableCard.name);
                Console.WriteLine("Is Face down:" + pv.purchasableCard.IsFaceDown.ToString());
            }
            gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
            return(true);
        }
        public override bool applyEffects(Gamestate gs)
        {
            bool returnValue       = true;
            int  numCardsinDiscard = gs.performingPlayer.pFateDiscard.numberOfCardsDiscarded();


            FateCard fCard = (FateCard)gs.pickTarget(this.effectTarget.returnTargetList(gs, this.effectCondition), gs.performingPlayer);

            try
            {
                gs.performingPlayer.pHand.discardCard(fCard);
                this.effectOwner.focusValueDiscard = fCard.focusValue;
                gs.performingPlayer.pFateDiscard.addCardToDiscard(fCard);
            }
            catch
            {
            }

            if (gs.performingPlayer.pFateDiscard.numberOfCardsDiscarded() > numCardsinDiscard)
            {
                returnValue = true;
            }
            else
            {
                returnValue = false;
            }
            gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
            return(returnValue);
        }
Example #8
0
        public override bool applyEffects(Gamestate gs)
        {
            FateCard chosenCard = (FateCard)gs.pickTarget(new TargetACardInHand().returnTargetList(gs, new ConditionNull()), gs.performingPlayer);

            this.cardOwner.tempforceModifier += chosenCard.focusValue;
            gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
            return(true);
        }
Example #9
0
 public override bool applyEffects(Gamestate gs)
 {
     if (this.effectOwner.targetsSelected)
     {
         this.effectOwner.targetsSelected = false;
         gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
         return(true);
     }
     else
     {
         this.effectOwner.selectedTargets.AddRange(gs.pickTargets(this.effectTarget.returnTargetList(gs, this.effectCondition), this.effectTarget.numOfTargets, this.effectOwner.actionOwner.playerOwner));
         this.effectOwner.targetsSelected = true;
         this.applyEffects(gs);
     }
     gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
     return(false);
 }
Example #10
0
 public override bool applyEffects(Gamestate gs)
 {
     foreach (Card crd in gs.pickTargets(this.effectTarget.returnTargetList(gs, this.effectCondition), this.effectTarget.numOfTargets, gs.performingPlayer))
     {
         crd.tempforceModifier += this.effectValue;
     }
     gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
     return(true);
 }
Example #11
0
 public override bool applyEffects(Gamestate gs)
 {
     foreach (Card crd in gs.pickTargets(this.effectTarget.returnTargetList(gs, this.effectCondition), this.effectTarget.numOfTargets, gs.performingPlayer))
     {
         crd.tempTraits.Add(Gamestate.Conqueror);
     }
     gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
     return(true);
 }
Example #12
0
 public override bool applyEffects(Gamestate gs)
 {
     foreach (Card crd in this.effectOwner.selectedTargets)
     {
         Personality per = (Personality)crd;
         per.straightenUnit();
     }
     gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
     return(true);
 }
Example #13
0
        public override bool applyEffects(Gamestate gs)
        {
            int  focusValue   = this.effectOwner.focusValueDiscard;
            Card selectedCard = gs.pickTarget(this.effectTarget.returnTargetList(gs, this.effectCondition), gs.performingPlayer);

            if (selectedCard.currentForce < focusValue)
            {
                selectedCard.IsBowed = true;
            }
            gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
            return(true);
        }
Example #14
0
 public override bool applyEffects(Gamestate gs)
 {
     foreach (Card crd in gs.pickTargets(this.effectTarget.returnTargetList(gs, this.effectCondition), this.effectTarget.numOfTargets, gs.performingPlayer))
     {
         if (crd.currentForce <= this.effectValue)
         {
             crd.IsBowed = true;
         }
     }
     gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
     return(true);
 }
Example #15
0
        public override bool applyEffects(Gamestate gs)
        {
            TargetEnemyPersonalityFollower tar = new TargetEnemyPersonalityFollower();
            List <Card> chosenTar = gs.pickTargets(tar.returnTargetList(gs, new ConditionStatusUnbowed()), this.effectTarget.numOfTargets, gs.performingPlayer.opposingPlayer);

            foreach (Card crd in chosenTar)
            {
                crd.IsBowed = true;
            }
            gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
            return(true);
        }
Example #16
0
        public override bool applyEffects(Gamestate gs)
        {
            bool returnValue = true;

            if (this.effectOwner.actionOwner.IsBowed == true)
            {
                returnValue = false;
            }

            this.effectOwner.actionOwner.IsBowed = true;
            gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
            return(returnValue);
        }
        public override bool applyEffects(Gamestate gs)
        {
            if (valueSetByPrevious)
            {
                // only set the first time, otherwise the recursion would never end
                this.effectValue   = this.effectOwner.previousEffectValue;
                valueSetByPrevious = false;
            }


            if (this.effectOwner.targetsSelected)
            {
                foreach (Card crd in this.effectOwner.selectedTargets)
                {
                    crd.destroyCard();
                }
                gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
                return(true);
            }
            else
            {
                this.effectOwner.selectedTargets.Clear();

                this.effectOwner.selectedTargets.Add(gs.pickTarget(this.effectTarget.returnTargetList(gs, this.effectCondition), this.effectOwner.actionOwner.playerOwner));
                this.effectValue -= this.effectOwner.selectedTargets.Last().currentForce;

                //There was no valid targets left, so it jumps to executing the effect
                if (this.effectOwner.selectedTargets.Count == 0)
                {
                    this.effectOwner.targetsSelected = true;
                    this.applyEffects(gs);
                }
            }
            gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
            return(false);
        }
Example #18
0
        public override bool applyEffects(Gamestate gs)
        {
            bool returnValue = true;

            foreach (Card crd in gs.pickTargets(this.effectTarget.returnTargetList(gs, this.effectCondition), this.effectTarget.numOfTargets, gs.performingPlayer))
            {
                if (crd.IsBowed == true)
                {
                    returnValue = false;
                }

                crd.IsBowed = true;
            }
            gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
            return(returnValue);
        }
Example #19
0
 public override bool applyEffects(Gamestate gs)
 {
     foreach (Province prov in gs.performingPlayer.playerProvinces)
     {
         foreach (Card crd in gs.pickTargets(this.effectTarget.returnTargetList(gs, this.effectCondition), this.effectTarget.numOfTargets, gs.performingPlayer))
         {
             if (crd.Equals(prov.purchasableCard))
             {
                 gs.performingPlayer.pDynastyDeck.addCardsToDeck(prov.purchasableCard);
                 prov.purchasableCard            = gs.performingPlayer.pDynastyDeck.drawTopCard();
                 prov.purchasableCard.IsFaceDown = false;
             }
         }
     }
     gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
     return(true);
 }
Example #20
0
 public override bool applyEffects(Gamestate gs)
 {
     if (this.effectOwner is ActionInterrupt || this.effectOwner is ActionRecruitInterrupt)
     {
         gs.performingPlayer.InterruptHasPassed = true;
         this.effectOwner.actionOwner.playerOwner.InterruptHasPassed = true;
         Console.WriteLine(gs.performingPlayer.aLabel + " Interrupt pass");
     }
     else
     {
         gs.performingPlayer.InterruptHasPassed             = true;
         this.effectOwner.actionOwner.playerOwner.hasPassed = true;
         Console.WriteLine(gs.performingPlayer.aLabel + " Action Pass");
     }
     gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
     return(true);
 }
Example #21
0
        public override bool applyEffects(Gamestate gs)
        {
            bool returnValue = true;

            foreach (Personality per in gs.pickTargets(this.effectTarget.returnTargetList(gs, this.effectCondition), this.effectTarget.numOfTargets, gs.performingPlayer))
            {
                if (this.effectOwner.willMove == true)
                {
                    per.playerOwner.cardsInPlay.Add(per);
                    gs.currentBattlefield.myCards(per.playerOwner).Remove(per);
                    returnValue = true;
                }
                else
                {
                    returnValue = false;
                }
            }
            gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
            return(returnValue);
        }
Example #22
0
        public override bool applyEffects(Gamestate gs)
        {
            bool returnValue = true;

            foreach (Card crd in gs.pickTargets(this.effectTarget.returnTargetList(gs, this.effectCondition), this.effectTarget.numOfTargets, gs.performingPlayer))
            {
                if (crd.currentForce <= this.effectValue + this.effectOwner.modifyRanged)
                {
                    if (this.effectOwner.willDestroy == true)
                    {
                        crd.destroyCard();
                    }
                    else
                    {
                        returnValue = false;
                    }
                }
            }
            gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
            return(returnValue);
        }
Example #23
0
        public override bool applyEffects(Gamestate gs)
        {
            List <Card> selectedTargets = gs.pickTargets(new TargetYourCardInHandOrProvince().returnTargetList(gs, new ConditionTypeKharmic()), 1, gs.performingPlayer);

            foreach (Card crd in selectedTargets)
            {
                if (crd is FateCard)
                {
                    try
                    {
                        gs.performingPlayer.pFateDiscard.addCardToDiscard(gs.performingPlayer.pHand.discardCard((FateCard)crd));
                        gs.performingPlayer.pHand.addCardToHand(gs.performingPlayer.pFateDeck.drawTopCard());
                    }
                    catch
                    {
                    }
                }
                else
                {
                    // Card is a dynasty Deck
                    foreach (Province pv in gs.performingPlayer.playerProvinces)
                    {
                        if (pv.purchasableCard.Equals(crd))
                        {
                            try
                            {
                                gs.performingPlayer.pDynastyDiscard.addCardToDiscard((DynastyCard)crd);
                                pv.purchasableCard            = gs.performingPlayer.pDynastyDeck.drawTopCard();
                                pv.purchasableCard.IsFaceDown = false;
                            }
                            catch
                            {
                            }
                        }
                    }
                }
            }
            gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
            return(true);
        }
Example #24
0
        public override bool applyEffects(Gamestate gs)
        {
            //This is horrible. it will work. But it is not ideal
            //What I really want is Attachment att=selectedTarget.Find(Where type is Attachment) or something along those lines
            try
            {
                Personality targetPersonality = (Personality)gs.pickTargets(new TargetYourPersonality().returnTargetList(gs, new ConditionNull()), 1, gs.performingPlayer)[0];
                Attachment  targetAttachment  = (Attachment)gs.pickTargets(this.effectTarget.returnTargetList(gs, this.effectCondition), this.effectTarget.numOfTargets, gs.performingPlayer)[0];

                if (targetAttachment.canBeRecruitedBy(gs.performingPlayer) && targetPersonality.canAttachAttachment(targetAttachment))
                {
                    gs.performingPlayer.pHand.discardCard(targetAttachment);
                    targetPersonality.addAttachment(targetAttachment);
                }
            }
            catch
            {
                Console.WriteLine("No legal targets");
            }
            gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
            return(true);
        }
Example #25
0
        public override bool applyEffects(Gamestate gs)
        {
            try
            {
                Card selectedCard = gs.pickTarget(new TargetACardInYourProvince().returnTargetList(gs, this.effectCondition), gs.performingPlayer);

                foreach (Province pv in gs.performingPlayer.playerProvinces)
                {
                    if (pv.purchasableCard.Equals(selectedCard))
                    {
                        gs.performingPlayer.pDynastyDiscard.addCardToDiscard(pv.purchasableCard);
                        pv.purchasableCard = gs.performingPlayer.pDynastyDeck.drawTopCard();
                    }
                }
            }
            catch
            {
                Console.WriteLine("Invalid gamestate: ERefillProvince");
            }
            gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
            return(true);
        }
Example #26
0
        public override bool applyEffects(Gamestate gs)
        {
            if (this.effectOwner.targetsSelected)
            {
                this.effectOwner.targetsSelected = false;
                foreach (Card crd in this.effectOwner.selectedTargets)
                {
                    this.effectValue += crd.currentForce;
                }

                this.effectOwner.previousEffectValue = this.effectValue;

                return(true);
            }
            else
            {
                this.effectOwner.selectedTargets.AddRange(gs.pickTargets(this.effectTarget.returnTargetList(gs, this.effectCondition), this.effectTarget.numOfTargets, this.effectOwner.actionOwner.playerOwner));
                this.effectOwner.targetsSelected = true;
                this.applyEffects(gs);
            }
            gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
            return(false);
        }
        public override bool applyEffects(Gamestate gs)
        {
            //
            Province targetProv = gs.pickProvince(this.canBePurchasedFromProvince(gs), gs.activePlayer);


            //Check loyalist restrictions/family honour requirments in the canBeRecruitedBy(this)
            //
            if (targetProv.purchasableCard.canBeRecruitedBy(gs.activePlayer))
            {
                int goldCostModifier = 0;

                if (targetProv.purchasableCard.traits.Contains(gs.performingPlayer.stronghold.family))
                {
                    goldCostModifier = 2;
                }
                if (targetProv.purchasableCard.getCardCost() + goldCostModifier <= gs.activePlayer.goldPool)
                {
                    gs.activePlayer.goldPool -= targetProv.purchasableCard.getCardCost() + goldCostModifier;
                    targetProv.purchasableCard.enteringPlay();
                    gs.activePlayer.cardsInPlay.Add(targetProv.purchasableCard);
                    //refill province

                    try
                    {
                        targetProv.purchasableCard            = gs.performingPlayer.pDynastyDeck.drawTopCard();
                        targetProv.purchasableCard.IsFaceDown = true;
                    }
                    catch
                    {
                        Console.WriteLine("No cards left in dynasty deck");
                    }
                }
            }
            gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
            return(true);
        }
Example #28
0
 public override bool applyEffects(Gamestate gs)
 {
     gs.currentActionBeingPlayed.willMove = false;
     gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
     return(true);
 }
Example #29
0
 public override bool applyEffects(Gamestate gs)
 {
     gs.currentBattlefield.battlefieldProvince.currentProvinceStrength += this.effectValue;
     gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
     return(true);
 }
Example #30
0
 public override bool applyEffects(Gamestate gs)
 {
     this.playerEffected.payGoldCost(this.effectValue);
     gs.performingPlayer = gs.getOpposingPlayer(gs.performingPlayer);
     return(true);
 }