Преглед на файлове

Merge branch 'Optimizer'

Iñigo Valentin преди 5 години
родител
ревизия
3142d73aff
променени са 2 файла, в които са добавени 174 реда и са изтрити 70 реда
  1. 1 1
      application/action/optimize_get_rune_list.php
  2. 173 69
      application/view/optimizer_unit.php

+ 1 - 1
application/action/optimize_get_rune_list.php

@@ -186,7 +186,7 @@
         }
         //$max_combinations = sizeof($candidates[1]) * sizeof($candidates[2]) * sizeof($candidates[3]) * sizeof($candidates[4]) * sizeof($candidates[5]) * sizeof($candidates[6]);
         
-        // TODO: Build response
+        // Build response
         $response = json_encode($candidates);
         if ($response == null){
             return 0;

+ 173 - 69
application/view/optimizer_unit.php

@@ -55,6 +55,17 @@
                 "dmg": <?=$page->unit->effective_dmg?>
             }
             
+            var set_stats = {
+                "attack": 0,
+                "defense": 0,
+                "hp": 0,
+                "speed": 0,
+                "crit_rate": 0,
+                "crit_damage": 0,
+                "accuracy": 0,
+                "resistance": 0
+            }
+            
             var base_stats = {
                 "attack": <?=$page->unit->attack?>,
                 "defense": <?=$page->unit->defense?>,
@@ -68,6 +79,30 @@
                 "dmg": <?=$page->unit->effective_dmg?>
             }
 
+            var requested_sets = {
+                'RUNE_SET_<?=RUNE_SET_ID::ENERGY?>': 0, // ENERGY
+                'RUNE_SET_<?=RUNE_SET_ID::GUARD?>': 0, // GUARD
+                'RUNE_SET_<?=RUNE_SET_ID::SWIFT?>': 0, // SWIFT
+                'RUNE_SET_<?=RUNE_SET_ID::BLADE?>': 0, // BLADE
+                'RUNE_SET_<?=RUNE_SET_ID::RAGE?>': 0, // RAGE
+                'RUNE_SET_<?=RUNE_SET_ID::FOCUS?>': 0, // FOCUS
+                'RUNE_SET_<?=RUNE_SET_ID::ENDURE?>': 0, // ENDURE
+                'RUNE_SET_<?=RUNE_SET_ID::FATAL?>': 0, // FATAL
+                'RUNE_SET_<?=RUNE_SET_ID::DESPAIR?>': 0, // DESPAIR
+                'RUNE_SET_<?=RUNE_SET_ID::VAMPIRE?>': 0, // VAMPIRE
+                'RUNE_SET_<?=RUNE_SET_ID::VIOLENT?>': 0, // VIOLENT
+                'RUNE_SET_<?=RUNE_SET_ID::NEMESIS?>': 0, // NEMESIS
+                'RUNE_SET_<?=RUNE_SET_ID::WILL?>': 0, // WILL
+                'RUNE_SET_<?=RUNE_SET_ID::SHIELD?>': 0, // SHIELD
+                'RUNE_SET_<?=RUNE_SET_ID::REVENGE?>': 0, // REVENGE
+                'RUNE_SET_<?=RUNE_SET_ID::DESTROY?>': 0, // DESTROY
+                'RUNE_SET_<?=RUNE_SET_ID::FIGHT?>': 0, // FIGHT
+                'RUNE_SET_<?=RUNE_SET_ID::DETERMINATION?>': 0, // DETERMINATION
+                'RUNE_SET_<?=RUNE_SET_ID::ENHANCE?>': 0, // ENHANCE
+                'RUNE_SET_<?=RUNE_SET_ID::ACCURACY?>': 0, // ACCURACY
+                'RUNE_SET_<?=RUNE_SET_ID::TOLERANCE?>': 0 // TOLERANCE
+            };
+
 <?php
             // Get current rune sets
             $sets = [];
@@ -272,6 +307,125 @@
                 if (Number(document.getElementById('min_dmg').value) > 0){
                     params += '&min_dmg=' + document.getElementById('min_dmg').value;
                 }
