LoGD Standardrelease steht hier zum Download zur Verfügung!
<?php
// 25072004
/*
* Major MAJOR revamps by JT from logd.dragoncat.net Frankly I threw out my code and used his.
*
*/
if ($_GET[auto]=="full"){
$count=100;
}else if ($_GET[auto]=="five"){
$count=5;
}else{
$count=1;
}
function activate_buffs($tag) {
global $session, $badguy;
reset($session['bufflist']);
$result = array();
$result['invulnerable'] = 0;
$result['dmgmod'] = 1;
$result['badguydmgmod'] = 1;
$result['atkmod'] = 1;
$result['badguyatkmod'] = 1;
$result['defmod'] = 1;
$result['badguydefmod'] = 1;
$result['lifetap'] = array();
$result['dmgshield'] = array();
while(list($key,$buff) = each($session['bufflist'])) {
if (isset($buff['startmsg'])) {
$msg = $buff['startmsg'];
$msg = str_replace("{badguy}", $badguy['creaturename'], $msg);
output("`2$msg`0");
unset($session['bufflist'][$key]['startmsg']);
}
$activate = strpos($buff['activate'], $tag);
if ($activate !== false) $activate = true; // handle strpos == 0;
// If this should activate now and it hasn't already activated,
// do the round message and mark it.
if ($activate && !$buff['used']) {
// mark it used.
$session['bufflist'][$key]['used'] = 1;
// if it has a 'round message', run it.
if (isset($buff['roundmsg'])) {
$msg = $buff['roundmsg'];
$msg = str_replace("{badguy}", $badguy['creaturename'], $msg);
output("`2$msg`0`n");
}
}
// Now, calculate any effects and run them if needed.
if (isset($buff['invulnerable'])) {
$result['invulnerable'] = 1;
}
if (isset($buff['atkmod'])) {
$result['atkmod'] *= $buff['atkmod'];
}
if (isset($buff['badguyatkmod'])) {
$result['badguyatkmod'] *= $buff['badguyatkmod'];
}
if (isset($buff['defmod'])) {
$result['defmod'] *= $buff['defmod'];
}
if (isset($buff['badguydefmod'])) {
$result['badguydefmod'] *= $buff['badguydefmod'];
}
if (isset($buff['dmgmod'])) {
$result['dmgmod'] *= $buff['dmgmod'];
}
if (isset($buff['badguydmgmod'])) {
$result['badguydmgmod'] *= $buff['badguydmgmod'];
}
if (isset($buff['lifetap'])) {
array_push($result['lifetap'], $buff);
}
if (isset($buff['damageshield'])) {
array_push($result['dmgshield'], $buff);
}
if (isset($buff['regen']) && $activate) {
$hptoregen = (int)$buff['regen'];
$hpdiff = $session['user']['maxhitpoints'] -
$session['user']['hitpoints'];
// Don't regen if we are above max hp
if ($hpdiff < 0) $hpdiff = 0;
if ($hpdiff < $hptoregen) $hptoregen = $hpdiff;
$session['user']['hitpoints'] += $hptoregen;
// Now, take abs value just incase this was a damaging buff
$hptoregen = abs($hptoregen);
if ($hptoregen == 0) $msg = $buff['effectnodmgmsg'];
else $msg = $buff['effectmsg'];
$msg = str_replace("{badguy}", $badguy['creaturename'], $msg);
$msg = str_replace("{damage}", $hptoregen, $msg);
output("`2$msg`0`n");
}
if (isset($buff['minioncount']) && $activate) {
$who = -1;
if (isset($buff['maxbadguydamage'])) {
if (isset($buff['maxbadguydamage'])) {
$buff['maxbadguydamage'] = stripslashes($buff['maxbadguydamage']);
eval("\$buff['maxbadguydamage'] = $buff[maxbadguydamage];");
}
$max = $buff['maxbadguydamage'];
if (isset($buff['minbadguydamage'])) {
$buff['minbadguydamage'] = stripslashes($buff['minbadguydamage']);
eval("\$buff['minbadguydamage'] = $buff[minbadguydamage];");
}
$min = $buff['minbadguydamage'];
$who = 0;
} else {
$max = $buff['maxgoodguydamage'];
$min = $buff['mingoodguydamage'];
$who = 1;
}
for ($i = 0; $who >= 0 && $i < $buff['minioncount']; $i++) {
$damage = e_rand($min, $max);
if ($who == 0) {
$badguy['creaturehealth'] -= $damage;
} else if ($who == 1) {
$session['user']['hitpoints'] -= $damage;
}
if ($damage < 0) {
$msg = $buff['effectfailmsg'];
} else if ($damage == 0) {
$msg = $buff['effectnodmgmsg'];
} else if ($damage > 0) {
$msg = $buff['effectmsg'];
}
if ($msg>"") {
$msg = str_replace("{badguy}", $badguy['creaturename'], $msg);
$msg = str_replace("{goodguy}", $session['user']['name'], $msg);
$msg = str_replace("{damage}", $damage, $msg);
output("`2$msg`0`n");
}
}
}
}
return $result;
}
function process_lifetaps($ltaps, $damage) {
global $session, $badguy;
reset($ltaps);
while(list($key,$buff) = each($ltaps)) {
$healhp = $session['user']['maxhitpoints'] -
$session['user']['hitpoints'];
if ($healhp < 0) $healhp = 0;
if ($healhp == 0) {
$msg = $buff['effectnodmgmsg'];
} else {
if ($healhp > $damage * $buff['lifetap'])
$healhp = $damage * $buff['lifetap'];
if ($healhp < 0) $healhp = 0;
if ($damage > 0) {
$msg = $buff['effectmsg'];
} else if ($damage == 0) {
$msg = $buff['effectfailmsg'];
} else if ($damage < 0) {
$msg = $buff['effectfailmsg'];
}
}
$session['user']['hitpoints'] += $healhp;
$msg = str_replace("{badguy}",$badguy['creaturename'], $msg);
$msg = str_replace("{damage}",$healhp, $msg);
if ($msg > "") output("`2$msg`n");
}
}
function process_dmgshield($dshield, $damage) {
global $session, $badguy;
reset($dshield);
while(list($key,$buff) = each($dshield)) {
$realdamage = $damage * $buff['damageshield'];
if ($realdamage < 0) $realdamage = 0;
if ($realdamage > 0) {
$msg = $buff['effectmsg'];
} else if ($realdamage == 0) {
$msg = $buff['effectnodmgmsg'];
} else if ($realdamage < 0) {
$msg = $buff['effectfailmsg'];
}
$badguy[creaturehealth] -= $realdamage;
$msg = str_replace("{badguy}",$badguy['creaturename'], $msg);
$msg = str_replace("{damage}",$realdamage, $msg);
if ($msg > "") output("`2$msg`n");
}
}
function expire_buffs() {
global $session, $badguy;
reset($session['bufflist']);
while (list($key, $buff) = each($session['bufflist'])) {
if ($buff['used']) {
$session['bufflist'][$key]['used'] = 0;
$session['bufflist'][$key]['rounds']--;
if ($session['bufflist'][$key]['rounds'] <= 0) {
if ($buff['wearoff']) {
$msg = $buff['wearoff'];
$msg = str_replace("{badguy}", $badguy['creaturename'], $msg);
output("`2$msg`n");
}
unset($session['bufflist'][$key]);
}
}
}
}
$badguy = createarray($session[user][badguy]);
$adjustment = ($session[user][level]/$badguy[creaturelevel]);
if ($badguy[pvp]) $adjustment=1;
if ($_GET[op]=="fight"){
// spells
if ($_GET[skill]=="zauber"){
$resultz=db_query("SELECT * FROM items WHERE id=$_GET[itemid]") or die(db_error(LINK));
$zauber = db_fetch_assoc($resultz);
$spellbuff=unserialize($zauber[buff]);
$session[bufflist][$spellbuff[name]]=$spellbuff;
$zauber[gold]=round($zauber[gold]*($zauber[value1]/($zauber[value2]+1)));
$zauber[gems]=round($zauber[gems]*($zauber[value1]/($zauber[value2]+1)));
$zauber[value1]--;
if ($zauber[value1]<=0 && $zauber[hvalue]<=0){
db_query("DELETE FROM items WHERE id=$_GET[itemid]");
}else{
db_query("UPDATE items SET value1=$zauber[value1], gems=$zauber[gems], gold=$zauber[gold] WHERE id=$_GET[itemid]");
}
}
// end spells
if ($_GET[skill]=="godmode"){
$session[bufflist]['godmode']=array(
"name"=>"`&GOD MODE",
"rounds"=>1,
"wearoff"=>"Du bist wieder sterblich.",
"atkmod"=>25,
"defmod"=>25,
"invulnerable"=>1,
"startmsg"=>"`n`&Du fühlst dich gottgleich`n`n",
"activate"=>"roundstart"
);
}
if ($_GET[skill]=="MP"){
if ($session[user][magicuses] >= $_GET[l]){
$creaturedmg = 0;
switch($_GET[l]){
case 1:
$session[bufflist]['mp1'] = array(
"startmsg"=>"`n`lDu fängst an zu regenerieren!`n`n",
"name"=>"`lRegeneration",
"rounds"=>5,
"wearoff"=>"`MDeine Regeneration hat aufgehört",
"regen"=>$session['user']['level'],
"effectmsg"=>"`lDu regenerierst um `M{damage} `lPunkte.",
"effectnodmgmsg"=>"Du bist völlig gesund.",
"activate"=>"roundstart");
// $session['user']['reputation']--;
break;
case 2:
$session[bufflist]['mp2'] = array(
"startmsg"=>"`n`&{badguy}`l wird von einer Klaue aus Erde gepackt und auf den Boden geschleudert!`n`n",
"name"=>"`lErdenfaust",
"rounds"=>5,
"wearoff"=>"`MDie erdene Faust zerfällt zu Staub.",
"minioncount"=>1,
"effectmsg"=>"`lEine gewaltige Faust aus Erde trifft {badguy} `lmit `M{damage}`l Schadenspunkten.",
"minbadguydamage"=>1,
"maxbadguydamage"=>$session['user']['level']*3,
"activate"=>"roundstart"
);
break;
case 3:
$session[bufflist]['mp3'] = array(
"startmsg"=>"`n`lDeine Waffe glüht in einem überirdischen Schein.`n`n",
"name"=>"`lLeben absaugen",
"rounds"=>5,
"wearoff"=>"`MDie Aura deiner Waffe verschwindet.",
"lifetap"=>1, //ratio of damage healed to damage dealt
"effectmsg"=>"`lDu wirst um `M{damage} `lPunkte geheilt.",
"effectnodmgmsg"=>"Du fühlst ein Prickeln, als deine Waffe versucht, deinen vollständig gesunden Körper zu heilen.",
"effectfailmsg"=>"Deine Waffe scheint zu jammern, als du deinem Gegner keinen Schaden machst.",
"activate"=>"offense,defense",
);
break;
case 5:
$session[bufflist]['mp5'] = array(
"startmsg"=>"`n`lDeine Haut glitzert, als du dir eine Aura aus Blitzen zulegst`n`n",
"name"=>"`lBlitzaura",
"rounds"=>5,
"wearoff"=>"`MMit einem Zischen wird deine Haut wieder normal.",
"damageshield"=>2,
"effectmsg"=>"`l{badguy} `lwird von einem Blitzbogen aus deiner Haut mit `M{damage}`l Schadenspunkten zurückgeworfen.",
"effectnodmg"=>"{badguy} ist von deinen Blitzen leicht geblendet, ansonsten aber unverletzt.",
"effectfailmsg"=>"{badguy} ist von deinen Blitzen leicht geblendet, ansonsten aber unverletzt.",
"activate"=>"offense,defense"
);
break;
}
$session[user][magicuses]-=$_GET[l];
}else{
$session[bufflist]['mp0'] = array(
"startmsg"=>"`nDu legst deine Stirn in Falten und beschwörst die Elemente. Eine kleine Flamme erscheint. {badguy} zündet sich eine Zigarette daran an, dankt dir und stürzt sich wieder auf dich.`n`n",
"rounds"=>1,
"activate"=>"roundstart"
);
// $session['user']['reputation']--;
}
}
if ($_GET[skill]=="DA"){
if ($session[user][darkartuses] >= $_GET[l]){
$creaturedmg = 0;
switch($_GET[l]){
case 1:
$session[bufflist]['da1']=array(
"startmsg"=>"`n`àDu rufst die Geister der Toten und skelettartige Hände zerren an {badguy} aus den Tiefen ihrer Gräber.`n`n",
"name"=>"`àSkelettdiener",
"rounds"=>5,
"wearoff"=>"`áDeine Skelettdiener zerbröckeln zu staub.",
"minioncount"=>round($session[user][level]/3)+1,
"maxbadguydamage"=>round($session[user][level]/2,0)+1,
"effectmsg"=>"`àEin untoter Diener trifft {badguy} `àmit `á{damage}`à Schadenspunkten.",
"effectnodmgmsg"=>"`àEin untoter Diener versucht {badguy} zu treffen, aber `áTRIFFT NICHT`)!",
"activate"=>"roundstart"
);
break;
case 2:
$session[bufflist]['da2']=array(
"startmsg"=>"`n`àDu holst eine winzige Puppe, die aussieht wie {badguy}, hervor`n`n",
"effectmsg"=>"`àDu stößt eine Nadel in die {badguy}-Puppe und machst damit `á{damage}`à Schadenspunkte!",
"minioncount"=>1,
"maxbadguydamage"=>round($session[user][attack]*3,0),
"minbadguydamage"=>round($session[user][attack]*1.5,0),
"activate"=>"roundstart"
);
break;
case 3:
$session[bufflist]['da3']=array(
"startmsg"=>"`n`àDu sprichst einen Fluch auf die Ahnen von {badguy}.`n`n",
"name"=>"`àGeist verfluchen",
"rounds"=>5,
"wearoff"=>"Dein Fluch ist gewichen.",
"badguydmgmod"=>0.5,
"roundmsg"=>"`á{badguy} taumelt unter der Gewalt deines Fluchs und macht nur halben Schaden.",
"activate"=>"defense"
);
break;
case 5:
$session[bufflist]['da5']=array(
"startmsg"=>"`n`àDu streckst deine Hand aus und {badguy} fängt an aus den Ohren zu bluten.`n`n",
"name"=>"`àSeele verdorren",
"rounds"=>5,
"wearoff"=>"Die Seele deines Opfers hat sich erholt.",
"badguyatkmod"=>0,
"badguydefmod"=>0,
"roundmsg"=>"`á{badguy} kratzt sich beim Versuch, die eigene Seele zu befreien, fast die Augen aus und kann nicht angreifen oder sich verteidigen.",
"activate"=>"offense,defense"
);
// $session['user']['reputation']--;
break;
}
$session[user][darkartuses]-=$_GET[l];
}else{
$session[bufflist]['da0'] = array(
"startmsg"=>"`nErschöpft versuchst du deine dunkelste Magie: einen schlechten Witz. {badguy} schaut dich nachdenklich eine Minute lang an. Endlich versteht er den Witz und stürzt sich lachend wieder auf dich.`n`n",
"rounds"=>1,
"activate"=>"roundstart"
);
// $session['user']['reputation']--;
}
}
if ($_GET[skill]=="TS"){
if ($session[user][thieveryuses] >= $_GET[l]){
$creaturedmg = 0;
switch($_GET[l]){
case 1:
$session[bufflist]['ts1']=array(
"startmsg"=>"`n`fDu gibst deinem Gegner einen schlimmen Namen und bringst {badguy} `fzum Weinen.`n`n",
"name"=>"`fBeleidigung",
"rounds"=>5,
"wearoff"=>"Dein Gegner putzt sich die Nase und hört auf zu weinen.",
"roundmsg"=>"`f{badguy} ist deprimiert und kann nicht so gut angreifen.",
"badguyatkmod"=>0.5,
"activate"=>"defense"
);
break;
case 2:
$session[bufflist]['ts2']=array(
"startmsg"=>"`n`fDu reibst Gift auf dein(e/n) ".$session[user][weapon].".`n`n",
"name"=>"`fVergiftete Waffe",
"rounds"=>5,
"wearoff"=>"Das Blut deines Gegners hat das Gift von deiner Waffe gewaschen.",
"atkmod"=>2,
"roundmsg"=>"`fDein Angriffswert vervielfacht sich!",
"activate"=>"offense"
);
// $session['user']['reputation']--;
break;
case 3:
$session[bufflist]['ts3'] = array(
"startmsg"=>"`n`fMit dem Geschick eines erfahrenen Diebs scheinst du zu verschwinden und kannst {badguy} `faus einer günstigeren und sichereren Position angreifen.`n`n",
"name"=>"`fVersteckter Angriff",
"rounds"=>5,
"wearoff"=>"Dein Opfer hat dich gefunden.",
"roundmsg"=>"`f{badguy} kann dich nicht finden.",
"badguyatkmod"=>0,
"activate"=>"defense"
);
break;
case 5:
$session[bufflist]['ts5']=array(
"startmsg"=>"`n`fMit deinen Fähigkeiten als Dieb verschwindest du und schiebst {badguy} `fvon hinten eine dünne Klinge zwischen die Rückenwirbel!`n`n",
"name"=>"`fAngriff von hinten",
"rounds"=>5,
"wearoff"=>"Dein Opfer ist nicht mehr so nett, dich hinter sich zu lassen!",
"atkmod"=>3,
"defmod"=>3,
"roundmsg"=>"`fDein Angriffswert und deine Verteidigung vervielfachen sich!",
"activate"=>"offense,defense"
);
break;
}
$session[user][thieveryuses]-=$_GET[l];
}else{
$session[bufflist]['ts0'] = array(
"startmsg"=>"`nDu versuchst, {badguy} anzugreifen, indem du deine besten Diebeskünste in die Praxis umsetzt - aber du stolperst über deine eigenen Füsse.`n`n",
"rounds"=>1,
"activate"=>"roundstart"
);
// $session['user']['reputation']--;
}
}
if ($_GET[skill]=="FI"){
if ($session[user][fireuses] >= $_GET[l]){
$creaturedmg = 0;
switch($_GET[l]){
case 1:
$session[bufflist]['fi1']=array(
"startmsg"=>"`n`\$Du spielst mit dem Feuer und fügst {badguy} eine Menge brandwunden zu.`n`n",
"name"=>"`^Feuertanz",
"rounds"=>5,
"wearoff"=>"Dein Feuertanz hält nicht ewig und das Feuer erlischt.",
"minioncount"=>round($session[user][level]/3)+1,
"maxbadguydamage"=>round($session[user][level]/2,0)+1,
"effectmsg"=>"`)Etwas Feuer verbrennt {badguy} und verletzt ihn mit `^{damage}`) Schadenspunkten.",
"effectnodmgmsg"=>"`)Das Feuer schließt {badguy} ein, aber `\$VERLETZT IHN NICHT`)!",
"activate"=>"roundstart"
);
break;
case 2:
$session[bufflist]['fi2']=array(
"startmsg"=>"`n`^Du reibst Spiritus auf dein(e/n) ".$session[user][weapon].".`n`n",
"name"=>"`^Feuer Waffe",
"rounds"=>5,
"wearoff"=>"Das Blut deines Gegners hat das Feuer deiner Waffe gelöscht.",
"atkmod"=>2,
"roundmsg"=>"Dein Angriffswert vervielfacht sich!",
"activate"=>"offense"
);
$session['user']['reputation']--;
break;
case 3:
$session[bufflist]['fi3']=array(
"startmsg"=>"`n`\$Du pfeifst auf zwei Fingern und ein Drache steht vor {badguy}.`n`n",
"name"=>"`\$Feuer Drache",
"rounds"=>5,
"wearoff"=>"Dein Feuer erlischt darunter strahlt die gewohnt funkelnde Klinge.",
"badguydmgmod"=>0.5,
"roundmsg"=>"{badguy} taumelt vor Schmerzen der Verbrennung hin und her und trifft dich nur mit halben Schaden.",
"activate"=>"defense"
);
break;
case 5:
$session[bufflist]['fi5']=array(
"startmsg"=>"`n`\$Du streckst deine Hand aus und {badguy} fängt an zu glühen.`n`n",
"name"=>"`\$Seele verbrennen",
"rounds"=>5,
"wearoff"=>"Die Seele deines Opfers hat sich erholt.",
"badguyatkmod"=>0,
"badguydefmod"=>0,
"roundmsg"=>"{badguy} kratzt sich beim Versuch, die eigene Seele zu befreien, fast die Augen aus und kann nicht angreifen oder sich verteidigen.",
"activate"=>"offense,defense"
);
$session['user']['reputation']--;
break;
}
$session[user][fireuses]-=$_GET[l];
}else{
$session[bufflist]['fi0'] = array(
"startmsg"=>"`nErschöpft versuchst du deine beste Feuerkunst: einen schlechten Witz. {badguy} schaut dich nachdenklich eine Minute lang an. Endlich versteht er den Witz und stürzt sich lachend wieder auf dich.`n`n",
"rounds"=>1,
"activate"=>"roundstart"
);
$session['user']['reputation']--;
}
}
if ($_GET[skill]=="WM"){
if ($session[user][wmagieuses] >= $_GET[l]){
$creaturedmg = 0;
switch($_GET[l]){
case 1:
$session[bufflist]['wm1']=array(
"startmsg"=>"`n`\$Du fängst an eine Formel vor sich hin zu sprechen.`n`n",
"name"=>"`^Unsichtbarkeitszauber",
"rounds"=>5,
"wearoff"=>"Dein Zauber hat nachgelassen du bist wieder zu sehen.",
"minioncount"=>round($session[user][level]/3)+1,
"maxbadguydamage"=>round($session[user][level]/2,0)+1,
"effectmsg"=>"`)Du triffst {badguy} `)und verletzt ihn mit `^{damage}`) Schadenspunkten. Er konnte dich nicht sehen.",
"effectnodmgmsg"=>"`)Du verwirrst {badguy}, aber `\$VERLETZT IHN NICHT`)!",
"activate"=>"roundstart"
);
break;
case 2:
$session[bufflist]['wm2']=array(
"startmsg"=>"`n`^Du sprichst eine Formel und dein(e) ".$session[user][weapon].". verwandelt sich in Glühendes Licht.`n`n",
"name"=>"`^Sonnenstrahl Zauber",
"rounds"=>5,
"wearoff"=>"Die dunklen Absichten deines Gegeners übertönen das grelle Licht",
"atkmod"=>2,
"roundmsg"=>"Dein Angriffswert vervielfacht sich!",
"activate"=>"offense"
);
$session['user']['reputation']--;
break;
case 3:
$session[bufflist]['wm3']=array(
"startmsg"=>"`n`\$Du sprichst eine Formel aus und du stehst 2x vor {badguy} und verwirrst ihn.`n`n",
"name"=>"`\$Verdopplungs Zauber",
"rounds"=>5,
"wearoff"=>"Dein doppelgänger hat erkannt das er zu schwach ist und läuft weg",
"badguydmgmod"=>0.5,
"roundmsg"=>"{badguy} ist verwirrt weil er nicht weiß wen er schlagen soll deswegen trifft er dich nur mit halben Schadenpunkten.",
"activate"=>"defense"
);
break;
case 5:
$session[bufflist]['wm5']=array(
"startmsg"=>"`n`\$Du holst eine flasche aus deiner Tasche und trinkst einen Schluck daraus.`n`n",
"name"=>"`\$Zauber Trank",
"rounds"=>5,
"wearoff"=>"Du bist so schnell wie der wind so dass dein Gegner nicht hinter her kommt.",
"badguyatkmod"=>0,
"badguydefmod"=>0,
"roundmsg"=>"{badguy} fällt tot um bei dem Versuch dich zu fangen.",
"activate"=>"offense,defense"
);
$session['user']['reputation']--;
break;
}
$session[user][wmagieuses]-=$_GET[l];
}else{
$session[bufflist]['wm0'] = array(
"startmsg"=>"`nErschöpft versuchst du deine beste Magie: einen schlechten Witz. {badguy} schaut dich nachdenklich eine Minute lang an. Endlich versteht er den Witz und stürzt sich lachend wieder auf dich.`n`n",
"rounds"=>1,
"activate"=>"roundstart"
);
$session['user']['reputation']--;
}
}
}
if ($badguy['creaturehealth']>0 && $session['user']['hitpoints']>0) {
output ("`›`c`b~ ~ ~ Kampf ~ ~ ~`b`c`n`n`0");
output("`&Du hast den Gegner `D$badguy[creaturename]`& entdeckt, der sich mit seiner Waffe `D$badguy[creatureweapon]`& auf dich stürzt!`0`n`n");
if ($session['user']['alive']){
output("`&Level: `3$badguy[creaturelevel]`0`n");
}else{
output("`&Level: `3Untoter`0`n");
}
output("`&`bBeginn der Runde:`b`n");
output("`2$badguy[creaturename]`2's ".($session['user']['alive']?"Lebenspunkte":"Seelenpunkte").": `Ä$badguy[creaturehealth] `0`n");
output("`2DEINE ".($session['user']['alive']?"Lebenspunkte":"Seelenpunkte").": `M".$session[user][hitpoints]."`0`n");
}
reset($session[bufflist]);
while (list($key,$buff)=each($session['bufflist'])){
// reset the 'used this round state'
$buff[used]=0;
}
if ($badguy[pvp] &&
count($session[bufflist])>0 &&
is_array($session[bufflist])) {
if ($session['user']['buffbackup']>""){
}else{
output("`&Die Götter verbieten den Einsatz jeder Spezialfähigkeit!`n");
$session['user']['buffbackup']=serialize($session['bufflist']);
$session[bufflist]=array();
if ($_GET['bg']==1){
$session['bufflist']['bodyguard'] = array(
"startmsg"=>"`n`á{$badguy['creaturename']} ist durch einen Leibwächter geschützt!`n`n",
"name"=>"`&Leibwächter",
"rounds"=>5,
"wearoff"=>"Der Leibwächter scheint eingeschlafen zu sein.",
"minioncount"=>1,
"maxgoodguydamage"=> round($session['user']['level']/2,0) +1,
"effectmsg"=>"`1{badguy}'s `1Leibwächter trifft dich mit `á{damage}`1 Schadenspunkten.",
"effectnodmgmsg"=>"`1{badguy}'s Leibwächter versucht dich zu treffen, aber `áTRIFFT NICHT`7!",
"activate"=>"roundstart"
);
}
if ($_GET['bg']==2){
$session['bufflist']['heimvorteil'] = array(
"startmsg"=>"`n`á{$badguy['creaturename']} `áhat einen gewaltigen Heimvorteil!`n`n",
"name"=>"`áNachteil",
"rounds"=>20,
"wearoff"=>"Der Heimvorteil ist deinem Gegner nicht mehr von Vorteil.",
"minioncount"=>1,
"maxgoodguydamage"=> round($session['user']['level']+5),
"effectmsg"=>"`1Durch {badguy}`1's Heimvorteil bekommst du zusätzlich `á{damage}`1 Schadenspunkte.",
"effectnodmgmsg"=>"",
"activate"=>"roundstart"
);
}
}
}
// Run the beginning of round buffs (this also calculates all modifiers)
for ($count=$count;$count>0;$count--){
if ($badguy['creaturehealth']>0 && $session['user']['hitpoints']>0){
$buffset = activate_buffs("roundstart");
$creaturedefmod=$buffset['badguydefmod'];
$creatureatkmod=$buffset['badguyatkmod'];
$atkmod=$buffset['atkmod'];
$defmod=$buffset['defmod'];
}
if ($badguy['creaturehealth']>0 && $session['user']['hitpoints']>0){
if ($badguy[pvp]) {
$adjustedcreaturedefense = $badguy[creaturedefense];
} else {
$adjustedcreaturedefense =
($creaturedefmod*$badguy[creaturedefense] /
($adjustment*$adjustment));
}
$creatureattack = $badguy[creatureattack]*$creatureatkmod;
$adjustedselfdefense = ($session[user][defence] * $adjustment * $defmod);
while($creaturedmg==0 && $selfdmg==0){//---------------------------------
$atk = $session[user][attack]*$atkmod;
if (e_rand(1,20)==1) $atk*=3;
$patkroll = e_rand(0,$atk);
$catkroll = e_rand(0,$adjustedcreaturedefense);
$creaturedmg = 0-(int)($catkroll - $patkroll);
if ($creaturedmg<0) {
//output("`#DEBUG: Initial (<0) creature damage $creaturedmg`n");
$creaturedmg = (int)($creaturedmg/2);
//output("`#DEBUG: Modified (<0) creature damage $creaturedmg`n");
$creaturedmg = round($buffset[badguydmgmod]*$creaturedmg,0);
//output("`#DEBUG: Modified (<0) creature damage $creaturedmg`n");
}
if ($creaturedmg > 0) {
//output("`#DEBUG: Initial (>0) creature damage $creaturedmg`n");
$creaturedmg = round($buffset[dmgmod]*$creaturedmg,0);
//output("`#DEBUG: Modified (>0) creature damage $creaturedmg`n");
}
//output("`#DEBUG: Attack score: $atk`n");
//output("`#DEBUG: Creature Defense Score: $adjustedcreaturedefense`n");
//output("`#DEBUG: Player Attack roll: $patkroll`n");
//output("`#DEBUG: Creature Defense roll: $catkroll`n");
//output("`#DEBUG: Final Creature Damage: $creaturedmg`n");
$pdefroll = e_rand(0,$adjustedselfdefense);
$catkroll = e_rand(0,$creatureattack);
$selfdmg = 0-(int)($pdefroll - $catkroll);
if ($selfdmg<0) {
//output("`#DEBUG: Initial (<0) self damage $selfdmg`n");
$selfdmg=(int)($selfdmg/2);
//output("`#DEBUG: Modified (<0) self damage $selfdmg`n");
$selfdmg = round($selfdmg*$buffset[dmgmod], 0);
//output("`#DEBUG: Modified (<0) self damage $selfdmg`n");
}
if ($selfdmg > 0) {
//output("`#DEBUG: Initial (>0) self damage $selfdmg`n");
$selfdmg = round($selfdmg*$buffset[badguydmgmod], 0);
//output("`#DEBUG: Modified (>0) self damage $selfdmg`n");
}
//output("`#DEBUG: Defense score: $adjustedselfdefense`n");
//output("`#DEBUG: Creature Attack score: $creatureattack`n");
//output("`#DEBUG: Player Defense roll: $pdefroll`n");
//output("`#DEBUG: Creature Attack roll: $catkroll`n");
//output("`#DEBUG: Final Player damage: $selfdmg`n");
//output("`#DEBUG: count: $count`n");
}
}else{
$creaturedmg=0;
$selfdmg=0;
$count=0;
}
// Handle god mode's invulnerability
if ($buffset[invulnerable]) {
$creaturedmg = abs($creaturedmg);
$selfdmg = -abs($selfdmg);
}
if (e_rand(1,3)==1 &&
($_GET[op]=="search" ||
($badguy[pvp] && $_GET[act]=="attack"))) {
if ($badguy[pvp]){
output("`b`á$badguy[creaturename]`á's Fähigkeiten erlauben deinem Gegner den ersten Schlag!`0`b`n`n");
}else{
output("`b`á$badguy[creaturename]`á überrascht dich und hat den ersten Schlag!`0`b`n`n");
}
$_GET[op]="run";
$surprised=true;
}else{
if ($_GET[op]=="search")
output("`b`^Dein Können erlaubt dir den ersten Angriff!`0`b`n`n");
$surprised=false;
}
if ($_GET[op]=="fight" || $_GET[op]=="run"){
if ($_GET[op]=="fight"){
if ($badguy[creaturehealth]>0 && $session[user][hitpoints]>0){
$buffset = activate_buffs("offense");
if ($atk > $session[user][attack]) {
if ($atk > $session[user][attack]*3){
if ($atk>$session[user][attack]*4){
output("`G`bDu holst zu einem <font size='+1'>MEGA</font> Powerschlag aus!!!`b`n",true);
}else{
output("`G`bDu holst zu einem DOPPELTEN Powerschlag aus!!!`b`n");
}
}else{
if ($atk>$session[user][attack]*2){
output("`G`bDu holst zu einem Powerschlag aus!!!`b`0`n");
}elseif ($atk>$session['user']['attack']*1.25){
output("`&`bDu holst zu einem kleinen Powerschlag aus!`b`0`n");
}
}
}
if ($creaturedmg==0){
output("`1Du versuchst `&$badguy[creaturename]`1 zu treffen, aber `áTRIFFST NICHT!`n");
if ($badguy[creaturehealth]>0 && $session[user][hitpoints]>0) process_dmgshield($buffset[dmgshield], 0);
if ($badguy[creaturehealth]>0 && $session[user][hitpoints]>0) process_lifetaps($buffset[lifetap], 0);
}else if ($creaturedmg<0){
output("`1Du versuchst `&$badguy[creaturename]`1 zu treffen, aber der `áABWEHRSCHLAG `1trifft dich mit `á".(0-$creaturedmg)."`1 Schadenspunkten!`n");
$badguy['diddamage']=1;
$session[user][hitpoints]+=$creaturedmg;
if ($badguy[creaturehealth]>0 && $session[user][hitpoints]>0) process_dmgshield($buffset[dmgshield],-$creaturedmg);
if ($badguy[creaturehealth]>0 && $session[user][hitpoints]>0) process_lifetaps($buffset[lifetap],$creaturedmg);
}else{
output("`1Du triffst `&$badguy[creaturename]`1 mit `á$creaturedmg`1 Schadenspunkten!`n");
$badguy[creaturehealth]-=$creaturedmg;
if ($badguy[creaturehealth]>0 && $session[user][hitpoints]>0) process_dmgshield($buffset[dmgshield],-$creaturedmg);
if ($badguy[creaturehealth]>0 && $session[user][hitpoints]>0) process_lifetaps($buffset[lifetap],$creaturedmg);
}
if ($creaturedmg>$session[user][punch]){
$session[user][punch]=$creaturedmg;
output("`^`b`c--- DAS WAR DEIN BISHER HÄRTESTER SCHLAG! ---`c`b`n");
}
}
}else if($_GET[op]=="run" && !$surprised){
output("`2Du bist zu beschäftigt damit wegzulaufen wie ein feiger Hund und kannst nicht gegen `&$badguy[creaturename]`2 kämpfen.`n");
}
// We need to check both user health and creature health. Otherwise the user
// can win a battle by a RIPOSTE after he has gone <= 0 HP.
//-- Gunnar Kreitz
if ($badguy[creaturehealth]>0 && $session[user][hitpoints]>0){
$buffset = activate_buffs("defense");
if ($selfdmg==0){
output("`&$badguy[creaturename]`2 versucht dich zu treffen, aber `áTRIFFT NICHT!`n");
if ($badguy[creaturehealth]>0 && $session[user][hitpoints]>0) process_dmgshield($buffset[dmgshield], 0);
if ($badguy[creaturehealth]>0 && $session[user][hitpoints]>0) process_lifetaps($buffset[lifetap], 0);
}else if ($selfdmg<0){
output("`&$badguy[creaturename]`2 versucht dich zu treffen, aber dein `&ABWEHRSCHLAG`2 trifft mit `á".(0-$selfdmg)."`2 Schadenspunkten!`n");
$badguy[creaturehealth]+=$selfdmg;
if ($badguy[creaturehealth]>0 && $session[user][hitpoints]>0) process_lifetaps($buffset[lifetap], -$selfdmg);
if ($badguy[creaturehealth]>0 && $session[user][hitpoints]>0) process_dmgshield($buffset[dmgshield], $selfdmg);
}else{
output("`&$badguy[creaturename]`2 trifft dich mit `á$selfdmg`2 Schadenspunkten!`n");
$session[user][hitpoints]-=$selfdmg;
if ($badguy[creaturehealth]>0 && $session[user][hitpoints]>0) process_dmgshield($buffset[dmgshield], $selfdmg);
if ($badguy[creaturehealth]>0 && $session[user][hitpoints]>0) process_lifetaps($buffset[lifetap], -$selfdmg);
$badguy['diddamage']=1;
}
}
}
expire_buffs();
$creaturedmg=0;
$selfdmg=0;
if ($count>1 && $session[user][hitpoints]>0 && $badguy[creaturehealth]>0) output("`&`b`nNächste Runde:`b`n");
if ($session[user][hitpoints]<=0 || $badguy[creaturehealth]<=0) $count=-1;
if ($badguy[creaturehealth]<=0 && $session[user][hitpoints]>0){
$victory=true;
$defeat=false;
$count=0;
}else{
if ($session[user][hitpoints]<=0){
$defeat=true;
$victory=false;
$count=0;
}else{
$defeat=false;
$victory=false;
}
}
}
if ($session[user][hitpoints]>0 &&
$badguy[creaturehealth]>0 &&
($_GET[op]=="fight" || $_GET[op]=="run")){
output("`&`b`nEnde der Runde:`b`n");
output("`2$badguy[creaturename]`2's ".($session['user']['alive']?"Lebenspunkte":"Seelenpunkte").": `Ä$badguy[creaturehealth]`0`n");
output("`2DEINE ".($session['user']['alive']?"Lebenspunkte":"Seelenpunkte").": `M".$session[user][hitpoints]."`0`n");
}
if ($victory || $defeat){
// Unset the bodyguard buff at the end of the fight.
// Without this, the bodyguard persists *and* the older buffs are held
// off for a while! :/
if (isset($session['bufflist']['bodyguard'])) unset($session['bufflist']['bodyguard']);
if (isset($session['bufflist']['weather'])) unset($session['bufflist']['weather']);
if (isset($session['bufflist']['heimvorteil'])) unset($session['bufflist']['heimvorteil']);
if (!is_array($session['bufflist']) || count($session['bufflist']) <= 0) {
$session['bufflist'] = unserialize($session['user']['buffbackup']);
if (is_array($session['bufflist'])) {
if (count($session['bufflist'])>0 && $badguy[pvp])
output("`&Die Götter gewähren dir wieder alle deine speziellen Fähigkeiten.`n`n");
} else {
$session['bufflist'] = array();
}
}
$session['user']['buffbackup'] = "";
}
$session[user][badguy]=createstring($badguy);
?>