function removeUnit($getPage_connection2) { if ($_SESSION["action_id"] >= 1) { $unitInfoW = getUnitInfoByID($getPage_connection2, $_SESSION["action_id"]); // is it a valid entity? if ($unitInfoW["continent"] == $_SESSION["continent_id"] && $unitInfoW["xpos"] == $_SESSION["xpos"] && $unitInfoW["ypos"] == $_SESSION["ypos"]) { // is it owned by current player? if ($unitInfoW["owner"] == $_SESSION["nation_id"]) { $_SESSION["success_message"] = "Player's unit " . $unitInfoW["name"] . " has been removed successfully!"; $unitTypeInfoW = getUnitTypeInfo($getPage_connection2, $unitInfoW["type"]); $nationInfo1 = getNationInfo($getPage_connection2, $_SESSION["nation_id"]); $new_goods = array(0 => 0); for ($zz = 0; $zz < count($nationInfo1["goods"]); $zz++) { $new_goods[$zz] = $nationInfo1["goods"][$zz] + $unitTypeInfoW["goodsRequired"][$zz]; } // for $new_money = $nationInfo1["money"] + $unitTypeInfoW["baseCost"]; $new_food = $nationInfo1["food"] + $unitTypeInfoW["foodRequired"]; setNationInfo($getPage_connection2, $nationInfo1["id"], $nationInfo1["name"], $nationInfo1["home"], $nationInfo1["formal"], $nationInfo1["flag"], $nationInfo1["production"], $new_money, $nationInfo1["debt"], $nationInfo1["happiness"], $new_food, $nationInfo1["authority"], $nationInfo1["authorityChanged"], $nationInfo1["economy"], $nationInfo1["economyChanged"], $nationInfo1["organizations"], $nationInfo1["invites"], $new_goods, $nationInfo1["resources"], $nationInfo1["population"], $nationInfo1["strike"]); deleteUnitInfo($getPage_connection2, $_SESSION["action_id"], $_SESSION["continent_id"], $_SESSION["xpos"], $_SESSION["ypos"]); } else { $_SESSION["warning_message"] = "Cannot complete action: unit is not owned by current player."; } // else } else { $_SESSION["warning_message"] = "Cannot complete action: unit is not valid."; } // else } else { $_SESSION["warning_message"] = "Cannot complete action: unit is not valid."; } // else }
function combat($getPage_connection2, $continent, $xpos, $ypos, $attacker, $defender, $amphibian) { if ($continent >= 1 && $xpos >= 1 && $ypos >= 1 && $attacker["id"] >= 1 && $defender["id"] >= 1 && $amphibian >= 0) { $tileInfoB = getTileInfo($getPage_connection2, $continent, $xpos, $ypos); $terrainInfoB = getTerrainInfo($getPage_connection2, $tileInfoB["terrain"]); $unitTypeInfoAttacker = getUnitTypeInfo($getPage_connection2, $attacker["type"]); $unitTypeInfoDefender = getUnitTypeInfo($getPage_connection2, $defender["type"]); $attackerA = 0.0; $attackerD = 0.0; $defenderA = 0.0; $defenderD = 0.0; $attackerReconLevel = array(0 => 0); $defenderReconLevel = array(0 => 0); $attackerReconExp = array(0 => 0); $defenderReconExp = array(0 => 0); $attackerReconBonus = 0; $defenderReconBonus = 0; $attackerArtilleryLevel = array(0 => 0); $defenderArtilleryLevel = array(0 => 0); $attackerArtilleryPower = array(0 => 0); $defenderArtilleryPower = array(0 => 0); $attackerArtilleryBonus = 0; $defenderArtilleryBonus = 0; // Experience Bonus from Recon $counter = 0; // goes through -2 to +2 x and y positions looking for attacker recon to aid attacker for ($x = -2; $x < 3; $x++) { for ($y = -2; $y < 3; $y++) { $unitInfoZ = getUnitInfo($getPage_connection2, $attacker["continent"], $attacker["xpos"] + $x, $attacker["ypos"] + $y); if ($unitInfoZ["id"] >= 1) { if ($unitInfoZ["type"] == 5) { $unitTypeInfoZ = getUnitTypeInfo($getPage_connection2, $unitInfoZ["type"]); $attackerReconLevel[$counter] = $unitInfoZ["level"]; $attackerReconExp[$counter] = 2; $counter++; } // if } // if } // for } // for $counter = 0; // goes through -2 to +2 x and y positions looking for defender recon to aid defender for ($x = -2; $x < 3; $x++) { for ($y = -2; $y < 3; $y++) { $unitInfoZ = getUnitInfo($getPage_connection2, $defender["continent"], $defender["xpos"] + $x, $defender["ypos"] + $y); if ($unitInfoZ["id"] >= 1) { if ($unitInfoZ["type"] == 5) { $unitTypeInfoZ = getUnitTypeInfo($getPage_connection2, $unitInfoZ["type"]); $defenderReconLevel[$counter] = $unitInfoZ["level"]; $defenderReconExp[$counter] = 2; $counter++; } // if } // if } // for } // for if ($attackerReconLevel[0] >= 1) { // add recon bonus for ($e = 0; $e < count($attackerReconLevel); $e++) { $attackerReconBonus += $attackerReconLevel[$e] * 0.25 + $attackerReconExp[$e]; } // for } // if if ($defenderReconLevel[0] >= 1) { for ($e = 0; $e < count($defenderReconLevel); $e++) { $defenderReconBonus += $defenderReconLevel[$e] * 0.25 + $defenderReconExp[$e]; } // for } // if $attackerExp = $attacker["exp"] + $attackerReconBonus; $defenderExp = $defender["exp"] + $defenderReconBonus; // Power Bonus from Artillery $counter = 0; // goes through -2 to +2 x and y positions looking for attacker artillery to aid attacker for ($x = -2; $x < 3; $x++) { for ($y = -2; $y < 3; $y++) { $unitInfoZ = getUnitInfo($getPage_connection2, $attacker["continent"], $attacker["xpos"] + $x, $attacker["ypos"] + $y); if ($unitInfoZ["id"] >= 1) { if ($unitInfoZ["type"] == 4) { $unitTypeInfoZ = getUnitTypeInfo($getPage_connection2, $unitInfoZ["type"]); $attackerArtilleryLevel[$counter] = $unitInfoZ["level"]; //$attackerArtilleryPower[$counter] = $unitTypeInfoZ["attack"]; $attackerArtilleryPower[$counter] = 2; $counter++; } // if } // if } // for } // for $counter = 0; // goes through -2 to +2 x and y positions looking for defender artillery to aid defender for ($x = -2; $x < 3; $x++) { for ($y = -2; $y < 3; $y++) { $unitInfoZ = getUnitInfo($getPage_connection2, $defender["continent"], $defender["xpos"] + $x, $defender["ypos"] + $y); if ($unitInfoZ["id"] >= 1) { if ($unitInfoZ["type"] == 4) { $unitTypeInfoZ = getUnitTypeInfo($getPage_connection2, $unitInfoZ["type"]); $defenderArtilleryLevel[$counter] = $unitInfoZ["level"]; //$defenderArtilleryPower[$counter] = $unitTypeInfoZ["attack"]; $defenderArtilleryPower[$counter] = 2; $counter++; } // if } // if } // for } // for if ($attackerArtilleryLevel[0] >= 1) { // add artillery bonus for ($e = 0; $e < count($attackerArtilleryLevel); $e++) { $attackerArtilleryBonus += $attackerArtilleryLevel[$e] * 0.25 + $attackerArtilleryPower[$e]; } // for } // if if ($defenderArtilleryLevel[0] >= 1) { for ($e = 0; $e < count($defenderArtilleryLevel); $e++) { $defenderArtilleryBonus += $defenderArtilleryLevel[$e] * 0.25 + $defenderArtilleryPower[$e]; } // for } // if $attackerA += $attackerArtilleryBonus; $attackerD += $attackerArtilleryBonus; $defenderA += $defenderArtilleryBonus; $defenderD += $defenderArtilleryBonus; $attackerA += $unitTypeInfoAttacker["attack"] + ($attacker["level"] * 0.25 + $attackerExp * 0.05); $attackerD += $unitTypeInfoAttacker["defense"] + ($attacker["level"] * 0.25 + $attackerExp * 0.05); $defenderA += $unitTypeInfoDefender["attack"] + ($defender["level"] * 0.25 + $defenderExp * 0.05); $defenderD += $unitTypeInfoDefender["defense"] + ($defender["level"] * 0.25 + $defenderExp * 0.05); $magnitude = 0; $formula = 0; // 1=winning,2=tie,3=losing $defenderModifier = 0.01 * $terrainInfoB["attackModifier"] * $defenderD; // add terrain modifier for defense bonus if ($amphibian == 1) { $defenderModifier = 0.25 * $defenderD; // add another +25% for amphibian assaults } // if // figure out which formula to use if ($attackerA > $defenderD + $defenderModifier) { // figure out category of combat if ($attackerA - ($defenderD + $defenderModifier) >= 4) { $magnitude = 5; } else { if ($attackerA - ($defenderD + $defenderModifier) >= 3) { $magnitude = 4; } else { if ($attackerA - ($defenderD + $defenderModifier) >= 2) { $magnitude = 3; } else { if ($attackerA - ($defenderD + $defenderModifier) >= 1) { $magnitude = 2; } else { $magnitude = 1; } } } } // else $formula = 1; } else { if ($attackerA == $defenderD + $defenderModifier) { $formula = 2; } else { // figure out category of combat if ($defenderD + $defenderModifier - $attackerA >= 4) { $magnitude = 5; } else { if ($defenderD + $defenderModifier - $attackerA >= 3) { $magnitude = 4; } else { if ($defenderD + $defenderModifier - $attackerA >= 2) { $magnitude = 3; } else { if ($defenderD + $defenderModifier - $attackerA >= 1) { $magnitude = 2; } else { $magnitude = 1; } } } } // else $formula = 3; } } // else $rand_attackerDamage = mt_rand(1, 100); $health_percent_attacker = 0; $health_percent_defender = 0; $new_defender_health = $defender["health"]; $new_attacker_health = $attacker["health"]; if ($formula == 1) { if ($magnitude == 5) { // 10% chance of receiving damage if ($rand_attackerDamage <= 10) { // attacker is damaged // health - 0-20% of health $health_percent_attacker = $attacker["health"] * (1 - mt_rand(8, 10) * 0.1); $new_attacker_health = $attacker["health"] - $health_percent_attacker; } // if // defender is damaged // health - 80-100% of health $health_percent_defender = $defender["health"] * (1 - mt_rand(0, 2) * 0.1); $new_defender_health = $attacker["health"] - $health_percent_defender; } else { if ($magnitude == 4) { // 15% chance of receiving damage if ($rand_attackerDamage <= 15) { // attacker is damaged // health - 20-40% of health $health_percent_attacker = $attacker["health"] * (1 - mt_rand(6, 8) * 0.1); $new_attacker_health = $attacker["health"] - $health_percent_attacker; } // if // defender is damaged // health - 60-80% of health $health_percent_defender = $defender["health"] * (1 - mt_rand(2, 4) * 0.1); $new_defender_health = $attacker["health"] - $health_percent_defender; } else { if ($magnitude == 3) { // 20% chance of receiving damage if ($rand_attackerDamage <= 20) { // attacker is damaged // health - 40-60% of health $health_percent_attacker = $attacker["health"] * (1 - mt_rand(4, 6) * 0.1); $new_attacker_health = $attacker["health"] - $health_percent_attacker; } // if // defender is damaged // health - 40-60% of health $health_percent_defender = $defender["health"] * (1 - mt_rand(4, 6) * 0.1); $new_defender_health = $attacker["health"] - $health_percent_defender; } else { if ($magnitude == 2) { // 25% chance of receiving damage if ($rand_attackerDamage <= 25) { // attacker is damaged // health - 60-80% of health $health_percent_attacker = $attacker["health"] * (1 - mt_rand(2, 4) * 0.1); $new_attacker_health = $attacker["health"] - $health_percent_attacker; } // if // defender is damaged // health - 20-40% of health $health_percent_defender = $defender["health"] * (1 - mt_rand(6, 8) * 0.1); $new_defender_health = $attacker["health"] - $health_percent_defender; } else { if ($magnitude == 1) { // 30% chance of receiving damage if ($rand_attackerDamage <= 30) { // attacker is damaged // health - 80-100% of health $health_percent_attacker = $attacker["health"] * (1 - mt_rand(0, 2) * 0.1); $new_attacker_health = $attacker["health"] - $health_percent_attacker; } // if // defender is damaged // health - 0-20% of health $health_percent_defender = $defender["health"] * (1 - mt_rand(8, 10) * 0.1); $new_defender_health = $attacker["health"] - $health_percent_defender; } } } } } // else if // set health setUnitInfo($getPage_connection2, $defender["id"], $defender["continent"], $defender["xpos"], $defender["ypos"], $new_defender_health, $defender["used"], $defender["name"], $defender["type"], $defender["owner"], $defender["level"], $defender["transport"], $defender["created"], $defender["exp"]); setUnitInfo($getPage_connection2, $attacker["id"], $attacker["continent"], $attacker["xpos"], $attacker["ypos"], $new_attacker_health, $attacker["used"], $attacker["name"], $attacker["type"], $attacker["owner"], $attacker["level"], $attacker["transport"], $attacker["created"], $attacker["exp"]); } else { if ($formula == 2) { // 50% chance of receiving or dealing damage if ($rand_attackerDamage <= 50) { // attacker is damaged // health - 10-100% of health $health_percent_attacker = $attacker["health"] * (1 - mt_rand(1, 10) * 0.1); $new_attacker_health = $attacker["health"] - $health_percent_attacker; } else { // defender is damaged // health - 10-100% of health $health_percent_defender = $defender["health"] * (1 - mt_rand(1, 10) * 0.1); $new_defender_health = $attacker["health"] - $health_percent_defender; } // else // set health setUnitInfo($getPage_connection2, $defender["id"], $defender["continent"], $defender["xpos"], $defender["ypos"], $new_defender_health, $defender["used"], $defender["name"], $defender["type"], $defender["owner"], $defender["level"], $defender["transport"], $defender["created"], $defender["exp"]); setUnitInfo($getPage_connection2, $attacker["id"], $attacker["continent"], $attacker["xpos"], $attacker["ypos"], $new_attacker_health, $attacker["used"], $attacker["name"], $attacker["type"], $attacker["owner"], $attacker["level"], $attacker["transport"], $attacker["created"], $attacker["exp"]); } else { if ($formula == 3) { $rand_defenderDamage = mt_rand(1, 100); if ($magnitude == 5) { // 10% chance of receiving damage if ($rand_defenderDamage <= 10) { // defender is damaged // health - 0-20% of health $health_percent_defender = $defender["health"] * (1 - mt_rand(8, 10) * 0.1); $new_defender_health = $attacker["health"] - $health_percent_defender; } // if // attacker is damaged // health - 80-100% of health $health_percent_attacker = $attacker["health"] * (1 - mt_rand(0, 2) * 0.1); $new_attacker_health = $attacker["health"] - $health_percent_attacker; } else { if ($magnitude == 4) { // 15% chance of receiving damage if ($rand_defenderDamage <= 15) { // defender is damaged // health - 20-40% of health $health_percent_defender = $defender["health"] * (1 - mt_rand(6, 8) * 0.1); $new_defender_health = $attacker["health"] - $health_percent_defender; } // if // attacker is damaged // health - 60-80% of health $health_percent_attacker = $attacker["health"] * (1 - mt_rand(2, 4) * 0.1); $new_attacker_health = $attacker["health"] - $health_percent_attacker; } else { if ($magnitude == 3) { // 20% chance of receiving damage if ($rand_defenderDamage <= 20) { // defender is damaged // health - 40-60% of health $health_percent_defender = $defender["health"] * (1 - mt_rand(4, 6) * 0.1); $new_defender_health = $attacker["health"] - $health_percent_defender; } // if // attacker is damaged // health - 40-60% of health $health_percent_attacker = $attacker["health"] * (1 - mt_rand(4, 6) * 0.1); $new_attacker_health = $attacker["health"] - $health_percent_attacker; } else { if ($magnitude == 2) { // 25% chance of receiving damage if ($rand_defenderDamage <= 25) { // defender is damaged // health - 60-80% of health $health_percent_defender = $defender["health"] * (1 - mt_rand(2, 4) * 0.1); $new_defender_health = $attacker["health"] - $health_percent_defender; } // if // attacker is damaged // health - 20-40% of health $health_percent_attacker = $attacker["health"] * (1 - mt_rand(6, 8) * 0.1); $new_attacker_health = $attacker["health"] - $health_percent_attacker; } else { if ($magnitude == 1) { // 30% chance of receiving damage if ($rand_defenderDamage <= 30) { // defender is damaged // health - 80-100% of health $health_percent_defender = $defender["health"] * (1 - mt_rand(0, 2) * 0.1); $new_defender_health = $attacker["health"] - $health_percent_defender; } // if // attacker is damaged // health - 0-20% of health $health_percent_attacker = $attacker["health"] * (1 - mt_rand(8, 10) * 0.1); $new_attacker_health = $attacker["health"] - $health_percent_attacker; } } } } } // else if // set health setUnitInfo($getPage_connection2, $defender["id"], $defender["continent"], $defender["xpos"], $defender["ypos"], $new_defender_health, $defender["used"], $defender["name"], $defender["type"], $defender["owner"], $defender["level"], $defender["transport"], $defender["created"], $defender["exp"]); setUnitInfo($getPage_connection2, $attacker["id"], $attacker["continent"], $attacker["xpos"], $attacker["ypos"], $new_attacker_health, $attacker["used"], $attacker["name"], $attacker["type"], $attacker["owner"], $attacker["level"], $attacker["transport"], $attacker["created"], $attacker["exp"]); } else { } } } // else $newDefender = getUnitInfoByID($getPage_connection2, $defender["id"]); $newAttacker = getUnitInfoByID($getPage_connection2, $attacker["id"]); $defeat = ""; $attackerWins = false; $new_used = $newAttacker["used"] + 1; // if either party is killed, remove them from map if ($newDefender["health"] <= 0 || $newAttacker["health"] <= 0) { // defender dies if ($newDefender["health"] <= 0) { $defeat = "Unit " . $newDefender["name"] . " has been killed in combat!"; $attackerWins = true; if ($newDefender["transport"] >= 1) { $transportInfo = getTransportInfo($getPage_connection2, $newDefender["transport"]); for ($a = 0; $a < count($transportInfo); $a++) { deleteUnitInfo($getPage_connection2, $transportInfo["list"][$a]); } // for } // if deleteUnitInfo($getPage_connection2, $newDefender["id"]); // add experience $new_exp = 1 + $newAttacker["exp"]; setUnitInfo($getPage_connection2, $newAttacker["id"], $newAttacker["continent"], $newAttacker["xpos"], $newAttacker["ypos"], $new_attacker_health, $newAttacker["used"], $newAttacker["name"], $newAttacker["type"], $newAttacker["owner"], $newAttacker["level"], $newAttacker["transport"], $newAttacker["created"], $new_exp); // if amphibian combat if ($amphibian == 1) { $unitInfoTransport = getUnitInfo($getPage_connection2, $_SESSION["action_id"]); $transportInfoTransport = getTransportInfo($getPage_connection2, $unitInfoTransport["transport"]); // set new transport list $new_transport_list = array(0 => 0); $counterB = 0; for ($b = 0; $b < count($transportInfoTransport); $b++) { if ($b != 1) { $new_transport_list[$counterB] = $transportInfoTransport["list"][$b]; $counterB++; } // if } // for setTransportInfo($getPage_connection2, $unitInfoTransport["transport"], $new_transport_list); } // if setUnitInfo($getPage_connection2, $_SESSION["action_id"], $_SESSION["new_continent"], $_SESSION["new_xpos"], $_SESSION["new_ypos"], $newAttacker["health"], $new_used, $newAttacker["name"], $newAttacker["type"], $newAttacker["owner"], $newAttacker["level"], $newAttacker["transport"], $newAttacker["created"], $newAttacker["exp"]); } // if // attacker dies if ($newAttacker["health"] <= 0) { $defeat = "Unit " . $newAttacker["name"] . " has been killed in combat!"; $attackerWins = false; if ($newAttacker["transport"] >= 1) { $transportInfo = getTransportInfo($getPage_connection2, $newAttacker["transport"]); for ($a = 0; $a < count($transportInfo); $a++) { deleteUnitInfo($getPage_connection2, $transportInfo["list"][$a]); } // for } // if deleteUnitInfo($getPage_connection2, $newAttacker["id"]); // add experience $new_exp = 1 + $newDefender["exp"]; setUnitInfo($getPage_connection2, $newDefender["id"], $newDefender["continent"], $newDefender["xpos"], $newDefender["ypos"], $new_attacker_health, $newDefender["used"], $newDefender["name"], $newDefender["type"], $newDefender["owner"], $newDefender["level"], $newDefender["transport"], $newDefender["created"], $new_exp); } // if // otherwise bounce! } // if $attackerNationInfo = getNationInfo($getPage_connection2, $newAttacker["owner"]); $defenderNationInfo = getNationInfo($getPage_connection2, $newDefender["owner"]); $br1 = "<br />"; $enteredInto = "Unit " . $newAttacker["name"] . " of " . $attackerNationInfo["name"] . " has entered into combat with unit " . $newDefender["name"] . " of " . $defenderNationInfo["name"] . " !"; $suffering = "Unit " . $newAttacker["name"] . " has suffered " . $health_percent_attacker . " damage. Unit " . $newDefender["name"] . " has suffered " . $health_percent_defender . " damage!"; $_SESSION["success_message"] = $enteredInto . $br1 . $suffering . $br1 . $defeat; $log_message = $enteredInto . " " . $suffering . " " . $defeat; $new_date = date("Y-m-d H:i:s"); addCombatLogInfo($getPage_connection2, $new_date, $log_message, $attackerNationInfo["id"], $defenderNationInfo["id"]); } // if }
function preliminaryUpdates($getPage_connection2) { $limit_allUnits = 0; if ($stmt = $getPage_connection2->prepare("SELECT COUNT(id) FROM unitsmap")) { $stmt->execute(); $stmt->bind_result($r_result); $stmt->fetch(); $limit_allUnits = $r_result; $stmt->close(); } else { $endTurnFailed = "failed"; } // else $limit_allTiles = 0; if ($stmt = $getPage_connection2->prepare("SELECT COUNT(id) FROM tilesmap")) { $stmt->execute(); $stmt->bind_result($r_result); $stmt->fetch(); $limit_allTiles = $r_result; $stmt->close(); } else { $endTurnFailed = "failed"; } // else $limit_allOffers = 0; if ($stmt = $getPage_connection2->prepare("SELECT COUNT(id) FROM offers")) { $stmt->execute(); $stmt->bind_result($r_result); $stmt->fetch(); $limit_allOffers = $r_result; $stmt->close(); } else { $endTurnFailed = "failed"; } // else // Illegal Conflicts and Table Cleanup // removed declined offers and empty or invalid offers and offers which have reached the turn limit if ($limit_allOffers >= 1) { if ($stmt = $getPage_connection2->prepare("SELECT id FROM offers ORDER BY id ASC")) { $stmt->execute(); $stmt->store_result(); $stmt->bind_result($r_result); while ($stmt->fetch()) { $next_offers = $r_result; $offerInfo1 = array("id" => 0, "fromNation" => 0, "toNation" => 0, "givingItems" => "", "receivingItems" => "", "turns" => 0, "counter" => 0, "status" => 0); if ($stmt10 = $getPage_connection2->prepare("SELECT id,fromNation,toNation,givingItems,receivingItems,turns,counter,status FROM offers WHERE id=? LIMIT 1")) { $stmt10->bind_param("i", $next_offers); $stmt10->execute(); $stmt10->bind_result($r_id, $r_fromNation, $r_toNation, $r_givingItems, $r_receivingItems, $r_turns, $r_counter, $r_status); $stmt10->fetch(); $offerInfo1["id"] = $r_id; $offerInfo1["fromNation"] = $r_fromNation; $offerInfo1["toNation"] = $r_toNation; if (stripos($r_givingItems, ",")) { $offerInfo1["givingItems"] = explode(",", $r_givingItems); } else { $offerInfo1["givingItems"] = array(0 => $r_givingItems); } // else if (stripos($r_receivingItems, ",")) { $offerInfo1["receivingItems"] = explode(",", $r_receivingItems); } else { $offerInfo1["receivingItems"] = array(0 => $r_receivingItems); } // else $offerInfo1["turns"] = $r_turns; $offerInfo1["counter"] = $r_counter; $offerInfo1["status"] = $r_status; $stmt10->close(); } else { } if ($offerInfo1["status"] == 2 || $offerInfo1["givingItems"][0] < 1 && $offerInfo1["receivingItems"][0] < 1 || $offerInfo1["toNation"] < 1 && $offerInfo1["fromNation"] < 1) { deleteOfferInfo($getPage_connection2, $next_offers); } // if if ($offerInfo1["counter"] == $offerInfo1["turns"]) { deleteOfferInfo($getPage_connection2, $next_offers); } // if } // while $stmt->close(); } else { } // else } // if // search through all units and look for illegally placed, dead, invalid level, or striking units remove them // also reset used movement if ($limit_allUnits >= 1) { if ($stmt = $getPage_connection2->prepare("SELECT id FROM unitsmap ORDER BY id ASC")) { $stmt->execute(); $stmt->store_result(); $stmt->bind_result($r_result); while ($stmt->fetch()) { $next_units = $r_result; $illegal = false; $unitInfoW = getUnitInfoByID($getPage_connection2, $next_units); $unitTypeInfoW = getUnitTypeInfo($getPage_connection2, $unitInfoW["type"]); $tileInfoW = getTileInfo($getPage_connection2, $unitInfoW["continent"], $unitInfoW["xpos"], $unitInfoW["ypos"]); $coastal = isItCoast($getPage_connection2, $tileInfoW); // reset used movement setUnitInfo($getPage_connection2, $unitInfoW["id"], $unitInfoW["continent"], $unitInfoW["xpos"], $unitInfoW["ypos"], $unitInfoW["health"], 0, $unitInfoW["name"], $unitInfoW["type"], $unitInfoW["owner"], $unitInfoW["level"], $unitInfoW["transport"], $unitInfoW["created"], 0.0); // land unit if ($unitTypeInfoW["water"] != 1 && $tileInfoW["terrain"] == 2) { $illegal = true; // water unit } else { if ($unitTypeInfoW["water"] == 1 && $tileInfoW["terrain"] != 2 && $coastal === false) { $illegal = true; } else { $illegal = false; } } // else if ($unitInfoW["health"] < 1 || $unitInfoW["level"] < 1) { $illegal = true; } else { $illegal = false; } // else $nationInfoA = getNationInfo($getPage_connection2, $unitInfoW["owner"]); if ($nationInfoA["strike"] > 1) { $new_strike = $nationInfoA["strike"] - 1; $illegal = true; } else { $new_strike = $nationInfoA["strike"]; } // else if ($illegal === true) { deleteUnitInfo($getPage_connection2, $next_units); setNationInfo($getPage_connection2, $nationInfoA["id"], $nationInfoA["name"], $nationInfoA["home"], $nationInfoA["formal"], $nationInfoA["flag"], $nationInfoA["production"], $nationInfoA["money"], $nationInfoA["debt"], $nationInfoA["happiness"], $nationInfoA["food"], $nationInfoA["authority"], $nationInfoA["authorityChanged"], $nationInfoA["economy"], $nationInfoA["economyChanged"], $nationInfoA["organizations"], $nationInfoA["invites"], $nationInfoA["goods"], $nationInfoA["resources"], $nationInfoA["population"], $new_strike); } // if } // while $stmt->close(); } else { } // else } // if if ($limit_allTiles >= 1) { // search through all tiles and look for illegally placed improvements or dead or invalid level improvements and remove them if ($stmt = $getPage_connection2->prepare("SELECT id FROM tilesmap ORDER BY id ASC")) { $stmt->execute(); $stmt->store_result(); $stmt->bind_result($r_result); while ($stmt->fetch()) { $next_tiles = $r_result; $tileInfoW = getTileInfoByID($getPage_connection2, $next_tiles); for ($w = 0; $w < count($tileInfoW["improvements"]); $w++) { $illegal = false; $improvementInfoW = getImprovementInfo($getPage_connection2, $tileInfoW["improvements"][$w]); $improvementTypeInfoW = getImprovementTypeInfo($getPage_connection2, $improvementInfoW["type"]); $resourceCheck = array(0 => true); // are any resources actually required if (count($improvementTypeInfoW["resourcesRequired"]) > 1) { if ($improvementTypeInfoW["resourcesRequired"][1] > 0) { $validResourcesRequired = true; } else { $validResourcesRequired = false; } // else } else { if ($improvementTypeInfoW["resourcesRequired"][0] > 0) { $validResourcesRequired = true; } else { $validResourcesRequired = false; } // else } // else if ($validResourcesRequired === true) { for ($a = 0; $a < count($improvementTypeInfoW["resourcesRequired"]); $a++) { for ($b = 0; $b < count($tileInfoW["resources"]); $b++) { $resourceCheck[$a] = false; $resourceInfoWW = getResourceInfo($getPage_connection2, $tileInfoW["resources"][$b]); if ($resourceInfoWW["type"] == $improvementTypeInfoW["resourcesRequired"][$a]) { $resourceCheck[$a] = true; break; } // if } // for } // for for ($a = 0; $a < count($improvementTypeInfoW["resourcesRequired"]); $a++) { if ($resourceCheck[$a] === false) { $illegal = true; break; } // if } // for } // if $terrainCheck = false; for ($a = 0; $a < count($improvementTypeInfoW["terrainTypeRequired"]); $a++) { if ($tileInfoW["terrain"] == $improvementTypeInfoW["terrainTypeRequired"][$a]) { $terrainCheck = true; break; } // if } // for if ($terrainCheck === false) { $illegal = true; } // if if ($improvementInfoW["level"] < 1) { $illegal = true; } // if if ($illegal === true) { deleteImprovementInfo($getPage_connection2, $improvementInfoW["id"], $improvementInfoW["continent"], $improvementInfoW["xpos"], $improvementInfoW["ypos"]); } // if } // for } // while $stmt->close(); } else { } // else // setup new claims and change control if needed if ($stmt = $getPage_connection2->prepare("SELECT id FROM tilesmap ORDER BY id ASC")) { $stmt->execute(); $stmt->store_result(); $stmt->bind_result($r_result); while ($stmt->fetch()) { $next_tiles1 = $r_result; $tileInfoW = getTileInfoByID($getPage_connection2, $next_tiles1); $unitInfoW = getUnitInfo($getPage_connection2, $tileInfoW["continent"], $tileInfoW["xpos"], $tileInfoW["ypos"]); $alreadyClaimed = false; if ($unitInfoW["id"] >= 1) { // remove improvement ownership from old player who lost tile control if ($unitInfoW["owner"] != $tileInfoW["owner"]) { for ($r = 0; $r < count($tileInfoW["improvements"]); $r++) { $improvementInfoW = getImprovementInfo($getPage_connection2, $tileInfoW["improvements"][$r]); if ($improvementInfoW["id"] >= 1) { $new_owners = array(0 => 0); $alreadyOwned = false; $counter = 0; for ($s = 0; $s < count($improvementInfoW["owners"]); $s++) { if ($improvementInfoW["owners"][$s] != $tileInfoW["owner"]) { $new_owners[$counter] = $improvementInfoW["owners"][$s]; $counter++; } // if if ($improvementInfoW["owners"][$s] == $unitInfoW["owner"]) { $alreadyOwned = true; } // if } // for if ($alreadyOwned === false) { $new_index = count($new_owners) + 1; $new_owners[$new_index] = $unitInfoW["owner"]; } // if setImprovementInfo($getPage_connection2, $improvementInfoW["id"], $improvementInfoW["continent"], $improvementInfoW["xpos"], $improvementInfoW["ypos"], $improvementInfoW["type"], $improvementInfoW["level"], $improvementInfoW["usingResources"], $new_owners, $improvementInfoW["name"]); } // if } // for } // if setTileInfo($getPage_connection2, $tileInfoW["id"], $tileInfoW["continent"], $tileInfoW["xpos"], $tileInfoW["ypos"], $tileInfoW["terrain"], $tileInfoW["resources"], $tileInfoW["improvements"], $unitInfoW["owner"], $tileInfoW["claims"], $tileInfoW["population"]); for ($v = 0; $v < count($tileInfoW["claims"]); $v++) { $claimsInfoW = getClaimInfo($getPage_connection2, $tileInfoW["claims"][$v]); if ($claimsInfoW["owner"] == $unitInfoW["owner"]) { $alreadyClaimed = true; break; } // if } // for if ($alreadyClaimed === false) { addClaimInfo($getPage_connection2, 10, $unitInfoW["owner"], $tileInfoW["id"]); } // if // Claims leaking for dominant bordering tiles // check for dominant claimed tiles $claimState1 = checkClaimsState($getPage_connection2, $tileInfoW, $tileInfoW["owner"]); // if dominant, bleed claim to neighbouring tiles if ($claimState1 == 1) { // add to left if ($tileInfoW["xpos"] > 1) { // West $tileInfoT = getTileInfo($getPage_connection2, $tileInfoW["continent"], $tileInfoW["xpos"] - 1, $tileInfoW["ypos"]); $claimStateT = checkClaimsState($getPage_connection2, $tileInfoT, $tileInfoW["owner"]); if ($claimStateT != 1 && $claimStateT > 1 && $tileInfoT["owner"] > 0) { $claimFound = false; for ($j = 0; $j < count($tileInfoT["claims"]); $j++) { $claimInfoT = getClaimInfo($getPage_connection2, $tileInfoT["claims"][$j]); if ($claimInfoT["owner"] == $tileInfoW["owner"]) { setClaimInfo($getPage_connection2, $claimInfoT["id"], $claimInfoT["strength"] + 3, $claimInfoT["owner"]); $claimFound = true; break; } // if } // for if ($claimFound === false) { addClaimInfo($getPage_connection2, 3, $tileInfoW["owner"], $tileInfoT["id"]); } // if } // if if ($tileInfoW["ypos"] > 1) { // Northwest $tileInfoT = getTileInfo($getPage_connection2, $tileInfoW["continent"], $tileInfoW["xpos"] - 1, $tileInfoW["ypos"] - 1); $claimStateT = checkClaimsState($getPage_connection2, $tileInfoT, $tileInfoW["owner"]); if ($claimStateT != 1 && $claimStateT > 1 && $tileInfoT["owner"] > 0) { $claimFound = false; for ($j = 0; $j < count($tileInfoT["claims"]); $j++) { $claimInfoT = getClaimInfo($getPage_connection2, $tileInfoT["claims"][$j]); if ($claimInfoT["owner"] == $tileInfoW["owner"]) { setClaimInfo($getPage_connection2, $claimInfoT["id"], $claimInfoT["strength"] + 3, $claimInfoT["owner"]); $claimFound = true; break; } // if } // for if ($claimFound === false) { addClaimInfo($getPage_connection2, 3, $tileInfoT["owner"], $tileInfoT["id"]); } // if } // if } // if if ($tileInfoW["ypos"] < 20) { // Southwest $tileInfoT = getTileInfo($getPage_connection2, $tileInfoW["continent"], $tileInfoW["xpos"] - 1, $tileInfoW["ypos"] + 1); $claimStateT = checkClaimsState($getPage_connection2, $tileInfoT, $tileInfoW["owner"]); if ($claimStateT != 1 && $claimStateT > 1 && $tileInfoT["owner"] > 0) { $claimFound = false; for ($j = 0; $j < count($tileInfoT["claims"]); $j++) { $claimInfoT = getClaimInfo($getPage_connection2, $tileInfoT["claims"][$j]); if ($claimInfoT["owner"] == $tileInfoW["owner"]) { setClaimInfo($getPage_connection2, $claimInfoT["id"], $claimInfoT["strength"] + 3, $claimInfoT["owner"]); $claimFound = true; break; } // if } // for if ($claimFound === false) { addClaimInfo($getPage_connection2, 3, $tileInfoT["owner"], $tileInfoT["id"]); } // if } // if } // if } // if // add to right if ($tileInfoW["xpos"] < 20) { // East $tileInfoT = getTileInfo($getPage_connection2, $tileInfoW["continent"], $tileInfoW["xpos"] + 1, $tileInfoW["ypos"]); $claimStateT = checkClaimsState($getPage_connection2, $tileInfoT, $tileInfoW["owner"]); if ($claimStateT != 1 && $claimStateT > 1 && $tileInfoT["owner"] > 0) { $claimFound = false; for ($j = 0; $j < count($tileInfoT["claims"]); $j++) { $claimInfoT = getClaimInfo($getPage_connection2, $tileInfoT["claims"][$j]); if ($claimInfoT["owner"] == $tileInfoW["owner"]) { setClaimInfo($getPage_connection2, $claimInfoT["id"], $claimInfoT["strength"] + 3, $claimInfoT["owner"]); $claimFound = true; break; } // if } // for if ($claimFound === false) { addClaimInfo($getPage_connection2, 3, $tileInfoW["owner"], $tileInfoT["id"]); } // if } // if if ($tileInfoW["ypos"] > 1) { // Northeast $tileInfoT = getTileInfo($getPage_connection2, $tileInfoW["continent"], $tileInfoW["xpos"] + 1, $tileInfoW["ypos"] - 1); $claimStateT = checkClaimsState($getPage_connection2, $tileInfoT, $tileInfoW["owner"]); if ($claimStateT != 1 && $claimStateT > 1 && $tileInfoT["owner"] > 0) { $claimFound = false; for ($j = 0; $j < count($tileInfoT["claims"]); $j++) { $claimInfoT = getClaimInfo($getPage_connection2, $tileInfoT["claims"][$j]); if ($claimInfoT["owner"] == $tileInfoW["owner"]) { setClaimInfo($getPage_connection2, $claimInfoT["id"], $claimInfoT["strength"] + 3, $claimInfoT["owner"]); $claimFound = true; break; } // if } // for if ($claimFound === false) { addClaimInfo($getPage_connection2, 3, $tileInfoW["owner"], $tileInfoT["id"]); } // if } // if } // if if ($tileInfoW["ypos"] < 20) { // Southeast $tileInfoT = getTileInfo($getPage_connection2, $tileInfoW["continent"], $tileInfoW["xpos"] + 1, $tileInfoW["ypos"] + 1); $claimStateT = checkClaimsState($getPage_connection2, $tileInfoT, $tileInfoW["owner"]); if ($claimStateT != 1 && $claimStateT > 1 && $tileInfoT["owner"] > 0) { $claimFound = false; for ($j = 0; $j < count($tileInfoT["claims"]); $j++) { $claimInfoT = getClaimInfo($getPage_connection2, $tileInfoT["claims"][$j]); if ($claimInfoT["owner"] == $tileInfoW["owner"]) { setClaimInfo($getPage_connection2, $claimInfoT["id"], $claimInfoT["strength"] + 3, $claimInfoT["owner"]); $claimFound = true; break; } // if } // for if ($claimFound === false) { addClaimInfo($getPage_connection2, 3, $tileInfoW["owner"], $tileInfoT["id"]); } // if } // if } // if } // if if ($tileInfoW["ypos"] > 1) { // North $tileInfoT = getTileInfo($getPage_connection2, $tileInfoW["continent"], $tileInfoW["xpos"], $tileInfoW["ypos"] - 1); $claimStateT = checkClaimsState($getPage_connection2, $tileInfoT, $tileInfoW["owner"]); if ($claimStateT != 1 && $claimStateT > 1 && $tileInfoT["owner"] > 0) { $claimFound = false; for ($j = 0; $j < count($tileInfoT["claims"]); $j++) { $claimInfoT = getClaimInfo($getPage_connection2, $tileInfoT["claims"][$j]); if ($claimInfoT["owner"] == $tileInfoW["owner"]) { setClaimInfo($getPage_connection2, $claimInfoT["id"], $claimInfoT["strength"] + 3, $claimInfoT["owner"]); $claimFound = true; break; } // if } // for if ($claimFound === false) { addClaimInfo($getPage_connection2, 3, $tileInfoW["owner"], $tileInfoT["id"]); } // if } // if } // if if ($tileInfoW["ypos"] < 20) { // South $tileInfoT = getTileInfo($getPage_connection2, $tileInfoW["continent"], $tileInfoW["xpos"], $tileInfoW["ypos"] + 1); $claimStateT = checkClaimsState($getPage_connection2, $tileInfoT, $tileInfoW["owner"]); if ($claimStateT != 1 && $claimStateT > 1 && $tileInfoT["owner"] > 0) { $claimFound = false; for ($j = 0; $j < count($tileInfoT["claims"]); $j++) { $claimInfoT = getClaimInfo($getPage_connection2, $tileInfoT["claims"][$j]); if ($claimInfoT["owner"] == $tileInfoW["owner"]) { setClaimInfo($getPage_connection2, $claimInfoT["id"], $claimInfoT["strength"] + 3, $claimInfoT["owner"]); $claimFound = true; break; } // if } // for if ($claimFound === false) { addClaimInfo($getPage_connection2, 3, $tileInfoW["owner"], $tileInfoT["id"]); } // if } // if } // if } // if } // if } // while $stmt->close(); } else { } // else } // if // Update claims strengths $limit_allClaims = 0; if ($stmt = $getPage_connection2->prepare("SELECT COUNT(id) FROM claims")) { $stmt->execute(); $stmt->bind_result($r_result); $stmt->fetch(); $limit_allClaims = $r_result; $stmt->close(); } else { $endTurnFailed = "failed"; } // else if ($limit_allClaims >= 1) { if ($stmt = $getPage_connection2->prepare("SELECT id FROM claims ORDER BY id ASC")) { $stmt->execute(); $stmt->store_result(); $stmt->bind_result($r_result); while ($stmt->fetch()) { $next_claims = $r_result; $claimInfoW = getClaimInfo($getPage_connection2, $next_claims); $nationInfoC = getNationInfo($getPage_connection2, $claimInfoW["owner"]); // start removing claim strength if the strike is still going on above 3 if ($nationInfoC["strike"] > 3) { if ($claimInfoW["strength"] - 10 >= 0) { $new_strength = $claimInfoW["strength"] - 10; } else { $new_strength = 0; } // else $new_strike = $nationInfoC["strike"] - 1; setNationInfo($getPage_connection2, $nationInfoC["id"], $nationInfoC["name"], $nationInfoC["home"], $nationInfoC["formal"], $nationInfoC["flag"], $nationInfoC["production"], $nationInfoC["money"], $nationInfoC["debt"], $nationInfoC["happiness"], $nationInfoC["food"], $nationInfoC["authority"], $nationInfoC["authorityChanged"], $nationInfoC["economy"], $nationInfoC["economyChanged"], $nationInfoC["organizations"], $nationInfoC["invites"], $nationInfoC["goods"], $nationInfoC["resources"], $nationInfoC["population"], $new_strike); } else { if ($claimInfoW["strength"] + 5 <= 1000) { $new_strength = $claimInfoW["strength"] + 5; } else { $new_strength = 1000; } // else } // else setClaimInfo($getPage_connection2, $next_claims, $new_strength, $claimInfoW["owner"]); } // while $stmt->close(); } else { } // else } // if }