public override bool MoveNext()
    {
        WaitForClickChoice waitForPhaseOne = Current as WaitForClickChoice;

        if (waitForPhaseOne != null)
        {
            cards--;
            switch (waitForPhaseOne.Decision)
            {
            case Decision.Deck:
                player.DrawCards();
                break;

            case Decision.Player:
                Player target       = waitForPhaseOne.Player;
                int    targetPlayer = target.Index;
                availablePlayers.Remove(targetPlayer);
                Current = EveryCowboyForHimself.Shoot(player, target);
                return(true);
            }
        }
        if (availablePlayers.Count > 0 && cards > 0)
        {
            Current = new WaitForClickChoice(player);
            return(true);
        }
        if (cards > 0)
        {
            player.DrawCards(cards);
        }
        return(false);
    }
Beispiel #2
0
    public override bool MoveNext()
    {
        WaitForCardSelection chooseCardTimer = Current as WaitForCardSelection;

        if (chooseCardTimer != null && chooseCardTimer.ChosenCard != null)
        {
            DrawEffectCard = chooseCardTimer.ChosenCard;
            drawnCards     = chooseCardTimer.Cards;
        }
        if (drawnCards != null && !drawEffectStarted)
        {
            currentCard       = 0;
            maxCards          = drawnCards.Count;
            drawEffectStarted = true;
        }
        if (drawEffectStarted && currentCard < maxCards)
        {
            Current = EveryCowboyForHimself.DrawEffect(player, drawnCards[currentCard++]);
            return(true);
        }
        if (maxCards > 0 && currentCard == maxCards)
        {
            return(false);
        }
        return(true);
    }
Beispiel #3
0
    public override bool MoveNext()
    {
        if (finished)
        {
            return(false);
        }
        ResponseCoroutine responseCoroutine = Current as ResponseCoroutine;

        if (responseCoroutine != null)
        {
            hitPlayers[next] = responseCoroutine.TakeHit;
        }
        Player pc;

        do
        {
            next = EveryCowboyForHimself.NextPlayerAlive(next);
            pc   = players[next];
        } while (pc.IsDead || pc.Immune(card));
        if (next != player)
        {
            Current = CreateResponseCoroutine(pc);
            return(true);
        }
        Current  = FinishMultiTargeting();
        finished = true;
        return(true);
    }
    public override bool MoveNext()
    {
        WaitForCardSelection generalStoreTimer = Current as WaitForCardSelection;

        if (generalStoreTimer != null)
        {
            CardChoices = generalStoreTimer.NotChosenCards;
            players[nextPlayer].AddCardHand(generalStoreTimer.ChosenCard);
            nextPlayer = EveryCowboyForHimself.NextPlayerAlive(nextPlayer);
            pendingPlayers--;
            return(true);
        }
        bool res = pendingPlayers > 1;

        if (res)
        {
            Current = new WaitForCardSelection(players[nextPlayer], CardChoices);
            return(true);
        }
        if (!res && !lastCard)
        {
            lastCard = true;
            players[nextPlayer].AddCardHand(LastCard);
            return(true);
        }
        return(res);
    }
Beispiel #5
0
 public IEnumerator Hit(Player attacker, int amount = 1)
 {
     if (attacker != null && attacker != this)
     {
         yield return(EveryCowboyForHimself.Event(this + " has been hit by " + attacker));
     }
     else
     {
         yield return(EveryCowboyForHimself.Event(this + " loses " + amount + " hit points."));
     }
     HP -= amount;
 }
Beispiel #6
0
    public DrawEffectCoroutine(Player player)
    {
        this.player = player.Index;

        int drawEffectCards = player.DrawEffectCards;

        if (drawEffectCards < 2)
        {
            DrawEffectCard = EveryCowboyForHimself.DrawCard();
            drawnCards     = new List <Card>();
            drawnCards.Add(DrawEffectCard);
        }
        else
        {
            Current = new WaitForCardSelection(player, drawEffectCards);
        }
    }
    public override bool MoveNext()
    {
        WaitForCardSelection cardSelection = Current as WaitForCardSelection;

        if (cardSelection != null)
        {
            Characters[currentPlayer].RemoveCardHand(cardSelection.Choice);
            Characters[startingPlayer].AddCardHand(cardSelection.ChosenCard);
        }
        currentPlayer = EveryCowboyForHimself.NextPlayerAlive(currentPlayer);
        Player currentPc = Characters[currentPlayer];

        if (startingPlayer != currentPlayer && currentPc.Hand.Count > minimumCards)
        {
            Current = new WaitForCardSelection(currentPc, currentPc.Hand);
            return(true);
        }
        return(false);
    }
