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:
|
<?php /** * alchemie.php: Stellt Basisanwendung nebst Userführung für Alchemie / Misch / Komboaktionen * des Dragonslayeredition-Itemsystems bereit. Ist mehr oder minder sehr vielseitig einsetz- bar: Häuser, Inventar etc. * @author talion <t [-[at]-] ssilo.de> * @version DS-E V/2 */
require_once('common.php');
// Array mit Rezeptstatus $arr_rec_states = array(0=>'unbekannt',1=>'bekannt',2=>'beherrscht',3=>'perfektioniert');
page_header('Alchemistischer Schmelztiegel');
output('`&`b`cAlchemistischer Schmelztiegel`b`c`n`n');
// Navitext für 'Beenden'-Button $str_back_txt = 'Kammer schließen';
switch($_GET['act']) {
case 'mix':
$arr_ids = array(); $str_del_ids = '';
if(sizeof($session['items_alchemie']) > 1) {
$str_del_ids = '-1';
foreach($session['items_alchemie'] as $item) { $str_del_ids .= ','.$item['id']; }
$combo = item_get_combo($session['items_alchemie'][0]['tpl_id'],$session['items_alchemie'][1]['tpl_id'],(isset($session['items_alchemie'][2]) ? $session['items_alchemie'][2]['tpl_id'] : ''),ITEM_COMBO_ALCHEMY);
if($combo['combo_id'] > 0) {
if(!empty($combo['result'])) { $item_hook_info['product'] = item_get_tpl(' tpl_id="'.$combo['result'].'" '); } else { $item_hook_info['product']['tpl_name'] = $combo['combo_name']; }
// Komboliste $arr_tmp = user_get_aei('combos'); $arr_combo_ids = unserialize($arr_tmp['combos']);
$item_hook_info['min_chance'] = e_rand(1,255);
if(isset($arr_combo_ids[$combo['combo_id']]) && $arr_combo_ids[$combo['combo_id']]>0) { if($arr_combo_ids[$combo['combo_id']] >= 2) { $item_hook_info['min_chance'] = max($item_hook_info['min_chance']-10,1); } elseif($arr_combo_ids[$combo['combo_id']] >= 3) { $item_hook_info['min_chance'] = max($item_hook_info['min_chance']-15,1); } elseif ($arr_combo_ids[$combo['combo_id']] >= 1) { $item_hook_info['min_chance'] = max($item_hook_info['min_chance']-5,1); } } else { $item_hook_info['min_chance'] = min($item_hook_info['min_chance']+5,255); }
$item_hook_info['victory_msg'] = '`c`b`@Es hat geklappt!`&`b`c`n`n Du hast die knifflige alchemistische Prozedur erfolgreich zu Ende gebracht und '.$item_hook_info['product']['tpl_name'].'`& hergestellt!`nWeiter so, Meister!`n Du verlierst einen Waldkampf.`n';
$item_hook_info['fail_msg'] = '`c`b`4Das war wohl nichts!`&`b`c`n`n Mitten in der Prozedur rutscht dir ein Kolben aus der Hand und zerspringt auf dem Boden in 1000 Scherben! Schade, so gibt das natürlich kein '.$item_hook_info['product']['tpl_name'].'`&.. Die Zutaten sind leider nicht mehr zu gebrauchen.`n Du verlierst einen Waldkampf.`n'; $item_hook_info['del_ids'] = $str_del_ids; $item_hook_info['items_in'] = $session['items_alchemie'];
$session['user']['turns']--;
if(!$item_hook_info['hookstop']) {
if($item_hook_info['min_chance'] <= $combo['chance']) {
output($item_hook_info['victory_msg']);
if(!empty($combo['hook'])) { item_load_hook($combo['hook'],'alchemy',$combo); }
if(isset($item_hook_info['product']['tpl_id'])) { item_add($session['user']['acctid'],0,$item_hook_info['product']); }
// Rezeptbuch aktualisieren if(!isset($arr_combo_ids[$combo['combo_id']])) { $arr_combo_ids[$combo['combo_id']] = 1; user_set_aei(array('combos'=>addslashes(serialize($arr_combo_ids)))); output('`n`n`@`bDu nimmst diese alchemistische Prozedur in dein Rezeptbuch auf!`b`&`n'); } else { if($arr_combo_ids[$combo['combo_id']] < 3) { $arr_combo_ids[$combo['combo_id']]++; user_set_aei(array('combos'=>addslashes(serialize($arr_combo_ids)))); output('`n`n`@`bDu verbesserst dein Können in der Anwendung dieses Rezepts auf '.$arr_rec_states[$arr_combo_ids[$combo['combo_id']]].'!`b`&`n'); } else { output('`n`n`2`bIn der Anwendung dieses Rezepts bist du bereits ein Meister.`b`&`n'); } } // END Rezeptbuch aktualisieren
} else {
output($item_hook_info['fail_msg']); if(!isset($arr_combo_ids[$combo['combo_id']])) { $arr_combo_ids[$combo['combo_id']] = 0; user_set_aei(array('combos'=>addslashes(serialize($arr_combo_ids)))); output('`n`n`@Du notierst dir dieses Rezept für spätere Versuche.`&`n'); }
}
item_delete(' id IN ('.$item_hook_info['del_ids'].') AND owner='.$session['user']['acctid']); }
unset($session['items_alchemie']);
} else { // Keine Combo gefunden
output('`&Du versuchst eine halbe Ewigkeit die unterschiedlichen Gegenstände irgendwie in eine sinnvolle Verbindung miteinander zu bringen, doch nichts passiert.');
}
}
addnav('Zurück','alchemie.php'); break;
case 'start':
unset($session['items_alchemie']);
// Übergebenen Return-String speichern set_restorepage_history($_REQUEST['ret']);
redirect('alchemie.php?itemid='.$_GET['itemid']);
break;
case 'end':
unset($session['items_alchemie']);
$ret = get_restorepage_history();
if(empty($ret)) { $ret = 'news.php'; }
redirect($ret); break;
case 'empty':
unset($session['items_alchemie']);
redirect('alchemie.php'); break;
case 'insert':
$item = item_get(' id='.(int)$_GET['id']); $bool_exists = false;
if($item['id'] > 0) { if(is_array($session['items_alchemie'])) { foreach($session['items_alchemie'] as $pos=>$i) { if($i['id'] == $item['id']) { $bool_exists = true; } } } if(!$bool_exists) { $session['items_alchemie'][] = $item; } }
redirect('alchemie.php?cat='.$_REQUEST['cat'].'&page='.$_REQUEST['page']); break;
case 'change_pos':
$int_pos = (int)$_GET['pos']; $int_new_pos = (int)$_GET['new_pos'];
if(!empty($session['items_alchemie'][$int_pos]) && !empty($session['items_alchemie'][$int_new_pos])) { $arr_item_tmp = $session['items_alchemie'][$int_pos]; $session['items_alchemie'][$int_pos] = $session['items_alchemie'][$int_new_pos]; $session['items_alchemie'][$int_new_pos] = $arr_item_tmp; }
redirect('alchemie.php?cat='.$_REQUEST['cat'].'&page='.$_REQUEST['page']); break;
case 'out':
array_splice($session['items_alchemie'],$_GET['pos'],1);
redirect('alchemie.php?cat='.$_REQUEST['cat'].'&page='.$_REQUEST['page']); break;
case 'book':
addnav('Buch schließen','alchemie.php');
// Komboliste $arr_tmp = user_get_aei('combos'); $arr_combo_ids = unserialize($arr_tmp['combos']); unset($arr_combo_ids['runes']); $int_cid = (int)$_GET['cid'];
if(!empty($int_cid)) {
$arr_combo = db_fetch_assoc(db_query('SELECT * FROM items_combos WHERE combo_id='.$int_cid));
$session['items_alchemie'] = array();
$str_ids = '0';
for($i=1; $i<=$arr_combo_ids[$int_cid]; $i++) { if(!empty($arr_combo['id'.$i])) {
// Wenn keine Wildcard if('*' != $arr_combo['id'.$i]) {
// Item auswählen $arr_item = item_get(' owner='.$session['user']['acctid'].' AND i.tpl_id="'.$arr_combo['id'.$i].'" AND i.id NOT IN ('.addslashes($str_ids).') AND deposit1!='.ITEM_LOC_EQUIPPED.'',false);
if(false === $arr_item) { output('`$Zutat '.$i.' befindet sich leider nicht in deinem Besitz..`&`n`n'); break; }
// Item nicht zweimal in Mischung packen $str_ids .= ','.$arr_item['id'];
$session['items_alchemie'][$i-1] = $arr_item;
}
} }
if(sizeof($session['items_alchemie'])) { redirect('alchemie.php'); } else { output('`&Irgendwie solltest du dieses Rezept besser von Hand mischen. Faulheit ist nicht immer von Vorteil!`n`n'); page_footer(); exit; }
}
$str_out = '`c`bRezeptbuch '.$session['user']['login'].'s`b`c`n`n';
if(empty($arr_combo_ids)) { $str_out .= 'Bisher tummeln sich auf den leeren Seiten deines Rezeptbuches nur unmotiviert hingekritzelte Strichmännchen. Hoffentlich bist du als Alchemist begabter..:`n`n <img src="images/strichm.gif" alt="Abscheuliches Strichmännchen">'; } else {
$sql = 'SELECT * FROM items_combos WHERE combo_id IN ('.addslashes(implode(',',array_keys($arr_combo_ids))).') AND chance>0 ORDER BY result ASC'; $res = db_query($sql);
if(!db_num_rows($res)) { $str_out .= 'Bisher tummeln sich auf den leeren Seiten deines Rezeptbuches nur unmotiviert hingekritzelte Strichmännchen. Hoffentlich bist du als Alchemist begabter..:`n`n <img src="images/strichm.gif" alt="Abscheuliches Strichmännchen">'; } else {
$str_out .= '<table cellpadding="5" cellspacing="5"> <tr> <td>`~`bRezept`b</td><td>`~`bFortschritt`b</td><td>`~`bBetrachten`b</td><td>`~`bEinsetzen`b</td> </tr>'; while($arr_combo = db_fetch_assoc($res)) {
$str_state = $arr_rec_states[$arr_combo_ids[$arr_combo['combo_id']]];
$str_out .= '<tr> <td>`~'.$arr_combo['combo_name'].'`0</td> <td>`~'.$str_state.'`0</td> <td>'.create_lnk('`~ » Betrachten`0','alchemie.php?act=book_show&cid='.$arr_combo['combo_id']).'</td> <td>'.($session['user']['turns'] > 0 ? create_lnk('`~ » Einsetzen`0','alchemie.php?act=book&cid='.$arr_combo['combo_id']) : '`4Zu erschöpft.`0').'</td> </tr>'; } $str_out .= '</table> '; }
}
$str_out = show_scroll($str_out);
output('<div align="center">'.$str_out.'</div>',true);
break;
case 'book_show':
// Komboliste $arr_tmp = user_get_aei('combos'); $arr_combo_ids = unserialize($arr_tmp['combos']); unset($arr_combo_ids['runes']);
$int_cid = (int)$_GET['cid'];
$arr_combo = db_fetch_assoc(db_query('SELECT * FROM items_combos WHERE combo_id='.$int_cid));
$str_state = $arr_rec_states[$arr_combo_ids[$int_cid]];
$str_out .= '`c`b'.$arr_combo['combo_name'].' ('.$str_state.'):`b`c`n`n';
// Zielitem auswählen $arr_item = item_get_tpl(' tpl_id="'.$arr_combo['result'].'"'); $str_out .= 'Zur Herstellung von `b'.$arr_item['tpl_name'].'`b`0 nehme man:`n`n';
for($i=1; $i<=3; $i++) { if(!empty($arr_combo['id'.$i])) {
$str_out .= 'Zum '.ordinal($i).': `b';
if($arr_combo_ids[$int_cid] < $i) { $str_out .= '`iUnbekannte Zutat`i'; } else {
// Wenn Wildcard if('*' == $arr_combo['id'.$i]) { $str_out .= '`iBeliebige Zutat`i'; } else {
// Item auswählen $arr_item = item_get_tpl(' alchemy=1 AND tpl_id="'.$arr_combo['id'.$i].'"');
if(false === $arr_item) { $str_out .= '`$Nicht-existente Zutat`0'; } else { $int_count = item_count('tpl_id="'.$arr_combo['id'.$i].'" AND owner='.$session['user']['acctid'].' AND deposit1!='.ITEM_LOC_EQUIPPED.''); $str_out .= $arr_item['tpl_name'].'`0'.($int_count > 0 ? ' (`@'.$int_count.'x vorhanden`0)' : ' (`$nicht vorhanden`0)'); }
} }
$str_out .= '`b`n`n';
} }
output('<div align="center">'.show_scroll($str_out).'</div>');
if($session['user']['turns'] > 0) { addnav('Dieses Rezept verwenden!','alchemie.php?act=book&cid='.$int_cid); } addnav('Zurück zum Buch','alchemie.php?act=book'); addnav('Buch schließen','alchemie.php');
break;
case 'convert':
$arr_item = item_get('id='.(int)$_GET['itemid']);
$item_tpl = item_get_tpl('tpl_id="alchemtgl"','tpl_gold,tpl_gems'); $item_tpl['tpl_gold'] = round($item_tpl['tpl_gold'] * 1.1); $item_tpl['tpl_gems'] = round($item_tpl['tpl_gems'] * 1.1);
$session['user']['gems'] += $item_tpl['tpl_gems']; $session['user']['gold'] += $item_tpl['tpl_gold'];
output('Dragonslayer sprach: Es werde Licht! und es ward Licht. Und Dragonslayer sah, dass es gut war. Und du hast nun '.$item_tpl['tpl_gold'].' Gold und '.$item_tpl['tpl_gems'].' Edelsteine wieder (was sogar noch 10% über dem Kaufpreis liegt - wenn das nicht mal ein Geschäft war..)! Dein alchemistischer Schmelztiegel verschwindet in einer Dimensionslücke und ward fortan nimmermehr gesehen..');
item_delete('id='.$arr_item['id'],1); addnav('JIPPIE!','village.php');
break;
default:
output('In dieser magischen, eher beengten Kammer, in der sich die Tinkturen und Extrakte bis an die Decke stapeln, kannst du alchemistische Experimente durchführen. Auf dem Werktisch ist Platz für bis zu drei Zutaten - die richtige Mixtur musst du selbst finden. Dabei spielt natürlich auch die Reihenfolge eine Rolle..`n Falls dein Rezept ein Ergebnis hervorbringt, wirst du einen Waldkampf benötigen. Ansonsten kannst du ohne Gefahr mischen und versuchen.`n`c');
$str_ids = '0';
addnav('Zurück'); addnav($str_back_txt,'alchemie.php?act=end');
$arr_item = item_get('id='.(int)$_GET['itemid']);
if($arr_item['owner'] == $session['user']['acctid']) { addnav('Aktionen'); addnav('`^Rückerstattung des Kaufpreises!`0','alchemie.php?act=convert&itemid='.$arr_item['id'],false,false,false,false,'Bist du dir sicher?');
} output('`n`$Schmelztiegel sind nun im Anbau Alchemistisches Labor integriert. Der Besitzer des Tiegels kann diesen gegen eine Entschädigung zurückgeben. Demnächst werden die Schmelztiegel ihre Kraft verlieren!`0`n'); //page_footer();
//addnav('Hilfsmittel'); //muss weg, neues Datenformat. addnav('Rezeptbuch','alchemie.php?act=book');
if($session['user']['turns'] <= 0) { output('`n`&Heute bist du leider bereits zu erschöpft, um alchemistische Experimente durchzuführen!`n');
page_footer(); exit; }
// Standard, Inventar mit mögl. Items anzeigen if(is_array($session['items_alchemie']) && sizeof($session['items_alchemie']) > 0) {
$str_ids = '0'; foreach ($session['items_alchemie'] as $i) { $str_ids .= ','.$i['id']; }
output('`&`bBisher im Schmelztiegel:`n`b`i `n');
$int_pos = 0;
foreach($session['items_alchemie'] as $i) {
output(' ~~~~ Zutat '.($int_pos+1).': '.$i['name'].'`&' .(!empty($session['items_alchemie'][$int_pos+1]) ? ' [ '.create_lnk('`b↓`b','alchemie.php?act=change_pos&pos='.$int_pos.'&new_pos='.($int_pos+1).'&cat='.$_REQUEST['cat'].'&page='.$_REQUEST['page']).' ]' : '') .(!empty($session['items_alchemie'][$int_pos-1]) ? ' [ '.create_lnk('`b↑`b','alchemie.php?act=change_pos&pos='.$int_pos.'&new_pos='.($int_pos-1).'&cat='.$_REQUEST['cat'].'&page='.$_REQUEST['page']).' ]' : '') .' [ '.create_lnk('Herausnehmen','alchemie.php?act=out&pos='.$int_pos.'&cat='.$_REQUEST['cat'].'&page='.$_REQUEST['page']).' ]`& `n '); $int_pos++; } output('`i ');
if(sizeof($session['items_alchemie']) > 1) { $link = 'alchemie.php?act=mix'; addnav('',$link); output(''.create_lnk('Leeren!','alchemie.php?act=empty'),true); output(' -------------- <a href="'.$link.'">Mischen!</a>',true); }
output('`n`n'); }
if(sizeof($session['items_alchemie']) >= 3) { output('`nMehr bringst du in den alchemistischen Schmelztiegel leider nicht hinein!`n`n'); $options = array(''=>''); } else { $options = array('Mischen'=>'&act=insert&cat='.$_REQUEST['cat'].'&page='.$_REQUEST['page']); } output('`c');
item_invent_set_env(ITEM_INVENT_HEAD_CATS | ITEM_INVENT_HEAD_ORDER | ITEM_INVENT_HEAD_LOC_PLAYER | ITEM_INVENT_HEAD_SEARCH);
item_invent_show_data(item_invent_head(' owner='.$session['user']['acctid'].' AND showinvent=1 AND i.tpl_id!="alchemtgl" AND deposit1!='.ITEM_LOC_EQUIPPED.' AND ( alchemy=1 ) AND i.id NOT IN ('.$str_ids.')',20),'`iLeider bietet sich kein Gegenstand aus deinem Beutel für eine solche Mischung an..`i',$options);
break;
}
page_footer(); ?>
|