LoGD Standardrelease steht hier zum Download zur Verfügung!
<?php
// 24072004
require_once "common.php";
$balance = getsetting("creaturebalance", 0.33);
// Handle updating any commentary that might be around.
addcommentary();
//savesetting("creaturebalance","0.33");
if ($_GET[op]=="darkhorse"){
$_GET[op]="";
$session[user][specialinc]="darkhorse.php";
}
if ($_GET[op]=="castle"){
$_GET[op]="";
$session[user][specialinc]="castle.php";
}
$fight = false;
page_header("Der Wald");
if ($session[user][superuser]>1 && $HTTP_GET_VARS[specialinc]!=""){
$session[user][specialinc] = $HTTP_GET_VARS[specialinc];
}
if ($session[user][specialinc]!=""){
//echo "$x including special/".$session[user][specialinc];
output("`]`c`bEtwas Besonderes!`c`b`n`n`0");
$specialinc = $session[user][specialinc];
$session[user][specialinc] = "";
include("special/".$specialinc);
if (!is_array($session['allowednavs']) || count($session['allowednavs'])==0) {
forest(true);
//output(serialize($session['allowednavs']));
}
page_footer();
exit();
}
if ($HTTP_GET_VARS[op]=="run"){
if (e_rand()%3 == 0){
output ("`c`b`&Du bist erfolgreich vor deinem Gegner geflohen!`0`b`c`n");
$session[user][reputation]--;
$HTTP_GET_VARS[op]="";
}else{
output("`c`b`äDir ist es nicht gelungen deinem Gegner zu entkommen!`0`b`c");
}
}
//Komplette Heilung by Morpheus
if ($HTTP_GET_VARS[op]=="heal"){
$config = unserialize($session['user']['donationconfig']);
if ($config['healer'] || $session[user][acctid]==getsetting("hasegg",0)) $golinda = 1;
$loglev = log($session[user][level]);
$cost = ($loglev * ($session[user][maxhitpoints]-$session[user][hitpoints])) + ($loglev*10);
if ($golinda) $cost *= .5;
$nc=100;
$newcost=round($nc*$cost/100,0);
$session[user][gold]-=$newcost;
$session[user][hitpoints]=$session[user][maxhitpoints];
$HTTP_GET_VARS[op]="";
}
//Komplette Heilung Ende
if ($HTTP_GET_VARS[op]=="dragon"){
addnav("Was tun?");
addnav("Weiter gehen","dragon.php");
addnav("Lieber wieder zurück","inn.php");
output("`c<table width='700'><tr><td align='justify'>`i`1
Schon seit längerem fordern dich die Kämpfe gegen die Waldkreaturen nicht mehr wirklich heraus. Selbst dein Meister hat beschlossen, dass er dir nichts mehr beibringen kann und so hast du dich aufgemacht um eine Herausforderung zu suchen, die deiner würdig ist. Du willst etwas vollbringen, von dem die Leute noch lange reden und über das die Barden des Landes Lieder und Gedichte schreiben.
Und diese epische Heldentat liegt irgendwo dort draußen, das weißt du mit Sicherheit. Du hast dich tief in den Wald vorgewagt. Die Bäume stehen dicht beieinander und lassen kaum Licht durch das Blätterdach fallen. Immer wieder knackt oder raschelt es im Unterholz, doch deine geschulten Sinne erkennen schnell, dass darin keine Gefahr für dich liegt, sondern es sich nur um harmlose, kleine Waldtiere handelt. Leise und vorsichtig kämpfst du dich weiter voran.`i`n`n</td></tr></table>`c",true);
$session[user][seendragon]=1;
}
if ($HTTP_GET_VARS[op]=="search"){
checkday();
if ($session[user][turns]<=0){
output("`ä`bDu bist zu müde um heute den Wald weiter zu durchsuchen. Vielleicht hast du morgen mehr Energie dazu.`b`0");
$HTTP_GET_VARS[op]="";
}else{
$session[user][drunkenness]=round($session[user][drunkenness]*.9,0);
$specialtychance = e_rand()%7;
if ($specialtychance==0){
output("`]`c`bEtwas Besonderes!`c`b`n`n`0");
if ($handle = opendir("special")){
$events = array();
while (false !== ($file = readdir($handle))){
if (strpos($file,".php")>0){
// Skip the darkhorse if the horse knows the way
if ($session['user']['hashorse'] > 0 &&
$playermount['tavern'] > 0 &&
strpos($file, "darkhorse") !== false) {
continue;
}
array_push($events,$file);
}
}
$x = e_rand(0,count($events)-1);
if (count($events)==0){
output("`b`äArrr, dein Administrator hat entschieden, dass es dir nicht erlaubt ist, besondere Ereignisse zu haben. Beschwer dich bei ihm, nicht beim Programmierer.");
}else{
$y = $HTTP_GET_VARS[op];
$HTTP_GET_VARS[op]="";
//echo "$x including special/".$events[$x];
include("special/".$events[$x]);
$HTTP_GET_VARS[op]=$y;
}
}else{
output("`c`b`äFEHLER!!!`b`c`&Es ist nicht möglich die besonderen Ereignisse zu öffnen! Bitte benachrichtige den Administrator!!");
}
if ($nav=="") forest(true);
}else{
$session[user][turns]--;
$battle=true;
if (e_rand(0,2)==1){
$plev = (e_rand(1,5)==1?1:0);
$nlev = (e_rand(1,3)==1?1:0);
}else{
$plev=0;
$nlev=0;
}
if ($HTTP_GET_VARS['type']=="slum"){
$nlev++;
output("`GDu steuerst den Abschnitt des Waldes an, von dem du weißt, dass sich dort Feinde aufhalten, die dir ein bisschen angenehmer sind.`0`n");
// $session[user][reputation]--;
}
if ($HTTP_GET_VARS['type']=="thrill"){
$plev++;
output("`áDu steuerst den Abschnitt des Waldes an, in dem sich Kreaturen deiner schlimmsten Albträume aufhalten, in der Hoffnung dass Du eine findest die verletzt ist.`0`n");
// $session[user][reputation]++;
}
$targetlevel = ($session['user']['level'] + $plev - $nlev );
if ($targetlevel<1) $targetlevel=1;
$sql = "SELECT * FROM creatures WHERE creaturelevel = $targetlevel ORDER BY rand(".e_rand().") LIMIT 1";
$result = db_query($sql) or die(db_error(LINK));
$badguy = db_fetch_assoc($result);
$expflux = round($badguy['creatureexp']/10,0);
// more XP per DK
// $badguy['creatureexp']+=round($session['user']['dragonkills']/300 * $badguy['creatureexp']);
$expflux = e_rand(-$expflux,$expflux);
$badguy['creatureexp']+=$expflux;
//make badguys get harder as you advance in dragon kills.
//output("`#Debug: badguy gets `%$dk`# dk points, `%+$atkflux`# attack, `%+$defflux`# defense, +`%$hpflux`# hitpoints.`n");
$badguy['playerstarthp']=$session['user']['hitpoints'];
$dk = 0;
while(list($key, $val)=each($session[user][dragonpoints])) {
if ($val=="at" || $val=="de") $dk++;
}
$dk += (int)(($session['user']['maxhitpoints']-
($session['user']['level']*10))/5);
if (!$beta) $dk = round($dk * 0.25, 0);
else $dk = round($dk,0);
$atkflux = e_rand(0, $dk);
if ($beta) $atkflux = min($atkflux, round($dk/4));
$defflux = e_rand(0, ($dk-$atkflux));
if ($beta) $defflux = min($defflux, round($dk/4));
$hpflux = ($dk - ($atkflux+$defflux)) * 5;
$badguy['creatureattack']+=$atkflux;
$badguy['creaturedefense']+=$defflux;
$badguy['creaturehealth']+=$hpflux;
if ($beta) {
$badguy['creaturedefense']*=0.66;
$badguy['creaturegold']*=(1+(.05*$dk));
if ($session['user']['race']==4) $badguy['creaturegold']*=1.1;
} else {
if ($session['user']['race']==4) $badguy['creaturegold']*=1.2;
}
$badguy['diddamage']=0;
$session['user']['badguy']=createstring($badguy);
if ($beta) {
if ($session['user']['superuser']>=3){
output("Debug: $dk dragon points.`n");
output("Debug: +$atkflux attack.`n");
output("Debug: +$defflux defense.`n");
output("Debug: +$hpflux health.`n");
}
}
}
}
}
if ($HTTP_GET_VARS[op]=="fight" || $HTTP_GET_VARS[op]=="run"){
$battle=true;
}
if ($battle){
include("battle.php");
// output(serialize($badguy));
if ($victory){
if (getsetting("dropmingold",0)){
$badguy[creaturegold]=e_rand($badguy[creaturegold]/4,3*$badguy[creaturegold]/4);
}else{
$badguy[creaturegold]=e_rand(0,$badguy[creaturegold]);
}
$expbonus = round(
($badguy[creatureexp] *
(1 + .25 *
($badguy[creaturelevel]-$session[user][level])
)
) - $badguy[creatureexp],0
);
// output("`n`i`&$badguy[creaturelose]`0`i`n");
output("`n`b`&Du hast $badguy[creaturename] erledigt!`0`b`n");
output("`GDu erbeutest `f`b$badguy[creaturegold]`b`G Goldstücke!`n");
if ($badguy['creaturegold']) {
//debuglog("received {$badguy['creaturegold']} gold for slaying a monster.");
}
//find something
$findit=e_rand(1,27);
if ($findit == 2) { //gem
output("`pDu findest `bEINEN EDELSTEIN!`b`n`0");
$session['user']['gems']++;
//debuglog("found a gem when slaying a monster.");
}
if ($findit == 5) $session['user']['donation']+=1;
if ($findit == 20 && e_rand(1,4)==3){ // item
$sql="SELECT * FROM items WHERE owner=0 AND (class='Beute.Prot' OR class='Zaub.Prot') ORDER BY rand(".e_rand().") LIMIT 1";
$result = db_query($sql) or die(db_error(LINK));
$row2 = db_fetch_assoc($result);
if ($row2[name]){
if ($row2['class']=="Beute.Prot"){
$sql="INSERT INTO items(name,class,owner,gold,gems,description) VALUES ('".addslashes($row2[name])."','Beute',".$session[user][acctid].",$row2[gold],$row2[gems],'".addslashes($row2[description])."')";
}else if ($row2['class']=="Zaub.Prot"){
$row2[description].=" (gebraucht)";
$row2[value1]=e_rand(1,$row2[value2]);
$row2[gold]=$row2[gold]*(($row2[value1]+1)/($row2[value2]+1));
$sql="INSERT INTO items(name,class,owner,gold,gems,value1,value2,hvalue,description,buff) VALUES ('".addslashes($row2[name])."','Zauber',".$session[user][acctid].",$row2[gold],0,$row2[value1],$row2[value2],$row2[hvalue],'".addslashes($row2[description])."','".addslashes($row2[buff])."')";
}else{
$sql = "UPDATE items SET owner=".$session[user][acctid]." WHERE id=$row2[id]";
}
db_query($sql) or die(sql_error($sql));
output("`n`3Beim Durchsuchen von $badguy[creaturename] `3findest du `&$row2[name]`3! ($row2[description])`n`n`#");
}
}
if ($findit == 25 && e_rand(1,6)==2){ // armor
$sql = "SELECT * FROM armor WHERE defense<=".$session[user][level]." ORDER BY rand(".e_rand().") LIMIT 1";
$result2 = db_query($sql) or die(db_error(LINK));
if (db_num_rows($result2)>0){
$row2 = db_fetch_assoc($result2);
$row2['value']=round($row2['value']/10);
$sql="INSERT INTO items(name,class,owner,gold,value1,description) VALUES ('".addslashes($row2[armorname])."','Rüstung',".$session[user][acctid].",$row2[value],$row2[defense],'Gebrauchte Level $row2[level] Rüstung mit $row2[defense] Verteidigung.')";
db_query($sql) or die(sql_error($sql));
output("`n`3Beim Durchsuchen von $badguy[creaturename] `3findest du die Rüstung `&$row2[armorname]`3!`n`n`0");
}
}
if ($findit == 26 && e_rand(1,6)==2){ // weapon
$sql = "SELECT * FROM weapons WHERE damage<=".$session[user][level]." ORDER BY rand(".e_rand().") LIMIT 1";
$result2 = db_query($sql) or die(db_error(LINK));
if (db_num_rows($result2)>0){
$row2 = db_fetch_assoc($result2);
$row2['value']=round($row2['value']/10);
$sql="INSERT INTO items(name,class,owner,gold,value1,description) VALUES ('".addslashes($row2[weaponname])."','Waffe',".$session[user][acctid].",$row2[value],$row2[damage],'Gebrauchte Level $row2[level] Waffe mit $row2[damage] Angriffswert.')";
db_query($sql) or die(sql_error($sql));
output("`n`3Beim Durchsuchen von $badguy[creaturename] `3findest du die Waffe `&$row2[weaponname]`3!`n`n`0");
}
}
if ($expbonus>0){
output("`c`f*** Durch die hohe Schwierigkeit des Kampfes erhältst du zusätzlich `&$expbonus Erfahrungspunkte!`f `n($badguy[creatureexp] + ".abs($expbonus)." = ".($badguy[creatureexp]+$expbonus).") `c");
}else if ($expbonus<0){
output("`c`f*** Weil dieser Kampf so leicht war, verlierst du `&".abs($expbonus)." Erfahrungspunkte!`f `n($badguy[creatureexp] - ".abs($expbonus)." = ".($badguy[creatureexp]+$expbonus).") `c");
}
output("`c`fDu bekommst insgesamt `&".($badguy[creatureexp]+$expbonus)." Erfahrungspunkte`f!***`n`c`0");
$session[user][gold]+=$badguy[creaturegold];
$session[user][experience]+=($badguy[creatureexp]+$expbonus);
$creaturelevel = $badguy[creaturelevel];
$HTTP_GET_VARS[op]="";
//if ($session[user][hitpoints] == $session[user][maxhitpoints]){
if ($badguy['diddamage']!=1){
if ($session[user][level]>=getsetting("lowslumlevel",4) || $session[user][level]<=$creaturelevel){
output("`n`b`c`Ç~~ Perfekter Kampf! ~~`&`n`bDu erhältst eine Extrarunde!`c`0`n");
$session[user][turns]++;
if ($expbonus>0){
$session['user']['donation']+=1;
}
}else{
output("`b`c`Ç~~ Perfekter Kampf! ~~`b`&`nEin schwierigerer Kampf hätte dir eine extra Runde gebracht.`c`n`0");
}
}
$dontdisplayforestmessage=true;
addhistory(($badguy['playerstarthp']-$session['user']['hitpoints'])/max($session['user']['maxhitpoints'],$badguy['playerstarthp']));
$badguy=array();
}else{
if($defeat){
addnav("Tägliche News","news.php");
$sql = "SELECT taunt FROM taunts ORDER BY rand(".e_rand().") LIMIT 1";
$result = db_query($sql) or die(db_error(LINK));
$taunt = db_fetch_assoc($result);
$taunt = str_replace("%s",($session[user][sex]?"sie":"ihn"),$taunt[taunt]);
$taunt = str_replace("%o",($session[user][sex]?"sie":"er"),$taunt);
$taunt = str_replace("%p",($session[user][sex]?"ihr":"sein"),$taunt);
$taunt = str_replace("%x",($session[user][weapon]),$taunt);
$taunt = str_replace("%X",$badguy[creatureweapon],$taunt);
$taunt = str_replace("%W",$badguy[creaturename],$taunt);
$taunt = str_replace("%w",$session[user][name],$taunt);
addhistory(1);
addnews("`1".$session[user][name]."`4 wurde im Wald von $badguy[creaturename] niedergestreckt.`n$taunt");
$session[user][alive]=false;
debuglog("lost {$session['user']['gold']} gold when they were slain in the forest");
$session[user][gold]=0;
$session[user][hitpoints]=0;
$session[user][experience]=round($session[user][experience]*.9,0);
$session[user][badguy]="";
output("`b`áDu wurdest von `&$badguy[creaturename]`á besiegt!`n");
output("`&Dein ganzes Gold wurde dir abgenommen!`n");
output("`&10% deiner Erfahrung hast du verloren!`n");
output("Du kannst morgen weiter kämpfen.");
page_footer();
}else{
fightnav();
}
}
}
if ($HTTP_GET_VARS[op]==""){
// Need to pass the variable here so that we show the forest message
// sometimes, but not others.
forest($dontdisplayforestmessage);
}
page_footer();
function addhistory($value){
/*
global $session,$balance;
$history = unserialize($session['user']['history']);
$historycount=50;
for ($x=0;$x<$historycount;$x++){
if (!isset($history[$x])) $history[$x]=$balance;
}
array_shift($history);
array_push($history,$value);
$history = array_values($history);
for ($x=0;$x<$historycount;$x++){
$history[$x] = round($history[$x],4);
if ($session['user']['superuser']>=3) output("History: {$history[$x]}`n");
}
$session['user']['history']=serialize($history);
*/
}
?>