274 lines
12 KiB
PHP
Executable File
274 lines
12 KiB
PHP
Executable File
<?php
|
|
//addnews ready
|
|
// mail ready
|
|
// translator ready
|
|
require_once("common.php");
|
|
require_once("lib/systemmail.php");
|
|
require_once("lib/increment_specialty.php");
|
|
require_once("lib/fightnav.php");
|
|
require_once("lib/http.php");
|
|
require_once("lib/taunt.php");
|
|
require_once("lib/substitute.php");
|
|
require_once("lib/villagenav.php");
|
|
require_once("lib/experience.php");
|
|
|
|
tlschema("train");
|
|
|
|
page_header("Bluspring's Warrior Training");
|
|
|
|
$battle = false;
|
|
$victory = false;
|
|
$defeat = false;
|
|
|
|
output("`b`cBluspring's Warrior Training`c`b");
|
|
|
|
$mid = httpget("master");
|
|
if ($mid) {
|
|
$sql = "SELECT * FROM " . db_prefix("masters") . " WHERE creatureid=$mid";
|
|
} else {
|
|
$sql = "SELECT max(creaturelevel) as level FROM " . db_prefix("masters") . " WHERE creaturelevel <= " . $session['user']['level'];
|
|
$res = db_query($sql);
|
|
$row = db_fetch_assoc($res);
|
|
$l = $row['level'];
|
|
|
|
$sql = "SELECT * FROM " . db_prefix("masters") . " WHERE creaturelevel=$l ORDER BY RAND(".e_rand().") LIMIT 1";
|
|
}
|
|
|
|
$result = db_query($sql);
|
|
if (db_num_rows($result) > 0 && $session['user']['level'] <= 14){
|
|
$master = db_fetch_assoc($result);
|
|
$mid = $master['creatureid'];
|
|
$master['creaturename'] = stripslashes($master['creaturename']);
|
|
$master['creaturewin'] = stripslashes($master['creaturewin']);
|
|
$master['creaturelose'] = stripslashes($master['creaturelose']);
|
|
$master['creatureweapon'] = stripslashes($master['creatureweapon']);
|
|
if ($master['creaturename'] == "Gadriel the Elven Ranger" &&
|
|
$session['user']['race'] == "Elf") {
|
|
$master['creaturewin'] = "You call yourself an Elf?? Maybe Half-Elf! Come back when you've been better trained.";
|
|
$master['creaturelose'] = "It is only fitting that another Elf should best me. You make good progress.";
|
|
}
|
|
$level = $session['user']['level'];
|
|
$dks = $session['user']['dragonkills'];
|
|
$exprequired=exp_for_next_level($level, $dks);
|
|
|
|
$op = httpget('op');
|
|
if ($op==""){
|
|
checkday();
|
|
output("The sound of conflict surrounds you. The clang of weapons in grisly battle inspires your warrior heart. ");
|
|
output("`n`n`^%s stands ready to evaluate you.`0",
|
|
$master['creaturename']);
|
|
addnav("Question Master","train.php?op=question&master=$mid");
|
|
addnav("M?Challenge Master","train.php?op=challenge&master=$mid");
|
|
if ($session['user']['superuser'] & SU_DEVELOPER) {
|
|
addnav("Superuser Gain level","train.php?op=challenge&victory=1&master=$mid");
|
|
}
|
|
villagenav();
|
|
}else if($op=="challenge"){
|
|
if (httpget('victory')) {
|
|
$victory=true;
|
|
$defeat=false;
|
|
if ($session['user']['experience'] < $exprequired)
|
|
$session['user']['experience'] = $exprequired;
|
|
$session['user']['seenmaster'] = 0;
|
|
}
|
|
if ($session['user']['seenmaster']){
|
|
output("You think that, perhaps, you've seen enough of your master for today, the lessons you learned earlier prevent you from so willingly subjecting yourself to that sort of humiliation again.");
|
|
villagenav();
|
|
}else{
|
|
/* OK, let's fix the multimaster thing */
|
|
$session['user']['seenmaster'] = 1;
|
|
debuglog("Challenged master, setting seenmaster to 1");
|
|
|
|
if ($session['user']['experience']>=$exprequired){
|
|
$dk = 0;
|
|
restore_buff_fields();
|
|
while(list($key, $val)=each($session['user']['dragonpoints'])) {
|
|
if ($val=="at" || $val=="de") $dk++;
|
|
}
|
|
$dk += (int)(($session['user']['maxhitpoints'] -
|
|
($session['user']['level']*10))/5);
|
|
|
|
$dk = round($dk * .33, 0);
|
|
|
|
$atkflux = e_rand(0, $dk);
|
|
$atkflux = min($atkflux, round($dk*.25));
|
|
$defflux = e_rand(0, ($dk-$atkflux));
|
|
$defflux = min($defflux, round($dk*.25));
|
|
|
|
$hpflux = ($dk - ($atkflux+$defflux)) * 5;
|
|
debug("DEBUG: $dk modification points total.`n");
|
|
debug("DEBUG: +$atkflux allocated to attack.`n");
|
|
debug("DEBUG: +$defflux allocated to defense.`n");
|
|
debug("DEBUG: +".($hpflux/5)."*5 to hitpoints`n");
|
|
calculate_buff_fields();
|
|
|
|
$master['creatureattack']+=$atkflux;
|
|
$master['creaturedefense']+=$defflux;
|
|
$master['creaturehealth']+=$hpflux;
|
|
$attackstack['enemies'][0] = $master;
|
|
$attackstack['options']['type'] = 'train';
|
|
$session['user']['badguy']=createstring($attackstack);
|
|
|
|
$battle=true;
|
|
if ($victory) {
|
|
$badguy = unserialize($session['user']['badguy']);
|
|
$badguy = $badguy['enemies'][0];
|
|
output("With a flurry of blows you dispatch your master.`n");
|
|
}
|
|
}else{
|
|
output("You ready your %s and %s and approach `^%s`0.`n`n",$session['user']['weapon'],$session['user']['armor'],$master['creaturename']);
|
|
output("A small crowd of onlookers has gathered, and you briefly notice the smiles on their faces, but you feel confident. ");
|
|
output("You bow before `^%s`0, and execute a perfect spin-attack, only to realize that you are holding NOTHING!", $master['creaturename']);
|
|
output("`^%s`0 stands before you holding your weapon.",$master['creaturename']);
|
|
output("Meekly you retrieve your %s, and slink out of the training grounds to the sound of boisterous guffaws.",$session['user']['weapon']);
|
|
villagenav();
|
|
}
|
|
}
|
|
}else if($op=="question"){
|
|
checkday();
|
|
output("You approach `^%s`0 timidly and inquire as to your standing in the class.",$master['creaturename']);
|
|
if($session['user']['experience']>=$exprequired){
|
|
output("`n`n`^%s`0 says, \"Gee, your muscles are getting bigger than mine...\"",$master['creaturename']);
|
|
}else{
|
|
output("`n`n`^%s`0 states that you will need `%%s`0 more experience before you are ready to challenge him in battle.",$master['creaturename'],($exprequired-$session['user']['experience']));
|
|
}
|
|
addnav("Question Master","train.php?op=question&master=$mid");
|
|
addnav("M?Challenge Master","train.php?op=challenge&master=$mid");
|
|
if ($session['user']['superuser'] & SU_DEVELOPER) {
|
|
addnav("Superuser Gain level","train.php?op=challenge&victory=1&master=$mid");
|
|
}
|
|
villagenav();
|
|
}else if($op=="autochallenge"){
|
|
addnav("Fight Your Master","train.php?op=challenge&master=$mid");
|
|
output("`^%s`0 has heard of your prowess as a warrior, and heard of rumors that you think you are so much more powerful than he that you don't even need to fight him to prove anything. ",$master['creaturename']);
|
|
output("His ego is understandably bruised, and so he has come to find you.");
|
|
output("`^%s`0 demands an immediate battle from you, and your own pride prevents you from refusing the demand.",$master['creaturename']);
|
|
if ($session['user']['hitpoints']<$session['user']['maxhitpoints']){
|
|
output("`n`nBeing a fair person, your master gives you a healing potion before the fight begins.");
|
|
$session['user']['hitpoints']=$session['user']['maxhitpoints'];
|
|
}
|
|
modulehook("master-autochallenge");
|
|
if (getsetting('displaymasternews',1)) addnews("`3%s`3 was hunted down by their master, `^%s`3, for being truant.",$session['user']['name'],$master['creaturename']);
|
|
}
|
|
if ($op=="fight"){
|
|
$battle=true;
|
|
}
|
|
if ($op=="run"){
|
|
output("`\$Your pride prevents you from running from this conflict!`0");
|
|
$op="fight";
|
|
$battle=true;
|
|
}
|
|
|
|
if($battle){
|
|
require_once("lib/battle-skills.php");
|
|
require_once("lib/extended-battle.php");
|
|
suspend_buffs('allowintrain', "`&Your pride prevents you from using extra abilities during the fight!`0`n");
|
|
suspend_companions("allowintrain");
|
|
if (!$victory) {
|
|
require_once("battle.php");
|
|
}
|
|
if ($victory){
|
|
$badguy['creaturelose']=substitute_array($badguy['creaturelose']);
|
|
output_notl("`b`&");
|
|
output($badguy['creaturelose']);
|
|
output_notl("`0`b`n");
|
|
output("`b`\$You have defeated %s!`0`b`n",$badguy['creaturename']);
|
|
|
|
$session['user']['level']++;
|
|
$session['user']['maxhitpoints']+=10;
|
|
$session['user']['soulpoints']+=5;
|
|
$session['user']['attack']++;
|
|
$session['user']['defense']++;
|
|
// Fix the multimaster bug
|
|
if (getsetting("multimaster", 1) == 1) {
|
|
$session['user']['seenmaster']=0;
|
|
debuglog("Defeated master, setting seenmaster to 0");
|
|
}
|
|
output("`#You advance to level `^%s`#!`n",$session['user']['level']);
|
|
output("Your maximum hitpoints are now `^%s`#!`n",$session['user']['maxhitpoints']);
|
|
output("You gain an attack point!`n");
|
|
output("You gain a defense point!`n");
|
|
if ($session['user']['level']<15){
|
|
output("You have a new master.`n");
|
|
}else{
|
|
output("None in the land are mightier than you!`n");
|
|
}
|
|
if ($session['user']['referer']>0 && ($session['user']['level']>=getsetting("referminlevel",4) || $session['user']['dragonkills'] > 0) && $session['user']['refererawarded']<1){
|
|
$sql = "UPDATE " . db_prefix("accounts") . " SET donation=donation+".getsetting("refereraward",25)." WHERE acctid={$session['user']['referer']}";
|
|
db_query($sql);
|
|
$session['user']['refererawarded']=1;
|
|
$subj=array("`%One of your referrals advanced!`0");
|
|
$body=array("`&%s`# has advanced to level `^%s`#, and so you have earned `^%s`# points!", $session['user']['name'], $session['user']['level'], getsetting("refereraward", 25));
|
|
systemmail($session['user']['referer'],$subj,$body);
|
|
}
|
|
increment_specialty("`^");
|
|
|
|
// Level-Up companions
|
|
// We only get one level per pageload. So we just add the per-level-values.
|
|
// No need to multiply and/or substract anything.
|
|
if (getsetting("companionslevelup", 1) == true) {
|
|
$newcompanions = $companions;
|
|
foreach ($companions as $name => $companion) {
|
|
$companion['attack'] = $companion['attack'] + $companion['attackperlevel'];
|
|
$companion['defense'] = $companion['defense'] + $companion['defenseperlevel'];
|
|
$companion['maxhitpoints'] = $companion['maxhitpoints'] + $companion['maxhitpointsperlevel'];
|
|
$companion['hitpoints'] = $companion['maxhitpoints'];
|
|
$newcompanions[$name] = $companion;
|
|
}
|
|
$companions = $newcompanions;
|
|
}
|
|
|
|
invalidatedatacache("list.php-warsonline");
|
|
|
|
addnav("Question Master","train.php?op=question");
|
|
addnav("M?Challenge Master","train.php?op=challenge");
|
|
if ($session['user']['superuser'] & SU_DEVELOPER) {
|
|
addnav("Superuser Gain level","train.php?op=challenge&victory=1");
|
|
}
|
|
villagenav();
|
|
if ($session['user']['age'] == 1) {
|
|
if (getsetting('displaymasternews',1)) addnews("`%%s`3 has defeated ".($session['user']['sex']?"her":"his")." master, `%%s`3 to advance to level `^%s`3 after `^1`3 day!!", $session['user']['name'],$badguy['creaturename'],$session['user']['level']);
|
|
} else {
|
|
if (getsetting('displaymasternews',1)) addnews("`%%s`3 has defeated ".($session['user']['sex']?"her":"his")." master, `%%s`3 to advance to level `^%s`3 after `^%s`3 days!!", $session['user']['name'],$badguy['creaturename'],$session['user']['level'],$session['user']['age']);
|
|
}
|
|
if ($session['user']['hitpoints'] < $session['user']['maxhitpoints'])
|
|
$session['user']['hitpoints'] = $session['user']['maxhitpoints'];
|
|
modulehook("training-victory", $badguy);
|
|
}elseif($defeat){
|
|
$taunt = select_taunt_array();
|
|
|
|
if (getsetting('displaymasternews',1)) addnews("`%%s`5 has challenged their master, %s and lost!`n%s",$session['user']['name'],$badguy['creaturename'],$taunt);
|
|
$session['user']['hitpoints']=$session['user']['maxhitpoints'];
|
|
output("`&`bYou have been defeated by `%%s`&!`b`n",$badguy['creaturename']);
|
|
output("`%%s`\$ halts just before delivering the final blow, and instead extends a hand to help you to your feet, and hands you a complementary healing potion.`n",$badguy['creaturename']);
|
|
$badguy['creaturewin']=substitute_array($badguy['creaturewin']);
|
|
output_notl("`^`b");
|
|
output($badguy['creaturewin']);
|
|
output_notl("`b`0`n");
|
|
addnav("Question Master","train.php?op=question&master=$mid");
|
|
addnav("M?Challenge Master","train.php?op=challenge&master=$mid");
|
|
if ($session['user']['superuser'] & SU_DEVELOPER) {
|
|
addnav("Superuser Gain level","train.php?op=challenge&victory=1&master=$mid");
|
|
}
|
|
villagenav();
|
|
modulehook("training-defeat", $badguy);
|
|
}else{
|
|
fightnav(false,false, "train.php?master=$mid");
|
|
}
|
|
if ($victory || $defeat) {
|
|
unsuspend_buffs('allowintrain', "`&You now feel free to make use of your buffs again!`0`n");
|
|
unsuspend_companions("allowintrain");
|
|
}
|
|
}
|
|
}else{
|
|
checkday();
|
|
output("You stroll into the battle grounds.");
|
|
output("Younger warriors huddle together and point as you pass by.");
|
|
output("You know this place well.");
|
|
output("Bluspring hails you, and you grasp her hand firmly.");
|
|
output("There is nothing left for you here but memories.");
|
|
output("You remain a moment longer, and look at the warriors in training before you turn to return to the village.");
|
|
villagenav();
|
|
}
|
|
page_footer();
|
|
?>
|