#define __ALCAZAR_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 int digit_from_sql(char *sql_Database, char *xt_table, char *xf_callfield, char *xf_datafield, int plr_ID); 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); 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); // Local functions void perform_alcazar_game_command(struct char_data *ch, struct char_data *vict, int play_action, int card_number); int alcazar_player_data_from_sql(char *xf_datafield, char *xt_table, char *xf_callfield1, int game_ID, char *xf_callfield2, int plr_ID); int alcazar_card_data_from_sql(char *xf_datafield, char *xt_table, char *xf_callfield1, int Card_ID); /////////////////////////////////////////////////////////////////////////////// int alcazar_player_data_from_sql(char *xf_datafield, char *xt_table, char *xf_callfield1, int game_ID, char *xf_callfield2, int plr_ID) { MySQL my; char szQueryText[700]; MYSQL_RES *My_result = NULL; snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.%s WHERE %s = '%d' AND %s = '%d'", xt_table, xf_callfield1, game_ID, xf_callfield2, plr_ID); My_result = MySQL__query(szQueryText); if (my.Query(szQueryText) > 0) { my.NextRow(); int digit_output = atoi(my.GetData(xf_datafield)); MySQL__endquery(My_result); return(digit_output); } MySQL__endquery(My_result); return(0); } int alcazar_card_data_from_sql(char *xf_datafield, char *xt_table, char *xf_callfield1, int Card_ID) { MySQL my; char szQueryText[700]; MYSQL_RES *My_result = NULL; snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.%s WHERE %s = '%d'", xt_table, xf_callfield1, Card_ID); My_result = MySQL__query(szQueryText); if (my.Query(szQueryText) > 0) { my.NextRow(); int digit_output = atoi(my.GetData(xf_datafield)); MySQL__endquery(My_result); return(digit_output); } MySQL__endquery(My_result); return(0); } const struct card_verbos_array verbos_array[] = { { "(FREE)", NULL, NULL }, { "bricks", C_R, C_BrR }, { "gems", C_C, C_BrC }, { "creatures", C_G, C_BrG } }; xCOMMANDx(do_play) { struct char_data *vict; char arg1[700]; char arg2[700]; if (utility_one_roundtime(ch) == 0) return; two_arguments(argument, arg1, arg2); switch (subcmd) { case SCMD_ALCAZAR_ROSTER: { if (!stri_cmp("roster", arg1)) { MYSQL_RES * My_result = NULL; MYSQL_ROW My_row = 0; MYSQL_FIELD * My_fields = NULL; int My_numrowsleft = 0; char My_temp[700]; bool found = FALSE; int temp_plus = NULL; char szPlayerName[700]; int playerscore; My_result = MySQL__query("SELECT * FROM defined_database.alcazar_scores WHERE Roster = 1 ORDER BY Score DESC LIMIT 0, 20"); My_fields = MySQL__get_fields(My_result); My_numrowsleft = MySQL__rows_left(My_result); if (!stri_cmp("show", arg2)) { perform_alcazar_game_command(ch, NULL, ROSTER_SHOW, NULL); return; } if (!stri_cmp("hide", arg2)) { perform_alcazar_game_command(ch, NULL, ROSTER_HIDE, NULL); return; } MSGP(ch, 2, " "); MSGP(ch, 1, " The Official Alcazar Game top-20 Score Roster"); MSGP(ch, 2, " ---------------------------------------------"); while (My_numrowsleft-- > 0) { My_row = MySQL__next_row(My_result); MySQL__get_data(My_result, My_fields, My_row, szPlayerName, "PlayerName"); MySQL__get_data(My_result, My_fields, My_row, My_temp, "Score"); playerscore = atoi(My_temp); temp_plus += 1; MSGP(ch, 1, " %d. %s %d", temp_plus, szPlayerName, playerscore); found = TRUE; } MSGP(ch, 2, " "); MSGP(ch, 1, " To show yourself on the roster, type ALCAZAR ROSTER SHOW."); MSGP(ch, 1, " To hide yourself from the roster, type ALCAZAR ROSTER HIDE."); MySQL__endquery(My_result); if (!found) MSGP(ch, 1, " As of now, the ALCAZAR ROSTER has no visible entries."); } else { MSGP(ch, 2, "To view the top 20 all-time Alcazar scores, type ALCAZAR ROSTER"); MSGP(ch, 1, "To show yourself on the roster, type ALCAZAR ROSTER SHOW."); MSGP(ch, 1, "To hide yourself from the roster, type ALCAZAR ROSTER HIDE."); return; } } return; break; default: break; } if (!ROOM_FLAGGED(IN_ROOM(ch), ROOM_ALCAZAR_GAME)) { MSGP(ch, 1, "You cannot play the Alcazar game here."); if (PLR_FLAGGED(ch, PLR_PLAYING_ALCAZAR)) REMOVE_BIT(PLR_FLAGS(ch), PLR_PLAYING_ALCAZAR); return; } if (!*argument) { MSGP(ch, 1, " "); MSGP(ch, 1, " PLAY HELP"); // play_action 1 MSGP(ch, 1, " PLAY NEWGAME WITH <opponent's first name>"); // play_action 2 MSGP(ch, 1, " PLAY SCORE"); // play_action 3 MSGP(ch, 1, " PLAY QUIT"); // play_action 4 MSGP(ch, 1, " PLAY CARD <card #>"); // play_action 5 MSGP(ch, 1, " PLAY PASS"); // play_action 6 MSGP(ch, 2, " PLAY DISCARD <card #>"); // play_action 7 MSGP(ch, 1, " To view the top 20 all-time Alcazar scores, type ALCAZAR ROSTER"); MSGP(ch, 1, " To show yourself on the roster, type ALCAZAR ROSTER SHOW."); MSGP(ch, 1, " To hide yourself from the roster, type ALCAZAR ROSTER HIDE."); return; } // play_action 1 if (!stri_cmp(arg1, "help")) { MSGP(ch, 0, "%s", C_BrC); text_from_sql(ch, SQL_ALCAZAR_RULES); MSGP(ch, 0, "%s", C_N); return; } // play_action 2 if (!stri_cmp(arg1, "newgame")) { if (PLR_FLAGGED(ch, PLR_PLAYING_ALCAZAR)) { MSGP(ch, 1, "You should finish the game your in first."); return; } if (!*arg2) { MSGP(ch, 1, "Start a new Alcazar game with who?"); return; } else if (!(vict = get_char_vis(ch, arg2, NULL, FIND_CHAR_ROOM))) { MSGP(ch, 1, "%s", NOPERSON); return; } else if (vict == ch) { MSGP(ch, 1, "You cannot choose yourself as the opponent."); return; } else { perform_alcazar_game_command(ch, vict, PLAY_NEWGAME, NULL); return; } } // play_action 3 if (!stri_cmp(arg1, "score")) { if (!PLR_FLAGGED(ch, PLR_PLAYING_ALCAZAR)) { MSGP(ch, 1, "Since you're not playing Alcazar, you have no score."); return; } else perform_alcazar_game_command(ch, NULL, PLAY_SCORE, NULL); return; } // play_action 4 if (!stri_cmp(arg1, "quit")) { if (!PLR_FLAGGED(ch, PLR_PLAYING_ALCAZAR)) { MSGP(ch, 1, "You are not in an Alcazar game to quit."); return; } else perform_alcazar_game_command(ch, NULL, PLAY_QUIT, NULL); return; } // play_action 5 if (!stri_cmp(arg1, "card")) { if (!PLR_FLAGGED(ch, PLR_PLAYING_ALCAZAR)) { MSGP(ch, 1, "You are not currently in an Alcazar game."); return; } else perform_alcazar_game_command(ch, NULL, PLAY_CARD, atoi(arg2)); return; } // play_action 6 if (!stri_cmp(arg1, "pass")) { if (!PLR_FLAGGED(ch, PLR_PLAYING_ALCAZAR)) { MSGP(ch, 1, "You are not currently in an Alcazar game."); return; } else perform_alcazar_game_command(ch, NULL, PLAY_PASS, NULL); return; } // play_action 7 if (!stri_cmp(arg1, "discard")) { if (!PLR_FLAGGED(ch, PLR_PLAYING_ALCAZAR)) { MSGP(ch, 1, "You are not currently in an Alcazar game."); return; } else perform_alcazar_game_command(ch, NULL, PLAY_DISCARD, atoi(arg2)); return; } else { MSGP(ch, 2, "I'm sorry, I didn't understand. Please be more specific and don't abbreviate."); MSGP(ch, 1, " "); MSGP(ch, 1, " PLAY HELP"); // play_action 1 MSGP(ch, 1, " PLAY NEWGAME WITH <opponent's first name>"); // play_action 2 MSGP(ch, 1, " PLAY SCORE"); // play_action 3 MSGP(ch, 1, " PLAY QUIT"); // play_action 4 MSGP(ch, 1, " PLAY CARD <card #>"); // play_action 5 MSGP(ch, 1, " PLAY PASS"); // play_action 6 MSGP(ch, 1, " PLAY DISCARD <card #>"); // play_action 7 return; } return; } void perform_alcazar_game_command(struct char_data *ch, struct char_data *vict, int play_action, int card_number) { struct player_card1_data chCard1; struct player_card2_data chCard2; struct player_card3_data chCard3; struct player_card4_data chCard4; struct player_card5_data chCard5; struct player_card6_data chCard6; char *sql_Database = "defined_database"; char *sql_table_alcazar_cards = "alcazar_cards"; char *sql_table_alcazar_players = "alcazar_players"; char *sql_field_GameID = "GameID"; char *sql_field_PlayerID = "PlayerID"; char *sql_field_OpponentName = "OpponentName"; char *sql_field_PlayerName = "PlayerName"; char *sql_field_CurrentTurn = "CurrentTurn"; char *sql_field_Quarry = "Quarry"; char *sql_field_Bricks = "Bricks"; char *sql_field_Zoo = "Zoo"; char *sql_field_Creatures = "Creatures"; char *sql_field_Magic = "Magic"; char *sql_field_Gems = "Gems"; char *sql_field_Wall = "Wall"; char *sql_field_Tower = "Tower"; char *sql_field_CardID = "CardID"; char *sql_field_Cost = "Cost"; char *sql_field_CostType = "CostType"; char *Card1_name = NULL, *Card2_name = NULL, *Card3_name = NULL, *Card4_name = NULL, *Card5_name = NULL, *Card6_name = NULL; char *Card1_desc = NULL, *Card2_desc = NULL, *Card3_desc = NULL, *Card4_desc = NULL, *Card5_desc = NULL, *Card6_desc = NULL; char *Opponent_Name = NULL; int CurrentTurn = NULL; int pl1rc1 = rand_number(1, DECK_SIZE); int pl1rc2 = rand_number(1, DECK_SIZE); int pl1rc3 = rand_number(1, DECK_SIZE); int pl1rc4 = rand_number(1, DECK_SIZE); int pl1rc5 = rand_number(1, DECK_SIZE); int pl1rc6 = rand_number(1, DECK_SIZE); int pl2rc1 = rand_number(1, DECK_SIZE); int pl2rc2 = rand_number(1, DECK_SIZE); int pl2rc3 = rand_number(1, DECK_SIZE); int pl2rc4 = rand_number(1, DECK_SIZE); int pl2rc5 = rand_number(1, DECK_SIZE); int pl2rc6 = rand_number(1, DECK_SIZE); int vGameID = NULL, chGameID = NULL; int vQuarry = NULL, chQuarry = NULL; int vBricks = NULL, chBricks = NULL; int vZoo = NULL, chZoo = NULL; int vCreatures = NULL, chCreatures = NULL; int vMagic = NULL, chMagic = NULL; int vGems = NULL, chGems = NULL; int vWall = NULL, chWall = NULL; int vTower = NULL, chTower = NULL; if (play_action == ROSTER_SHOW || play_action == ROSTER_HIDE) { MySQL my; char szQueryText[700]; char szUpdateRoster[700]; MYSQL_RES *My_result = NULL; 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 (play_action == ROSTER_SHOW) { if (my.Query(szQueryText) > 0) { my.NextRow(); int show_status = atoi(my.GetData("Roster")); if (show_status == 1) { MSGP(ch, 1, "You're already set to be shown on the top-20 list"); MySQL__endquery(My_result); return; } else if (show_status == 0) { snprintf(szUpdateRoster, sizeof(szUpdateRoster), "UPDATE defined_database.alcazar_scores SET Roster = 1 WHERE PlayerID = '%d' AND PlayerName = \"%s\"", GET_PLR_ID(ch), GET_NAME(ch)); My_result = MySQL__query(szUpdateRoster); MySQL__endquery(My_result); MSGP(ch, 1, "Done. You are now set to be shown on the top-20 list"); return; } } else { MSGP(ch, 1, "You have not attained an Alcazar ranking yet."); MySQL__endquery(My_result); return; } } else if (play_action == ROSTER_HIDE) { if (my.Query(szQueryText) > 0) { my.NextRow(); int show_status = atoi(my.GetData("Roster")); if (show_status == 0) { MSGP(ch, 1, "You're already set to be hidden from the top-20 list"); MySQL__endquery(My_result); return; } else if (show_status == 1) { snprintf(szUpdateRoster, sizeof(szUpdateRoster), "UPDATE defined_database.alcazar_scores SET Roster = 0 WHERE PlayerID = '%d' AND PlayerName = \"%s\"", GET_PLR_ID(ch), GET_NAME(ch)); My_result = MySQL__query(szUpdateRoster); MySQL__endquery(My_result); MSGP(ch, 1, "Done. You are now set to be hidden from the top-20 list"); return; } } else { MSGP(ch, 1, "You have not attained an Alcazar ranking yet."); MySQL__endquery(My_result); return; } } } if (play_action == PLAY_NEWGAME) { MySQL my; char szQueryText[700]; MYSQL_RES *My_result = NULL; int generated_GameID = rand_number(1, 987654321); int CoinToss = rand_number(1, 2); snprintf(szQueryText, sizeof(szQueryText), "INSERT INTO defined_database.%s (GameID, PlayerID, PlayerName, OpponentName, CurrentTurn, CurrentScore, Quarry, Bricks, Zoo, Creatures, Magic, Gems, Wall, Tower, Card1, Card2, Card3, Card4, Card5, Card6) VALUES ('%d', '%d', \"%s\", \"%s\", '%d', '%d', 2, 7, 2, 7, 2, 7, 15, 30, '%d', '%d', '%d', '%d', '%d', '%d')", sql_table_alcazar_players, generated_GameID, GET_PLR_ID(ch), GET_NAME(ch), GET_NAME(vict), (CoinToss == 1 ? 1 : 0), 0, pl1rc1, pl1rc2, pl1rc3, pl1rc4, pl1rc5, pl1rc6); My_result = MySQL__query(szQueryText); snprintf(szQueryText, sizeof(szQueryText), "INSERT INTO defined_database.%s (GameID, PlayerID, PlayerName, OpponentName, CurrentTurn, CurrentScore, Quarry, Bricks, Zoo, Creatures, Magic, Gems, Wall, Tower, Card1, Card2, Card3, Card4, Card5, Card6) VALUES ('%d', '%d', \"%s\", \"%s\", '%d', '%d', 2, 7, 2, 7, 2, 7, 15, 30, '%d', '%d', '%d', '%d', '%d', '%d')", sql_table_alcazar_players, generated_GameID, GET_PLR_ID(vict), GET_NAME(vict), GET_NAME(ch), (CoinToss == 1 ? 0 : 1), 0, pl2rc1, pl2rc2, pl2rc3, pl2rc4, pl2rc5, pl2rc6); My_result = MySQL__query(szQueryText); MySQL__endquery(My_result); if (!PLR_FLAGGED(ch, PLR_PLAYING_ALCAZAR)) SET_BIT(PLR_FLAGS(ch), PLR_PLAYING_ALCAZAR); if (!PLR_FLAGGED(vict, PLR_PLAYING_ALCAZAR)) SET_BIT(PLR_FLAGS(vict), PLR_PLAYING_ALCAZAR); snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", generated_GameID, GET_PLR_ID(ch)); if (my.Query(szQueryText) > 0) { my.NextRow(); CurrentTurn = atoi(my.GetData("CurrentTurn")); if (CurrentTurn == 1) { MSGP(ch, 1, "You start a new game of Alcazar with %s. It has been randomly chosen that YOU go first.", GET_NAME(vict)); MSGP(vict, 1, "%s starts a new game of Alcazar with you. It has been randomly chosen that %s goes first.", GET_NAME(ch), GET_NAME(ch)); return; } else if (CurrentTurn == 0) { MSGP(ch, 1, "You start a new game of Alcazar with %s. It has been randomly chosen that %s goes first.", GET_NAME(vict), GET_NAME(vict)); MSGP(vict, 1, "%s starts a new game of Alcazar with you. It has been randomly chosen that YOU go first.", GET_NAME(ch)); return; } } return; } if (play_action > PLAY_NEWGAME && play_action < ROSTER_SHOW) { MySQL my; char szQueryText[700]; char card_name_and_desc[700]; char szUpdateScore[700]; MYSQL_RES *My_result = NULL; snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM %s.%s WHERE %s = '%d'", sql_Database, sql_table_alcazar_players, sql_field_PlayerID, GET_PLR_ID(ch)); My_result = MySQL__query(szQueryText); if (my.Query(szQueryText) > 0) { my.NextRow(); Opponent_Name = my.GetData(sql_field_OpponentName); MySQL__endquery(My_result); } else { REMOVE_BIT(PLR_FLAGS(ch), PLR_PLAYING_ALCAZAR); MSGP(ch, 1, "The database seems to have lost your current game information."); MSGP(ch, 1, "You are no longer 'flagged' as being in a game of Alcazar."); syslog("[ALCAZAR] %s isn't finding game data in the database.", GET_NAME(ch)); MySQL__endquery(My_result); return; } if (PLR_FLAGGED(ch, PLR_PLAYING_ALCAZAR)) { if (!(vict = get_char_vis(ch, Opponent_Name, NULL, FIND_CHAR_ROOM))) { MSGP(ch, 1, "Well... you were playing Alcazar with %s but they don't seem to be here now.", Opponent_Name); MSGP(ch, 1, "Type PLAY QUIT to quit the game."); return; } } if (!(vict = get_char_vis(ch, Opponent_Name, NULL, FIND_CHAR_ROOM))) { MSGP(ch, 1, "%s", NOPERSON); return; } chGameID = digit_from_sql(sql_Database, sql_table_alcazar_players, sql_field_PlayerID, sql_field_GameID, GET_PLR_ID(ch)); vGameID = digit_from_sql(sql_Database, sql_table_alcazar_players, sql_field_PlayerID, sql_field_GameID, GET_PLR_ID(vict)); CurrentTurn = alcazar_player_data_from_sql(sql_field_CurrentTurn, sql_table_alcazar_players, sql_field_GameID, chGameID, sql_field_PlayerID, GET_PLR_ID(ch)); chQuarry = alcazar_player_data_from_sql(sql_field_Quarry, sql_table_alcazar_players, sql_field_GameID, chGameID, sql_field_PlayerID, GET_PLR_ID(ch)); vQuarry = alcazar_player_data_from_sql(sql_field_Quarry, sql_table_alcazar_players, sql_field_GameID, chGameID, sql_field_PlayerID, GET_PLR_ID(vict)); chBricks = alcazar_player_data_from_sql(sql_field_Bricks, sql_table_alcazar_players, sql_field_GameID, chGameID, sql_field_PlayerID, GET_PLR_ID(ch)); vBricks = alcazar_player_data_from_sql(sql_field_Bricks, sql_table_alcazar_players, sql_field_GameID, chGameID, sql_field_PlayerID, GET_PLR_ID(vict)); chZoo = alcazar_player_data_from_sql(sql_field_Zoo, sql_table_alcazar_players, sql_field_GameID, chGameID, sql_field_PlayerID, GET_PLR_ID(ch)); vZoo = alcazar_player_data_from_sql(sql_field_Zoo, sql_table_alcazar_players, sql_field_GameID, chGameID, sql_field_PlayerID, GET_PLR_ID(vict)); chCreatures = alcazar_player_data_from_sql(sql_field_Creatures, sql_table_alcazar_players, sql_field_GameID, chGameID, sql_field_PlayerID, GET_PLR_ID(ch)); vCreatures = alcazar_player_data_from_sql(sql_field_Creatures, sql_table_alcazar_players, sql_field_GameID, chGameID, sql_field_PlayerID, GET_PLR_ID(vict)); chMagic = alcazar_player_data_from_sql(sql_field_Magic, sql_table_alcazar_players, sql_field_GameID, chGameID, sql_field_PlayerID, GET_PLR_ID(ch)); vMagic = alcazar_player_data_from_sql(sql_field_Magic, sql_table_alcazar_players, sql_field_GameID, chGameID, sql_field_PlayerID, GET_PLR_ID(vict)); chGems = alcazar_player_data_from_sql(sql_field_Gems, sql_table_alcazar_players, sql_field_GameID, chGameID, sql_field_PlayerID, GET_PLR_ID(ch)); vGems = alcazar_player_data_from_sql(sql_field_Gems, sql_table_alcazar_players, sql_field_GameID, chGameID, sql_field_PlayerID, GET_PLR_ID(vict)); chWall = alcazar_player_data_from_sql(sql_field_Wall, sql_table_alcazar_players, sql_field_GameID, chGameID, sql_field_PlayerID, GET_PLR_ID(ch)); vWall = alcazar_player_data_from_sql(sql_field_Wall, sql_table_alcazar_players, sql_field_GameID, chGameID, sql_field_PlayerID, GET_PLR_ID(vict)); chTower = alcazar_player_data_from_sql(sql_field_Tower, sql_table_alcazar_players, sql_field_GameID, chGameID, sql_field_PlayerID, GET_PLR_ID(ch)); vTower = alcazar_player_data_from_sql(sql_field_Tower, sql_table_alcazar_players, sql_field_GameID, chGameID, sql_field_PlayerID, GET_PLR_ID(vict)); chCard1.card_id = alcazar_player_data_from_sql("Card1", sql_table_alcazar_players, sql_field_GameID, chGameID, sql_field_PlayerID, GET_PLR_ID(ch)); chCard2.card_id = alcazar_player_data_from_sql("Card2", sql_table_alcazar_players, sql_field_GameID, chGameID, sql_field_PlayerID, GET_PLR_ID(ch)); chCard3.card_id = alcazar_player_data_from_sql("Card3", sql_table_alcazar_players, sql_field_GameID, chGameID, sql_field_PlayerID, GET_PLR_ID(ch)); chCard4.card_id = alcazar_player_data_from_sql("Card4", sql_table_alcazar_players, sql_field_GameID, chGameID, sql_field_PlayerID, GET_PLR_ID(ch)); chCard5.card_id = alcazar_player_data_from_sql("Card5", sql_table_alcazar_players, sql_field_GameID, chGameID, sql_field_PlayerID, GET_PLR_ID(ch)); chCard6.card_id = alcazar_player_data_from_sql("Card6", sql_table_alcazar_players, sql_field_GameID, chGameID, sql_field_PlayerID, GET_PLR_ID(ch)); chCard1.cost = alcazar_card_data_from_sql(sql_field_Cost, sql_table_alcazar_cards, sql_field_CardID, chCard1.card_id); chCard2.cost = alcazar_card_data_from_sql(sql_field_Cost, sql_table_alcazar_cards, sql_field_CardID, chCard2.card_id); chCard3.cost = alcazar_card_data_from_sql(sql_field_Cost, sql_table_alcazar_cards, sql_field_CardID, chCard3.card_id); chCard4.cost = alcazar_card_data_from_sql(sql_field_Cost, sql_table_alcazar_cards, sql_field_CardID, chCard4.card_id); chCard5.cost = alcazar_card_data_from_sql(sql_field_Cost, sql_table_alcazar_cards, sql_field_CardID, chCard5.card_id); chCard6.cost = alcazar_card_data_from_sql(sql_field_Cost, sql_table_alcazar_cards, sql_field_CardID, chCard6.card_id); chCard1.cost_type = alcazar_card_data_from_sql(sql_field_CostType, sql_table_alcazar_cards, sql_field_CardID, chCard1.card_id); chCard2.cost_type = alcazar_card_data_from_sql(sql_field_CostType, sql_table_alcazar_cards, sql_field_CardID, chCard2.card_id); chCard3.cost_type = alcazar_card_data_from_sql(sql_field_CostType, sql_table_alcazar_cards, sql_field_CardID, chCard3.card_id); chCard4.cost_type = alcazar_card_data_from_sql(sql_field_CostType, sql_table_alcazar_cards, sql_field_CardID, chCard4.card_id); chCard5.cost_type = alcazar_card_data_from_sql(sql_field_CostType, sql_table_alcazar_cards, sql_field_CardID, chCard5.card_id); chCard6.cost_type = alcazar_card_data_from_sql(sql_field_CostType, sql_table_alcazar_cards, sql_field_CardID, chCard6.card_id); chCard1.card_type = verbos_array[chCard1.cost_type].type_name; chCard2.card_type = verbos_array[chCard2.cost_type].type_name; chCard3.card_type = verbos_array[chCard3.cost_type].type_name; chCard4.card_type = verbos_array[chCard4.cost_type].type_name; chCard5.card_type = verbos_array[chCard5.cost_type].type_name; chCard6.card_type = verbos_array[chCard6.cost_type].type_name; // Get: Card 1 Name & Description snprintf(card_name_and_desc, sizeof(card_name_and_desc), "SELECT * FROM defined_database.alcazar_cards WHERE CardID = '%d'", chCard1.card_id); My_result = MySQL__query(card_name_and_desc); if (my.Query(card_name_and_desc) > 0) { my.NextRow(); char *Card1_name = my.GetData("Name"); static char card1_name_buf[700]; snprintf(card1_name_buf, sizeof(card1_name_buf), "%s", Card1_name); chCard1.name = card1_name_buf; char *Card1_desc = my.GetData("Description"); static char card1_desc_buf[700]; snprintf(card1_desc_buf, sizeof(card1_desc_buf), "%s", Card1_desc); chCard1.description = card1_desc_buf; MySQL__endquery(My_result); } else MySQL__endquery(My_result); // Get: Card 2 Name & Description snprintf(card_name_and_desc, sizeof(card_name_and_desc), "SELECT * FROM defined_database.alcazar_cards WHERE CardID = '%d'", chCard2.card_id); My_result = MySQL__query(card_name_and_desc); if (my.Query(card_name_and_desc) > 0) { my.NextRow(); char *Card2_name = my.GetData("Name"); static char card2_name_buf[700]; snprintf(card2_name_buf, sizeof(card2_name_buf), "%s", Card2_name); chCard2.name = card2_name_buf; char *Card2_desc = my.GetData("Description"); static char card2_desc_buf[700]; snprintf(card2_desc_buf, sizeof(card2_desc_buf), "%s", Card2_desc); chCard2.description = card2_desc_buf; MySQL__endquery(My_result); } else MySQL__endquery(My_result); // Get: Card 3 Name & Description snprintf(card_name_and_desc, sizeof(card_name_and_desc), "SELECT * FROM defined_database.alcazar_cards WHERE CardID = '%d'", chCard3.card_id); My_result = MySQL__query(card_name_and_desc); if (my.Query(card_name_and_desc) > 0) { my.NextRow(); char *Card3_name = my.GetData("Name"); static char card3_name_buf[700]; snprintf(card3_name_buf, sizeof(card3_name_buf), "%s", Card3_name); chCard3.name = card3_name_buf; char *Card3_desc = my.GetData("Description"); static char card3_desc_buf[700]; snprintf(card3_desc_buf, sizeof(card3_desc_buf), "%s", Card3_desc); chCard3.description = card3_desc_buf; MySQL__endquery(My_result); } else MySQL__endquery(My_result); // Get: Card 4 Name & Description snprintf(card_name_and_desc, sizeof(card_name_and_desc), "SELECT * FROM defined_database.alcazar_cards WHERE CardID = '%d'", chCard4.card_id); My_result = MySQL__query(card_name_and_desc); if (my.Query(card_name_and_desc) > 0) { my.NextRow(); char *Card4_name = my.GetData("Name"); static char card4_name_buf[700]; snprintf(card4_name_buf, sizeof(card4_name_buf), "%s", Card4_name); chCard4.name = card4_name_buf; char *Card4_desc = my.GetData("Description"); static char card4_desc_buf[700]; snprintf(card4_desc_buf, sizeof(card4_desc_buf), "%s", Card4_desc); chCard4.description = card4_desc_buf; MySQL__endquery(My_result); } else MySQL__endquery(My_result); // Get: Card 5 Name & Description snprintf(card_name_and_desc, sizeof(card_name_and_desc), "SELECT * FROM defined_database.alcazar_cards WHERE CardID = '%d'", chCard5.card_id); My_result = MySQL__query(card_name_and_desc); if (my.Query(card_name_and_desc) > 0) { my.NextRow(); char *Card5_name = my.GetData("Name"); static char card5_name_buf[700]; snprintf(card5_name_buf, sizeof(card5_name_buf), "%s", Card5_name); chCard5.name = card5_name_buf; char *Card5_desc = my.GetData("Description"); static char card5_desc_buf[700]; snprintf(card5_desc_buf, sizeof(card5_desc_buf), "%s", Card5_desc); chCard5.description = card5_desc_buf; MySQL__endquery(My_result); } else MySQL__endquery(My_result); // Get: Card 6 Name & Description snprintf(card_name_and_desc, sizeof(card_name_and_desc), "SELECT * FROM defined_database.alcazar_cards WHERE CardID = '%d'", chCard6.card_id); My_result = MySQL__query(card_name_and_desc); if (my.Query(card_name_and_desc) > 0) { my.NextRow(); char *Card6_name = my.GetData("Name"); static char card6_name_buf[700]; snprintf(card6_name_buf, sizeof(card6_name_buf), "%s", Card6_name); chCard6.name = card6_name_buf; char *Card6_desc = my.GetData("Description"); static char card6_desc_buf[700]; snprintf(card6_desc_buf, sizeof(card6_desc_buf), "%s", Card6_desc); chCard6.description = card6_desc_buf; MySQL__endquery(My_result); } else MySQL__endquery(My_result); // Determines correct Card 1 color output. char *Card1_color = C_N; if (chCard1.cost_type == 1) { if (chCard1.cost > chBricks) Card1_color = verbos_array[chCard1.cost_type].dark; else if (chCard1.cost <= chBricks) Card1_color = verbos_array[chCard1.cost_type].bright; } else if (chCard1.cost_type == 2) { if (chCard1.cost > chGems) Card1_color = verbos_array[chCard1.cost_type].dark; else if (chCard1.cost <= chGems) Card1_color = verbos_array[chCard1.cost_type].bright; } else if (chCard1.cost_type == 3) { if (chCard1.cost > chCreatures) Card1_color = verbos_array[chCard1.cost_type].dark; else if (chCard1.cost <= chCreatures) Card1_color = verbos_array[chCard1.cost_type].bright; } // Determines correct Card 2 color output. char *Card2_color = C_N; if (chCard2.cost_type == 1) { if (chCard2.cost > chBricks) Card2_color = verbos_array[chCard2.cost_type].dark; else if (chCard2.cost <= chBricks) Card2_color = verbos_array[chCard2.cost_type].bright; } else if (chCard2.cost_type == 2) { if (chCard2.cost > chGems) Card2_color = verbos_array[chCard2.cost_type].dark; else if (chCard2.cost <= chGems) Card2_color = verbos_array[chCard2.cost_type].bright; } else if (chCard2.cost_type == 3) { if (chCard2.cost > chCreatures) Card2_color = verbos_array[chCard2.cost_type].dark; else if (chCard2.cost <= chCreatures) Card2_color = verbos_array[chCard2.cost_type].bright; } // Determines correct Card 3 color output. char *Card3_color = C_N; if (chCard3.cost_type == 1) { if (chCard3.cost > chBricks) Card3_color = verbos_array[chCard3.cost_type].dark; else if (chCard3.cost <= chBricks) Card3_color = verbos_array[chCard3.cost_type].bright; } else if (chCard3.cost_type == 2) { if (chCard3.cost > chGems) Card3_color = verbos_array[chCard3.cost_type].dark; else if (chCard3.cost <= chGems) Card3_color = verbos_array[chCard3.cost_type].bright; } else if (chCard3.cost_type == 3) { if (chCard3.cost > chCreatures) Card3_color = verbos_array[chCard3.cost_type].dark; else if (chCard3.cost <= chCreatures) Card3_color = verbos_array[chCard3.cost_type].bright; } // Determines correct Card 4 color output. char *Card4_color = C_N; if (chCard4.cost_type == 1) { if (chCard4.cost > chBricks) Card4_color = verbos_array[chCard4.cost_type].dark; else if (chCard4.cost <= chBricks) Card4_color = verbos_array[chCard4.cost_type].bright; } else if (chCard4.cost_type == 2) { if (chCard4.cost > chGems) Card4_color = verbos_array[chCard4.cost_type].dark; else if (chCard4.cost <= chGems) Card4_color = verbos_array[chCard4.cost_type].bright; } else if (chCard4.cost_type == 3) { if (chCard4.cost > chCreatures) Card4_color = verbos_array[chCard4.cost_type].dark; else if (chCard4.cost <= chCreatures) Card4_color = verbos_array[chCard4.cost_type].bright; } // Determines correct Card 5 color output. char *Card5_color = C_N; if (chCard5.cost_type == 1) { if (chCard5.cost > chBricks) Card5_color = verbos_array[chCard5.cost_type].dark; else if (chCard5.cost <= chBricks) Card5_color = verbos_array[chCard5.cost_type].bright; } else if (chCard5.cost_type == 2) { if (chCard5.cost > chGems) Card5_color = verbos_array[chCard5.cost_type].dark; else if (chCard5.cost <= chGems) Card5_color = verbos_array[chCard5.cost_type].bright; } else if (chCard5.cost_type == 3) { if (chCard5.cost > chCreatures) Card5_color = verbos_array[chCard5.cost_type].dark; else if (chCard5.cost <= chCreatures) Card5_color = verbos_array[chCard5.cost_type].bright; } // Determines correct Card 6 color output. char *Card6_color = C_N; if (chCard6.cost_type == 1) { if (chCard6.cost > chBricks) Card6_color = verbos_array[chCard6.cost_type].dark; else if (chCard6.cost <= chBricks) Card6_color = verbos_array[chCard6.cost_type].bright; } else if (chCard6.cost_type == 2) { if (chCard6.cost > chGems) Card6_color = verbos_array[chCard6.cost_type].dark; else if (chCard6.cost <= chGems) Card6_color = verbos_array[chCard6.cost_type].bright; } else if (chCard6.cost_type == 3) { if (chCard6.cost > chCreatures) Card6_color = verbos_array[chCard6.cost_type].dark; else if (chCard6.cost <= chCreatures) Card6_color = verbos_array[chCard6.cost_type].bright; } // Data to determine each player's current game score int chGameScore = ((chTower * 5) + (chWall * 10) + (chQuarry * 20) + (chBricks * 2) + (chMagic * 20) + (chGems * 2) + (chZoo * 20) + (chCreatures * 2)); int vGameScore = ((vTower * 5) + (vWall * 10) + (vQuarry * 20) + (vBricks * 2) + (vMagic * 20) + (vGems * 2) + (vZoo * 20) + (vCreatures * 2)); // Update the player's current game score in sql snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", chGameID, GET_PLR_ID(ch)); My_result = MySQL__query(szQueryText); if (my.Query(szQueryText) > 0) { my.NextRow(); snprintf(szUpdateScore, sizeof(szUpdateScore), "UPDATE defined_database.alcazar_players SET CurrentScore = '%d' WHERE GameID = '%d' AND PlayerID = '%d'", chGameScore, chGameID, GET_PLR_ID(ch)); My_result = MySQL__query(szUpdateScore); MySQL__endquery(My_result); } else MySQL__endquery(My_result); // Update the victim's current game score in sql snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", chGameID, GET_PLR_ID(vict)); My_result = MySQL__query(szQueryText); if (my.Query(szQueryText) > 0) { my.NextRow(); snprintf(szUpdateScore, sizeof(szUpdateScore), "UPDATE defined_database.alcazar_players SET CurrentScore = '%d' WHERE GameID = '%d' AND PlayerID = '%d'", vGameScore, chGameID, GET_PLR_ID(vict)); My_result = MySQL__query(szUpdateScore); MySQL__endquery(My_result); } else MySQL__endquery(My_result); if (play_action == PLAY_SCORE) { MSGP(ch, 1, " "); MSGP(ch, 2, " %sIt is currently %s%s turn.%s", C_BR, (CurrentTurn == 1 ? "YOUR" : GET_NAME(vict)), (CurrentTurn == 1 ? "" : "'s"), C_N); MSGP(ch, 1, " YOU %s", GET_NAME(vict)); MSGP(ch, 1, " (%d) (%d) <-(gamescore)", chGameScore, vGameScore); MSGP(ch, 1, " ---------- | ----------"); MSGP(ch, 1, " Tower[%3d] | Tower:[%3d]", chTower, vTower); MSGP(ch, 1, " Wall:[%3d] | Wall: [%3d]", chWall, vWall); MSGP(ch, 1, " | "); MSGP(ch, 1, " Quarry:[%3d] | Quarry:[%3d]", chQuarry, vQuarry); MSGP(ch, 1, " Bricks:[%3d] | Bricks:[%3d]", chBricks, vBricks); MSGP(ch, 1, " | "); MSGP(ch, 1, " Magic:[%3d] | Magic:[%3d]", chMagic, vMagic); MSGP(ch, 1, " Gems: [%3d] | Gems: [%3d]", chGems, vGems); MSGP(ch, 1, " | "); MSGP(ch, 1, " Zoo:[%3d] | Zoo:[%3d]", chZoo, vZoo); MSGP(ch, 3, " Creatures:[%3d] | Creatures:[%3d]", chCreatures, vCreatures); MSGP(ch, 1, " Your Current Hand:"); MSGP(ch, 1, " ------------------"); MSGP(ch, 2, " (cards that you can not play at this time are dimmed)"); MSGP(ch, 1, " Card 1: %s\"%s\" (%s) [Cost: %d %s]%s", Card1_color, chCard1.name, chCard1.description, chCard1.cost, chCard1.card_type, C_N); MSGP(ch, 1, " Card 2: %s\"%s\" (%s) [Cost: %d %s]%s", Card2_color, chCard2.name, chCard2.description, chCard2.cost, chCard2.card_type, C_N); MSGP(ch, 1, " Card 3: %s\"%s\" (%s) [Cost: %d %s]%s", Card3_color, chCard3.name, chCard3.description, chCard3.cost, chCard3.card_type, C_N); MSGP(ch, 1, " Card 4: %s\"%s\" (%s) [Cost: %d %s]%s", Card4_color, chCard4.name, chCard4.description, chCard4.cost, chCard4.card_type, C_N); MSGP(ch, 1, " Card 5: %s\"%s\" (%s) [Cost: %d %s]%s", Card5_color, chCard5.name, chCard5.description, chCard5.cost, chCard5.card_type, C_N); MSGP(ch, 1, " Card 6: %s\"%s\" (%s) [Cost: %d %s]%s", Card6_color, chCard6.name, chCard6.description, chCard6.cost, chCard6.card_type, C_N); return; } if (play_action == PLAY_QUIT) { MSGP(ch, 1, "Okay, you quit the game."); MSGP(vict, 1, "%s can't seem to handle the pressure... so %s quits the game!", GET_NAME(ch), HESHE(ch)); if (PLR_FLAGGED(ch, PLR_PLAYING_ALCAZAR)) REMOVE_BIT(PLR_FLAGS(ch), PLR_PLAYING_ALCAZAR); char szFindPlayerEntry[700]; char szDeletePlayerEntry[700]; snprintf(szFindPlayerEntry, sizeof(szFindPlayerEntry), "SELECT * FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", chGameID, GET_PLR_ID(ch)); if (my.Query(szFindPlayerEntry) > 0) { snprintf(szDeletePlayerEntry, sizeof(szDeletePlayerEntry), "DELETE FROM defined_database.alcazar_players WHERE GameID = '%d' AND PlayerID = '%d'", chGameID, GET_PLR_ID(ch)); My_result = MySQL__query(szDeletePlayerEntry); MySQL__endquery(My_result); } else MySQL__endquery(My_result); return; } if (play_action == PLAY_CARD) { if (CurrentTurn == 0) { MSGP(ch, 1, "It is not your turn right now."); return; } if (card_number < 1 || card_number > 6) { MSGP(ch, 1, "I'm sorry, but that is not a card number choice."); return; } // Card 1 if (card_number == 1) { // FREE? if (chCard1.cost_type == 0) play_the_cards(ch, vict, chGameID, chCard1.card_id, "Card1", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore); // Bricks ? else if (chCard1.cost_type == 1) { if (chCard1.cost > chBricks) { MSGP(ch, 1, "You don't have enough Bricks to play that card."); return; } else if (chCard1.cost <= chBricks) play_the_cards(ch, vict, chGameID, chCard1.card_id, "Card1", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore); }// Gems ? else if (chCard1.cost_type == 2) { if (chCard1.cost > chGems) { MSGP(ch, 1, "You don't have enough Gems to play that card."); return; } else if (chCard1.cost <= chGems) play_the_cards(ch, vict, chGameID, chCard1.card_id, "Card1", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore); }// Creatures ? else if (chCard1.cost_type == 3) { if (chCard1.cost > chCreatures) { MSGP(ch, 1, "You don't have enough Creatures to play that card."); return; } else if (chCard1.cost <= chCreatures) play_the_cards(ch, vict, chGameID, chCard1.card_id, "Card1", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore); } } // Card 2 if (card_number == 2) { // FREE? if (chCard2.cost_type == 0) play_the_cards(ch, vict, chGameID, chCard2.card_id, "Card2", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore); // Bricks ? else if (chCard2.cost_type == 1) { if (chCard2.cost > chBricks) { MSGP(ch, 1, "You don't have enough Bricks to play that card."); return; } else if (chCard2.cost <= chBricks) play_the_cards(ch, vict, chGameID, chCard2.card_id, "Card2", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore); }// Gems ? else if (chCard2.cost_type == 2) { if (chCard2.cost > chGems) { MSGP(ch, 1, "You don't have enough Gems to play that card."); return; } else if (chCard2.cost <= chGems) play_the_cards(ch, vict, chGameID, chCard2.card_id, "Card2", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore); }// Creatures ? else if (chCard2.cost_type == 3) { if (chCard2.cost > chCreatures) { MSGP(ch, 1, "You don't have enough Creatures to play that card."); return; } else if (chCard2.cost <= chCreatures) play_the_cards(ch, vict, chGameID, chCard2.card_id, "Card2", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore); } } // Card 3 if (card_number == 3) { // FREE? if (chCard3.cost_type == 0) play_the_cards(ch, vict, chGameID, chCard3.card_id, "Card3", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore); // Bricks ? else if (chCard3.cost_type == 1) { if (chCard3.cost > chBricks) { MSGP(ch, 1, "You don't have enough Bricks to play that card."); return; } else if (chCard3.cost <= chBricks) play_the_cards(ch, vict, chGameID, chCard3.card_id, "Card3", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore); }// Gems ? else if (chCard3.cost_type == 2) { if (chCard3.cost > chGems) { MSGP(ch, 1, "You don't have enough Gems to play that card."); return; } else if (chCard3.cost <= chGems) play_the_cards(ch, vict, chGameID, chCard3.card_id, "Card3", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore); }// Creatures ? else if (chCard3.cost_type == 3) { if (chCard3.cost > chCreatures) { MSGP(ch, 1, "You don't have enough Creatures to play that card."); return; } else if (chCard3.cost <= chCreatures) play_the_cards(ch, vict, chGameID, chCard3.card_id, "Card3", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore); } } // Card 4 if (card_number == 4) { // FREE? if (chCard4.cost_type == 0) play_the_cards(ch, vict, chGameID, chCard4.card_id, "Card4", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore); // Bricks ? else if (chCard4.cost_type == 1) { if (chCard4.cost > chBricks) { MSGP(ch, 1, "You don't have enough Bricks to play that card."); return; } else if (chCard4.cost <= chBricks) play_the_cards(ch, vict, chGameID, chCard4.card_id, "Card4", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore); }// Gems ? else if (chCard4.cost_type == 2) { if (chCard4.cost > chGems) { MSGP(ch, 1, "You don't have enough Gems to play that card."); return; } else if (chCard4.cost <= chGems) play_the_cards(ch, vict, chGameID, chCard4.card_id, "Card4", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore); }// Creatures ? else if (chCard4.cost_type == 3) { if (chCard4.cost > chCreatures) { MSGP(ch, 1, "You don't have enough Creatures to play that card."); return; } else if (chCard4.cost <= chCreatures) play_the_cards(ch, vict, chGameID, chCard4.card_id, "Card4", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore); } } // Card 5 if (card_number == 5) { // FREE? if (chCard5.cost_type == 0) play_the_cards(ch, vict, chGameID, chCard5.card_id, "Card5", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore); // Bricks ? else if (chCard5.cost_type == 1) { if (chCard5.cost > chBricks) { MSGP(ch, 1, "You don't have enough Bricks to play that card."); return; } else if (chCard5.cost <= chBricks) play_the_cards(ch, vict, chGameID, chCard5.card_id, "Card5", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore); }// Gems ? else if (chCard5.cost_type == 2) { if (chCard5.cost > chGems) { MSGP(ch, 1, "You don't have enough Gems to play that card."); return; } else if (chCard5.cost <= chGems) play_the_cards(ch, vict, chGameID, chCard5.card_id, "Card5", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore); }// Creatures ? else if (chCard5.cost_type == 3) { if (chCard5.cost > chCreatures) { MSGP(ch, 1, "You don't have enough Creatures to play that card."); return; } else if (chCard5.cost <= chCreatures) play_the_cards(ch, vict, chGameID, chCard5.card_id, "Card5", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore); } } // Card 6 if (card_number == 6) { // FREE? if (chCard6.cost_type == 0) play_the_cards(ch, vict, chGameID, chCard6.card_id, "Card6", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore); // Bricks ? else if (chCard6.cost_type == 1) { if (chCard6.cost > chBricks) { MSGP(ch, 1, "You don't have enough Bricks to play that card."); return; } else if (chCard6.cost <= chBricks) play_the_cards(ch, vict, chGameID, chCard6.card_id, "Card6", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore); }// Gems ? else if (chCard6.cost_type == 2) { if (chCard6.cost > chGems) { MSGP(ch, 1, "You don't have enough Gems to play that card."); return; } else if (chCard6.cost <= chGems) play_the_cards(ch, vict, chGameID, chCard6.card_id, "Card6", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore); }// Creatures ? else if (chCard6.cost_type == 3) { if (chCard6.cost > chCreatures) { MSGP(ch, 1, "You don't have enough Creatures to play that card."); return; } else if (chCard6.cost <= chCreatures) play_the_cards(ch, vict, chGameID, chCard6.card_id, "Card6", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore); } } } if (play_action == PLAY_PASS) { if (CurrentTurn == 0) { MSGP(ch, 1, "It is not your turn right now."); return; } perform_play_the_cards(ch, vict, chGameID, "CARD_PASS", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1); MSGP(ch, 1, "You PASS your turn to %s.", GET_NAME(vict)); MSGP(ch, 1, "It is now %s's turn.", GET_NAME(vict)); MSGP(vict, 1, "%s decides to PASS %s turn.", GET_NAME(ch), HISHER(ch)); MSGP(vict, 1, "It is now YOUR turn."); return; } if (play_action == PLAY_DISCARD) { if (CurrentTurn == 0) { MSGP(ch, 1, "It is not your turn right now."); return; } if (card_number == 1) perform_play_the_cards(ch, vict, chGameID, "Card1", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1); else if (card_number == 2) perform_play_the_cards(ch, vict, chGameID, "Card2", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1); else if (card_number == 3) perform_play_the_cards(ch, vict, chGameID, "Card3", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1); else if (card_number == 4) perform_play_the_cards(ch, vict, chGameID, "Card4", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1); else if (card_number == 5) perform_play_the_cards(ch, vict, chGameID, "Card5", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1); else if (card_number == 6) perform_play_the_cards(ch, vict, chGameID, "Card6", vQuarry, vMagic, vZoo, chQuarry, chMagic, chZoo, chGameScore, vGameScore, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1); else { MSGP(ch, 1, "I'm sorry, but that is not a card number choice."); return; } MSGP(ch, 1, "You DISCARD card number %d.", card_number); MSGP(ch, 1, "It is now %s's turn.", GET_NAME(vict)); MSGP(vict, 1, "%s decides to DISCARD one of %s cards.", GET_NAME(ch), HISHER(ch)); MSGP(vict, 1, "It is now YOUR turn."); return; } return; } return; } void delete_alcazar_games_from_sql(void) { MySQL my; char szQueryText[700]; char szDeletePlayerEntry[700]; MYSQL_RES *My_result = NULL; snprintf(szQueryText, sizeof(szQueryText), "SELECT * FROM defined_database.alcazar_players"); if (my.Query(szQueryText) > 0) { my.NextRow(); snprintf(szDeletePlayerEntry, sizeof(szDeletePlayerEntry), "DELETE FROM defined_database.alcazar_players"); My_result = MySQL__query(szDeletePlayerEntry); MySQL__endquery(My_result); } else MySQL__endquery(My_result); return; }