//tags that must appear in the header
$templatetags = array("title", "headscript", "script");
while (list($key, $val) = each($templatetags)) {
    if (strpos($template['header'], "{" . $val . "}") === false) {
        $templatemessage .= "You do not have {" . $val . "} defined in your header\n";
    }
}
//tags that must appear in the footer
$templatetags = array();
while (list($key, $val) = each($templatetags)) {
    if (strpos($template['footer'], "{" . $val . "}") === false) {
        $templatemessage .= "You do not have {" . $val . "} defined in your footer\n";
    }
}
//tags that may appear anywhere but must appear
$templatetags = array("nav", "stats", "petition", "motd", "mail", "copyright", "source");
while (list($key, $val) = each($templatetags)) {
    if (strpos($template['header'], "{" . $val . "}") === false && strpos($template['footer'], "{" . $val . "}") === false) {
        $templatemessage .= "You do not have {" . $val . "} defined in either your header or footer\n";
    }
}
if ($templatemessage != "") {
    echo "<b>You have one or more errors in your template page!</b><br>" . nl2br($templatemessage);
    $template = loadtemplate("yarbrough.htm");
}
$races = array(1 => "Troll", 2 => "Elf", 3 => "Human", 4 => "Dwarf", 0 => "Unknown", 50 => "Hoversheep");
$logd_version = "TDS-0.01";
$session['user']['laston'] = date("Y-m-d H:i:s");
$playermount = getmount($session['user']['hashorse']);
$titles = array(0 => array("Farmboy", "Farmgirl"), 1 => array("Page", "Page"), 2 => array("Squire", "Squire"), 3 => array("Gladiator", "Gladiatrix"), 4 => array("Legionnaire", "Legioness"), 5 => array("Centurion", "Centurioness"), 6 => array("Sir", "Madam"), 7 => array("Reeve", "Reeve"), 8 => array("Steward", "Stewardess"), 9 => array("Mayor", "Mayoress"), 10 => array("Baron", "Baroness"), 11 => array("Count", "Countess"), 12 => array("Viscount", "Viscountess"), 13 => array("Marquis", "Marquisette"), 14 => array("Chancellor", "Chancelress"), 15 => array("Prince", "Princess"), 16 => array("King", "Queen"), 17 => array("Emperor", "Empress"), 18 => array("Angel", "Angel"), 19 => array("Archangel", "Archangel"), 20 => array("Principality", "Principality"), 21 => array("Power", "Power"), 22 => array("Virtue", "Virtue"), 23 => array("Dominion", "Dominion"), 24 => array("Throne", "Throne"), 25 => array("Cherub", "Cherub"), 26 => array("Seraph", "Seraph"), 27 => array("Demigod", "Demigoddess"), 28 => array("Titan", "Titaness"), 29 => array("Archtitan", "Archtitaness"), 30 => array("Undergod", "Undergoddess"));
$beta = getsetting("beta", 0) == 1 || $session['user']['beta'] == 1;
            output("`7Merick looks at you sorta sideways.  \"`&'Ere, whadday ya think yeer doin'?  Cannae ye see that {$mount['mountname']} costs `^{$mount['mountcostgold']}`& gold an' `%{$mount['mountcostgems']}`& gems?`7\"");
        } else {
            if ($session['user']['hashorse'] > 0) {
                output("`7You hand over the reins to your {$playermount['mountname']} and the purchase price of your new critter, and Merick leads out a fine new `&{$mount['mountname']}`7 for you!`n`n");
            } else {
                output("`7You hand over the purchase price of your new critter, and Merick leads out a fine `&{$mount['mountname']}`7 for you!`n`n");
            }
            $session['user']['hashorse'] = $mount['mountid'];
            $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 for a new mount");
            $session['bufflist']['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);
        }
    }
} elseif ($_GET['op'] == 'sellmount') {
    $session['user']['gold'] += $repaygold;
    $session['user']['gems'] += $repaygems;
    debuglog("gained {$repaygold} gold and {$repaygems} gems selling their mount");
    unset($session['bufflist']['mount']);
    $session['user']['hashorse'] = 0;
    output("`7As sad as it is to do so, you give up your precious {$playermount['mountname']}, and a lone tear escapes your eye.`n`n");
    output("However, the moment you spot the " . ($repaygold > 0 ? "`^{$repaygold}`7 gold " . ($repaygems > 0 ? " and " : "") : "") . ($repaygems > 0 ? "`%{$repaygems}`7 gems" : "") . ", you find that you're feeling quite a bit better.");
}
if ($session['user']['hashorse'] > 0) {
    output("`n`nMerick offers you `^{$repaygold}`& gold and `%{$repaygems}`& gems for your {$playermount['mountname']}.");
function mountupgrade_dohook($hookname, $args)
{
    global $session;
    if (is_module_active("prizemount")) {
        $prizemount = get_module_setting("mountid", "prizemount");
        if ($prizemount) {
            $prizemounts = array($prizemount => 1);
            while ($prizemount) {
                $prizemount = get_module_objpref("mounts", $prizemount, "upgradeto", "mountupgrade");
                if ($prizemount) {
                    $prizemounts[$prizemount] = 1;
                }
            }
        }
    }
    $upgradeto = get_module_objpref("mounts", $session['user']['hashorse'], "upgradeto");
    if (get_module_objpref("mounts", $session['user']['hashorse'], "lose")) {
        $upgradeto = -1;
    }
    $upgradetext = get_module_objpref("mounts", $session['user']['hashorse'], "upgradetext");
    $reqdks = get_module_objpref("mounts", $session['user']['hashorse'], "reqdks");
    $reqlevels = get_module_objpref("mounts", $session['user']['hashorse'], "reqlevels");
    $reqdays = get_module_objpref("mounts", $session['user']['hashorse'], "reqdays");
    $reqffs = get_module_objpref("mounts", $session['user']['hashorse'], "reqffs");
    $upgrade = get_module_pref("upgrade");
    $metdks = get_module_pref("metdks");
    $metlevels = get_module_pref("metlevels");
    $metdays = get_module_pref("metdays");
    $metffs = get_module_pref("metffs");
    switch ($hookname) {
        case "pre-newday":
            if ($upgradeto && $metdks >= $reqdks && $metlevels >= $reqlevels && $metdays >= $reqdays && $metffs >= $reqdks) {
                set_module_pref("upgrade", 1);
                set_module_pref("upgradetext", $upgradetext);
                set_module_pref("metdks", 0);
                set_module_pref("metlevels", 0);
                set_module_pref("metdays", 0);
                set_module_pref("metffs", 0);
                global $playermount;
                $debugmount1 = $playermount['mountname'];
                if ($upgradeto == -1) {
                    strip_buff("mount");
                    $session['user']['hashorse'] = 0;
                    debuglog("upgraded their {$debugmount1} to nothing.");
                } else {
                    $session['user']['hashorse'] = $upgradeto;
                    $playermount = getmount($session['user']['hashorse']);
                    $debugmount2 = $playermount['mountname'];
                    debuglog("upgraded their {$debugmount1} to {$debugmount2}.");
                }
            }
            break;
        case "newday":
            if ($upgrade) {
                output("`n`^%s`0`n", stripslashes(translate_inline(get_module_pref("upgradetext"))));
                $mount = getmount($session['user']['hashorse']);
                apply_buff("mount", unserialize($mount['mountbuff']));
                set_module_pref("upgrade", 0);
            }
            if ($upgradeto && $reqdays) {
                set_module_pref("metdays", $metdays + 1);
            }
            break;
        case "dragonkill":
            if ($upgradeto) {
                if ($reqdks) {
                    set_module_pref("metdks", $metdks + 1);
                }
                if ($reqlevels) {
                    set_module_pref("metlevels", $metlevels + 1);
                }
            }
            break;
        case "battle-victory":
            static $runonce = false;
            if ($runonce !== false) {
                break;
            }
            $runonce = true;
            if ($upgradeto) {
                global $options;
                if ($reqffs && ($options['type'] == "forest" || $options['type'] == "travel")) {
                    set_module_pref("metffs", $metffs + 1);
                }
                if ($reqlevels && $options['type'] == "train") {
                    set_module_pref("metlevels", $metlevels + 1);
                }
            }
            break;
        case "battle-defeat":
            static $runonce = false;
            if ($runonce !== false) {
                break;
            }
            $runonce = true;
            global $options;
            if ($upgradeto && $reqffs && ($options['type'] == "forest" || $options['type'] == "travel")) {
                set_module_pref("metffs", $metffs + 1);
            }
            break;
        case "showformextensions":
            $args['mount'] = "mountupgrade_showform";
            break;
        case "boughtmount":
        case "soldmount":
            set_module_pref("upgrade", 0);
            set_module_pref("upgradetext", "");
            set_module_pref("metdks", 0);
            set_module_pref("metlevels", 0);
            set_module_pref("metdays", 0);
            set_module_pref("metffs", 0);
            break;
        case "gainprizemount":
            $oldmount = get_module_pref("prizemount");
            $prizemount = get_module_pref("mountid", "prizemount");
            if ($prizemount != $oldmount) {
                while ($prizemount) {
                    $prizemount = get_module_objpref("mounts", $prizemount, "upgradeto", "mountupgrade");
                    if ($prizemount == $oldmount) {
                        $args['prizemount'] = $prizemount;
                        break;
                    }
                }
            }
            if ($upgradeto) {
                set_module_pref("savedks", $metdks);
                set_module_pref("savelevels", $metlevels);
                set_module_pref("savedays", $metdays);
                set_module_pref("saveffs", $metffs);
            }
            break;
        case "loseprizemount":
            set_module_pref("metdks", get_module_pref("savedks"));
            set_module_pref("metlevels", get_module_pref("savelevels"));
            set_module_pref("metdays", get_module_pref("savedays"));
            set_module_pref("metffs", get_module_pref("saveffs"));
            if ($upgradeto) {
                set_module_pref("prizemount", $session['user']['hashorse']);
                set_module_pref("savedks", $metdks);
                set_module_pref("savelevels", $metlevels);
                set_module_pref("savedays", $metdays);
                set_module_pref("saveffs", $metffs);
            }
            break;
    }
    return $args;
}