// options // // /30010 jokers!TRUE // /30010 jokers!FALSE // /30010 deal!default // /30010 deal!1 // /30010 deal!33 // // number of cards to deal can be a number after from 1 to 33 integer cards_to_deal_custom = 0; integer jokers = FALSE; integer num_cards = 52; integer game; integer deal_enable; float inc = 0.02; vector pos; integer cards_to_deal; integer deals; integer whos_turn; key dealer; integer dealer_num; key new_dealer; integer new_dealer_num; key pass_dealer; integer pass_dealer_num; string anglestring; string dealerstring; integer last_enables; list players; list starts; list incs; list angles; list cards; list huds; list hands; list turned_up; list player_nums; list hand1; list hand2; list hand3; list hand4; list enables; list undo; integer enable1; integer enable2; integer enable3; integer enable4; key hud1; key hud2; key hud3; key hud4; key player1; key player2; key player3; key player4; vector player1_marker_pos; vector player2_marker_pos; vector player3_marker_pos; vector player4_marker_pos; integer player1_played_count; integer player2_played_count; integer player3_played_count; integer player4_played_count; string angle1; string angle2; string angle3; string angle4; string angle5; string angle6; string angle7; string angle8; vector start1; vector start2; vector start3; vector start4; vector inc1; vector inc2; vector inc3; vector inc4; vector deal1; vector deal2; vector deal3; vector deal4; integer num_players; add_drawn(integer player_num, integer draw_num) { if(player_num == 1) { hand1 += draw_num; } else if(player_num == 2) { hand2 += draw_num; } else if(player_num == 3) { hand3 += draw_num; } else if(player_num == 4) { hand4 += draw_num; } } remove_discard(integer player_num, integer discard_num) { if(player_num == 1) { //remove discard from list integer i = 0; list temp = []; for(; i < llGetListLength(hand1); i++) { integer card_num = llList2Integer(hand1, i); if(discard_num != card_num) { temp += card_num; } } hand1 = [] + temp; } else if(player_num == 2) { //remove discard from list integer i = 0; list temp = []; for(; i < llGetListLength(hand2); i++) { integer card_num = llList2Integer(hand2, i); if(discard_num != card_num) { temp += card_num; } } hand2 = [] + temp; } else if(player_num == 3) { //remove discard from list integer i = 0; list temp = []; for(; i < llGetListLength(hand3); i++) { integer card_num = llList2Integer(hand3, i); if(discard_num != card_num) { temp += card_num; } } hand3 = [] + temp; } else if(player_num == 4) { //remove discard from list integer i = 0; list temp = []; for(; i < llGetListLength(hand4); i++) { integer card_num = llList2Integer(hand4, i); if(discard_num != card_num) { temp += card_num; } } hand4 = [] + temp; } } arrange_hand(integer player_num) { if(player_num == 1) { //arrange hand integer i = 0; for(; i < llGetListLength(hand1); i++) { integer card_num = llList2Integer(hand1, i); llRegionSay(30000, (string)card_num + "!" + angle1); vector d_pos = start1; d_pos.x += inc1.x*i; d_pos.y += inc1.y*i; d_pos.z += inc1.z*i; llRegionSay(30000, (string)card_num + "!" + (string)d_pos); } } else if(player_num == 2) { //arrange hand integer i = 0; for(; i < llGetListLength(hand2); i++) { integer card_num = llList2Integer(hand2, i); llRegionSay(30000, (string)card_num + "!" + angle2); vector d_pos = start2; d_pos.x += inc2.x*i; d_pos.y += inc2.y*i; d_pos.z += inc2.z*i; llRegionSay(30000, (string)card_num + "!" + (string)d_pos); } } else if(player_num == 3) { //arrange hand integer i = 0; for(; i < llGetListLength(hand3); i++) { integer card_num = llList2Integer(hand3, i); llRegionSay(30000, (string)card_num + "!" + angle3); vector d_pos = start3; d_pos.x += inc3.x*i; d_pos.y += inc3.y*i; d_pos.z += inc3.z*i; llRegionSay(30000, (string)card_num + "!" + (string)d_pos); } } else if(player_num == 4) { //arrange hand integer i = 0; for(; i < llGetListLength(hand4); i++) { integer card_num = llList2Integer(hand4, i); llRegionSay(30000, (string)card_num + "!" + angle4); vector d_pos = start4; d_pos.x += inc4.x*i; d_pos.y += inc4.y*i; d_pos.z += inc4.z*i; llRegionSay(30000, (string)card_num + "!" + (string)d_pos); } } } turn_it() { pos = llGetRootPosition(); integer card_num = llList2Integer(cards, llGetListLength(cards) - 1); llRegionSay(30000, (string)card_num + "!discard"); vector card_pos = ; llRegionSay(30000, (string)card_num + "!" + (string)card_pos); turned_up += card_num; list temp = []; integer i = 0; for(; i < llGetListLength(cards) - 1; i++) { temp += llList2Integer(cards, i); } cards = [] + temp; } play_it(integer player_num, integer card_num) { vector play_pos; if(player_num == 1) { play_pos = player1_marker_pos; play_pos.x += inc1.x * player1_played_count; play_pos.y += inc1.y * player1_played_count; play_pos.z += inc1.z * player1_played_count - 0.0041; llRegionSay(30000, (string)card_num + "!" + angle5); llRegionSay(30000, (string)card_num + "!" + (string)play_pos); player1_played_count++; } else if(player_num == 2) { play_pos = player2_marker_pos; play_pos.x += inc2.x * player2_played_count; play_pos.y += inc2.y * player2_played_count; play_pos.z += inc2.z * player2_played_count - 0.0041; llRegionSay(30000, (string)card_num + "!" + angle6); llRegionSay(30000, (string)card_num + "!" + (string)play_pos); player2_played_count++; } else if(player_num == 3) { play_pos = player3_marker_pos; play_pos.x += inc3.x * player3_played_count; play_pos.y += inc3.y * player3_played_count; play_pos.z += inc3.z * player3_played_count - 0.0041; llRegionSay(30000, (string)card_num + "!" + angle7); llRegionSay(30000, (string)card_num + "!" + (string)play_pos); player3_played_count++; } else if(player_num == 4) { play_pos = player4_marker_pos; play_pos.x += inc4.x * player4_played_count; play_pos.y += inc4.y * player4_played_count; play_pos.z += inc4.z * player4_played_count - 0.0041; llRegionSay(30000, (string)card_num + "!" + angle8); llRegionSay(30000, (string)card_num + "!" + (string)play_pos); player4_played_count++; } //llOwnerSay("player: " + (string)player_num + " @pos: " + (string)play_pos); } string left(string src, string divider) { integer index = llSubStringIndex( src, divider ); if(~index) return llDeleteSubString( src, index, -1); return src; } string right(string src, string divider) { integer index = llSubStringIndex( src, divider ); if(~index) return llDeleteSubString( src, 0, index + llStringLength(divider) - 1); return src; } list ListItemDelete(list mylist,string element_old) { integer placeinlist = llListFindList(mylist, [element_old]); if (placeinlist != -1) return llDeleteSubList(mylist, placeinlist, placeinlist); return mylist; } set_enables() { enables = []; if(enable1 == TRUE) { enables += enable1; } if(enable2 == TRUE) { enables += enable2; } if(enable3 == TRUE) { enables += enable3; } if(enable4 == TRUE) { enables += enable4; } } set_dealer() { if(dealer_num == 1) { dealerstring = (string)player1; anglestring = "<0.0, 0.0, 0.0>"; } else if(dealer_num == 2) { dealerstring = (string)player2; anglestring = "<0.0, 0.0, 270.0>"; } else if(dealer_num == 3) { dealerstring = (string)player3; anglestring = "<0.0, 0.0, 180.0>"; } else if(dealer_num == 4) { dealerstring = (string)player4; anglestring = "<0.0, 0.0, 90.0>"; } else if(dealer_num == 0) { dealerstring = (string)NULL_KEY; anglestring = "<5.0, 0.0, 0.0>"; } //gotta have this for dealer indicator llRegionSay(30001, "dealer!" + dealerstring + "~" + anglestring); } pass_turn() { integer i = 0; integer j; for(; i < llGetListLength(player_nums); i++) { if(whos_turn == llList2Integer(player_nums, i)) { j = i + 1; if(j > llGetListLength(player_nums) - 1) { j = 0; } } } whos_turn = llList2Integer(player_nums, j); set_turn(); } set_turn() { string turnanglestring; if(whos_turn == 1) { turnanglestring = "<0.0, 0.0, 0.0>"; } else if(whos_turn == 2) { turnanglestring = "<0.0, 0.0, 270.0>"; } else if(whos_turn == 3) { turnanglestring = "<0.0, 0.0, 180.0>"; } else if(whos_turn == 4) { turnanglestring = "<0.0, 0.0, 90.0>"; } else if(whos_turn == 0) { turnanglestring = "<5.0, 0.0, 0.0>"; } llRegionSay(30001, "indicate turn!" + turnanglestring); } set_initial_turn() { integer i = 0; integer j; for(; i < llGetListLength(players); i++) { integer search_player_num = llList2Integer(player_nums, i); if(search_player_num == dealer_num) { j = i + 1; if(j > llGetListLength(players) - 1) { j = 0; } } } whos_turn = llList2Integer(player_nums, j); set_turn(); } pass_deal() { if(pass_dealer == dealer) { integer i = 0; for(; i < llGetListLength(players); i++) { key search_player = llList2Key(players, i); if(search_player == pass_dealer) { //found dealer in player list integer j = i + 1; if(j > llGetListLength(players)-1) { j = 0; } new_dealer = llList2Key(players, j); new_dealer_num = llList2Integer(player_nums, j); } } dealer = new_dealer; dealer_num = new_dealer_num; set_dealer(); } } set_players() { // player variables, gather players players = []; starts = []; angles = []; incs = []; huds = []; hands = []; player_nums = []; if(player1 != NULL_KEY) { if(enable1 == TRUE) { players += player1; starts += start1; angles += angle1; incs += inc1; huds += hud1; hands += 1; player_nums += 1; } } if(player2 != NULL_KEY) { if(enable2 == TRUE) { players += player2; starts += start2; angles += angle2; incs += inc2; huds += hud2; hands += 2; player_nums += 2; } } if(player3 != NULL_KEY) { if(enable3 == TRUE) { players += player3; starts += start3; angles += angle3; incs += inc3; huds += hud3; hands += 3; player_nums += 3; } } if(player4 != NULL_KEY) { if(enable4 == TRUE) { players += player4; starts += start4; angles += angle4; incs += inc4; huds += hud4; hands += 4; player_nums += 4; } } num_players = llGetListLength(players); // cards per player if(cards_to_deal_custom == 0) { if(num_players == 2 || num_players == 1) { cards_to_deal = 11; } else if(num_players == 3 || num_players == 4) { cards_to_deal = 7; } else { cards_to_deal = 0; } } else { cards_to_deal = cards_to_deal_custom; } if(num_players == 0) { dealer = NULL_KEY; dealer_num = 0; } else if(dealer == NULL_KEY) { dealer = llList2Key(players, 0); dealer_num = llList2Integer(player_nums, 0); set_dealer(); } else { //pass_dealer = dealer; //pass_deal(); } // enables if(llGetListLength(enables) == 0) { game = FALSE; } if(llGetListLength(enables) > 0 && last_enables != llGetListLength(enables) && game != TRUE) { game = FALSE; llRegionSay(30001, "shuffle enabled!TRUE~" + dealerstring); } else { llRegionSay(30001, "shuffle enabled!FALSE~" + dealerstring); } last_enables = llGetListLength(enables); // tell me about it set_text(); } do_deal() { integer count = num_players * cards_to_deal; integer deal_to = 0; integer inc_count = 0; integer card_index = llGetListLength(cards) - 1; while(count > 0) { deal_to++; if(deal_to == num_players) { deal_to = 0; } vector card_pos = llList2Vector(starts, deal_to); vector inc = llList2Vector(incs, deal_to); card_pos.x += inc.x * llFloor(inc_count/num_players); card_pos.y += inc.y * llFloor(inc_count/num_players); card_pos.z += inc.z * llFloor(inc_count/num_players); string angle = llList2String(angles, deal_to); integer card_num = llList2Integer(cards, card_index); llRegionSay(30000, (string)card_num + "!" + angle); llRegionSay(30000, (string)card_num + "!" + (string)card_pos); //llRegionSay(30001, "sub!" + (string)(num_players * cards_to_deal)); key dest_hud = llList2Key(huds, deal_to); llRegionSay(30003, "add!" + (string)dest_hud + "." + (string)card_num); integer hand = llList2Integer(hands, deal_to); if(hand == 1) { hand1 += card_num; } else if(hand == 2) { hand2 += card_num; } else if(hand == 3) { hand3 += card_num; } else if(hand == 4) { hand4 += card_num; } card_index--; inc_count++; count--; } list temp = []; //integer i = 0; //for(; i < (52 - num_players * cards_to_deal); i++); //{ // temp += llList2Integer(cards, i); //} while(card_index > -1) { temp += llList2Integer(cards, card_index); card_index--; } cards = [] + temp; game = TRUE; deal_enable = FALSE; string dealerstring = (string)dealer; llRegionSay(30001, "shuffle enabled!FALSE~" + dealerstring); llSetPrimitiveParams([PRIM_COLOR, ALL_SIDES, <1.0, 1.0, 1.0>, 1.0]); undo = []; deals++; } set_starts() { pos = llGetRootPosition(); start1 = pos + <158.3853, 117.9692, 28.2011 + 0.005> - <158.2539, 118.4321, 28.2001>; start2 = pos + <157.9469, 118.4298, 28.2011 + 0.005> - <158.2539, 118.4321, 28.2001>; start3 = pos + <158.3853, 118.8606, 28.2011 + 0.005> - <158.2539, 118.4321, 28.2001>; start4 = pos + <158.8298, 118.4298, 28.2011 + 0.005> - <158.2539, 118.4321, 28.2001>; } set_hands() { hand1 = []; hand2 = []; hand3 = []; hand4 = []; } set_text() { llSetText(" ", <0.0, 1.0, 0.0>, 1.0); string gamestring; if(game == TRUE) { gamestring = "game in progress\n"; } else { gamestring = "no game\n"; } string bigstring = gamestring + "enables: " + (string)llGetListLength(enables) + "\n" + "players: " + (string)llGetListLength(players) + "\n" + "deals: " + (string)deals + "\n" + "cards: " + (string)llGetListLength(cards) + "\n" + "discards: " + (string)llGetListLength(turned_up) + "\n" + "undos: " + (string)llGetListLength(undo); llRegionSay(30001, "set text!" + bigstring); } park_jokers() { pos = llGetRootPosition(); pos.z -= 0.01; llRegionSay(30000, "53!down"); llRegionSay(30000, "53" + (string)pos); pos.z -= 0.001; llRegionSay(30000, "54!down"); llRegionSay(30000, "54" + (string)pos); } default { state_entry() { llListen(30002, "", "", ""); llListen(30001, "", "", ""); llListen(30005, "", "", ""); llListen(30010, "", "", ""); player1 = NULL_KEY; player2 = NULL_KEY; player3 = NULL_KEY; player4 = NULL_KEY; players = []; num_players = 0; enable1 = FALSE; enable2 = FALSE; enable3 = FALSE; enable4 = FALSE; enables = []; set_starts(); angle1 = "south"; angle2 = "west"; angle3 = "north"; angle4 = "east"; angle5 = "south-face"; angle6 = "west-face"; angle7 = "north-face"; angle8 = "east-face"; inc1 = ; inc2 = <0.0, (-inc), 0.0>; inc3 = <(-inc), 0.0, 0.0>; inc4 = <0.0, inc, 0.0>; deals = 0; cards = []; turned_up = []; undo = []; last_enables = 0; dealer = NULL_KEY; park_jokers(); set_text(); } touch_start(integer total_number) { integer i = 0; for(; i < total_number; i++) { if(game == FALSE && deal_enable = TRUE && llDetectedKey(i) == dealer) { do_deal(); set_initial_turn(); set_text(); } } } listen(integer channel, string name, key id, string message) { string msg1 = left(message, "!"); string msg2 = right(message, "!"); if(name == "bar-stool-1") { key player = (key)message; if(player == NULL_KEY) { llRegionSay(30003, "unreg!" + (string)hud1); } player1 = player; //enable1 = FALSE; //deals = 0; set_players(); } if(name == "bar-stool-2") { key player = (key)message; if(player == NULL_KEY) { llRegionSay(30003, "unreg!" + (string)hud2); } player2 = player; //enable2 = FALSE; //deals = 0; set_players(); } if(name == "bar-stool-3") { key player = (key)message; if(player == NULL_KEY) { llRegionSay(30003, "unreg!" + (string)hud3); } player3 = player; //enable3 = FALSE; //deals = 0; set_players(); } if(name == "bar-stool-4") { key player = (key)message; if(player == NULL_KEY) { llRegionSay(30003, "unreg!" + (string)hud4); } player4 = player; //enable4 = FALSE; //deals = 0; set_players(); } if(name == "deck" && channel == 30001 && message == "clear!cards") { cards = []; turned_up = []; deal_enable = FALSE; llSetPrimitiveParams([PRIM_COLOR, ALL_SIDES, <1.0, 1.0, 1.0>, 1.0]); llRegionSay(30003, "clear!cards"); set_starts(); //set_players(); set_hands(); } if(name == "deck" && channel == 30001 && msg1 =="add") { cards += (integer)msg2; set_text(); if(llGetListLength(cards) == 52) { deal_enable = TRUE; llSetPrimitiveParams([PRIM_COLOR, ALL_SIDES, <0.0, 1.0, 0.0>, 1.0]); } } if(name == "deck" && channel == 30001 && message == "turn_one_up") { turn_it(); set_text(); } if(name == "rummy-hud" && msg1 == "register") { integer i = 0; integer player_found = FALSE; key search_player = (key)msg2; if(search_player == player1) { player_found = TRUE; hud1 = id; set_players(); llRegionSay(30003, "you are seated!" + (string)search_player); } if(search_player == player2) { player_found = TRUE; hud2 = id; set_players(); llRegionSay(30003, "you are seated!" + (string)search_player); } if(search_player == player3) { player_found = TRUE; hud3 = id; set_players(); llRegionSay(30003, "you are seated!" + (string)search_player); } if(search_player == player4) { player_found = TRUE; hud4 = id; set_players(); llRegionSay(30003, "you are seated!" + (string)search_player); } } if(name == "rummy-hud" && msg1 == "discard") { integer i = 0; integer valid_hud = FALSE; integer player_num; for(; i < llGetListLength(huds); i++) { key hud_num = llList2Key(huds, i); if(hud_num == id) { player_num = llList2Integer(player_nums, i); //llOwnerSay((string)player_num); valid_hud = TRUE; } } if(valid_hud == TRUE) { cards += (integer)msg2; turn_it(); remove_discard(player_num, (integer)msg2); arrange_hand(player_num); set_text(); } undo = []; pass_turn(); } if(name == "rummy-hud" && message == "draw") { if(llGetListLength(cards) > 0) { integer i = 0; integer valid_hud = FALSE; integer player_num; for(; i < llGetListLength(huds); i++) { key hud_num = llList2Key(huds, i); if(hud_num == id) { player_num = llList2Integer(player_nums, i); valid_hud = TRUE; } } if(valid_hud == TRUE) { integer draw_num = llList2Integer(cards, llGetListLength(cards) -1); llRegionSay(30003, "add!" + (string)id + "." + (string)draw_num); add_drawn(player_num, draw_num); arrange_hand(player_num); } i = 0; list temp = []; for(; i < llGetListLength(cards) - 1; i++) { temp += llList2Integer(cards, i); } cards = [] + temp; set_text(); } } if(name == "rummy-hud" && message == "pickup") { if(llGetListLength(turned_up) > 0) { integer i = 0; integer valid_hud = FALSE; integer player_num; for(; i < llGetListLength(huds); i++) { key hud_num = llList2Key(huds, i); if(hud_num == id) { player_num = llList2Integer(player_nums, i); valid_hud = TRUE; } } if(valid_hud == TRUE) { integer draw_num = llList2Integer(turned_up, llGetListLength(turned_up) -1); llRegionSay(30003, "add!" + (string)id + "." + (string)draw_num); add_drawn(player_num, draw_num); arrange_hand(player_num); } i = 0; list temp = []; for(; i < llGetListLength(turned_up) - 1; i++) { temp += llList2Integer(turned_up, i); } turned_up = [] + temp; set_text(); } } if(name == "rummy-hud" && msg1 == "playdown") { integer i = 0; integer valid_hud = FALSE; integer player_num; for(; i < llGetListLength(huds); i++) { key hud_num = llList2Key(huds, i); if(hud_num == id) { player_num = llList2Integer(player_nums, i); valid_hud = TRUE; } } if(valid_hud == TRUE) { if(player_num == whos_turn) { undo += (integer)msg2; } play_it(player_num, (integer)msg2); remove_discard(player_num, (integer)msg2); arrange_hand(player_num); set_text(); } } if(name == "deck" && msg1 == "undo") { key undoer = (key)msg2; integer i = 0; integer valid_player = FALSE; integer player_num; integer num; key hud_key; for(; i < llGetListLength(players); i++) { key player = llList2Key(players, i); num = llList2Integer(player_nums, i); if(player == undoer && num == whos_turn) { player_num = num; hud_key = llList2Key(huds, i); valid_player = TRUE; } } if(valid_player == TRUE) { i = 0; for(; i < llGetListLength(undo); i++) { integer draw_num = llList2Integer(undo, i); llRegionSay(30003, "add!" + (string)hud_key + "." + (string)draw_num); add_drawn(player_num, draw_num); arrange_hand(player_num); } undo = []; set_text(); } } if(name == "player-1-marker" && msg1 == "enable me") { if(player1 != NULL_KEY) { if(msg2 == "TRUE") { enable1 = TRUE; llRegionSay(30002, "enable1!TRUE"); } if(msg2 == "FALSE") { enable1 = FALSE; llRegionSay(30002, "enable1!FALSE"); } set_enables(); set_players(); } } if(name == "player-2-marker" && msg1 == "enable me") { if(player2 != NULL_KEY) { if(msg2 == "TRUE") { enable2 = TRUE; llRegionSay(30002, "enable2!TRUE"); } if(msg2 == "FALSE") { enable2 = FALSE; llRegionSay(30002, "enable2!FALSE"); } set_enables(); set_players(); } } if(name == "player-3-marker" && msg1 == "enable me") { if(player3 != NULL_KEY) { if(msg2 == "TRUE") { enable3 = TRUE; llRegionSay(30002, "enable3!TRUE"); } if(msg2 == "FALSE") { enable3 = FALSE; llRegionSay(30002, "enable3!FALSE"); } set_enables(); set_players(); } } if(name == "player-4-marker" && msg1 == "enable me") { if(player4 != NULL_KEY) { if(msg2 == "TRUE") { enable4 = TRUE; llRegionSay(30002, "enable4!TRUE"); } if(msg2 == "FALSE") { enable4 = FALSE; llRegionSay(30002, "enable4!FALSE"); } set_enables(); set_players(); } } if(name == "dealer-indicator" && msg1 == "pass deal") { pass_dealer = (key)msg2; pass_deal(); } if(name == "deck" && message == "restock") { vector root_pos = llGetRootPosition(); integer num; // in reverse order, all cards but last in turned_up integer i = llGetListLength(turned_up) - 2; if(i > -1) { for(; i > -1; i--) { cards += llList2Integer(turned_up, i); } //last repositioned to first in turned up num = llList2Integer(turned_up, llGetListLength(turned_up) - 1); vector card_pos = ; llRegionSay(30000, (string)num + "!" + (string)card_pos); turned_up = [] + num; //restack i = 0; for(; i < llGetListLength(cards); i++) { card_pos.x = root_pos.x; card_pos.y = root_pos.y; card_pos.z = root_pos.z + i * 0.00025; num = llList2Integer(cards, i); llRegionSay(30000, (string)num + "!" + (string)card_pos); llRegionSay(30000, (string)num + "!down"); } set_text(); } } if(channel == 30005) { if(name == "player-1-marker") { player1_marker_pos = (vector)message; player1_played_count = 0; } if(name == "player-2-marker") { player2_marker_pos = (vector)message; player2_played_count = 0; } if(name == "player-3-marker") { player3_marker_pos = (vector)message; player3_played_count = 0; } if(name == "player-4-marker") { player4_marker_pos = (vector)message; player4_played_count = 0; } } if(channel == 30010 && id == llGetOwner()) { string msg1 = left(message, "!"); string msg2 = right(message, "!"); string msg3 = left(msg2, "~"); string msg4 = right(msg2, "~"); if(msg1 == "jokers") { if(msg2 == "TRUE") { num_cards = 54; llRegionSay(30001, "num_cards!54"); } else if(msg2 == "FALSE") { num_cards = 52; llRegionSay(30001, "num_cards!52"); park_jokers(); } } if(msg1 == "deal") { if(msg2 == "default") { cards_to_deal_custom = 0; } else { integer num = (integer)msg2; if(num < 1) { num = 1; } else if(num > 33) { num = 33; } cards_to_deal_custom = num; } } } } }