= 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("`)$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("`)$msg`n"); } } function process_dmgshield($dshield, $damage) { global $badguy; foreach ($dshield as $key => $buff) { $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("`)$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("`)$msg`n"); } unset($session['bufflist'][$key]); } } } } $badguy = createarray($session['user']['badguy']); $adjustment = ($session['user']['level'] / $badguy['creaturelevel']); if (!empty($badguy['pvp'])) $adjustment = 1; if ($_GET['op'] == "fight") { $skill = !empty($_GET['skill']) ? $_GET['skill'] : ""; // Leere Variable verhindern switch ($skill) { case 'zauber': // Zauber aus Items // Zauber einlesen und ausführen $resultz = db_query("SELECT * FROM items WHERE id=" . $_GET['itemid']); $zauber = db_fetch_assoc($resultz); $spellbuff = unserialize($zauber['buff']); $session['bufflist'][$spellbuff['name']] = $spellbuff; // Wert des Items und Ladungen verringern $zauber['gold'] = round($zauber['gold'] * ($zauber['value1'] / ($zauber['value2'] + 1))); $zauber['gems'] = round($zauber['gems'] * ($zauber['value1'] / ($zauber['value2'] + 1))); $zauber['value1']--; // Leere Items löschen 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']); } break; case 'godmode': // Admin-Gottmodus $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"); break; case 'MP': // MagicPowers / Mystische Kräfte if ($session['user']['magicuses'] >= $_GET[l]) { $creaturedmg = 0; switch ($_GET['l']) { case 1: $session['bufflist']['mp1'] = array("startmsg" => "`n`^Du fängst an zu regenerieren!`n`n", "name" => "`%Regeneration", "rounds" => 5, "wearoff" => "Deine Regeneration hat aufgehört", "regen" => $session['user']['level'], "effectmsg" => "Du regenerierst um {damage} Punkte.", "effectnodmgmsg" => "Du bist völlig gesund.", "activate" => "roundstart"); $session['user']['reputation']--; break; case 2: $session['bufflist']['mp2'] = array("startmsg" => "`n`^{badguy}`% wird von einer Klaue aus Erde gepackt und auf den Boden geschleudert!`n`n", "name" => "`%Erdenfaust", "rounds" => 5, "wearoff" => "Die erdene Faust zerfällt zu staub.", "minioncount" => 1, "effectmsg" => "Eine gewaltige Faust aus Erde trifft {badguy} mit `^{damage}`) Schadenspunkten.", "minbadguydamage" => 1, "maxbadguydamage" => $session['user']['level'] * 3, "activate" => "roundstart"); break; case 3: $session['bufflist']['mp3'] = array("startmsg" => "`n`^Deine Waffe glüht in einem überirdischen Schein.`n`n", "name" => "`%Leben absaugen", "rounds" => 5, "wearoff" => "Die Aura deiner Waffe verschwindet.", "lifetap" => 1, "effectmsg" => "Du wirst um {damage} Punkte 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`^Deine Haut glitzert, als du dir eine Aura aus Blitzen zulegst`n`n", "name" => "`%Blitzaura", "rounds" => 5, "wearoff" => "Mit einem Zischen wird deine Haut wieder normal.", "damageshield" => 2, "effectmsg" => "{badguy}wird von einem Blitzbogen aus deiner Haut mit `^{damage}`) 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']--; } break; case 'DA': // DarkArts / Dunkle Künste 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']--; } break; case 'TS': // ThievSkills / Diebeskünste if ($session['user']['thieveryuses'] >= $_GET[l]) { $creaturedmg = 0; switch ($_GET['l']) { case 1: $session['bufflist']['ts1'] = array("startmsg" => "`n`^Du gibst deinem Gegner einen schlimmen Namen und bringst {badguy} zum Weinen.`n`n", "name" => "`^Beleidigung", "rounds" => 5, "wearoff" => "Dein Gegner putzt sich die Nase und hört auf zu weinen.", "roundmsg" => "{badguy} ist deprimiert und kann nicht so gut angreifen.", "badguyatkmod" => 0.5, "activate" => "defense"); break; case 2: $session['bufflist']['ts2'] = array("startmsg" => "`n`^Du reibst Gift auf dein(e/n) " . $session['user']['weapon'] . ".`n`n", "name" => "`^Vergiftete Waffe", "rounds" => 5, "wearoff" => "Das Blut deines Gegners hat das Gift von deiner Waffe gewaschen.", "atkmod" => 2, "roundmsg" => "Dein Angriffswert vervielfacht sich!", "activate" => "offense"); $session['user']['reputation']--; break; case 3: $session['bufflist']['ts3'] = array("startmsg" => "`n`^Mit dem Geschick eines erfahrenen Diebs scheinst du zu verschwinden und kannst {badguy} aus einer günstigeren und sichereren Position angreifen.`n`n", "name" => "`^Versteckter Angriff", "rounds" => 5, "wearoff" => "Dein Opfer hat dich gefunden.", "roundmsg" => "{badguy} kann dich nicht finden.", "badguyatkmod" => 0, "activate" => "defense"); break; case 5: $session['bufflist']['ts5'] = array("startmsg" => "`n`^Mit deinen Fähigkeiten als Dieb verschwindest du und schiebst {badguy} von hinten eine dünne Klinge zwischen die Rückenwirbel!`n`n", "name" => "`^Angriff von hinten", "rounds" => 5, "wearoff" => "Dein Opfer ist nicht mehr so nett, dich hinter sich zu lassen!", "atkmod" => 3, "defmod" => 3, "roundmsg" => "Dein 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']--; } break; } } if ($badguy['creaturehealth'] > 0 && $session['user']['hitpoints'] > 0) { // Kampf läuft // Einleitung / Übersicht output("`\$`c`b~ ~ ~ Kampf ~ ~ ~`b`c`0"); output("`@Du hast den Gegner `^{$badguy['creaturename']}`@ entdeckt, der sich mit seiner Waffe `%{$badguy['creatureweapon']}`@ auf dich stürzt!`0`n`n"); if ($session['user']['alive']) { // Wald- oder Grabkampf? output("`2Level: `6{$badguy['creaturelevel']}`0`n"); } else { output("`2Level: `6Untoter`0`n"); } output("`2`bBeginn der Runde:`b`n"); output("`2{$badguy['creaturename']}`2's " . ($session['user']['alive'] ? "Lebenspunkte" : "Seelenpunkte") . ": `6${badguy['creaturehealth']} `0`n"); output("`2DEINE " . ($session['user']['alive'] ? "Lebenspunkte" : "Seelenpunkte") . ": `6" . $session['user']['hitpoints'] . "`0`n"); } // Buff refreshen (überreste aus der letzten Runde bereinigen) foreach ($session['bufflist'] as $key=>$val) { $session['bufflist'][$key]['used'] = 0; } if (!empty($badguy['pvp']) && is_array($session['bufflist']) && count($session['bufflist']) > 0) { if (empty($session['user']['buffbackup'])) { // Buffs im PVP deaktivieren und ins Backup schreiben output("`&Die Götter verbieten den Einsatz jeder Spezialfähigkeit!`n"); $session['user']['buffbackup'] = serialize($session['bufflist']); $session['bufflist'] = array(); if ($_GET['bg'] == 1) { // Angegriffenen in der Taverne durch Leibwächter stärken $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" => "`7{badguy}'s Leibwächter trifft dich mit `\${damage}`7 Schadenspunkten.", "effectnodmgmsg" => "`7{badguy}'s Leibwächter versucht dich zu treffen, aber `\$TRIFFT NICHT`7!", "activate" => "roundstart"); } elseif ($_GET['bg'] == 2) { // Angegriffenen im Haus durch Heimvorteil stärken $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" => "`7Durch {badguy}`7's Heimvorteil bekommst du zusätzlich `\${damage}`7 Schadenspunkte.", "effectnodmgmsg" => "", "activate" => "roundstart"); } } } // Runde Starten! Beginne mit dem berechnen der Buffs for($count = $count; $count > 0; $count--) { // Anzahl Kampfrunden im Autokampf if ($badguy['creaturehealth'] > 0 && $session['user']['hitpoints'] > 0) { // Beide noch am Leben // Wetter (nur bei erlaubten Buffs [kein PvP]) if ($session['user']['alive'] && !empty($session['user']['buffbackup'])) { if (e_rand(1, 6) == 2) { $wetter = getsetting("weather", "0"); if ($wetter == "Starker Wind mit vereinzelten Regenschauern") { if (e_rand(1, 2) == 1) { $session['bufflist']['weather'] = array("name" => "`6Wetter", "rounds" => 1, "wearoff" => "", "atkmod" => 0, "roundmsg" => "`6Ein starker Windstoss läßt dich dein Ziel verfehlen.", "activate" => "offense"); } else { $session['bufflist']['weather'] = array("name" => "`6Wetter", "rounds" => 1, "wearoff" => "", "badguyatkmod" => 0, "roundmsg" => "`6Ein starker Windstoss hindert {badguy} daran, dich zu treffen.", "activate" => "defense"); } } else if ($wetter == "Schneeregen") { if (e_rand(1, 2) == 1) { $session['bufflist']['weather'] = array("name" => "`6Wetter", "rounds" => 1, "wearoff" => "", "defmod" => 0, "roundmsg" => "`6Durch den Schneeregen siehst du den Schlag deines Gegners nicht kommen.", "activate" => "defense"); } else { $session['bufflist']['weather'] = array("name" => "`6Wetter", "rounds" => 1, "wearoff" => "", "badguydefmod" => 0, "roundmsg" => "`6Durch den Schneeregen sieht dein Gegner deinen Schlag nicht kommen.", "activate" => "offense"); } } } } // Grundlegende Start-Buffs aktivieren $buffset = activate_buffs("roundstart"); $creaturedefmod = $buffset['badguydefmod']; $creatureatkmod = $buffset['badguyatkmod']; $atkmod = $buffset['atkmod']; $defmod = $buffset['defmod']; } // Berechnungen der Kampfergebnisse dieser Runde if ($badguy['creaturehealth'] > 0 && $session['user']['hitpoints'] > 0) { // Beide immer noch am Leben // bei Nicht-PvP Gegnerschaden justieren if (!empty($badguy['pvp'])) { $adjustedcreaturedefense = $badguy['creaturedefense']; } else { $adjustedcreaturedefense = ($creaturedefmod * $badguy['creaturedefense'] / ($adjustment * $adjustment)); } // Gegnerschaden und eigene Verteidigung justieren $creatureattack = $badguy['creatureattack'] * $creatureatkmod; $adjustedselfdefense = ($session['user']['defence'] * $adjustment * $defmod); // Variableninitialisierung $creaturedmg = 0; $selfdmg = 0; while ($creaturedmg == 0 && $selfdmg == 0) { // Schleife zum verhinden von Nullrunden // Tatsächliche maximale Stärke des Angriffs bstimmen (incl Glückstreffer) $atk = $session['user']['attack'] * $atkmod; if (e_rand(1, 20) == 1) $atk *= 3; // Schaden am Gegner bestimmen $patkroll = e_rand(0, $atk); $catkroll = e_rand(0, $adjustedcreaturedefense); $creaturedmg = 0 - (int) ($catkroll - $patkroll); // Selbst getroffen? if ($creaturedmg < 0) { $creaturedmg = (int) ($creaturedmg / 2); $creaturedmg = round($buffset['badguydmgmod'] * $creaturedmg, 0); } // Defensiv-Buffs des Gegners anwenden if ($creaturedmg > 0) { $creaturedmg = round($buffset['dmgmod'] * $creaturedmg, 0); } // Schaden am Spieler bestimmen $pdefroll = e_rand(0, $adjustedselfdefense); $catkroll = e_rand(0, $creatureattack); $selfdmg = 0 - (int) ($pdefroll - $catkroll); // Gegner hat sich selbst getroffen? if ($selfdmg < 0) { $selfdmg = (int) ($selfdmg / 2); $selfdmg = round($selfdmg * $buffset['dmgmod'], 0); } // Schadensmodifikator des Gegners anwenden if ($selfdmg > 0) { $selfdmg = round($selfdmg * $buffset['badguydmgmod'], 0); } } } else { // Jemand ist tot - keine weiteren Schadensverteilungen nötig $creaturedmg = 0; $selfdmg = 0; $count = 0; } // Gott-Modus if ($buffset['invulnerable']) { $creaturedmg = abs($creaturedmg); $selfdmg = -abs($selfdmg); } // Wer bekommt den ersten Schlag? if (mt_rand(1, 3) == 1 && ($_GET['op'] == "search" || (!empty($badguy['pvp']) && $_GET['act'] == "attack"))) { if (!empty($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; } // Kampf geht weiter - Ausgabe der Berechnungen if (isset($_GET['op']) && ($_GET['op'] == "fight" || $_GET['op'] == "run")) { // Kämpfen if ($_GET['op'] == "fight") { // Noch beide am Leben? if ($badguy['creaturehealth'] > 0 && $session['user']['hitpoints'] > 0) { // Buffs laden $buffset = activate_buffs("offense"); // Powerschlag gelandet? if ($atk > $session['user']['attack']) { if($atk > $session['user']['attack'] * 4) output("`&`bDu holst zu einem MEGA Powerschlag aus!!!`b`n", true); elseif ($atk > $session['user']['attack'] * 3) output("`&`bDu holst zu einem DOPPELTEN Powerschlag aus!!!`b`n"); elseif ($atk > $session['user']['attack'] * 2) output("`&`bDu holst zu einem Powerschlag aus!!!`b`0`n"); elseif ($atk > $session['user']['attack'] * 1.25) output("`7`bDu holst zu einem kleinen Powerschlag aus!`b`0`n"); } // Getroffen? if ($creaturedmg == 0) { // Fehlschlag output("`4Du versuchst `^{$badguy['creaturename']}`4 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) { // Konter output("`4Du versuchst `^{$badguy['creaturename']}`4 zu treffen, aber der `\$ABWEHRSCHLAG `4trifft dich mit `\$" . (0 - $creaturedmg) . "`4 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 { // Treffer output("`4Du triffst `^{$badguy['creaturename']}`4 mit `^$creaturedmg`4 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); } // Neuen besten Schlag gelandet? if ($creaturedmg > $session['user']['punch']) { $session['user']['punch'] = $creaturedmg; output("`@`b`c--- DAS WAR DEIN BISHER HÄRTESTER SCHLAG! ---`c`b`n"); } } } elseif ($_GET['op'] == "run" && !$surprised) { // Fliehen (Fluchtversuch) output("`4Du bist zu beschäftigt damit wegzulaufen wie ein feiger Hund und kannst nicht gegen `^{$badguy['creaturename']}`4 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']}`4 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']}`4 versucht dich zu treffen, aber dein `^ABWEHRSCHLAG`4 trifft mit `^" . (0 - $selfdmg) . "`4 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']}`4 trifft dich mit `\$$selfdmg`4 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; } } } // Buffs nach Rundenende abarbeiten expire_buffs(); // Variablen zurücksetzen $creaturedmg = 0; $selfdmg = 0; // Bei Autofight nächste Runde ankündigen, wenn noch beide am Leben if ($count > 1 && $session['user']['hitpoints'] > 0 && $badguy['creaturehealth'] > 0) output("`2`bNächste Runde:`b`n"); // Bei Tod des einen Autofight beenden if ($session['user']['hitpoints'] <= 0 || $badguy['creaturehealth'] <= 0) $count = -1; // Sieger bestimmen if ($badguy['creaturehealth'] <= 0 && $session['user']['hitpoints'] > 0) { // User gewinnt $victory = true; $defeat = false; $count = 0; } else { // User hat (noch) nicht gewonnen if ($session['user']['hitpoints'] <= 0) { // User tot $defeat = true; $victory = false; $count = 0; } else { // Nichts passiert - weiter machen $defeat = false; $victory = false; } } } // Ende der Kampfrundenschleife // Rundenübersicht ausgeben if ($session['user']['hitpoints'] > 0 && $badguy['creaturehealth'] > 0 && ($_GET['op'] == "fight" || $_GET['op'] == "run")) { output("`2`bEnde der Runde:`b`n"); output(sprintf("`2%s`2's %spunkte: %u`0`n", $badguy['creaturename'], $session['user']['alive'] ? "Lebens" : "Seelen", $badguy['creaturehealth'])); output(sprintf("`DEINE %spunkte: `6%u`0`n",$session['user']['alive'] ? "Lebens" : "Seelen", $session['user']['hitpoints'])); } // Kampf vorbei? if ($victory || $defeat) { // Leibwächter und Heimvorteil-Buffs entfernen 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']); // Buffs nach PvP-Kampf wiederherstellen 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(); } } // Buffbackup aufräumen $session['user']['buffbackup'] = ""; } // Gegner serialisieren und speichern (für weitere Kämpfe) $session['user']['badguy'] = createstring($badguy); ?>