+                
+                // Clear and calculate new requested sets
+                requested_sets['RUNE_SET_<?=RUNE_SET_ID::ENERGY?>'] = 0; // ENERGY
+                requested_sets['RUNE_SET_<?=RUNE_SET_ID::GUARD?>'] = 0; // GUARD
+                requested_sets['RUNE_SET_<?=RUNE_SET_ID::SWIFT?>'] = 0; // SWIFT
+                requested_sets['RUNE_SET_<?=RUNE_SET_ID::BLADE?>'] = 0; // BLADE
+                requested_sets['RUNE_SET_<?=RUNE_SET_ID::RAGE?>'] = 0; // RAGE
+                requested_sets['RUNE_SET_<?=RUNE_SET_ID::FOCUS?>'] = 0; // FOCUS
+                requested_sets['RUNE_SET_<?=RUNE_SET_ID::ENDURE?>'] = 0; // ENDURE
+                requested_sets['RUNE_SET_<?=RUNE_SET_ID::FATAL?>'] = 0; // FATAL
+                requested_sets['RUNE_SET_<?=RUNE_SET_ID::DESPAIR?>'] = 0; // DESPAIR
+                requested_sets['RUNE_SET_<?=RUNE_SET_ID::VAMPIRE?>'] = 0; // VAMPIRE
+                requested_sets['RUNE_SET_<?=RUNE_SET_ID::VIOLENT?>'] = 0; // VIOLENT
+                requested_sets['RUNE_SET_<?=RUNE_SET_ID::NEMESIS?>'] = 0; // NEMESIS
+                requested_sets['RUNE_SET_<?=RUNE_SET_ID::WILL?>'] = 0; // WILL
+                requested_sets['RUNE_SET_<?=RUNE_SET_ID::SHIELD?>'] = 0; // SHIELD
+                requested_sets['RUNE_SET_<?=RUNE_SET_ID::REVENGE?>'] = 0; // REVENGE
+                requested_sets['RUNE_SET_<?=RUNE_SET_ID::DESTROY?>'] = 0; // DESTROY
+                requested_sets['RUNE_SET_<?=RUNE_SET_ID::FIGHT?>'] = 0; // FIGHT
+                requested_sets['RUNE_SET_<?=RUNE_SET_ID::DETERMINATION?>'] = 0; // DETERMINATION
+                requested_sets['RUNE_SET_<?=RUNE_SET_ID::ENHANCE?>'] = 0; // ENHANCE
+                requested_sets['RUNE_SET_<?=RUNE_SET_ID::ACCURACY?>'] = 0; // ACCURACY
+                requested_sets['RUNE_SET_<?=RUNE_SET_ID::TOLERANCE?>'] = 0; // TOLERANCE
+                var selected_1 = document.getElementById('set_1').options[document.getElementById('set_1').selectedIndex].value;
+                var selected_2 = document.getElementById('set_2').options[document.getElementById('set_2').selectedIndex].value;
+                var selected_3 = document.getElementById('set_3').options[document.getElementById('set_3').selectedIndex].value;
+                var requested_values = [
+                    document.getElementById('set_1').options[document.getElementById('set_1').selectedIndex].value,
+                    document.getElementById('set_2').options[document.getElementById('set_2').selectedIndex].value,
+                    document.getElementById('set_3').options[document.getElementById('set_3').selectedIndex].value
+                ];
+                for (var i = 0; i < 3; i ++){
+                    switch (requested_values[i]){
+                        case '<?=RUNE_SET_ID::ENERGY?>':
+                        case '<?=RUNE_SET_ID::GUARD?>':
+                        case '<?=RUNE_SET_ID::NEMESIS?>':
+                        case '<?=RUNE_SET_ID::BLADE?>':
+                        case '<?=RUNE_SET_ID::FOCUS?>':
+                        case '<?=RUNE_SET_ID::ENDURE?>':
+                        case '<?=RUNE_SET_ID::WILL?>':
+                        case '<?=RUNE_SET_ID::SHIELD?>':
+                        case '<?=RUNE_SET_ID::REVENGE?>':
+                        case '<?=RUNE_SET_ID::DESTROY?>':
+                        case '<?=RUNE_SET_ID::FIGHT?>':
+                        case '<?=RUNE_SET_ID::DETERMINATION?>':
+                        case '<?=RUNE_SET_ID::ENHANCE?>':
+                        case '<?=RUNE_SET_ID::ACCURACY?>':
+                        case '<?=RUNE_SET_ID::TOLERANCE?>':
+                            requested_sets['RUNE_SET_' + requested_values[i]] += 2;
+                            break;
+                        case '<?=RUNE_SET_ID::DESPAIR?>':
+                        case '<?=RUNE_SET_ID::SWIFT?>':
+                        case '<?=RUNE_SET_ID::RAGE?>':
+                        case '<?=RUNE_SET_ID::FATAL?>':
+                        case '<?=RUNE_SET_ID::VAMPIRE?>':
+                        case '<?=RUNE_SET_ID::VIOLENT?>':
+                            requested_sets['RUNE_SET_' + requested_values[i]] += 4;
+                            break;
+                    }
+                }
+
+                // Clear and calculate the new rune set stats
+                set_stats['hp'] = 0;
+                set_stats['attack'] = 0;
+                set_stats['defense'] = 0;
+                set_stats['speed'] = 0;
+                set_stats['crit_rate'] = 0;
+                set_stats['crit_damage'] = 0;
+                set_stats['accuracy'] = 0;
+                set_stats['resistance'] = 0;
+                var rune_sets = [
+                    Number(document.getElementById('set_1').options[document.getElementById('set_1').selectedIndex].value),
+                    Number(document.getElementById('set_2').options[document.getElementById('set_2').selectedIndex].value),
+                    Number(document.getElementById('set_3').options[document.getElementById('set_3').selectedIndex].value)
+                ];
+                
+                for (var i = 0; i < rune_sets.length; i ++){
+                    switch (rune_sets[i]){
+                        case <?=RUNE_SET_ID::ENERGY?>:
+                            set_stats['hp'] += (base_stats['hp'] * 0.15);
+                            break;
+                        case <?=RUNE_SET_ID::GUARD?>:
+                            set_stats['defense'] += (base_stats['defense'] * 0.15);
+                            break;
+                        case <?=RUNE_SET_ID::BLADE?>:
+                            set_stats['crit_rate'] += 12;
+                            break;
+                        case <?=RUNE_SET_ID::FOCUS?>:
+                            set_stats['accuracy'] += 20;
+                            break;
+                        case <?=RUNE_SET_ID::ENDURE?>:
+                            set_stats['resistance'] += 20;
+                            break;
+                        case <?=RUNE_SET_ID::FIGHT?>:
+                            set_stats['attack'] += (base_stats['attack'] * 0.08);
+                            break;
+                        case <?=RUNE_SET_ID::DETERMINATION?>:
+                            set_stats['defense'] += (base_stats['defense'] * 0.2);
+                            break;
+                        case <?=RUNE_SET_ID::ENHANCE?>:
+                            set_stats['hp'] += (base_stats['hp'] * 0.2);
+                            break;
+                        case <?=RUNE_SET_ID::ACCURACY?>:
+                            set_stats['accuracy'] += 10;
+                            break;
+                        case <?=RUNE_SET_ID::TOLERANCE?>:
+                            set_stats['resistance'] += 10;
+                            break;
+                        case <?=RUNE_SET_ID::SWIFT?>:
+                            set_stats['speed'] += (base_stats['speed'] * 0.24);
+                            break;
+                        case <?=RUNE_SET_ID::RAGE?>:
+                            set_stats['crit_damage'] += 40;
+                            break;
+                        case <?=RUNE_SET_ID::FATAL?>:
+                            set_stats['attack'] += (base_stats['attack'] * 0.35);
+                            break;
+                    }
+                }
 
                 // Send the request
                 var xhttp = new XMLHttpRequest();
