function declineAgreement($getPage_connection2)
{
    if ($_SESSION["action"] == "decline_agreement") {
        if ($_SESSION["action_id"] > 0) {
            $agreementInfo1 = getAgreementInfo($getPage_connection2, $_SESSION["action_id"]);
            if (($agreementInfo1["toNation"] == $_SESSION["nation_id"] || $agreementInfo1["fromNation"] == $_SESSION["nation_id"]) && $agreementInfo1["status"] == 0) {
                $tradeInfoToNation = getTradeInfo($getPage_connection2, $agreementInfo1["toNation"]);
                $tradeInfoFromNation = getTradeInfo($getPage_connection2, $agreementInfo1["fromNation"]);
                setAgreementInfo($getPage_connection2, $agreementInfo1["id"], $agreementInfo1["policy"], $agreementInfo1["turns"], $agreementInfo1["counter"], $agreementInfo1["toNation"], $agreementInfo1["fromNation"], 2);
                $_SESSION["success_message"] = "Agreement has been declined successfully!";
            } else {
                $_SESSION["warning_message"] = "Cannot complete action: current nation is not involved in selected agreement.";
            }
            // else
        } else {
            $_SESSION["warning_message"] = "Cannot complete action: invalid agreement selected.";
        }
        // else
    } else {
        $_SESSION["warning_message"] = "Cannot complete action: invalid action.";
    }
    // else
}
Example #2
0
function updateNations($getPage_connection2)
{
    // main player sequence
    $_SESSION["scriptOutput"] = "<br /><br />Running main sequence...<br />";
    if ($stmt = $getPage_connection2->prepare("SELECT id FROM nations ORDER BY id ASC")) {
        $stmt->execute();
        $stmt->store_result();
        $stmt->bind_result($r_result);
        while ($stmt->fetch()) {
            $next_nations = $r_result;
            $_SESSION["scriptOutput"] .= "<br />Setup nation...<br />";
            $nationInfoW = getNationInfo($getPage_connection2, $next_nations);
            $tradeInfoW = getTradeInfo($getPage_connection2, $next_nations);
            $formula = 0.0;
            $tax = 0.0;
            $new_production = 0;
            $new_money = $nationInfoW["money"];
            $new_food = $nationInfoW["food"];
            $new_happiness = 0.0;
            $new_goods = $nationInfoW["goods"];
            $new_resources = $nationInfoW["resources"];
            $new_limit = $tradeInfoW["limit"];
            $new_routes = array(0 => 0);
            $new_worth = array(0 => 0);
            $old_population = $nationInfoW["population"];
            $new_population = 0.0;
            $foreignTradePercent = 0.0;
            $productionPercent = 0.0;
            $efficiencyPercent = 0.0;
            $happinessPenalty = 0.0;
            $money_upkeep = 0.0;
            $food_upkeep = 0.0;
            $new_debt = $nationInfoW["debt"];
            $money_debt = 0.0;
            $food_debt = 0.0;
            $productionPercent = $nationInfoW["economy"] * 10;
            $foreignTradePercent = 100 - $productionPercent;
            $efficiencyPercent = $nationInfoW["authority"] * 10;
            $happinessPenalty = $nationInfoW["authority"] * 5;
            $productionInfoW = getProductionInfo($getPage_connection2, $next_nations);
            $using_production = 0.0;
            $used_production = $using_production;
            $new_prod = $new_goods;
            $new_strike = $nationInfoW["strike"];
            $new_tilesOwned = 0;
            $tradeCount = 0;
            $limit_allTilesOwned = 0;
            if ($stmt1 = $getPage_connection2->prepare("SELECT COUNT(id) FROM tilesmap WHERE owner=?")) {
                $stmt1->bind_param("i", $next_nations);
                $stmt1->execute();
                $stmt1->bind_result($r_result);
                $stmt1->fetch();
                $limit_allTilesOwned = $r_result;
                $stmt1->close();
            } else {
                $endTurnFailed = "failed";
            }
            // else
            $limit_allImprovements = 0;
            if ($stmt1 = $getPage_connection2->prepare("SELECT COUNT(id) FROM improvementsmap")) {
                $stmt1->execute();
                $stmt1->bind_result($r_result);
                $stmt1->fetch();
                $limit_allImprovements = $r_result;
                $stmt1->close();
            } else {
                $endTurnFailed = "failed";
            }
            // else
            /********************************
            		 Base Additions (including revenue) from improvements, tiles, etc.
            		 ********************************/
            // get tiles info for production/claims/bonus addition
            $_SESSION["scriptOutput"] .= "Get tiles info for production/claims/bonus addition...<br />";
            if ($stmt1 = $getPage_connection2->prepare("SELECT id FROM tilesmap ORDER BY id ASC")) {
                $stmt1->execute();
                $stmt1->store_result();
                $stmt1->bind_result($r_result);
                while ($stmt1->fetch()) {
                    $next_tiles = $r_result;
                    $tileInfoW = getTileInfoByID($getPage_connection2, $next_tiles);
                    if ($tileInfoW["owner"] == $next_nations) {
                        // add claim strength if claim is dominant and tile is controlled
                        $claimsStateW = checkClaimsState($getPage_connection2, $tileInfoW, $next_nations);
                        if ($claimsStateW == 1) {
                            for ($e = 0; $e < count($tileInfoW["claims"]); $e++) {
                                $claimInfoW = getClaimInfo($getPage_connection2, $tileInfoW["claims"][$e]);
                                if ($claimInfoW["owner"] == $next_nations) {
                                    if ($claimInfoW["strength"] > 0) {
                                        $bonus_new_strength = 0;
                                        for ($c = 0; $c < count($tileInfoW["improvements"]); $c++) {
                                            $improvementInfoV = getImprovementInfo($getPage_connection2, $tileInfoW["improvements"][$c]);
                                            if ($improvementInfoV["type"] == 1) {
                                                $bonus_new_strength = 3;
                                            }
                                            // if
                                        }
                                        // for
                                        $new_strength = $bonus_new_strength + $claimInfoW["strength"] + 2;
                                    }
                                    // if
                                    setClaimInfo($getPage_connection2, $claimInfoW["id"], $new_strength, $claimInfoW["owner"]);
                                }
                                // if
                            }
                            // for
                        }
                        // if
                        // trade
                        $_SESSION["scriptOutput"] .= "Trade Count adjust...<br />";
                        for ($ss = 0; $ss < count($tileInfoW["improvements"]); $ss++) {
                            $improvementInfoF = getImprovementInfo($getPage_connection2, $tileInfoW["improvements"][$ss]);
                            if ($improvementInfoF["type"] == 1 || $improvementInfoF["type"] == 2) {
                                for ($cc = 0; $cc < count($improvementInfoF["owners"]); $cc++) {
                                    if ($improvementInfoF["owners"] == $next_nations) {
                                        if ($improvementInfoF["type"] == 1) {
                                            $tradeCount++;
                                        } else {
                                            if ($improvementInfoF["type"] == 2) {
                                                $tradeCount = $tradeCount + 2;
                                            }
                                        }
                                        // else if
                                    }
                                    // if
                                }
                                // for
                            }
                            // if
                        }
                        // for
                        // claims for happiness
                        $_SESSION["scriptOutput"] .= "Happiness+Claims adjust...<br />";
                        $claimsStateW = checkClaimsState($getPage_connection2, $tileInfoW, $next_nations);
                        // set happiness addition dependent on claim to tile
                        // if current nation claims successfully
                        if ($claimsStateW == 1) {
                            $new_happiness = $new_happiness + 5;
                            // if enemy nation claims successfully
                        } else {
                            if ($claimsStateW == 2) {
                                $new_happiness = $new_happiness + 1;
                                // if claim is contested and player is involved
                            } else {
                                if ($claimsStateW == 3) {
                                    $new_happiness = $new_happiness + 2;
                                    // if claim is contested and player is not involved
                                } else {
                                    if ($claimsStateW == 4) {
                                        // default to enemy claim
                                    } else {
                                        // bad
                                        $new_happiness = $new_happiness + 1;
                                    }
                                }
                            }
                        }
                        // else
                        // terrain production modifiers
                        $_SESSION["scriptOutput"] .= "Terrain production modifiers...<br />";
                        $terrainInfoW = array("productionModifier" => 0);
                        if ($stmt100 = $getPage_connection2->prepare("SELECT productionModifier FROM terrain WHERE id=? LIMIT 1")) {
                            $stmt100->bind_param("i", $tileInfoW["terrain"]);
                            $stmt100->execute();
                            $stmt100->bind_result($r_productionModifier);
                            $stmt100->fetch();
                            $terrainInfoW["productionModifier"] = $r_productionModifier;
                            $stmt100->close();
                        } else {
                        }
                        // else
                        if ($terrainInfoW["productionModifier"] >= 1) {
                            $mod = 0.01;
                            $new_production = $new_production + $terrainInfoW["productionModifier"] * $mod * 2.0;
                        } else {
                            $new_production = $new_production + 2;
                        }
                        // else
                    }
                    // if
                }
                // while
                $stmt1->close();
            } else {
            }
            // else
            // add to nation variables based on tile number
            $new_money = $new_money + 2 * $limit_allTilesOwned;
            //  get improvements
            $_SESSION["scriptOutput"] .= "Get improvements info for production, money, population mods...<br />";
            if ($stmt1 = $getPage_connection2->prepare("SELECT id FROM improvementsmap ORDER BY id ASC")) {
                $stmt1->execute();
                $stmt1->store_result();
                $stmt1->bind_result($r_result);
                while ($stmt1->fetch()) {
                    $next_improvements = $r_result;
                    $improvementInfoW = getImprovementInfo($getPage_connection2, $next_improvements);
                    for ($z = 0; $z < count($improvementInfoW["owners"]); $z++) {
                        if ($improvementInfoW["owners"][$z] == $next_nations) {
                            // capital
                            if ($improvementInfoW["type"] == 1) {
                                $new_money = $new_money + 60.0 * (0.25 * $improvementInfoW["level"]) / count($improvementInfoW["owners"]);
                                $new_production = $new_production + 20.0 * (0.25 * $improvementInfoW["level"]) / count($improvementInfoW["owners"]);
                                $tileInfoG = getTileInfo($getPage_connection2, $improvementInfoW["continent"], $improvementInfoW["xpos"], $improvementInfoW["ypos"]);
                                $generate_population = mt_rand(200.0 * (0.25 * $improvementInfoW["level"]), 800.0 * (0.25 * $improvementInfoW["level"]));
                                $new_tile_population = $tileInfoG["population"] + $generate_population / count($improvementInfoW["owners"]);
                                setTileInfo($getPage_connection2, $tileInfoG["id"], $tileInfoG["continent"], $tileInfoG["xpos"], $tileInfoG["ypos"], $tileInfoG["terrain"], $tileInfoG["resources"], $tileInfoG["improvements"], $tileInfoG["owner"], $tileInfoG["claims"], $new_tile_population);
                                // town
                            } else {
                                if ($improvementInfoW["type"] == 2) {
                                    $new_money = $new_money + 30.0 * (0.25 * $improvementInfoW["level"]) / count($improvementInfoW["owners"]);
                                    $tileInfoG = getTileInfo($getPage_connection2, $improvementInfoW["continent"], $improvementInfoW["xpos"], $improvementInfoW["ypos"]);
                                    $generate_population = mt_rand(200.0 * (0.25 * $improvementInfoW["level"]), 400.0 * (0.25 * $improvementInfoW["level"]));
                                    $new_tile_population = $tileInfoG["population"] + $generate_population / count($improvementInfoW["owners"]);
                                    setTileInfo($getPage_connection2, $tileInfoG["id"], $tileInfoG["continent"], $tileInfoG["xpos"], $tileInfoG["ypos"], $tileInfoG["terrain"], $tileInfoG["resources"], $tileInfoG["improvements"], $tileInfoG["owner"], $tileInfoG["claims"], $new_tile_population);
                                    // industry
                                } else {
                                    if ($improvementInfoW["type"] == 3) {
                                        $new_production = $new_production + 20.0 * (0.25 * $improvementInfoW["level"]) / count($improvementInfoW["owners"]);
                                        // farm
                                    } else {
                                        if ($improvementInfoW["type"] == 4) {
                                            $generate_food = mt_rand(1000.0 * (0.25 * $improvementInfoW["level"]), 6000.0 * (0.25 * $improvementInfoW["level"]));
                                            $new_food = $new_food + $generate_food / count($improvementInfoW["owners"]);
                                            // depot
                                        } else {
                                            if ($improvementInfoW["type"] == 5) {
                                                // mill
                                            } else {
                                                if ($improvementInfoW["type"] == 6) {
                                                    for ($d = 0; $d < count($improvementInfoW["usingResources"]); $d++) {
                                                        $resourceInfoW = getResourceInfo($getPage_connection2, $improvementInfoW["usingResources"][$d]);
                                                        if ($resourceInfoW["type"] == 1 && $resourceInfoW["capacity"] >= 5) {
                                                            $initialExtract = 0.02 * $resourceInfoW["capacity"];
                                                            $extractAmount = $initialExtract * (0.25 * $improvementInfoW["level"]) / count($improvementInfoW["owners"]);
                                                            $new_resources[0] = $new_resources[0] + $extractAmount;
                                                            $new_capacity = $resourceInfoW["capacity"] - $extractAmount;
                                                            setResourceInfo($getPage_connection2, $resourceInfoW["id"], $resourceInfoW["type"], $new_capacity);
                                                            break;
                                                        }
                                                        // if
                                                    }
                                                    // for
                                                    // reserve
                                                } else {
                                                    if ($improvementInfoW["type"] == 7) {
                                                        $new_happiness = $new_happiness + 0.01 / count($improvementInfoW["owners"]);
                                                        // mine
                                                    } else {
                                                        if ($improvementInfoW["type"] == 8) {
                                                            for ($d = 0; $d < count($improvementInfoW["usingResources"]); $d++) {
                                                                $resourceInfoW = getResourceInfo($getPage_connection2, $improvementInfoW["usingResources"][$d]);
                                                                if ($resourceInfoW["type"] == 2 && $resourceInfoW["capacity"] >= 5) {
                                                                    $initialExtract = 0.02 * $resourceInfoW["capacity"];
                                                                    $extractAmount = $initialExtract * (0.25 * $improvementInfoW["level"]) / count($improvementInfoW["owners"]);
                                                                    $new_resources[1] = $new_resources[1] + $extractAmount;
                                                                    $new_capacity = $resourceInfoW["capacity"] - $extractAmount;
                                                                    setResourceInfo($getPage_connection2, $resourceInfoW["id"], $resourceInfoW["type"], $new_capacity);
                                                                    break;
                                                                }
                                                                // if
                                                            }
                                                            // for
                                                            // well
                                                        } else {
                                                            if ($improvementInfoW["type"] == 9) {
                                                                for ($d = 0; $d < count($improvementInfoW["usingResources"]); $d++) {
                                                                    $resourceInfoW = getResourceInfo($getPage_connection2, $improvementInfoW["usingResources"][$d]);
                                                                    if ($resourceInfoW["type"] == 3 && $resourceInfoW["capacity"] >= 5) {
                                                                        $initialExtract = 0.02 * $resourceInfoW["capacity"];
                                                                        $extractAmount = $initialExtract * (0.25 * $improvementInfoW["level"]) / count($improvementInfoW["owners"]);
                                                                        $new_resources[2] = $new_resources[2] + $extractAmount;
                                                                        $new_capacity = $resourceInfoW["capacity"] - $extractAmount;
                                                                        setResourceInfo($getPage_connection2, $resourceInfoW["id"], $resourceInfoW["type"], $new_capacity);
                                                                        break;
                                                                    }
                                                                    // if
                                                                }
                                                                // for
                                                                // dam
                                                            } else {
                                                                if ($improvementInfoW["type"] == 10) {
                                                                    for ($d = 0; $d < count($improvementInfoW["usingResources"]); $d++) {
                                                                        $resourceInfoW = getResourceInfo($getPage_connection2, $improvementInfoW["usingResources"][$d]);
                                                                        if ($resourceInfoW["type"] == 4 && $resourceInfoW["capacity"] >= 5) {
                                                                            $new_production = $new_production + 22.0 * (0.25 * $improvementInfoW["level"]) / count($improvementInfoW["owners"]);
                                                                            setResourceInfo($getPage_connection2, $resourceInfoW["id"], $resourceInfoW["type"], $new_capacity);
                                                                            break;
                                                                        }
                                                                        // if
                                                                    }
                                                                    // for
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                            // else if
                        }
                        // if
                    }
                    // for
                }
                // while
                $stmt1->close();
            } else {
            }
            // else
            /********************************
            		 HAPPINESS EFFECTS
            		 ********************************/
            $_SESSION["scriptOutput"] .= "Change happiness...<br />";
            // penalty for lack of consumer goods (basic and luxury), less penalty with more goods
            // luxury goods provide bigger boost
            $consumptionPenalty = 3.25 * $limit_allTilesOwned;
            $goodsPenalty = 0.0;
            if ($consumptionPenalty >= $new_goods[4] * 3.0E-5 * $limit_allTilesOwned + $new_goods[5] * 5.0E-5 * $limit_allTilesOwned) {
                $goodsPenalty = $consumptionPenalty - $new_goods[4] * 3.0E-5 * $limit_allTilesOwned + $new_goods[5] * 5.0E-5 * $limit_allTilesOwned;
            } else {
                $goodsPenalty = 0.0;
            }
            // else
            // happiness
            $new_happiness = ($new_happiness - ($happinessPenalty + $goodsPenalty) * $new_happiness / 100) / $limit_allTilesOwned;
            // set the rate of effect of happiness on production,taxation
            // Happiest
            if ($new_happiness >= 4) {
                $new_production = $new_production + $new_production * 0.25;
                $efficiencyPercent = $efficiencyPercent + $efficiencyPercent * 0.25;
                // Very Happy
            } else {
                if ($new_happiness >= 3) {
                    $new_production = $new_production + $new_production * 0.1;
                    $efficiencyPercent = $efficiencyPercent + $efficiencyPercent * 0.1;
                    // Happy
                } else {
                    if ($new_happiness >= 2) {
                        $new_production = $new_production + $new_production * 0.05;
                        $efficiencyPercent = $efficiencyPercent + $efficiencyPercent * 0.05;
                        // Content (nothing happens)
                    } else {
                        if ($new_happiness >= 1) {
                            // Unhappy
                        } else {
                            $new_production = $new_production - $new_production * 0.25;
                            $efficiencyPercent = $efficiencyPercent - $efficiencyPercent * 0.25;
                        }
                    }
                }
            }
            // else
            /********************************
            		 TRADE
            		 ********************************/
            $_SESSION["scriptOutput"] .= "Update trade routes, worth, offers...<br />";
            // cut off trade routes to the limit that exists and update trade info
            // this limits trade routes to currently controlled tiles
            $new_limit = $tradeCount;
            if (count($tradeInfoW["routes"]) < $new_limit) {
                for ($r = 0; $r < $new_limit; $r++) {
                    $new_routes[$r] = $tradeInfoW["routes"][$r];
                }
                // for
            } else {
                for ($r = 0; $r < count($tradeInfoW["routes"]); $r++) {
                    $new_routes[$r] = $tradeInfoW["routes"][$r];
                }
                // for
            }
            // else
            setTradeInfo($getPage_connection2, $tradeInfoW["id"], $next_nations, $new_routes, $new_limit);
            // do individual trades action if current nation involved
            if ($stmt1 = $getPage_connection2->prepare("SELECT id FROM offers ORDER BY id ASC")) {
                $stmt1->execute();
                $stmt1->store_result();
                $stmt1->bind_result($r_result);
                while ($stmt1->fetch()) {
                    $next_offers = $r_result;
                    $offerInfoW = getOfferInfo($getPage_connection2, $next_offers);
                    if ($offerInfoW["fromNation"] == $next_nations) {
                        if ($offerInfoW["turns"] > $offerInfoW["counter"]) {
                            if ($offerInfoW["status"] == 1) {
                                processOffer($getPage_connection2, $offersInfoW);
                                $new_offer = $offerInfoW["counter"] + 1;
                                // remove if trade offer has expired
                                if ($new_counter > $offerInfoW["turns"]) {
                                    deleteOfferInfo($getPage_connection2, $offerInfoW["id"]);
                                } else {
                                    setOfferInfo($getPage_connection2, $offerInfoW["id"], $offerInfoW["fromNation"], $offerInfoW["toNation"], $offerInfoW["givingItems"], $offerInfoW["receivingItems"], $offerInfoW["givingQuantities"], $offerInfoW["receivingQuantities"], $offerInfoW["givingTypes"], $offerInfoW["receivingTypes"], $offerInfoW["turns"], $new_counter, $offerInfoW["status"]);
                                }
                                // else
                            }
                            // if
                        }
                        // if
                    }
                    // if
                }
                // while
                $stmt1->close();
            } else {
            }
            // else
            // trade agreements
            $tradeBonus = 0.0;
            $productionBonus = 0.0;
            $happinessPenaltyFromTrade = 0.0;
            for ($v = 0; $v < count($tradeInfoW["routes"]); $v++) {
                $agreementInfoQ = getAgreementInfo($getPage_connection2, $tradeInfoW["routes"][$v]);
                if ($agreementInfoQ["fromNation"] == $next_nations) {
                    if ($offerInfoW["status"] == 1) {
                        // receive money/production
                        $worth1 = 0.0;
                        // total worth of trade
                        $nationFrom1 = getNationInfo($getPage_connection2, $agreementInfoQ["fromNation"]);
                        $nationTo1 = getNationInfo($getPage_connection2, $agreementInfoQ["toNation"]);
                        // figure out wealth and production worth
                        $totalWealth = $nationFrom1["money"] + $nationTo1["money"];
                        $totalProduction = $nationFrom1["production"] + $nationTo1["production"];
                        // high policy number = protectionism, low policy number = free trade
                        // max 25% bonus from policy for either production or wealth
                        $tradeBonus = $tradeBonus + $totalWealth * (0.01 + 0.025 * (10 - $agreementInfoQ["policy"])) / 2;
                        $productionBonus = $productionBonus + $totalProduction * (0.008 + 0.025 * $agreementInfoQ["policy"]) / 2;
                        // happiness penalty for clashing ideologies
                        if ($agreementInfoQ["policy"] > $nationInfoW["economy"]) {
                            if ($agreementInfoQ["policy"] - $nationInfoW["economy"] > 0 && $agreementInfoQ["policy"] - $nationInfoW["economy"] <= 1) {
                                $happinessPenaltyFromTrade = $happinessPenaltyFromTrade + 0.005;
                            } else {
                                if ($agreementInfoQ["policy"] - $nationInfoW["economy"] >= 2 && $agreementInfoQ["policy"] - $nationInfoW["economy"] <= 3) {
                                    $happinessPenaltyFromTrade = $happinessPenaltyFromTrade + 0.01;
                                } else {
                                    if ($agreementInfoQ["policy"] - $nationInfoW["economy"] >= 4 && $agreementInfoQ["policy"] - $nationInfoW["economy"] <= 5) {
                                        $happinessPenaltyFromTrade = $happinessPenaltyFromTrade + 0.02;
                                    } else {
                                        if ($agreementInfoQ["policy"] - $nationInfoW["economy"] >= 6 && $agreementInfoQ["policy"] - $nationInfoW["economy"] <= 7) {
                                            $happinessPenaltyFromTrade = $happinessPenaltyFromTrade + 0.03;
                                        } else {
                                            if ($agreementInfoQ["policy"] - $nationInfoW["economy"] >= 8 && $agreementInfoQ["policy"] - $nationInfoW["economy"] <= 9) {
                                                $happinessPenaltyFromTrade = $happinessPenaltyFromTrade + 0.04;
                                            } else {
                                                if ($agreementInfoQ["policy"] - $nationInfoW["economy"] >= 10) {
                                                    $happinessPenaltyFromTrade = $happinessPenaltyFromTrade + 0.05;
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                            // else if
                        } else {
                            if ($agreementInfoQ["policy"] < $nationInfoW["economy"]) {
                                if ($agreementInfoQ["economy"] - $nationInfoW["policy"] > 0 && $agreementInfoQ["economy"] - $nationInfoW["policy"] <= 1) {
                                    $happinessPenaltyFromTrade = $happinessPenaltyFromTrade + 0.005;
                                } else {
                                    if ($agreementInfoQ["economy"] - $nationInfoW["policy"] >= 2 && $agreementInfoQ["economy"] - $nationInfoW["policy"] <= 3) {
                                        $happinessPenaltyFromTrade = $happinessPenaltyFromTrade + 0.01;
                                    } else {
                                        if ($agreementInfoQ["economy"] - $nationInfoW["policy"] >= 4 && $agreementInfoQ["economy"] - $nationInfoW["policy"] <= 5) {
                                            $happinessPenaltyFromTrade = $happinessPenaltyFromTrade + 0.02;
                                        } else {
                                            if ($agreementInfoQ["economy"] - $nationInfoW["policy"] >= 6 && $agreementInfoQ["economy"] - $nationInfoW["policy"] <= 7) {
                                                $happinessPenaltyFromTrade = $happinessPenaltyFromTrade + 0.03;
                                            } else {
                                                if ($agreementInfoQ["economy"] - $nationInfoW["policy"] >= 8 && $agreementInfoQ["economy"] - $nationInfoW["policy"] <= 9) {
                                                    $happinessPenaltyFromTrade = $happinessPenaltyFromTrade + 0.04;
                                                } else {
                                                    if ($agreementInfoQ["economy"] - $nationInfoW["policy"] >= 10) {
                                                        $happinessPenaltyFromTrade = $happinessPenaltyFromTrade + 0.05;
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                                // else if
                            } else {
                            }
                        }
                        $new_counter = $agreementInfoQ["counter"] + 1;
                        // remove if trade agreement has expired
                        if ($new_counter > $agreementInfoQ["turns"]) {
                            deleteAgreementInfo($getPage_connection2, $agreementInfoQ["id"]);
                        } else {
                            setAgreementInfo($getPage_connection2, $agreementInfoQ["id"], $agreementInfoQ["policy"], $agreementInfoQ["turns"], $new_counter, $agreementInfoQ["toNation"], $agreementInfoQ["fromNation"], $agreementInfoQ["status"]);
                        }
                        // else
                    }
                    // if
                }
                // if
            }
            // for
            $new_happiness = $new_happiness - $happinessPenaltyFromTrade;
            $new_production = $new_production + $productionBonus;
            /********************************
            			 PRODUCTION COSTS
            			********************************/
            $_SESSION["scriptOutput"] .= "Produce stuff...<br />";
            // figure out spending percentage
            $using_production = $new_production * ($productionInfoW["spending"] * 0.01);
            // set production used to new spending amount
            $used_production = $using_production;
            // percentage of expenditure
            $ratios = $productionInfoW["ratios"];
            for ($t = 0; $t < count($ratios); $t++) {
                $ratio_id = $t + 1;
                $goodsInfoW = getGoodsInfo($getPage_connection2, $ratio_id);
                if ($goodsInfoW["id"] >= 1) {
                    $availableProduction = $used_production * ($ratios[$t] * 0.01);
                    // problem with this while loop: it's endless
                    while ($availableProduction > 0) {
                        $canProduce = false;
                        if ($goodsInfoW["productionRequired"] <= $availableProduction) {
                            if ($goodsInfoW["foodRequired"] <= $new_food) {
                                $checkForResourceTypes = true;
                                if (count($goodsInfoW["resourceTypesRequired"]) <= 1) {
                                    if ($goodsInfoW["resourceTypesRequired"][0] == 0) {
                                        $checkForResourceTypes = false;
                                    }
                                    // if
                                }
                                // if
                                if ($checkForResourceTypes === true) {
                                    for ($h = 0; $h < count($goodsInfoW["resourceTypesRequired"]); $h++) {
                                        // if resources are required
                                        if ($goodsInfoW["resourceTypesRequired"][$h] >= 1) {
                                            $resourceArraySlot1 = $goodsInfoW["resourceTypesRequired"][$h] - 1;
                                            if ($new_resources[$resourceArraySlot1] >= $goodsInfoW["resourceQuantitiesRequired"][$h]) {
                                                $canProduce = true;
                                            } else {
                                                $canProduce = false;
                                                break;
                                            }
                                            // else
                                        } else {
                                            $canProduce = true;
                                        }
                                        // else
                                    }
                                    // for
                                } else {
                                    $canProduce = true;
                                }
                                // else
                            } else {
                                $canProduce = false;
                            }
                            // else
                        } else {
                            $canProduce = false;
                        }
                        // else
                        if ($canProduce === true) {
                            for ($j = 0; $j < count($goodsInfoW["improvementTypesRequired"]); $j++) {
                                $typeCount = 0;
                                // if improvements are required
                                if ($goodsInfoW["improvementTypesRequired"][$j] >= 1) {
                                    if ($stmt2 = $getPage_connection2->prepare("SELECT id FROM improvementsmap ORDER BY id ASC")) {
                                        $stmt2->execute();
                                        $stmt2->store_result();
                                        $stmt2->bind_result($r_result);
                                        while ($stmt2->fetch()) {
                                            $next_improvements2 = $r_result;
                                            $improvementInfoY = getImprovementInfo($getPage_connection2, $next_improvements2);
                                            if ($improvementInfoY["type"] == $goodsInfoW["improvementTypesRequired"][$j]) {
                                                for ($f = 0; $f < count($improvementInfoY["owners"]); $f++) {
                                                    if ($improvementInfoY["owners"][$f] == $next_nations) {
                                                        $typeCount++;
                                                    }
                                                    // if
                                                }
                                                // for
                                            }
                                            // if
                                            if ($typeCount >= $goodsInfoW["improvementQuantitiesRequired"][$j]) {
                                                $canProduce = true;
                                                break;
                                            }
                                            // if
                                        }
                                        // while
                                        $stmt2->close();
                                    } else {
                                    }
                                    // else
                                    if ($typeCount < $goodsInfoW["improvementQuantitiesRequired"][$j]) {
                                        $canProduce = false;
                                        break;
                                    }
                                    // if
                                }
                                // if
                            }
                            // for
                        }
                        // if
                        // able to produce good, proceed
                        if ($canProduce === true) {
                            // subtract from available production, nation's food total, nation's resources totals
                            $availableProduction = $availableProduction - $goodsInfoW["productionRequired"];
                            $new_food = $new_food - $goodsInfoW["foodRequired"];
                            if ($checkForResourceTypes === true) {
                                for ($k = 0; $k < count($goodsInfoW["resourceTypesRequired"]); $k++) {
                                    // if resources are required
                                    if ($goodsInfoW["resourceTypesRequired"][$k] >= 1) {
                                        $resourceArraySlot = $goodsInfoW["resourceTypesRequired"][$k] - 1;
                                        $new_resources[$resourceArraySlot] = $new_resources[$resourceArraySlot] - $goodsInfoW["resourceQuantitiesRequired"][$k];
                                    }
                                    // if
                                }
                                // for
                            }
                            // if
                            // add new good
                            $new_goods[$t] = $new_goods[$t] + 1;
                        } else {
                            break;
                        }
                        // else
                    }
                    // while
                }
                // if
            }
            // for
            $new_production = $new_production - $used_production;
            // tax
            $tax = $old_population * 0.11 * ($efficiencyPercent * 0.01);
            // trade and production bonus formula
            $formula = $productionPercent * 0.01 * ($new_production * 14);
            $_SESSION["scriptOutput"] .= "prod: " . $new_production . "<br />";
            $_SESSION["scriptOutput"] .= "formula: " . $formula . "<br />";
            $_SESSION["scriptOutput"] .= "tax: " . $tax . "<br />";
            $_SESSION["scriptOutput"] .= "money: " . $new_money . "<br />";
            // final money calculation
            $new_money = $new_money + $formula + $tax;
            /********************************
            		 COSTS AND UPKEEP
            		 ********************************/
            $_SESSION["scriptOutput"] .= "Unit upkeep...<br />";
            // unit upkeep
            if ($stmt1 = $getPage_connection2->prepare("SELECT id FROM unitsmap ORDER BY id ASC")) {
                $stmt1->execute();
                $stmt1->store_result();
                $stmt1->bind_result($r_result);
                while ($stmt1->fetch()) {
                    $next_units = $r_result;
                    $unitInfoW = getUnitInfoByID($getPage_connection2, $next_units);
                    if ($unitInfoW["owner"] == $next_nations) {
                        $unitTypeInfoW = getUnitTypeInfo($getPage_connection2, $unitInfoW["type"]);
                        $tileInfoW = getTileInfo($getPage_connection2, $unitInfoW["continent"], $unitInfoW["xpos"], $unitInfoW["ypos"]);
                        $terrainInfoW = getTerrainInfo($getPage_connection2, $tileInfoW["terrain"]);
                        // figure out nearest supply depot for supply line distance
                        $best_difference = 9999;
                        $best_continent = 0;
                        if ($stmt2 = $getPage_connection2->prepare("SELECT id FROM improvementsmap ORDER BY id ASC")) {
                            $stmt2->execute();
                            $stmt2->bind_result($r_result);
                            while ($stmt2->fetch()) {
                                $next_improvements1 = $r_result;
                                $improvementInfoWA = getImprovementInfo($getPage_connection2, $next_improvements1);
                                if ($improvementInfoWA["id"] >= 1) {
                                    for ($v = 0; $v < count($improvementInfoWA["owners"]); $v++) {
                                        if ($improvementInfoWA["owners"][$v] == $next_nations) {
                                            if ($improvementInfoWA["type"] == 5) {
                                                $current_difference = 0;
                                                if ($improvementInfoWA["continent"] == $unitInfoW["continent"]) {
                                                    $best_difference = 0;
                                                    $best_continent = $improvementInfoWA["continent"];
                                                    break;
                                                } else {
                                                    if ($improvementInfoWA["continent"] > $unitInfoW["continent"]) {
                                                        $current_difference = $improvementInfoWA["continent"] - $unitInfoW["continent"];
                                                    } else {
                                                        if ($improvementInfoWA["continent"] < $unitInfoW["continent"]) {
                                                            $current_difference = $unitInfoW["continent"] - $improvementInfoWA["continent"];
                                                        }
                                                    }
                                                }
                                                // else if
                                                if ($current_difference < $best_difference) {
                                                    $best_difference = $current_difference;
                                                    $best_continent = $improvementInfoWA["continent"];
                                                }
                                                // if
                                            }
                                            // if
                                        }
                                        // if
                                    }
                                    // for
                                }
                                // if
                            }
                            // while
                            $stmt2->close();
                        } else {
                        }
                        // else
                        $distance = $best_difference;
                        $distanceModifier = 5 * $distance;
                        if ($terrainInfoW["upkeepModifier"] >= 1) {
                            $mod = 0.01;
                            $food_upkeep = $food_upkeep + $unitTypeInfoW["foodRequired"] / 4 + $unitTypeInfoW["foodRequired"] / 4 * (($terrainInfoW["upkeepModifier"] + $distanceModifier) * $mod);
                            $money_upkeep = $money_upkeep + $unitTypeInfoW["baseCost"] / 4 + $unitTypeInfoW["baseCost"] / 4 * (($terrainInfoW["upkeepModifier"] + $distanceModifier) * $mod);
                        } else {
                            $food_upkeep = $food_upkeep + $unitTypeInfoW["foodRequired"] / 4;
                            $money_upkeep = $money_upkeep + $unitTypeInfoW["baseCost"] / 4;
                        }
                        // else
                    }
                    // if
                }
                // while
                $stmt1->close();
            } else {
            }
            // else
            $_SESSION["scriptOutput"] .= "Improvement upkeep...<br />";
            // improvement upkeep and nation's population update
            if ($stmt2 = $getPage_connection2->prepare("SELECT id FROM tilesmap ORDER BY id ASC")) {
                $stmt2->execute();
                $stmt2->store_result();
                $stmt2->bind_result($r_result);
                while ($stmt2->fetch()) {
                    $next_tiles = $r_result;
                    $tileInfoW = getTileInfoByID($getPage_connection2, $next_tiles);
                    $terrainInfoW = getTerrainInfo($getPage_connection2, $tileInfoW["terrain"]);
                    for ($y = 0; $y < count($tileInfoW["improvements"]); $y++) {
                        $improvementInfoW = getImprovementInfo($getPage_connection2, $tileInfoW["improvements"][$y]);
                        $improvementTypeInfoW = getImprovementTypeInfo($getPage_connection2, $improvementInfoW["type"]);
                        for ($z = 0; $z < count($improvementInfoW["owners"]); $z++) {
                            if ($improvementInfoW["owners"][$z] == $next_nations) {
                                // figure out distance costs
                                if ($nationInfoW["home"] > $tileInfoW["continent"]) {
                                    $distanceModifier = $nationInfoW["home"] - $tileInfoW["continent"];
                                } else {
                                    $distanceModifier = $tileInfoW["continent"] - $nationInfoW["home"];
                                }
                                $mod = 0.01;
                                $money_upkeep = $money_upkeep + $improvementTypeInfoW["baseCost"] / 4 / count($improvementInfoW["owners"]) + $improvementTypeInfoW["baseCost"] / 4 / count($improvementInfoW["owners"]) * (($distanceModifier + $terrainInfoW["upkeepModifier"]) * $mod);
                            }
                            // if
                        }
                        // for
                    }
                    // for
                    if ($tileInfoW["owner"] == $next_nations) {
                        $new_population = $new_population + $tileInfoW["population"];
                    }
                    // if
                }
                // while
                $stmt2->close();
            } else {
            }
            // else
            /********************************
            			FOOD
            			********************************/
            $_SESSION["scriptOutput"] .= "Feeding time...<br />";
            $_SESSION["scriptOutput"] .= "food: " . $new_food . "<br />";
            // food debt
            if ($new_food < $food_upkeep) {
                $food_debt = $food_upkeep - $new_food;
                $new_food = 0;
            } else {
                $new_food = $new_food - $food_upkeep;
            }
            // else
            // if food can feed new population, then allow for the growth
            if ($new_food >= $new_population) {
                $surplus = $new_food - $new_population;
                $popGrowth = 0.1 * ($surplus / $limit_allTilesOwned);
                $popGrowthInt = round($popGrowth, 0, PHP_ROUND_HALF_UP);
                $new_population = 0;
                // reset population to assign new value based on pop changes
                $next_tiles = 1;
                if ($stmt2 = $getPage_connection2->prepare("SELECT id FROM tilesmap ORDER BY id ASC")) {
                    $stmt2->execute();
                    $stmt2->store_result();
                    $stmt2->bind_result($r_result);
                    while ($stmt2->fetch()) {
                        $next_tiles = $r_result;
                        $tileInfoD = getTileInfoByID($getPage_connection2, $next_tiles);
                        $new_tile_population = 0;
                        if ($tileInfoD["owner"] == $next_nations) {
                            $new_tile_population = $tileInfoD["population"] + $popGrowthInt;
                            setTileInfo($getPage_connection2, $tileInfoD["id"], $tileInfoD["continent"], $tileInfoD["xpos"], $tileInfoD["ypos"], $tileInfoD["terrain"], $tileInfoD["resources"], $tileInfoD["improvements"], $tileInfoD["owner"], $tileInfoD["claims"], $new_tile_population);
                            $new_population = $new_population + $new_tile_population;
                        }
                        // if
                    }
                    // while
                    $stmt2->close();
                } else {
                    $next_tiles = 0;
                }
                // else
                // if food cannot even sustain the population, it shrinks
            } else {
                if ($new_food < $new_population) {
                    // if there is food debt, then set food debt + random number to be deficit
                    if ($food_debt >= 1) {
                        $rand = mt_rand(1, 50);
                        $deficit = $food_debt + $rand;
                        $popShrink = 0.15 * ($deficit / $limit_allTilesOwned);
                        $popShrinkInt = round($popShrink, 0, PHP_ROUND_HALF_DOWN);
                        $new_population = 0;
                        // reset population to assign new value based on pop changes
                        if ($stmt2 = $getPage_connection2->prepare("SELECT id FROM tilesmap ORDER BY id ASC")) {
                            $stmt2->execute();
                            $stmt2->store_result();
                            $stmt2->bind_result($r_result);
                            while ($stmt2->fetch()) {
                                $next_tiles = $r_result;
                                $tileInfoD = getTileInfoByID($getPage_connection2, $next_tiles);
                                $new_tile_population = 0;
                                if ($tileInfoD["owner"] == $next_nations) {
                                    $new_tile_population = $tileInfoD["population"] - $popShrinkInt;
                                    if ($new_tile_population < 0) {
                                        $new_tile_population = 0;
                                    }
                                    // if
                                    setTileInfo($getPage_connection2, $tileInfoD["id"], $tileInfoD["continent"], $tileInfoD["xpos"], $tileInfoD["ypos"], $tileInfoD["terrain"], $tileInfoD["resources"], $tileInfoD["improvements"], $tileInfoD["owner"], $tileInfoD["claims"], $new_tile_population);
                                    $new_population = $new_population + $new_tile_population;
                                }
                                // if
                            }
                            // while
                            $stmt2->close();
                        } else {
                        }
                        // else
                        // otherwise just use difference between population and food and random number to be deficit
                    } else {
                        $rand = mt_rand(1, 100);
                        $deficit = $new_population - $new_food + $rand;
                        $popShrink = 0.25 * ($deficit / $limit_allTilesOwned);
                        $popShrinkInt = round($popShrink, 0, PHP_ROUND_HALF_DOWN);
                        $new_population = 0;
                        // reset population to assign new value based on pop changes
                        if ($stmt2 = $getPage_connection2->prepare("SELECT id FROM tilesmap ORDER BY id ASC")) {
                            $stmt2->execute();
                            $stmt2->store_result();
                            $stmt2->bind_result($r_result);
                            while ($stmt2->fetch()) {
                                $next_tiles = $r_result;
                                $tileInfoD = getTileInfoByID($getPage_connection2, $next_tiles);
                                $new_tile_population = 0;
                                if ($tileInfoD["owner"] == $next_nations) {
                                    $new_tile_population = $tileInfoD["population"] - $popShrinkInt;
                                    if ($new_tile_population < 0) {
                                        $new_tile_population = 0;
                                    }
                                    // if
                                    setTileInfo($getPage_connection2, $tileInfoD["id"], $tileInfoD["continent"], $tileInfoD["xpos"], $tileInfoD["ypos"], $tileInfoD["terrain"], $tileInfoD["resources"], $tileInfoD["improvements"], $tileInfoD["owner"], $tileInfoD["claims"], $new_tile_population);
                                    $new_population = $new_population + $new_tile_population;
                                }
                                // if
                            }
                            // while
                            $stmt2->close();
                        } else {
                        }
                        // else
                    }
                    // else
                }
            }
            // else if
            /********************************
            			 DEBT COLLECTION
            			********************************/
            $_SESSION["scriptOutput"] .= "Money and Debts...<br />";
            // pay off debt before anything else
            if ($new_debt > 0) {
                if ($new_money < $new_debt) {
                    $money_debt = $new_debt - $new_money;
                    // reduce the debt if nothing else
                    $new_debt = $money_debt;
                    $new_money = 0;
                } else {
                    $new_money = $new_money - $new_debt;
                    $new_debt = 0;
                }
                // else
            }
            // if
            if ($new_money < $money_upkeep) {
                $money_debt = $money_upkeep - $new_money;
                $new_debt = $money_debt;
                $new_money = 0;
            } else {
                $new_money = $new_money - $money_upkeep;
            }
            // else
            $_SESSION["scriptOutput"] .= "Debt collecting...<br />";
            // money debt collecting
            // increase strike counter if debt is owed
            if ($new_debt > 0) {
                $new_strike = $new_strike + 1;
            }
            // if
            if ($new_food < 0) {
                $new_food = 0;
            }
            // if
            /********************************
            		 SET NEW VARIABLES
            		 ********************************/
            $_SESSION["scriptOutput"] .= "Update database...<br />";
            setNationInfo($getPage_connection2, $next_nations, $nationInfoW["name"], $nationInfoW["home"], $nationInfoW["formal"], $nationInfoW["flag"], $new_production, $new_money, $new_debt, $new_happiness, $new_food, $nationInfoW["authority"], 0, $nationInfoW["economy"], 0, $nationInfoW["organizations"], $nationInfoW["invites"], $new_goods, $new_resources, $new_population, $new_strike);
        }
        // while
        $stmt->close();
    } else {
    }
    // else
    $_SESSION["scriptOutput"] .= "That's a wrap, script complete.<br />";
}