300 lines
12 KiB
PHP
300 lines
12 KiB
PHP
|
<?php
|
||
|
// translator ready
|
||
|
// addnews ready
|
||
|
// mail ready
|
||
|
require_once("common.php");
|
||
|
require_once("lib/http.php");
|
||
|
require_once("lib/buffs.php");
|
||
|
require_once("lib/sanitize.php");
|
||
|
require_once("lib/villagenav.php");
|
||
|
|
||
|
tlschema('stables');
|
||
|
|
||
|
$basetext=array(
|
||
|
"title"=>"Merick's Stables",
|
||
|
"desc"=>array(
|
||
|
"`7Behind the inn, and a little to the left of Ye Olde Bank, is as fine a stable as one might expect to find in any village. ",
|
||
|
"In it, Merick, a burly looking dwarf tends to various beasts.`n`n",
|
||
|
array("You approach, and he whirls around, pointing a pitchfork in your general direction, \"`&Ach, sorry m'%s, I dinnae hear ya' comin' up on me, an' I thoht fer sure ye were %s`&; he what been tryin' to improve on his dwarf tossin' skills. ",translate_inline($session['user']['sex']?'lass':'lad'),getsetting('barkeep','`tCedrik')),
|
||
|
"Naahw, wha' can oye do fer ya?`7\" he asks.",
|
||
|
),
|
||
|
"nosuchbeast"=>"`7\"`&Ach, thar dinnae be any such beestie here!`7\" shouts the dwarf!",
|
||
|
"finebeast"=>array(
|
||
|
"`7\"`&Aye, tha' be a foyne beastie indeed!`7\" comments the dwarf.`n`n",
|
||
|
"`7\"`&Ye cert'nly have an oye fer quality!`7\" exclaims the dwarf.`n`n",
|
||
|
"`7\"`&Och, this beastie will serve ye well indeed,`7\" says the dwarf.`n`n",
|
||
|
"`7\"`&That beastie be one o' me finest!`7\" says the dwarf with pride.`n`n",
|
||
|
"`7\"`&Ye couldnae hae made a foyner choice o' beasts!`7\" says the dwarf with pride.`n`n"
|
||
|
),
|
||
|
"toolittle"=>"`7Merick looks at you sorta sideways. \"`&'Ere, whadday ya think yeer doin'? Cannae ye see that %s`& costs `^%s`& gold an' `%%s`& gems?`7\"",
|
||
|
"replacemount"=>"`7You hand over the reins to %s`7 and the purchase price of your new critter, and Merick leads out a fine new `&%s`7 for you!`n`n",
|
||
|
"newmount"=>"`7You hand over the purchase price of your new critter, and Merick leads out a fine `&%s`7 for you!`n`n",
|
||
|
"nofeed"=>"`7\"`&Ach, m'%s, what dae ye think this is, a hostelry? I cannae feed yer critter here!`7\"`nMerick thumps you on the back good naturedly, and sends you on your way.",
|
||
|
"nothungry"=>"%s`7 isn't hungry. Merick hands your gold back.",
|
||
|
"halfhungry"=>"%s`7 pinches a bit of the given food and leaves the rest alone. %s`7 is fully restored. Because there is still more than half of the food left, Merick gives you 50%% discount.`nYou only pay %s gold.",
|
||
|
"hungry"=>"%s`7 eats all the food greedily.`n%s`7 is fully restored and you give your %s gold to Merick.",
|
||
|
"mountfull"=>"`n`7\"`&Aye, there ye go %s, yer %s`& be full o' foyne grub. I willnae be able t' feed 'em again 'til the morrow though. Well, enjoy ye day!`7\"`nMerick whistles a jaunty tune and heads back to work.",
|
||
|
"nofeedgold"=>"`7You don't have enough gold with you to pay for the food. Merick refuses to feed your creature and advises you to look for somewhere else to let %s`7 graze for free, such as in the `@Forest`7.",
|
||
|
"confirmsale"=>"`n`n`7Merick whistles. \"`&Yer mount shure is a foyne one, %s. Are ye sure ye wish t' part wae it?`7\"`n`nHe waits for your answer.`0",
|
||
|
"mountsold"=>"`7As sad as it is to do so, you give up your precious %s`7, and a lone tear escapes your eye.`n`nHowever, the moment you spot the %s, you find that you're feeling quite a bit better.",
|
||
|
"offer"=>"`n`n`&Merick offers you `^%s`& gold and `%%s`& gems for %s`7.",
|
||
|
"lass"=>"lass",
|
||
|
"lad"=>"lad",
|
||
|
);
|
||
|
$schemas = array(
|
||
|
'title'=>'stables',
|
||
|
'desc'=>'stables',
|
||
|
'nosuchbeast'=>'stables',
|
||
|
'finebeast'=>'stables',
|
||
|
'toolittle'=>'stables',
|
||
|
'replacemount'=>'stables',
|
||
|
'newmount'=>'stables',
|
||
|
'nofeed'=>'stables',
|
||
|
'nothungry'=>'stables',
|
||
|
'halfhungry'=>'stables',
|
||
|
'hungry'=>'stables',
|
||
|
'mountfull'=>'stables',
|
||
|
'nofeedgold'=>'stables',
|
||
|
'confirmsale'=>'stables',
|
||
|
'mountsold'=>'stables',
|
||
|
'offer'=>'stables',
|
||
|
);
|
||
|
$basetext['schemas']=$schemas;
|
||
|
$texts = modulehook("stabletext", $basetext);
|
||
|
$schemas = $texts['schemas'];
|
||
|
|
||
|
tlschema($schemas['title']);
|
||
|
page_header($texts['title']);
|
||
|
tlschema();
|
||
|
|
||
|
addnav("Other");
|
||
|
villagenav();
|
||
|
modulehook("stables-nav");
|
||
|
|
||
|
require_once("lib/mountname.php");
|
||
|
list($name, $lcname) = getmountname();
|
||
|
|
||
|
$repaygold = 0;
|
||
|
$repaygems = 0;
|
||
|
$grubprice = 0;
|
||
|
|
||
|
if ($playermount) {
|
||
|
$repaygold = round($playermount['mountcostgold']*2/3,0);
|
||
|
$repaygems = round($playermount['mountcostgems']*2/3,0);
|
||
|
$grubprice = round($session['user']['level']*$playermount['mountfeedcost'], 0);
|
||
|
}
|
||
|
$confirm = 0;
|
||
|
|
||
|
$op = httpget('op');
|
||
|
$id = httpget('id');
|
||
|
|
||
|
global $playermount;
|
||
|
|
||
|
if ($op==""){
|
||
|
checkday();
|
||
|
tlschema($schemas['desc']);
|
||
|
if (is_array($texts['desc'])) {
|
||
|
foreach ($texts['desc'] as $description) {
|
||
|
output_notl(sprintf_translate($description));
|
||
|
}
|
||
|
} else {
|
||
|
output($texts['desc']);
|
||
|
}
|
||
|
tlschema();
|
||
|
modulehook("stables-desc");
|
||
|
}elseif($op=="examine"){
|
||
|
$sql = "SELECT * FROM " . db_prefix("mounts") . " WHERE mountid='$id'";
|
||
|
$result = db_query_cached($sql, "mountdata-$id", 3600);
|
||
|
if (db_num_rows($result)<=0){
|
||
|
tlschema($schemas['nosuchbeast']);
|
||
|
output($texts['nosuchbeast']);
|
||
|
tlschema();
|
||
|
}else{
|
||
|
// Idea taken from Robert of dragonprime.cawsquad.net
|
||
|
$t = e_rand(0,count($texts['finebeast'])-1);
|
||
|
tlschema($schemas['finebeast']);
|
||
|
output($texts['finebeast'][$t]);
|
||
|
tlschema();
|
||
|
$mount = db_fetch_assoc($result);
|
||
|
output("`7Creature: `&%s`0`n", $mount['mountname']);
|
||
|
output("`7Description: `&%s`0`n", $mount['mountdesc']);
|
||
|
output("`7Cost: `^%s`& gold, `%%s`& gems`n`n", $mount['mountcostgold'], $mount['mountcostgems']);
|
||
|
addnav(array("New %s", $mount['mountname']));
|
||
|
addnav("Buy this creature","stables.php?op=buymount&id={$mount['mountid']}");
|
||
|
}
|
||
|
}elseif($op=='buymount'){
|
||
|
if ($session['user']['hashorse']) {
|
||
|
tlschema($schemas['confirmsale']);
|
||
|
output($texts['confirmsale'],
|
||
|
($session['user']['sex']?$texts["lass"]:$texts["lad"]));
|
||
|
tlschema();
|
||
|
addnav("Confirm trade");
|
||
|
addnav("Yes", "stables.php?op=confirmbuy&id=$id");
|
||
|
addnav("No","stables.php");
|
||
|
$confirm = 1;
|
||
|
} else {
|
||
|
$op="confirmbuy";
|
||
|
httpset("op",$op);
|
||
|
}
|
||
|
}
|
||
|
if ($op == 'confirmbuy') {
|
||
|
$sql = "SELECT * FROM " . db_prefix("mounts") . " WHERE mountid='$id'";
|
||
|
$result = db_query_cached($sql, "mountdata-$id", 3600);
|
||
|
if (db_num_rows($result)<=0){
|
||
|
tlschema($schemas['nosuchbeast']);
|
||
|
output($texts['nosuchbeast']);
|
||
|
tlschema();
|
||
|
}else{
|
||
|
$mount = db_fetch_assoc($result);
|
||
|
if (($session['user']['gold']+$repaygold) < $mount['mountcostgold'] ||
|
||
|
($session['user']['gems']+$repaygems) < $mount['mountcostgems']){
|
||
|
tlschema($schemas['toolittle']);
|
||
|
output($texts['toolittle'], $mount['mountname'], $mount['mountcostgold'], $mount['mountcostgems']);
|
||
|
tlschema();
|
||
|
}else{
|
||
|
if ($session['user']['hashorse']>0){
|
||
|
tlschema($schemas['replacemount']);
|
||
|
output($texts['replacemount'], $lcname, $mount['mountname']);
|
||
|
tlschema();
|
||
|
}else{
|
||
|
tlschema($schemas['newmount']);
|
||
|
output($texts['newmount'], $mount['mountname']);
|
||
|
tlschema();
|
||
|
}
|
||
|
$debugmount1=isset($playermount['mountname'])?$playermount['mountname']:false;
|
||
|
if ($debugmount1) $debugmount1="a ".$debugmount1;
|
||
|
$session['user']['hashorse']=$mount['mountid'];
|
||
|
$debugmount2=$mount['mountname'];
|
||
|
$goldcost = $repaygold-$mount['mountcostgold'];
|
||
|
$session['user']['gold']+=$goldcost;
|
||
|
$gemcost = $repaygems-$mount['mountcostgems'];
|
||
|
$session['user']['gems']+=$gemcost;
|
||
|
debuglog(($goldcost <= 0?"spent ":"gained ") . abs($goldcost) . " gold and " . ($gemcost <= 0?"spent ":"gained ") . abs($gemcost) . " gems trading $debugmount1 for a new mount, a $debugmount2");
|
||
|
$buff = unserialize($mount['mountbuff']);
|
||
|
if ($buff['schema'] == "") $buff['schema'] = "mounts";
|
||
|
apply_buff('mount',unserialize($mount['mountbuff']));
|
||
|
// Recalculate so the selling stuff works right
|
||
|
$playermount = getmount($mount['mountid']);
|
||
|
$repaygold = round($playermount['mountcostgold']*2/3,0);
|
||
|
$repaygems = round($playermount['mountcostgems']*2/3,0);
|
||
|
// Recalculate the special name as well.
|
||
|
modulehook("stable-mount", array());
|
||
|
modulehook("boughtmount");
|
||
|
require_once("lib/mountname.php");
|
||
|
list($name, $lcname) = getmountname();
|
||
|
$grubprice = round($session['user']['level']*$playermount['mountfeedcost'], 0);
|
||
|
}
|
||
|
}
|
||
|
}elseif($op=='feed'){
|
||
|
if (getsetting("allowfeed", 0) == 0) {
|
||
|
tlschema($schemas['nofeed']);
|
||
|
output($texts['nofeed'],
|
||
|
($session['user']['sex']?$texts["lass"]:$texts["lad"]));
|
||
|
tlschema();
|
||
|
} elseif($session['user']['gold']>=$grubprice) {
|
||
|
$buff = unserialize($playermount['mountbuff']);
|
||
|
if (!isset($buff['schema']) || $buff['schema'] == "") $buff['schema'] = "mounts";
|
||
|
if (isset($session['bufflist']['mount']) && $session['bufflist']['mount']['rounds'] == $buff['rounds']) {
|
||
|
tlschema($schemas['nothungry']);
|
||
|
output($texts['nothungry'],$name);
|
||
|
tlschema();
|
||
|
} else {
|
||
|
if (isset($session['bufflist']['mount']) && $session['bufflist']['mount']['rounds'] > $buff['rounds']*.5) {
|
||
|
$grubprice=round($grubprice/2,0);
|
||
|
tlschema($schemas['halfhungry']);
|
||
|
output($texts['halfhungry'], $name, $name, $grubprice);
|
||
|
tlschema();
|
||
|
$session['user']['gold']-=$grubprice;
|
||
|
}else{
|
||
|
$session['user']['gold']-=$grubprice;
|
||
|
tlschema($schemas['hungry']);
|
||
|
output($texts['hungry'], $name, $name, $grubprice);
|
||
|
tlschema();
|
||
|
}
|
||
|
debuglog("spent $grubprice feeding their mount");
|
||
|
apply_buff('mount',$buff);
|
||
|
$session['user']['fedmount'] = 1;
|
||
|
tlschema($schemas['mountfull']);
|
||
|
output($texts['mountfull'],
|
||
|
($session['user']['sex']?$texts["lass"]:$texts["lad"]),
|
||
|
($playermount['basename']?
|
||
|
$playermount['basename']:$playermount['mountname']));
|
||
|
tlschema();
|
||
|
}
|
||
|
} else {
|
||
|
tlschema($schemas['nofeedgold']);
|
||
|
output($texts['nofeedgold'], $lcname);
|
||
|
tlschema();
|
||
|
}
|
||
|
}elseif($op=='sellmount'){
|
||
|
tlschema($schemas['confirmsale']);
|
||
|
output($texts['confirmsale'],
|
||
|
($session['user']['sex']?$texts["lass"]:$texts["lad"]));
|
||
|
tlschema();
|
||
|
addnav("Confirm sale");
|
||
|
addnav("Yes", "stables.php?op=confirmsell");
|
||
|
addnav("No","stables.php");
|
||
|
$confirm = 1;
|
||
|
}elseif($op=='confirmsell'){
|
||
|
$session['user']['gold']+=$repaygold;
|
||
|
$session['user']['gems']+=$repaygems;
|
||
|
$debugmount=$playermount['mountname'];
|
||
|
debuglog("gained $repaygold gold and $repaygems gems selling their mount, a $debugmount");
|
||
|
strip_buff('mount');
|
||
|
$session['user']['hashorse']=0;
|
||
|
modulehook("soldmount");
|
||
|
|
||
|
$amtstr = "";
|
||
|
if ($repaygold > 0) {
|
||
|
$amtstr .= "%s gold";
|
||
|
}
|
||
|
if ($repaygems > 0) {
|
||
|
if ($repaygold) $amtstr .= " and ";
|
||
|
$amtstr .= "%s gems";
|
||
|
}
|
||
|
if ($repaygold > 0 && $repaygems > 0) {
|
||
|
$amtstr = sprintf_translate($amtstr, $repaygold, $repaygems);
|
||
|
} elseif ($repaygold > 0) {
|
||
|
$amtstr = sprintf_translate($amtstr, $repaygold);
|
||
|
} else {
|
||
|
$amtstr = sprintf_translate($amtstr, $repaygems);
|
||
|
}
|
||
|
|
||
|
tlschema($schemas['mountsold']);
|
||
|
output($texts['mountsold'],
|
||
|
($playermount['newname']?
|
||
|
$playermount['newname']:$playermount['mountname']),
|
||
|
$amtstr);
|
||
|
tlschema();
|
||
|
}
|
||
|
|
||
|
if ($confirm == 0) {
|
||
|
if ($session['user']['hashorse']>0){
|
||
|
addnav(array("%s", color_sanitize($name)));
|
||
|
tlschema($schemas['offer']);
|
||
|
output($texts['offer'], $repaygold, $repaygems, $lcname);
|
||
|
tlschema();
|
||
|
addnav(array("Sell %s`0", $lcname),"stables.php?op=sellmount");
|
||
|
if (getsetting("allowfeed", 0) && $session['user']['fedmount']==0) {
|
||
|
addnav(array("Feed %s`0 (`^%s`0 gold)", $lcname, $grubprice),
|
||
|
"stables.php?op=feed");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$sql = "SELECT mountname,mountid,mountcategory,mountdkcost FROM " . db_prefix("mounts") . " WHERE mountactive=1 AND mountlocation IN ('all','{$session['user']['location']}') ORDER BY mountcategory,mountcostgems,mountcostgold";
|
||
|
$result = db_query($sql);
|
||
|
$category="";
|
||
|
$number=db_num_rows($result);
|
||
|
for ($i=0;$i<$number;$i++){
|
||
|
$row = db_fetch_assoc($result);
|
||
|
if ($category!=$row['mountcategory']){
|
||
|
addnav(array("%s", $row['mountcategory']));
|
||
|
$category = $row['mountcategory'];
|
||
|
}
|
||
|
if ($row['mountdkcost'] <= $session['user']['dragonkills'])
|
||
|
addnav(array("Examine %s`0", $row['mountname']),"stables.php?op=examine&id={$row['mountid']}");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
page_footer();
|
||
|
?>
|