inn(),
'buy' => buy(),
'buy2' => buy2($do[1]),
'buy3' => buy3($do[1]),
// 'sell' => sell(),
'maps' => maps(),
'maps2' => maps2($do[1]),
'maps3' => maps3($do[1]),
'gotown' => travelto($do[1]),
'move' => move(),
'fight' => fight(),
'victory' => victory(),
'drop' => drop(),
'dead' => dead(),
'verify' => header("Location: users.php?do=verify"),
'spell' => healspells($do[1]),
'showchar' => showchar(),
'onlinechar' => onlinechar($do[1]),
'showmap' => showmap(),
'babblebox' => babblebox(),
'ninja' => ninja(),
default => donothing()
};
function donothing()
{
global $userrow;
if ($userrow["currentaction"] == "In Town") {
$page = dotown();
$title = "In Town";
} elseif ($userrow["currentaction"] == "Exploring") {
$page = doexplore();
$title = "Exploring";
} elseif ($userrow["currentaction"] == "Fighting") {
$page = dofight();
$title = "Fighting";
}
display($page, $title);
}
/**
* Spit out the main town page.
*/
function dotown()
{
global $userrow, $controlrow;
$townquery = db()->query('SELECT * FROM towns WHERE latitude = ? AND longitude = ? LIMIT 1;', [$userrow["latitude"], $userrow["longitude"]]);
if ($townquery === false) display("There is an error with your user account, or with the town data. Please try again.", "Error");
$townrow = $townquery->fetchArray(SQLITE3_ASSOC);
if ($townrow === false) display("There is an error with your user account, or with the town data. Please try again.","Error");
// News box. Grab latest news entry and display it. Something a little more graceful coming soon maybe.
if ($controlrow["shownews"] == 1) {
$newsrow = db()->query('SELECT * FROM news ORDER BY id DESC LIMIT 1;')->fetchArray(SQLITE3_ASSOC);
$townrow["news"] = "
Latest News |
\n";
$townrow["news"] .= "[".prettydate($newsrow["postdate"])."] ".nl2br($newsrow["content"]);
$townrow["news"] .= " |
\n";
} else {
$townrow["news"] = "";
}
// Who's Online. Currently just members. Guests maybe later.
if ($controlrow["showonline"] == 1) {
$onlinequery = db()->query("SELECT * FROM news WHERE strftime('%s', onlinetime) >= strftime('%s', 'now') - 600 ORDER BY charname");
$online_count = 0;
$online_rows = [];
foreach ($onlinequery->fetchArray(SQLITE3_ASSOC) as $onlinerow) {
$online_count++;
$online_rows[] = "".$onlinerow["charname"]."" . ", ";
}
$townrow["whosonline"] = "Who's Online |
\n";
$townrow["whosonline"] .= "There are $online_count user(s) online within the last 10 minutes: ";
$townrow["whosonline"] .= rtrim(implode(', ', $online_rows), ', ');
$townrow["whosonline"] .= " |
\n";
} else {
$townrow["whosonline"] = "";
}
if ($controlrow["showbabble"] == 1) {
$townrow["babblebox"] = "Babble Box |
\n";
$townrow["babblebox"] .= "";
$townrow["babblebox"] .= " |
\n";
} else {
$townrow["babblebox"] = "";
}
$page = gettemplate("towns");
$page = parsetemplate($page, $townrow);
return $page;
}
/**
* Just spit out a blank exploring page. Exploring without a GET string is normally when they first log in, or when
* they've just finished fighting.
*/
function doexplore()
{
return <<
|
You are exploring the map, and nothing has happened. Continue exploring using the direction buttons or the Travel To menus.
|
HTML;
}
/**
* Redirect to fighting.
*/
function dofight()
{
header("Location: index.php?do=fight");
}
function showchar()
{
global $userrow, $controlrow;
// Format various userrow stuffs.
$userrow["experience"] = number_format($userrow["experience"]);
$userrow["gold"] = number_format($userrow["gold"]);
if ($userrow["expbonus"] > 0) {
$userrow["plusexp"] = "(+".$userrow["expbonus"]."%)";
} elseif ($userrow["expbonus"] < 0) {
$userrow["plusexp"] = "(".$userrow["expbonus"]."%)";
} else { $userrow["plusexp"] = ""; }
if ($userrow["goldbonus"] > 0) {
$userrow["plusgold"] = "(+".$userrow["goldbonus"]."%)";
} elseif ($userrow["goldbonus"] < 0) {
$userrow["plusgold"] = "(".$userrow["goldbonus"]."%)";
} else { $userrow["plusgold"] = ""; }
$levelquery = doquery("SELECT ". $userrow["charclass"]."_exp FROM {{table}} WHERE id='".($userrow["level"]+1)."' LIMIT 1", "levels");
$levelrow = mysql_fetch_array($levelquery);
if ($userrow["level"] < 99) { $userrow["nextlevel"] = number_format($levelrow[$userrow["charclass"]."_exp"]); } else { $userrow["nextlevel"] = "None"; }
if ($userrow["charclass"] == 1) { $userrow["charclass"] = $controlrow["class1name"]; }
elseif ($userrow["charclass"] == 2) { $userrow["charclass"] = $controlrow["class2name"]; }
elseif ($userrow["charclass"] == 3) { $userrow["charclass"] = $controlrow["class3name"]; }
if ($userrow["difficulty"] == 1) { $userrow["difficulty"] = $controlrow["diff1name"]; }
elseif ($userrow["difficulty"] == 2) { $userrow["difficulty"] = $controlrow["diff2name"]; }
elseif ($userrow["difficulty"] == 3) { $userrow["difficulty"] = $controlrow["diff3name"]; }
$spellquery = doquery("SELECT id,name FROM {{table}}","spells");
$userspells = explode(",",$userrow["spells"]);
$userrow["magiclist"] = "";
while ($spellrow = mysql_fetch_array($spellquery)) {
$spell = false;
foreach($userspells as $a => $b) {
if ($b == $spellrow["id"]) { $spell = true; }
}
if ($spell == true) {
$userrow["magiclist"] .= $spellrow["name"]."
";
}
}
if ($userrow["magiclist"] == "") { $userrow["magiclist"] = "None"; }
// Make page tags for XHTML validation.
$xml = "\n"
. "\n"
. "\n";
$charsheet = gettemplate("showchar");
$page = $xml . gettemplate("minimal");
$array = array("content"=>parsetemplate($charsheet, $userrow), "title"=>"Character Information");
echo parsetemplate($page, $array);
die();
}
function onlinechar($id) {
global $controlrow;
$userquery = doquery("SELECT * FROM {{table}} WHERE id='$id' LIMIT 1", "users");
if (mysql_num_rows($userquery) == 1) { $userrow = mysql_fetch_array($userquery); } else { display("No such user.", "Error"); }
// Format various userrow stuffs.
$userrow["experience"] = number_format($userrow["experience"]);
$userrow["gold"] = number_format($userrow["gold"]);
if ($userrow["expbonus"] > 0) {
$userrow["plusexp"] = "(+".$userrow["expbonus"]."%)";
} elseif ($userrow["expbonus"] < 0) {
$userrow["plusexp"] = "(".$userrow["expbonus"]."%)";
} else { $userrow["plusexp"] = ""; }
if ($userrow["goldbonus"] > 0) {
$userrow["plusgold"] = "(+".$userrow["goldbonus"]."%)";
} elseif ($userrow["goldbonus"] < 0) {
$userrow["plusgold"] = "(".$userrow["goldbonus"]."%)";
} else { $userrow["plusgold"] = ""; }
$levelquery = doquery("SELECT ". $userrow["charclass"]."_exp FROM {{table}} WHERE id='".($userrow["level"]+1)."' LIMIT 1", "levels");
$levelrow = mysql_fetch_array($levelquery);
$userrow["nextlevel"] = number_format($levelrow[$userrow["charclass"]."_exp"]);
if ($userrow["charclass"] == 1) { $userrow["charclass"] = $controlrow["class1name"]; }
elseif ($userrow["charclass"] == 2) { $userrow["charclass"] = $controlrow["class2name"]; }
elseif ($userrow["charclass"] == 3) { $userrow["charclass"] = $controlrow["class3name"]; }
if ($userrow["difficulty"] == 1) { $userrow["difficulty"] = $controlrow["diff1name"]; }
elseif ($userrow["difficulty"] == 2) { $userrow["difficulty"] = $controlrow["diff2name"]; }
elseif ($userrow["difficulty"] == 3) { $userrow["difficulty"] = $controlrow["diff3name"]; }
$charsheet = gettemplate("onlinechar");
$page = parsetemplate($charsheet, $userrow);
display($page, "Character Information");
}
function showmap() {
global $userrow;
// Make page tags for XHTML validation.
$xml = "\n"
. "\n"
. "\n";
$page = $xml . gettemplate("minimal");
$array = array("content"=>"", "title"=>"Map");
echo parsetemplate($page, $array);
die();
}
function babblebox() {
global $userrow;
if (isset($_POST["babble"])) {
$safecontent = makesafe($_POST["babble"]);
if ($safecontent == "" || $safecontent == " ") { //blank post. do nothing.
} else { $insert = doquery("INSERT INTO {{table}} SET id='',posttime=NOW(),author='".$userrow["charname"]."',babble='$safecontent'", "babble"); }
header("Location: index.php?do=babblebox");
die();
}
$babblebox = array("content"=>"");
$bg = 1;
$babblequery = doquery("SELECT * FROM {{table}} ORDER BY id DESC LIMIT 20", "babble");
while ($babblerow = mysql_fetch_array($babblequery)) {
if ($bg == 1) { $new = "[".$babblerow["author"]."] ".$babblerow["babble"]."
\n"; $bg = 2; }
else { $new = "[".$babblerow["author"]."] ".stripslashes($babblerow["babble"])."
\n"; $bg = 1; }
$babblebox["content"] = $new . $babblebox["content"];
}
$babblebox["content"] .= "";
// Make page tags for XHTML validation.
$xml = "\n"
. "\n"
. "\n";
$page = $xml . gettemplate("babblebox");
echo parsetemplate($page, $babblebox);
die();
}
/**
* NINJA! 🥷
*/
function ninja(): void
{
exit('NINJA! 🥷');
}