// File: alcazar_cards.cpp
// VERSION: 1.0.0
//
// Created: 11-24-2006	[Xwielder]
// Updated: 02-15-2007	[Xwielder]
//
#define __ALCAZAR_CARDS_CPP__

#include "sysdep.h"
#include "structs.h"
#include "utils.h"
#include "comm.h"
#include "interpreter.h"
#include "handler.h"
#include "db.h"
#include "mysql.h"
#include "screen.h"
#include "alcazar.h"

// External functions
void delete_alcazar_games_from_sql(void);

// Local functions
int perform_play_the_cards(struct char_data *ch, struct char_data *vict, int GameID, char *Cardx, int vAddFromQuarry, int vAddFromMagic, int vAddFromZoo, int chAddFromQuarry, int chAddFromMagic, int chAddFromZoo, int chGameScore, int vGameScore, int chAdjTower, int chAdjWall, int chAdjQuarry, int chAdjBricks, int chAdjMagic, int chAdjGems, int chAdjZoo, int chAdjCreatures, int vAdjTower, int vAdjWall, int vAdjQuarry, int vAdjBricks, int vAdjMagic, int vAdjGems, int vAdjZoo, int vAdjCreatures, int chAdjCurrentTurn, int vAdjCurrentTurn);
void play_again(struct char_data *ch, struct char_data *vict, int victory);
void thier_turn(struct char_data *ch, struct char_data *vict, int victory);


///////////////////////////////////////////////////////////////////////////////

void their_turn(struct char_data *ch, struct char_data *vict, int victory)
{
	if (!victory)
	{
		MSGP(ch, 1, "It is now %s's turn.", GET_NAME(vict));
		MSGP(vict, 1, "It is now YOUR turn.");
	}
	else
	{
		MSGP(ch, 1, "Hope you had fun! Come back and play again soon!");
		MSGP(vict, 1, "Hope you had fun! Come back and play again soon!");
	}
}


void play_again(struct char_data *ch, struct char_data *vict, int victory)
{
	if (!victory)
	{
		MSGP(ch, 1, "You get another play.");
		MSGP(ch, 1, "It is still your turn.");
		MSGP(vict, 1, "%s gets another play.", GET_NAME(ch));
		MSGP(vict, 1, "It is still %s's turn.", GET_NAME(ch));
	}
	else
	{
		MSGP(ch, 1, "Hope you had fun! Come back and play again soon!");
		MSGP(vict, 1, "Hope you had fun! Come back and play again soon!");
	}
}


