return subList.drawRandom(1).getCard(0);
}
int addOneCard(CardList deck, CardList subList, CardList heap)
{
Card toAdd=null;
if (currentcreatureCards >0)
{
toAdd = getCreatureCard(subList);
if (toAdd == null)
{
currenthealCards++;
currentcreatureCards--;
return 0;
}
deck.addCard(toAdd);
currentcreatureCards--;
}
else if (currenthealCards >0)
{
toAdd = getHealCard(subList);
if (toAdd == null)
{
currentplayerDamageCards++;
currenthealCards--;
return 0;
}
deck.addCard(toAdd);
currenthealCards--;
}
else if (currentplayerDamageCards >0)
{
toAdd = getPlayerDamageCard(subList);
if (toAdd == null)
{
currentcreatureDamageCards++;
currentplayerDamageCards--;
return 0;
}
deck.addCard(toAdd);
currentplayerDamageCards--;
}
else if (currentcreatureDamageCards >0)
{
toAdd = getCreatureDamageCard(subList);
if (toAdd == null)
{
currentlandDestroyCards++;
currentcreatureDamageCards--;
return 0;
}
deck.addCard(toAdd);
currentcreatureDamageCards--;
}
else if (currentlandDestroyCards >0)
{
toAdd = getLandDestroyCard(subList);
if (toAdd == null)
{
currentantiMagicCards++;
currentlandDestroyCards--;
return 0;
}
deck.addCard(toAdd);
currentlandDestroyCards--;
}
else if (currentantiMagicCards >0)
{
toAdd = getAntiMagicCard(subList);
if (toAdd == null)
{
currentcardMagicCards++;
currentantiMagicCards--;
return 0;
}
deck.addCard(toAdd);
currentantiMagicCards--;
}
else if (currentcardMagicCards >0)
{
toAdd = getCardMagicCard(subList);
if (toAdd == null)
{
currentbuffyCards++;
currentcardMagicCards--;
return 0;
}
deck.addCard(toAdd);
currentcardMagicCards--;
}
else if (currentbuffyCards >0)
{
toAdd = getBuffyCard(subList);
if (toAdd == null)
{
currenttrickyCards++;
currentbuffyCards--;
return 0;
}
deck.addCard(toAdd);
currentbuffyCards--;
}
else if (currenttrickyCards >0)
{
toAdd = getTrickyCard(subList);
if (toAdd == null)
{
currentcreatureCards++;
currenttrickyCards--;
toAdd = getCreatureCard(subList);
if (toAdd==null) currentcreatureCards--;
return 0;
}
deck.addCard(toAdd);
currenttrickyCards--;
}
// very bad heap...
if (toAdd == null) return 0;
int count = deck.getIDCount(toAdd.getId());
if (count >= maxSame)
{
heap.removeCardByIdDirect(toAdd.getId());
}
return 1;
}