You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

137 lines
4.6 KiB

<?php
/*
* Created on 15.04.2008
*
* @copyright (c) 2009 animegame.eu
* @license http://www.gnu.org/licenses/gpl-3.0.html GNU General Public Licence
*
*/
// Um die ganzen Fightscheisse modularer zu machen (noch nicht fertig)
class Kaempfer{
private $charid;
private $hp, $hpmax;
private $mp, $mpmax;
private $speed;
private $verteidigung;
private $starke;
private $ausdauer;
private $glueck;
private $aufgeben;
private $isNPC;
private $attackenhandler;
/**
* Charid = ID des Chars, Buffs = ob Ruestungsbonus mithinzugerechnet werden soll
*/
function __construct($char, $alternative = true, $buffs = true){
if(is_numeric($char)){ // ID, wenn keine Abfrage vorhanden
$char = mysqli_fetch_assoc(db_query('SELECT * FROM chars WHERE id='.$char));
} else if(!is_array($char)){ // Wenn es weder ID noch Array ist
return; // breche ab, dann kann nichts mit angefangen werden
}
// Nun ist char auf jedenfall was wir brauchen.
$this->speed = $char['speed'];
$this->verteidigung = $char['verteidigung'];
$this->starke = $char['starke'];
$this->ausdauer = $char['ausdauer'];
$this->glueck = $char['glueck'];
$this->aufgeben = $char['aufgeben'];
$this->charid = $char['id'];
if($buffs == true){ // Ruestungen erlaubt???
$char_buffs = mysqli_fetch_assoc(db_query('SELECT sum(i.hp) as hp, sum(i.mp) as mp, sum(i.starke) as starke, sum(i.verteidigung) as verteidigung, sum(i.speed) as speed FROM ware w LEFT JOIN item i ON(i.id=w.item_id) WHERE w.id IN ('.$char['kampf_item'].')'));
$this->starke += $char_buffs['starke'];
$k_speed[0] = $char['speed'] + $char_buffs['speed'];
$this->verteidigung += $char_buffs['verteidigung'];
$k_hp1[0] += $char_buffs['hp'];
$k_hp1[1] += $char_buffs['hp'];
$k_mp1[0] += $char_buffs['mp'];
$k_mp1[1] += $char_buffs['mp'];
}
$this->attackenhandler = new Attackenauswahl($char);
}
}
class Monster extends Kaempfer{
function __construct($monster){
if(is_numeric($monster)){
$qry = db_query('SELECT * FROM quest_monster WHERE id = '.$monster);
$monster = mysqli_fetch_assoc($qry);
} else if(!is_array($monster)){
// Fehler
return;
}
// Zuweisung
}
}
class Attacke{
function __construct($attacke){
if(is_numeric($attacke)){
$qry = db_query('SELECT * FROM attacken WHERE id = '.$attacke);
} else if(!is_array($attacke)){
// Fehler!!
return;
}
// Zuweisung
}
}
class Attackenauswahl{
private $attacke1;
private $altervatives;
private $attacke2;
function __construct($char){
if(is_numeric($char)){ // ID, wenn keine Abfrage vorhanden
$char = mysqli_fetch_assoc(db_query('Select attacken, attacken2, auswahl1, auswahl2, auswahl3 from chars where id = '.$char));
} else if(!is_array($char)){ // Wenn es weder ID noch Array ist
return; // breche ab, dann kann nichts mit angefangen werden
}
$this->attacke1 = preg_split('#,#',$char['attacken']);
$this->attacke2 = preg_split('#,#',$char['attacken2']);
$this->altervatives[0] = preg_split('#,#', $char['auswahl1']);
$this->altervatives[1] = preg_split('#,#', $char['auswahl2']);
$this->altervatives[2] = preg_split('#,#', $char['auswahl3']);
// Zwischenschritt ANFANG
// Nun ein Zwischenschritt weil in den Feldern attacken und attacken2
$qry = db_query('Select at_id, id from lernen where id IN ('.$char['attacken'].','.$char['attacken2'].')');
while($row = mysqli_fetch_assoc($qry)){
$transition[$row['id']] = $row['at_id'];
}
for($i=0;$i<count($this->attacke1);$i++){
$this->attacke1[$i] = $transition[$this->attacke1[$i]];
$this->attacke2[$i] = $transition[$this->attacke2[$i]];
}
unset($transition);
// Zwischenschritt ENDE!!!
// Lade die Attacken aus der DB und schreibe sie direkt in den Array
$qry = db_query('Select * from attacken where id IN ('.join(',',$this->attacke1).','.join(',',$this->attacke2).')');
while($row = mysqli_fetch_assoc($qry)){
$temp_att[$row['id']] = $row;
}
for($i=0;$i<count($this->attacke1);$i++){
$this->attacke1[$i] = $temp_att[$this->attacke1[$i]];
$this->attacke2[$i] = $temp_att[$this->attacke2[$i]];
}
// Die Kaempfer sind Kampfbereit!!
}
function getAttackValuesOfRound($round){
$returnarray['attacke1'] = $this->attacke1[$round];
$returnarray['attacke2'] = $this->attacke2[$round];
$returnarray['auswahl1'] = $this->altervatives[0][$round];
$returnarray['auswahl2'] = $this->altervatives[1][$round];
$returnarray['auswahl3'] = $this->altervatives[2][$round];
return $returnarray;
}
}
?>