void play_the_cards(struct char_data *ch, struct char_data *vict, int GameID, int card_id, char *Cardx, int vAddFromQuarry, int vAddFromMagic, int vAddFromZoo, int chAddFromQuarry, int chAddFromMagic, int chAddFromZoo, int chGameScore, int vGameScore)
{
	MySQL my;
	char szQueryText[700];
	char szQueryTextTwo[700];
	MYSQL_RES *My_result = NULL;
	int new_card = rand_number(1, DECK_SIZE);
	int victory = NULL;

	if (card_id > DECK_SIZE || card_id < 1)
	{
		syslog("card_id was larger than DECK_SIZE");
		delete_alcazar_games_from_sql();
		MSGWORLD(1, "*** We apologize for any inconvenience, but there is a problem with Alcazar.");
		MSGWORLD(1, "*** All current games have been deleted, and GM's have been notified.");
		return;
	}

	switch (card_id)
	{
	case 1://   Card 1   [DIAMOND] (+15 tower) -- cost: 32 gems
	case 106:// Card 106 [DIAMOND] (+15 tower) -- cost: 32 gems
		{
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore, 15, 0, 0, 0, 0, (-32), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1);
			MSGP(ch, 1, "You played \"Diamond\".  You gained 15 to your tower.");
			MSGP(vict, 1, "%s played \"Diamond\".  %s gained 15 to %s tower.", GET_NAME(ch), HESHECAP(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 2:// Card 2 [SHATTER] (-1 magic, 9 damage to enemy tower) -- cost: 16 gems
		{
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore, 0, 0, 0, 0, (-1), (-16), 0, 0, (-9), 0, 0, 0, 0, 0, 0, 0, 0, 1);
			MSGP(ch, 1, "You played \"Shatter\" on %s.  %s took 9 damage to %s tower.  You lost 1 magic.", GET_NAME(vict), HESHECAP(vict), HISHER(vict));
			MSGP(vict, 1, "%s played \"Shatter\" on you.  You took 9 damage to your tower.  %s lost 1 magic.", GET_NAME(ch), GET_NAME(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 3:// Card 3 [QUAKE] (-1 all player's quarry) -- cost: FREE
		{
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore, 0, 0, (-1), 0, 0, 0, 0, 0, 0, 0, (-1), 0, 0, 0, 0, 0, 0, 1);
			MSGP(ch, 1, "You played \"Quake\".  All players lost 1 quarry.");
			MSGP(vict, 1, "%s played \"Quake\".  All players lost 1 quarry.", GET_NAME(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 4:// Card 4 [BIG WALL] (+6 wall) -- cost: 10 bricks
		{
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore, 0, 6, 0, (-10), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1);
			MSGP(ch, 1, "You played \"Big Wall\".  You gained 6 to your wall.");
			MSGP(vict, 1, "%s played \"Big Wall\".  %s gained 6 to %s wall", HESHECAP(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 5://   Card 5   [FOUNDATIONS] (If wall is 0, +6 wall, otherwise +3 wall) -- cost: 6 bricks
	case 107:// Card 107 [FOUNDATIONS] (If wall is 0, +6 wall, otherwise +3 wall) -- cost: 6 bricks
	case 108:// Card 108 [FOUNDATIONS] (If wall is 0, +6 wall, otherwise +3 wall) -- cost: 6 bricks
		{
			// Update Player
			snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(ch));
			if (my.Query(szQueryText) > 0)
			{
				my.NextRow();
				int wall = atoi(my.GetData("Wall"));
				if (wall > 0)
					wall = 3;
				else
					wall = 6;

				victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore, 0, wall, 0, (-6), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1);
				MSGP(ch, 1, "You played \"Foundations\".  You gained %d to your wall.", wall);
				MSGP(vict, 1, "%s played \"Foundations\".  %s gained %d to %s wall", GET_NAME(ch), HESHECAP(ch), wall, HISHER(ch));
				their_turn(ch, vict, victory);
			}
			else
				MySQL__endquery(My_result);

			MySQL__endquery(My_result);
			return;
		}
		break;
	case 6://   Card 6   [REINFORCED WALL] (+8 wall) -- cost: 16 bricks
	case 109:// Card 109 [REINFORCED WALL] (+8 wall) -- cost: 16 bricks
		{
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore, 0, 8, 0, (-16), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1);
			MSGP(ch, 1, "You played \"Reinforced Wall\".  You gained 8 to your wall.");
			MSGP(vict, 1, "%s played \"Reinforced Wall\".  %s gained 8 to %s wall", GET_NAME(ch), HESHECAP(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 7:// Card 7 [INNOVATIONS] (+1 all player's quarry, you gain 4 gems) -- cost: 4 bricks
		{
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore, 0, 0, 1, (-4), 0, 4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1);
			MSGP(ch, 1, "You played \"Innovations\".  All players gained 1 to their quarry and you gained 4 gems");
			MSGP(vict, 1, "%s played \"Innovations\".  All players gained 1 to their quarry and %s gained 4 gems", GET_NAME(ch), GET_NAME(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 8:// Card 8 [SUCCUBUS] (5 damage to enemy tower, enemy loses 8 creatures) -- cost: 28 creatures
		{
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore, 0, 0, 0, 0, 0, 0, 0, (-28), (-5), 0, 0, 0, 0, 0, 0, (-8), 0, 1);
			MSGP(ch, 1, "You played \"Succubus\" on %s.  %s took 5 damage to %s tower and lost 8 creatures.", GET_NAME(vict), HESHECAP(vict), HISHER(vict));
			MSGP(vict, 1, "%s played \"Succubus\" on you.  You took 5 damage to your tower and lost 8 creatures.", GET_NAME(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 9:// Card 9 [MINERS] (+1 quarry) -- cost: 6 bricks
		{
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore, 0, 0, 1, (-6), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1);
			MSGP(ch, 1, "You played \"Miners\".  You gained 1 to your quarry.");
			MSGP(vict, 1, "%s played \"Miners\".  %s gained 1 to %s quarry.", GET_NAME(ch), HESHECAP(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 10://  Card 10  [HUSBANDRY] (+1 zoo) -- cost: 6 creatures
	case 116:// Card 116 [HUSBANDRY] (+1 zoo) -- cost: 6 creatures
		{
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore, 0, 0, 0, 0, 0, 0, 1, (-6), 0, 0, 0, 0, 0, 0, 0, 0, 0, 1);
			MSGP(ch, 1, "You played \"Husbandry\".  You gained 1 to your zoo.");
			MSGP(vict, 1, "%s played \"Husbandry\".  %s gained 1 to %s zoo.", GET_NAME(ch), HESHECAP(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 11:// Card 11 [AMETHYST] (+3 tower) -- cost: 4 gems
		{
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore, 3, 0, 0, 0, 0, (-4), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1);
			MSGP(ch, 1, "You played \"Amethyst\".  You gained 3 to your tower.");
			MSGP(vict, 1, "%s played \"Amethyst\".  %s gained 3 to %s tower.", GET_NAME(ch), HESHECAP(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 12:// Card 12 [FAERIE] (2 damage to enemy, play again) -- cost: 2 creature
		{
			snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(vict));
			if (my.Query(szQueryText) > 0)
			{
				my.NextRow();
				int wall = atoi(my.GetData("Wall")) - 2;
				int tower = atoi(my.GetData("Tower"));
				if (wall < 1)
					tower = wall;
				else
					tower = 0;

				victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore, 0, 0, 0, 0, 0, 0, 0, (-2), tower, (-2), 0, 0, 0, 0, 0, 0, 1, 0);
				MSGP(ch, 1, "You played \"Faerie\" on %s.  %s took 2 damage.", GET_NAME(vict), HESHECAP(vict));
				MSGP(vict, 1, "%s played \"Faerie\" on you.  You took 2 damage.", GET_NAME(ch));
				play_again(ch, vict, victory);
			}
			else
				MySQL__endquery(My_result);

			MySQL__endquery(My_result);
			return;
		}
		break;
	case 13:// Card 13 [ROCINU BLESSING] (+20 wall, +8 tower) -- cost: 48 bricks
		{
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore, 8, 20, 0, (-48), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1);
			MSGP(ch, 1, "You played \"Rocinu Blessing\".  You gained 20 to your wall, and 8 to your tower.");
			MSGP(vict, 1, "%s played \"Rocinu Blessing\".  %s gained 20 to %s wall, and 8 to %s tower.", GET_NAME(ch), HESHECAP(ch), HISHER(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 14:// Card 14 [FIRE RUBY] (+6 tower, 4 damage to all enemy towers) -- cost: 26 gems
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     6,     0,     0,     0,     0, (-26),     0,     0,  (-4),     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Fire Ruby\" on %s.  %s took 4 damage to %s tower.  You gained 6 to your tower.", GET_NAME(vict), HESHECAP(vict), HISHER(vict));
			MSGP(vict, 1, "%s played \"Fire Ruby\" on you.  You took 4 damage to your tower.  %s gained 6 to %s tower.", GET_NAME(ch), GET_NAME(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 15://  Card 15  [CRYSTAL ROCKS] (+7 wall, gain 7 gems) -- cost: 18 bricks
	case 111:// Card 111 [CRYSTAL ROCKS] (+7 wall, gain 7 gems) -- cost: 18 bricks
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     7,     0, (-18),     0,     7,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Crystal Rocks\".  You gained 7 to your wall and gems.");
			MSGP(vict, 1, "%s played \"Crystal Rocks\".  %s gained 7 to %s wall and gems.", GET_NAME(ch), HESHECAP(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 16:// Card 16 [TREMORS] (All walls take 5 damage, play again) -- cost: 14 bricks
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,  (-5),     0, (-14),     0,     0,     0,     0,     0,  (-5),     0,     0,     0,     0,     0,     0,      1,      0);
			MSGP(ch, 1, "You played \"Tremors\".  Everyone lost 5 to their wall.");
			MSGP(vict, 1, "%s played \"Tremors\".  Everyone lost 5 to their wall.", GET_NAME(ch));
			play_again(ch, vict, victory);
			return;
		}
		break;
	case 17:// Card 17 [MOB] (6 damage to enemy, you take 3 damage) -- cost: 6 creatures
		{
			snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(vict));
			if (my.Query(szQueryText) > 0)
			{
				my.NextRow();
				int vwall = atoi(my.GetData("Wall")) - 6;
				int vtower = atoi(my.GetData("Tower"));
				if (vwall < 1)
					vtower = vwall;
				else
					vtower = 0;

				snprintf(szQueryTextTwo, sizeof(szQueryTextTwo), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(ch));
				if (my.Query(szQueryTextTwo) > 0)
				{
					my.NextRow();
					int chwall = atoi(my.GetData("Wall")) - 3;
					int chtower = atoi(my.GetData("Tower"));
					if (chwall < 1)
						chtower = chwall;
					else
						chtower = 0;
																																															//      cTwr    cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt    vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
					victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore, chtower,  (-3),     0,     0,     0,     0,     0,  (-6), vtower,  (-6),     0,     0,     0,     0,     0,     0,      0,      1);
					MSGP(ch, 1, "You played \"Mob\".  You took 3 damage.  %s took 6 damage.", GET_NAME(vict), GET_NAME(vict));
					MSGP(vict, 1, "%s played \"Mob\".  %s took 3 damage.  You took 6 damage.", GET_NAME(ch), HESHECAP(ch));
					their_turn(ch, vict, victory);
				}
				else
					MySQL__endquery(My_result);
			}
			else
				MySQL__endquery(My_result);

			MySQL__endquery(My_result);
			return;
		}
		break;
	case 18://  Card 18  [FORCED LABOR] (+9 wall, lose 5 creatures) -- cost: 14 bricks
	case 110:// Card 110 [FORCED LABOR] (+9 wall, lose 5 creatures) -- cost: 14 bricks
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     9,     0, (-14),     0,     7,     0,  (-5),     0,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Forced Labor\".  You gained 9 to your wall, and lost 5 creatures.");
			MSGP(vict, 1, "%s played \"Forced Labor\".  %s gained 9 to %s wall, and lost 5 creatures.", GET_NAME(ch), HESHECAP(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 19://  Card 19  [SAPPHIRE] (+11 tower) -- cost: 20 gems
	case 112:// Card 112 [SAPPHIRE] (+11 tower) -- cost: 20 gems
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,    11,     0,     0,     0,     0,  (-20),     0,    0,     0,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Sapphire\".  You gained 11 to your tower.");
			MSGP(vict, 1, "%s played \"Sapphire\".  %s gained 11 to %s tower.", GET_NAME(ch), HESHECAP(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 20:// Card 20 [NEW RECRUITS] (+1 quarry) -- cost: 20 creatures
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     0,     1,     0,     0,     0,     0, (-20),     0,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"New Recruits\".  You gained 1 to your quarry.");
			MSGP(vict, 1, "%s played \"New Recruits\".  %s gained 1 to %s quarry.", GET_NAME(ch), HESHECAP(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 21://  Card 21  [CRYSTAL MATRIX] (+1 magic, +3 tower, +1 all enemy towers) -- cost: 12 gems
	case 113:// Card 113 [CRYSTAL MATRIX] (+1 magic, +3 tower, +1 all enemy towers) -- cost: 12 gems
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     3,     0,     0,     0,     1, (-12),     0,     0,     1,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Crystal Matrix\".  You gained 1 to your magic and 3 to your tower.  All enemy towers took 1 damage.");
			MSGP(vict, 1, "%s played \"Crystal Matrix\".  %s gained 1 to %s magic and 3 to %s tower.  You took 1 damage to your tower.", GET_NAME(ch), HESHECAP(ch), HISHER(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 22:// Card 22 [CRUMBLESTONE] (+7 tower, enemy loses 6 bricks) -- cost: 14 gems
	case 92:// Card 92 [CRUMBLESTONE] (+7 tower, enemy loses 6 bricks) -- cost: 14 gems
	case 99:// Card 99 [CRUMBLESTONE] (+7 tower, enemy loses 6 bricks) -- cost: 14 gems
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     7,     0,     0,     0,     0, (-14),     0,     0,     0,     0,     0,  (-6),     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Crumblestone\".  You gained 7 to your tower.  %s lost 6 bricks.", GET_NAME(vict));
			MSGP(vict, 1, "%s played \"Crumblestone\".  %s gained 7 to %s tower.  You lost 6 bricks.", GET_NAME(ch), HESHECAP(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 23://  Card 23  [UL-GARRIAN ARCHER] (3 damage to enemy tower, you take 1 damage) -- cost: 8 creatures
	case 93://  Card 93  [UL-GARRIAN ARCHER] (3 damage to enemy tower, you take 1 damage) -- cost: 8 creatures
	case 100:// Card 100 [UL-GARRIAN ARCHER] (3 damage to enemy tower, you take 1 damage) -- cost: 8 creatures
		{
			snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(ch));
			if (my.Query(szQueryText) > 0)
			{
				my.NextRow();
				int wall = atoi(my.GetData("Wall")) - 1;
				int tower = atoi(my.GetData("Tower"));
				if (wall < 1)
					tower = wall;
				else
					tower = 0;
																																														//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
				victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore, tower,  (-1),     0,     0,     0,     0,     0,  (-8),  (-3),     0,     0,     0,     0,     0,     0,     0,      0,      1);
				MSGP(ch, 1, "You played \"Ul-Garrian Archer\" on %s.  %s took 3 damage to %s tower.  You took 1 damage.", GET_NAME(vict), HESHECAP(vict), HISHER(vict));
				MSGP(vict, 1, "%s played \"Ul-Garrian Archer\" on you.  %s took 1 damage.  You took 3 damage to your tower.", GET_NAME(ch), HESHECAP(ch));
				their_turn(ch, vict, victory);
			}
			else
				MySQL__endquery(My_result);

			MySQL__endquery(My_result);
			return;
		}
		break;
	case 24://  Card 24  [SNIPE] (5 damage to enemy) -- cost: 6 creatures
	case 94://  Card 94  [SNIPE] (5 damage to enemy) -- cost: 6 creatures
	case 101:// Card 101 [SNIPE] (5 damage to enemy) -- cost: 6 creatures
		{
			snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(vict));
			if (my.Query(szQueryText) > 0)
			{
				my.NextRow();
				int wall = atoi(my.GetData("Wall")) - 5;
				int tower = atoi(my.GetData("Tower"));
				if (wall < 1)
					tower = wall;
				else
					tower = 0;
																																														//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
				victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     0,     0,     0,     0,     0,     0,  (-6), tower,  (-5),     0,     0,     0,     0,     0,     0,      0,      1);
				MSGP(ch, 1, "You played \"Snipe\" on %s.  %s took 5 damage.", GET_NAME(vict), HESHECAP(vict));
				MSGP(vict, 1, "%s played \"Snipe\" on you.  You took 5 damage.", GET_NAME(ch));
				their_turn(ch, vict, victory);
			}
			else
				MySQL__endquery(My_result);

			MySQL__endquery(My_result);
			return;
		}
		break;
	case 25:// Card 25 [MAGICAL INSPIRATION] (All player's magic becomes the highest magic among players) -- cost: 14 gems
		{
			int magicv = 0, magicch = 0;
			snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(vict));
			if (my.Query(szQueryText) > 0)
			{
				my.NextRow();
				int vmagic = atoi(my.GetData("Magic"));

				snprintf(szQueryTextTwo, sizeof(szQueryTextTwo), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(ch));
				if (my.Query(szQueryTextTwo) > 0)
				{
					my.NextRow();
					int chmagic = atoi(my.GetData("Magic"));

					int magic = (vmagic > chmagic ? vmagic : chmagic);

					if (vmagic != magic)
						magicv = (chmagic - vmagic);
					if (chmagic != magic)
						magicch = (vmagic - chmagic);
																																															//      cTwr    cWal   cQry   cBrk      cMag    cGem   cZoo   cCrt    vTwr   vWal   vQry   vBrk     vMag   vGem   vZoo   vCrt   cTurn   vTurn
					victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,      0,      0,     0,     0,  magicch,   (-14),    0,     0,      0,     0,     0,     0,  magicv,     0,     0,     0,      0,      1);
					MSGP(ch, 1, "You played \"Magical Inspiration\".  All player's magic becomes the highest magic among players.");
					MSGP(vict, 1, "%s played \"Magical Inspiration\".  All player's magic becomes the highest magic among players.", GET_NAME(ch));
					their_turn(ch, vict, victory);
				}
				else
					MySQL__endquery(My_result);
			}
			else
				MySQL__endquery(My_result);

			MySQL__endquery(My_result);
			return;
		}
		break;
	case 26://  Card 26  [CREATURE TAMER] (+2 zoo) -- cost: 14 creatures
	case 95://  Card 95  [CREATURE TAMER] (+2 zoo) -- cost: 14 creatures
	case 102:// Card 102 [CREATURE TAMER] (+2 zoo) -- cost: 14 creatures
	case 115:// Card 115 [CREATURE TAMER] (+2 zoo) -- cost: 14 creatures
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     0,     0,     0,     0,     0,     2, (-14),     0,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Creature Tamer\".  You gained 2 to your zoo.");
			MSGP(vict, 1, "%s played \"Creature Tamer\".  %s gained 2 to %s zoo.", GET_NAME(ch), HESHECAP(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 27://  Card 27  [UNICORN] (If magic > enemy's magic, 12 damage to enemy, else 8 damage) -- cost: 18 creatures
	case 96://  Card 96  [UNICORN] (If magic > enemy's magic, 12 damage to enemy, else 8 damage) -- cost: 18 creatures
	case 103:// Card 103 [UNICORN] (If magic > enemy's magic, 12 damage to enemy, else 8 damage) -- cost: 18 creatures
		{
			snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(vict));
			if (my.Query(szQueryText) > 0)
			{
				my.NextRow();
				int vmagic = atoi(my.GetData("Magic"));
				int vwall = atoi(my.GetData("Wall"));
				int vtower = atoi(my.GetData("Tower"));

				snprintf(szQueryTextTwo, sizeof(szQueryTextTwo), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(ch));
				if (my.Query(szQueryTextTwo) > 0)
				{
					my.NextRow();
					int chmagic = atoi(my.GetData("Magic"));

					int damage = (chmagic > vmagic ? 12 : 8);
					int negdamage = (damage - (damage * 2));

					vwall = (vwall - damage);

					if (vwall < 1)
						vtower = vwall;
					else
						vtower = 0;
																																															//      cTwr    cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt    vTwr       vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
					victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,      0,      0,     0,     0,     0,     0,     0, (-18), vtower, negdamage,     0,     0,     0,     0,     0,     0,      0,      1);
					MSGP(ch, 1, "You played \"Unicorn\" on %s.  %s took %d damage.", GET_NAME(vict), HESHECAP(vict), damage);
					MSGP(vict, 1, "%s played \"Unicorn\" on you.  You took %d damage.", GET_NAME(ch), damage);
					their_turn(ch, vict, victory);
				}
				else
					MySQL__endquery(My_result);
			}
			else
				MySQL__endquery(My_result);

			MySQL__endquery(My_result);
			return;
		}
		break;
	case 28://  Card 28  [YEFARIAN ARCHERS] (If wall > enemy's wall, 6 damage to tower, else 6 damage) -- cost: 20 creatures
	case 97://  Card 97  [YEFARIAN ARCHERS] (If wall > enemy's wall, 6 damage to tower, else 6 damage) -- cost: 20 creatures
	case 104:// Card 104 [YEFARIAN ARCHERS] (If wall > enemy's wall, 6 damage to tower, else 6 damage) -- cost: 20 creatures
		{
			bool bigger = FALSE;
			bool dmgboth = FALSE;
			snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(vict));
			if (my.Query(szQueryText) > 0)
			{
				my.NextRow();
				int vwall = atoi(my.GetData("Wall"));
				int vtower = atoi(my.GetData("Tower"));

				snprintf(szQueryTextTwo, sizeof(szQueryTextTwo), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(ch));
				if (my.Query(szQueryTextTwo) > 0)
				{
					my.NextRow();
					int chwall = atoi(my.GetData("Wall"));

					if (chwall > vwall)
					{
						vtower = (-6);
						vwall = 0;
						bigger = TRUE;
					}
					else
					{
						vwall = (vwall - 6);
						if (vwall < 1)
						{
							vtower = vwall;
							dmgboth = TRUE;
						}
						else
							vtower = 0;

						vwall = (-6);
					}
																																															//      cTwr    cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt    vTwr    vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
					victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,      0,      0,     0,     0,     0,     0,     0, (-20), vtower,  vwall,     0,     0,     0,     0,     0,     0,      0,      1);
					if (!dmgboth)
					{
						MSGP(ch, 1, "You played \"Yefarian Archers\" on %s.  %s took 6 damage to %s %s.", GET_NAME(vict), HESHECAP(vict), HISHER(vict), (bigger == TRUE ? "tower" : "wall"));
						MSGP(vict, 1, "%s played \"Yefarian Archers\" on you.  You took 6 damage to your %s.", GET_NAME(ch), (bigger == TRUE ? "tower" : "wall"));
					}
					else
					{
						MSGP(ch, 1, "You played \"Yefarian Archers\" on %s.  %s took 6 damage.", GET_NAME(vict), HESHECAP(vict));
						MSGP(vict, 1, "%s played \"Yefarian Archers\" on you.  You took 6 damage.", GET_NAME(ch));
					}

					their_turn(ch, vict, victory);
				}
				else
					MySQL__endquery(My_result);
			}
			else
				MySQL__endquery(My_result);

			MySQL__endquery(My_result);
			return;
		}
		break;
	case 29://  Card 29  [THUMP 'N DAZE] (5 damage to all enemy towers, play again) -- cost: 16 creatures
	case 98://  Card 98  [THUMP 'N DAZE] (5 damage to all enemy towers, play again) -- cost: 16 creatures
	case 105:// Card 105 [THUMP 'N DAZE] (5 damage to all enemy towers, play again) -- cost: 16 creatures
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     0,     0,     0,     0,     0,     0, (-16),  (-5),     0,     0,     0,     0,     0,     0,     0,      1,      0);
			MSGP(ch, 1, "You played \"Thump 'n Daze\".  %s lost 5 to %s tower.", GET_NAME(vict), HISHER(vict));
			MSGP(vict, 1, "%s played \"Thump 'n Daze\".  You lost 5 to your tower.", GET_NAME(ch));
			play_again(ch, vict, victory);
			return;
		}
		break;
	case 30://  Card 30  [POWER BURN] (5 damage to your tower, +2 magic) -- cost: 6 gems
	case 114:// Card 114 [POWER BURN] (5 damage to your tower, +2 magic) -- cost: 6 gems
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,  (-5),     0,     0,     0,     2,  (-6),     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Power Burn\".  You took 5 damage to your tower and gained 2 magic.");
			MSGP(vict, 1, "%s played \"Power Burn\".  %s took 5 damage to %s tower and gained 2 magic.", GET_NAME(ch), HESHECAP(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 31:// Card 31 [UL-GARRIAN SHIELD] (+8 tower, +3 wall) -- cost: 24 gems
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     8,     3,     0,     0,     0,  (-24),    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Ul-Garrian Shield\".  You gained 8 to your tower and 3 to your wall.");
			MSGP(vict, 1, "%s played \"Ul-Garrian Shield\".  %s gained 8 to %s tower and 3 to %s wall.", GET_NAME(ch), HESHECAP(ch), HISHER(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 32:// Card 32 [AZNUFF GRUTTE CHARGE] (20 damage to enemy wall, 10 damage to enemy tower, enemy loses 10 creatures, -1 enemy zoo) -- cost: 80 creatures
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     0,     0,     0,     0,     0,    0,  (-80), (-10), (-20),     0,     0,     0,     0,  (-1), (-10),      0,      1);
			MSGP(ch, 1, "You played \"Aznuff Grutte Charge\" on %s.  %s took 20 damage to %s wall and 10 damage to %s tower.  %s also lost 10 creatures and 1 zoo.", GET_NAME(vict), HESHECAP(vict), HISHER(vict), HISHER(vict), HESHECAP(vict));
			MSGP(vict, 1, "%s played \"Aznuff Grutte Charge\" on you.  You took 20 damage to your wall and 10 damage to your tower.  You also lost 10 creatures and 1 zoo.", GET_NAME(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 33:// Card 33 [MOTHER LOAD] (If quarry < enemy's quarry, +2 quarry, else +1 quarry) -- cost: 8 bricks
		{
			int qadd = 0;
			snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(vict));
			if (my.Query(szQueryText) > 0)
			{
				my.NextRow();
				int vquarry = atoi(my.GetData("Quarry"));

				snprintf(szQueryTextTwo, sizeof(szQueryTextTwo), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(ch));
				if (my.Query(szQueryTextTwo) > 0)
				{
					my.NextRow();
					int chquarry = atoi(my.GetData("Quarry"));

					if (chquarry < vquarry)
						qadd = 2;
					else
						qadd = 1;
																																															//      cTwr    cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt    vTwr    vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
					victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,      0,      0,  qadd,  (-8),     0,     0,     0,     0,      0,      0,     0,     0,     0,     0,     0,     0,      0,      1);
					MSGP(ch, 1, "You played \"Mother Load\" on %s.  You gained %d to your quarry.", GET_NAME(vict), qadd);
					MSGP(vict, 1, "%s played \"Mother Load\" on you.  %s gained %d to %s quarry.", GET_NAME(ch), HESHECAP(ch), qadd, HISHER(ch));
					their_turn(ch, vict, victory);
				}
				else
					MySQL__endquery(My_result);
			}
			else
				MySQL__endquery(My_result);

			MySQL__endquery(My_result);
			return;
		}
		break;
	case 34:// Card 34 [AVOKLITYTH BITE] (6 damage to enemy) -- cost: 8 creatures
	case 85:// Card 85 [AVOKLITYTH BITE] (6 damage to enemy) -- cost: 8 creatures
	case 86:// Card 86 [AVOKLITYTH BITE] (6 damage to enemy) -- cost: 8 creatures
	case 87:// Card 87 [AVOKLITYTH BITE] (6 damage to enemy) -- cost: 8 creatures
		{
			snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(vict));
			if (my.Query(szQueryText) > 0)
			{
				my.NextRow();
				int wall = atoi(my.GetData("Wall")) - 6;
				int tower = atoi(my.GetData("Tower"));
				if (wall < 1)
					tower = wall;
				else
					tower = 0;
																																														//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
				victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     0,     0,     0,     0,     0,     0,  (-8), tower,  (-6),     0,     0,     0,     0,     0,     0,      0,      1);
				MSGP(ch, 1, "You played \"Avoklityth Bite\" on %s.  %s took 6 damage.", GET_NAME(vict), HESHECAP(vict));
				MSGP(vict, 1, "%s played \"Avoklityth Bite\" on you.  You took 6 damage.", GET_NAME(ch));
				their_turn(ch, vict, victory);
			}
			else
				MySQL__endquery(My_result);

			MySQL__endquery(My_result);
			return;
		}
		break;
	case 35:// Card 35 [QUARTZ] (+1 tower, play again) -- cost: 2 gem
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     1,     0,     0,     0,     0,  (-2),     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,      1,      0);
			MSGP(ch, 1, "You played \"Quartz\".  You gained 1 to your tower.");
			MSGP(vict, 1, "%s played \"Quartz\".  %s gained 1 to %s tower.", GET_NAME(ch), HESHECAP(ch), HISHER(ch));
			play_again(ch, vict, victory);
			return;
		}
		break;
	case 36:// Card 36 [SMOKEY QUARTZ] (1 damage to enemy tower, play again) -- cost: 4 gems
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     0,     0,     0,     0,  (-4),     0,     0,  (-1),     0,     0,     0,     0,     0,     0,     0,      1,      0);
			MSGP(ch, 1, "You played \"Smokey Quartz\" on %s.  %s lost 1 to %s tower.", GET_NAME(vict), HESHECAP(vict), HISHER(vict));
			MSGP(vict, 1, "%s played \"Smokey Quartz\" on you.  You lost 1 to your tower.", GET_NAME(ch));
			play_again(ch, vict, victory);
			return;
		}
		break;
	case 37:// Card 37 [NEW EQUIPMENT] (+2 quarry) -- cost: 12 bricks
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     0,     2, (-12),     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"New Equipment\".  You gained 2 to your quarry.");
			MSGP(vict, 1, "%s played \"New Equipment\".  %s gained 2 to %s quarry.", GET_NAME(ch), HESHECAP(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 38:// Card 38 [COPY CAT] (If quarry < enemy's quarry, quarry equals enemy's quarry) -- cost: 10 bricks
		{
			snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(vict));
			if (my.Query(szQueryText) > 0)
			{
				my.NextRow();
				int vquarry = atoi(my.GetData("Quarry"));

				snprintf(szQueryTextTwo, sizeof(szQueryTextTwo), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(ch));
				if (my.Query(szQueryTextTwo) > 0)
				{
					my.NextRow();
					int chquarry = atoi(my.GetData("Quarry"));
					int difference = 0;

					if (chquarry < vquarry)
					{
						chquarry = vquarry;
						difference = (vquarry - chquarry);
					}
					else
						chquarry = 0;
																																															//      cTwr    cWal       cQry   cBrk   cMag   cGem   cZoo   cCrt    vTwr    vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
					victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,      0,      0,  chquarry, (-10),     0,     0,     0,     0,      0,      0,     0,     0,     0,     0,     0,     0,      0,      1);
					MSGP(ch, 1, "You played \"Copy Cat\" on %s.  You gained %d to your quarry.", GET_NAME(vict), difference);
					MSGP(vict, 1, "%s played \"Copy Cat\" on you.  %s gained %d to %s quarry.", GET_NAME(ch), HESHECAP(ch), difference, HISHER(ch));
					their_turn(ch, vict, victory);
				}
				else
					MySQL__endquery(My_result);
			}
			else
				MySQL__endquery(My_result);

			MySQL__endquery(My_result);
			return;
		}
		break;
	case 39:// Card 39 [TOWER GREMLIN] (2 damage to enemy, +4 wall, +2 tower) -- cost: 16 creatures
		{
			snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(vict));
			if (my.Query(szQueryText) > 0)
			{
				my.NextRow();
				int wall = atoi(my.GetData("Wall")) - 2;
				int tower = atoi(my.GetData("Tower"));
				if (wall < 1)
					tower = wall;
				else
					tower = 0;
																																														//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
				victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     2,     4,     0,     0,     0,     0,     0, (-16), tower,  (-2),     0,     0,     0,     0,     0,     0,      0,      1);
				MSGP(ch, 1, "You played \"Tower Gremlin\" on %s.  %s took 2 damage.  You gained 4 to your wall and 2 to your tower.", GET_NAME(vict), HESHECAP(vict));
				MSGP(vict, 1, "%s played \"Tower Gremlin\" on you.  You took 2 damage.  %s gained 4 to %s wall and 2 to % tower.", GET_NAME(ch), GET_NAME(ch), HISHER(ch), HISHER(ch));
				their_turn(ch, vict, victory);
			}
			else
				MySQL__endquery(My_result);

			MySQL__endquery(My_result);
			return;
		}
		break;
	case 40:// Card 40 [LITTLE SNAKES] (4 damage to enemy tower) -- cost: 12 creatures
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     0,     0,     0,     0,     0,     0, (-12),  (-4),     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Little Snakes\" on %s.  %s lost 4 to %s tower.", GET_NAME(vict), HESHECAP(vict), HISHER(vict));
			MSGP(vict, 1, "%s played \"Little Snakes\" on you.  You lost 4 to your tower.", GET_NAME(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 41:// Card 41 [LAVA JEWEL] (+12 tower, 6 damage to all enemies) -- cost: 34 gems
		{
			snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(vict));
			if (my.Query(szQueryText) > 0)
			{
				my.NextRow();
				int wall = atoi(my.GetData("Wall")) - 6;
				int tower = atoi(my.GetData("Tower"));
				if (wall < 1)
					tower = wall;
				else
					tower = 0;
																																														//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
				victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,    12,     0,     0,     0,     0, (-34),     0,     0, tower,  (-6),     0,     0,     0,     0,     0,     0,      0,      1);
				MSGP(ch, 1, "You played \"Lava Jewel\" on %s.  %s took 6 damage.  You gained 12 to your tower.", GET_NAME(vict), HESHECAP(vict));
				MSGP(vict, 1, "%s played \"Lava Jewel\" on you.  You took 2 damage.  %s gained 12 to % tower.", GET_NAME(ch), GET_NAME(ch), HISHER(ch));
				their_turn(ch, vict, victory);
			}
			else
				MySQL__endquery(My_result);

			MySQL__endquery(My_result);
			return;
		}
		break;
	case 42:// Card 42 [EMPATHY GEM] (+8 tower, +1 zoo) -- cost: 28 gems
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     8,     0,     0,     0,     0,  (-28),    1,     0,     0,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Empathy Gem\".  You gained 8 to your tower and 1 to your zoo.");
			MSGP(vict, 1, "%s played \"Empathy Gem\".  %s gained 8 to %s tower and 1 to %s zoo.", GET_NAME(ch), HESHECAP(ch), HISHER(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 43:// Card 43 [STRIP MINE] (-1 quarry, +10 wall, gain 5 gems) -- cost: FREE
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,    10,  (-1),     0,     0,     5,    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Strip Mine\".  You lost 1 to your quarry. You gained 10 to your wall and 5 gems.");
			MSGP(vict, 1, "%s played \"Strip Mine\".  %s lost 1 to %s quarry.  %s gained 10 to %s wall and 5 gems.", GET_NAME(ch), HESHECAP(ch), HISHER(ch), GET_NAME(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 44:// Card 44 [STONE GIANT] (10 damage to enemy, +4 wall) -- cost: 30 creatures
	case 81:// Card 81 [STONE GIANT] (10 damage to enemy, +4 wall) -- cost: 30 creatures
		{
			snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(vict));
			if (my.Query(szQueryText) > 0)
			{
				my.NextRow();
				int wall = atoi(my.GetData("Wall")) - 10;
				int tower = atoi(my.GetData("Tower"));
				if (wall < 1)
					tower = wall;
				else
					tower = 0;
																																														//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
				victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     4,     0,     0,     0,     0,     0, (-30), tower,  (-10),     0,     0,     0,     0,     0,     0,      0,      1);
				MSGP(ch, 1, "You played \"Stone Giant\" on %s.  %s took 10 damage.  You gained 4 to your wall.", GET_NAME(vict), HESHECAP(vict));
				MSGP(vict, 1, "%s played \"Stone Giant\" on you.  You took 10 damage.  %s gained 4 to %s wall.", GET_NAME(ch), GET_NAME(ch), HISHER(ch));
				their_turn(ch, vict, victory);
			}
			else
				MySQL__endquery(My_result);

			MySQL__endquery(My_result);
			return;
		}
		break;
	case 45:// Card 45 [GREAT WALL] (+15 wall) -- cost: 32 bricks
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,    15,     0,  (-32),    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Great Wall\".  You gained 15 to your wall.");
			MSGP(vict, 1, "%s played \"Great Wall\".  %s gained 15 to %s wall.", GET_NAME(ch), HESHECAP(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 46:// Card 46 [Flyche's Revenge] (20 damage to enemy, enemy loses 10 gems, -1 enemy zoo) -- cost: 70 creatures
	case 84:// Card 84 [Flyche's Revenge] (20 damage to enemy, enemy loses 10 gems, -1 enemy zoo) -- cost: 70 creatures
		{
			snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(vict));
			if (my.Query(szQueryText) > 0)
			{
				my.NextRow();
				int wall = atoi(my.GetData("Wall")) - 20;
				int tower = atoi(my.GetData("Tower"));
				if (wall < 1)
					tower = wall;
				else
					tower = 0;
																																														//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
				victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     0,     0,     0,     0,     0,     0, (-70), tower,  (-20),    0,     0,     0, (-10),  (-1),     0,      0,      1);
				MSGP(ch, 1, "You played \"Flyche's Revenge\" on %s.  %s took 20 damage and lost 10 gems.  %s also lost 1 to %s zoo.", GET_NAME(vict), HESHECAP(vict), HESHECAP(vict), HISHER(vict));
				MSGP(vict, 1, "%s played \"Flyche's Revenge\" on you.  You took 20 damage and lost 10 gems.  You also lost 1 to your zoo.", GET_NAME(ch));
				their_turn(ch, vict, victory);
			}
			else
				MySQL__endquery(My_result);

			MySQL__endquery(My_result);
			return;
		}
		break;
	case 47:// Card 47 [FOCUSED DESIGNS] (+8 wall, +5 tower) -- cost: 30 bricks
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     5,     8,     0,  (-30),    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Focused Designs\".  You gained 8 to your wall and 5 to your tower.");
			MSGP(vict, 1, "%s played \"Focused Designs\".  %s gained 8 to %s wall and 5 to %s tower.", GET_NAME(ch), HESHECAP(ch), HISHER(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 48:// Card 48 [HEAVY STORMS] (4 damage to enemy, lose 3 gems) -- cost: 4 creatures
	case 82:// Card 82 [HEAVY STORMS] (4 damage to enemy, lose 3 gems) -- cost: 4 creatures
	case 83:// Card 83 [HEAVY STORMS] (4 damage to enemy, lose 3 gems) -- cost: 4 creatures
		{
			snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(vict));
			if (my.Query(szQueryText) > 0)
			{
				my.NextRow();
				int wall = atoi(my.GetData("Wall")) - 4;
				int tower = atoi(my.GetData("Tower"));
				if (wall < 1)
					tower = wall;
				else
					tower = 0;
																																														//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
				victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     0,     0,     0,     0,  (-3),     0,  (-4), tower,  (-4),     0,     0,     0,     0,     0,     0,      0,      1);
				MSGP(ch, 1, "You played \"Heavy Storms\" on %s.  %s took 4 damage, and you lost 3 gems.", GET_NAME(vict), HESHECAP(vict));
				MSGP(vict, 1, "%s played \"Heavy Storms\" on you.  You took 4 damage, and %s lost 3 gems.", GET_NAME(ch), GET_NAME(ch));
				their_turn(ch, vict, victory);
			}
			else
				MySQL__endquery(My_result);

			MySQL__endquery(My_result);
			return;
		}
		break;
	case 49:// Card 49 [BASIC WALL] (+3 wall) -- cost: 4 bricks
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     3,     0,   (-4),    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Basic Wall\".  You gained 3 to your wall.");
			MSGP(vict, 1, "%s played \"Basic Wall\".  %s gained 3 to %s wall.", GET_NAME(ch), HESHECAP(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 50:// Card 50 [WORK OVERTIME] (+5 wall, lose 6 gems) -- cost: 4 bricks
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,    5,      0,   (-4),    0,  (-6),     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Work Overtime\".  You gained 5 to your wall and lost 6 gems.");
			MSGP(vict, 1, "%s played \"Work Overtime\".  %s gained 3 to %s wall and lost 6 gems.", GET_NAME(ch), HESHECAP(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 51:// Card 51 [SLASHER] (6 damage to enemy) -- cost: 10 creatures
		{
			snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(vict));
			if (my.Query(szQueryText) > 0)
			{
				my.NextRow();
				int wall = atoi(my.GetData("Wall")) - 6;
				int tower = atoi(my.GetData("Tower"));
				if (wall < 1)
					tower = wall;
				else
					tower = 0;
																																														//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
				victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     0,     0,     0,     0,     0,     0, (-10), tower,  (-6),     0,     0,     0,     0,     0,     0,      0,      1);
				MSGP(ch, 1, "You played \"Slasher\" on %s.  %s took 6 damage.", GET_NAME(vict), HESHECAP(vict));
				MSGP(vict, 1, "%s played \"Slasher\" on you.  You took 6 damage.", GET_NAME(ch));
				their_turn(ch, vict, victory);
			}
			else
				MySQL__endquery(My_result);

			MySQL__endquery(My_result);
			return;
		}
		break;
	case 52:// Card 52 [QUARRY'S HELP] (+7 tower, lose 10 bricks) -- cost: 8 gems
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     7,    0,      0,  (-10),    0,  (-8),     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Quarry's Help\".  You gained 7 to your tower and lost 10 bricks.");
			MSGP(vict, 1, "%s played \"Quarry's Help\".  %s gained 7 to %s tower and lost 10 bricks.", GET_NAME(ch), HESHECAP(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 53:// Card 53 [LANDSLIDE] (-1 enemy quarry) -- cost: 8 bricks
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,    0,      0,  (-8),    0,      0,     0,     0,     0,     0,  (-1),     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Landslide\" on %s.  %s lost 1 to %s quarry.", GET_NAME(vict), HESHECAP(vict), HISHER(vict));
			MSGP(vict, 1, "%s played \"Landslide\" on you.  You lost 1 to your quarry.", GET_NAME(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 54:// Card 54 [SOLAR FLARE] (+2 tower, -2 enemy tower) -- cost: 12 gems
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     2,    0,      0,     0,    0,  (-12),     0,     0,  (-2),     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Solar Flare\" on %s.  %s lost 2 to %s tower.  You gained 2 to your tower.", GET_NAME(vict), HESHECAP(vict), HISHER(vict));
			MSGP(vict, 1, "%s played \"Solar Flare\" on you.  You lost 2 to your tower.  %s gained 2 to %s tower.", GET_NAME(ch), GET_NAME(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 55:// Card 55 [RUBY] (+5 tower) -- cost: 6 gems
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     5,     0,     0,     0,    0,   (-6),     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Ruby\".  You gained 5 to your tower.");
			MSGP(vict, 1, "%s played \"Ruby\".  %s gained 5 to %s tower.", GET_NAME(ch), HESHECAP(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 56:// Card 56 [PEARL OF WISDOM] (+5 tower, +1 magic) -- cost: 18 gems
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     5,     0,     0,     0,    1,  (-18),     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Pearl Of Wisdom\".  You gained 5 to your tower and 1 magic.");
			MSGP(vict, 1, "%s played \"Pearl Of Wisdom\".  %s gained 5 to %s tower and 1 magic.", GET_NAME(ch), HESHECAP(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 57:// Card 57 [NASTY STING] (10 damage to enemy, enemy loses 5 creatures, -1 enemy zoo) -- cost: 34 creatures
		{
			snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(vict));
			if (my.Query(szQueryText) > 0)
			{
				my.NextRow();
				int wall = atoi(my.GetData("Wall")) - 10;
				int tower = atoi(my.GetData("Tower"));
				if (wall < 1)
					tower = wall;
				else
					tower = 0;
																																														//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
				victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     0,     0,     0,     0,     0,     0, (-34), tower, (-10),     0,     0,     0,     0,  (-1),  (-5),      0,      1);
				MSGP(ch, 1, "You played \"Nasty Sting\" on %s.  %s took 10 damage, lost 5 creatures and 1 zoo.", GET_NAME(vict), HESHECAP(vict));
				MSGP(vict, 1, "%s played \"Nasty Sting\" on you.  You took 10 damage, lost 5 creatures and 1 zoo.", GET_NAME(ch));
				their_turn(ch, vict, victory);
			}
			else
				MySQL__endquery(My_result);

			MySQL__endquery(My_result);
			return;
		}
		break;
	case 58:// Card 58 [HARMONIC ORE] (+6 wall, +3 tower) -- cost: 22 bricks
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     3,     6,     0,  (-22),    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Harmonic Ore\".  You gained 3 to your tower and 6 to your wall.");
			MSGP(vict, 1, "%s played \"Harmonic Ore\".  %s gained 3 to %s tower and 6 to %s wall.", GET_NAME(ch), HESHECAP(ch), HISHER(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 59:// Card 59 [HARMONIC VIBE] (+1 magic, +3 tower, +3 wall) -- cost: 30 gems
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     3,     3,     0,     0,    1,  (-30),     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Harmonic Vibe\".  You gained 3 to your tower and wall, and gained 1 magic.");
			MSGP(vict, 1, "%s played \"Harmonic Vibe\".  %s gained 3 to %s tower and wall, and gained 1 magic.", GET_NAME(ch), HESHECAP(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 60:// Card 60 [HOLY GROUND] (+1 wall, play again) -- cost: 2 brick
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     1,     0,   (-2),    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,      1,      0);
			MSGP(ch, 1, "You played \"Holy Ground\".  You gained 1 to your wall.");
			MSGP(vict, 1, "%s played \"Holy Ground\".  %s gained 1 to %s wall", GET_NAME(ch), HESHECAP(ch), HISHER(ch));
			play_again(ch, vict, victory);
			return;
		}
		break;
	case 61:// Card 61 [PROTECTION'S PRIDE] (+11 tower, -11 wall) -- cost: 22 gems
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,    11, (-11),     0,     0,    0,  (-22),     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Protection's Pride\".  You gained 11 to your tower and lost 11 to your wall.");
			MSGP(vict, 1, "%s played \"Protection's Pride\".  %s gained 11 to %s tower and lost 11 to %s wall.", GET_NAME(ch), HESHECAP(ch), HISHER(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 62:// Card 62 [GEM SPEAR] (5 damage to enemy tower) -- cost: 8 gems
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     0,     0,     0,    0,   (-8),     0,     0,  (-5),     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Gem Spear\" on %s.  %s took 5 damage to % tower.", GET_NAME(vict), HESHECAP(vict), HISHER(vict));
			MSGP(vict, 1, "%s played \"Gem Spear\" on you.  You took 5 damage to your tower.", GET_NAME(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 63:// Card 63 [SPELL WEAVERS] (+1 magic) -- cost: 6 gems
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     0,     0,     0,    1,   (-6),     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Spell Weavers\".  You gained 1 magic.");
			MSGP(vict, 1, "%s played \"Spell Weavers\".  %s gained 1 magic.", GET_NAME(ch), GET_NAME(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 64:// Card 64 [BRICK SHORTAGE] (All players lose 8 bricks) -- cost: FREE
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     0,     0,  (-8),    0,      0,     0,     0,     0,     0,     0,  (-8),     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Brick Shortage\".  All players lose 8 bricks.");
			MSGP(vict, 1, "%s played \"Brick Shortage\".  All players lose 8 bricks.", GET_NAME(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 65:// Card 65 [DISEASE] (All players lose 6 creatures) -- cost: FREE
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     0,     0,     0,    0,      0,     0,  (-6),     0,     0,     0,     0,     0,     0,     0,  (-6),      0,      1);
			MSGP(ch, 1, "You played \"Disease\".  All players lose 6 creatures.");
			MSGP(vict, 1, "%s played \"Disease\".  All players lose 6 creatures.", GET_NAME(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 66:// Card 66 [O'KTAVISH MINERS] (+4 wall, +1 quarry) -- cost: 14 bricks
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     4,     1,  (-14),    0,      0,     0,    0,     0,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"O'ktavish Miners\".  You gained 4 to your wall and 1 to your quarry.");
			MSGP(vict, 1, "%s played \"O'ktavish Miners\".  %s gained 4 to %s wall and 1 to %s quarry.", GET_NAME(ch), HESHECAP(ch), HISHER(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 67:// Card 67 [SANCTUARY] (+10 tower, +5 wall, gain 5 creatures) -- cost: 30 gems
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,    10,     5,     0,     0,    0,   (-30),    0,     5,     0,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Sanctuary\".  You gained 10 to your tower, 5 to your wall, and 5 creatures.");
			MSGP(vict, 1, "%s played \"Sanctuary\".  %s gained 10 to %s tower, 5 to %s wall, and 5 creatures.", GET_NAME(ch), HESHECAP(ch), HISHER(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 68:// Card 68 [OLGIC'S KEY] (+20 tower) -- cost: 50 gems
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,    20,     0,     0,     0,    0,   (-50),    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Olgic's Key\".  You gained 20 to your tower.");
			MSGP(vict, 1, "%s played \"Olgic's Key\".  %s gained 20 to %s tower.", GET_NAME(ch), HESHECAP(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 69:// Card 69 [FULL MOON] (+1 all players' zoo, you gain 3 creatures) -- cost: FREE
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     0,     0,     0,    0,      0,     1,     3,     0,     0,     0,     0,     0,     0,     1,     0,      0,      1);
			MSGP(ch, 1, "You played \"Full Moon\".  All players gained 1 to their zoo.  You gained 3 creatures.");
			MSGP(vict, 1, "%s played \"Full Moon\".  All players gained 1 to their zoo.  %s gained 3 creatures.", GET_NAME(ch), GET_NAME(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 70:// Card 70 [Elemental Chaos] (20 damage to all players, -2 quarry all players, -10 bricks all players) -- cost: 100 bricks
	case 90:// Card 90 [Elemental Chaos] (20 damage to all players, -2 quarry all players, -10 bricks all players) -- cost: 100 bricks
		{
			snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(vict));
			if (my.Query(szQueryText) > 0)
			{
				my.NextRow();
				int vwall = atoi(my.GetData("Wall")) - 20;
				int vtower = atoi(my.GetData("Tower"));
				if (vwall < 1)
					vtower = vwall;
				else
					vtower = 0;

				snprintf(szQueryTextTwo, sizeof(szQueryTextTwo), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(ch));
				if (my.Query(szQueryTextTwo) > 0)
				{
					my.NextRow();
					int chwall = atoi(my.GetData("Wall")) - 20;
					int chtower = atoi(my.GetData("Tower"));
					if (chwall < 1)
						chtower = chwall;
					else
						chtower = 0;
																																															//        cTwr    cWal   cQry   cBrk   cMag   cGem   cZoo  cCrt     vTwr  vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
					victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,  chtower,  (-20),  (-2), (-110),    0,     0,     0,    0,  vtower, (-20), (-2), (-10),     0,     0,     0,     0,      0,      1);
					MSGP(ch, 1, "You played \"Elemental Chaos\".  All players took 20 damage, lost 2 to their quarry, and lost 10 bricks.");
					MSGP(vict, 1, "%s played \"Elemental Chaos\".  All players took 20 damage, lost 2 to their quarry, and lost 10 bricks.", GET_NAME(ch));
					their_turn(ch, vict, victory);
				}
				else
					MySQL__endquery(My_result);
			}
			else
				MySQL__endquery(My_result);

			MySQL__endquery(My_result);
			return;
		}
		break;
	case 71:// Card 71 [LUCKY CACHE] (gain 2 bricks, gain 2 gems, play again) -- cost: FREE
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     0,     0,     2,    0,      2,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,      1,      0);
			MSGP(ch, 1, "You played \"Lucky Cache\".  You gained 2 bricks and 2 gems.");
			MSGP(vict, 1, "%s played \"Lucky Cache\".  %s gained 2 bricks and 2 gems.", GET_NAME(ch), HESHECAP(ch));
			play_again(ch, vict, victory);
			return;
		}
		break;
	case 72:// Card 72 [ROCK LAUNCHER] (+6 wall, 10 damage to enemy) -- cost: 36 bricks
	case 91:// Card 91 [ROCK LAUNCHER] (+6 wall, 10 damage to enemy) -- cost: 36 bricks
		{
			snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(vict));
			if (my.Query(szQueryText) > 0)
			{
				my.NextRow();
				int wall = atoi(my.GetData("Wall")) - 10;
				int tower = atoi(my.GetData("Tower"));
				if (wall < 1)
					tower = wall;
				else
					tower = 0;
																																														//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
				victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     6,     0,  (-36),     0,     0,     0,    0, tower, (-10),     0,     0,     0,     0,     0,     0,      0,      1);
				MSGP(ch, 1, "You played \"Rock Launcher\" on %s.  %s took 10 damage.  You gained 6 to your wall.", GET_NAME(vict), HESHECAP(vict));
				MSGP(vict, 1, "%s played \"Rock Launcher\" on you.  You took 10 damage.  %s gained 6 to %s wall.", GET_NAME(ch), GET_NAME(ch), HISHER(ch));
				their_turn(ch, vict, victory);
			}
			else
				MySQL__endquery(My_result);

			MySQL__endquery(My_result);
			return;
		}
		break;
	case 73:// Card 73 [MONDO WALL] (+12 wall) -- cost: 26 bricks
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,    12,     0,  (-26),    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Mondo Wall\".  You gained 12 to your wall.");
			MSGP(vict, 1, "%s played \"Mondo Wall\".  %s gained 12 to %s wall.", GET_NAME(ch), HESHECAP(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 74:// Card 74 [STURDY WALL] (+4 wall) -- cost: 6 bricks
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     4,     0,   (-6),    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Sturdy Wall\".  You gained 4 to your wall.");
			MSGP(vict, 1, "%s played \"Sturdy Wall\".  %s gained 4 to %s wall.", GET_NAME(ch), HESHECAP(ch), HISHER(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 75:// Card 75 [RABID SHEEP] (6 damage to enemy, enemy loses 3 creatures) -- cost: 12 creatures
	case 88:// Card 88 [RABID SHEEP] (6 damage to enemy, enemy loses 3 creatures) -- cost: 12 creatures
	case 89:// Card 89 [RABID SHEEP] (6 damage to enemy, enemy loses 3 creatures) -- cost: 12 creatures
		{
			snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(vict));
			if (my.Query(szQueryText) > 0)
			{
				my.NextRow();
				int wall = atoi(my.GetData("Wall")) - 6;
				int tower = atoi(my.GetData("Tower"));
				if (wall < 1)
					tower = wall;
				else
					tower = 0;
																																														//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
				victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     0,     0,     0,     0,     0,     0, (-12), tower,  (-6),     0,     0,     0,     0,     0,  (-3),      0,      1);
				MSGP(ch, 1, "You played \"Rabid Sheep\" on %s.  %s took 6 damage and lost 3 creatures.", GET_NAME(vict), HESHECAP(vict));
				MSGP(vict, 1, "%s played \"Rabid Sheep\" on you.  You took 6 damage and lost 3 creatures.", GET_NAME(ch));
				their_turn(ch, vict, victory);
			}
			else
				MySQL__endquery(My_result);

			MySQL__endquery(My_result);
			return;
		}
		break;
	case 76:// Card 76 [HIDDEN TREASURE] (+1 magic, play again) -- cost: 16 gems
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     0,     0,     0,    1,   (-16),    0,     0,     0,     0,     0,     0,     0,     0,     0,     0,      1,      0);
			MSGP(ch, 1, "You played \"Hidden Treasure\".  You gained 1 magic.");
			MSGP(vict, 1, "%s played \"Hidden Treasure\".  %s gained 1 magic.", GET_NAME(ch), HESHECAP(ch));
			play_again(ch, vict, victory);
			return;
		}
		break;
	case 77:// Card 77 [GEMSTONE FLAW] (3 damage to enemy tower) -- cost: 4 gems
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     0,     0,     0,    0,   (-4),     0,     0,  (-3),     0,     0,     0,     0,     0,     0,     0,      0,      1);
			MSGP(ch, 1, "You played \"Gemstone Flaw\" on %s.  %s took 3 damage to % tower.", GET_NAME(vict), HESHECAP(vict), HISHER(vict));
			MSGP(vict, 1, "%s played \"Gemstone Flaw\" on you.  You took 3 damage to your tower.", GET_NAME(ch));
			their_turn(ch, vict, victory);
			return;
		}
		break;
	case 78:// Card 78 [Ul-Garrian's Wrath] (25 damage to enemy tower if 50 or higher, play again) -- cost: 100 gems
		{
			snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(vict));
			if (my.Query(szQueryText) > 0)
			{
				my.NextRow();
				int tower = atoi(my.GetData("Tower"));
				if (tower >= 50)
					tower = (-25);
				else
					tower = 0;
																																														//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
				victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     0,     0,     0,     0, (-100),     0,    0, tower,     0,     0,     0,     0,     0,     0,     0,      1,      0);

				if (tower == 0)
				{
					MSGP(ch, 1, "You played \"Ul-Garrian's Wrath\" on %s.  %s took no damage because %s tower was below 50.", GET_NAME(vict), HESHECAP(vict), HISHER(vict));
					MSGP(vict, 1, "%s played \"Ul-Garrian's Wrath\" on you.  You took no damage because your tower was below 50.", GET_NAME(ch));
				}
				else
				{
					MSGP(ch, 1, "You played \"Ul-Garrian's Wrath\" on %s.  %s took 25 damage to %s tower.", GET_NAME(vict), HESHECAP(vict), HISHER(vict));
					MSGP(vict, 1, "%s played \"Ul-Garrian's Wrath\" on you.  You took 25 damage to your tower.", GET_NAME(ch));
				}
				play_again(ch, vict, victory);
			}
			else
				MySQL__endquery(My_result);

			MySQL__endquery(My_result);
			return;
		}
		break;
	case 79:// Card 79 [CRYSTAL CONSTRUCT] (gain 20 gems and 20 bricks, play again) -- cost: 100 creatures
		{																																											//     cTwr   cWal   cQry   cBrk   cMag   cGem   cZoo   cCrt   vTwr   vWal   vQry   vBrk   vMag   vGem   vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     0,     0,    20,    0,     20,     0, (-100),     0,     0,     0,     0,     0,     0,     0,     0,      1,      0);
			MSGP(ch, 1, "You played \"Crystal Construct\".  You gained 20 gems and 20 bricks.");
			MSGP(vict, 1, "%s played \"Crystal Construct\".  %s gained 20 gems and 20 bricks.", GET_NAME(ch), HESHECAP(ch));
			play_again(ch, vict, victory);
			return;
		}
		break;
	case 80:// Card 80 [XIAIX'S SORROW] (set all generator levels of all players to 2, play again) -- cost: 100 bricks
		{																																											//     cTwr   cWal    cQry   cBrk     cMag  cGem    cZoo   cCrt   vTwr   vWal    vQry   vBrk    vMag   vGem    vZoo   vCrt   cTurn   vTurn
			victory = perform_play_the_cards(ch, vict, GameID, Cardx, vAddFromQuarry, vAddFromMagic, vAddFromZoo, chAddFromQuarry, chAddFromMagic, chAddFromZoo, chGameScore, vGameScore,     0,     0, _RESET, (-100), _RESET,   20, _RESET,     0,     0,     0, _RESET,     0, _RESET,     0, _RESET,     0,      1,      0);
			MSGP(ch, 1, "You played \"Xiaix's Sorrow\".  All generators (quarry, magic, zoo) have been reset to 2.");
			MSGP(vict, 1, "%s played \"Xiaix's Sorrow\".  All generators (quarry, magic, zoo) have been reset to 2.", GET_NAME(ch));
			play_again(ch, vict, victory);
			return;
		}
		break;

	default:
		MSGP(ch, 1, "For some reason, the card that you chose has not been coded yet.  Please REPORT this.");
		return;
		break;
	}
	return;
}


int perform_play_the_cards(struct char_data *ch, struct char_data *vict, int GameID, char *Cardx, int vAddFromQuarry, int vAddFromMagic, int vAddFromZoo, int chAddFromQuarry, int chAddFromMagic, int chAddFromZoo, int chGameScore, int vGameScore, int chAdjTower, int chAdjWall, int chAdjQuarry, int chAdjBricks, int chAdjMagic, int chAdjGems, int chAdjZoo, int chAdjCreatures, int vAdjTower, int vAdjWall, int vAdjQuarry, int vAdjBricks, int vAdjMagic, int vAdjGems, int vAdjZoo, int vAdjCreatures, int chAdjCurrentTurn, int vAdjCurrentTurn)
{
	MySQL my;
	char szQueryText[700];
	char szUpdateText[700];
	char szUpdateScore[700];
	char szReplaceCard[700];
	char szDeletePlayerEntry[700];
	MYSQL_RES *My_result = NULL;
	int new_card = rand_number(1, 116);
	bool WIN = FALSE;


	// Update Player
	snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(ch));
	if (my.Query(szQueryText) > 0)
	{
		my.NextRow();
		int chtower = atoi(my.GetData("Tower")) + chAdjTower;
		if (chtower < 1)
			chtower = 0;
		int chwall = atoi(my.GetData("Wall")) + chAdjWall;
		if (chwall < 1)
			chwall = 0;
		int chquarry = atoi(my.GetData("Quarry")) + chAdjQuarry;
		if (chquarry < 1 && chAdjQuarry != _RESET)
			chquarry = 0;
		if (chquarry < 1 && chAdjQuarry == _RESET)
			chquarry = 2;
		int chbricks = atoi(my.GetData("Bricks")) + chAdjBricks;
		if (chbricks < 1)
			chbricks = 0;
		int chmagic = atoi(my.GetData("Magic")) + chAdjMagic;
		if (chmagic < 1 && chAdjMagic != _RESET)
			chmagic = 0;
		if (chmagic < 1 && chAdjMagic == _RESET)
			chmagic = 2;
		int chgems = atoi(my.GetData("Gems")) + chAdjGems;
		if (chgems < 1)
			chgems = 0;
		int chzoo = atoi(my.GetData("Zoo")) + chAdjZoo;
		if (chzoo < 1 && chAdjZoo != _RESET)
			chzoo = 0;
		if (chzoo < 1 && chAdjZoo == _RESET)
			chzoo = 2;
		int chcreatures = atoi(my.GetData("Creatures")) + chAdjCreatures;
		if (chcreatures < 1)
			chcreatures = 0;
		snprintf(szUpdateText, sizeof(szUpdateText), "UPDATE defined_database.alcazar_players SET Tower = '%d', Wall = '%d', Quarry = '%d', Bricks = '%d', Magic = '%d', Gems = '%d', Zoo = '%d', Creatures = '%d', CurrentTurn = '%d' WHERE GameID = '%d' AND PlayerID = '%d'", chtower, chwall, chquarry, chbricks, chmagic, chgems, chzoo, chcreatures, chAdjCurrentTurn, GameID, GET_PLR_ID(ch));
		My_result = MySQL__query(szUpdateText);

		if (Cardx != "CARD_PASS")
		{
			snprintf(szReplaceCard, sizeof(szReplaceCard), "UPDATE defined_database.alcazar_players SET %s = '%d' WHERE GameID = '%d' AND PlayerID = '%d'", Cardx, new_card, GameID, GET_PLR_ID(ch));
			My_result = MySQL__query(szReplaceCard);
		}

		snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(ch));
		if (my.Query(szQueryText) > 0)
		{
			my.NextRow();
			int chbricks = atoi(my.GetData("Bricks")) + chAddFromQuarry;
			int chgems = atoi(my.GetData("Gems")) + chAddFromMagic;
			int chcreatures = atoi(my.GetData("Creatures")) + chAddFromZoo;
			snprintf(szUpdateText, sizeof(szUpdateText), "UPDATE defined_database.alcazar_players SET Bricks = '%d', Gems = '%d', Creatures = '%d' WHERE GameID = '%d' AND PlayerID = '%d'", chbricks, chgems, chcreatures, GameID, GET_PLR_ID(ch));
			My_result = MySQL__query(szUpdateText);
		}

		// Has victim won by the player knocking down his own tower?
		if (chtower < 1)
		{
			MSGP(vict, 1, "YOU WIN !  %s's Tower went down to %d!", GET_NAME(ch), chtower);
			MSGP(ch, 1, "%s WINS !  Your Tower went down to %d!", GET_NAME(vict), chtower);
			WIN = TRUE;
		}
		// Has the player won ?
		if (chtower >= TOWER_WIN)
		{
			MSGP(ch, 1, "YOU WIN !  Your Tower is %d.", chtower);
			MSGP(vict, 1, "%s WINS !  %s Tower is %d.", GET_NAME(ch), HISHERCAP(ch), chtower);
			WIN = TRUE;
		}
		if (chbricks >= BRICKS_WIN)
		{
			MSGP(ch, 1, "YOU WIN !  You have %d bricks.", chbricks);
			MSGP(vict, 1, "%s WINS !  %s has %d bricks.", GET_NAME(ch), HISHERCAP(ch), chbricks);
			WIN = TRUE;
		}
		if (chgems >= GEMS_WIN)
		{
			MSGP(ch, 1, "YOU WIN !  You have %d gems.", chgems);
			MSGP(vict, 1, "%s WINS !  %s has %d gems.", GET_NAME(ch), HISHERCAP(ch), chgems);
			WIN = TRUE;
		}
		if (chcreatures >= CREATURES_WIN)
		{
			MSGP(ch, 1, "YOU WIN !  You have %d creatures.", chcreatures);
			MSGP(vict, 1, "%s WINS !  %s has %d creatures.", GET_NAME(ch), HISHERCAP(ch), chcreatures);
			WIN = TRUE;
		}
		if (WIN == TRUE)
		{
			// Put the ch's score into the Alcazar Scores table
			snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_scores WHERE PlayerID = '%d' AND PlayerName = \"%s\"", GET_PLR_ID(ch), GET_NAME(ch));
			My_result = MySQL__query(szQueryText);

			if (my.Query(szQueryText) > 0)
			{
				my.NextRow();
				int chTempScore = atoi(my.GetData("Score"));

				if (chGameScore > chTempScore)
				{
					snprintf(szUpdateScore, sizeof(szUpdateScore), "UPDATE defined_database.alcazar_scores SET Score = '%d' WHERE PlayerID = '%d' AND PlayerName = \"%s\"", chGameScore, GET_PLR_ID(ch), GET_NAME(ch));
					My_result = MySQL__query(szUpdateScore);
				}
			}
			else
			{
				snprintf(szUpdateScore, sizeof(szUpdateScore), "INSERT INTO defined_database.alcazar_scores (PlayerID, PlayerName, Score, Roster) VALUES ('%d', \"%s\", '%d', 1)", GET_PLR_ID(ch), GET_NAME(ch), chGameScore);
				My_result = MySQL__query(szUpdateScore);
			}

			// Put the vict's score into the Alcazar Scores table
			snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_scores WHERE PlayerID = '%d' AND PlayerName = \"%s\"", GET_PLR_ID(vict), GET_NAME(vict));
			My_result = MySQL__query(szQueryText);

			if (my.Query(szQueryText) > 0)
			{
				my.NextRow();
				int vTempScore = atoi(my.GetData("Score"));

				if (vGameScore > vTempScore)
				{
					snprintf(szUpdateScore, sizeof(szUpdateScore), "UPDATE defined_database.alcazar_scores SET Score = '%d' WHERE PlayerID = '%d' AND PlayerName = \"%s\"", vGameScore, GET_PLR_ID(vict), GET_NAME(vict));
					My_result = MySQL__query(szUpdateScore);
				}
			}
			else
			{
				snprintf(szUpdateScore, sizeof(szUpdateScore), "INSERT INTO defined_database.alcazar_scores (PlayerID, PlayerName, Score, Roster) VALUES ('%d', \"%s\", '%d', 1)", GET_PLR_ID(vict), GET_NAME(vict), vGameScore);
				My_result = MySQL__query(szUpdateScore);
			}

			MSGP(ch, 1, "Your final score for this game was: %d", chGameScore);
			MSGP(ch, 1, "%s's final score for this game was: %d", GET_NAME(vict), vGameScore);
			MSGP(vict, 1, "Your final score for this game was: %d", vGameScore);
			MSGP(vict, 1, "%s's final score for this game was: %d", GET_NAME(ch), chGameScore);

			// Delete the game for both players
			snprintf(szDeletePlayerEntry, sizeof(szDeletePlayerEntry), "DELETE FROM defined_database.alcazar_players WHERE GameID = '%d'", GameID);
			My_result = MySQL__query(szDeletePlayerEntry);
			MySQL__endquery(My_result);

			if (PLR_FLAGGED(ch, PLR_PLAYING_ALCAZAR))
				REMOVE_BIT(PLR_FLAGS(ch), PLR_PLAYING_ALCAZAR);
			if (PLR_FLAGGED(vict, PLR_PLAYING_ALCAZAR))
				REMOVE_BIT(PLR_FLAGS(vict), PLR_PLAYING_ALCAZAR);
			return (ALCAZAR_VICTORY);
		}
	}
	else
	{
		MySQL__endquery(My_result);
		return (NULL);
	}

	// Update Victim
	snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(vict));
	if (my.Query(szQueryText) > 0)
	{
		my.NextRow();
		int vtower = atoi(my.GetData("Tower")) + vAdjTower;
		if (vtower < 1)
			vtower = 0;
		int vwall = atoi(my.GetData("Wall")) + vAdjWall;
		if (vwall < 1)
			vwall = 0;
		int vquarry = atoi(my.GetData("Quarry")) + vAdjQuarry;
		if (vquarry < 1 && vAdjQuarry != _RESET)
			vquarry = 0;
		if (vquarry < 1 && vAdjQuarry == _RESET)
			vquarry = 2;
		int vbricks = atoi(my.GetData("Bricks")) + vAdjBricks;
		if (vbricks < 1)
			vbricks = 0;
		int vmagic = atoi(my.GetData("Magic")) + vAdjMagic;
		if (vmagic < 1 && vAdjMagic != _RESET)
			vmagic = 0;
		if (vmagic < 1 && vAdjMagic == _RESET)
			vmagic = 2;
		int vgems = atoi(my.GetData("Gems")) + vAdjGems;
		if (vgems < 1)
			vgems = 0;
		int vzoo = atoi(my.GetData("Zoo")) + vAdjZoo;
		if (vzoo < 1 && vAdjZoo != _RESET)
			vzoo = 0;
		if (vzoo < 1 && vAdjZoo == _RESET)
			vzoo = 2;
		int vcreatures = atoi(my.GetData("Creatures")) + vAdjCreatures;
		if (vcreatures < 1)
			vcreatures = 0;
		snprintf(szUpdateText, sizeof(szUpdateText), "UPDATE defined_database.alcazar_players SET Tower = '%d', Wall = '%d', Quarry = '%d', Bricks = '%d', Magic = '%d', Gems = '%d', Zoo = '%d', Creatures = '%d', CurrentTurn = '%d'  WHERE GameID = '%d' AND PlayerID = '%d'", vtower, vwall, vquarry, vbricks, vmagic, vgems, vzoo, vcreatures, vAdjCurrentTurn, GameID, GET_PLR_ID(vict));
		My_result = MySQL__query(szUpdateText);

		snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", GameID, GET_PLR_ID(vict));
		if (my.Query(szQueryText) > 0)
		{
			my.NextRow();
			int vbricks = atoi(my.GetData("Bricks")) + vAddFromQuarry;
			int vgems = atoi(my.GetData("Gems")) + vAddFromMagic;
			int vcreatures = atoi(my.GetData("Creatures")) + vAddFromZoo;
			snprintf(szUpdateText, sizeof(szUpdateText), "UPDATE defined_database.alcazar_players SET Bricks = '%d', Gems = '%d', Creatures = '%d' WHERE GameID = '%d' AND PlayerID = '%d'", vbricks, vgems, vcreatures, GameID, GET_PLR_ID(vict));
			My_result = MySQL__query(szUpdateText);
		}
		// Has player won by victim's tower going down?
		if (vtower < 1)
		{
			MSGP(ch, 1, "YOU WIN !  %s's Tower went down to %d!", GET_NAME(vict), vtower);
			MSGP(vict, 1, "%s WINS !  Your Tower went down to %d!", GET_NAME(ch), vtower);
			WIN = TRUE;
		}
		// Has the victim won ?
		if (vtower >= TOWER_WIN)
		{
			MSGP(vict, 1, "YOU WIN !  Your Tower is %d.", vtower);
			MSGP(ch, 1, "%s WINS !  %s Tower is %d.", GET_NAME(vict), HISHERCAP(vict), vtower);
			WIN = TRUE;
		}
		if (vbricks >= BRICKS_WIN)
		{
			MSGP(vict, 1, "YOU WIN !  You have %d bricks.", vbricks);
			MSGP(ch, 1, "%s WINS !  %s has %d bricks.", GET_NAME(vict), HISHERCAP(vict), vbricks);
			WIN = TRUE;
		}
		if (vgems >= GEMS_WIN)
		{
			MSGP(ch, 1, "YOU WIN !  You have %d gems.", vgems);
			MSGP(vict, 1, "%s WINS !  %s has %d gems.", GET_NAME(vict), HISHERCAP(vict), vgems);
			WIN = TRUE;
		}
		if (vcreatures >= CREATURES_WIN)
		{
			MSGP(vict, 1, "YOU WIN !  You have %d creatures.", vcreatures);
			MSGP(ch, 1, "%s WINS !  %s has %d creatures.", GET_NAME(vict), HISHERCAP(vict), vcreatures);
			WIN = TRUE;
		}
		if (WIN == TRUE)
		{
			// Put the vict's score into the Alcazar Scores table
			snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_scores WHERE PlayerID = '%d' AND PlayerName = \"%s\"", GET_PLR_ID(vict), GET_NAME(vict));
			My_result = MySQL__query(szQueryText);

			if (my.Query(szQueryText) > 0)
			{
				my.NextRow();
				int vTempScore = atoi(my.GetData("Score"));

				if (vGameScore > vTempScore)
				{
					snprintf(szUpdateScore, sizeof(szUpdateScore), "UPDATE defined_database.alcazar_scores SET Score = '%d' WHERE PlayerID = '%d' AND PlayerName = \"%s\"", vGameScore, GET_PLR_ID(vict), GET_NAME(vict));
					My_result = MySQL__query(szUpdateScore);
				}
			}
			else
			{
				snprintf(szUpdateScore, sizeof(szUpdateScore), "INSERT INTO defined_database.alcazar_scores (PlayerID, PlayerName, Score, Roster) VALUES ('%d', \"%s\", '%d', 1)", GET_PLR_ID(vict), GET_NAME(vict), vGameScore);
				My_result = MySQL__query(szUpdateScore);
			}

			// Put the ch's score into the Alcazar Scores table
			snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_scores WHERE PlayerID = '%d' AND PlayerName = \"%s\"", GET_PLR_ID(ch), GET_NAME(ch));
			My_result = MySQL__query(szQueryText);

			if (my.Query(szQueryText) > 0)
			{
				my.NextRow();
				int chTempScore = atoi(my.GetData("Score"));

				if (chGameScore > chTempScore)
				{
					snprintf(szUpdateScore, sizeof(szUpdateScore), "UPDATE defined_database.alcazar_scores SET Score = '%d' WHERE PlayerID = '%d' AND PlayerName = \"%s\"", chGameScore, GET_PLR_ID(ch), GET_NAME(ch));
					My_result = MySQL__query(szUpdateScore);
				}
			}
			else
			{
				snprintf(szUpdateScore, sizeof(szUpdateScore), "INSERT INTO defined_database.alcazar_scores (PlayerID, PlayerName, Score, Roster) VALUES ('%d', \"%s\", '%d', 1)", GET_PLR_ID(ch), GET_NAME(ch), chGameScore);
				My_result = MySQL__query(szUpdateScore);
			}

			MSGP(ch, 1, "Your final score for this game was: %d", chGameScore);
			MSGP(ch, 1, "%s's final score for this game was: %d", GET_NAME(vict), vGameScore);
			MSGP(vict, 1, "Your final score for this game was: %d", vGameScore);
			MSGP(vict, 1, "%s's final score for this game was: %d", GET_NAME(ch), chGameScore);

			// Delete the game for both players
			snprintf(szDeletePlayerEntry, sizeof(szDeletePlayerEntry), "DELETE FROM defined_database.alcazar_players WHERE GameID = '%d'", GameID);
			My_result = MySQL__query(szDeletePlayerEntry);
			MySQL__endquery(My_result);

			if (PLR_FLAGGED(ch, PLR_PLAYING_ALCAZAR))
				REMOVE_BIT(PLR_FLAGS(ch), PLR_PLAYING_ALCAZAR);
			if (PLR_FLAGGED(vict, PLR_PLAYING_ALCAZAR))
				REMOVE_BIT(PLR_FLAGS(vict), PLR_PLAYING_ALCAZAR);
			return (ALCAZAR_VICTORY);
		}
		else
		{
			MySQL__endquery(My_result);
			return (NULL);
		}
	}
	else
	{
		MySQL__endquery(My_result);
		return (NULL);
	}

	MySQL__endquery(My_result);
	return (NULL);
}