Explorar o código

Fixed an skill parsing eror in the data parser. Skill data fixed too. Solved a minor issue when adding and deleting teams where an error was thrown and the page was not reloading, even if the team was being created or deleted.

Iñigo Valentin %!s(int64=5) %!d(string=hai) anos
pai
achega
f213a16b8c

+ 41 - 1
application/Constant.php

@@ -439,6 +439,11 @@ final class DUNGEON_ID{
      */
     const ELLUNIA_REMAINS_PIXIE = 1202;
 
+    /**
+     * Ellunia Remains (High Elemental).
+     */
+    const ELLUNIA_REMAINS_HIGH_ELEMENTAL = 1203;
+
     /**
      * Hall of Fire.
      */
@@ -474,6 +479,41 @@ final class DUNGEON_ID{
      */
     const LUMEL_REMAINS_MARTIAL_CAT = 3202;
 
+    /**
+     * Ruin of Silend Dead.
+     */
+    const RUIN_OF_SILENT_DEAD = 9793;
+
+    /**
+     * Khalderun Remains (Howl).
+     */
+    const KHALDERUN_REMAINS_HOWL = 9792;
+
+    /**
+     * Khalderun Remains (Grim Reaper).
+     */
+    const KHALDERUN_REMAINS_GRIM_REAPER = 9791;
+
+    /**
+     * Dimensional Predator (Karzhan).
+     */
+    const KARZHAN_PREDATOR = 5780;
+    
+    /**
+     * Dimensional Predator (Ellunia).
+     */
+    const ELLUNIA_PREDATOR = 5781;
+    
+    /**
+     * Dimensional Predator (Lumel).
+     */
+    const LUMEL_PREDATOR = 5782;
+    
+    /**
+     * Dimensional Predator (Khalderun).
+     */
+    const KHALDERUN_PREDATOR = 9794;
+
     /**
      * Hall of water.
      */
@@ -4610,4 +4650,4 @@ final class WORLD_BOSS_RANK_ID{
         11 => "SSS"
     ];
 
-}
+}

+ 78 - 2
application/entity/Area.php

