function call_manual_updater_text() { global $upper, $lower, $submit1, $submit2, $tool; include_once 'inc/functions/resort_tools.php'; if (!user_has_access($tool)) { echo "Sorry, this page is restricted to ORKFiA Staff"; include_game_down(); exit; } // 30 minutes rather than 30 seconds until script times out set_time_limit(1800); if ($upper && $lower && $submit1) { $checker = 0; for ($i = $lower; $i < $upper; $i++) { // echo "<br>" . $i . " :: "; $check = mysql_query("Select * from user where id = {$i}"); $check = mysql_fetch_array($check); $check3 = mysql_query("Select * from stats where id = {$i}"); $check3 = mysql_fetch_array($check3); if ($check[USERNAME] && $check3[TRIBE]) { // echo $i; include_once 'inc/functions/update.php'; check_to_update($check[ID]); include_once 'inc/classes/clsUser.php'; $objTmpUser = new clsUser($check[ID]); include_once 'inc/functions/update_ranking.php'; doUpdateRankings($objTmpUser, 'yes'); $checker++; } } echo "<br><br>{$checker} successfully updated =)<br><br>"; } elseif ($upper && $lower && $submit2) { $checker = 0; for ($i = $lower; $i < $upper; $i++) { echo "<br>" . $i . " :: "; $check = mysql_query("Select * from user where id = {$i}"); $check = mysql_fetch_array($check); $check3 = mysql_query("Select * from stats where id = {$i}"); $check3 = mysql_fetch_array($check3); if ($check[USERNAME] && $check3[TRIBE]) { echo $i; include_once 'inc/classes/clsUser.php'; $objTmpUser = new clsUser($check[ID]); include_once 'inc/functions/update_ranking.php'; doUpdateRankings($objTmpUser, 'yes'); $checker++; } } echo "<br><br>{$checker} successfully updated =)<br><br>"; } if ($upper) { $bleh = $upper + 100; } else { $bleh = 100; $upper = 2; } echo $strForm = '<form method="post" action="' . $_SERVER['REQUEST_URI'] . '">' . 'Input lower: <input name="lower" size="5" value="' . $upper . '">' . '<br />' . 'Input upper: <input name="upper" size="5" value="' . $bleh . '">' . '<br /><br />' . '<input type="submit" value="Update" name="submit1"> ' . '<input type="submit" value="Rankings Only" name="submit2">' . '</form>'; }
function call_update_text() { $tool = $_GET['tool']; include_once 'inc/functions/resort_tools.php'; check_access($tool); echo "'Updating' a tribe means updating the rankings and alliscreen, " . "not giving an actual update.<br /><br />" . "<form method='post' action='{$_SERVER['REQUEST_URI']}'>" . "User id to update: <input name='id' size='5' /><br /><br />" . "<input type='submit' value='Update' name='op' />" . "</form>"; if (isset($_POST['op']) && !empty($_POST['id'])) { $id = $_POST['id']; $op = $_POST['op']; include_once 'inc/functions/update.php'; include_once 'inc/functions/update_ranking.php'; $objTrgUser = new clsUser($id); doUpdateRankings($objTrgUser, 'yes'); check_to_update($objTrgUser->get_userid()); echo "<br /><br />User " . $objTrgUser->get_userid() . " updated =)"; } }
function call_tourers_text() { require_once 'inc/functions/resort_tools.php'; check_access($_GET['tool']); require_once 'inc/functions/mail.php'; // first the "actually do something if asked" thing if (isset($_POST['id']) && isset($_POST['submit']) && isset($_POST['sure']) && $_POST['sure'] == 'yes') { //get the old values $objTrgUser = new clsUser($_POST['id']); $arrBuilds = $objTrgUser->get_builds(); $arrArmys = $objTrgUser->get_armys(); $intFame = $objTrgUser->get_stat(FAME); //make the new values $keysBuilds = array_keys($arrBuilds); $valsBuilds = array_fill(0, count($arrBuilds), 0); $arrBuilds = array_combine($keysBuilds, $valsBuilds); $arrBuilds[ID] = $_POST['id']; //DO NOT FORGET $arrBuilds[LAND] = 1; //prevent div0s $keysArmys = array_keys($arrArmys); $valsArmys = array_fill(0, count($arrArmys), 0); $arrArmys = array_combine($keysArmys, $valsArmys); $arrArmys[ID] = $_POST['id']; //DO NOT FORGET $intFame = 0; $arrUserInfo = array(NEXT_ATTACK => 1, PAUSE_ACCOUNT => 48); //set the new values $objTrgUser->set_builds($arrBuilds); $objTrgUser->set_armys($arrArmys); $objTrgUser->set_stat(FAME, $intFame); //update the tribe too require_once 'inc/functions/update.php'; require_once 'inc/functions/update_ranking.php'; doUpdateRankings($objTrgUser, true); check_to_update($objTrgUser->get_userid()); //do this afterwards, otherwise the updaterankings doesn't work too well $objTrgUser->set_user_infos($arrUserInfo); //tell them about it send_mail($GLOBALS['objSrcUser']->get_userid(), $_POST['id'], "You have been tourified", "This is an automated message indicating that I have used the 'Tourify' tool to turn your tribe into a tourer tribe."); echo "User {$_POST['id']} has been tourified. ORKFiA mail has been sent to let him know.<br /><br /><br />"; } echo "'Tourifying' a tribe means setting it to 1 land, 0 fame, removing all military and suspending it. " . "Please make sure you're tourifying the right tribe, because the only way to undo this is resetting." . "<br /><br /><form method=\"post\" action=\"{$_SERVER['REQUEST_URI']}\">" . "<label for=\"id\">User id of tribe to tourify </label>" . "<input type=\"text\" id=\"id\" name=\"id\" size=\"5\" maxlength=\"5\" /><br />" . "<input type=\"checkbox\" id=\"sure\" name=\"sure\" value=\"yes\" />" . "<label for=\"sure\"> I'm sure I want to tourify this tribe</label><br />" . "<input type=\"submit\" name=\"submit\" value=\"tourify\" />" . "</form>"; }
function make_magic2(&$objSrcUser, $i_intTargetid, &$arrSpells, $i_strSpellName, $i_intSpelltimes, $i_blnStopOnSuccess, $i_blnMinHours, $i_minHours) { $iUserID = $objSrcUser->get_userid(); $damageModifier = 1; mt_srand((double) microtime() * 1000000); $objTrgUser = new clsUser($i_intTargetid); $arrSrcStats = $objSrcUser->get_stats(); $arrTrgStats = $objTrgUser->get_stats(); $arrTrgBuild = $objTrgUser->get_builds(); $intCasterMageLevel = get_mage_level($objSrcUser); $intTargetMageLevel = get_mage_level($objTrgUser); if ($arrTrgStats[ALLIANCE] == "0") { echo "This Player Has Either Been Deleted Or Suspended"; free_casting_now($iUserID); include_game_down(); exit; } // war check include_once "inc/functions/war.php"; // Gotland was here $warmodifier = war_alli($objTrgUser->get_stat(ALLIANCE), $objSrcUser->get_stat(ALLIANCE)); if ($warmodifier > 1) { $res = mysql_query("SELECT defiance FROM spells WHERE id = {$iUserID}"); $line = mysql_fetch_assoc($res); $damageModifier = $damageModifier * 1.1; if ($line["defiance"] > 0) { $damageModifier = $damageModifier * 1.1; } } $target = war_target($arrTrgStats[ALLIANCE]); if ($target != 0 && $damageModifier == 0) { //what is this supposed to do? right now it does nothing at all - AI $damageModifier = $damageModifier * 0.95; } $lastWar = mysql_query("SELECT last_target, last_end FROM war WHERE id = " . $arrSrcStats[ALLIANCE]); $lastWar = mysql_fetch_array($lastWar); $timeCounter = mysql_query("SELECT hour_counter FROM admin_global_time"); $timeCounter = mysql_fetch_array($timeCounter); // Spell type = SPELL_SELF, SPELL_ALLIANCE, SPELL_ENEMY etc (integers) $strSpellType = $arrSpells[$i_strSpellName]['type']; // Spell Display = full name of spell $strSpellDisplay = $arrSpells[$i_strSpellName]['display']; if ($arrTrgStats[ALLIANCE] == $lastWar['last_target'] && $strSpellType == SPELL_ENEMY) { if ($timeCounter['hour_counter'] <= $lastWar['last_end'] + 12) { echo '<div class="center">The war is not even over for 12 hours. Give them some time to recover!</div>'; free_casting_now($iUserID); include_game_down(); exit; } } include_once 'inc/functions/update.php'; check_to_update($objTrgUser->get_userid()); // Include the code for the spell about to be cast require_once "inc/spells/" . $i_strSpellName . ".php"; // Check for casting "harmful" spells on yourself if ($iUserID == $objTrgUser->get_userid() && ($strSpellType == SPELL_ENEMY || $strSpellType == SPELL_ALL || $strSpellType == SPELL_WAR)) { echo '<div class="center">' . "I'm sorry you cannot cast " . $strSpellDisplay . " upon yourself.\n"; echo "<br /><br /><br /><a href=main.php?cat=game&page=mystic&magekd=" . $objSrcUser->get_stat(ALLIANCE) . ">Back to Mystics</a></div>"; free_casting_now($iUserID); include_game_down(); exit; } // Martel: Heal may only target alliance members // SPELL_ALLIANCE only on allimates $iSrcAlli = $objSrcUser->get_stat(ALLIANCE); $iTrgAlli = $objTrgUser->get_stat(ALLIANCE); if ($strSpellType == SPELL_ALLIANCE && $iTrgAlli != $iSrcAlli) { echo '<div class="center">' . "Sorry but you cannot cast " . $strSpellDisplay . " on non-allies.<br />"; echo "<br /><br /><br /><a href=\"main.php?cat=game&page=mystic&magekd=" . $objTrgUser->get_stat(ALLIANCE) . "\">Back to Mystics</a></div>"; free_casting_now($iUserID); include_game_down(); exit; } // SPELL_ENEMY not on own alli if ($strSpellType == SPELL_ENEMY && $iTrgAlli == $iSrcAlli) { echo '<div class="center">' . "Sorry, but I refuse to do harm to our alliance members.<br />"; echo "<br /><br /><br /><a href=\"main.php?cat=game&page=mystic&magekd=" . $objTrgUser->get_stat(ALLIANCE) . "\">Back to Mystics</a></div>"; free_casting_now($iUserID); include_game_down(); exit; } // Check for target protection period if ($objTrgUser->get_user_info(HOURS) < PROTECTION_HOURS) { // Removed code-reuse of the copy-paste variety - AI 30/09/06 if ($strSpellType != SPELL_SELF) { $iRemaining = PROTECTION_HOURS - $objTrgUser->get_user_info(HOURS); echo '<div id="textMedium"><p>' . 'It appears that the tribe you wish to target is still ' . 'materializing. Our Mage estimates that it will take another ' . $iRemaining . ' updates for the area to become a stable part of ' . 'our reality.' . "</p><p>" . '<a href="main.php?cat=game&page=mystic&magekd=' . $objTrgUser->get_stat(ALLIANCE) . '">Back to Mystics</a>' . '</p>' . '</div>'; free_casting_now($iUserID); include_game_down(); exit; } } // Check for own protection period (this is also checked in mystic2.inc.php if ($objSrcUser->get_user_info(HOURS) < PROTECTION_HOURS) { if ($strSpellType != SPELL_SELF) { echo '<div id="textMedium"><p>' . 'You are still under protection.' . "</p><p>" . '<a href="main.php?cat=game&page=mystic&magekd=' . $objSrcUser->get_stat(ALLIANCE) . '">Back to Mystics</a>' . '</p>' . '</div>'; free_casting_now($iUserID); include_game_down(); exit; } } // Check for visioning a spirit if ($objTrgUser->get_stat(RACE) == 'Spirit' && $i_strSpellName == 'vision') { echo '<div id="textMedium"><p>' . "Your mystics are confused, they can't see anything at all." . "</p><p>" . '<a href="main.php?cat=game&page=mystic&magekd=' . $objSrcUser->get_stat(ALLIANCE) . '">Back to Mystics</a>' . '</p>' . '</div>'; free_casting_now($iUserID); include_game_down(); exit; } // Check for casting jura on a Templar - AI 11/02/2007 if ($objTrgUser->get_stat(RACE) == 'Templar' && $i_strSpellName == "juranimosity") { echo "Sorry, but " . $objTrgUser->get_stat(TRIBE) . " does not have any thieves for me to disband."; echo "<br /><br /><br /><a href=\"main.php?cat=game&page=mystic&magekd=" . $objTrgUser->get_stat(ALLIANCE) . ">Back to Mystics</a>"; free_casting_now($iUserID); include_game_down(); exit; } // check the user has cast it at lest 1 time if ($i_intSpelltimes <= 0) { echo "Sorry but you must cast this spell at least 1 time.<br />"; echo "<br /><br /><br /><a href=main.php?cat=game&page=mystic&magekd=" . $objTrgUser->get_stat(ALLIANCE) . ">Back to Mystics</a>"; free_casting_now($iUserID); include_game_down(); exit; } // Added by Genia4, checks that the user didnt ask to cast a self-spell until it succeeds for less than 1 hours. if ($i_blnMinHours && $i_minHours <= 0) { echo "Sorry but you must tell your mage for how much time you want the self spell.<br />"; echo "<br /><br /><br /><a href=main.php?cat=game&page=mystic&magekd=" . $objTrgUser->get_stat(ALLIANCE) . ">Back to Mystics</a>"; free_casting_now($iUserID); include_game_down(); exit; } // check the user has cast it no more than X times if ($i_intSpelltimes > MAX_SPELL_CASTS) { echo "Sorry but you can't auto-cast more than " . MAX_SPELL_CASTS . " times in a row in the interests of reducing server lag.<br />"; echo "<br /><br /><br /><a href=main.php?cat=game&page=mystic&magekd=" . $objTrgUser->get_stat(ALLIANCE) . ">Back to Mystics</a>"; free_casting_now($iUserID); include_game_down(); exit; } // check they aren't trying to cast a spell beyond their level, they must've modified the // form directly to do this....TSKTSK! $iMageLevel = get_mage_level($objSrcUser); // Martel: Added age 22 to implement high acreage spells // And removed again - AI 30/09/06 //$arrSrcBuild = $objSrcUser->get_builds(); //$iTotalAcres = $arrSrcBuild[LAND]; if ($iMageLevel < $arrSpells[$i_strSpellName]['level']) { echo "I'm sorry, you cannot cast " . $strSpellDisplay . "."; echo "<br /><br /><br /><a href=main.php?cat=game&page=mystic&magekd=" . $objSrcUser->get_stat(ALLIANCE) . ">Back to Mystics</a>"; free_casting_now($iUserID); include_game_down(); exit; } if (!clsBlock::isOpAllowed($objSrcUser, $objTrgUser) && $strSpellType != SPELL_SELF) { echo '<div id="textMedium"><p>' . 'Someone else from the same IP has already opped this tribe during the last 8 hours.' . '</p><p>' . '<a href="main.php?cat=game&page=mystic">Return</a>' . '</p></div>'; clsBlock::reportOp($objSrcUser, $objTrgUser, 'Spell: ' . $i_strSpellName, false); free_casting_now($iUserID); include_game_down(); exit; } $intOldPower = $objSrcUser->get_spell(POWER); //Check for Thwart $trgThwart = 1; if ($strSpellType != SPELL_SELF) { $arrTrgSpells = $objTrgUser->get_spells(); if ($arrTrgSpells[THWART] > 0) { $trgThwart = 0.75; } } //Churches // Tragedy: april 20th 2002: // adding a cap of max 80% effectiveness on churches, ergo max 20% of land $church_percentage = min(0.2, $arrTrgBuild['churches'] / $arrTrgBuild['land']); //frost: added high elves church bonus if ($objTrgUser->get_stat(RACE) == 'High Elf') { $church_bonus = $church_percentage * 4; } else { $church_bonus = $church_percentage * 3.5; } // Skathen: May 10th 2002: // Stop churches affecting self spells // Stop selected target affecting self spells // Martel: version 2.0, same purpose if ($strSpellType == SPELL_SELF) { //next line a small hack to prevent possible future bugs $objTrgUser = $objSrcUser; $church_bonus = 0; $trgThwart = 1; $intTargetMageLevel = 12 - $intCasterMageLevel; if ($intTargetMageLevel <= 4) { $intTargetMageLevel = 4; } if ($objSrcUser->get_user_info(HOURS) < PROTECTION_HOURS) { $intTargetMageLevel = 3; } } $chance_to_cast = formulate_chance($intCasterMageLevel, $intTargetMageLevel, $arrSpells[$i_strSpellName]); //========================================================================== // Main block - calculates success-rates, calls the specific spell-function //========================================================================== //How many spells can we cast ? //since we don't have 'infinity', we'll use an arbitrarily large number $totalAvailable = $arrSpells[$i_strSpellName]['cost'] > 0 ? floor($intOldPower / $arrSpells[$i_strSpellName]['cost']) : 9999999999.0; if ($totalAvailable > $i_intSpelltimes) { $totalAvailable = $i_intSpelltimes; } /* check the tribe still has the power to cast one time*/ if ($totalAvailable <= 0) { echo '<div class="center">' . "I'm sorry, you don't have enough Magic Power to cast that spell."; echo "<br /><br /><br /><a href=main.php?cat=game&page=mystic&magekd=" . $objTrgUser->get_stat(ALLIANCE) . ">Back to Mystics</a></div>"; free_casting_now($iUserID); include_game_down(); exit; } /* check for casting on a Nazgul, but only if its not a self spell */ if ($strSpellType != SPELL_SELF && $objTrgUser->get_stat(RACE) == "Nazgul") { $nazgulBonus = 0.2; } else { $nazgulBonus = 0; } // added nazgul casting failures if ($objSrcUser->get_stat(RACE) == "Nazgul") { $nazgulPenalty = 0.25; } else { $nazgulPenalty = 0; } /* check for casting on a Dragon, casting on dragon gives 50% less damage */ if ($objTrgUser->get_stat(RACE) == "Dragon") { $damageModifier *= 0.5; } // Roar of the horde fireball if ($strSpellType == SPELL_ENEMY && ($objTrgUser->get_stat(RACE) == "Uruk Hai" || $objTrgUser->get_stat(RACE) == "Oleg Hai" || $objTrgUser->get_stat(RACE) == "Mori Hai")) { $id = $objTrgUser->get_userid(); $seek = mysql_query("Select * from spells where id = {$id}"); $seek = mysql_fetch_array($seek); if ($seek['roar'] > 0 && $seek['forest'] == 0) { $rothBonus = 1 / 7; } else { $rothBonus = 0; } } else { $rothBonus = 0; } //Formulate the independent failure-chances. ML=magelevel, CH=Church-protection, race=race-protection, etc... $P_ML = 1 - $trgThwart * min($chance_to_cast, 290) / 300; $P_CH = $church_bonus; //$P_race1 -- used to be dragon protection $P_race2 = $nazgulBonus; $P_race3 = $nazgulPenalty; $P_roth = $rothBonus; // Martel: Adding exceptions here (alliance spell) if ($strSpellType == SPELL_ALLIANCE) { $P_CH = 0; $P_roth = 0; } //Calculate total chance of success per spell $P_success = (1 - $P_ML) * (1 - $P_CH) * (1 - $P_race2) * (1 - $P_race3) * (1 - $P_roth); //Loop through the number of spells casted, randomly decide wether it succeeds or fails. //When it fails, randomly choose a reason based on the relative failure-rates of all possible failure-reasons //Note that Stop-On-Success will be dealt with later on, by the spell-include-function $cntSpellSuccess = 0; $cntSF_total = 0; $cntSF_ML = 0; $cntSF_CH = 0; $cntSF_race2 = 0; $cntSF_race3 = 0; $cntSF_roth = 0; //Don't worry too much about the math behind it. It's correct and assures a fair distribution over the various 'reasons for failure' $P_fail_Total = $P_ML + $P_CH + $P_race2 + $P_race3 + $P_roth; $P_fail_ML = $P_ML / $P_fail_Total; $P_fail_CH = $P_CH / $P_fail_Total; $P_fail_race2 = $P_race2 / $P_fail_Total; $P_fail_race3 = $P_race3 / $P_fail_Total; $P_fail_roth = $P_roth / $P_fail_Total; if ($i_blnStopOnSuccess && $i_blnMinHours && $strSpellType == SPELL_SELF) { $i_blnStopOnSuccess = FALSE; } if ($i_blnMinHours && $strSpellType != SPELL_SELF) { $i_blnStopOnSuccess = TRUE; } for ($x = 1; $x <= $totalAvailable; $x++) { $random = rand(1, 10000) / 10000; if ($random < $P_success) { $cntSpellSuccess++; //Stop-On-Success check if ($i_blnStopOnSuccess == 1) { $totalAvailable = $x; break; } } else { $cntSF_total++; //Why did the spell fail ? Default ML-difference, CHs, race-protection, roth-protection, etc... $random = rand(1, 10000) / 10000; if ($random <= $P_fail_ML) { $cntSF_ML++; } if ($random > $P_fail_ML && $random <= $P_fail_ML + $P_fail_CH) { $cntSF_CH++; } if ($random > $P_fail_ML + $P_fail_CH && $random <= $P_fail_ML + $P_fail_CH + $P_fail_race2) { $cntSF_race2++; } if ($random > $P_fail_ML + $P_fail_CH + $P_fail_race2 && $random <= $P_fail_ML + $P_fail_CH + $P_fail_race2 + $P_fail_race3) { $cntSF_race3++; } if ($random > $P_fail_ML + $P_fail_CH + $P_fail_race2 + $P_fail_race3) { $cntSF_roth++; } } } // Ok, now we're done with calcing how many spells will succeed and why they will fail, we proceed to actually casting the spells // Call with: SpellCaster-object, Target-object, Spellname, Times-to-cast, Minimum-hours if (!$i_blnMinHours) { $minHours = 0; } else { $minHours = $i_minHours; } if ($cntSpellSuccess > 0) { $spellResult = cast_spell($objSrcUser, $objTrgUser, $arrSpells[$i_strSpellName], $cntSpellSuccess, $minHours, $damageModifier); } else { // Gotland: initialize the spellresult to avoid error message in case all attempts failed $spellResult["casted"] = 0; $spellResult["damage"] = 0; $spellResult["text_news"] = ""; $spellResult["text_screen"] = ""; } // $spellResult structure: (it's an array) // ["damage"] = 'Damage' done, could be used to calculate fame, not used for that right now. // ["casted"] = Amount of spells casted // ["text_screen"] = Return-text for the spell, to be outputted on the screen // ["text_news"] = text for the tribenews of the victim // Spend the mana and save back to to the db $manaSpent = ($spellResult["casted"] + $cntSF_total) * $arrSpells[$i_strSpellName]['cost']; $objSrcUser->set_spell(POWER, $intOldPower - $manaSpent); $dtTimestamp = date(TIMESTAMP_FORMAT); // Print out spell-casting-report if ($cntSpellSuccess == 0) { $spellResult["casted"] = 0; } $strReport = "<p>" . "Your mage has casted the spell " . ($spellResult["casted"] + $cntSF_total) . " times.<br />" . "He succeeded " . $spellResult["casted"] . " times and failed " . $cntSF_total . " times.<br />"; if ($cntSF_ML > 0) { $strReport .= $cntSF_ML . " failures he blames on lack of training.<br />"; } if ($cntSF_CH > 0) { $strReport .= $cntSF_CH . " of his cast-attempts were stopped by the Gods.<br />"; } if ($cntSF_race2 > 0) { $strReport .= $cntSF_race2 . " spells failed due to ancient Nazgul protection.<br />"; } if ($cntSF_race3 > 0) { $strReport .= $cntSF_race3 . " times your mage was hindered by our Nazgul curse.<br />"; } if ($cntSF_roth > 0) { // Roar of the Hoard "fireball bonus" // M: Updated to use objects. August 05, 2007 $citizens = $objSrcUser->get_pop(CITIZENS); $totalKilled = 0; for ($x = 1; $x <= $cntSF_roth; $x++) { $killed = ceil($citizens * 0.05); if ($citizens - $killed < 2000) { $killed = rand(10, 45); } if ($citizens - $killed < 100) { $killed = rand(2, 4); } if ($citizens - $killed < 50) { $killed = 0; } $citizens -= $killed; $totalKilled += $killed; } $objSrcUser->set_pop(CITIZENS, $citizens); $strReport .= '</p><p>Those orks must be under the influence of some spell. ' . $cntSF_roth . ' spells were returned by them in the form of ' . 'fireballs! <strong class="negative">' . number_format($totalKilled) . '</strong> citizens were killed.</p><p>'; } if ($cntSpellSuccess > 0) { $strReport .= "</p><p>Your mage reports the following results:<br />"; $strReport .= $spellResult["text_screen"] . "<br />"; } if ($spellResult["damage"] == 0) { $intFameWon = fame_win($objSrcUser, $objTrgUser, 0); } else { if ($i_strSpellName == "enforced") { $fame = floor($spellResult["damage"] * 0.1); } else { $fame = floor($spellResult["casted"] * $arrSpells[$i_strSpellName][FAME]); } $intFameWon = fame_win($objSrcUser, $objTrgUser, $fame); $strReport .= "</p><p>Your Mage gained a total of <strong class='positive'>" . number_format($intFameWon) . " fame</strong>.</p><p>"; } // Add spell-message to target tribenews if (isset($spellResult["text_news"])) { if ($spellResult["text_news"] != "" && $spellResult["casted"] > 0) { // Insert upwards compatibility with spells that do allinews // - AI 02/12/06 $strAlliMsgTemp = ""; if (isset($spellResult["alli_news"])) { $strAlliMsgTemp = $spellResult["alli_news"]; } $strMsgTemp = $spellResult["text_news"]; insert_news_item($i_strSpellName, $objTrgUser->get_userid(), $iUserID, 2, $strMsgTemp, $strAlliMsgTemp); //trigger news flag of defender $objTrgUser->set_user_info(LAST_NEWS, 1); } } // Add failed-spells message to target tribenews if ($strSpellType != SPELL_SELF && $i_strSpellName != "vision" && $cntSF_total > 0) { if ($cntSF_total > 1) { $plural = "s"; } else { $plural = ""; } $strMsgTemp = "Our Mage has detected {$cntSF_total} failed " . $strSpellDisplay . " spell{$plural} coming from " . $arrSrcStats[TRIBE] . "(#" . $arrSrcStats[ALLIANCE] . ")."; $strAlliMsgTemp = ""; insert_news_item($i_strSpellName, $objTrgUser->get_userid(), $iUserID, 2, $strMsgTemp, $strAlliMsgTemp); //trigger news flag of defender $objTrgUser->set_user_info(LAST_NEWS, 1); } // Check for kill-by-fireball. if ($spellResult["damage"] <= -100) { obj_test_for_kill($objTrgUser, $objSrcUser); } // AI's block system if ($strSpellType != SPELL_SELF) { clsBlock::logOp($objSrcUser, $objTrgUser, 'Spell: ' . $i_strSpellName); } $strReport .= "</p>" . "<p>" . "<a href=main.php?cat=game&page=mystic&magekd=" . $objTrgUser->get_stat(ALLIANCE) . ">Back to Mystics</a>" . "</p>"; // Print out the Report echo '<div id="textBig">' . '<h2>' . "Mystics Report " . '</h2>' . $strReport . '</div>'; // As requested... Show spells on success. Will people ever be satisfied? :p if ($spellResult["casted"] > 0 && $strSpellType == SPELL_SELF) { include_once 'inc/pages/advisors.inc.php'; echo '<br/>' . get_effecting_spells_table($objSrcUser); } free_casting_now($iUserID); include_game_down(); exit; }
function include_external_affairs_text() { $objSrcUser =& $GLOBALS['objSrcUser']; $objSrcAlliance = $objSrcUser->get_alliance(); //========================================================================== // Validate GET input //========================================================================== if (empty($_GET['tribe'])) { $tribe = $objSrcUser->get_userid(); } else { $tribe = intval($_GET['tribe']); } if (empty($_GET['aid'])) { $aid = $objSrcUser->get_stat(ALLIANCE); } else { $aid = intval($_GET['aid']); } //========================================================================== // Start Output //========================================================================== if ($aid > 10) { // Target user object include_once 'inc/classes/clsUser.php'; if ($tribe == $objSrcUser->get_userid()) { $objTrgUser = $objSrcUser; } elseif ($tribe > 0) { $objTrgUser = new clsUser($tribe); } // Target alliance object $objTrgAlliance = $objTrgUser->get_alliance(); $aid = $objTrgUser->get_stat(ALLIANCE); // Update user include_once 'inc/functions/update.php'; check_to_update($objTrgUser->get_userid()); // Update rankings include_once 'inc/functions/update_ranking.php'; doUpdateRankings($objTrgUser); // Div starts here ?> <div id="columns"> <!-- Start left column --> <div id="leftcolumn"> <br /> <?php // Show mini-vision table echo get_small_tribe_table($objTrgUser); $arrStats = $objSrcUser->get_stats(); $arrRankingsPersonal = $objTrgUser->get_rankings_personals(); // Show advisor message echo '<div id="textSmall">' . '<p><strong>The General</strong> tells you: <br />'; if ($tribe == $objSrcUser->get_userid()) { echo 'This is <em>our</em> tribe, leader =)'; } elseif ($objTrgUser->get_stat(KILLED) == 0 && $objTrgUser->get_stat(RESET_OPTION) == 'yes') { echo 'This tribe has <em>reset</em>.'; } elseif ($objTrgUser->get_user_info(HOURS) < PROTECTION_HOURS) { $iRemaining = PROTECTION_HOURS - $objTrgUser->get_user_info(HOURS); echo 'This tribe is performing the summoning ritual and their ' . 'borders will be protected for another <strong>' . $iRemaining . ' months.</strong>'; } elseif ($objTrgUser->get_stat(KILLED) > 0 && $objTrgUser->get_stat(KILLED) != 3) { echo 'This tribe is <em>dead</em>.'; } elseif ($objTrgUser->isPaused()) { echo 'This tribe is <em>paused</em>.'; } elseif ($objTrgUser->get_stat(ALLIANCE) == $objSrcUser->get_stat(ALLIANCE)) { echo 'This is a friendly <em>allied</em> tribe.'; } elseif ($objTrgUser->get_stat(ALLIANCE) == $objSrcAlliance->get_war(TARGET)) { echo 'We are in a declared <em class="negative">war</em> with this tribe!'; } elseif ($objTrgAlliance->get_war(TARGET) > 0) { echo 'This tribe is in <em class="negative">war</em> with another alliance.'; } elseif ($objTrgUser->get_stat(ALLIANCE) != $objSrcUser->get_stat(ALLIANCE)) { echo 'This <em>enemy</em> tribe may remain neutral towards us if we let them be. Be careful with your actions against them leader.'; } if ($objTrgUser->get_stat(ALLIANCE) == $objSrcUser->get_stat(ALLIANCE) || $objTrgUser->get_stat(KILLED) > 0 || $objTrgUser->isPaused()) { /* say nothing */ } elseif ($objTrgUser->get_build(LAND) < 0.8 * $objSrcUser->get_build(LAND)) { echo '</p><p>Also, due to their small size we will gain less land on attacks and do less damage with our operations and spells.'; } elseif ($objTrgUser->get_build(LAND) > 2.0 * $objSrcUser->get_build(LAND)) { echo '</p><p>Also, due to their large size our operations will have very high fail rates.'; } elseif ($objTrgUser->get_build(LAND) > 1.2 * $objSrcUser->get_build(LAND)) { echo '</p><p>Also, due to their large size our operations and spells will do less damage and we will gain less on attacks.'; } echo '</p>' . '</div>'; ?> </div> <!-- end left column --> <!-- start right column --> <div id="rightcolumn"> <?php echo '<div class="tableLinkSmall"><a href="main.php?cat=game&page=alliance&aid=' . $aid . '">Back to alliance #' . $aid . '</a>' . '</div>'; // Show action links echo '<div id="textSmall" style="margin-top: 0px;">' . '<h2>Tribe Actions</h2>'; echo '<ul>' . '<li>' . '<a href="main.php?cat=game&page=mystic&magekd=' . $aid . '&tribe=' . $tribe . '">Prepare Mystics</a>' . '</li>' . '<li>' . '<a href="main.php?cat=game&page=thievery&kd=' . $aid . '&tribe=' . $tribe . '">Prepare Thieves</a>' . '</li>' . '<li>' . '<a href="main.php?cat=game&page=invade&atkid=' . $aid . '&tribe=' . $tribe . '">Prepare Invasion</a>' . '</li>' . '<li>' . '<a href="main.php?cat=game&page=mail&set=compose&aid=' . $aid . '&tribe=' . $tribe . '">Orkfia Mail</a>' . '</li>' . '</ul>'; echo '</div>'; ?> </div> <!-- End of the right column--> </div> <!-- end of 2 column layout --> <?php } elseif ($aid < 11) { echo '<div class="tableLinkMedium">' . '<a href="main.php?cat=game&page=alliance&aid=' . $aid . '">Alliance #' . $aid . '</a>' . '</div>'; // Show action links echo '<div id="textMedium" style="margin-top: 0px;">'; echo '<p><strong>Tribe Actions</strong></p>'; echo '<ul>' . '<li>' . '<a href="main.php?cat=game&page=message&alliance=' . $aid . '&tribe=' . $tribe . '">Submit a Report</a>' . '</li>' . '<li>' . '<a href="main.php?cat=game&page=mail&set=compose&aid=' . $aid . '&tribe=' . $tribe . '">Orkfia Mail</a>' . '</li>' . '</ul>'; echo '</div>'; } }
function include_mystic2_text() { include_once "inc/functions/magic.php"; include_once "inc/functions/spells.php"; include_once "inc/functions/news.php"; $strSpellName = strval($_POST["selSpellname"]); $intSpellTimes = intval($_POST["txtAmount"]); $iTrgUserid = intval($_POST["selTarget"]); $minHours = intval($_POST["minHours"]); $blnStopOnSuccess = FALSE; if (isset($_POST["chkStop"]) && $_POST["chkStop"] == "yes") { $blnStopOnSuccess = TRUE; } // Species5618 19-2-2004: added processing of Minimum hours checkbox $blnMinHours = FALSE; if (isset($_POST["chkMin"]) && $_POST["chkMin"] == "yes") { $blnMinHours = TRUE; } $objSrcUser =& $GLOBALS["objSrcUser"]; $arrSrcStats = $objSrcUser->get_stats(); $arrSpells = set_spell_vars($objSrcUser); $strSpellType = $arrSpells[$strSpellName]['type']; // Can't cast damaging spells in protection if ($arrSpells[$strSpellName]['fame'] > 0) { obj_check_protection($objSrcUser, "magic"); } if (empty($iTrgUserid) || $iTrgUserid == $objSrcUser->get_userid()) { if ($strSpellType == SPELL_SELF || $strSpellType == SPELL_ALLIANCE) { $iTrgUserid = $objSrcUser->get_userid(); } else { echo '<div class="center">Please select a target.</div>'; include_game_down(); exit; } } include_once 'inc/functions/update.php'; check_to_update($iTrgUserid); $objTrgUser = new clsUser($iTrgUserid); $arrTrgStats = $objTrgUser->get_stats(); include_once "inc/functions/war.php"; $modifier = war_alli($arrSrcStats[ALLIANCE], $arrTrgStats[ALLIANCE]); if ($modifier < 1 && $strSpellType == SPELL_WAR) { echo '<div class="center">' . 'War only spell, you cannot cast it on this target!' . '</div>'; include_game_down(); exit; } // M: Allow self spells even if target is paused if (($arrTrgStats[KILLED] > 0 || $arrTrgStats[RESET_OPTION] == 'yes') && $strSpellType != SPELL_SELF) { echo $strDiv = '<div id="textMedium"><p>' . 'This tribe is dead or has reset.' . '<br /><br />' . '<a href="main.php?cat=game&page=mystic">' . 'Try Again ?' . '</a>' . '</p></div>'; } elseif ($objTrgUser->isPaused() && $strSpellType != SPELL_SELF) { echo $strDiv = '<div id="textMedium"><p>' . 'This tribe is paused.' . '<br /><br />' . '<a href="main.php?cat=game&page=mystic">' . 'Try Again ?' . '</a>' . '</p></div>'; } else { // Doubleclick-protection. Sets a field in the DB when the script loads, // field will be turned "off" when the thing is done. // Added by Species5618, 10-3-2004 $magic_busy = $objSrcUser->get_spell(CASTING_NOW); if ($magic_busy == BUSY) { echo $strDiv = '<div class="center">' . "Spells are being processed at the moment, please don't " . "doubleclick the button, even though the server might not " . "respond immediately." . '<br /><br />' . '<a href="main.php?cat=game&page=mystic">' . 'Try Again ?' . '</a>' . '</div>'; include_game_down(); exit; } else { $objSrcUser->set_spell(CASTING_NOW, BUSY); make_magic2($objSrcUser, $iTrgUserid, $arrSpells, $strSpellName, $intSpellTimes, $blnStopOnSuccess, $blnMinHours, $minHours); // frost: 'free' casting_now is in inc/functions/magic.php, because // here it's getting ignored } } }
function include_invade2_text() { global $ip; $objSrcUser =& $GLOBALS["objSrcUser"]; $arrSrcUser = $objSrcUser->get_user_infos(); $arrSrcStats = $objSrcUser->get_stats(); //========================================================================== // Secure user input from the invasion form //========================================================================== if (isset($_POST['TrgPlayer']) && !empty($_POST['TrgPlayer']) && $_POST['TrgPlayer'] != 'spacer') { // Selected Target $iTrgUserId = abs(intval($_POST['TrgPlayer'])); } else { echo $strDiv = '<div id="textMedium"><p>' . "Your army walk back to their homes, you should give them a " . "target next time!" . '</p><p>' . '<a href="main.php?cat=game&page=invade">' . "Try Again ?" . "</a>" . '</p></div>'; include_game_down(); exit; } $arrWhite = array('1', '2', '3', '4', '5'); $arrWhite2 = array(1 => 'standard', 'raid', 'barren', 'hitnrun', 'bc'); // Selected Target if (isset($_POST['invade_type']) && in_array($_POST['invade_type'], $arrWhite)) { $iAttack = intval($_POST['invade_type']); } else { echo $strDiv = '<div id="textMedium"><p>' . "Your army walk back to their homes, you should give them a " . "target next time!" . '</p><p>' . '<a href="main.php?cat=game&page=invade">' . "Try Again ?" . "</a>" . '</p></div>'; include_game_down(); exit; } // Army Sent $arrUnitVars = getUnitVariables($arrSrcStats[RACE]); $arrUnitOffence = $arrUnitVars['offence']; $arrUnitVar = $arrUnitVars['variables']; if (isset($_POST["arrArmySent"])) { $arrArmySent = $_POST["arrArmySent"]; foreach ($arrUnitOffence as $i => $iUnitOffence) { if ($iUnitOffence > 0) { $arrArmySent[$arrUnitVar[$i]] = max(0, intval($arrArmySent[$arrUnitVar[$i]])); } else { $arrArmySent[$arrUnitVar[$i]] = 0; } } } //========================================================================== // Verify attacker's status //========================================================================== obj_check_protection($objSrcUser, "invade"); $iTotalSentArmy = array_sum($arrArmySent); if ($iTotalSentArmy < 1) { echo $strDiv = '<div id="textMedium"><p>' . 'Sorry, but you did not send any units to battle.<br />' . 'This attack has been aborted.' . '</p><p>' . '<a href="main.php?cat=game&page=invade">' . "Try Again ?" . "</a>" . '</p></div>'; include_game_down(); exit; } if (verifyArmyAvailable($objSrcUser, $arrArmySent) == 1) { echo $strDiv = '<div id="textMedium"><p>' . 'Sorry, you do not have that many units to send.<br />' . 'This attack has been aborted.' . '</p><p>' . '<a href="main.php?cat=game&page=invade">' . "Try Again ?" . "</a>" . '</p></div>'; include_game_down(); exit; } if ($arrSrcStats[RACE] == "Oleg Hai" && verifyArmyAvailableOleg($objSrcUser, $arrArmySent) == 1) { $mercsTrainedThisHour = $objSrcUser->get_army_merc(MERC_T3); echo $strDiv = '<div id="textMedium"><p>' . "Sorry, but you did only train {$mercsTrainedThisHour} " . "mercs this update and that's the maximum you may use for an " . "attack.<br />" . "This attack has been aborted." . '</p><p>' . '<a href="main.php?cat=game&page=invade">' . "Try Again ?" . "</a>" . '</p></div>'; include_game_down(); exit; } if ($arrSrcUser[NEXT_ATTACK] > 0) { echo $strDiv = '<div id="textMedium"><p>' . 'Sorry, but you cannot attack for at least ' . $arrSrcUser[NEXT_ATTACK] . ' more updates.' . '</p><p>' . '<a href="main.php?cat=game&page=invade">' . 'Try Again ?' . '</a>' . '</p></div>'; include_game_down(); exit; } if ($arrSrcUser[HOURS] < PROTECTION_HOURS) { echo $strDiv = '<div id="textMedium"><p>' . 'You are not allowed to attack while in protection!' . '</p><p>' . '<a href="main.php?cat=game&page=invade">' . 'Try Again ?' . '</a>' . '</p></div>'; include_game_down(); exit; } //========================================================================== // Verify defender's status //========================================================================== include_once 'inc/functions/update.php'; check_to_update($iTrgUserId); $objTrgUser = new clsUser($iTrgUserId); $arrTrgStats = $objTrgUser->get_stats(); if ($arrTrgStats[ALLIANCE] == $objSrcUser->get_stat(ALLIANCE)) { echo $strDiv = '<div id="textMedium"><p>' . 'Sorry, honor before might. Do not attack into your own alliance.' . '</p><p>' . '<a href="main.php?cat=game&page=invade">' . 'Try Again ?' . '</a>' . '</p></div>'; include_game_down(); exit; } elseif ($objTrgUser->get_stat(ALLIANCE) < 11) { echo $strDiv = '<div id="textMedium"><p>' . 'I hope you did not think that you would get away with ' . 'attacking into a staff alliance, did you?' . '</p><p>' . '<a href="main.php?cat=game&page=invade">' . 'Try Again ?' . '</a>' . '</p></div>'; include_game_down(); exit; } // Frost: Added a global protection mode include_once 'inc/classes/clsGame.php'; $objGame = new clsGame(); if ($objGame->get_game_switch(GLOBAL_PROTECTION) == 'on') { echo $strDiv = '<div id="textMedium"><p>' . 'Because of a global event all tribes in ORKFiA are under ' . 'protection. Please check the community forum for an announcement.' . '</p><p>' . '<a href="main.php?cat=game&page=invade">' . 'Try Again ?' . '</a>' . '</p></div>'; include_game_down(); exit; } $iTrgHours = $objTrgUser->get_user_info(HOURS); if ($iTrgHours < PROTECTION_HOURS) { $iTrgHoursRemaining = PROTECTION_HOURS - $iTrgHours; echo $strDiv = '<div id="textMedium"><p>' . 'It appears that the tribe you wish to target is still ' . 'materializing. Our general estimates that it will ' . 'take another ' . $iTrgHoursRemaining . ' updates for the area ' . 'to become a stable part of reality.' . '</p><p>' . '<a href="main.php?cat=game&page=invade">' . 'Try Again ?' . '</a>' . '</p></div>'; include_game_down(); exit; } if ($objTrgUser->get_stat(ALLIANCE) == 0) { echo $strDiv = '<div id="textMedium"><p>' . 'This player has either been deleted or suspended.' . '</p><p>' . '<a href="main.php?cat=game&page=invade">' . 'Try Again ?' . '</a>' . '</p></div>'; include_game_down(); exit; } // Frost: added jan -04 // Martel: updated July 08, 2006 if ($objTrgUser->get_stat(KILLED) == 1 || $objTrgUser->get_stat(RESET_OPTION) == 'yes') { echo $strDiv = '<div id="textMedium"><p>' . 'This tribe is dead.' . '</p><p>' . '<a href="main.php?cat=game&page=invade">' . 'Try Again ?' . '</a>' . '</p></div>'; include_game_down(); exit; } // Paused account Martel, July 13, 2006 if ($objTrgUser->isPaused()) { echo $strDiv = '<div id="textMedium"><p>' . 'This tribe is paused.' . '</p><p>' . '<a href="main.php?cat=game&page=invade">' . 'Return' . '</a>' . '</p></div>'; return; } // Blocking system - AI 11/02/2007 if (!clsBlock::isOpAllowed($objSrcUser, $objTrgUser)) { echo '<div id="textMedium"><p>' . 'Someone else from the same IP has already opped this tribe during the last 8 hours.' . '</p><p>' . '<a href="main.php?cat=game&page=invade">Return</a>' . '</p></div>'; clsBlock::reportOp($objSrcUser, $objTrgUser, 'Attack: ' . $arrWhite2[$iAttack], false); return; } $iTrgLand = $objTrgUser->get_build(LAND); $iSrcLand = $objSrcUser->get_build(LAND); $breakoff = round($iSrcLand * 0.7); // Barren attack has 70% bottom feed limit if smaller than 2000 acres if ($iAttack == ATTACK_BARREN && $iTrgLand <= $breakoff && $iTrgLand < 2000) { echo $strDiv = '<div id="textMedium"><p>' . 'Sorry but you can not bash the small ones. Barren grabs are not ' . 'allowed against smaller tribes unless they are within 70% ' . 'of your own size.' . '</p><p>' . '<a href="main.php?cat=game&page=invade">' . 'Try Again ?' . '</a>' . '</p></div>'; include_game_down(); exit; } if ($iAttack == ATTACK_HNR && $iTrgLand < $iSrcLand) { echo $strDiv = '<div id="textMedium"><p>' . 'What kind of coward are you who try to make a Hit \'n\' Run ' . 'attack against a smaller tribe?' . '</p><p>' . 'Shame on you!' . '</p><p>' . '<a href="main.php?cat=game&page=invade">' . 'Return' . '</a>' . '</p></div>'; include_game_down(); exit; } $quick_check = mysql_query("Select * from user where id = 1"); $quick_check = mysql_fetch_array($quick_check); if ($quick_check[STOPGAMETRIGGER] == 99) { echo $strDiv = '<div id="textMedium"><p>' . 'The game has been paused by staff, possibly due to technical ' . 'maintenance. Please look in the announcements ' . 'forum or the admin game message for more information.' . '</p><p>' . '<a href="main.php?cat=game&page=invade">' . 'Return' . '</a>' . '</p></div>'; include_game_down(); exit; } else { //====================================================================== // Do Battle //====================================================================== /* include the code for the attack about to be done */ include_once "inc/attacks/" . $arrWhite2[$iAttack] . ".php"; // Damadm00 19-03-2004, check here the result from the viking check // Martel: Notify thieves about attack only if not viking+25% luck if ($arrSrcStats[RACE] == 'Viking' && getVikingCheck() == 1) { $viking = 1; } else { $viking = 0; getMonitoringCheck($objSrcUser); } include_once 'inc/functions/military.php'; $defence = getArmyDefence($objTrgUser, $iAttack); $defence = $defence['total_home']; $offence = getSentOffence($objSrcUser, $arrArmySent); //Attacking Templars kills mystics, not thieves - AI $thieves = 'thieves'; if ($objTrgUser->get_stat(RACE) == 'Templar') { $thieves = 'mystics'; } // Eagle 30% auto force retreat feature if ($objTrgUser->get_stat(RACE) == "Eagle" && getEagleCheck() == 1) { doRetreat($objSrcUser, $objTrgUser, $arrArmySent, 1, 0); return; } elseif ($offence < $defence && $iAttack != ATTACK_HNR) { doRetreat($objSrcUser, $objTrgUser, $arrArmySent, 0, $viking); return; } elseif ($offence < $defence && $iAttack == ATTACK_HNR) { if ($offence > 0.5 * $defence) { if ($defence == 0) { $defence = 1; } $arrSrcArmyLost = getSrcLosses($objSrcUser, $arrArmySent, $offence / $defence, $arrWhite2[$iAttack]); $arrTrgArmyLost = getTrgLosses($objTrgUser, $objSrcUser, $offence / $defence, $arrWhite2[$iAttack]); $arrReport = doAttack($objSrcUser, $objTrgUser, $arrArmySent); } else { doRetreat($objSrcUser, $objTrgUser, $arrArmySent, 0, $viking); return; } } else { if ($defence == 0) { $defence = 1; } $arrSrcArmyLost = getSrcLosses($objSrcUser, $arrArmySent, $offence / $defence, $arrWhite2[$iAttack]); $arrTrgArmyLost = getTrgLosses($objTrgUser, $objSrcUser, $offence / $defence, $arrWhite2[$iAttack]); $arrReport = doAttack($objSrcUser, $objTrgUser, $arrArmySent); } // Spread Pestilence $arrSpreadPest = checkPestilence($objSrcUser, $objTrgUser); $pestSrc = $arrSpreadPest['attacker']; $pestTrg = $arrSpreadPest['defender']; //====================================================================== // Begin creating the invade report //====================================================================== $strTribe = stripslashes($objTrgUser->get_rankings_personal(TRIBE_NAME)); $iAlliance = $arrTrgStats[ALLIANCE]; $strReport = '<div id="textMedium">' . '<h2>' . "Invade Report" . '</h2>' . '<p>' . 'Your invasion of <strong>' . $strTribe . ' (#' . $iAlliance . ')</strong> was successful, ' . 'below follows a report from your general.' . '</p>'; //====================================================================== // Report: Gains //====================================================================== // Acres if (isset($arrReport['gained_acres']) && $arrReport['gained_acres'] != 0) { $strReport .= '<p>' . "Our army has gained control over " . "<strong>" . $arrReport['gained_acres'] . " acres</strong>. "; // Explored Acres if (isset($arrReport['explored_acres']) && $arrReport['explored_acres'] != 0) { $strReport .= "Also <strong>" . $arrReport['explored_acres'] . " acres</strong> was " . "explored and can be used to build on now."; } $strReport .= '</p>'; } // Citizens Killed (raid or hnr) if (isset($arrReport['killed_citizens']) && $arrReport['killed_citizens'] != 0) { $strReport .= '<p>' . "Our army storm into their lands, killing <strong>" . $arrReport['killed_citizens'] . "</strong> of their citizens." . '</p>'; } // Money (raid) if (isset($arrReport['gained_crowns']) && $arrReport['gained_crowns'] != 0) { $strReport .= '<p>' . "The army report having stolen <strong class=\"indicator\">" . number_format($arrReport['gained_crowns']) . " crowns</strong>." . '</p>'; } // Buildings Razed (blasphemy crusade) if (isset($arrReport['damaged_total']) && $arrReport['damaged_total'] != 0) { $strReport .= '<p>' . "Your loyal army charges into their lands, destroying <strong>" . $arrReport['damaged_total'] . " buildings</strong> of witchcraft " . "and deception. ("; // Academies if (isset($arrReport['damaged_academies']) && $arrReport['damaged_academies'] != 0) { $strReport .= " <strong>" . $arrReport['damaged_academies'] . " academies</strong>"; } // Guilds if (isset($arrReport['damaged_guilds']) && $arrReport['damaged_guilds'] != 0) { $strReport .= " <strong>" . $arrReport['damaged_guilds'] . " guilds</strong>"; } // Hideouts if (isset($arrReport['damaged_hideouts']) && $arrReport['damaged_hideouts'] != 0) { $strReport .= " <strong>" . $arrReport['damaged_hideouts'] . " hideouts</strong>"; } $strReport .= ').</p>'; } // Thieves Killed (blasphemy crusade) if (isset($arrReport['killed_thieves']) && $arrReport['killed_thieves'] != 0) { $strReport .= '<p>' . "Your general reports having killed <strong>" . $arrReport['killed_thieves'] . " {$thieves} of the enemy</strong>." . '</p>'; } // Fame Gained if (isset($arrReport['gained_fame']) && $arrReport['gained_fame'] != 0) { $strReport .= '<p>' . "This invasion gave our tribe <strong class=\"positive\">" . $arrReport['gained_fame'] . " fame</strong>." . '</p>'; } //====================================================================== // Begin enemy defence estimation (report) //====================================================================== if ($offence > $defence * 2) { $strReport .= '<p>' . "Our army is more than double the power of the " . "defending army, causing the enemy to run in fear. (Victory " . "by more than 100%)" . '</p>'; } elseif ($offence > $defence * 1.8) { $strReport .= '<p>' . "Our army is almost double the power of the defending " . "army. (Victory by more than 80%)" . '</p>'; } elseif ($offence > $defence * 1.6) { $strReport .= '<p>' . "Our army has easily broken the enemies defences, " . "overpowering them by more than 3 to 2. (Victory by more " . "than 60%)" . '</p>'; } elseif ($offence > $defence * 1.4) { $strReport .= '<p>' . "Our army has broken the enemies defences, overpowering " . "them by around 3 to 2. (Victory by more than 40%)" . '</p>'; } elseif ($offence > $defence * 1.2) { $strReport .= '<p>' . "Our army has broken through the line of defence, but it was " . "a hard battle. (Victory by more than 20%)" . '</p>'; } elseif ($offence > $defence * 1.1) { $strReport .= '<p>' . "Our army has broken through the line of defence, but it was " . "a very tough battle. (Victory by more than 10%)" . '</p>'; } elseif ($offence >= $defence) { $strReport .= '<p>' . "Our army fought hard, winning only after a lengthy and very " . "difficult battle. (Victory by less than 10%)" . '</p>'; } //====================================================================== // Report: Army Losses //====================================================================== $arrUnitVars = getUnitVariables($objSrcUser->get_stat(RACE)); $arrUnitNames = $arrUnitVars['output']; $strPlural = 's'; $strReport .= '<p>' . "The captains report that we have lost "; if ($arrSrcArmyLost[UNIT1] > 0) { $strReport .= $arrSrcArmyLost[UNIT1] . " " . $arrUnitNames[2] . $strPlural . ", "; } if ($arrSrcArmyLost[UNIT2] > 0) { if ($arrUnitNames[3] == 'Swordmen') { $strPlural = ''; } elseif ($arrUnitNames[3] == 'Pikemen') { $strPlural = ''; } $strReport .= $arrSrcArmyLost[UNIT2] . " " . $arrUnitNames[3] . $strPlural . ", "; } if ($arrSrcArmyLost[UNIT3] > 0) { if ($arrUnitNames[4] == 'Crossbowmen') { $strPlural = ''; } elseif ($arrUnitNames[4] == 'Longbowmen') { $strPlural = ''; } elseif ($arrUnitNames[4] == 'Mummy') { $arrUnitNames[4] = 'Mummie'; } $strReport .= $arrSrcArmyLost[UNIT3] . " " . $arrUnitNames[4] . $strPlural . ", "; } if ($arrSrcArmyLost[UNIT4] > 0) { if ($arrUnitNames[5] == 'Priestess') { $strPlural = ''; } $strReport .= $arrSrcArmyLost[UNIT4] . " " . $arrUnitNames[5] . $strPlural . ", "; } if ($arrSrcArmyLost[UNIT5] > 0) { if ($arrUnitNames[6] == 'Thief') { $arrUnitNames[6] = 'Thieve'; } $strReport .= $arrSrcArmyLost[UNIT5] . " " . $arrUnitNames[6] . $strPlural . ", "; } if (array_sum($arrSrcArmyLost) < 1) { $strReport .= " no military at all, "; } $totalkilled = round(array_sum($arrTrgArmyLost), -2); if ($totalkilled > 0) { $strReport .= " and they estimate the enemy's losses to be {$totalkilled} units"; if ($objSrcUser->get_stat(RACE) == "Undead") { $strReport .= ", who joined our cursed army as soldiers."; } } else { $strReport .= " and they estimate the enemy's losses to be near zero"; } $strReport .= '.</p>'; //====================================================================== // Report: Army available again //====================================================================== $wait = $objSrcUser->get_user_info(NEXT_ATTACK); $strReport .= '<p>' . "Our generals report our army will be able to attack again " . "in " . $wait . " updates. "; if ($wait > 4) { // Assuming that an attack with more than 4 hours is a BC or Hitnrun $wait -= 2; $strReport .= "However, our army will be home to defend our lands after " . $wait . " updates."; } $strReport .= '</p>'; //====================================================================== // Report: Pestilence //====================================================================== if ($pestSrc == "yes") { $strReport .= '<p>' . "<strong class=\"negative\">During your invasion your military " . "got infected with pestilence.</strong>" . '</p>'; } //====================================================================== // frost: added suicide detection | modified for age 18. only one update // loss of 25% citizens //====================================================================== $suicide = getSuicideCheck($objSrcUser, $arrArmySent); if ($arrSrcStats[RACE] != "Raven" && $suicide == 1) { $citz = $objSrcUser->get_pop(CITIZENS); $leavingCitz = floor($citz * 0.25); $strReport .= '<p>' . "<strong class=\"negative\">Your citizens are getting tired of " . "their tax money going to far-away military campaigns " . "instead of defending their homes. " . number_format($leavingCitz) . " citizens have left your lands.</strong>" . '</p>'; $objSrcUser->set_pop(CITIZENS, $citz - $leavingCitz); } //====================================================================== // Report: Viking Stealth Attack //====================================================================== if ($viking == 1) { $strReport .= '<p>' . "<strong class=\"positive\">You got lucky. Your location " . "doesn't end up in the news.</strong>" . '</p>'; } //====================================================================== // Report: War effects //====================================================================== require_once 'inc/functions/war.php'; $objSrcAlliance = $objSrcUser->get_alliance(); if (checkWarBetween($objSrcAlliance, $objTrgUser->get_stat(ALLIANCE))) { $objTrgAlliance = $objTrgUser->get_alliance(); if ($arrGains = testWarVictory($objSrcAlliance, $objTrgAlliance)) { // Append war-win message require_once 'inc/pages/war_room2.inc.php'; $strReport .= '<p><strong class="positive">Your alliance has won the war!</strong></p>' . getVictoryReport($arrGains); } } $strReport .= '<p>' . '<a href="main.php?cat=game&page=tribe">Continue</a>' . '</p>' . '</div>'; echo $strReport; //====================================================================== // Defender tribe news (damage report) //====================================================================== $srcDisplay = $arrSrcStats[TRIBE] . " (#" . $arrSrcStats[ALLIANCE] . ")"; $trgDisplay = $arrTrgStats[TRIBE] . " (#" . $arrTrgStats[ALLIANCE] . ")"; $strStrategy = $arrWhite2[$iAttack]; switch ($strStrategy) { case "standard": if ($viking == 0) { $strTrgTribe = "<span class=\"positive\">{$srcDisplay} has successfully marched into our lands and conquered " . $arrReport['gained_acres'] . " acres</span>"; $strTrgAlliance = "<span class=\"newsattack\">{$srcDisplay} has successfully marched into the lands of {$trgDisplay} and conquered " . $arrReport['gained_acres'] . " acres</span>"; } else { $strTrgTribe = "<span class=\"positive\">An unidentified tribe of vikings has successfully marched into our lands and conquered " . $arrReport['gained_acres'] . " acres</span>"; $strTrgAlliance = "<span class=\"newsattack\">An unidentified tribe of vikings has successfully marched into the lands of {$trgDisplay} and conquered " . $arrReport['gained_acres'] . " acres</span>"; } break; case "raid": if ($viking == 0) { $strTrgTribe = "<span class=\"positive\">{$srcDisplay} has successfully stormed into our lands and conquered " . $arrReport['gained_acres'] . " acres, stolen " . $arrReport['gained_crowns'] . " crowns and slaughtered " . $arrReport['killed_citizens'] . " citizens</span>"; $strTrgAlliance = "<span class=\"newsattack\">{$srcDisplay} has successfully stormed into the lands of {$trgDisplay} and conquered " . $arrReport['gained_acres'] . " acres, stolen " . $arrReport['gained_crowns'] . " crowns and slaughtered " . $arrReport['killed_citizens'] . " citizens</span>"; } else { $strTrgTribe = "<span class=\"positive\">An unidentified tribe of vikings has successfully stormed into our lands and conquered " . $arrReport['gained_acres'] . " acres, stolen " . $arrReport['gained_crowns'] . " crowns and slaughtered " . $arrReport['killed_citizens'] . " citizens</span>"; $strTrgAlliance = "<span class=\"newsattack\">An unidentified tribe of vikings has Successfully stormed into the lands of {$trgDisplay} and conquered " . $arrReport['gained_acres'] . " acres, stolen " . $arrReport['gained_crowns'] . " crowns and slaughtered " . $arrReport['killed_citizens'] . " citizens</span>"; } break; case "barren": if ($viking == 0) { $strTrgTribe = "<span class=\"newsattack\">{$srcDisplay} has successfully sneaked into our lands and claimed " . $arrReport['gained_acres'] . " acres</span>"; $strTrgAlliance = "<span class=\"newsattack\">{$srcDisplay} has successfully sneaked into the lands of {$trgDisplay} and claimed " . $arrReport['gained_acres'] . " acres</span>"; } else { $strTrgTribe = "<span class=\"newsattack\">An unidentified tribe of vikings has successfully sneaked into our lands and claimed " . $arrReport['gained_acres'] . " acres</span>"; $strTrgAlliance = "<span class=\"newsattack\">An unidentified tribe of vikings has successfully sneaked into the lands of {$trgDisplay} and claimed " . $arrReport['gained_acres'] . " acres</span>"; } break; case "bc": if ($viking == 0) { $strTrgTribe = "<span class=\"newsbc\">{$srcDisplay} has successfully charged into our lands and destroyed " . $arrReport['damaged_total'] . " buildings and killed " . $arrReport['killed_thieves'] . " {$thieves}. Our lands will be avaliable for building again after they have been cleared</span>"; $strTrgAlliance = "<span class=\"newsbc\">{$srcDisplay} has successfully charged into the lands of {$trgDisplay} and destroyed " . $arrReport['damaged_total'] . " buildings and slaughtered " . $arrReport['killed_thieves'] . " {$thieves}</span>"; } else { $strTrgTribe = "<span class=\"newsbc\">An unidentified tribe of vikings has successfully charged into our lands and destroyed " . $arrReport['damaged_total'] . " buildings and killed " . $arrReport['killed_thieves'] . " {$thieves}. Our lands will be avaliable for building again after they have been cleared</span>"; $strTrgAlliance = "<span class=\"newsbc\">An unidentified tribe of vikings has successfully charged into the lands of {$trgDisplay} and destroyed " . $arrReport['damaged_total'] . " buildings and killed " . $arrReport['killed_thieves'] . " {$thieves}</span>"; } break; case "hitnrun": $strAdd = ""; if ($offence >= $defence) { $strAdd = " and " . $arrReport['killed_citizens'] . " citizens"; } if ($viking == 0) { $strTrgTribe = "<span class=\"newsattack\">{$srcDisplay} has cowardly ambushed our lands, killing many troops" . $strAdd . "</span>"; $strTrgAlliance = "<span class=\"newsattack\">{$srcDisplay} has cowardly attacked and rained arrows over {$trgDisplay}, killing many troops" . $strAdd . "</span>"; } else { $strTrgTribe = "<span class=\"newsattack\">An unidentified tribe of vikings has cowardly ambushed our lands, killing many troops" . $strAdd . "</span></span>"; $strTrgAlliance = "<span class=\"newsattack\">An unidentified tribe of vikings has cowardly attacked and rained arrows over {$trgDisplay}, killing many troops" . $strAdd . "</span>"; } break; } $trgId = $objTrgUser->get_userid(); $srcId = $objSrcUser->get_userid(); $trgKd = $objTrgUser->get_stat(ALLIANCE); $srcKd = $objSrcUser->get_stat(ALLIANCE); if ($viking == 0) { $result = "INSERT INTO `news` VALUES ('', NOW(), '{$ip}', '{$strStrategy}', '{$trgId}', '{$srcId}', '1', " . quote_smart($strTrgTribe) . ", " . quote_smart($strTrgAlliance) . ",'{$trgKd}','{$srcKd}',1)"; } else { $result = "INSERT INTO `news` VALUES ('', NOW(), '{$ip}', '{$strStrategy}', '{$trgId}', '{$srcId}', '1', " . quote_smart($strTrgTribe) . ", " . quote_smart($strTrgAlliance) . ",'{$trgKd}',0,1)"; } mysql_query($result); $arrUnitVars = getUnitVariables($objTrgUser->get_stat(RACE)); $arrUnitNames = $arrUnitVars['output']; $strPlural = 's'; $strPlural2 = 's'; $strPlural3 = 's'; $strPlural4 = 's'; $strPlural5 = 's'; if ($arrUnitNames[3] == 'Swordmen') { $strPlural2 = ''; } elseif ($arrUnitNames[3] == 'Pikemen') { $strPlural2 = ''; } if ($arrUnitNames[4] == 'Crossbowmen') { $strPlural3 = ''; } elseif ($arrUnitNames[4] == 'Longbowmen') { $strPlural3 = ''; } elseif ($arrUnitNames[4] == 'Mummy') { $arrUnitNames[4] = 'Mummie'; } if ($arrUnitNames[5] == 'Priestess') { $strPlural4 = 'es'; } if ($arrUnitNames[6] == 'Thief') { $arrUnitNames[6] = 'Thieve'; } $strTrgNews = "A report has been collected, our losses are listed as follows: " . "<br />" . $arrUnitNames[2] . $strPlural . " killed: " . "<span class=\"negative\">" . $arrTrgArmyLost[UNIT1] . "</span>," . "<br />" . $arrUnitNames[3] . $strPlural2 . " killed: " . "<span class=\"negative\">" . $arrTrgArmyLost[UNIT2] . "</span>," . "<br />" . $arrUnitNames[4] . $strPlural3 . " killed: " . "<span class=\"negative\">" . $arrTrgArmyLost[UNIT3] . "</span>," . "<br />" . $arrUnitNames[5] . $strPlural4 . " killed: " . "<span class=\"negative\">" . $arrTrgArmyLost[UNIT4] . "</span>."; //Add mystic losses for templars - AI 24/04/2007 if ($arrTrgArmyLost[UNIT5] > 0) { $strTrgNews .= "<br />" . $arrUnitNames[6] . $strPlural5 . " killed: " . "<span class=\"negative\">" . $arrTrgArmyLost[UNIT5] . "</span>."; } if ($pestTrg == "yes") { $strTrgNews .= "<br />" . "<strong class=\"negative\">" . "During this invasion pestilence " . "was spread into our lands for 12 updates" . "</strong>."; } // create tribe news for attack mysql_query("INSERT INTO `news` (`id`, `time`, `ip`, `type`, `duser`, `ouser`, `result`, `text`, `kingdom_text`) VALUES ('', NOW(), '{$ip}', 'invade report', '{$arrTrgStats['id']}', '{$arrSrcStats['id']}', 1, '{$strTrgNews}', '')"); $orkTime = date(TIMESTAMP_FORMAT); $objTrgUser->set_user_info(LAST_NEWS, $orkTime); // Update target rankings include_once 'inc/functions/update_ranking.php'; doUpdateRankings($objTrgUser, 'yes'); // Log the op for blocking system - AI 11/02/2007 clsBlock::logOp($objSrcUser, $objTrgUser, 'Attack: ' . $arrWhite2[$iAttack]); } }
$page = 'verify'; $page_text = 'include_' . $page . '_text'; } elseif (($arrSrcStats[RESET_OPTION] == 'yes' || $arrSrcStats[KILLED] == 1) && $page != 'forums') { // Account is to be reset $page = 'reset_account'; $page_text = 'include_' . $page . '_text'; } elseif ($arrSrcUsers[STATUS] == 2) { // Force users to visit the tribe page at login $page = 'motd'; $page_text = 'include_' . $page . '_text'; } // Seed The Random Value That will be used Throughout the pages mt_srand((double) microtime() * 1000000); // Check if tribe has updates include_once 'inc/functions/update.php'; check_to_update($userid); } elseif ($cat == 'main' && $page == 'main') { //========================================================================== // Visitor logging on the front page Martel, October 05, 2006 //========================================================================== include "inc/classes/count_visitors_class.php"; // create a new instance of the count_visitors class. $my_visitors = new Count_visitors(); $my_visitors->delay = 720; // how often (in hours) a visitor is registered $my_visitors->insert_new_visit(); // That's all } //============================================================================== // Initiate the upper part of main page / ingame layout //==============================================================================
function obj_test_for_kill(&$objTrgUser, &$objSrcUser) { global $ip; // Minimize multi-kills - Martel December 30, 2007 // #1 Query DB for kill status (Don't use cached data) #2 Check citz $strSQL = 'SELECT killed FROM stats WHERE id = ' . $objTrgUser->get_userid(); $arrRow = mysql_fetch_row(mysql_query($strSQL)); if ($arrRow[0] == 0 && $objTrgUser->get_pop(CITIZENS) <= 0) { // Separate a reset tribe from a killed (1=age, 2=pk) $objTrgUser->set_stat(KILLED, 2); // Show kill message $arrTrgStats = $objTrgUser->get_stats(); echo $strDiv = '<div id="textMedium">' . '<p>' . "Congratulations! You watch on as the last citizen of " . '<strong class="negative">' . stripslashes($arrTrgStats[TRIBE]) . ' (#' . $arrTrgStats[ALLIANCE] . ")</strong> dies and their empire crumbles in front of you." . '</p>' . '</div>' . '<br />'; // Update SrcUser with +1 Kill $arrSrcStats = $objSrcUser->get_stats(); $iKilled = $arrSrcStats[KILLS] + 1; $objSrcUser->set_stat(KILLS, $iKilled); // Record: Largest Kill require_once 'inc/classes/clsGame.php'; $objGame = new clsGame(); $arrRecords = $objGame->get_game_records(); $arrTrgBuilds = $objTrgUser->get_builds(); if ($arrTrgBuilds[LAND] > $arrRecords[KILLED]) { $arrRecords = array(KILLED => $arrTrgBuilds[LAND], KILLED_ID => $objSrcUser->get_userid()); $objGame->set_game_records($arrRecords); } // War effects require_once "inc/functions/war.php"; $objSrcAlliance = $objSrcUser->get_alliance(); if (checkWarBetween($objSrcAlliance, $arrTrgStats[ALLIANCE])) { $objTrgAlliance = $objTrgUser->get_alliance(); // Update land counter in new war system March 06, 2008 Martel $iNeeded = $objSrcAlliance->get_war('land_needed'); $objSrcAlliance->set_war('land_needed', max(0, $iNeeded - $arrTrgBuilds[LAND])); // Wait with adding this until it is 100% sure no multi kills exist // if (($arrGains = testWarVictory($objSrcAlliance, $objTrgAlliance))) // { // require_once('inc/pages/war_room2.inc.php'); // $strGains = getVictoryReport($arrGains); // // Show war-win message // echo $strDiv = // '<div id="textMedium">' . // '<p><strong class="positive">Your alliance have won the war!</strong></p>' . // $strGains . // '</div>' . // '<br />'; // } // Add war-kill to global news $strGlobalNews = '<strong class="negative">Alliance #' . $arrSrcStats[ALLIANCE] . " has laid the final blow in " . $arrTrgStats[TRIBE] . "\\'s ORKFiA career during their war.</strong>"; mysql_query("INSERT INTO news (id, time, ip, type, duser, ouser, " . "result, text, kingdom_text, kingdoma, kingdomb) " . "VALUES ('', NOW(), '---', 'global', 0, 0, 1, '', " . "'{$strGlobalNews}', 0, '')"); // War events if a killed tribe is in the biggest half of the alli $iLand = $arrTrgBuilds[LAND]; $arrRow1 = mysql_fetch_row(mysql_query("SELECT COUNT(id) FROM rankings_personal WHERE land > {$iLand} AND alli_id = " . $arrTrgStats[ALLIANCE])); $arrRow2 = mysql_fetch_row(mysql_query("SELECT COUNT(id) FROM rankings_personal WHERE alli_id = " . $arrTrgStats[ALLIANCE])); if ($arrRow1[0] * 2 < $arrRow2[0]) { require_once "inc/functions/update.php"; //============================================================== // Bonus for the killing alliance: MP+TP gain, army // moved 1 hours closer to home //============================================================== // Since we don't seem to want a max to the mps/tps here, // why not just add obj_mage_power_growth twice, same for // thieves ofc - AI 25/11/2006 //============================================================== $arrUserId = $objSrcAlliance->get_userids(); foreach ($arrUserId as $iUserid) { check_to_update($iUserid); $objTmpUser = new clsUser($iUserid); $build = $objTmpUser->get_builds(); // Bonus to Thievery Credits require_once "inc/functions/ops.php"; $bonus1 = 2 * obj_thief_op_growth($objTmpUser); $iNewCredits = $objTmpUser->get_thievery(CREDITS); $iNewCredits += $bonus1; // Bonus to Spell Power require_once "inc/functions/spells.php"; $bonus2 = 2 * obj_mage_power_growth($objTmpUser); $iNewPower = $objTmpUser->get_spell(POWER); $iNewPower += $bonus2; // Update User $objTmpUser->set_thievery(CREDITS, $iNewCredits); $objTmpUser->set_spell(POWER, $iNewPower); // Update Military Training 1x time (Mori thieves) $arrTmpStats = $objTmpUser->get_stats(); if ($arrTmpStats[RACE] == "Mori Hai") { $arrMercs = $objTmpUser->get_army_mercs(); $arrNewMercs = array(MERC_T0 => $arrMercs[MERC_T1], MERC_T1 => $arrMercs[MERC_T2], MERC_T2 => $arrMercs[MERC_T3], MERC_T3 => 0); $objTmpUser->set_army_mercs($arrNewMercs); } // Update Military Training 1x time (Everybody) $arrRets = $objTmpUser->get_milreturns(); $arrNewRets = array(UNIT1_T1 => $arrRets[UNIT1_T2], UNIT1_T2 => $arrRets[UNIT1_T3], UNIT1_T3 => $arrRets[UNIT1_T4], UNIT1_T4 => 0, UNIT2_T1 => $arrRets[UNIT2_T2], UNIT2_T2 => $arrRets[UNIT2_T3], UNIT2_T3 => $arrRets[UNIT2_T4], UNIT2_T4 => 0, UNIT3_T1 => $arrRets[UNIT3_T2], UNIT3_T2 => $arrRets[UNIT3_T3], UNIT3_T3 => $arrRets[UNIT3_T4], UNIT3_T4 => 0, UNIT4_T1 => $arrRets[UNIT4_T2], UNIT4_T2 => $arrRets[UNIT4_T3], UNIT4_T3 => $arrRets[UNIT4_T4], UNIT4_T4 => 0, UNIT5_T1 => $arrRets[UNIT5_T2], UNIT5_T2 => $arrRets[UNIT5_T3], UNIT5_T3 => $arrRets[UNIT5_T4], UNIT5_T4 => 0, UNIT6_T1 => $arrRets[UNIT6_T2], UNIT6_T2 => $arrRets[UNIT6_T3], UNIT6_T3 => $arrRets[UNIT6_T4], UNIT6_T4 => 0); $objTmpUser->set_milreturns($arrNewRets); // Update Tribe News $strNews = "The death of one of our enemies has given our " . "troops courage! Armies are returning more quickly, " . "thieves are more willing to risk their lives for the " . "tribe and your mage feels extra powerful."; mysql_query("INSERT INTO news (time, ip, type, duser, " . "ouser, result, text, kingdom_text) VALUES " . "(NOW(), '---', 'local_news', {$iUserid}, '', " . "1, '{$strNews}','')"); $objTmpUser->set_user_info(LAST_NEWS, 1); } // Defiance for the losing alliance, gives bonuses to off/tm-dmg $arrUserId = $objTrgAlliance->get_userids(); foreach ($arrUserId as $iUserid) { check_to_update($iUserid); $objTmpUser = new clsUser($iUserid); $objTmpUser->set_spell(DEFIANCE, 4); $strNews = "The death of one of our big tribes has filled the " . "hearts of our people with anger! For 4 more months " . "we will strike hard at our enemies!"; mysql_query("INSERT INTO news (time, ip, type, duser, " . "ouser, result, text, kingdom_text) VALUES " . "(NOW(), '---', 'local_news', {$iUserid}, '', " . "1, '{$strNews}','')"); $objTmpUser->set_user_info(LAST_NEWS, 1); } } //top half } //war // Create News $timestamp = date(TIMESTAMP_FORMAT); $d_news = '<strong class="negative">' . $arrSrcStats[TRIBE] . " (#" . $arrSrcStats[ALLIANCE] . ") has laid the final blow in " . $arrTrgStats[TRIBE] . "\\'s ORKFiA career.</strong>"; $o_news = '<strong class="positive">Our ' . $arrSrcStats[TRIBE] . " has laid the final blow in " . $arrTrgStats[TRIBE] . " (#" . $arrTrgStats[ALLIANCE] . ")\\'s ORKFiA career.</strong>"; $strNews = "I am sorry leader, upon your return to your tribe your alliance " . "has sent this message forth to you." . "<br /><br />" . $d_news . "<br /><br />" . "They have also sent us supplies and some citizens to restart " . "our tribe." . "<br /><br />" . "Below this line is news our previous tribe had recieved:"; $strSQL = "INSERT INTO news (time, ip, type, duser, ouser, result, " . "text, kingdom_text, kingdoma, kingdomb) VALUES ('{$timestamp}', " . "'{$ip}', 'killed', {$arrTrgStats[ID]}, 0, 1, '{$strNews}', " . "'{$d_news}', '{$arrTrgStats[ALLIANCE]}', '')"; mysql_query($strSQL); $strSQL = "INSERT INTO news (time, ip, type, duser, ouser, result, text, " . "kingdom_text, kingdoma, kingdomb) VALUES ('{$timestamp}', '{$ip}', " . "'killed', 0, 0, 1, '', '{$o_news}', '{$arrSrcStats[ALLIANCE]}', '')"; mysql_query($strSQL); //====================================================================== // Kill the tribe //====================================================================== require_once 'inc/staff/delete.inc.php'; doBackupTribe($objTrgUser->get_userid(), 'kill'); obj_kill_user($objTrgUser); } else { return; } }
function make_thievery(&$objSrcUser, &$objTrgUser, $local_action, $amount_sent, $amount_ops, $stop_on_success) { global $HTTP_SERVER_VARS, $connection; check_to_update($objTrgUser->get_userid()); if ($objTrgUser->get_stat(ALLIANCE) == 0) { echo "This player has been either deleted or suspended"; include_game_down(); exit; } //frost: global protection routine $global_protection = mysql_query("SELECT global_protection FROM admin_switches"); $global_protection = mysql_fetch_array($global_protection); if ($global_protection['global_protection'] == "on") { echo "<br /><br /><br />Because of a global event all tribes in ORKFiA are under protection.<br />Please read the announcement in the forum."; include_game_down(); exit; } mt_srand((double) microtime() * 1000000); $amount_sent = floor($amount_sent); if (!file_exists("inc/ops/" . $local_action . ".php")) { echo "Missing file: inc/ops/{$local_action}.php"; include_game_down(); exit; } $fn = "inc/ops/" . $local_action . ".php"; include $fn; $kingdom = $objTrgUser->get_stat(ALLIANCE); if ($amount_sent <= 0) { echo "Not sending ANY thieves on a thievery mission doesn't accomplish much<br /><br />"; echo "<a href=main.php?cat=game&page=thievery&kd={$kingdom}>Try again</a>"; include_game_down(); exit; } if ($objSrcUser->get_userid() == $objTrgUser->get_userid() && get_op_type() == "aggressive") { echo "You must choose an appropriate target.<br /><br />"; echo "<a href=main.php?cat=game&page=thievery&kd={$kingdom}>Try again ?</a>"; include_game_down(); exit; } if ($objTrgUser->get_user_info(hours) < PROTECTION_HOURS && get_op_type() != "self") { $iRemaining = PROTECTION_HOURS - $objTrgUser->get_user_info(HOURS); $strProtectionMsg = '<div id="textMedium"><p>' . 'It appears that the tribe you wish to target is still ' . 'materializing. The head of our thieves estimates that it will ' . 'take another ' . $iRemaining . ' updates for the area to become ' . 'a stable part of reality.'; echo $strProtectionMsg . "</p><p>"; echo "<a href=main.php?cat=game&page=thievery&kd={$kingdom}>Try again ?</a>" . '</p></div>'; include_game_down(); exit; } if ($amount_ops <= 0) { echo '<div id="textMedium"><p>' . "You didn't do anything..." . "<p><a href=main.php?cat=game&page=thievery&kd={$kingdom}>Try again</a>" . '</p></div>'; include_game_down(); exit; } $credits = $objSrcUser->get_thievery(CREDITS); $op_cost = get_op_cost($local_action, $objSrcUser->get_build(LAND)); if ($credits < $op_cost) { echo '<div id="textMedium"><p>' . "Sorry, every aggressive thievery operation " . "requires thievery points and you don't have enough to perform this type of operation.</p>" . "<p><a href=main.php?cat=game&page=thievery&kd={$kingdom}>Try again</a>" . '</p></div>'; include_game_down(); exit; } // Tried to send more operations than have op-credits if ($credits < $amount_ops * $op_cost) { $amount_ops = floor($credits / $op_cost); } if ($amount_sent > $objSrcUser->get_army_home(UNIT5)) { echo '<div id="textMedium"><p>' . "We don't have enough thieves to send even 1 operation in the way you've requested, please specify a different amount.</p>" . "<p><a href=main.php?cat=game&page=thievery&kd={$kingdom}>Try again</a>" . '</p></div>'; include_game_down(); exit; } if (!clsBlock::isOpAllowed($objSrcUser, $objTrgUser) && get_op_type() != "self") { echo '<div id="textMedium"><p>' . 'Someone else from the same IP has already opped this tribe during the last 8 hours.' . '</p><p>' . '<a href="main.php?cat=game&page=thievery">Return</a>' . '</p></div>'; clsBlock::reportOp($objSrcUser, $objTrgUser, 'Thief op: ' . $local_action, false); free_casting_now($iUserID); include_game_down(); exit; } // Dragon 50% damage reduction. For war-bonusses change this modifier as well, instead of directly editing the ops-files. // -Martel wuz here- (50% reduction works now) include_once 'inc/functions/get.php'; if ($objTrgUser->get_stat(RACE) == 'Dragon') { $modifier = 0.5; } else { $modifier = 1; } // War-check include_once "inc/functions/war.php"; $warmodifier = war_alli($objTrgUser->get_stat(ALLIANCE), $objSrcUser->get_stat(ALLIANCE)); if ($warmodifier > 1) { $modifier *= 1.1; if ($objSrcUser->get_spell(DEFIANCE) > 0) { $modifier *= 1.1; } } $target = war_target($objTrgUser->get_stat(ALLIANCE)); if ($target != 0 && $warmodifier == 0) { $modifier *= 0.95; } $total_sent = $amount_ops * $amount_sent; // Ugly way of doing it... but here the div for the report starts. Timesaver. echo '<div id="textBig">' . '<h2>' . 'Thievery Report' . '</h2>' . '<p>'; if ($total_sent > $objSrcUser->get_army_home(UNIT5)) { $amount_ops = floor($objSrcUser->get_army_home(UNIT5) / $amount_sent); echo "We don't have enough thieves to send that many operations, we've sent less instead.<br /><br />"; } // GUARDHOUSES // Tragedy: april 20th 2002: // adding a cap of max 80% effectiveness on guardhouses, ergo max 20% of land $guard_percentage = min(0.2, $objTrgUser->get_build(GUARDHOUSES) / $objTrgUser->get_build(LAND)); if (get_op_type() != "self") { $P_guard = $guard_percentage * 3.5; } else { $P_guard = 0; } //THIEVES TRAP //Species 5618: 17-01-2005 //special self-op provides 15% thievery protection if ($objTrgUser->get_thievery(TRAP) > 0 && get_op_type() != "self") { $P_trap = 0.15; } else { $P_trap = 0; } $defthiefs = $objTrgUser->get_army_home(UNIT5); if ($defthiefs < 10) { $defthiefs = 10; } $d_user_tpa = $defthiefs / $objTrgUser->get_build(LAND); //Templars don't have thieves - AI 10/02/2007 if ($objTrgUser->get_stat(RACE) == 'Templar') { $d_user_tpa = 0; } $off_thieves = $objSrcUser->get_army_home(UNIT5); $thieves_lost = 0; $cntOpSuccess = 0; $cntOF_total = 0; $cntOF_tpa = 0; $cntOF_gh = 0; $cntOF_trap = 0; $d_land = $objTrgUser->get_build(LAND); $o_land = $objSrcUser->get_build(LAND); for ($x = 1; $x <= $amount_ops; $x++) { if (get_op_type() == "aggressive") { $o_user_tpa = $off_thieves / $o_land; if ($d_user_tpa > 0.25) { $tpa_vs_tpa = $o_user_tpa / $d_user_tpa / 1.5; } else { $tpa_vs_tpa = 1; } $tpa_vs_tpa = min(max($tpa_vs_tpa, 0.05), 1); $chance = get_op_chance() / 100 * $tpa_vs_tpa; if ($o_land < 0.5 * $d_land || $o_land > 2 * $d_land) { $chance /= 2; } $P_tpa = 1 - $chance; } else { $P_tpa = 1 - get_op_chance() / 100; } $P_success = (1 - $P_tpa) * (1 - $P_guard) * (1 - $P_trap); //Randomly decide wether the op succeeds or fails. //When it fails, randomly choose a reason based on the relative failure-rates of all possible failure-reasons //Don't worry too much about the math behind it. It's correct and assures a fair distribution over the various 'reasons for failure' $P_fail_Total = $P_tpa + $P_guard + $P_trap; $P_fail_tpa = $P_tpa / $P_fail_Total; $P_fail_guard = $P_guard / $P_fail_Total; $P_fail_trap = $P_trap / $P_fail_Total; $random = rand(1, 10000) / 10000; if ($random < $P_success) { $cntOpSuccess++; //Stop-On-Success check if ($stop_on_success == "yes") { $amount_ops = $x; break; } } else { $cntOF_total++; //Why did the op fail ? TPA-diff or GH failure or Thieves Trap? $random = rand(1, 10000) / 10000; if ($random <= $P_fail_trap) { $cntOF_trap++; $thieves_lost += ceil($amount_sent * 0.05 * 1.3); } elseif ($random <= $P_fail_trap + $P_fail_guard) { $cntOF_gh++; $thieves_lost += ceil($amount_sent * (rand(5, 15) / 100)); } else { $cntOF_tpa++; $thieves_lost += ceil($amount_sent * 0.05); } } //Lower amount of thieves so chances are correctly recalculated during the next iteration. $off_thieves -= $amount_sent; } if (get_op_type() == "self" && $local_action != "trap") { $thieves_lost = 0; } //Now call the actual op. //The $opResult return-value is an array consisting of 3 values: //- $opResult["fame"], fame gained/lost //- $opResult["text_screen"], text to be shown on screen //- $opResult["text_news"], text to be shown in enemy tribenews if ($local_action == "ambush" && $cntOpSuccess > 0) { $cntOpSuccess = 1; } if ($cntOpSuccess > 0) { $opResult = do_op($objSrcUser, $objTrgUser, $cntOpSuccess, $amount_sent, $modifier); } else { $opResult["fame"] = 0; } $total_sent = $amount_ops * $amount_sent; if ($thieves_lost > $total_sent) { $thieves_lost = $total_sent; } $plural1 = ""; $plural2 = "was"; if ($amount_ops > 1) { $plural1 = "s"; $plural2 = "were"; } $plural3 = "thief"; if ($total_sent > 1) { $plural3 = "thieves"; } echo "{$amount_ops} operation{$plural1}, a total of {$total_sent} {$plural3}, {$plural2} sent on its way.<br />"; if ($cntOpSuccess == 1) { $plural = ""; $plural3 = "was"; } else { $plural = "s"; $plural3 = "were"; } if ($cntOF_total == 1) { $plural2 = "has"; } else { $plural2 = "have"; } echo "{$cntOpSuccess} operation{$plural} {$plural3} reported to be successful, {$cntOF_total} {$plural2} failed.<br /><br />"; if ($cntOF_tpa == 1) { $plural = ""; $plural2 = "has"; } else { $plural = "s"; $plural2 = "have"; } if ($cntOF_tpa > 0 && get_op_type() == "aggressive" && $d_user_tpa != 0) { echo "{$cntOF_tpa} operation{$plural} {$plural2} failed because the enemy thieves intercepted ours.<br />"; } elseif ($cntOF_tpa > 0 && get_op_type() == "aggressive" && $d_user_tpa == 0) { echo "{$cntOF_tpa} operation{$plural} {$plural2} failed because our thieves got spotted by enemy military.<br />"; } if ($cntOF_gh == 1) { $plural = ""; $plural2 = "has"; } else { $plural = "s"; $plural2 = "have"; } if ($cntOF_gh > 0) { echo "Enemy guardstations caused {$cntOF_gh} operation{$plural} to fail<br />"; } if ($cntOF_trap == 1) { $plural = ""; $plural2 = "was"; } else { $plural = "s"; $plural2 = "were"; } if ($cntOF_trap > 0) { echo "{$cntOF_trap} of our operations were caught by traps the enemy had set for us<br />"; } if ($opResult["fame"] != 0) { $trgFame = $objTrgUser->get_stat(FAME); if ($opResult["fame"] > $trgFame) { $opResult["fame"] = $trgFame; } $newDFame = $trgFame - $opResult["fame"]; $objTrgUser->set_stat(FAME, $newDFame); $newFame = $objSrcUser->get_stat(FAME) + $opResult["fame"]; $objSrcUser->set_stat(FAME, $newFame); } if ($amount_ops != 1) { $plural = "these"; $plural2 = "s"; } else { $plural = "this"; $plural2 = ""; } if ($thieves_lost == 1) { $plural3 = 'f'; } else { $plural3 = 'ves'; } echo "With {$plural} operation{$plural2} we have gained <b class=positive>" . $opResult["fame"] . " fame</b> and lost " . number_format($thieves_lost) . " thie" . $plural3 . ".<br /><br />"; $dplayer = $objTrgUser->get_userid(); $userid = $objSrcUser->get_userid(); $tribe = stripslashes($objSrcUser->get_stat(TRIBE)); $iSrcAid = $objSrcUser->get_stat(ALLIANCE); if ($cntOF_total > 0 && get_op_type() == "aggressive") { if ($cntOF_total > 1) { $plural = 's'; } else { $plural = ''; } $timestamp = date(TIMESTAMP_FORMAT); $ip = $HTTP_SERVER_VARS["REMOTE_ADDR"]; $create['event'] = "INSERT INTO `news` (`id`, `time`, `ip`, `type`, `duser`, `ouser`, `result`, `text`, `kingdom_text`)\n VALUES ('', '{$timestamp}', '{$ip}', '{$local_action}', '{$dplayer}', '{$userid}', 'fail',\n 'We have caught {$cntOF_total} operation{$plural} of enemy thieves from {$tribe} (#{$iSrcAid}) tresspassing on our land.','') "; $created['event'] = mysql_query($create['event'], $connection); //trigger news flag of defender $objTrgUser->set_user_info(LAST_NEWS, $timestamp); } if ($cntOpSuccess > 0) { if (get_op_type() == "aggressive") { // echo name and alli $strTrgTribe = stripslashes($objTrgUser->get_stat(TRIBE)); $iTrgAlliance = $objTrgUser->get_stat(ALLIANCE); echo "As your thieves return from {$strTrgTribe} (#{$iTrgAlliance}) the foreman reports the following result:" . '</p>'; } else { echo "The foreman of our thieves reports the following result:" . '</p>'; } echo '<div style="padding: 0 15px">' . $opResult["text_screen"] . '</div>' . '<p>'; if ($opResult["text_news"] != "") { $timestamp = date(TIMESTAMP_FORMAT); $ip = $HTTP_SERVER_VARS["REMOTE_ADDR"]; $create['event'] = "INSERT INTO `news` (`id`, `time`, `ip`, `type`, `duser`, `ouser`, `result`, `text`, `kingdom_text`)\n VALUES ('', '{$timestamp}', '{$ip}', '{$local_action}', '{$dplayer}', '{$userid}', '1',\n '{$opResult['text_news']}','') "; $created['event'] = mysql_query($create['event'], $connection); //trigger news flag of defender $objTrgUser->set_user_info(LAST_NEWS, $timestamp); } } if (get_op_type() == "aggressive" || get_op_name() == "Thieves Trap (SELF)") { $total_cost = $amount_ops * $op_cost; $credits = $objSrcUser->get_thievery(CREDITS) - $total_cost; $objSrcUser->set_thievery(CREDITS, $credits); } $returning = $total_sent - $thieves_lost; $returnTime = 3; if ($objSrcUser->get_stat(RACE) == 'Spirit') { $returnTime = 2; } $col = UNIT5 . "_t" . $returnTime; $thievesout = $objSrcUser->get_milreturn($col); $objSrcUser->set_milreturn($col, $thievesout + $returning); $thievesleft = $objSrcUser->get_army(UNIT5) - $thieves_lost; $objSrcUser->set_army(UNIT5, $thievesleft); obj_test_for_kill($objTrgUser, $objSrcUser); if (get_op_type() != "self") { clsBlock::logOp($objSrcUser, $objTrgUser, 'Thief op: ' . $local_action); } echo '</p>' . '<p>' . '<a href="main.php?cat=game&page=thievery&kd=' . $kingdom . '">Return</a>' . '</p>' . '</div>'; }