1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281: 282: 283: 284: 285: 286: 287: 288: 289: 290: 291: 292: 293: 294: 295: 296: 297: 298: 299: 300: 301: 302: 303: 304: 305: 306: 307: 308: 309: 310: 311: 312: 313: 314: 315: 316: 317: 318: 319: 320: 321: 322: 323: 324: 325: 326: 327: 328: 329: 330: 331: 332: 333: 334: 335: 336: 337: 338: 339: 340: 341: 342: 343: 344: 345: 346: 347: 348: 349: 350: 351: 352: 353: 354: 355: 356: 357: 358: 359: 360: 361: 362: 363: 364: 365: 366: 367: 368: 369: 370: 371: 372: 373: 374: 375: 376: 377: 378: 379: 380: 381: 382: 383: 384: 385: 386: 387: 388: 389: 390: 391: 392: 393: 394: 395: 396: 397: 398: 399: 400: 401: 402: 403: 404: 405: 406: 407: 408: 409: 410: 411: 412: 413: 414: 415: 416: 417: 418: 419: 420: 421: 422: 423: 424: 425: 426: 427: 428: 429: 430: 431: 432: 433: 434: 435: 436: 437: 438: 439: 440: 441: 442: 443: 444: 445: 446: 447: 448: 449: 450: 451: 452: 453: 454: 455: 456: 457: 458: 459: 460: 461: 462: 463: 464: 465: 466: 467: 468: 469: 470: 471: 472: 473: 474: 475: 476: 477: 478: 479: 480: 481: 482: 483: 484: 485: 486: 487: 488: 489: 490: 491: 492: 493: 494: 495: 496: 497: 498: 499: 500: 501: 502: 503: 504: 505: 506: 507: 508: 509: 510: 511: 512: 513: 514: 515: 516: 517: 518: 519: 520: 521: 522: 523: 524: 525: 526: 527: 528: 529: 530: 531: 532: 533: 534: 535: 536: 537: 538: 539: 540: 541: 542: 543: 544: 545: 546: 547: 548: 549: 550: 551: 552: 553: 554: 555: 556: 557: 558: 559: 560: 561: 562: 563: 564: 565: 566: 567: 568: 569: 570: 571: 572: 573: 574: 575: 576: 577: 578: 579: 580: 581: 582: 583: 584: 585: 586: 587: 588: 589: 590: 591: 592: 593: 594: 595: 596: 597: 598: 599: 600: 601: 602: 603: 604: 605: 606: 607: 608: 609: 610: 611: 612: 613: 614: 615: 616: 617: 618: 619: 620: 621: 622: 623: 624: 625: 626: 627: 628: 629: 630: 631: 632: 633: 634: 635: 636: 637: 638: 639: 640: 641: 642: 643: 644: 645: 646: 647: 648: 649: 650: 651: 652: 653: 654: 655: 656: 657: 658: 659: 660: 661: 662: 663: 664: 665: 666: 667: 668: 669: 670: 671: 672: 673: 674: 675: 676: 677: 678: 679: 680: 681: 682: 683: 684: 685: 686: 687: 688: 689: 690: 691: 692: 693: 694: 695: 696: 697: 698: 699: 700: 701: 702: 703: 704: 705: 706: 707: 708: 709: 710: 711: 712: 713: 714: 715: 716: 717: 718: 719: 720: 721: 722: 723: 724: 725: 726: 727: 728: 729: 730: 731: 732: 733: 734: 735: 736: 737: 738: 739: 740: 741: 742: 743: 744: 745: 746: 747: 748: 749: 750: 751: 752: 753: 754: 755: 756: 757: 758: 759: 760: 761: 762: 763: 764: 765: 766: 767: 768: 769: 770: 771: 772: 773: 774: 775: 776: 777: 778: 779: 780: 781: 782: 783: 784: 785: 786: 787: 788: 789: 790: 791: 792: 793: 794: 795: 796: 797: 798: 799: 800: 801: 802: 803: 804: 805: 806: 807: 808: 809: 810: 811: 812: 813: 814: 815: 816: 817: 818: 819: 820: 821: 822: 823: 824: 825: 826: 827: 828: 829: 830: 831: 832: 833: 834: 835: 836: 837: 838: 839: 840: 841: 842: 843: 844: 845: 846: 847: 848: 849: 850: 851: 852: 853: 854: 855: 856: 857: 858: 859: 860: 861: 862: 863: 864: 865: 866: 867: 868: 869: 870: 871: 872: 873: 874: 875: 876: 877: 878: 879: 880: 881: 882: 883: 884: 885: 886: 887: 888: 889: 890: 891: 892: 893: 894: 895: 896: 897: 898: 899: 900: 901: 902: 903: 904: 905: 906: 907: 908: 909: 910: 911: 912: 913: 914: 915: 916: 917: 918: 919: 920: 921: 922: 923: 924: 925: 926: 927: 928: 929: 930: 931: 932: 933: 934: 935: 936: 937: 938: 939: 940: 941: 942: 943: 944: 945: 946: 947: 948: 949: 950: 951: 952: 953: 954: 955: 956: 957: 958: 959: 960: 961: 962: 963: 964: 965: 966: 967: 968: 969: 970: 971: 972: 973: 974: 975: 976: 977: 978: 979: 980: 981: 982: 983: 984: 985: 986: 987: 988: 989: 990: 991: 992: 993: 994: 995: 996:
|
<?php
// Inventar in Kämpfen NIE anzeigen $show_invent = false;
//Anzahl der Kampfrunden die automatisch durchgeführt werden sollen $int_rounds_to_fight=max(1,intval($_GET['auto']));
/// /// Funktionen ///
/** * Aktiviere Spielerbuffs * * @param string $tag welche Buffs sollen aktiviert werden (roundstart, offense, defense) * @return array Array mit den Ergebnissen der Buffs */ function activate_buffs($tag) { global $session, $badguy, $out; $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();
if(is_array($session['bufflist'])) { foreach($session['bufflist'] as $key => $buff) { if (isset($buff['startmsg'])) { $msg = $buff['startmsg']; $msg = str_replace('{badguy}', $badguy['creaturename'], $msg); $out .= '`%'.$msg.'`0'; unset($session['bufflist'][$key]['startmsg']); }
//Ist der gewünschte Bufftyp im aktuell bearbeiteten Buff enthalten? (roundstart, offense, defense) $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); $out .= '`)'.$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 (!empty($buff['lifetap'])) { $result['lifetap'][] = $buff; //array_push($result['lifetap'], $buff); } if (isset($buff['damageshield']) && $buff['damageshield'] != 1) { $result['dmgshield'][] = $buff; //array_push($result['dmgshield'], $buff); } if (!empty($buff['regen']) && $activate) { // Wenn PHP-Code if(is_string($buff['regen']) && strlen($buff['regen']) > 0) { $buff['regen'] = stripslashes($buff['regen']); eval("\$buff['regen'] = $buff[regen];"); }
$hptoregen = (int)$buff['regen']; $hpdiff = $session['user']['maxhitpoints'] - $session['user']['hitpoints']; // Don't regen if we are above max hp $session['user']['hitpoints'] = min($session['user']['maxhitpoints'] , $session['user']['hitpoints'] + $hptoregen); /* Ichdenke die obige Linie ersetzt die folgenden komplett, oder? 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); $out .= '`)'.$msg.'`0`n';
} if (!empty($buff['minioncount']) && $activate) {
$who = -1; if (isset($buff['maxbadguydamage']) && $buff['maxbadguydamage'] != '') { if (isset($buff['maxbadguydamage']) && $buff['maxbadguydamage'] != '') { $buff['maxbadguydamage'] = stripslashes($buff['maxbadguydamage']); eval("\$buff['maxbadguydamage'] = $buff[maxbadguydamage];"); } $max = $buff['maxbadguydamage'];
if (isset($buff['minbadguydamage']) && $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); $out .= '`)'.$msg.'`0`n'; } } } } } return $result; }
function process_lifetaps($ltaps, $damage) { global $session, $badguy, $out;
foreach ($ltaps as $key=>$buff) { $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']; } elseif ($damage == 0) { $msg = $buff['effectfailmsg']; } elseif ($damage < 0) { $msg = $buff['effectfailmsg']; } } $session['user']['hitpoints'] += $healhp; $msg = str_replace('{badguy}',$badguy['creaturename'], $msg); $msg = str_replace('{damage}',$healhp, $msg); if (strlen($msg) > 0) { $out .= '`)'.$msg.'`n'; } } }
/** * Bearbeitet Buffs die Schaden absorbieren * * @param array $dshield Die Buffs die Schaden absorbieren * @param int $damage zugefügter Schaden */ function process_dmgshield($dshield, $damage) { global $session, $badguy, $out;
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 != '') { $out .= '`)'.$msg.'`n'; } } }
/** * Lösche Buffs aus der Session die keine Runden mehr aufweisen */ function expire_buffs() { global $session, $badguy, $out; if(is_array($session['bufflist'])) { foreach($session['bufflist'] as $key => $buff) { 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); $out .= '`)'.$msg.'`n'; } unset($session['bufflist'][$key]); } } } } }
/// /// Ende Funktionen ///
//Gegner laden $badguy = unserialize($session['user']['badguy']); if ($badguy['creaturelevel']==0) { $adjustment = 0; } else { $adjustment = ($session['user']['level']/$badguy['creaturelevel']); }
if ($badguy['pvp']) { $adjustment=1; }
$out = ''; $hp_name = ($session['user']['alive'])?'Lebenspunkte':'Seelenpunkte';
///////////// // FIGHT if ($_GET['op']=='fight') { // spells if ($_GET['skill']=='zauber') { $id = (int)$_GET['itemid']; if($id == 0) { $out .= 'Merkwürdig.. Der Zauber scheint sich in Luft aufgelöst zu haben. Immer diese Billigware..'; } else { $item = item_get(' id= '.$id );
if (!empty($item['battle_hook'])) { item_load_hook($item['battle_hook'],'battle',$item); }
if(!$item_hook_info['hookstop']) { if($item['buff1'] > 0) {$list .= ','.$item['buff1'];} if($item['buff2'] > 0) {$list .= ','.$item['buff2'];} item_set_buffs( ITEM_BUFF_FIGHT , $list ); $item['gold']=round($item['gold']*($item['value1']/($item['value2']+1))); $item['gems']=round($item['gems']*($item['value1']/($item['value2']+1))); $item['value1']--; if ($item['value1']<=0 && $item['hvalue']<=0){
//Fehler, ID ist manchmal leer // ID darf nicht leer sein! Wenn die ID leer ist, läuft irgendwas anderes schief //if(!empty($item['id'])) //{ item_delete(' id='.(int)$item['id']); //} } else{ item_set(' id='.$item['id'], $item); } } }
} // 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' ); } elseif (file_exists('./module/specialty_modules/specialty_'.$_GET['skill'].'.php')) { require_once('./module/specialty_modules/specialty_'.$_GET['skill'].'.php'); $f_info = 'specialty_'.$_GET['skill'].'_info'; $f_info(); $f_run = 'specialty_'.$_GET['skill'].'_run'; $f_run('buff'); } } // end if fight
if ($badguy['creaturehealth']>0 && $session['user']['hitpoints']>0) { $out .= '`c`b`$~ ~ ~ Kampf ~ ~ ~`0`b`c `n`@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']) { $out .= '`2Level: `6'.$badguy['creaturelevel'].'`0`n'; } else { $out .= '`2Level: `6Untoter`0`n'; }
//kleines Extra by Takehon: Lebenspunkteanzeige mit Grafbar, dynamisch, immer 150px breit if ($session['user']['prefs']['showhpbar']==true) { $hp_value=round($session['user']['hitpoints']); $hp_maxvalue=($session['user']['alive']) ? max($session['user']['maxhitpoints'],$session['user']['hitpoints']) : ($session['user']['level'] * 5 + 50); $maxwert=max($badguy['creaturehealth'],$hp_maxvalue); $faktor=150/$maxwert; $out .= "`b`2Beginn der Runde:`0`b `n<table border='0'> <tr> <td>`2".$badguy['creaturename']."`2's ".$hp_name.": `6".round($badguy['creaturehealth'])." `0</td> <td>".grafbar($hp_maxvalue,$badguy['creaturehealth'],round($maxwert*$faktor),10,'badguyhealth_start')."</td> </tr><tr> <td>`2DEINE ".$hp_name.": `6".round($hp_value)." `0</td> <td>".grafbar($hp_maxvalue,$hp_value,round($hp_maxvalue*$faktor),10,'yourhealth_start')."</td> </tr> </table>`n"; } else { $out .= '`2`bBeginn der Runde:`b`n `2'.$badguy['creaturename'].'`2\'s '.$hp_name.': `6'.round($badguy['creaturehealth']).' `0`n `2DEINE '.$hp_name.': `6'.round($session['user']['hitpoints']).'`0`n'; }
}
//Alle Buffs werden auf "unbenutzt" gesetzt if(is_array($session['bufflist'])) { foreach($session['bufflist'] as $key => $buff) { $session['bufflist'][$key]['used'] = 0; } }
if ($badguy['pvp'] && count($session['bufflist'])>0 && is_array($session['bufflist'])) { if (strlen($session['user']['buffbackup'])==0) { $out .= '`&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']>>1,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) { $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' ); } // Festung elseif ($_GET['bg']==3) { $session['bufflist']['festung'] = array('startmsg'=>'`n`$'.$badguy['creaturename'].' `$hat in seiner Festung dir gegenüber einen gewaltigen Vorteil!`n`n', 'name'=>'`$Verteidigungsanlagen', 'rounds'=>50, 'wearoff'=>'Die Festung kann deinem Gegner nun auch nicht mehr helfen.', 'minioncount'=>2, 'maxgoodguydamage'=> round($session['user']['level']), 'effectmsg'=>'`7Durch die Verteidigungsanlagen bekommst du zusätzlich `${damage}`7 Schadenspunkte.', 'effectnodmgmsg'=>'', 'activate'=>'roundstart' ); } elseif ($_GET['bg']==4) // Turm { $session['bufflist']['turm'] = array('startmsg'=>'`n`$'.$badguy['creaturename'].' `$hat in seinem Turm dir gegenüber einen enormen Vorteil!`n`n', 'name'=>'`$Gute Verteidigungsanlagen', 'rounds'=>75, 'wearoff'=>'Der Turm kann deinen Gegner nun auch nicht mehr schützen.', 'minioncount'=>3, 'maxgoodguydamage'=> round($session['user']['level']/1,2)+1, 'effectmsg'=>'`7Durch die Verteidigungsanlagen bekommst du zusätzlich `${damage}`7 Schadenspunkte.', 'effectnodmgmsg'=>'', 'activate'=>'roundstart' ); } elseif ($_GET['bg']==5) // Burg { $session['bufflist']['burg'] = array('startmsg'=>'`n`$'.$badguy['creaturename'].' `$hat in seiner Burg dir gegenüber einen extremen Vorteil!`n`n', 'name'=>'`$Paranoid gute Verteidigungsanlagen', 'rounds'=>100, 'wearoff'=>'Die Burg kann deinem Gegner nun auch nicht mehr helfen.', 'minioncount'=>4, 'maxgoodguydamage'=> round($session['user']['level']/1,2)+1, 'effectmsg'=>'`7Durch die Verteidigungsanlagen bekommst du zusätzlich `${damage}`7 Schadenspunkte.', 'effectnodmgmsg'=>'', 'activate'=>'roundstart' ); } } } // Run the beginning of round buffs (this also calculates all modifiers)
// Alle $int_rounds_to_fight Kampfrunden abarbeiten for ($int_rounds_to_fight; $int_rounds_to_fight > 0; $int_rounds_to_fight--) { if ($badguy['creaturehealth']>0 && $session['user']['hitpoints']>0) { //Wetterbeeinflussung if ($session['user']['alive'] && $session['user']['buffbackup']=='') { if (e_rand(1,6)==2) { //Auswirkung des Wetters auf den User im Kampf abholen $arr_battle_influence_buff = Weather::get_battle_influence_buff();
if(count($arr_battle_influence_buff) > 0) { $session['bufflist']['weather'] =& $arr_battle_influence_buff; }
} } //Wetterbeeinflussung
// GILDENmod if (is_array($guild_buffs)) { $session['bufflist'] = array_merge($session['bufflist'],$guild_buffs); } // END Firmenmod
//Buffing am Rundenstart $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); // Wenn kein Schaden entsteht, irgendwann abbrechen: Sonst Endlosschleife $int_iterations = 0; 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>>1); //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>>1); //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: $int_rounds_to_fight`n"); $int_iterations++; if($int_iterations > 100) { break; } } } else { $creaturedmg=0; $selfdmg=0; $int_rounds_to_fight=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'))) { // Beginn: LP feststellen $badguy['starthp'] = $badguy['creaturehealth']; $badguy['actor_starthp'] = $session['user']['hitpoints'];
if ($badguy['pvp']) { $out .= '`b`^'.$badguy['creaturename'].'`$\'s Fähigkeiten erlauben deinem Gegner den ersten Schlag!`0`b`n`n'; } else { $out .= '`b`^'.$badguy['creaturename'].'`$ überrascht dich und hat den ersten Schlag!`0`b`n`n'; } $_GET['op']='run'; $surprised=true; } else { if ($_GET['op']=='search') { $out .= '`b`$Dein Können erlaubt dir den ersten Angriff!`0`b`n`n'; // Beginn: LP feststellen $badguy['starthp'] = $badguy['creaturehealth']; $badguy['actor_starthp'] = $session['user']['hitpoints']; } $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) { $out .= '`&`bDu holst zu einem <font size="+1">MEGA</font> Powerschlag aus!!!`b`n'; } else { $out .= '`&`bDu holst zu einem DOPPELTEN Powerschlag aus!!!`b`n'; } } else { if ($atk>($session['user']['attack']<<1)) { $out .= '`&`bDu holst zu einem Powerschlag aus!!!`b`0`n'; } elseif ($atk>$session['user']['attack']*1.25) { $out .= '`7`bDu holst zu einem kleinen Powerschlag aus!`b`0`n'; } } } if ($creaturedmg==0) { $out .= '`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) { $out .= '`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 { $out .= '`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); } } if ($creaturedmg>$session['user']['punch']) { $session['user']['punch']=$creaturedmg; $out .= '`@`b`c--- DAS WAR DEIN BISHER HÄRTESTER SCHLAG! ---`c`b`n'; } } } else if ($_GET['op']=='run' && !$surprised) { $out .= '`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) { $out .= '`^'.$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) { $out .= '`^'.$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 { $out .= '`^'.$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; } // Specialfähigkeiten des Badguy: if ($badguy['creaturehealth']>0 && $session['user']['hitpoints']>0 && $badguy['starthp'] > 0 && $badguy['actor_starthp'] > 0 && !$badguy['pvp'] && !$badguy['acctid'] && isset($badguy['special_func']) ) { $badguy_hp_diff = round($badguy['creaturehealth']/$badguy['starthp'],2); $actor_hp_diff = round($session['user']['hitpoints']/$badguy['actor_starthp'],2); $diff = $badguy_hp_diff - $actor_hp_diff; // Wenn es schlecht für Badguy ausschaut if ($diff < 0) { // Feststellen, ob Spieler stark gebufft // -2 wegen Multiplikatoren: 1 = Basis, zwei Werte hier $buffs_actor = $atkmod + $defmod - 2; $buffs_badguy = 2 - ($creatureatkmod + $creaturedefmod); $buffs_actor += $buffs_badguy; if ($buffs_actor > $badguy['special_minbuff']) { if ($badguy['special_uses'] > 0) { // Special einsetzen! $badguy['special_func']( $badguy ); } } // END stark gebufft } // END Diff groß genug } // END Special vorhanden } } expire_buffs();
$creaturedmg=0; $selfdmg=0; if ($int_rounds_to_fight>1 && $session['user']['hitpoints']>0 && $badguy['creaturehealth']>0) { $out .= '`2`bNächste Runde:`b`n'; } if ($session['user']['hitpoints']<=0 || $badguy['creaturehealth']<=0) { $int_rounds_to_fight=-1; }
if ($badguy['creaturehealth']<=0 && $session['user']['hitpoints']>0) { $victory=true; $defeat=false; $int_rounds_to_fight=0; } else { if ($session['user']['hitpoints']<=0) { $defeat=true; $victory=false; $int_rounds_to_fight=0; } else { $defeat=false; $victory=false; } } }
if ($session['user']['hitpoints']>0 && $badguy['creaturehealth']>0 && ($_GET['op']=='fight' || $_GET['op']=='run')) {
//kleines Extra by Takehon: Lebenspunkteanzeige mit Grafbar, dynamisch, immer 150px breit if ($session['user']['prefs']['showhpbar']==true) { $hp_value=round($session['user']['hitpoints']); $hp_maxvalue=($session['user']['alive'])?max($session['user']['maxhitpoints'],$session['user']['hitpoints']):($session['user']['level'] * 5 + 50); $maxwert=max($badguy['creaturehealth'],$hp_maxvalue); $faktor=150/$maxwert; $out .= "`2`bEnde der Runde:`b`0 `n<table border='0'> <tr> <td>`2".$badguy['creaturename']."`2's ".$hp_name.": `6".round($badguy['creaturehealth'])." `0</td> <td>".grafbar($hp_maxvalue,$badguy['creaturehealth'],round($maxwert*$faktor),10,'badguyhealth_end')."</td> </tr><tr> <td>`0`2DEINE ".$hp_name.": `6".round($hp_value)." `0</td> <td>".grafbar($hp_maxvalue,$hp_value,round($hp_maxvalue*$faktor),10,'yourhealth_end')."</td> </tr> </table>`n"; } else { $out .= '`2`bEnde der Runde:`b`n `2'.$badguy['creaturename'].'`2\'s '.$hp_name.': `6'.round($badguy['creaturehealth']).' `0`n `2DEINE '.$hp_name.': `6'.round($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 (isset($session['bufflist']['festung'])) { unset($session['bufflist']['festung']); } if (isset($session['bufflist']['turm'])) { unset($session['bufflist']['turm']); } if (isset($session['bufflist']['burg'])) { unset($session['bufflist']['burg']); }
if (!is_array($session['bufflist']) || count($session['bufflist']) <= 0) { if (!$badguy['maze']) { $session['bufflist'] = unserialize($session['user']['buffbackup']); } if (is_array($session['bufflist'])) { if (count($session['bufflist'])>0 && $badguy['pvp']) { $out .= '`&Die Götter gewähren dir wieder alle deine speziellen Fähigkeiten.`n`n'; } } else { $session['bufflist'] = array(); } } if (!$badguy['maze']) { $session['user']['buffbackup'] = ""; } $session['user']['badguy'] = ''; $session['user']['hitpoints']=max(0,$session['user']['hitpoints']); } else { $session['user']['badguy']=serialize($badguy); }
output($out); ?>
|