private CardObject[] captainCards = new CardObject[30]; //29 captain cards + empty/default

    void Start()
    {
        ptm = gameObject.GetComponent("PlayerTurnMenu") as PlayerTurnMenu;
        //Debug.Log("CardDescription Start");
        createCardList();
        createCaptainList();
    }
    //Helper methods for actions
    private void discardCards(string cardType, PlayerTurnMenu ptm)
    {
        for (int i = 1; i <= StartMenu.numberOfPlayers; i++)
        {
            int count = 0;
            tempPlayer = GameObject.Find("/Pirate_Ship/Players/Player_" + i);
            tempStats  = tempPlayer.GetComponent("PlayerStats") as PlayerStats;

            //check each card
            int [] tempCards = tempStats.getCards();
            for (int j = 0; j < 10; j++)
            {
                //Debug.Log ("Card number: " + j + " with card value " + tempCards[j]);
                if (tempCards[j] != 0)
                {
                    if (ptm.cards.getCardType(tempCards[j]).Equals(cardType))
                    {
                        tempCards[j] = 0;
                        count++;
                    }
                }
            }
            tempStats.setCards(tempCards);
            ptm.AddCardsToHand2(count, i);
        }
    }
 void Start()
 {
     cardNumber  = 0;
     title       = "";
     description = "";
     type        = "default";
     texture     = "none";
     ptm         = gameObject.GetComponent("PlayerTurnMenu") as PlayerTurnMenu;
 }
    //for player cards
    public void action(PlayerTurnMenu ptm)
    {
        switch (cardNumber)
        {
        case 0:
            Debug.Log("Empty cards don't do anything");
            break;

        case 1:
            PlayerTurnMenu.showChoosePlayer = true;
            PlayerTurnMenu.targetMethod     = 2;
            PlayerTurnMenu.targetAmount     = 1;
            //Steal 1 coin from any player
            //how to
            break;

        case 2:
            PlayerTurnMenu.showChoosePlayer = true;
            PlayerTurnMenu.targetMethod     = 2;
            PlayerTurnMenu.targetAmount     = 2;
            //Steal 2 coins from any player
            //how to (see case 1)
            break;

        case 3:
            //move 1 space
            ptm.movePlayer(PlayerTurnMenu.playerTurn, 1);
            break;

        case 4:
            PlayerTurnMenu.showChoosePlayer = true;
            PlayerTurnMenu.targetMethod     = 1;
            PlayerTurnMenu.targetAmount     = 1;
            //Move another player one space
            break;

        case 5:
            PlayerTurnMenu.showChoosePlayer = true;
            PlayerTurnMenu.targetMethod     = 1;
            PlayerTurnMenu.targetAmount     = 2;
            //Move another player up to 2 spaces
            break;

        case 6:
            //PlayerTurnMenu.targetMethod = 2;
            //PlayerTurnMenu.targetAmount = 2;
            //Move each OPPONENT up 2 spaces towards Overboad
            for (int i = 1; i <= StartMenu.numberOfPlayers; i++)
            {
                if (i != PlayerTurnMenu.playerTurn)
                {
                    ptm.moveTowardOverboard(i, 2);
                }
            }
            break;

        case 7:
            //rope - save yourself from falling overboard
            //draw a card
            //player goes back to the end of the plank
            //TODO
            break;

        case 8:
            PlayerTurnMenu.showChoosePlayer = true;
            PlayerTurnMenu.targetMethod     = 3;
            PlayerTurnMenu.targetAmount     = -1;
            //Another player only draws and plays 1 card on their next turn
            break;

        case 9:
            PlayerTurnMenu.showChoosePlayer = true;
            PlayerTurnMenu.targetMethod     = 4;
            PlayerTurnMenu.targetAmount     = 0;
            //Pull another player into your space
            break;

        case 10:
            PlayerTurnMenu.showChoosePlayer = true;
            PlayerTurnMenu.targetMethod     = 5;
            //Force a player to lose their next turn
            break;

        case 11:
            PlayerTurnMenu.showChoosePlayer = true;
            PlayerTurnMenu.targetMethod     = 4;
            PlayerTurnMenu.targetAmount     = 1;
            //Switch places with another player
            break;

        case 12:
            PlayerTurnMenu.showChoosePlayer = true;
            PlayerTurnMenu.targetMethod     = 6;
            //Target player cannot use rope cards for the rest of the game
            break;

        case 13:
            ptm.ps.setPlays(3);
            ptm.ps.addCards(2);
            //Draw 2 card and play them immediately.
            break;

        case 14:
            ptm.targetPlayerMethod(7, PlayerTurnMenu.playerTurn);
            //move to any mutiny space
            break;

        case 15:
            ptm.ps.setPlays(4);
            ptm.ps.addCards(3);
            //draw 3 cards
            break;

        case 16:
            StashCount.stashArray[0] -= 1;
            StashCount.stashArray[PlayerTurnMenu.playerTurn] += 1;
            //steal 1 coins from stash
            break;

        case 17:
            ptm.movePlayer(PlayerTurnMenu.playerTurn, 3);
            //move 3
            break;

        case 18:
            ptm.movePlayer(PlayerTurnMenu.playerTurn, 5);
            //move 5
            break;

        case 19:
            PlayerTurnMenu.targetAmount = 1;
            ptm.targetPlayerMethod(8, PlayerTurnMenu.playerTurn);
            //Move 1 space
            //Take 1 coin from each opponent in that space
            break;

        case 20:
            PlayerTurnMenu.showChoosePlayer = true;
            PlayerTurnMenu.targetMethod     = 9;
            PlayerTurnMenu.targetAmount     = 1;
            //move an opponent 1 space and steal a coin from them
            break;

        case 21:
            //take 2 coins from the stash
            StashCount.stashArray[0] -= 2;
            StashCount.stashArray[PlayerTurnMenu.playerTurn] += 2;
            break;

        case 22:
            //Move up to 3 spaces and take up to 1 coin from a player on the way
            //TODO
            break;

        case 23:
            PlayerTurnMenu.targetAmount = 1;
            for (int i = 1; i <= StartMenu.numberOfPlayers; i++)
            {
                ptm.targetPlayerMethod(2, i);
            }
            //Steal one coin from each player
            break;

        case 24:
            //move 1 space
            //draw 1 card and play immediately
            ptm.movePlayer(PlayerTurnMenu.playerTurn, 1);
            ptm.ps.setPlays(1);
            ptm.ps.addCards(1);
            break;

        case 25:
            //take 2 coins from the stash
            StashCount.stashArray[0] -= 2;
            StashCount.stashArray[PlayerTurnMenu.playerTurn] += 2;
            //draw a second captain's card this turn
            PlayerTurnMenu.numOfCapCards = 2;
            break;

        case 26:
            ptm.targetPlayerMethod(10, 1);
            //take 5 coins from the stash
            //give 1 to each opponent
            //if any leftover give to player
            break;

        case 27:
            //Do not draw a Captain's Card this turn
            PlayerTurnMenu.numOfCapCards = 0;
            break;

        default:
            Debug.Log("I think you broke it");
            break;
        }
    }
    //Actions for Captain cards
    public void actionCpt(PlayerTurnMenu ptm)
    {
        switch (cardNumber)
        {
        case 1:
            //each player must discard any move cards in their hands and draw that many
            discardCards("Move", ptm);
            break;

        case 2:
            //all players in a mutiny space must move to the plank
            for (int i = 1; i <= StartMenu.numberOfPlayers; i++)
            {
                tempPlayer = GameObject.Find("/Pirate_Ship/Players/Player_" + i);
                tempStats  = tempPlayer.GetComponent("PlayerStats") as PlayerStats;

                //check to see if player is in mutiny place
                //if so, move to start of plank
                int currentSpace = tempStats.getCurrentSpace();
                if (currentSpace == 4 || currentSpace == 10 || currentSpace == 13)
                {
                    ptm.changePlayerLocation(i, 7);
                }
            }
            //place this card in any mutiny slot
            PlayerTurnMenu.mutinyHelperChoice = true;
            PlayerTurnMenu.wait = true;
            PlayerTurnMenu.showCurrentMutiny = true;
            PlayerTurnMenu.showOptions       = false;

            //add 2 coins to the stash
            StashCount.stashArray[0] += 2;
            break;

        case 3:
            //the players with the most coins must give 1 coin to the players with the fewest
            //handling ties... take coins from each player with max amount of coins
            //give out taken number of coins to players with the min amount of coins
            maxNumCoins = 0;
            minNumCoins = StashCount.stashArray[1];
            int count = 0;

            for (int i = 1; i <= StartMenu.numberOfPlayers; i++)
            {
                float temp = StashCount.stashArray[i];
                if (temp < minNumCoins)
                {
                    minNumCoins = temp;
                }
                if (temp > maxNumCoins)
                {
                    maxNumCoins = temp;
                }
            }

            if (minNumCoins == maxNumCoins)
            {
                //Debug.Log("Min: " + minNumCoins + "\n Max: " + maxNumCoins);
                return;
            }

            for (int i = 1; i <= StartMenu.numberOfPlayers; i++)
            {
                if (StashCount.stashArray[i] == maxNumCoins)
                {
                    StashCount.stashArray[i] -= 1;
                    count++;
                }
            }
            for (int i = 1; i <= StartMenu.numberOfPlayers; i++)
            {
                if (StashCount.stashArray[i] == minNumCoins && count > 0)
                {
                    StashCount.stashArray[i] += 1;
                    count--;
                }
            }
            break;

        case 4:
            //Move the current player 2 spaces towards Overboard!
            ptm.moveTowardOverboard(PlayerTurnMenu.playerTurn, 2);
            break;

        case 5:
            //The current player must put 2 coins in the stash
            check = checkStash(PlayerTurnMenu.playerTurn, 2);
            StashCount.stashArray[PlayerTurnMenu.playerTurn] -= check;
            StashCount.stashArray[0] += check;
            break;

        case 6:
            //The current player must draw 2 more Captain's Cards this turn
            PlayerTurnMenu.numOfCapCards = 3;
            break;

        case 7:
            //The current player must move to the start space
            ptm.changePlayerLocation(PlayerTurnMenu.playerTurn, 1);
            break;

        case 8:
            //each player may discard any number of cards to draw that many cards
            //TODO
            break;

        case 9:
            //The current player must move 4 spaces towards Overboard
            ptm.moveTowardOverboard(PlayerTurnMenu.playerTurn, 4);
            break;

        case 10:
            //remove 5 coins from the stash
            StashCount.stashArray[0] -= 5;
            break;

        case 11:
            //remove 3 coins from the stash
            StashCount.stashArray[0] -= 3;
            break;

        case 12:
            //move each player 2 spaces toward Overboard
            for (int i = 1; i <= StartMenu.numberOfPlayers; i++)
            {
                ptm.moveTowardOverboard(i, 2);
            }
            break;

        case 13:
            //remove two coins from the stash
            StashCount.stashArray[0] -= 2;
            break;

        case 14:
            //Move each player 4 spaces towards Overboard
            for (int i = 1; i <= StartMenu.numberOfPlayers; i++)
            {
                ptm.moveTowardOverboard(i, 4);
            }
            break;

        case 15:
            //Move each player 1 spaces toward Overboard
            for (int i = 1; i <= StartMenu.numberOfPlayers; i++)
            {
                ptm.moveTowardOverboard(i, 1);
            }
            break;

        case 16:
            //each player must put 1 coin into the stash
            for (int i = 1; i <= StartMenu.numberOfPlayers; i++)
            {
                check = checkStash(i, 1);
                StashCount.stashArray[i] -= check;
                StashCount.stashArray[0] += check;
            }
            break;

        case 17:
            //each player must discard any Restraint cards in their hands
            //and draw that many cards
            discardCards("Restraint", ptm);
            break;

        case 18:
            //Each player discards all Weapons cards and draws that many new cards
            discardCards("Weapon", ptm);
            break;

        case 19:
            //Each player discards all hint cards and draws that many new cards
            discardCards("Hint", ptm);
            break;

        case 20:
            //The player with the most coins must move 3 spaces towards Overboard
            maxNumCoins = 0;

            for (int i = 1; i <= StartMenu.numberOfPlayers; i++)
            {
                float temp = StashCount.stashArray[i];
                if (temp > maxNumCoins)
                {
                    maxNumCoins = temp;
                }
            }
            for (int i = 1; i <= StartMenu.numberOfPlayers; i++)
            {
                if (StashCount.stashArray[i] == maxNumCoins)
                {
                    ptm.moveTowardOverboard(i, 3);
                }
            }
            break;

        case 21:
            //The player with the most coins must put 3 coins in the stash
            maxNumCoins = 0;

            for (int i = 1; i <= StartMenu.numberOfPlayers; i++)
            {
                float temp = StashCount.stashArray[i];
                if (temp > maxNumCoins)
                {
                    maxNumCoins = temp;
                }
            }
            for (int i = 1; i <= StartMenu.numberOfPlayers; i++)
            {
                if (StashCount.stashArray[i] == maxNumCoins)
                {
                    check = checkStash(i, 3);
                    StashCount.stashArray[i] -= check;
                    StashCount.stashArray[0] += check;
                }
            }
            break;

        case 22:
            //Each player recieves 1 coin from the stash
            for (int i = 1; i <= StartMenu.numberOfPlayers; i++)
            {
                StashCount.stashArray[0] -= 1;
                StashCount.stashArray[i] += 1;
            }
            //remove one mutiny card (by choice?)
            if (PlayerTurnMenu.mutinyCard1 != 0 || PlayerTurnMenu.mutinyCard2 != 0 ||
                PlayerTurnMenu.mutinyCard3 != 0)
            {
                PlayerTurnMenu.mutinyHelperChoice = false;
                PlayerTurnMenu.wait = true;
                PlayerTurnMenu.showCurrentMutiny = true;
                PlayerTurnMenu.showOptions       = false;
                //PlayerTurnMenu.mutinyOption = 0;
            }
            break;

        case 23:
            //no effect
            break;

        case 24:
            //no effect
            break;

        case 25:
            //add 1 coin to the stash for each surviving player
            for (int i = 1; i <= StartMenu.numberOfPlayers; i++)
            {
                tempPlayer = GameObject.Find("/Pirate_Ship/Players/Player_" + i);
                tempStats  = tempPlayer.GetComponent("PlayerStats") as PlayerStats;

                //check each player to see if they are alive
                if (tempStats.getAlive())
                {
                    StashCount.stashArray[0] += 1;
                }
            }
            break;

        case 26:
            //all players in the weapon space must move to the plank
            for (int i = 1; i <= StartMenu.numberOfPlayers; i++)
            {
                tempPlayer = GameObject.Find("/Pirate_Ship/Players/Player_" + i);
                tempStats  = tempPlayer.GetComponent("PlayerStats") as PlayerStats;

                //check to see if player is in weapon place
                //if so, move to start of plank
                int currentSpace = tempStats.getCurrentSpace();
                if (currentSpace == 4)
                {
                    ptm.changePlayerLocation(i, 7);
                }
            }
            //place this card in the weapon slot
            PlayerTurnMenu.mutinyCard1 = 126;

            //add 2 coins to the stash
            StashCount.stashArray[0] += 2;
            break;

        case 27:
            //all players in the restraint space space must move to the plank
            for (int i = 1; i <= StartMenu.numberOfPlayers; i++)
            {
                tempPlayer = GameObject.Find("/Pirate_Ship/Players/Player_" + i);
                tempStats  = tempPlayer.GetComponent("PlayerStats") as PlayerStats;

                //check to see if player is in the restraint place
                //if so, move to start of plank
                int currentSpace = tempStats.getCurrentSpace();
                if (currentSpace == 10)
                {
                    ptm.changePlayerLocation(i, 7);
                }
            }
            //place this card in the restraint slot
            PlayerTurnMenu.mutinyCard2 = 127;

            //add 2 coins to the stash
            StashCount.stashArray[0] += 2;
            break;

        case 28:
            //all players in the hint space must move to the plank
            for (int i = 1; i <= StartMenu.numberOfPlayers; i++)
            {
                tempPlayer = GameObject.Find("/Pirate_Ship/Players/Player_" + i);
                tempStats  = tempPlayer.GetComponent("PlayerStats") as PlayerStats;

                //check to see if player is in the hint place
                //if so, move to start of plank
                int currentSpace = tempStats.getCurrentSpace();
                if (currentSpace == 13)
                {
                    ptm.changePlayerLocation(i, 7);
                }
            }
            //place this card in the hint slot
            PlayerTurnMenu.mutinyCard3 = 128;

            //add 2 coins to the stash
            StashCount.stashArray[0] += 2;
            break;

        default:
            Debug.Log("I think you broke it");
            break;
        }
    }