Dragon-Scourge/story.php
Jamin Blount 6a170645e9 Beta 5 Build 20
9.2.2007 - Build 20 (Consolation Prize Part Deux):
- Fixed incorrect story values in install.sql.
- Some changes to the version/copyright/moddedby display.
2017-02-05 12:02:56 -06:00

235 lines
9.9 KiB
PHP

<?php // story.php :: Storyline handling.
// Dragon Scourge
//
// Program authors: Jamin Blount
// Copyright (C) 2007 by renderse7en
// Script Version 1.0 Beta 5 Build 20
// You may not distribute this program in any manner, modified or
// otherwise, without the express, written consent from
// renderse7en.
//
// You may make modifications, but only for your own use and
// within the confines of the Dragon Scourge License Agreement
// (see our website for that).
include("lib.php");
include("globals.php");
$story = dorow(doquery("SELECT * FROM <<story>> WHERE id='".$userrow["story"]."' LIMIT 1"));
// Decide which type of story to run.
if ($story["targetmonster"] != "0") { storymonster(); }
if ($story["targetitem"] != "") { storyitem(); }
storyteleport();
function storyteleport() { // Sends to a new location, or just displays a chunk of the story with no associated action.
global $userrow, $story;
if (isset($_POST["submit"])) {
if ($story["nextstory"] != "0") {
$nextstory = dorow(doquery("SELECT * FROM <<story>> WHERE id='".$story["nextstory"]."' LIMIT 1"));
$userrow["story"] = $nextstory["id"];
$userrow["storylat"] = $nextstory["latitude"];
$userrow["storylon"] = $nextstory["longitude"];
}
if ($story["targetworld"] != "0") {
$userrow["world"] = $story["targetworld"];
$userrow["latitude"] = $story["targetlat"];
$userrow["longitude"] = $story["targetlon"];
// Get first town from new world.
$newtown = dorow(doquery("SELECT * FROM <<towns>> WHERE world='".$userrow["world"]."' ORDER BY id LIMIT 1"));
$towns = explode(",",$userrow["townslist"]);
$towns[] = $newtown["id"];
$userrow["townslist"] = implode(",",$towns);
}
if ($story["targetaction"] != "") {
$userrow["currentaction"] = $story["targetaction"];
}
if ($story["rewardname"] != "") {
$userrow[$story["rewardname"]] += $story["rewardattr"];
}
updateuserrow();
die(header("Location: index.php"));
}
$story["reward"] = "";
if ($story["rewardname"] != "") {
$premodrow = dorow(doquery("SELECT * FROM <<itemmodnames>> ORDER BY id"));
foreach($premodrow as $a=>$b) {
$modrow[$b["fieldname"]] = $b;
}
$story["reward"] .= "<hr />You've gained a permanent reward from this quest:<br />";
$story["reward"] .= $modrow[$story["rewardname"]]["prettyname"] . ": +" . $story["rewardattr"];
if ($modrow[$story["rewardname"]]["percent"] == 1) { $story["reward"] .= "%"; }
$story["reward"] .= "<br />This reward will be applied when you continue on your adventure.";
}
$story["story"] = nl2br($story["story"]);
display($story["title"], parsetemplate(gettemplate("story_teleport"), $story));
}
function storymonster() {
global $userrow, $story;
if (isset($_POST["submit"])) {
$monster = dorow(doquery("SELECT * FROM <<monsters>> WHERE id='".$story["targetmonster"]."' LIMIT 1"));
$querystring = "currentmonsterid='".$monster["id"]."', currentmonsterhp='".(ceil(rand($monster["maxhp"] * .75, $monster["maxhp"]) * $userrow["difficulty"]))."', currentaction='Fighting'";
$update = doquery("UPDATE <<users>> SET $querystring WHERE id='".$userrow["id"]."' LIMIT 1");
die(header("Location: fight.php"));
}
$story["story"] = nl2br($story["story"]);
display($story["title"], parsetemplate(gettemplate("story_monster"), $story));
}
function storyitem() {
global $userrow, $story;
$modrow = dorow(doquery("SELECT * FROM <<itemmodnames>> ORDER BY id"), "fieldname");
$thenewitem = explode(",",$story["targetitem"]);
$newitem = dorow(doquery("SELECT * FROM <<itembase>> WHERE id='".$thenewitem[1]."' LIMIT 1"));
$newprefix = dorow(doquery("SELECT * FROM <<itemprefixes>> WHERE id='".$thenewitem[0]."' LIMIT 1"));
$newsuffix = dorow(doquery("SELECT * FROM <<itemsuffixes>> WHERE id='".$thenewitem[2]."' LIMIT 1"));
$newfullitem = builditem($newprefix, $newitem, $newsuffix, $modrow);
$story["itemtable"] = parsetemplate(gettemplate("explore_drop_itemrow"), $newfullitem);
if ($userrow["item".$newitem["slotnumber"]."idstring"] != "0") {
$theolditem = explode(",",$userrow["item".$newitem["slotnumber"]."idstring"]);
$olditem = dorow(doquery("SELECT * FROM <<itembase>> WHERE id='".$theolditem[1]."' LIMIT 1"));
$oldprefix = dorow(doquery("SELECT * FROM <<itemprefixes>> WHERE id='".$theolditem[0]."' LIMIT 1"));
$oldsuffix = dorow(doquery("SELECT * FROM <<itemsuffixes>> WHERE id='".$theolditem[2]."' LIMIT 1"));
$oldfullitem = builditem($oldprefix, $olditem, $oldsuffix, $modrow);
$story["olditems"] = parsetemplate(gettemplate("town_buy_olditemrow"), $oldfullitem);
} else {
$oldfullitem = false; $oldprefix = false; $oldsuffix = false;
$story["olditems"] = "You don't have any item in this slot.";
}
if (isset($_POST["takeitem"])) {
// Requirements check.
if ($newfullitem["requirements"] == false) { err("You do not meet one or more of the requirements for this item. Please <a href=\"index.php\">go back</a> and try again."); }
// Now do stuff to userrow (new item only).
$userrow["item" . $newfullitem["slotnumber"] . "idstring"] = $newfullitem["fullid"];
$userrow["item" . $newfullitem["slotnumber"] . "name"] = $newfullitem["name"];
$userrow[$newfullitem["basename"]] += $newfullitem["baseattr"];
for($j=1; $j<7; $j++) {
if ($newfullitem["mod".$j."name"] != "") {
$userrow[$newfullitem["mod".$j."name"]] += $newfullitem["mod".$j."attr"];
}
}
if ($newprefix != false) {
$userrow[$newprefix["basename"]] += $newprefix["baseattr"];
}
if ($newsuffix != false) {
$userrow[$newsuffix["basename"]] += $newsuffix["baseattr"];
}
// Do more stuff to userrow (old item only).
if ($oldfullitem != false) {
$userrow[$oldfullitem["basename"]] -= $oldfullitem["baseattr"];
for($j=1; $j<7; $j++) {
if ($oldfullitem["mod".$j."name"] != "") {
$userrow[$oldfullitem["mod".$j."name"]] -= $oldfullitem["mod".$j."attr"];
}
}
if ($oldprefix != false) {
$userrow[$oldprefix["basename"]] -= $oldprefix["baseattr"];
}
if ($oldsuffix != false) {
$userrow[$oldsuffix["basename"]] -= $oldsuffix["baseattr"];
}
}
if ($story["nextstory"] != "0") {
$nextstory = dorow(doquery("SELECT * FROM <<story>> WHERE id='".$story["nextstory"]."' LIMIT 1"));
$userrow["story"] = $nextstory["id"];
$userrow["storylat"] = $nextstory["latitude"];
$userrow["storylon"] = $nextstory["longitude"];
}
if ($story["targetworld"] != "0") {
$userrow["world"] = $story["targetworld"];
$userrow["latitude"] = $story["targetlat"];
$userrow["longitude"] = $story["targetlon"];
// Get first town from new world.
$newtown = dorow(doquery("SELECT * FROM <<towns>> WHERE world='".$userrow["world"]."' ORDER BY id LIMIT 1"));
$towns = explode(",",$userrow["townslist"]);
$towns[] = $newtown["id"];
$userrow["townslist"] = implode(",",$towns);
}
if ($story["targetaction"] != "") {
$userrow["currentaction"] = $story["targetaction"];
}
if ($story["rewardname"] != "") {
$userrow[$story["rewardname"]] += $story["rewardattr"];
}
updateuserrow();
die(header("Location: index.php"));
}
if (isset($_POST["noitem"])) {
if ($story["nextstory"] != "0") {
$nextstory = dorow(doquery("SELECT * FROM <<story>> WHERE id='".$story["nextstory"]."' LIMIT 1"));
$userrow["story"] = $nextstory["id"];
$userrow["storylat"] = $nextstory["latitude"];
$userrow["storylon"] = $nextstory["longitude"];
}
if ($story["targetworld"] != "0") {
$userrow["world"] = $story["targetworld"];
$userrow["latitude"] = $story["targetlat"];
$userrow["longitude"] = $story["targetlon"];
// Get first town from new world.
$newtown = dorow(doquery("SELECT * FROM <<towns>> WHERE world='".$userrow["world"]."' ORDER BY id LIMIT 1"));
$towns = explode(",",$userrow["townslist"]);
$towns[] = $newtown["id"];
$userrow["townslist"] = implode(",",$towns);
}
if ($story["targetaction"] != "") {
$userrow["currentaction"] = $story["targetaction"];
}
if ($story["rewardname"] != "") {
$userrow[$story["rewardname"]] += $story["rewardattr"];
}
updateuserrow();
die(header("Location: index.php"));
}
$story["reward"] = "";
if ($story["rewardname"] != "") {
$premodrow = dorow(doquery("SELECT * FROM <<itemmodnames>> ORDER BY id"));
foreach($premodrow as $a=>$b) {
$modrow[$b["fieldname"]] = $b;
}
$story["reward"] .= "<hr />You've gained a permanent reward from this quest:<br />";
$story["reward"] .= $modrow[$story["rewardname"]]["prettyname"] . ": +" . $story["rewardattr"];
if ($modrow[$story["rewardname"]]["percent"] == 1) { $story["reward"] .= "%"; }
$story["reward"] .= "<br />This reward will be applied when you continue on your adventure.";
}
$story["story"] = nl2br($story["story"]);
display($story["title"], parsetemplate(gettemplate("story_item"), $story));
}
?>