* @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
';
}
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
';
}
else {
$str_out .= '
| `~`bRezept`b | `~`bFortschritt`b | `~`bBetrachten`b | `~`bEinsetzen`b |
| `~'.$arr_combo['combo_name'].'`0 | `~'.$str_state.'`0 | '.create_lnk('`~ » Betrachten`0','alchemie.php?act=book_show&cid='.$arr_combo['combo_id']).' | '.($session['user']['turns'] > 0 ? create_lnk('`~ » Einsetzen`0','alchemie.php?act=book&cid='.$arr_combo['combo_id']) : '`4Zu erschöpft.`0').' |