@@ -201,6 +201,13 @@ class Area extends Entity{
         }
         elseif ($this->type == AREA_TYPE_ID::DIMENSIONAL_HOLE){
             switch ($this->id){
+                case DUNGEON_ID::KARZHAN_PREDATOR:
+                case DUNGEON_ID::ELLUNIA_PREDATOR:
+                case DUNGEON_ID::LUMEL_PREDATOR:
+                case DUNGEON_ID::KHALDERUN_PREDATOR:
+                    // Element is not consistent, using light icon.
+                    return APPLICATION::img("UNIT", 70004);
+                    break;
                 case DUNGEON_ID::FOREST_OF_ROARING_BEASTS:
                     return APPLICATION::img("UNIT", 47002);
                     break;
@@ -208,7 +215,10 @@ class Area extends Entity{
                     return APPLICATION::img("UNIT", 47001);
                     break;
                 case DUNGEON_ID::CLIFF_OF_TOUGH_BEASTS_MEN:
-                    return APPLICATION::img("UNIT", 47002);
+                    return APPLICATION::img("UNIT", 47003);
+                    break;
+                case DUNGEON_ID::RUIN_OF_SILENT_DEAD:
+                    return APPLICATION::img("UNIT", 47004);
                     break;
                 case DUNGEON_ID::KARZHAN_REMAINS_WARBEAR:
                     switch ($stage){
@@ -298,6 +308,28 @@ class Area extends Entity{
                             break;
                     }
                     break;
+                case DUNGEON_ID::ELLUNIA_REMAINS_HIGH_ELEMENTAL:
+                    switch ($stage){
+                        case 1:
+                            return APPLICATION::img("UNIT", 10332);
+                            break;
+                        case 2:
+                            return APPLICATION::img("UNIT", 10331);
+                            break;
+                        case 3:
+                            return APPLICATION::img("UNIT", 10334);
+                            break;
+                        case 4:
+                            return APPLICATION::img("UNIT", 12033);
+                            break;
+                        case 5:
+                            return APPLICATION::img("UNIT", 10335);
+                            break;
+                        default:
+                            return APPLICATION::img("AREA", $this->id);
+                            break;
+                    }
+                    break;
                 case DUNGEON_ID::LUMEL_REMAINS_WEREWOLF:
                     switch ($stage){
                         case 1:
@@ -342,6 +374,50 @@ class Area extends Entity{
                             break;
                     }
                     break;
+                case DUNGEON_ID::KHALDERUN_REMAINS_HOWL:
+                    switch ($stage){
+                        case 1:
+                            return APPLICATION::img("UNIT", 13235);
+                            break;
+                        case 2:
+                            return APPLICATION::img("UNIT", 13234);
+                            break;
+                        case 3:
+                            return APPLICATION::img("UNIT", 13233);
+                            break;
+                        case 4:
+                            return APPLICATION::img("UNIT", 13232);
+                            break;
+                        case 5:
+                            return APPLICATION::img("UNIT", 13231);
+                            break;
+                        default:
+                            return APPLICATION::img("AREA", $this->id);
+                            break;
+                    }
+                    break;
+                case DUNGEON_ID::KHALDERUN_REMAINS_GRIM_REAPER:
+                    switch ($stage){
+                        case 1:
+                            return APPLICATION::img("UNIT", 16033);
+                            break;
+                        case 2:
+                            return APPLICATION::img("UNIT", 16031);
+                            break;
+                        case 3:
+                            return APPLICATION::img("UNIT", 16034);
+                            break;
+                        case 4:
+                            return APPLICATION::img("UNIT", 16032);
+                            break;
+                        case 5:
+                            return APPLICATION::img("UNIT", 16035);
+                            break;
+                        default:
+                            return APPLICATION::img("AREA", $this->id);
+                            break;
+                    }
+                    break;
                 default:
                     return APPLICATION::img("AREA", $this->id);
                     break;
@@ -362,7 +438,7 @@ class Area extends Entity{
                     return APPLICATION::img("UNIT", 46103);
                     break;
                 default:
-                    return APPLICATION::img("AREA", $this->id);
+                    return APPLICATION::img("AREA", "TARTARUS_LABYRINTH");
             }
         }
         elseif ($this->type == AREA_TYPE_ID::TRIAL_OF_ASCENSION){

BIN=BIN
application/key.sqlite


+ 2 - 2
application/page/Report_Skillup_Page.php

@@ -133,7 +133,7 @@ class Report_Skillup_Page extends Page{
           SELECT DISTINCT
             unit.id AS id,
             --sum(unit_skill.level * (CAST(skill.slot + 1 AS FLOAT) / 2.0)) AS ponderated_lvl,
-            sum(unit_skill.level *
+            sum((unit_skill.level - 1)*
               CASE
                 WHEN skill.slot = 1 THEN :ponderation_0
                 WHEN skill.slot = 2 THEN :ponderation_1
@@ -144,7 +144,7 @@ class Report_Skillup_Page extends Page{
             ) AS ponderated_lvl,
             sum(unit_skill.level) AS lvl,
             --sum(skill.max_level * (CAST(skill.slot + 1 AS FLOAT) / 2.0)) AS ponderated_max_lvl,
-            sum(skill.max_level * 
+            sum((skill.max_level - 1) * 
               CASE
                 WHEN skill.slot = 1 THEN :ponderation_0
                 WHEN skill.slot = 2 THEN :ponderation_1

+ 5 - 5
application/view/report_skillup.php

@@ -209,7 +209,7 @@
                         </tr>
                         <tr>
                             <td rowspan='3' class='img'>
-                                <a href='/player/<?=get_context()->get_player()->get_id()?>/monsters/<?=$unit->get_id()?>/' target='_blank'>
+                                <a href='/player/<?=get_context()->get_player()->get_id()?>/units/<?=$unit->get_id()?>/' target='_blank'>
                                     <div class='monster_panel'>
                                         <?=HTML::unit_panel($unit)?>
                                     </div>
@@ -223,13 +223,13 @@
                             $ponderated_max_level = 0.0;
                             foreach ($unit->get_monster()->get_skills() as $skill){
                                 if ($skill->get_max_level() > 1){
-                                    $absolute_max_level += $skill->get_max_level();
+                                    $absolute_max_level += $skill->get_max_level() - 1;
                                 }
                                 $cur_lvl = $unit->get_skill_levels()[$skill_num - 1];
                                 if ($skill->get_max_level() > 1){
-                                    $absolute_level += $cur_lvl;
-                                    $ponderated_level += $cur_lvl * $page->get_filter("PONDERATION")[$skill_num - 1];//$cur_lvl * (($skill_num + 1) / 2.0);
-                                    $ponderated_max_level += $skill->get_max_level() * $page->get_filter("PONDERATION")[$skill_num - 1];//$skill->get_max_level() * (($skill_num + 1) / 2.0);
+                                    $absolute_level += ($cur_lvl - 1);
+                                    $ponderated_level += ($cur_lvl - 1) * $page->get_filter("PONDERATION")[$skill_num - 1];//$cur_lvl * (($skill_num + 1) / 2.0);
+                                    $ponderated_max_level += ($skill->get_max_level() - 1) * $page->get_filter("PONDERATION")[$skill_num - 1];//$skill->get_max_level() * (($skill_num + 1) / 2.0);
                                 }
                                 $max_lvl = $skill->get_max_level();
                                 if ($max_lvl == $cur_lvl){

+ 2 - 2
application/view/teams.php

@@ -184,7 +184,7 @@
                 var xhttp = new XMLHttpRequest();
                 xhttp.onreadystatechange = function() {
                     if (this.readyState == 4){ 
-                        if (this.status == 200){
+                        if (this.status == 200 || this.status == 204){
                             location.reload(); 
                         }
                         else{
@@ -211,7 +211,7 @@
                 var xhttp = new XMLHttpRequest();
                 xhttp.onreadystatechange = function() {
                     if (this.readyState == 4){ 
-                        if (this.status == 200){
+                        if (this.status == 200 || this.status == 204){
                             location.reload(); 
                         }
                         else{

+ 30 - 9
parser/swarfarm_parser

@@ -93,10 +93,10 @@ function download($url, $target){
 }
 
 /**
- * Gets an entity com2us_id from it's Swarfarm id.
+ * Gets an unit com2us_id from it's Swarfarm id.
  *
- * @param int $swarfarm_id Entity's Swarfarm ID.
- * @return int Entity's com2us_id, -1 on error.
+ * @param int $swarfarm_id Unit's Swarfarm ID.
+ * @return int Skill's com2us_id, -1 on error.
  */
 function get_com2us_id($swarfarm_id){
     if ($swarfarm_id == null){
@@ -104,8 +104,26 @@ function get_com2us_id($swarfarm_id){
     }
     $contents = file_get_contents(URL_UNIT . $swarfarm_id . "/");
     if($contents === false){
-        //Print out the contents.
-        output(1, "Unable to retrieve monster.");
+        output(1, "Unable to retrieve unit ID by swarfarm ID: " . $swarfarm_id);
+        return -1;
+    }
+    $contents = json_decode($contents);
+    return $contents->com2us_id;
+}
+
+/**
+ * Gets an skill com2us_id from it's Swarfarm id.
+ *
+ * @param int $swarfarm_id Skill's Swarfarm ID.
+ * @return int Skill's com2us_id, -1 on error.
+ */
+function get_com2us_skill_id($swarfarm_id){
+    if ($swarfarm_id == null){
+        return null;
+    }
+    $contents = file_get_contents(URL_SKILL . $swarfarm_id . "/");
+    if($contents === false){
+        output(1, "Unable to retrieve skill ID by swarfarm ID: " . $swarfarm_id);
         return -1;
     }
     $contents = json_decode($contents);
@@ -241,7 +259,7 @@ for ($i = 1; $i < count($argv); $i++){
         return -1;
     }
     elseif ($argv[$i] == "--verbosity" || $argv[$i] == "-v"){
-        if (count($argv) >= $i + 2 && is_int($argv[$i + 1]) && intval($argv[$i + 1]) >= 0 && intval($argv[$i + 1]) <= 5){
+        if (count($argv) >= $i + 2 && ctype_digit($argv[$i + 1]) && intval($argv[$i + 1]) >= 0 && intval($argv[$i + 1]) <= 5){
             $args["verbosity"] = intval($argv[$i + 1]);
             $i ++;
         }
@@ -615,7 +633,7 @@ while ($next != null){
             foreach ($monster->skills as $skill){
                 $statement = $db->prepare("INSERT INTO monster_skill (monster, skill) VALUES (:monster, :skill);");
                 $statement->bindValue(":monster", $monster->com2us_id, SQLITE3_INTEGER);
-                $statement->bindValue(":skill", $skill, SQLITE3_INTEGER);
+                $statement->bindValue(":skill", get_com2us_skill_id($skill), SQLITE3_INTEGER);
                 output(4, "QUERY: " . $statement->getSQL(true));
                 $statement->execute();
             }
@@ -854,7 +872,10 @@ while ($next != null){
             $statement->bindValue(":monster", $monster->com2us_id, SQLITE3_INTEGER);
             $q = $statement->execute();
             $r = $q->fetchArray(SQLITE3_ASSOC);
-            if ($r["c"] != sizeof($monster->skills)){
+            // If some errors happens and the skill list has to be rebuilt,
+            // force this block to execute (it is slow).
+            // if ($r["c"] != sizeof($monster->skills))
+            if ($r["c"] != sizeof($monster->skills) || 1 == 1){
                 $statement = $db->prepare("DELETE FROM monster_skill WHERE monster = :monster;");
                 $statement->bindValue(":monster", $monster->com2us_id, SQLITE3_INTEGER);
                 output(4, "QUERY: " . $statement->getSQL(true));
@@ -862,7 +883,7 @@ while ($next != null){
                 foreach ($monster->skills as $skill){
                     $statement = $db->prepare("INSERT INTO monster_skill (monster, skill) VALUES (:monster, :skill);");
                     $statement->bindValue(":monster", $monster->com2us_id, SQLITE3_INTEGER);
-                    $statement->bindValue(":skill", $skill, SQLITE3_INTEGER);
+                    $statement->bindValue(":skill", get_com2us_skill_id($skill), SQLITE3_INTEGER);
                     output(4, "QUERY: " . $statement->getSQL(true));
                     $statement->execute();
                 }

BIN=BIN
public/img/area/TARTARUS_LABYRINTH.png


BIN=BIN
public/img/area/TRIAL_OF_ASCENSION.png