@@ -389,81 +543,20 @@
                 }*/
                 
                 // Its a valid set, but does it match the requested sets?
-                var requested_sets = {
-                    'RUNE_SET_<?=RUNE_SET_ID::ENERGY?>': 0, // ENERGY
-                    'RUNE_SET_<?=RUNE_SET_ID::GUARD?>': 0, // GUARD
-                    'RUNE_SET_<?=RUNE_SET_ID::SWIFT?>': 0, // SWIFT
-                    'RUNE_SET_<?=RUNE_SET_ID::BLADE?>': 0, // BLADE
-                    'RUNE_SET_<?=RUNE_SET_ID::RAGE?>': 0, // RAGE
-                    'RUNE_SET_<?=RUNE_SET_ID::FOCUS?>': 0, // FOCUS
-                    'RUNE_SET_<?=RUNE_SET_ID::ENDURE?>': 0, // ENDURE
-                    'RUNE_SET_<?=RUNE_SET_ID::FATAL?>': 0, // FATAL
-                    'RUNE_SET_<?=RUNE_SET_ID::DESPAIR?>': 0, // DESPAIR
-                    'RUNE_SET_<?=RUNE_SET_ID::VAMPIRE?>': 0, // VAMPIRE
-                    'RUNE_SET_<?=RUNE_SET_ID::VIOLENT?>': 0, // VIOLENT
-                    'RUNE_SET_<?=RUNE_SET_ID::NEMESIS?>': 0, // NEMESIS
-                    'RUNE_SET_<?=RUNE_SET_ID::WILL?>': 0, // WILL
-                    'RUNE_SET_<?=RUNE_SET_ID::SHIELD?>': 0, // SHIELD
-                    'RUNE_SET_<?=RUNE_SET_ID::REVENGE?>': 0, // REVENGE
-                    'RUNE_SET_<?=RUNE_SET_ID::DESTROY?>': 0, // DESTROY
-                    'RUNE_SET_<?=RUNE_SET_ID::FIGHT?>': 0, // FIGHT
-                    'RUNE_SET_<?=RUNE_SET_ID::DETERMINATION?>': 0, // DETERMINATION
-                    'RUNE_SET_<?=RUNE_SET_ID::ENHANCE?>': 0, // ENHANCE
-                    'RUNE_SET_<?=RUNE_SET_ID::ACCURACY?>': 0, // ACCURACY
-                    'RUNE_SET_<?=RUNE_SET_ID::TOLERANCE?>': 0 // TOLERANCE
-                };
-                var selected_1 = document.getElementById('set_1').options[document.getElementById('set_1').selectedIndex].value;
-                var selected_2 = document.getElementById('set_2').options[document.getElementById('set_2').selectedIndex].value;
-                var selected_3 = document.getElementById('set_3').options[document.getElementById('set_3').selectedIndex].value;
-                var requested_values = [
-                    document.getElementById('set_1').options[document.getElementById('set_1').selectedIndex].value,
-                    document.getElementById('set_2').options[document.getElementById('set_2').selectedIndex].value,
-                    document.getElementById('set_3').options[document.getElementById('set_3').selectedIndex].value
-                ];
-                for (var i = 0; i < 3; i ++){
-                    switch (requested_values[i]){
-                        case '<?=RUNE_SET_ID::ENERGY?>':
-                        case '<?=RUNE_SET_ID::GUARD?>':
-                        case '<?=RUNE_SET_ID::NEMESIS?>':
-                        case '<?=RUNE_SET_ID::BLADE?>':
-                        case '<?=RUNE_SET_ID::FOCUS?>':
-                        case '<?=RUNE_SET_ID::ENDURE?>':
-                        case '<?=RUNE_SET_ID::WILL?>':
-                        case '<?=RUNE_SET_ID::SHIELD?>':
-                        case '<?=RUNE_SET_ID::REVENGE?>':
-                        case '<?=RUNE_SET_ID::DESTROY?>':
-                        case '<?=RUNE_SET_ID::FIGHT?>':
-                        case '<?=RUNE_SET_ID::DETERMINATION?>':
-                        case '<?=RUNE_SET_ID::ENHANCE?>':
-                        case '<?=RUNE_SET_ID::ACCURACY?>':
-                        case '<?=RUNE_SET_ID::TOLERANCE?>':
-                            requested_sets['RUNE_SET_' + requested_values[i]] += 2;
-                            break;
-                        case '<?=RUNE_SET_ID::DESPAIR?>':
-                        case '<?=RUNE_SET_ID::SWIFT?>':
-                        case '<?=RUNE_SET_ID::RAGE?>':
-                        case '<?=RUNE_SET_ID::FATAL?>':
-                        case '<?=RUNE_SET_ID::VAMPIRE?>':
-                        case '<?=RUNE_SET_ID::VIOLENT?>':
-                            requested_sets['RUNE_SET_' + i] += 4;
-                            break;
-                    }
-                }
-
                 if (JSON.stringify(sets) !== JSON.stringify(requested_sets)){
                     return false;
                 }
 
                 // Compare with filters
                 var new_stats = {
-                    "ATK": base_stats["attack"],
-                    "DEF": base_stats["defense"],
-                    "HP":  base_stats["hp"],
-                    "SPD": base_stats["speed"],
-                    "CRR": base_stats["crit_rate"],
-                    "CRD": base_stats["crit_damage"],
-                    "ACC": base_stats["accuracy"],
-                    "RES": base_stats["resistance"],
+                    "ATK": base_stats["attack"] + set_stats["attack"],
+                    "DEF": base_stats["defense"] + set_stats["defense"],
+                    "HP":  base_stats["hp"] + set_stats["hp"],
+                    "SPD": base_stats["speed"] + set_stats["speed"],
+                    "CRR": base_stats["crit_rate"] + set_stats["crit_rate"],
+                    "CRD": base_stats["crit_damage"] + set_stats["crit_damage"],
+                    "ACC": base_stats["accuracy"] + set_stats["accuracy"],
+                    "RES": base_stats["resistance"] + set_stats["resistance"],
                     "EHP": 0,
                     "DMG": 0
                 }
@@ -675,6 +768,17 @@
                 var text;
                 for (i = 0; i < data.length; i++){
                     option = data[i];
+
+                    // Add the rune set stats
+                    option.stats.attack += set_stats['attack'];
+                    option.stats.defense += set_stats['defense'];
+                    option.stats.hp += set_stats['hp'];
+                    option.stats.speed += set_stats['speed'];
+                    option.stats.crit_rate += set_stats['crit_rate'];
+                    option.stats.crit_damage += set_stats['crit_damage'];
+                    option.stats.accuracy += set_stats['accuracy'];
+                    option.stats.resistance += set_stats['resistance'];
+
                     tr = document.createElement('tr');
                     td = document.createElement('td');
                     td.setAttribute('class', 'option_stats');