Beispiel #8
0
    public override bool MoveNext()
    {
        if (finished)
        {
            return(false);
        }
        WaitForCardResponse responseCoroutine = Current as WaitForCardResponse;

        if (responseCoroutine != null)
        {
            decision = responseCoroutine.Decision;
            if (decision == Decision.Avoid)
            {
                Current = EveryCowboyForHimself.Event(next + " keeps dueling.");
                if (next == target)
                {
                    pimPamPumsTarget++;
                }
                return(true);
            }
            else
            {
                Current = EveryCowboyForHimself.Event(next + " loses the duel.");
                return(true);
            }
        }
        if (decision != Decision.TakeHit)
        {
            next = next == player ? target : player;
            //TODO next.EnablePimPamPumsDuelResponse();
            Current = new WaitForCardResponse(next);
            return(true);
        }
        else
        {
            target.FinishResponse(pimPamPumsTarget);
            Current  = EveryCowboyForHimself.HitPlayer(player, next);
            finished = true;
            return(true);
        }
    }
Beispiel #9
0
    public override bool MoveNext()
    {
        WaitForCardResponse responseTimer = Current as WaitForCardResponse;

        if (responseTimer != null)
        {
            currentDecision = responseTimer.Decision;
            switch (responseTimer.Decision)
            {
            case Decision.Avoid:
                currentDecision = Decision.Pending;
                dodges++;
                SetCardResponse(responseTimer);
                return(true);

            case Decision.Barrel:
                currentDecision = Decision.Pending;
                barrelsUsed++;
                Current = new DrawEffectCoroutine(character);
                return(true);
            }
        }
        DrawEffectCoroutine drawEffectCoroutine = Current as DrawEffectCoroutine;

        if (drawEffectCoroutine != null)
        {
            Card drawEffectCard = drawEffectCoroutine.DrawEffectCard;
            dodge   = EveryCowboyForHimself.CheckConditionBarrel(drawEffectCard);
            dodges += dodge ? 1 : 0;
            Current = EveryCowboyForHimself.BarrelEffect(character, drawEffectCard);
            return(true);
        }
        if (dodges < misses && currentDecision != Decision.TakeHit)
        {
            Current = new WaitForCardResponse(character);
            return(true);
        }
        TakeHit = dodges < misses || currentDecision == Decision.TakeHit;
        return(false);
    }
    public override IEnumerator CardEffect(Player player, int target, Selection selection, int cardIndex)
    {
        yield return(base.CardEffect(player, target, selection, cardIndex));

        yield return(EveryCowboyForHimself.Gatling(player.Index, this));
    }
Beispiel #11
0
 protected void SetCardResponse(WaitForCardResponse timer)
 {
     Current = EveryCowboyForHimself.CardResponse(character, timer.ResponseCard);
 }
Beispiel #12
0
    public override IEnumerator CardEffect(Player player, int target, Selection selection, int cardIndex)
    {
        yield return(base.CardEffect(player, target, selection, cardIndex));

        EveryCowboyForHimself.Saloon();
    }
Beispiel #13
0
 public void DiscardCardHand(Card card)
 {
     RemoveCardHand(card);
     EveryCowboyForHimself.DiscardCard(card);
 }
Beispiel #14
0
 public override IEnumerator CardEffect(Player player, int target, Selection selection, int cardIndex)
 {
     player.RemoveCardHand(this);
     EveryCowboyForHimself.EquipPropertyTo(target, this);
     yield return(EquipTrigger(player));
 }
Beispiel #15
0
 public IEnumerator Panic(int target, Selection selection, int cardIndex)
 {
     yield return(EveryCowboyForHimself.Panic(this, target, selection, cardIndex));
 }
Beispiel #16
0
    public List <int> PlayersInWeaponRange()
    {
        List <int> result = EveryCowboyForHimself.PlayersInWeaponRange(Index, WeaponRange);

        return(result);
    }
Beispiel #17
0
 public virtual void ForceEndTurn()
 {
     OriginalHand();
     EveryCowboyForHimself.EndTurn(Index);
 }
Beispiel #18
0
    public IEnumerator CardUsed(Player player)
    {
        Card usedCard = RetrieveUsedCard();

        yield return(EveryCowboyForHimself.CardUsed(player, usedCard));
    }
Beispiel #19
0
 protected virtual IEnumerator ShootTrigger(int target)
 {
     yield return(EveryCowboyForHimself.Shoot(this, target, MissesToDodge));
 }
Beispiel #20
0
    public override IEnumerator CardEffect(Player player, int target, Selection selection, int cardIndex)
    {
        yield return(null);

        EveryCowboyForHimself.TradeTwoForOne(player, target, cardIndex);
    }
Beispiel #21
0
    public void DrawCards(int amount = 1)
    {
        List <Card> cards = EveryCowboyForHimself.DrawCards(amount);

        AddCardsHand(cards);
    }