function getResearchProduction(&$objUser) { $production = array(); $arrBuilds = $objUser->get_builds(); $iLand = $arrBuilds[LAND]; $iLabs = $arrBuilds[LABS]; $research = 1; $raw = $iLabs * $research; // Research produced (incl. >30% penalty) $labs_percentage = floor($iLabs / $iLand * 100); $research = 1 - max(($labs_percentage - 30) / 200, 0); $labs_produce = floor($iLabs * $research); // Research Bonus = 25% Age 9, September 25, 2007, Martel // New code January 09, 2008, Martel $arrResearch = getResearchBonuses($objUser->get_alliance()); $research_bonus = round($raw * $arrResearch['research']); // War Penalty on Resarch $iHours = $objUser->get_user_info(HOURS); include_once "inc/functions/war.php"; if (war_target($objUser->get_stat(ALLIANCE)) != 0 && $iHours > PROTECTION_HOURS) { $war_loss = round($labs_produce * 0.5); } else { $war_loss = 0; } $total = $labs_produce + $research_bonus - $war_loss; // research penalty (>30% labs) $penalty = floor($iLabs - $labs_produce); $production['per_each'] = $research; $production['raw'] = $raw; $production['research_bonus'] = $research_bonus; $production['penalty'] = $penalty; $production['war_loss'] = $war_loss; $production['total'] = $total; return $production; }
function doAttack(&$objSrcUser, &$objTrgUser, $arrSentArmy) { $srcKd = $objSrcUser->get_stat(KINGDOM); $trgKd = $objTrgUser->get_stat(KINGDOM); $arrTrgBuilds = $objTrgUser->get_builds(); $iSrcLand = $objSrcUser->get_build(LAND); $strSrcRace = $objSrcUser->get_stat(RACE); $arrTrgArmys = $objTrgUser->get_armys(); $arrTrgMilRet = $objTrgUser->get_milreturns(); //========================================================================== // Blasphemy Crusade Attack: Destroy T/M Buildings and gain Fame //========================================================================== $destroyed = 0.04; $modifier = war_alli($srcKd, $trgKd); if ($modifier == 2) { $destroyed *= 1.5; } elseif ($modifier == 0 && war_target($trgKd) != 0) { $destroyed *= 0.95; } // Demolish x % Guilds $iDamaged_Guilds = $arrTrgBuilds[GUILDS]; if ($iDamaged_Guilds > $arrTrgBuilds[LAND] * $destroyed) { $iDamaged_Guilds = round($arrTrgBuilds[LAND] * $destroyed); } // Demolish x % Academies $iDamaged_Academies = $arrTrgBuilds[ACADEMIES]; if ($iDamaged_Academies > $arrTrgBuilds[LAND] * $destroyed) { $iDamaged_Academies = round($arrTrgBuilds[LAND] * $destroyed); } // Demolish x % Hideouts $iDamaged_Hideouts = $arrTrgBuilds[HIDEOUTS]; if ($iDamaged_Hideouts > $arrTrgBuilds[LAND] * $destroyed) { $iDamaged_Hideouts = round($arrTrgBuilds[LAND] * $destroyed); } // Kill x % Thieves $iThieves_killed = round(($arrTrgArmys[UNIT5] - ($arrTrgMilRet[UNIT5_T1] + $arrTrgMilRet[UNIT5_T2] + $arrTrgMilRet[UNIT5_T3] + $arrTrgMilRet[UNIT5_T4])) * ($destroyed * 1.25)); // Total # Buildings destroyed (to calc fame) $iDamaged_Total = $iDamaged_Academies + $iDamaged_Guilds + $iDamaged_Hideouts; // Ravens do 1/3 Damage if ($strSrcRace == "Raven") { $iThieves_killed = round(0.333 * $iThieves_killed); $iDamaged_Total = round(0.333 * $iDamaged_Total); $iDamaged_Academies = round(0.333 * $iDamaged_Academies); $iDamaged_Guilds = round(0.333 * $iDamaged_Guilds); $iDamaged_Hideouts = round(0.333 * $iDamaged_Hideouts); } $arrBuilds = array(GUILDS => $arrTrgBuilds[GUILDS] - $iDamaged_Guilds, HIDEOUTS => $arrTrgBuilds[HIDEOUTS] - $iDamaged_Hideouts, ACADEMIES => $arrTrgBuilds[ACADEMIES] - $iDamaged_Academies, LAND => $arrTrgBuilds[LAND] - $iDamaged_Total, LAND_T2 => $arrTrgBuilds[LAND_T2] + $iDamaged_Total); // Save new stats to DB $objTrgUser->set_builds($arrBuilds); $objTrgUser->set_army(UNIT5, $arrTrgArmys[UNIT5] - $iThieves_killed); //========================================================================== // Return time //========================================================================== $wait = 6; if ($strSrcRace == "Raven") { $wait = 1; } elseif ($strSrcRace == "Mori Hai" || $strSrcRace == "Dragon") { $wait = 5; } elseif ($strSrcRace == "Viking") { $wait = 4; } $objSrcUser->set_user_info(NEXT_ATTACK, $wait); //========================================================================== // Calculate Fame Gains //========================================================================== $fame_win = 0; // Fame only if target and source is in war if ($modifier == 2) { $ratio = min(1, $arrTrgBuilds[LAND] / $iSrcLand); $fame_win = round($ratio * $iDamaged_Total); // fame bonus from being in war $fame_win *= 1.2; } // Cannot take more fame than what the target has $fame_win = round($fame_win); $target_fame = $objTrgUser->get_stat(FAME); if ($fame_win > $target_fame) { $fame_win = $target_fame; } $fame1 = $objSrcUser->get_stat(FAME) + $fame_win; $fame2 = $target_fame - $fame_win; $objSrcUser->set_stat(FAME, $fame1); $objTrgUser->set_stat(FAME, $fame2); //========================================================================== $arrResults['gained_fame'] = $fame_win; $arrResults['killed_thieves'] = $iThieves_killed; $arrResults['damaged_academies'] = $iDamaged_Academies; $arrResults['damaged_guilds'] = $iDamaged_Guilds; $arrResults['damaged_hideouts'] = $iDamaged_Hideouts; $arrResults['damaged_total'] = $iDamaged_Total; return $arrResults; }
function doAttack(&$objSrcUser, &$objTrgUser, $arrSentArmy) { $srcId = $objSrcUser->get_userid(); $trgId = $objTrgUser->get_userid(); $srcKd = $objSrcUser->get_stat(KINGDOM); $trgKd = $objTrgUser->get_stat(KINGDOM); $arrTrgBuilds = $objTrgUser->get_builds(); $iSrcLand = $objSrcUser->get_build(LAND); //========================================================================== // Standard Attack: Acres and Fame //========================================================================== $gains = pow($arrTrgBuilds[LAND] / $iSrcLand, 2) + $arrTrgBuilds[LAND] / ($iSrcLand * 3); $gains = min($gains, 1); $standard_gains = 0.115 * $gains; // Oleg Hai bonus $strSrcRace = $objSrcUser->get_stat(RACE); if ($strSrcRace == "Oleg Hai") { $standard_gains *= 1.3; } if ($standard_gains * $arrTrgBuilds[LAND] > $iSrcLand * 1.3 * $standard_gains) { $standard_gains *= $iSrcLand * 1.3 / $arrTrgBuilds[LAND]; } if ($arrTrgBuilds[LAND] > $iSrcLand * 3) { $standard_gains /= 2; } //========================================================================== // War effects on gains //========================================================================== include_once "inc/functions/war.php"; $modifier = war_alli($srcKd, $trgKd); if ($modifier == 2) { $standard_gains *= 1.2; } $target = war_target($trgKd); if ($target != 0 && $modifier == 0) { $standard_gains *= 0.95; } //========================================================================== // Spell effects on gains //========================================================================== if ($objTrgUser->get_spell(FOREST) > 0) { $standard_gains *= 0.8; } if ($objSrcUser->get_spell(MORTALITY) > 0) { $standard_gains += 0.01; } //========================================================================== // Bottom feed penalty on gains //========================================================================== if ($arrTrgBuilds[LAND] / $iSrcLand < 0.8 && $arrTrgBuilds[LAND] < 1500) { $bottom_feeder_difference = $arrTrgBuilds[LAND] / $iSrcLand; $bottom_feeder_penalty = (0.8 - $bottom_feeder_difference) / 10; $standard_gains -= 5 * $bottom_feeder_penalty; } elseif ($arrTrgBuilds[LAND] / $iSrcLand < 0.8 && $arrTrgBuilds[LAND] > 1499) { $bottom_feeder_difference = $arrTrgBuilds[LAND] / $iSrcLand; $bottom_feeder_penalty = (0.85 - $bottom_feeder_difference) / 10; $standard_gains -= 5 * $bottom_feeder_penalty; } //========================================================================== // Minimum Gains limit //========================================================================== if ($standard_gains < 0.01) { $standard_gains = 0.01; } //========================================================================== // Calculate Acre Gains //========================================================================== include_once 'inc/functions/build.php'; $arrBuildVars = getBuildingVariables($objTrgUser->get_stat(RACE)); $arrBuildVars = $arrBuildVars['variables']; $max_build = $objTrgUser->get_number_build_types(); $total_grab = 0; // Built for ($i = 1; $i <= $max_build; $i++) { $strVar = trim($arrBuildVars[$i]); $acres_won[$strVar] = round($arrTrgBuilds[$strVar] * $standard_gains); $buildings = $objTrgUser->get_build($strVar); $land = $objTrgUser->get_build(LAND); $arrBuilds = array($strVar => $buildings - $acres_won[$strVar], LAND => $land - $acres_won[$strVar]); $objTrgUser->set_builds($arrBuilds); $total_grab += $acres_won[$strVar]; } // 1 hour for ($i = 1; $i <= $max_build; $i++) { $strVar = trim($arrBuildVars[$i]); $strVar = $strVar . "_t1"; $acres_won[$strVar] = round($arrTrgBuilds[$strVar] * $standard_gains); $buildings = $objTrgUser->get_build($strVar); $land = $objTrgUser->get_build(LAND); $arrBuilds = array($strVar => $buildings - $acres_won[$strVar], LAND => $land - $acres_won[$strVar]); $objTrgUser->set_builds($arrBuilds); $total_grab += $acres_won[$strVar]; } // 2 hours for ($i = 1; $i <= $max_build; $i++) { $strVar = trim($arrBuildVars[$i]); $strVar = $strVar . "_t2"; $acres_won[$strVar] = round($arrTrgBuilds[$strVar] * $standard_gains); $buildings = $objTrgUser->get_build($strVar); $land = $objTrgUser->get_build(LAND); $arrBuilds = array($strVar => $buildings - $acres_won[$strVar], LAND => $land - $acres_won[$strVar]); $objTrgUser->set_builds($arrBuilds); $total_grab += $acres_won[$strVar]; } // 3 hours for ($i = 1; $i <= $max_build; $i++) { $strVar = trim($arrBuildVars[$i]); $strVar = $strVar . "_t3"; $acres_won[$strVar] = round($arrTrgBuilds[$strVar] * $standard_gains); $buildings = $objTrgUser->get_build($strVar); $land = $objTrgUser->get_build(LAND); $arrBuilds = array($strVar => $buildings - $acres_won[$strVar], LAND => $land - $acres_won[$strVar]); $objTrgUser->set_builds($arrBuilds); $total_grab += $acres_won[$strVar]; } // 4 hours for ($i = 1; $i <= $max_build; $i++) { $strVar = trim($arrBuildVars[$i]); $strVar = $strVar . "_t4"; $acres_won[$strVar] = round($arrTrgBuilds[$strVar] * $standard_gains); $buildings = $objTrgUser->get_build($strVar); $land = $objTrgUser->get_build(LAND); $arrBuilds = array($strVar => $buildings - $acres_won[$strVar], LAND => $land - $acres_won[$strVar]); $objTrgUser->set_builds($arrBuilds); $total_grab += $acres_won[$strVar]; } // Explored $explore_gains = 0.2; $acres_explored = round($total_grab * $explore_gains); $land = $objSrcUser->get_build(LAND); $objSrcUser->set_build(LAND, $land + $acres_explored); //========================================================================== // Record //========================================================================== $fetch_record = mysql_query("Select * from records where id = 1"); $fetch_record = @mysql_fetch_array($fetch_record); if ($total_grab > $fetch_record['grab']) { $id = $objSrcUser->get_userid(); $update = mysql_query("Update records set grab = {$total_grab}, grab_id = {$id} where id = 1"); } //========================================================================== // Return time //========================================================================== $wait = 4; // 4 hour attack time if ($strSrcRace == "Raven") { $wait = 1; } elseif ($strSrcRace == "Mori Hai" || $strSrcRace == "Dragon") { $wait = 3; } $landtime = 'land_t' . $wait; $objSrcUser->set_user_info(NEXT_ATTACK, $wait); //========================================================================== // Add land to incoming //========================================================================== if ($total_grab > 0) { $old_land = $objSrcUser->get_build($landtime); $objSrcUser->set_build($landtime, $total_grab + $old_land); } //========================================================================== // Calculate Fame Gains //========================================================================== $fame_win = max(0, $total_grab * 2); // War effects include_once 'inc/functions/war.php'; $objSrcAlliance = $objSrcUser->get_alliance(); if (checkWarBetween($objSrcAlliance, $trgKd)) { // 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 - $total_grab)); // War effects on fame $fame_win *= 1.2; } // Cannot take more fame than what the target has $fame_win = round($fame_win); $target_fame = $objTrgUser->get_stat(FAME); if ($fame_win > $target_fame) { $fame_win = $target_fame; } $fame1 = $objSrcUser->get_stat(FAME) + $fame_win; $fame2 = $target_fame - $fame_win; $objSrcUser->set_stat(FAME, $fame1); $objTrgUser->set_stat(FAME, $fame2); //========================================================================== $arrResults['gained_acres'] = $total_grab; $arrResults['explored_acres'] = $acres_explored; $arrResults['gained_fame'] = $fame_win; return $arrResults; }
function call_mergers_text() { global $userid, $task, $mergerid, $checker, $listtribeid, $changedname, $declinereason, $local_stats, $tool; include_once 'inc/functions/resort_tools.php'; // we're abstracting the actual moving out to there include_once 'inc/staff/move.inc.php'; //if (! user_has_access($tool)) //{ // echo "Sorry, this page is restricted to ORKFiA Staff"; // include_game_down(); // exit; //} check_access($tool); $orkTime = date('YmdHis'); echo "<h2>Select task:</h2><br />| <a href='main.php?cat=game&page=resort_tools&tool=mergers&task=pending'>View Pending Mergers</a> | <a href='main.php?cat=game&page=resort_tools&tool=mergers&task=done'>View Done Mergers</a> | <a href='main.php?cat=game&page=resort_tools&tool=mergers&task=rejected'>View Declined Mergers</a> | <a href='main.php?cat=game&page=resort_tools&tool=mergers&task=requested'>View Requested Mergers</a> |<br /><br />"; if ($task == "changename") { // loads a form where you can change the requested name of a tribe $seek = mysql_query("SELECT newname FROM mergers WHERE id = {$mergerid}"); $seek = mysql_fetch_array($seek); echo "<form method=\"post\" action=\"main.php?cat=game&page=resort_tools&tool=mergers&task=changed&mergerid={$mergerid}\">"; echo "<br /><br /><table border=0 cellspacing=0 cellpadding=0 class='small'>"; echo "<tr class='header'><th colspan=2> Change Requested Name </th></tr>"; echo "<tr class='subheader'><th> Current Requested Name </th><td> New Name </td></tr>"; echo "<tr class='data'><th> {$seek['newname']} </th><td> <input type='text' name='changedname' maxLength='30'></td> </tr>"; echo "<tr class='data'><td colspan='2'><input type=submit value='Change requested name'></td></tr>"; echo "</table>"; echo "</form>"; } if ($task == "changed") { // the queries part for changing the requested name of a tribe //check if someone else already has that name first $changedname = quote_smart(strip_tags(trim($changedname))); $check = mysql_query("SELECT * FROM stats WHERE tribe = {$changedname} AND id != {$mergerid}"); if (mysql_num_rows($check) != 0) { echo "<br /><br />Some tribe is already using that name<br /><br />"; } else { $update = mysql_query("UPDATE mergers SET newname = {$changedname} WHERE id = {$mergerid}"); echo "<br /><br />The Requested tribe name is changed<br /><br />"; $task = "pending"; } } if ($task == "decline") { // loads a form where you can give a reason for not merging a tribe echo "<form method=\"post\" action=\"main.php?cat=game&page=resort_tools&tool=mergers&task=delete&mergerid={$mergerid}\">"; echo "<br /><br /><table border=0 cellspacing=0 cellpadding=0 class='small'>"; echo "<tr class='header'><th colspan=2> Decline Merge </th></tr>"; echo "<tr class='subheader'><th>Decline Reason</th></tr>"; echo "<tr class='data'><td><input type='text' name='declinereason' maxLength='100'></td></tr>"; echo "<tr class='data'><td><input type=submit value='Decline Merge'></td></tr>"; echo "</table>"; echo "</form>"; } if ($task == "delete") { // the queries part for the decline option $seek = mysql_query("SELECT * FROM mergers WHERE id = {$mergerid}"); $seek = mysql_fetch_array($seek); $message1 = "Your merge request to {$seek['target']} has been declined.<br />The reason for this is: {$declinereason} .<br />"; $message2 = "The merge from {$seek['oldname']}(#{$seek['origin']}) has been declined.<br />The reason for this is: {$declinereason} .<br />"; $bleh2 = mysql_query("SELECT id FROM stats WHERE type='elder' AND kingdom='{$seek['target']}'"); $bleh2 = mysql_fetch_array($bleh2); $sendmessage1 = mysql_query("INSERT INTO messages (id, for_user, from_user, date, subject, text, new, action) VALUES ('', '{$seek['tribe']}', '0', '" . $orkTime . "', 'Merge Request Declined', '" . $message1 . "', 'new', 'received')"); $sendmessage2 = mysql_query("INSERT INTO messages (id, for_user, from_user, date, subject, text, new, action) VALUES ('', '{$bleh2['id']}', '0', '" . $orkTime . "', 'Merge Request Declined', '" . $message2 . "', 'new', 'received')"); $update = mysql_query("UPDATE mergers SET request_status = 'declined', declined_reason = '{$declinereason}', mod_id = {$local_stats['id']} WHERE id = {$mergerid}"); $task = "pending"; } if ($task == "accept") { // doing the merge itself $fetch = mysql_query("Select * from mergers where id = {$mergerid}"); $fetch = mysql_fetch_array($fetch); $search = mysql_query("Select * from stats where id = {$fetch['tribe']}"); $search = mysql_fetch_array($search); $newname = "'" . $fetch['newname'] . "'"; //$update = mysql_query("UPDATE goods SET credits = 0, market_money = 0, market_food = 0, market_soldiers = 0, market_wood = 0 WHERE id = {$fetch['tribe']}"); //$update = mysql_query("UPDATE stats set kingdom = {$fetch['target']}, type = 'player', vote = 0, invested = 0, tribe = $newname where id = {$fetch['tribe']}"); //$update = mysql_query("UPDATE rankings_personal set alli_id = {$fetch['target']} where id = {$fetch['tribe']}"); mysql_query("UPDATE stats SET tribe = {$newname} where id = {$fetch['tribe']}"); move_tribe($fetch['tribe'], $fetch['target']); $update = mysql_query("UPDATE mergers set request_status = 'done', merge_time = '{$orkTime}', mod_id = '{$local_stats['id']}' where id = {$fetch['id']}"); $strSQL = mysql_query("INSERT INTO news (id, time, ip, type, duser, ouser, result, text, kingdom_text, kingdoma, kingdomb) VALUES ('', '{$orkTime}', '---', 'Mod Move', '0', '0', '1', '', '<font class = \"positive\">{$search['tribe']}(#{$fetch['origin']}) has been merged into {$newname}(#{$fetch['target']})! </font>', '{$fetch['origin']}', '{$fetch['target']}')"); echo "<br /><br />Merge was done =D<br /><br />"; $task = "pending"; } elseif ($task == "done") { // show list with all done mergers $fetch = mysql_query("SELECT * FROM mergers WHERE request_status = 'done' order by merge_time desc"); $mergers = array(); while ($arrmergers = mysql_fetch_array($fetch, MYSQL_ASSOC)) { $mergers[$arrmergers["id"]] = $arrmergers; } echo "<br /><br /><table border=0 cellspacing=0 cellpadding=0 class='big'>"; echo "<tr class='header'><th colspan='5'> Done Mergers </th></tr>"; echo "<tr class='subheader'><th> Merge Time </td><td> Tribe ID </td><td> Old Location </td><td> New Location </td><td> Staff </td></tr>"; foreach ($mergers as $strKey => $value) { $mod = mysql_query("SELECT name FROM stats WHERE id={$value['mod_id']}"); $mod = mysql_fetch_array($mod); echo "<tr class='data'><th> {$value['merge_time']} </th><td> {$value['tribe']} </td><td> {$value['oldname']}(#{$value['origin']}) </td><td> {$value['newname']}(#{$value['target']}) </td><td> {$mod['name']} </td></tr>"; } echo "</table>"; } elseif ($task == "rejected") { // show list with all rejected mergers and the reason to reject it $fetch = mysql_query("SELECT * FROM mergers WHERE request_status = 'declined' order by merge_time desc"); $mergers = array(); while ($arrmergers = mysql_fetch_array($fetch, MYSQL_ASSOC)) { $mergers[$arrmergers["id"]] = $arrmergers; } echo "<br /><br /><table border=0 cellspacing=0 cellpadding=0 class='big'>"; echo "<tr class='header'><th colspan=5> Declined Mergers </th></tr>"; echo "<tr class='subheader'><th> Merge Time </th><td> Tribe ID </td><td> Location </td><td> Staff </td><td> Reason </td></tr>"; foreach ($mergers as $strKey => $value) { $mod = mysql_query("SELECT name FROM stats WHERE id={$value['mod_id']}"); $mod = mysql_fetch_array($mod); echo "<tr class='data'><th> {$value['merge_time']} </th><td> {$value['tribe']} </td><td> {$value['oldname']}(#{$value['origin']}) </td><td> {$mod['name']} </td><td>{$value['declined_reason']}</td></tr>"; } echo "</table>"; } elseif ($task == "requested") { // show list with all mergers not accepted by the elder yet $fetch = mysql_query("SELECT * FROM mergers WHERE request_status = 'not ready' order by merge_time desc"); $mergers = array(); while ($arrmergers = mysql_fetch_array($fetch, MYSQL_ASSOC)) { $mergers[$arrmergers["id"]] = $arrmergers; } echo "<br /><br /><table border=0 cellspacing=0 cellpadding=0 class='big'>"; echo "<tr class='header'><th colspan=4> Requested Mergers </th></tr>"; echo "<tr class='subheader'><th> Merge Time </th><td> Tribe ID </td><td> Current Location </td><td> Wanted Location </td></tr>"; foreach ($mergers as $strKey => $value) { echo "<tr class='data'><th> {$value['merge_time']} </th><td> {$value['tribe']} </td><td> {$value['oldname']}(#{$value['origin']}) </td><td>{$value['newname']}(#{$value['target']})</td></tr>"; } echo "</table>"; } elseif ($task == "pending") { // show list of all tribes ready to get merged $fetch = mysql_query("SELECT * FROM mergers WHERE request_status = 'ready' order by merge_time desc"); $mergers = array(); while ($arrmergers = mysql_fetch_array($fetch, MYSQL_ASSOC)) { $mergers[$arrmergers["id"]] = $arrmergers; } echo "<br /><br />" . '<table border="0" cellspacing="0" cellpadding="0" class="big">' . '<tr class="header">' . '<th colspan="8">New Mergers</th>' . '</tr>' . '<tr class="subheader">' . '<th> Merge Time </th>' . '<td> Tribe ID </td>' . '<td> Old Location </td>' . '<td> New Location </td>' . '<td class="center"> §1 </td>' . '<td class="center"> Ruler<br />Age </td>' . '<td> War </td>' . '<td> Actions </td>' . '</tr>'; foreach ($mergers as $strKey => $value) { // $age = mysql_query("SELECT land FROM build WHERE id = $value[tribe]"); // $age = mysql_fetch_array($land); // $ltxt = $land['land']; $bExists = TRUE; $strSQL = "SELECT id FROM " . TBL_USER . " WHERE id = {$value['tribe']}"; $resSQL = mysql_query($strSQL); if (mysql_num_rows($resSQL) == 1) { $objTmpUser = new clsUser($value['tribe']); } else { $bExists = FALSE; } // 21 YEARS OLD ==================================================== if ($bExists) { $iHours = $objTmpUser->get_user_info(HOURS); } else { $iHours = 11808; } if (($iYears = ceil(($iHours + 192) / 12)) > 21) { $strTmpYears = '<span class="negative">' . $iYears . '</span>'; } else { $strTmpYears = '<span class="positive">' . $iYears . '</span>'; } // WEEKS JOINED < 6 ================================================ if ($bExists) { $strDate = $objTmpUser->get_gamestat(SIGNUP_TIME); } else { $strDate = '0000-00-00 00:00:00'; } if (ceil((strtotime($strDate) - strtotime('-6 weeks')) / 86400) < 0) { $strTmpSignup = '<span class="negative">Veteran</span>'; } else { $strTmpSignup = '<span class="positive">Novice</span>'; } include_once "inc/functions/war.php"; $seek1['war_target'] = war_target($value['origin']); $seek2['war_target'] = war_target($value['target']); $seek4 = mysql_query("Select count(id) as bleh from stats where kingdom = {$value['target']}"); $seek4 = mysql_fetch_array($seek4); if ($seek1['war_target'] > 0 || $seek2['war_target'] > 0) { $war = '<font class="negative">At War</font>'; } else { $war = '<font class="positive">Ok!</font>'; } if ($seek1['war_target'] > 0 || $seek2['war_target'] > 0 || $seek4['bleh'] >= MAX_ALLIANCE_SIZE) { $accept = "<font class=\"negative\">No Merging *</font>"; $show = true; } else { $accept = "<a href='main.php?cat=game&page=resort_tools&tool=mergers&task=accept&mergerid={$value['id']}'>Accept</a>"; } echo "<tr class='data'>\n <th class='bsdown'> {$value['merge_time']} </th>\n <td class='bsdown'> {$value['tribe']} </td>\n <td class='bsdown'> {$value['oldname']}(#{$value['origin']}) </td>\n <td class='bsdown'> {$value['newname']}(#{$value['target']}) </td>\n <td class='bsdown center'> " . $strTmpSignup . " </td>\n <td class='bsdown center'> " . $strTmpYears . " </td>\n <td class='bsdown'> {$war} </td>\n <td class='bsdown'> <a href='main.php?cat=game&page=resort_tools&tool=mergers&task=changename&mergerid={$value['id']}'>Change Name</a><br />\n {$accept}<br />\n <a href='main.php?cat=game&page=resort_tools&tool=mergers&task=decline&mergerid={$value['id']}'>Decline</a>\n </td>\n </tr>"; } echo "</table>"; if (isset($show)) { echo "* = The no merging means that his alliance or the alliance he want to go to is at war, or that the alliance he want to merge to is already at " . MAX_ALLIANCE_SIZE . " tribes.<br />"; } } }
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 call_target_find($landMin,$landMax,$strMin,$strMax,$fameMin,$fameMax,$races,$sort,$sortType) { // ---One hell of an sql query start--- $sql="SELECT tribe_name,alli_id,land,nw,fame,race,id FROM rankings_personal WHERE hours >= " . PROTECTION_HOURS . " AND alli_id > 10 AND "; $criteria=0; //this var is needed to check whether to put ADD in the query (the user may only want to search by 1 criteria) if(is_numeric($landMin)) { $sql.="land>=$landMin "; $criteria=1; } if(is_numeric($landMax)) { if($criteria>0) { $sql.="AND "; } $sql.="land<=$landMax "; $criteria=1; } if(is_numeric($strMin)) { if($criteria>0) { $sql.="AND "; } $sql.="nw>=$strMin "; $criteria=1; } if(is_numeric($strMax)) { if($criteria>0) { $sql.="AND "; } $sql.="nw<=$strMax "; $criteria=1; } if(is_numeric($fameMin)) { if($criteria>0) { $sql.="AND "; } $sql.="fame>=$fameMin "; $criteria=1; } if(is_numeric($fameMax)) { if($criteria>0) { $sql.="AND "; } $sql.="fame<=$fameMax "; $criteria=1; } $sql.="AND race IN ("; $racesAmount=count($races); for($i=0;$i<$racesAmount;$i++) { $sql.="'$races[$i]'"; if($i!=$racesAmount-1) { $sql.=","; } } $sql.=") ORDER BY $sort $sortType LIMIT 100"; // ---One hell of an sql query end--- $results=mysql_query($sql) or die(mysql_error()); if ($races[0] != "") { ?> <table cellspacing="0" cellpadding="0" class="big" id="results"> <tr class="header"> <th colspan="7">Your Search Results</th> </tr> <tr class="subheader"> <th>Tribe name</th> <th class="right">#</th> <th class="center">War</th> <th class="center">Race</th> <th class="right">Land</th> <th class="right">Strength</th> <th class="right">Fame</th> </tr> <? include_once("inc/functions/war.php"); while($arrTrgFind = mysql_fetch_array($results)) { $warTarget = war_target($arrTrgFind['alli_id']); echo "<tr class=\"data\">"; echo "<th><a href=\"main.php?cat=game&page=external_affairs&tribe=$arrTrgFind[id]&aid=$arrTrgFind[alli_id]\">$arrTrgFind[tribe_name]</th>"; echo "<td><a href=\"main.php?cat=game&page=alliance&aid=$arrTrgFind[alli_id]\">$arrTrgFind[alli_id]</td>"; if ($warTarget == 0) echo "<td> </td>"; else echo "<td class=\"negative center\">*WAR*</td>"; echo "<td class=\"center\">$arrTrgFind[race]</td>"; echo "<td>$arrTrgFind[land]</td>"; echo "<td>$arrTrgFind[nw]</td>"; echo "<td>$arrTrgFind[fame]</td>"; echo "</tr>"; } ?> </tbody> </table> <div class="center"><? echo mysql_num_rows($results); ?> Targets Found.</div> <? } }
function include_preferences_text() { global $orkTime; include_once 'inc/classes/clsGame.php'; $objSrcUser =& $GLOBALS["objSrcUser"]; $arrSrcUserInfos = $objSrcUser->get_user_infos(); $arrSrcStats = $objSrcUser->get_stats(); $iUserId = $objSrcUser->get_userid(); $objGame = new clsGame(); // Navigational Links if ($arrSrcStats[TYPE] == 'elder' || $arrSrcStats[TYPE] == 'coelder') { echo $topLinks = '<div class="center">| <b>Options</b> ' . '| <a href="main.php?cat=game&page=elder">Elder Options</a> ' . '|' . '</div>'; } echo '<div id="textBig">'; echo '<h2>Account Settings</h2>' . '<p>' . '<a href="main.php?cat=game&page=preferences&task=layout">Interface Settings</a> :: ' . '<a href="main.php?cat=game&page=preferences&task=profile">Profile Settings</a> :: ' . '<a href="main.php?cat=game&page=preferences&task=request_name">Request Name Change</a>' . '</p>'; echo '<h2>Account Options</h2>' . '<p>' . '<a href="main.php?cat=game&page=preferences&task=request_merge">Request Merge</a> :: ' . '<a href="main.php?cat=game&page=preferences&task=pause_account">Pause Account</a> :: ' . '<a href="main.php?cat=game&page=preferences&task=reset_account">Reset Account</a> :: ' . '<a href="main.php?cat=game&page=preferences&task=delete_account">Delete Account</a>' . '</p>'; if ($arrSrcStats[LEVEL] > 1) { echo "<h2>Staff Options</h2>" . '<p>' . '<a href="main.php?cat=game&page=resort_tools">Resort Tools</a>' . '</p>'; } echo '</div>'; //========================================================================== // Below you will find the options for people to manage their accounts //========================================================================== echo '<div id="textBig">'; $task = ''; if (isset($_GET['task'])) { $task = $_GET['task']; } switch ($task) { case "layout": ?> <h2>Interface Settings</h2> <?php // XSS secure May 21, 2006 -Martel & Damadm00 $widths = array(1 => 750, 1060); $alignments = array(1 => 'left', 'center'); // $designs = array( 1 => 'blue', 'ice', 'red'); $designs = array(1 => 'forest_v1', 'black_v2', 'ork_v2'); // $output = array( 1 => 'Trade Winds', 'Castle Walls', 'Uruk Hatred'); $output = array(1 => 'Forest Greens', 'Cursed Nights', 'Old Orkfia'); // Handle POST Requests if (isset($_POST['width']) && isset($_POST['alignment']) && isset($_POST['design'])) { if (in_array($_POST['width'], $widths) && in_array($_POST['alignment'], $alignments) && in_array($_POST['design'], $designs)) { $arrSrcDesignSafe[WIDTH] = $_POST['width']; $arrSrcDesignSafe[ALIGNMENT] = $_POST['alignment']; $arrSrcDesignSafe[COLOR] = $_POST['design']; $objSrcUser->set_designs($arrSrcDesignSafe); // A gift to you Damadm00 ^^ -Martel header("Location: main.php?cat=game&page=preferences&task=layout"); } } elseif (isset($_POST['guide_links'])) { if (isset($_POST['check'])) { echo '<p><strong>Saved!</strong> Guide links will now show.</p>'; $objSrcUser->set_preference(GUIDE_LINKS, ON); } else { echo '<p><strong>Saved!</strong> Guide links will no longer show.</p>'; $objSrcUser->set_preference(GUIDE_LINKS, OFF); } } // GUIDE LINKS OPTION $strChecked = ''; if ($objSrcUser->get_preference(GUIDE_LINKS) == ON) { $strChecked = ' CHECKED'; } // INTERFACE OPTIONS $arrSrcDesign = $objSrcUser->get_designs(); ?> <h3>Interface Control</h3> <form method="post" action="main.php?cat=game&page=preferences&task=layout"> <label for="skin">Skin:</label><br /> <select name="design" id="skin"> <?php foreach ($designs as $key => $color) { if ($color == $arrSrcDesign['color']) { echo "<option value=\"" . $color . "\" selected=\"selected\">" . $output[$key] . "</option>"; } else { echo "<option value=\"" . $color . "\">" . $output[$key] . "</option>"; } } ?> </select><br /><br /> <label for="screen width">Width:</label><br /> <select name="width" id="screen width"> <?php foreach ($widths as $width) { if ($width == $arrSrcDesign['width']) { echo "<option value=\"" . $width . "\" selected=\"selected\">" . $width . "</option>"; } else { echo "<option value=\"" . $width . "\">" . $width . "</option>"; } } ?> </select><br /><br /> <label for="layout alignment">Alignment:</label><br /> <select name="alignment" id = "layout alignment"> <?php foreach ($alignments as $alignment) { if ($alignment == $arrSrcDesign['alignment']) { echo "<option value=\"" . $alignment . "\" selected=\"selected\">" . $alignment . "</option>"; } else { echo "<option value=\"" . $alignment . "\">" . $alignment . "</option>"; } } ?> </select> <input type="submit" value="Update interface" /> </form> <h3>Ingame Help System</h3> <form method="post" action="main.php?cat=game&page=preferences&task=layout"> <label for="1">Show Guide Links: </label> <input type="checkbox" id="1" name="check" <?php echo $strChecked; ?> > <input type="hidden" name="guide_links" /> <input type="submit" value="Update interface" /> </form> <?php break; case "profile": //================================================================== // Action handler part of Profile October 28, 2007 Martel //================================================================== if (isset($_POST['realname']) && !empty($_POST['realname'])) { // Enforce maxlength in form $strSafe = substr($_POST['realname'], 0, 24); // Same as in registration, important to keep the order right $strSafe = addslashes(strip_tags(trim($strSafe))); if (!empty($strSafe)) { $objSrcUser->set_user_info(REALNAME, $strSafe); echo '<p>Thank you, your name has been updated.</p>'; } } elseif (isset($_POST['name']) && !empty($_POST['name'])) { // Enforce maxlength in form $strSafe = substr($_POST['name'], 0, 16); // Same as in registration, important to keep the order right $strSafe = addslashes(strip_tags(trim($strSafe))); $resSQL = mysql_query("SELECT * FROM stats WHERE name = '{$strSafe}'"); $arrSQL = mysql_fetch_array($resSQL); if ($arrSQL) { echo "<p>Sorry, that leader name is taken.</p>"; $strSafe = ''; } if (!empty($strSafe)) { $objSrcUser->set_stat(NAME, $strSafe); echo '<p>Thank you, your name has been updated.</p>'; } } elseif (isset($_POST['password1']) && !empty($_POST['password1'])) { $password1 = $_POST['password1']; $password2 = $_POST['password2']; $password = $_POST['password']; $check = mysql_query("SELECT * FROM user WHERE password = sha1('{$password}') AND id = {$iUserId}") or die("Error Retrieving Password From DB."); if (mysql_num_rows($check) == 1 && $password1 == $password2) { $strPw1Safe = sha1($password1); $objSrcUser->set_user_info(PASSWORD, $strPw1Safe); echo "<p>Your password has been changed.</p>"; $email = stripslashes($objSrcUser->get_preference(EMAIL)); $username = stripslashes($arrSrcUserInfos[USERNAME]); mail("{$email}", "ORKFiA New Password", "Hello, \nYour password has been updated with the one you requested =) \n\nUsername: {$username} \nPassword: {$password1}" . SIGNED_ORKFIA, "From: ORKFiA <" . EMAIL_REGISTRATION . ">\r\nX-Mailer: PHP/" . phpversion() . "\r\nX-Priority: Normal"); } else { echo "<p>Either you entered the wrong current password, or your new password wasn't matching in both entries.</p>"; } } elseif (isset($_POST['email']) && !empty($_POST['email'])) { $strEmailSafe = $_POST['email']; // This check is used on the registration and verification pages if (!ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+' . '@' . '[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\\.' . '[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$', $strEmailSafe)) { echo "<p>Sorry, invalid e-mail address.</p>"; } else { $pref_search = mysql_query("SELECT * FROM preferences WHERE email = " . quote_smart($strEmailSafe)); $pref_search = mysql_fetch_array($pref_search); if ($pref_search) { echo "<p>Sorry, that email is in use.</p>"; } else { $strCode = ''; for ($i = 0; $i < 12; $i++) { $strCode .= substr("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", rand(0, 61), 1); } // Activation email sent to all new players mail($strEmailSafe, "ORKFiA Verification", "Thank you for updating your profile =) \n\nHere is your new verification code: {$strCode} \n\nWe hope you enjoy your stay in ORKFiA =)" . SIGNED_ORKFIA, "From: ORKFiA <" . EMAIL_REGISTRATION . ">\r\nX-Mailer: PHP/" . phpversion() . "\r\nX-Priority: Normal"); $arrNewPrefs = array(EMAIL_ACTIVATION => $strCode, EMAIL => $strEmailSafe); $objSrcUser->set_preferences($arrNewPrefs); echo '<p>Thank you, your e-mail has been updated and ' . 'a new verification code has been sent to it.</p>'; } } } $arrUsers = $objSrcUser->get_user_infos(); $arrStats = $objSrcUser->get_stats(); $arrUsers[REALNAME] = stripslashes($arrUsers[REALNAME]); $arrStats[NAME] = stripslashes($arrStats[NAME]); $strEmail = stripslashes($objSrcUser->get_preference(EMAIL)); //================================================================== // Output part of Profile October 28, 2007 Martel //================================================================== echo '<h2>Profile Settings</h2>'; $strRealName = '<h3>Real Name</h3>' . '<p>About your privacy: Only admins and Law & Order ' . 'can see your real name, and only when enforcing the Code ' . 'of Conduct (to help judge that you are a unique individual). ' . 'We believe it is your right to remain anonymous, and you may ' . 'rest assured this will never be shown to anybody else.</p>' . '<form method="post" action="main.php?cat=game&page=preferences&task=profile">' . '<label for="real_name">Your Real Name:</label>' . '<br />' . '<input type="text" name="realname" id="real_name" value="' . $arrUsers[REALNAME] . '" maxlength="24" size="24" /> ' . '<input type="submit" value="Update my profile" />' . "</form>" . '<blockquote>"You also agree that by creating your account, ' . 'all details you have supplied are correct, persons who ' . 'create accounts with false information may be removed from ' . 'ORKFiA."</blockquote>'; echo $strRealName; $strLeaderName = '<h3>Leader Name</h3>' . '<p>Your current nick name with us is <em>' . $arrStats[NAME] . '</em>. This is used in the forums, when sending mail using ' . 'the Orkfia Mail and in various alliance contexts. If someone ' . 'called out "<em>Hey ' . $arrStats[NAME] . '!</em>" in the ' . 'street, would you react to it and think it must be another ' . 'ORKFiAN?</p>' . '<form method="post" action="main.php?cat=game&page=preferences&task=profile">' . '<label for="new_leader_name">Your Leader Name:</label><br />' . '<input type="text" name="name" id="new_leader_name" value="' . $arrStats[NAME] . '" maxlength="16" size="16" /> ' . "<input type=\"submit\" value=\"Update my profile\" />" . "</form>"; echo $strLeaderName; $strPassword = '******' . '<p>For your own safety, make sure your password consists of ' . 'minimum 8 characters including numbers and capital letters.' . '</p>' . '<form method="post" action="main.php?cat=game&page=preferences&task=profile">' . '<label for="current_pw">Current Password:</label><br />' . '<input type="password" name="password" id="current_pw" />' . '<br /><br />' . '<label for="new_pw">New Password:</label><br />' . '<input type="password" name="password1" id="new_pw" ' . 'maxlength="30" />' . '<br /><br />' . '<label for="repeat_pw">Confirm Password:</label><br />' . '<input type="password" name="password2" id="repeat_pw" ' . 'maxlength="30" /> ' . '<input type="submit" value="Update my profile" />' . "</form>"; echo $strPassword; $strEmail = '<h3>E-mail</h3>' . '<p>It is important that you get this right, if you would ' . 'forget your password or if our ORKFiA Staff Team need to ' . 'contact you this e-mail will be used. We will never share ' . 'this with anyone else, privacy is a major concern to us.</p>' . '<form method="post" action="main.php?cat=game&page=preferences&task=profile">' . '<label for="new_email">' . "Your e-mail:" . '</label><br />' . '<input type="text" name="email" id="new_email" value="' . $strEmail . '" maxlength="30" size="30" />' . ' <input type="submit" value="Update my profile" />' . "</form>"; echo $strEmail; break; case "request_name": $strSwitch = $objGame->get_game_switch(NAME_CHANGE_PROGRAM); if ($strSwitch == 'on') { echo "<h2> Request Name Change </h2>"; echo "<p>Here you may request that the ORKFiA Staff Team " . "changes your tribe name. Normally you would only change " . "your tribe name if you reset your account, or if " . "your tribe dies.</p>"; if (isset($_POST['action']) && $_POST['action'] == "yes") { if (!empty($_POST['newtribename']) && !empty($_POST['reason'])) { $strTribe = $_POST['newtribename']; $strTribe = quote_smart(strip_tags(trim($strTribe))); $reason = quote_smart(str_replace("'", "", strip_tags(trim($_POST['reason'])))); $check = mysql_query("SELECT * FROM stats WHERE tribe = {$strTribe}"); if (mysql_num_rows($check) != 0) { echo "<p>Sorry, someone is already using that tribe name.</p>"; } else { echo "<p>Thank you, your request has been sent to staff. You will soon recieve a confirmation note.</p>"; mysql_query("INSERT INTO namechanges (id, tribe, requestedname, reason, mod_id, reason_declined, request_status, oldname) VALUES ( '', '{$arrSrcStats['id']}', {$strTribe}, {$reason}, '0', '0', 'ready', '{$arrSrcStats['tribe']}')"); } } else { echo '<p>' . "You need to fill in a new tribe name and a reason." . '</p><p>' . '<a href="main.php?cat=game&page=preferences&task=request_name">Return</a>' . '</p>'; } } elseif (isset($_POST['action']) && $_POST['action'] == "cancel") { echo "<p>Your request to change your tribe name has been deleted.</p>"; mysql_query("UPDATE namechanges SET request_status = 'cancelled' WHERE tribe = {$arrSrcStats['id']} AND request_status = 'ready' "); } else { $strSQL = "SELECT requestedname FROM namechanges WHERE tribe = {$arrSrcStats['id']} AND request_status = 'ready'"; $result2 = mysql_query($strSQL); if ($result = mysql_fetch_array($result2)) { echo "<p>You have a pending name request.<br /> Your requested name is: " . stripslashes($result['requestedname']) . ".</p><p>If you wish to cancel your name request you may use the button below.</p>" . "<form method=\"post\" action=\"main.php?cat=game&page=preferences&task=request_name\">" . "<input type=hidden value='cancel' name='action'>" . "<input type=submit value='Cancel Request'>" . "</form>"; } else { ?> <form method="post" action="main.php?cat=game&page=preferences&task=request_name"> <label for="new tribe name">New Tribe Name:</label><br /> <input type="text" size="30" name="newtribename" maxlength="30" id="new tribe name" value="<?php echo stripslashes($arrSrcStats[TRIBE]); ?> " /><br /><br /> <label for="reason">Reason For Changing:</label><br /> <input type="text" size="48" name="reason" maxlength="100" id="reason" /> <input type="hidden" name="action" value="yes" /> <input type="submit" value="Send request to Operations staff" /> </form> <?php } } } else { echo '<p class="positive">Currently name changes are closed. ' . 'It is not possible to request any more name changes.</p>'; } break; case "request_merge": echo '<h2>Request Merge</h2>'; $mergeswitch = $objGame->get_game_switch(MERGER_PROGRAM); if ($mergeswitch == "on") { if (isset($_POST['do']) && $_POST['do'] == "cancel") { $bleh = mysql_query("SELECT * FROM mergers WHERE tribe = {$arrSrcStats['id']} AND ( request_status = 'not ready' OR request_status = 'ready')"); $bleh = mysql_fetch_array($bleh); $bleh2 = mysql_query("SELECT * FROM stats WHERE type='elder' AND kingdom='{$bleh['target']}'"); $bleh2 = mysql_fetch_array($bleh2); $message = "The merge request done by " . $arrSrcStats[TRIBE] . " (#" . $arrSrcStats[ALLIANCE] . ") has been cancelled by the player."; mysql_query("INSERT INTO messages (id, for_user, from_user, date, subject, text, new, action) VALUES ('', {$bleh2['id']}, 0, {$orkTime}, 'Merge Request Cancelled', " . quote_smart($message) . ", 'new', 'received')"); mysql_query("DELETE FROM mergers WHERE tribe = {$arrSrcStats['id']} AND ( request_status = 'not ready' OR request_status = 'ready')"); echo "<p>Your merge request has been deleted.</p>"; echo '</div>'; return; } $result2 = mysql_query("SELECT * FROM mergers WHERE tribe = {$arrSrcStats['id']} AND ( request_status = 'not ready' OR request_status = 'ready')"); $result2 = mysql_fetch_array($result2); if (isset($result2['target'])) { echo "<p>You have a pending merge request to alliance (#" . $result2['target'] . ").<br />If you want to cancel this " . "merge request click on the button below.</p>"; echo $strCancelForm = '<form method="post" action="main.php?cat=game&page=preferences&task=request_merge">' . '<input type="hidden" name="do" value="cancel" />' . '<input type="submit" value="Cancel merge request" />' . '</form>'; echo '</div>'; return; } // Action on sent confirmation from target elder (by PM link) if (isset($_GET['checker']) && $_GET['checker'] > 0) { $checker = intval($_GET['checker']); $mergerid = intval($_GET['mergerid']); $result = mysql_query("SELECT * FROM mergers WHERE tribe = {$mergerid} ORDER BY id DESC LIMIT 1"); if (mysql_num_rows($result) > 0) { $result = mysql_fetch_array($result); if ($checker == 1 && $result['target'] == $arrSrcStats[ALLIANCE]) { mysql_query("UPDATE mergers SET auth = 1, request_status = 'ready' WHERE tribe = {$mergerid} AND request_status = 'not ready'") or die("<p>Error while accepting tribe.</p>"); $message = "Your request to merge to alliance {$result['target']} has been accepted by their elder.<br /><br />A member of the Operations Resort will merge you as soon as possible =)"; $sqlquery = "INSERT INTO messages (id, for_user, from_user, date, subject, text, new, action) VALUES ('', {$result['tribe']}, 0, {$orkTime}, 'Merge Request Accepted', " . quote_smart($message) . ", 'new', 'received')"; mysql_query($sqlquery); echo "<p>Thank you, we have now accepted a new member to the alliance.</p>"; } elseif ($checker == 2 && $result['target'] == $arrSrcStats[ALLIANCE]) { mysql_query("DELETE FROM mergers WHERE tribe = {$result['tribe']} AND ( request_status = 'not ready' OR request_status = 'ready') ") or die("<br />Error while rejecting tribe.<br />"); $message = "Your request to merge to alliance {$result['target']} has been rejected by their elder.<br /><br />"; $sqlquery = "INSERT INTO messages (id, for_user, from_user, date, subject, text, new, action) VALUES ('', {$result['tribe']}, 0, {$orkTime}, 'Merge Request Rejected', " . quote_smart($message) . ", 'new', 'received')"; mysql_query($sqlquery); echo "<p>Thank you for answering the request.</p>"; } else { echo "<p>This tribe is no longer applying for a merge into your alliance.</p>"; } } else { echo "<p>The merge request no longer exists.</p>"; } } elseif (isset($_POST['do']) && $_POST['do'] == "yes") { $iTargetAlli = intval($_POST['target']); if (empty($iTargetAlli)) { echo "<p>You have to fill in an alliance number that " . "you wish to merge into. Please try again. </p>"; unset($_POST['do']); echo '</div>'; return; } elseif ($iTargetAlli == $arrSrcStats[ALLIANCE]) { echo "<p>You can not merge into your own alliance. " . "Please fill in another alliance number.</p>"; echo '</div>'; return; } elseif ($iTargetAlli <= 10) { echo "<p>You can not request to merge into a staff " . "alliance. Please fill in another alliance " . "number.</p>"; echo '</div>'; return; } $strSQL = "SELECT * FROM " . TBL_ALLIANCE . " WHERE id = " . $iTargetAlli; if (mysql_num_rows(mysql_query($strSQL)) != 1) { echo "<p>We're sorry, this alliance does not exist.</p>"; echo '</div>'; return; } $objTrgAlliance = new clsAlliance($iTargetAlli); $arrUserids = $objTrgAlliance->get_userids(); if (count($arrUserids) >= MAX_ALLIANCE_SIZE) { echo "<p>We're sorry, this alliance is full.</p>"; echo '</div>'; return; } else { // Default: no name change requested along with merger $newtribename = $arrSrcStats[TRIBE]; $safetribename = quote_smart(stripslashes($newtribename)); if (isset($_POST['newtribename']) && !empty($_POST['newtribename'])) { $safetribename = quote_smart(strip_tags(trim($_POST['newtribename']))); $id = $objSrcUser->get_userid(); $check = mysql_query("SELECT * FROM stats WHERE tribe = {$safetribename} AND id != {$id}"); if (mysql_num_rows($check) != 0) { echo "<p>Someone is already using that tribename.</p>"; echo '</div>'; return; } $message = "You have an awaiting merge request.<br /><br />" . $arrSrcStats[TRIBE] . " (#" . $arrSrcStats[ALLIANCE] . ") wishes to join your alliance.<br />They did also request a new name.<br /><br />Do you <a href= \"main.php?cat=game&page=preferences&task=request_merge&checker=1&mergerid=" . $arrSrcStats['id'] . "\">accept their request</a> or <a href= \"main.php?cat=game&page=preferences&task=request_merge&checker=2&mergerid=" . $arrSrcStats['id'] . "\">deny their request</a>?<br />"; } else { $message = "You have an awaiting merge request.<br /><br />" . $arrSrcStats[TRIBE] . " (#" . $arrSrcStats[ALLIANCE] . ") wishes to join your alliance.<br /><br />Do you <a href=\"main.php?cat=game&page=preferences&task=request_merge&checker=1&mergerid=" . $arrSrcStats['id'] . "\">accept</a> or <a href=\"main.php?cat=game&page=preferences&task=request_merge&checker=2&mergerid=" . $arrSrcStats['id'] . "\">deny</a> their request?"; } $iElderId = mysql_query("SELECT id FROM stats WHERE type = 'elder' AND " . ALLIANCE . " = {$iTargetAlli}"); $iElderId = mysql_fetch_array($iElderId); $iElderId = $iElderId['id']; if (!empty($iElderId)) { mysql_query("INSERT INTO messages (id, for_user, from_user, date, subject, text, new, action) VALUES ('', {$iElderId}, 0, {$orkTime}, 'Merge Request', " . quote_smart($message) . ", 'new', 'received')"); } else { echo "<p>There's no elder in this alliance!</p>"; echo '</div>'; return; } // Insert into mergers mysql_query("INSERT INTO mergers (id, tribe, target, origin, auth, tribe_status, request_status, mtype, merge_time, newname, oldname, mod_id, declined_reason) VALUES ('', {$id}, {$iTargetAlli}, {$arrSrcStats[ALLIANCE]}, 0, " . quote_smart($arrSrcStats[TYPE]) . ", 'not ready', 1, {$orkTime}, {$safetribename}, " . quote_smart($arrSrcStats[TRIBE]) . ", '0', '0')") or die("Merger error"); echo "<p>The request was sent to the elder of (#" . $iTargetAlli . ")!</p>"; } } else { include_once "inc/functions/war.php"; $warTarget = war_target($arrSrcStats[ALLIANCE]); $strDate = $objSrcUser->get_gamestat(SIGNUP_TIME); $iHours = $objSrcUser->get_user_info(HOURS); $bAllow = TRUE; if ($warTarget != 0) { echo "<p>The option to merge is not available during war.</p>"; $bAllow = FALSE; } elseif (strtotime("-6 weeks") < strtotime($strDate)) { echo '<p>You may merge for another ' . ceil((strtotime($strDate) - strtotime("-6 weeks")) / 86400) . ' days.</p>'; $bAllow = TRUE; } elseif ($iHours < 72) { echo '<p>You may merge for another ' . ceil(abs(($iHours - 72) / 12)) . ' orkfian years'; $bAllow = TRUE; } if ($bAllow) { echo $strForm = '<h3>Merging into another alliance</h3>' . '<form method="post" action="main.php?cat=game&page=preferences&task=request_merge">' . 'Alliance # you wish to request a merge with: ' . '<input type="text" size="4" name="target" maxlength="4" />' . '<br />' . 'New tribe name you want: ' . '<input type="text" size="16" name="newtribename" maxlength="30" /> (optional)' . '<br /><br />' . '<input type="hidden" name="do" value="yes" />' . '<input type="submit" value="Send merge request" />' . '</form>'; } elseif (strtotime("-6 weeks") > strtotime($strDate)) { echo '<p>Currently your ruler is too old to merge.</p>'; } } echo $strRules = '<h3>Merger Rules</h3>' . '<ol>' . '<li>You may request a merge ' . 'anywhere, at any time, within 6 weeks after you ' . 'sign up</li>' . '<li>Veteran players may only merge before their ' . 'ruler age is 22 (within 3 days after restarting)' . '<li>Exception to rule #2: If you were <em>defected' . '</em> you may request a merges at any ruler age, but ' . 'only <em>after</em> 1 week</li>' . '<li>No one may merge during wars</li>' . '</ol>'; } else { echo "<p>Currently merging is closed. You can not request/accept any more mergers.</p>"; } break; case "delete_account": echo '<h2>Delete Account</h2>'; include_once "inc/functions/war.php"; $warTarget = war_target($arrSrcStats[ALLIANCE]); if ($warTarget > 0) { echo "<p>You are not allowed to delete during war.</p>"; echo '</div>'; return; } $arrSrcArmysOut = $objSrcUser->get_armys_out(); if (array_sum($arrSrcArmysOut) > 0) { echo "<p>Sorry, you can not delete with troops out.</p>"; echo '</div>'; return; } if (isset($_GET['do']) && $_GET['do'] == "yes" && isset($_POST['checker'])) { echo "<p>It's so sad to see you go.</p>"; //include_once("inc/functions/research.php"); //delete_my_rps($iUserId); // no more - AI 07/05/07 $objSrcUser->set_stat(NAME, 'deleted'); $objSrcUser->set_stat(ALLIANCE, 0); mysql_query("DELETE FROM rankings_personal WHERE id = {$iUserId}"); setcookie("userid", ""); echo "<p>...Thank you for playing ORKFiA...</p>"; // Alliance News $iAlliance = $objSrcUser->get_stat(ALLIANCE); $orkTime = date("YmdHis"); $strSQL = "INSERT INTO news (id, time, ip, type, duser, ouser, result, text, kingdom_text, kingdoma, kingdomb) VALUES ('','{$orkTime}', '', 'Selfdeletion', 0, 0, 1, 'tribe deleted', '" . $arrSrcStats[TRIBE] . " deleted their tribe.', " . $iAlliance . ", {$iAlliance})"; mysql_query($strSQL); echo '</div>'; return; } else { $strForm = '<form method="post" action="main.php?cat=game&page=preferences&task=delete_account&do=yes">' . 'Are you absolutely sure you want to <em>delete</em> your account? ' . '<input type="checkbox" name="checker" id="y1"> ' . '<label for="y1">(yes)</label>' . '<br /><br />' . 'This action is permanent and cannot be undone.' . '<br /><br />' . '<input type="submit" value="Delete my account">' . '</form>'; echo $strForm; } break; case "reset_account": echo '<h2>Reset Account</h2>'; include_once "inc/functions/war.php"; $warTarget = war_target($arrSrcStats[ALLIANCE]); if ($warTarget > 0) { echo '<p>Sorry, you are not allowed to reset during war.</p>'; echo '</div>'; return; } $arrSrcArmysOut = $objSrcUser->get_armys_out(); if (array_sum($arrSrcArmysOut) > 0) { echo '<p>Sorry, you cannot reset while you have troops out.</p>'; echo '</div>'; return; } if (isset($_GET['do']) && $_GET['do'] == "yes" && isset($_POST['checker'])) { // Mark tribe for resetting $objSrcUser->set_stat(RESET_OPTION, "'yes'"); // Force update of rankings include_once 'inc/functions/update_ranking.php'; doUpdateRankings($objSrcUser, 'yes'); $strP = '<p>' . 'Your account has been reset!' . '</p><p>' . '<a href="main.php?cat=game&page=tribe">' . 'Continue' . '</a>' . '</p>'; echo $strP; } else { $strForm = '<form method="post" action="main.php?cat=game&page=preferences&task=reset_account&do=yes">' . 'Are you absolutely sure you want to <em>reset</em> your account? ' . '<input type="checkbox" name="checker" id="1"> ' . '<label for="1">(yes)</label>' . '<br /><br />' . 'This action is permanent and cannot be undone.' . '<br /><br />' . '<input type="submit" value="Reset my account">' . '</form>'; echo $strForm; } break; case "pause_account": echo '<h2>Pause Account</h2>'; $PauseModeActive = $objGame->get_game_switch(PAUSE_MODE_ACTIVE); if ($PauseModeActive != 'on') { echo "<p><span class=positive>We're sorry, currently you may " . "not pause your account due to a global event.</span></p>"; echo '</div>'; return; } $arrSrcUserInfos = $objSrcUser->get_user_infos(); if ($arrSrcUserInfos[PAUSE_ACCOUNT] == 0 && ($arrSrcUserInfos[NEXT_ATTACK] > 0 && $arrSrcUserInfos[HOURS] > 0)) { echo "<p>" . $arrSrcUserInfos[NEXT_ATTACK] . " hour(s) left before your troops are home.</p>"; echo '</div>'; return; } $arrSrcBuilds = $objSrcUser->get_builds(); if ($arrSrcUserInfos[PAUSE_ACCOUNT] == 0 && ($arrSrcBuilds[LAND_T1] > 0 || $arrSrcBuilds[LAND_T2] > 0 || $arrSrcBuilds[LAND_T3] > 0 || $arrSrcBuilds[LAND_T4] > 0)) { echo "<p>You can't pause while land is incoming.</p>"; echo '</div>'; return; } if ($arrSrcUserInfos[PAUSE_ACCOUNT] > 49) { echo "<p>Your account will be paused in " . ($arrSrcUserInfos[PAUSE_ACCOUNT] - 49) . " updates, you will be able to unpause it in " . ($arrSrcUserInfos[PAUSE_ACCOUNT] - 1) . "</p>"; echo '</div>'; return; } if ($arrSrcUserInfos[PAUSE_ACCOUNT] > 1) { echo "<p>" . ($arrSrcUserInfos[PAUSE_ACCOUNT] - 1) . " updates left " . "until you may un-pause your account and play again.</p>"; echo '</div>'; return; } // if($arrSrcUserInfos[PAUSE_ACCOUNT] == 1 && war_target($arrSrcStats[ALLIANCE]) > 0 ) // { // echo "<p>You cannot unpause during war.</p>"; // echo '</div>'; // return; // } if (isset($_POST['do']) && $_POST['do'] == "yes") { // Pause Account Routines. Martel July 13, 2006 $arrSrcUser = $objSrcUser->get_user_infos(); if ($arrSrcUser[NEXT_ATTACK] <= 1) { $arrSrcUser[NEXT_ATTACK] = 1; } $arrNewSrcUser = array(NEXT_ATTACK => $arrSrcUser[NEXT_ATTACK], PAUSE_ACCOUNT => 55); $objSrcUser->set_user_infos($arrNewSrcUser); // Empty Magic and Thievery Points $objSrcUser->set_spell(POWER, 0); $objSrcUser->set_thievery(CREDITS, 0); // Forced Ranking Update include_once 'inc/functions/update_ranking.php'; doUpdateRankings($objSrcUser, 'yes'); // M: Alliance news (March 07, 2008) $objSrcAlliance = $objSrcUser->get_alliance(); $iWarTarget = $objSrcAlliance->get_war('target'); // 0=default $iAllianceid = $objSrcAlliance->get_allianceid(); mysql_query("INSERT INTO news (id, time, ip, type, duser, ouser, result, text, kingdom_text, kingdoma, kingdomb) VALUES ('', '{$orkTime}', '---', 'vacation', 0, 0, 1, '', '{$arrSrcStats['tribe']} (#{$iAllianceid}) is entering vacation mode', {$iAllianceid}, {$iWarTarget})"); echo "<p>Your account has been paused, see you back in 2 or more days =)</p>"; echo '</div>'; return; } elseif (isset($_POST['do']) && $_POST['do'] == "no") { // Un-Pause Account Routines. Martel July 13, 2006 $arrNewSrcUser = array(NEXT_ATTACK => 0, PAUSE_ACCOUNT => 0); $objSrcUser->set_user_infos($arrNewSrcUser); // M: Alliance news (March 07, 2008) $objSrcAlliance = $objSrcUser->get_alliance(); $iWarTarget = $objSrcAlliance->get_war('target'); // 0=default $iAllianceid = $objSrcAlliance->get_allianceid(); mysql_query("INSERT INTO news (id, time, ip, type, duser, ouser, result, text, kingdom_text, kingdoma, kingdomb) VALUES ('', '{$orkTime}', '---', 'vacation', 0, 0, 1, '', '{$arrSrcStats['tribe']} (#{$iAllianceid}) is now back from vacation mode', {$iAllianceid}, {$iWarTarget})"); echo "<p>Your account has been un-paused, we're glad to see you back =)</p>"; } else { if ($arrSrcUserInfos[PAUSE_ACCOUNT] > 0) { ?> <p>You are now allowed to un-pause your account.</p> <form method="post" action="main.php?cat=game&page=preferences&task=pause_account"> <input type="hidden" name="do" value="no"> <input type="submit" value="Leave Vacation Mode"> </form> <?php } else { ?> <h3>Vacation Mode Rules</h3> <ul> <li>Entering Vacation Mode will take 6 hours</li> <li>You <i>may</i> enter Vacation Mode during war</li> <li>You may not enter Vacation Mode if you currently have military out on an attack or if you have incoming acres</li> <li>Your ruler will still age, but your account will be protected during Vacation Mode</li> </ul> <form method="post" action="main.php?cat=game&page=preferences&task=pause_account"> <input type="hidden" name="do" value="yes"> <input type="submit" value="Enter vacation mode"> </form> <p>Vacation Mode runs for 48 hours minimum. If you cannot enter VM with your account due to circumstances beyond your control, you may message a staff member in Law & Order requesting your account being suspended and a valid reason why you can't pause it yourself.</p> <?php } } break; } echo '</div>'; }
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>'; }