if ($ga['play_time'] > 0 && $gi['winner'] == 0) { $uin = $db->fetch_row($db->query("SELECT username FROM users WHERE userid={$ga['turn']}")); $username = $uin['username']; if ($username) { //Check the clock - 35 seconds per move //UPDATE - now time is a variable amount set by user $turntime = $ga['time_left']; if ($turntime < 35) { $turntime = 35; } $lastmove = $ga['play_time']; $ctime = time(); $timespent = $ctime - $lastmove; $timeleft = $turntime - $timespent; if ($timeleft <= 0) { $movelist = move_list(0, 0, $gi['listofmoves'], $gi['posa'], 0, 0); $db->query("UPDATE st_game SET listofmoves = '{$movelist}' WHERE st_room={$roomid}"); //lost their turn toggle_turn($roomid); $txt = "{$username} ran out of time and lost his/her move."; $db->query("INSERT INTO {$gpre}chat ({$gpre}room, timestamp, txt) VALUES({$roomid}, unix_timestamp(), '{$txt}')"); if ($ga['turn'] == $ga['p1']) { $missfield = "p1missed"; $missuserid = $ga['p1']; } if ($ga['turn'] == $ga['p2']) { $missfield = "p2missed"; $missuserid = $ga['p2']; } if ($ga["{$missfield}"] >= 2) { $db->query("UPDATE {$gpre}room SET p1missed=0,p2missed=0,pleft={$missuserid} WHERE id={$roomid}");
function make_move($move, $userid, $roomid) { global $db, $ir; $game = $db->query("SELECT * FROM st_room WHERE id={$roomid}", $c) or die("1"); $ga = $db->fetch_row($game); $game2 = $db->query("SELECT * FROM st_game WHERE st_room={$roomid}", $c) or die("1"); $gijoe = $db->fetch_row($game2); $turn = $ga['turn']; $red = $gijoe['red']; if ($gijoe['p1'] == $red) { $blue = $gijoe['p2']; } else { $blue = $gijoe['p1']; } $pselect = $gijoe['pselected']; $uname = $db->fetch_row($db->query("SELECT username FROM users WHERE userid={$userid}")); $attackersusername = $uname['username']; if ($userid == $red) { $uname = $db->fetch_row($db->query("SELECT username FROM users WHERE userid={$blue}")); } else { $uname = $db->fetch_row($db->query("SELECT username FROM users WHERE userid={$red}")); } $defendersusername = $uname['username']; if ($turn == $userid) { if ($userid == $red) { $loc = "a"; $antiloc = "b"; } else { $loc = "b"; $antiloc = "a"; } if ($pselect == $move) { $db->query("UPDATE st_game SET pselected = 0 WHERE st_room={$roomid}"); die; } //deselect their piece if ($gijoe[$loc . $move] != 0) { $db->query("UPDATE st_game SET pselected = {$move} WHERE st_room={$roomid}"); die; } //basic moves //pselect working and deselect working basic moves so normal pieces can move. $piecetomove = $gijoe[$loc . $pselect]; //out of bounds if ($move == 56 || $move == 46 || $move == 53 || $move == 43) { die; } if ($move < 11 || $move > 88 || $move == 19 || $move == 29 || $move == 39 || $move == 49 || $move == 59 || $move == 69 || $move == 79) { die; } //movement of linear pieces if (abs($piecetomove) > 0 && abs($piecetomove) < 7 || abs($piecetomove) == 8) { if ($gijoe[$antiloc . $move] != 0) { //if the oppent has a piece there ATTACK if (valid_move($pselect, $move) == 1) { $piece1 = $gijoe[$loc . $pselect]; //attacker $piece2 = $gijoe[$antiloc . $move]; //defender if (attack_piece(abs($piece1), abs($piece2)) == 2) { $startingspot = $loc . $pselect; //start spot $finishingspot = $loc . $move; //finishing spot $revealedpiece = "-" . abs($gijoe[$startingspot]); // reveal the piece $opponentsspot = $antiloc . $move; // losers spot $Attackname = number_to_name(abs($piece1)); // name of attackers piece $Defendname = number_to_name(abs($piece2)); // name of defenders piece $text = $attackersusername . "\\'s " . $Attackname . " (" . abs($piece1) . ") killed " . $defendersusername . "\\'s " . $Defendname . " (" . abs($piece2) . ")"; $piecelost = "p" . $loc . abs($piece2); //piece captured $newmovelist = move_list($pselect, $move, $gijoe['listofmoves'], $gijoe['posa'], $attackersusername, $defendersusername); $db->query("UPDATE st_game SET listofmoves = '{$newmovelist}', {$piecelost} = {$piecelost} +1,{$startingspot} = 0, {$finishingspot} = {$revealedpiece}, {$opponentsspot} = 0, lastmove = {$move}, battletxt = '{$text}' WHERE st_room={$roomid}"); toggle_turn($roomid); } else { if (attack_piece(abs($piece1), abs($piece2)) == 1) { $startingspot = $loc . $pselect; $finishingspot = $antiloc . $move; $piecesname = number_to_name(abs($piece1)); // name of the two pieces $text = "Both " . $piecesname . "\\'s (" . abs($piece1) . ") were killed"; $piecelost = "p" . $loc . abs($piece2); // piece captured $piecelost2 = "p" . $antiloc . abs($piece1); //piece lost $newmovelist = move_list($pselect, $move, $gijoe['listofmoves'], $gijoe['posa'], $attackersusername, $defendersusername); $db->query("UPDATE st_game SET listofmoves = '{$newmovelist}', {$piecelost} = {$piecelost} +1,{$piecelost2} = {$piecelost2} +1,{$startingspot} = 0, {$finishingspot} = 0, lastmove = {$move}, battletxt = '{$text}' WHERE st_room={$roomid}"); toggle_turn($roomid); } else { if (attack_piece(abs($piece1), abs($piece2)) == 3) { $winningpiece = number_to_name(abs($piece1)); // name of the two pieces $text = $attackersusername . "\\'s " . $winnpiece . " (" . abs($piece1) . ") captured the flag"; $newmovelist = move_list($pselect, $move, $gijoe['listofmoves'], $gijoe['posa'], $attackersusername, $defendersusername); $db->query("UPDATE st_game SET listofmoves = '{$newmovelist}', battletxt = '{$text}' WHERE st_room={$roomid}"); award_win($roomid, $userid); } else { $Attackname = number_to_name(abs($piece1)); // name of attackers piece $Defendname = number_to_name(abs($piece2)); // name of defenders piece $text = $attackersusername . "\\'s " . $Attackname . " (" . abs($piece1) . ") lost to " . $defendersusername . "\\'s " . $Defendname . " (" . abs($piece2) . ")"; $startingspot = $loc . $pselect; $finishingspot = $antiloc . $move; $revealedpiece = "-" . abs($gijoe[$finishingspot]); $piecelost = "p" . $antiloc . abs($piece1); $newmovelist = move_list($pselect, $move, $gijoe['listofmoves'], $gijoe['posa'], $attackersusername, $defendersusername); $db->query("UPDATE st_game SET listofmoves = '{$newmovelist}', {$piecelost} = {$piecelost} +1,{$startingspot} = 0, {$finishingspot} = {$revealedpiece}, lastmove = {$move}, battletxt = '{$text}' WHERE st_room={$roomid}"); toggle_turn($roomid); } } } } } else { if ($gijoe[$loc . $move] == 0) { if (valid_move($pselect, $move) == 1) { $startingspot = $loc . $pselect; $finishingspot = $loc . $move; $piecetomove = $gijoe[$startingspot]; $newmovelist = move_list($pselect, $move, $gijoe['listofmoves'], $gijoe['posa'], $attackersusername, $defendersusername); $db->query("UPDATE st_game SET listofmoves = '{$newmovelist}', {$startingspot} = 0, {$finishingspot} = {$piecetomove}, pselected = 0, lastmove = {$move}, battletxt = '' WHERE st_room={$roomid}"); toggle_turn($roomid); } } } } //movement of scout if (abs($piecetomove) == 7) { if ($gijoe[$antiloc . $move] != 0) { //if the oppent has a piece there ATTACK $scoutresults = array(); $scoutresults = valid_scout($pselect, $move); $differenceofspots = $scoutresults['distance']; $direction = $scoutresults['direction']; if ($differenceofspots > 0) { $openspots = 1; for ($i = 1; $i < $differenceofspots; $i++) { if ($direction == 4) { $checklake = $pselect + $i; if ($checklake == 56 || $checklake == 46 || $checklake == 53 || $checklake == 43) { $openspots = 0; } $temp1 = $loc . ($pselect + $i); $temp2 = $antiloc . ($pselect + $i); $openplayer = $gijoe[$temp1]; $openopponent = $gijoe[$temp2]; if ($openplayer != 0 || $openopponent != 0) { $openspots = 0; } } if ($direction == 3) { $checklake = $pselect - $i; if ($checklake == 56 || $checklake == 46 || $checklake == 53 || $checklake == 43) { $openspots = 0; } $temp1 = $loc . ($pselect - $i); $temp2 = $antiloc . ($pselect - $i); $openplayer = $gijoe[$temp1]; $openopponent = $gijoe[$temp2]; if ($openplayer != 0 || $openopponent != 0) { $openspots = 0; } } if ($direction == 2) { $movevalue = $i . "0"; $checklake = $pselect - $movevalue; if ($checklake == 56 || $checklake == 46 || $checklake == 53 || $checklake == 43) { $openspots = 0; } $temp1 = $loc . ($pselect - $movevalue); $temp2 = $antiloc . ($pselect - $movevalue); $openplayer = $gijoe[$temp1]; $openopponent = $gijoe[$temp2]; if ($openplayer != 0 || $openopponent != 0) { $openspots = 0; } } if ($direction == 1) { $movevalue = $i . "0"; $checklake = $pselect + $movevalue; if ($checklake == 56 || $checklake == 46 || $checklake == 53 || $checklake == 43) { $openspots = 0; } $temp1 = $loc . ($pselect + $movevalue); $temp2 = $antiloc . ($pselect + $movevalue); $openplayer = $gijoe[$temp1]; $openopponent = $gijoe[$temp2]; if ($openplayer != 0 || $openopponent != 0) { $openspots = 0; } } } if ($openspots == 1) { $piece1 = $gijoe[$loc . $pselect]; //attacker $piece2 = $gijoe[$antiloc . $move]; //defender if (attack_piece(abs($piece1), abs($piece2)) == 2) { $startingspot = $loc . $pselect; //start spot $finishingspot = $loc . $move; //finishing spot $revealedpiece = "-" . abs($gijoe[$startingspot]); // reveal the piece $opponentsspot = $antiloc . $move; // losers spot $Attackname = number_to_name(abs($piece1)); // name of attackers piece $Defendname = number_to_name(abs($piece2)); // name of defenders piece $text = $attackersusername . "\\'s " . $Attackname . " (" . abs($piece1) . ") killed " . $defendersusername . "\\'s " . $Defendname . " (" . abs($piece2) . ")"; $piecelost = "p" . $loc . abs($piece2); //piece captured $newmovelist = move_list($pselect, $move, $gijoe['listofmoves'], $gijoe['posa'], $attackersusername, $defendersusername); $db->query("UPDATE st_game SET listofmoves = '{$newmovelist}', {$piecelost} = {$piecelost} +1,{$startingspot} = 0, {$finishingspot} = {$revealedpiece}, {$opponentsspot} = 0, lastmove = {$move}, battletxt = '{$text}' WHERE st_room={$roomid}"); toggle_turn($roomid); } else { if (attack_piece(abs($piece1), abs($piece2)) == 1) { $startingspot = $loc . $pselect; $finishingspot = $antiloc . $move; $piecesname = number_to_name(abs($piece1)); // name of the two pieces $text = "Both " . $piecesname . "\\'s (" . abs($piece1) . ") were killed"; $piecelost = "p" . $loc . abs($piece2); // piece captured $piecelost2 = "p" . $antiloc . abs($piece1); //piece lost $newmovelist = move_list($pselect, $move, $gijoe['listofmoves'], $gijoe['posa'], $attackersusername, $defendersusername); $db->query("UPDATE st_game SET listofmoves = '{$newmovelist}', {$piecelost} = {$piecelost} +1,{$piecelost2} = {$piecelost2} +1,{$startingspot} = 0, {$finishingspot} = 0, lastmove = {$move}, battletxt = '{$text}' WHERE st_room={$roomid}"); toggle_turn($roomid); } else { if (attack_piece(abs($piece1), abs($piece2)) == 3) { $winningpiece = number_to_name(abs($piece1)); // name of the two pieces $text = $attackersusername . "\\'s " . $Attackname . "captured the flag"; $newmovelist = move_list($pselect, $move, $gijoe['listofmoves'], $gijoe['posa'], $attackersusername, $defendersusername); $db->query("UPDATE st_game SET listofmoves = '{$newmovelist}', battletxt = '{$text}' WHERE st_room={$roomid}"); award_win($roomid, $userid); } else { $Attackname = number_to_name(abs($piece1)); // name of attackers piece $Defendname = number_to_name(abs($piece2)); // name of defenders piece $text = $attackersusername . "\\'s " . $Attackname . " (" . abs($piece1) . ") lost to " . $defendersusername . "\\'s " . $Defendname . " (" . abs($piece2) . ")"; $startingspot = $loc . $pselect; $finishingspot = $antiloc . $move; $revealedpiece = "-" . abs($gijoe[$finishingspot]); $piecelost = "p" . $antiloc . abs($piece1); $newmovelist = move_list($pselect, $move, $gijoe['listofmoves'], $gijoe['posa'], $attackersusername, $defendersusername); $db->query("UPDATE st_game SET listofmoves = '{$newmovelist}', {$piecelost} = {$piecelost} +1,{$startingspot} = 0, {$finishingspot} = {$revealedpiece}, lastmove = {$move}, battletxt = '{$text}' WHERE st_room={$roomid}"); toggle_turn($roomid); } } } } } } else { if ($gijoe[$loc . $move] == 0) { $scoutresults = array(); $scoutresults = valid_scout($pselect, $move); $differenceofspots = $scoutresults['distance']; $direction = $scoutresults['direction']; if ($differenceofspots > 0) { $openspots = 1; for ($i = 1; $i < $differenceofspots; $i++) { if ($direction == 4) { $checklake = $pselect + $i; if ($checklake == 56 || $checklake == 46 || $checklake == 53 || $checklake == 43) { $openspots = 0; } $temp1 = $loc . ($pselect + $i); $temp2 = $antiloc . ($pselect + $i); $openplayer = $gijoe[$temp1]; $openopponent = $gijoe[$temp2]; if ($openplayer != 0 || $openopponent != 0) { $openspots = 0; } } if ($direction == 3) { $checklake = $pselect - $i; if ($checklake == 56 || $checklake == 46 || $checklake == 53 || $checklake == 43) { $openspots = 0; } $temp1 = $loc . ($pselect - $i); $temp2 = $antiloc . ($pselect - $i); $openplayer = $gijoe[$temp1]; $openopponent = $gijoe[$temp2]; if ($openplayer != 0 || $openopponent != 0) { $openspots = 0; } } if ($direction == 2) { $movevalue = $i . "0"; $checklake = $pselect - $movevalue; if ($checklake == 56 || $checklake == 46 || $checklake == 53 || $checklake == 43) { $openspots = 0; } $temp1 = $loc . ($pselect - $movevalue); $temp2 = $antiloc . ($pselect - $movevalue); $openplayer = $gijoe[$temp1]; $openopponent = $gijoe[$temp2]; if ($openplayer != 0 || $openopponent != 0) { $openspots = 0; } } if ($direction == 1) { $movevalue = $i . "0"; $checklake = $pselect - $movevalue; if ($checklake == 56 || $checklake == 46 || $checklake == 53 || $checklake == 43) { $openspots = 0; } $temp1 = $loc . ($pselect + $movevalue); $temp2 = $antiloc . ($pselect + $movevalue); $openplayer = $gijoe[$temp1]; $openopponent = $gijoe[$temp2]; if ($openplayer != 0 || $openopponent != 0) { $openspots = 0; } } } if ($openspots == 1) { $startingspot = $loc . $pselect; $finishingspot = $loc . $move; $piecetomove = $gijoe[$startingspot]; $text = ""; $newmovelist = move_list($pselect, $move, $gijoe['listofmoves'], $gijoe['posa'], $attackersusername, $defendersusername); $db->query("UPDATE st_game SET listofmoves = '{$newmovelist}', {$startingspot} = 0, {$finishingspot} = {$piecetomove}, pselected = 0, lastmove = {$move}, battletxt = '{$text}' WHERE st_room={$roomid}"); toggle_turn($roomid); } } } } } } }