279 lines
11 KiB
PHP
Executable File
279 lines
11 KiB
PHP
Executable File
<?php
|
|
// translator ready
|
|
// addnews ready
|
|
// mail ready
|
|
require_once("common.php");
|
|
require_once("lib/http.php");
|
|
require_once("lib/villagenav.php");
|
|
|
|
tlschema("mercenarycamp");
|
|
|
|
checkday();
|
|
$name = stripslashes(rawurldecode(httpget('name')));
|
|
if (isset($companions[$name])) {
|
|
$displayname = $companions[$name]['name'];
|
|
} else {
|
|
$displayname = translate_inline("your companion");
|
|
}
|
|
|
|
$basetext=array(
|
|
"title" => "A Mercenary Camp",
|
|
"desc" => array(
|
|
"`n`QYou step out of the gates of the village and stand for a moment to take a look around.",
|
|
"A slight breeze in the air stirs the pennants mounted above your head before it touches your skin.",
|
|
"Sounds of dogs barking draws your attention to the makeshift camp which is set slightly apart from the village.",
|
|
"You walk towards the encampment trying to avoid muddy puddles left from the rainfall the prior night.",
|
|
"The odor of cooking fires permeates the air.`n`n",
|
|
|
|
"As you approach you notice two men seated on rough hewn logs in front of a tent.",
|
|
"Propped against one of the logs are a pair of long handled battle axes and a bastard sword.",
|
|
"One of the men turns his weatherbeaten face towards you.",
|
|
"You try to suppress a shudder as you recoil from the sight of his face.",
|
|
"A ragged scar marks his face from forehead to jaw, crossing an empty hole where his eye should be.",
|
|
"He spits into the campfire before him.`n`n",
|
|
|
|
"\"`4Are you looking for someone?`Q\", he asks in a gravelly voice that comes from deep within.`n`n",
|
|
|
|
"At that moment a slender elfin woman with her golden hair pulled back in a warrior's braid brushes past you.",
|
|
"Strapped across her back is a long bow and a leather quiver full of arrows fletched with turkey feathers.",
|
|
"She gives you a smirk as she passes.".
|
|
|
|
"You turn as the elfin archer continues on her way.",
|
|
"That is when you notice a large mangy dog in a tug-of-war with a troll.",
|
|
"Clenched in the dog's teeth is a very large bone with bits of flesh still clinging to it.",
|
|
"You can't tell if the troll is growling louder than the dog as it tries to wrest the bone from its jaw.",
|
|
"Hanging from the troll's wide belt a gnarled club hangs against filthy breeches of animal skins.",
|
|
|
|
"The sound of the man's voice brings your attention back to the matter at hand.`n`n",
|
|
"\"`PYes. As a matter of fact I am looking for someone.`Q\" you reply.",
|
|
"\"`PI have gold in my purse to pay for the best fighter willing to join me in ridding this realm of vermin.`Q\"`n`n",
|
|
),
|
|
"buynav" => "Hire a mercenary",
|
|
"healnav" => "Heal a companion",
|
|
"healtext" => array(
|
|
"`QA surgeon takes a careful look at the many wounds of your companion.",
|
|
"After murmuring to himself as he makes the evaluation, he turns to you to name the price to care for the wounds.",
|
|
),
|
|
"healnotenough" => array(
|
|
"`QThe surgeon shakes his head then shrugs before turning away.",
|
|
"You are left standing with your empty purse.",
|
|
"No healing for someone who cannot pay.",
|
|
),
|
|
"healpaid" => array(
|
|
array("`QA surgeon is caring for the wounds of %s`Q and bandages them with learned skill.", $displayname),
|
|
"You gladly hand him the money owed for healing your companion and start heading back to the village.",
|
|
),
|
|
"toomanycompanions"=> array(
|
|
"It seems no one is willing to follow you.",
|
|
"You simply lead too many companions at the moment."
|
|
),
|
|
"manycompanions" => "Several mercenaries offer to join you:`n`n",
|
|
"onecompanion" => "One mercenary offers to join you:`n`n",
|
|
"nocompanions" => "No mercenaries off to join you.",
|
|
);
|
|
|
|
$schemas = array(
|
|
"title"=>"mercenarycamp",
|
|
"desc"=>"mercenarycamp",
|
|
"buynav"=>"mercenarycamp",
|
|
"healnav"=>"mercenarycamp",
|
|
"healtext"=>"mercenarycamp",
|
|
"healnotenough"=>"mercenarycamp",
|
|
"healpaid"=>"mercenarycamp",
|
|
"toomanycompanions"=>"mercenarycamp",
|
|
"manycompanions"=>"mercenarycamp",
|
|
"onecompanion"=>"mercenarycamp",
|
|
"nocompanions"=>"mercenarycamp",
|
|
);
|
|
|
|
$basetext['schemas'] = $schemas;
|
|
$texts = modulehook("mercenarycamptext",$basetext);
|
|
$schemas = $texts['schemas'];
|
|
|
|
tlschema($schemas['title']);
|
|
page_header($texts['title']);
|
|
output("`c`b`&".$texts['title']."`0`b`c");
|
|
tlschema();
|
|
|
|
$op = httpget("op");
|
|
|
|
if ($op==""){
|
|
if (httpget('skip') != 1) {
|
|
tlschema($schemas['desc']);
|
|
if (is_array($texts['desc'])) {
|
|
foreach ($texts['desc'] as $description) {
|
|
output_notl(sprintf_translate($description));
|
|
}
|
|
} else {
|
|
output($texts['desc']);
|
|
}
|
|
tlschema();
|
|
}
|
|
|
|
$sql = "SELECT * FROM " . db_prefix("companions") . "
|
|
WHERE companioncostdks<={$session['user']['dragonkills']}
|
|
AND (companionlocation = '{$session['user']['location']}' OR companionlocation = 'all')
|
|
AND companionactive = 1";
|
|
$result = db_query($sql);
|
|
tlschema($schemas['buynav']);
|
|
addnav($texts['buynav']);
|
|
tlschema();
|
|
switch (db_num_rows($result)) {
|
|
case 0:
|
|
if (is_array($texts['nocompanions'])) {
|
|
foreach ($texts['nocompanions'] as $description) {
|
|
output_notl(sprintf_translate($description));
|
|
}
|
|
} else {
|
|
output($texts['nocompanions']);
|
|
}
|
|
break;
|
|
case 1:
|
|
if (is_array($texts['onecompanion'])) {
|
|
foreach ($texts['onecompanion'] as $description) {
|
|
output_notl(sprintf_translate($description));
|
|
}
|
|
} else {
|
|
output($texts['onecompanion']);
|
|
}
|
|
break;
|
|
default:
|
|
if (is_array($texts['manycompanions'])) {
|
|
foreach ($texts['manycompanions'] as $description) {
|
|
output_notl(sprintf_translate($description));
|
|
}
|
|
} else {
|
|
output($texts['manycompanions']);
|
|
}
|
|
break;
|
|
}
|
|
while ($row = db_fetch_assoc($result)) {
|
|
$row = modulehook("alter-companion", $row);
|
|
if ($row['companioncostgold'] && $row['companioncostgems']) {
|
|
if ($session['user']['gold'] >= $row['companioncostgold'] && $session['user']['gems'] >= $row['companioncostgems'] && !isset($companions[$row['name']])) {
|
|
addnav(array("%s`n`^%s Gold, `%%%s Gems`0",$row['name'], $row['companioncostgold'], $row['companioncostgems']), "mercenarycamp.php?op=buy&id={$row['companionid']}");
|
|
} else {
|
|
addnav(array("%s`n`^%s Gold, `%%%s Gems`0",$row['name'], $row['companioncostgold'], $row['companioncostgems']), "");
|
|
}
|
|
} else if ($row['companioncostgold']) {
|
|
if ($session['user']['gold'] >= $row['companioncostgold'] && !isset($companions[$row['name']])) {
|
|
addnav(array("%s`n`^%s Gold`0",$row['name'], $row['companioncostgold']), "mercenarycamp.php?op=buy&id={$row['companionid']}");
|
|
} else {
|
|
addnav(array("%s`n`^%s Gold`0",$row['name'], $row['companioncostgold']), "");
|
|
}
|
|
} else if ($row['companioncostgems']) {
|
|
if ($session['user']['gems'] >= $row['companioncostgems'] && !isset($companions[$row['name']])) {
|
|
addnav(array("%s`n`%%%s Gems`0",$row['name'], $row['companioncostgems']), "mercenarycamp.php?op=buy&id={$row['companionid']}");
|
|
} else {
|
|
addnav(array("%s`n`%%%s Gems`0",$row['name'], $row['companioncostgems']), "");
|
|
}
|
|
} else if (!isset($companions[$row['name']])) {
|
|
addnav(array("%s",$row['name']), "mercenarycamp.php?op=buy&id={$row['companionid']}");
|
|
}
|
|
output("`#%s`n`7%s`n`n",$row['name'], $row['description']);
|
|
}
|
|
healnav($companions, $texts, $schemas);
|
|
} else if ($op == "heal") {
|
|
$cost = httpget('cost');
|
|
if ($cost == 'notenough') {
|
|
tlschema($schemas['healpaid']);
|
|
if (is_array($texts['healnotenough'])) {
|
|
foreach ($texts['healnotenough'] as $healnotenough) {
|
|
output_notl(sprintf_translate($healnotenough));
|
|
}
|
|
} else {
|
|
output($texts['healnotenough']);
|
|
}
|
|
tlschema();
|
|
} else {
|
|
$companions[$name]['hitpoints'] = $companions[$name]['maxhitpoints'];
|
|
$session['user']['gold'] -= $cost;
|
|
debuglog("spent $cost gold on healing a companion", false, false, "healcompanion", $cost);
|
|
tlschema($schemas['healpaid']);
|
|
if (is_array($texts['healpaid'])) {
|
|
foreach ($texts['healpaid'] as $healpaid) {
|
|
output_notl(sprintf_translate($healpaid));
|
|
}
|
|
} else {
|
|
output($texts['healpaid']);
|
|
}
|
|
tlschema();
|
|
}
|
|
healnav($companions, $texts, $schemas);
|
|
addnav("Navigation");
|
|
addnav("Return to the camp", "mercenarycamp.php?skip=1");
|
|
} else if ($op == "buy") {
|
|
$id = httpget('id');
|
|
$sql = "SELECT * FROM ".db_prefix("companions")." WHERE companionid = $id";
|
|
$result = db_query($sql);
|
|
if ($row = db_fetch_assoc($result)) {
|
|
$row['attack'] = $row['attack'] + $row['attackperlevel'] * $session['user']['level'];
|
|
$row['defense'] = $row['defense'] + $row['defenseperlevel'] * $session['user']['level'];
|
|
$row['maxhitpoints'] = $row['maxhitpoints'] + $row['maxhitpointsperlevel'] * $session['user']['level'];
|
|
$row['hitpoints'] = $row['maxhitpoints'];
|
|
$row = modulehook("alter-companion", $row);
|
|
$row['abilities'] = @unserialize($row['abilities']);
|
|
require_once("lib/buffs.php");
|
|
if (apply_companion($row['name'], $row)) {
|
|
output("`QYou hand over `^%s gold`Q and `%%s %s`Q.`n`n", (int)$row['companioncostgold'], (int)$row['companioncostgems'],translate_inline($row['companioncostgems'] == 1?"gem":"gems"));
|
|
if (isset($row['jointext']) && $row['jointext'] > "") {
|
|
output($row['jointext']);
|
|
}
|
|
$session['user']['gold'] -= $row['companioncostgold'];
|
|
$session['user']['gems'] -= $row['companioncostgems'];
|
|
debuglog("has spent {$row['companioncostgold']} gold and {$row['companioncostgems']} gems on hiring a mercenary ({$row['name']}).");
|
|
} else {
|
|
// applying the companion failed. Most likely they already have more than enough companions...
|
|
tlschema($schemas['toomanycompanions']);
|
|
if (is_array($texts['toomanycompanions'])) {
|
|
foreach ($texts['toomanycompanions'] as $toomanycompanions) {
|
|
output_notl(sprintf_translate($toomanycompanions));
|
|
}
|
|
} else {
|
|
output($texts['toomanycompanions']);
|
|
}
|
|
tlschema();
|
|
}
|
|
}
|
|
addnav("Navigation");
|
|
addnav("Return to the camp", "mercenarycamp.php?skip=1");
|
|
}
|
|
addnav("Navigation");
|
|
villagenav();
|
|
page_footer();
|
|
|
|
|
|
function healnav($companions, $texts, $schemas) {
|
|
global $session;
|
|
tlschema($schemas['healnav']);
|
|
addnav($texts['healnav']);
|
|
tlschema();
|
|
$healable = false;
|
|
foreach ($companions as $name => $companion) {
|
|
if (isset($companion['cannotbehealed']) && $companion['cannotbehealed'] == true) {
|
|
} else {
|
|
$pointstoheal = $companion['maxhitpoints'] - $companion['hitpoints'];
|
|
if ($pointstoheal > 0) {
|
|
$healable = true;
|
|
$costtoheal = round(log($session['user']['level']+1) * ($pointstoheal + 10)*1.33);
|
|
if ($session['user']['gold'] >= $costtoheal) {
|
|
addnav(array("%s`0 (`^%s Gold`0)", $companion['name'], $costtoheal), "mercenarycamp.php?op=heal&name=".rawurlencode($name)."&cost=$costtoheal");
|
|
} else {
|
|
addnav(array("%s`0 (`\$Not enough gold`0)", $companion['name']), "mercenarycamp.php?op=heal&name=".rawurlencode($name)."&cost=notenough");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if ($healable == true) {
|
|
tlschema($schemas['healtext']);
|
|
if (is_array($texts['healtext'])) {
|
|
foreach ($texts['healtext'] as $healtext) {
|
|
output_notl(sprintf_translate($healtext));
|
|
}
|
|
} else {
|
|
output($texts['healtext']);
|
|
}
|
|
tlschema();
|
|
}
|
|
}
|
|
?>
|