303 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			303 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
<?php
 | 
						|
// translator ready
 | 
						|
// addnews ready
 | 
						|
// mail ready
 | 
						|
require_once("common.php");
 | 
						|
require_once("lib/commentary.php");
 | 
						|
require_once("lib/http.php");
 | 
						|
require_once("lib/events.php");
 | 
						|
require_once("lib/experience.php");
 | 
						|
 | 
						|
tlschema('village');
 | 
						|
//mass_module_prepare(array("village","validlocation","villagetext","village-desc"));
 | 
						|
// See if the user is in a valid location and if not, put them back to
 | 
						|
// a place which is valid
 | 
						|
$valid_loc = array();
 | 
						|
$vname = getsetting("villagename", LOCATION_FIELDS);
 | 
						|
$iname = getsetting("innname", LOCATION_INN);
 | 
						|
$valid_loc[$vname]="village";
 | 
						|
$valid_loc = modulehook("validlocation", $valid_loc);
 | 
						|
if (!isset($valid_loc[$session['user']['location']])) {
 | 
						|
	$session['user']['location']=$vname;
 | 
						|
}
 | 
						|
 | 
						|
$newestname = "";
 | 
						|
$newestplayer = getsetting("newestplayer", "");
 | 
						|
if ($newestplayer == $session['user']['acctid']) {
 | 
						|
	$newtext = "`nYou're the newest member of the village.  As such, you wander around, gaping at the sights, and generally looking lost.";
 | 
						|
	$newestname = $session['user']['name'];
 | 
						|
} else {
 | 
						|
	$newtext = "`n`2Wandering near the inn is `&%s`2, looking completely lost.";
 | 
						|
	if ((int)$newestplayer != 0) {
 | 
						|
		$sql = "SELECT name FROM " . db_prefix("accounts") . " WHERE acctid='$newestplayer'";
 | 
						|
		$result = db_query_cached($sql, "newest");
 | 
						|
		if (db_num_rows($result) == 1) {
 | 
						|
			$row = db_fetch_assoc($result);
 | 
						|
			$newestname = $row['name'];
 | 
						|
		} else {
 | 
						|
			$newestplayer = "";
 | 
						|
		}
 | 
						|
	} else {
 | 
						|
		if ($newestplayer > "") {
 | 
						|
			$newestname = $newestplayer;
 | 
						|
		} else {
 | 
						|
			$newestname = "";
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
$basetext = array(
 | 
						|
	"`@`c`b%s Square`b`cThe village of %s hustles and bustles.  No one really notices that you're standing there.  ".
 | 
						|
	"You see various shops and businesses along main street.  There is a curious looking rock to one side.  ".
 | 
						|
	"On every side the village is surrounded by deep dark forest.`n`n",$vname,$vname
 | 
						|
	);
 | 
						|
$origtexts = array(
 | 
						|
	"text"=>$basetext,
 | 
						|
	"clock"=>"The clock on the inn reads `^%s`@.`n",
 | 
						|
	"title"=>array("%s Square", $vname),
 | 
						|
	"talk"=>"`n`%`@Nearby some villagers talk:`n",
 | 
						|
	"sayline"=>"says",
 | 
						|
	"newest"=>$newtext,
 | 
						|
	"newestplayer"=>$newestname,
 | 
						|
	"newestid"=>$newestplayer,
 | 
						|
	"gatenav"=>"City Gates",
 | 
						|
	"fightnav"=>"Blades Boulevard",
 | 
						|
	"marketnav"=>"Market Street",
 | 
						|
	"tavernnav"=>"Tavern Street",
 | 
						|
	"infonav"=>"Info",
 | 
						|
	"othernav"=>"Other",
 | 
						|
	"section"=>"village",
 | 
						|
	"innname"=>$iname,
 | 
						|
	"stablename"=>"Merick's Stables",
 | 
						|
	"mercenarycamp"=>"Mercenary Camp",
 | 
						|
	"armorshop"=>"Pegasus Armor",
 | 
						|
	"weaponshop"=>"MightyE's Weaponry"
 | 
						|
	);
 | 
						|
$schemas = array(
 | 
						|
	"text"=>"village",
 | 
						|
	"clock"=>"village",
 | 
						|
	"title"=>"village",
 | 
						|
	"talk"=>"village",
 | 
						|
	"sayline"=>"village",
 | 
						|
	"newest"=>"village",
 | 
						|
	"newestplayer"=>"village",
 | 
						|
	"newestid"=>"village",
 | 
						|
	"gatenav"=>"village",
 | 
						|
	"fightnav"=>"village",
 | 
						|
	"marketnav"=>"village",
 | 
						|
	"tavernnav"=>"village",
 | 
						|
	"infonav"=>"village",
 | 
						|
	"othernav"=>"village",
 | 
						|
	"section"=>"village",
 | 
						|
	"innname"=>"village",
 | 
						|
	"stablename"=>"village",
 | 
						|
	"mercenarycamp"=>"village",
 | 
						|
	"armorshop"=>"village",
 | 
						|
	"weaponshop"=>"village"
 | 
						|
	);
 | 
						|
// Now store the schemas
 | 
						|
$origtexts['schemas'] = $schemas;
 | 
						|
 | 
						|
// don't hook on to this text for your standard modules please, use "village"
 | 
						|
// instead.
 | 
						|
// This hook is specifically to allow modules that do other villages to create
 | 
						|
// ambience.
 | 
						|
$texts = modulehook("villagetext",$origtexts);
 | 
						|
//and now a special hook for the village
 | 
						|
$texts = modulehook("villagetext-{$session['user']['location']}",$texts);
 | 
						|
$schemas = $texts['schemas'];
 | 
						|
 | 
						|
tlschema($schemas['title']);
 | 
						|
page_header($texts['title']);
 | 
						|
tlschema();
 | 
						|
 | 
						|
addcommentary();
 | 
						|
$skipvillagedesc = handle_event("village");
 | 
						|
checkday();
 | 
						|
 | 
						|
if ($session['user']['slaydragon'] == 1) {
 | 
						|
	$session['user']['slaydragon'] = 0;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
if ($session['user']['alive']){ }else{
 | 
						|
	redirect("shades.php");
 | 
						|
}
 | 
						|
 | 
						|
if (getsetting("automaster",1) && $session['user']['seenmaster']!=1){
 | 
						|
	//masters hunt down truant students
 | 
						|
	$level = $session['user']['level']+1;
 | 
						|
	$dks = $session['user']['dragonkills'];
 | 
						|
	$expreqd = exp_for_next_level($level, $dks);
 | 
						|
	if ($session['user']['experience']>$expreqd &&
 | 
						|
			$session['user']['level']<15){
 | 
						|
		redirect("train.php?op=autochallenge");
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
$op = httpget('op');
 | 
						|
$com = httpget('comscroll');
 | 
						|
$refresh = httpget("refresh");
 | 
						|
$commenting = httpget("commenting");
 | 
						|
$comment = httppost('insertcommentary');
 | 
						|
// Don't give people a chance at a special event if they are just browsing
 | 
						|
// the commentary (or talking) or dealing with any of the hooks in the village.
 | 
						|
if (!$op && $com=="" && !$comment && !$refresh && !$commenting) {
 | 
						|
	// The '1' should really be sysadmin customizable.
 | 
						|
	if (module_events("village", getsetting("villagechance", 0)) != 0) {
 | 
						|
		if (checknavs()) {
 | 
						|
			page_footer();
 | 
						|
		} else {
 | 
						|
			// Reset the special for good.
 | 
						|
			$session['user']['specialinc'] = "";
 | 
						|
			$session['user']['specialmisc'] = "";
 | 
						|
			$skipvillagedesc=true;
 | 
						|
			$op = "";
 | 
						|
			httpset("op", "");
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
tlschema($schemas['gatenav']);
 | 
						|
addnav($texts['gatenav']);
 | 
						|
tlschema();
 | 
						|
 | 
						|
addnav("F?Forest","forest.php");
 | 
						|
if (getsetting("pvp",1)){
 | 
						|
	addnav("S?Slay Other Players","pvp.php");
 | 
						|
}
 | 
						|
addnav("Q?`%Quit`0 to the fields","login.php?op=logout",true);
 | 
						|
if (getsetting("enablecompanions",true)) {
 | 
						|
	tlschema($schemas['mercenarycamp']);
 | 
						|
	addnav($texts['mercenarycamp'], "mercenarycamp.php");
 | 
						|
	tlschema();
 | 
						|
}
 | 
						|
 | 
						|
tlschema($schemas['fightnav']);
 | 
						|
addnav($texts['fightnav']);
 | 
						|
tlschema();
 | 
						|
addnav("u?Bluspring's Warrior Training","train.php");
 | 
						|
if (@file_exists("lodge.php")) {
 | 
						|
	addnav("J?JCP's Hunter Lodge","lodge.php");
 | 
						|
}
 | 
						|
 | 
						|
tlschema($schemas['marketnav']);
 | 
						|
addnav($texts['marketnav']);
 | 
						|
tlschema();
 | 
						|
tlschema($schemas['weaponshop']);
 | 
						|
addnav("W?".$texts['weaponshop'],"weapons.php");
 | 
						|
tlschema();
 | 
						|
tlschema($schemas['armorshop']);
 | 
						|
addnav("A?".$texts['armorshop'],"armor.php");
 | 
						|
tlschema();
 | 
						|
addnav("B?Ye Olde Bank","bank.php");
 | 
						|
addnav("Z?Ze Gypsy Tent","gypsy.php");
 | 
						|
if (getsetting("betaperplayer", 1) == 1 && @file_exists("pavilion.php")) {
 | 
						|
	addnav("E?Eye-catching Pavilion","pavilion.php");
 | 
						|
}
 | 
						|
 | 
						|
tlschema($schemas['tavernnav']);
 | 
						|
addnav($texts['tavernnav']);
 | 
						|
tlschema();
 | 
						|
tlschema($schemas['innname']);
 | 
						|
addnav("I?".$texts['innname']."`0","inn.php",true);
 | 
						|
tlschema();
 | 
						|
tlschema($schemas['stablename']);
 | 
						|
addnav("M?".$texts['stablename']."`0","stables.php");
 | 
						|
tlschema();
 | 
						|
 | 
						|
addnav("G?The Gardens", "gardens.php");
 | 
						|
addnav("R?Curious Looking Rock", "rock.php");
 | 
						|
if (getsetting("allowclans",1)) addnav("C?Clan Halls","clan.php");
 | 
						|
 | 
						|
tlschema($schemas['infonav']);
 | 
						|
addnav($texts['infonav']);
 | 
						|
tlschema();
 | 
						|
addnav("??F.A.Q. (newbies start here)", "petition.php?op=faq",false,true);
 | 
						|
addnav("N?Daily News","news.php");
 | 
						|
addnav("L?List Warriors","list.php");
 | 
						|
addnav("o?Hall o' Fame","hof.php");
 | 
						|
 | 
						|
tlschema($schemas['othernav']);
 | 
						|
addnav($texts['othernav']);
 | 
						|
tlschema();
 | 
						|
addnav("P?Preferences","prefs.php");
 | 
						|
if (!file_exists("lodge.php")) {
 | 
						|
	addnav("Refer a Friend", "referral.php");
 | 
						|
}
 | 
						|
 | 
						|
tlschema('nav');
 | 
						|
addnav("Superuser");
 | 
						|
if ($session['user']['superuser'] & SU_EDIT_COMMENTS){
 | 
						|
	addnav(",?Comment Moderation","moderate.php");
 | 
						|
}
 | 
						|
if ($session['user']['superuser']&~SU_DOESNT_GIVE_GROTTO){
 | 
						|
  addnav("X?`bSuperuser Grotto`b","superuser.php");
 | 
						|
}
 | 
						|
if ($session['user']['superuser'] & SU_INFINITE_DAYS){
 | 
						|
  addnav("/?New Day","newday.php");
 | 
						|
}
 | 
						|
tlschema();
 | 
						|
//let users try to cheat, we protect against this and will know if they try.
 | 
						|
addnav("","superuser.php");
 | 
						|
addnav("","user.php");
 | 
						|
addnav("","taunt.php");
 | 
						|
addnav("","creatures.php");
 | 
						|
addnav("","configuration.php");
 | 
						|
addnav("","badword.php");
 | 
						|
addnav("","armoreditor.php");
 | 
						|
addnav("","bios.php");
 | 
						|
addnav("","badword.php");
 | 
						|
addnav("","donators.php");
 | 
						|
addnav("","referers.php");
 | 
						|
addnav("","retitle.php");
 | 
						|
addnav("","stats.php");
 | 
						|
addnav("","viewpetition.php");
 | 
						|
addnav("","weaponeditor.php");
 | 
						|
 | 
						|
if (!$skipvillagedesc) {
 | 
						|
	modulehook("collapse{", array("name"=>"villagedesc-".$session['user']['location']));
 | 
						|
	tlschema($schemas['text']);
 | 
						|
	output($texts['text']);
 | 
						|
	tlschema();
 | 
						|
	modulehook("}collapse");
 | 
						|
	modulehook("collapse{", array("name"=>"villageclock-".$session['user']['location']));
 | 
						|
	tlschema($schemas['clock']);
 | 
						|
	output($texts['clock'],getgametime());
 | 
						|
	tlschema();
 | 
						|
	modulehook("}collapse");
 | 
						|
	modulehook("village-desc",$texts);
 | 
						|
	//support for a special village-only hook
 | 
						|
	modulehook("village-desc-{$session['user']['location']}",$texts);
 | 
						|
	if ($texts['newestplayer'] > "" && $texts['newest']) {
 | 
						|
		modulehook("collapse{", array("name"=>"villagenewest-".$session['user']['location']));
 | 
						|
		tlschema($schemas['newest']);
 | 
						|
		output($texts['newest'], $texts['newestplayer']);
 | 
						|
		tlschema();
 | 
						|
		$id = $texts['newestid'];
 | 
						|
		if ($session['user']['superuser'] & SU_EDIT_USERS && $id) {
 | 
						|
			$edit = translate_inline("Edit");
 | 
						|
			rawoutput(" [<a href='user.php?op=edit&userid=$id'>$edit</a>]");
 | 
						|
			addnav("","user.php?op=edit&userid=$id");
 | 
						|
		}
 | 
						|
		output_notl("`n");
 | 
						|
		modulehook("}collapse");
 | 
						|
	}
 | 
						|
}
 | 
						|
modulehook("village",$texts);
 | 
						|
//special hook for all villages... saves queries...
 | 
						|
modulehook("village-{$session['user']['location']}",$texts);
 | 
						|
 | 
						|
if ($skipvillagedesc) output("`n");
 | 
						|
 | 
						|
$args = modulehook("blockcommentarea", array("section"=>$texts['section']));
 | 
						|
if (!isset($args['block']) || $args['block'] != 'yes') {
 | 
						|
		tlschema($schemas['talk']);
 | 
						|
		output($texts['talk']);
 | 
						|
		tlschema();
 | 
						|
		commentdisplay("",$texts['section'],"Speak",25,$texts['sayline'], $schemas['sayline']);
 | 
						|
}
 | 
						|
 | 
						|
module_display_events("village", "village.php");
 | 
						|
page_footer();
 | 
						|
?>
 |