LotGDocker/lotgd-web/lotgd/stables.php
2020-08-17 19:16:42 -04:00

300 lines
12 KiB
PHP
Executable File

<?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();
?>