function do_op(&$objSrcUser,&$objTrgUser,$cnt,$thieves,$mod) { include_once("inc/pages/advisors.inc.php"); $result["fame"] = 0; $result["text_screen"] = get_effecting_spells_table($objTrgUser); $result["text_news"] = ""; return $result; }
function include_advisors_text() { $objSrcUser =& $GLOBALS["objSrcUser"]; $show = 'population'; if (isset($_GET['show'])) { $show = $_GET['show']; } echo get_advisor_links($show); switch ($show) { case 'population': ?> <!-- <div id="textMedium"> <p><b>The population advisor</b> greets you humbly:<br />Leader, no lands have ever before seen such great care that you show us. Please allow me to kiss your feet.</p> </div> --> <div id="columns"> <!-- Start left column --> <div id="leftcolumn"> <h2>Population</h2> <div class="tableLinkSmall"> <a href="main.php?cat=game&page=build">Construction</a> </div> <?php echo get_housing_table($objSrcUser); ?> <br /> <?php echo get_population_table($objSrcUser); ?> <?php echo get_guide_link($objSrcUser, 'advisor_population'); ?> </div> <!-- end left column --> <!-- start right column --> <div id="rightcolumn"> <h2>Citizens</h2> <div class="tableLinkSmall"> <a href="main.php?cat=game&page=mystic">Mystics</a> </div> <?php echo get_citizen_table($objSrcUser); ?> </div> <!-- End of the right column--> </div> <!-- end of 2 column layout --> <?php break; // end case population // end case population case 'resources': ?> <!-- <div id="textMedium"> <p><b>The resource advisor</b> greets you humbly:<br />Leader, no lands have ever before seen such great care that you show us. Please allow me to kiss your feet.</p> </div> --> <div id="columns"> <!-- Start left column --> <div id="leftcolumn"> <h2>Production</h2> <?php echo get_income_table($objSrcUser); ?> <br /><br /> <?php echo get_wood_table($objSrcUser); ?> <h2>Resources</h2> <div class="tableLinkSmall"> <a href="main.php?cat=game&page=market&action=sell">Sell Goods</a> </div> <?php echo get_goods_table($objSrcUser); ?> </div> <!-- end left column --> <!-- start right column --> <div id="rightcolumn"> <h2> </h2> <?php echo get_food_table($objSrcUser); ?> <br /><br /> <div class="tableLinkSmall"> <a href="main.php?cat=game&page=research">Invest</a> </div> <?php echo get_research_table($objSrcUser); ?> <h2> </h2> <div class="tableLinkSmall"> <a href="main.php?cat=game&page=advisors&show=build">Infrastructure</a> </div> <?php echo get_building_output_table($objSrcUser); ?> </div> <!-- end right column --> </div> <!-- end of 2 column layout --> <?php break; // end case resources // end case resources case 'military': include_once "inc/functions/tribe.php"; ?> <!-- <div id="textMedium"> <p><b>Your general</b> greets you humbly:<br />Leader, no lands have ever before seen such great care that you show us. Please allow me to kiss your feet.</p> </div> --> <br /> <!-- Start 2 column layout --> <div id="columns"> <!-- Start left column --> <div id="leftcolumn"> <?php echo get_offence_table($objSrcUser); ?> </div> <!-- end left column --> <!-- start right column --> <div id="rightcolumn"> <?php echo get_defence_table($objSrcUser); ?> </div> <!-- end right column --> </div> <div class="clear"><hr /></div> <!-- end of 2 column layout --> <br /> <div class="tableLinkMedium"> <a href="main.php?cat=game&page=army">Military Training</a> </div> <?php echo get_military_training_table($objSrcUser); ?> <br /> <div class="tableLinkMedium"> <a href="main.php?cat=game&page=invade">Invasion</a> </div> <?php echo get_military_returning_table($objSrcUser); ?> <?php echo get_guide_link($objSrcUser, 'advisor_military', 'textMedium'); ?> <br /> <?php break; // end case military // end case military case 'actions': ?> <!-- <div id="textMedium"> <p><b>The advisor</b> greets you humbly:<br />Leader, no lands have ever before seen such great care that you show us. Please allow me to kiss your feet.</p> </div> --> <br /> <div id="columns"> <!-- Start left column --> <div id="leftcolumn"> <div class="tableLinkSmall"> <a href="main.php?cat=game&page=mystic">Mystics</a> </div> <?php echo get_effecting_spells_table($objSrcUser); ?> <?php echo get_guide_link($objSrcUser, 'advisor_actions'); ?> </div> <!-- end left column --> <!-- start right column --> <div id="rightcolumn"> <div class="tableLinkSmall"> <a href="main.php?cat=game&page=thievery">Thievery</a> </div> <?php echo get_effecting_ops_table($objSrcUser); ?> </div> <!-- end right column --> </div> <div class="clear"><hr /></div> <!-- end of 2 column layout --> <?php break; // end case actions // end case actions case 'build': ?> <!-- <div id="textMedium"> <p><b>The tribe architect</b> greets you humbly:<br />Leader, no lands have ever before seen such great care that you show us. Please allow me to kiss your feet.</p> </div> --> <br /> <div class="tableLinkMedium"> <a href="main.php?cat=game&page=explore">Exploration</a> :: <a href="main.php?cat=game&page=build">Construction</a> </div> <?php echo get_construction_table($objSrcUser); ?> <?php echo get_guide_link($objSrcUser, 'advisor_build', 'textMedium'); break; // end case build } }
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; }