prepare(" SELECT id, uid, dtime, area_type, area, stage, difficulty, win, time, mana, energy, crystal, honor_points, guild_points, helper, score, rank FROM run WHERE id = :id; "); $statement->bindValue(':id', $id, SQLITE3_INTEGER); $r = $statement->execute()->fetchArray(SQLITE3_ASSOC); if ($r){ $this->id = $r["id"]; $this->uid = $r["uid"]; $this->dtime = $r["dtime"]; $this->area = new K_Area($r["area"], $r["area_type"]); $this->stage = $r["stage"]; $this->difficulty = $r["difficulty"]; $this->win = $r["win"]; $this->time = $r["time"]; $this->mana = $r["mana"]; $this->energy = $r["energy"]; $this->crystal = $r["crystal"]; $this->honor_points = $r["honor_points"]; $this->guild_points = $r["guild_points"]; $this->helper = $r["helper"]; $this->score = $r["score"]; $this->rank = $r["rank"]; $statement = $db->prepare(" SELECT unit, k_unit, (SELECT count(id) FROM unit WHERE unit.id = run_party.unit) AS owned, leader, front FROM run_party WHERE run = :run ORDER BY front DESC, leader DESC; "); $statement->bindValue(':run', $id, SQLITE3_INTEGER); $q = $statement->execute(); while ($r = $q->fetchArray(SQLITE3_ASSOC)){ if ($r["owned"] > 0){ array_push($this->party, new Unit($r["unit"], false)); } else{ array_push($this->party, new K_Unit($r["k_unit"], false)); } if ($r["leader"] == 1){ $this->leader = $r["unit"]; } if ($r["front"] == 1){ array_push($this->frontline, $r["unit"]); } } $statement = $db->prepare(" SELECT item, amount FROM run_drop_item WHERE run = :run; "); $statement->bindValue(':run', $this->id, SQLITE3_INTEGER); $q = $statement->execute(); while ($r = $q->fetchArray(SQLITE3_ASSOC)){ $i = new Inventory($r["item"]); $i->amount = $r["amount"]; array_push($this->item, $i); } $statement = $db->prepare(" SELECT unit FROM run_drop_unit WHERE run = :run; "); $statement->bindValue(':run', $this->id, SQLITE3_INTEGER); $q = $statement->execute(); while ($r = $q->fetchArray(SQLITE3_ASSOC)){ array_push($this->unit, new K_Unit($r["unit"])); } $statement = $db->prepare(" SELECT unit FROM run_drop_sd WHERE run = :run; "); $statement->bindValue(':run', $this->id, SQLITE3_INTEGER); $q = $statement->execute(); while ($r = $q->fetchArray(SQLITE3_ASSOC)){ array_push($this->sd, new K_Unit($r["unit"])); } $statement = $db->prepare(" SELECT unit, amount FROM run_drop_unit_pieces WHERE run = :run; "); $statement->bindValue(':run', $this->id, SQLITE3_INTEGER); $q = $statement->execute(); while ($r = $q->fetchArray(SQLITE3_ASSOC)){ $i = [ "unit" => new K_Unit($r["unit"]), "amount" => $r["amount"] ]; array_push($this->unit_piece, $i); } $statement = $db->prepare(" SELECT amount FROM run_drop_shapeshifting WHERE run = :run; "); $statement->bindValue(':run', $this->id, SQLITE3_INTEGER); $q = $statement->execute(); $r = $q->fetchArray(SQLITE3_ASSOC); if ($r){ $this->shapeshifting = $r["amount"]; } $statement = $db->prepare(" SELECT id, type, slot, stars, ancient, quality, value, efficiency, main_stat, main_stat_value, innate_stat, innate_stat_value, substat_1, substat_1_value, substat_2, substat_2_value, substat_3, substat_3_value, substat_4, substat_4_value FROM run_drop_rune WHERE run = :run; "); $statement->bindValue(':run', $this->id, SQLITE3_INTEGER); $q = $statement->execute(); while ($r = $q->fetchArray(SQLITE3_ASSOC)){ $rune = new Rune($r["id"]); if (!isset($rune->id)){ $rune->id = $r["id"]; $rune->level = 0; $rune->assigned_to = null; $rune->type = new K_Rune_Set($r["type"]); $rune->slot = $r["slot"]; $rune->stars = $r["stars"]; $rune->ancient = $r["ancient"]; $rune->quality = $r["quality"]; $rune->original_quality = $r["quality"]; $rune->quality_name = $this->get_rune_quality_name($r["quality"]); $rune->original_quality_name = $this->get_rune_quality_name($r["quality"]); $rune->value = $r["value"]; $rune->value = 0; $rune->efficiency = $r["efficiency"]; // TODO: Calculate? $rune->max_efficiency = $r["efficiency"]; $rune->main_stat = new Rune_Stat(null, null); $rune->main_stat->slot = RUNE_STAT_SLOT_ID::MAIN; $rune->main_stat->stat = $r["main_stat"]; $rune->main_stat->stat_name = $this->get_stat_name($r["main_stat"]); $rune->main_stat->value = $r["main_stat_value"]; if ($r["innate_stat"] != null){ $rune->innate_stat = new Rune_Stat(null, null); $rune->innate_stat->slot = RUNE_STAT_SLOT_ID::INNATE; $rune->innate_stat->stat = $r["innate_stat"]; $rune->innate_stat->stat_name = $this->get_stat_name($r["innate_stat"]); $rune->innate_stat->value = $r["innate_stat_value"]; } if ($r["substat_1"] != null){ $substat = new Rune_Stat(null, null); $substat->slot = RUNE_STAT_SLOT_ID::SUBSTAT_1; $substat->stat = $r["substat_1"]; $substat->stat_name = $this->get_stat_name($r["substat_1"]); $substat->value = $r["substat_1_value"]; array_push($rune->substats, $substat); } if ($r["substat_2"] != null){ $substat = new Rune_Stat(null, null); $substat->slot = RUNE_STAT_SLOT_ID::SUBSTAT_2; $substat->stat = $r["substat_2"]; $substat->stat_name = $this->get_stat_name($r["substat_2"]); $substat->value = $r["substat_2_value"]; array_push($rune->substats, $substat); } if ($r["substat_3"] != null){ $substat = new Rune_Stat(null, null); $substat->slot = RUNE_STAT_SLOT_ID::SUBSTAT_3; $substat->stat = $r["substat_3"]; $substat->stat_name = $this->get_stat_name($r["substat_3"]); $substat->value = $r["substat_3_value"]; array_push($rune->substats, $substat); } if ($r["substat_4"] != null){ $substat = new Rune_Stat(null, null); $substat->slot = RUNE_STAT_SLOT_ID::SUBSTAT_4; $substat->stat = $r["substat_4"]; $substat->stat_name = $this->get_stat_name($r["substat_4"]); $substat->value = $r["substat_4_value"]; array_push($rune->substats, $substat); } } array_push($this->rune, $rune); } $statement = $db->prepare(" SELECT run_drop_enchantment.id AS id, type, run_drop_enchantment.quality AS quality, rune, run_drop_enchantment.stat AS stat, value, k_enchantment_type.inmemorial AS inmemorial, k_enchantment_type.ancient AS ancient, k_enchantment_range.min AS min, k_enchantment_range.max AS max FROM run_drop_enchantment, k_enchantment_type, k_enchantment_range WHERE run = :run AND run_drop_enchantment.type = k_enchantment_type.id AND k_enchantment_type.gem = k_enchantment_range.gem AND k_enchantment_type.gem = k_enchantment_range.gem AND k_enchantment_type.ancient = k_enchantment_range.ancient AND run_drop_enchantment.quality = k_enchantment_range.quality AND run_drop_enchantment.stat = k_enchantment_range.stat; "); $statement->bindValue(':run', $this->id, SQLITE3_INTEGER); $q = $statement->execute(); while ($r = $q->fetchArray(SQLITE3_ASSOC)){ $enchantment = new Enchantment($r["id"]); if (!isset($enchantment->id)){ $enchantment->id = $r["id"]; if ($r["type"] == CRAFT_ID::ENCHANT_GEM || $r["type"] == CRAFT_ID::IMMEMORIAL_GEM){ $enchantment->gem = 1; } else{ $enchantment->gem = 0; } $enchantment->quality = $r["quality"]; $enchantment->value = 0; $enchantment->stat = $r["stat"]; $enchantment->ancient = $r["ancient"]; $enchantment->inmemorial = $r["inmemorial"]; $enchantment->rune = new K_Rune_Set($r["rune"]); $enchantment->min = $r["min"]; $enchantment->max = $r["max"]; $enchantment->value = $r["value"]; $enchantment->amount = 0; $enchantment->refresh_names(); } else{ $enchantment->amount = 0; } array_push($this->enchantment, $enchantment); } } } /** * Gets a quality name frm the mappings. * * @param int $quality Quality id. * @return string Quality name (Uppercase) */ private function get_rune_quality_name($quality){ switch ($quality){ case QUALITY_ID::NORMAL: return "NORMAL"; case QUALITY_ID::MAGIC: return "MAGIC"; case QUALITY_ID::RARE: return "RARE"; case QUALITY_ID::HERO: return "HERO"; case QUALITY_ID::LEGEND: return "LEGEND"; default: return ""; } } /** * Gets a stat name from the mappings. * * @param int $stat Stat id. * @return string Stat name (Uppercase) */ private function get_stat_name($stat){ switch ($stat){ case RUNE_STAT_ID::HP: return "HP"; break; case RUNE_STAT_ID::HP_P: return "HP%"; break; case RUNE_STAT_ID::ATK: return "ATK"; break; case RUNE_STAT_ID::ATK_P: return "ATK%"; break; case RUNE_STAT_ID::DEF: return "DEF"; break; case RUNE_STAT_ID::DEF_P: return "DEF%"; break; case RUNE_STAT_ID::SPD: return "SPD"; break; case RUNE_STAT_ID::CRR: return "CRR"; break; case RUNE_STAT_ID::CRD: return "CRD"; break; case RUNE_STAT_ID::RES: return "RES"; break; case RUNE_STAT_ID::ACC: return "ACC"; break; default: return ""; } } } ?>