diff --git a/reframework/autorun/MHR_Overlay/Buffs/skills.lua b/reframework/autorun/MHR_Overlay/Buffs/skills.lua index 9c41069..2f17ebd 100644 --- a/reframework/autorun/MHR_Overlay/Buffs/skills.lua +++ b/reframework/autorun/MHR_Overlay/Buffs/skills.lua @@ -9,6 +9,9 @@ local utils; local language; local error_handler; local env_creature; +local player_info; +local time; +local abnormal_statuses; local sdk = sdk; local tostring = tostring; @@ -61,7 +64,10 @@ this.list = { furious = nil, heaven_sent = nil, heroics = nil, - resuscitate = nil + resuscitate = nil, + maximum_might = nil, + bloodlust = nil, + frenzied_bloodlust = nil }; local skill_data_list = { @@ -71,6 +77,7 @@ local skill_data_list = { maximum_might = { id = 10, is_equipped = false }, heroics = { id = 91, is_equipped = false }, dragonheart = { id = 103, is_equipped = false }, + bloodlust = { id = 117, is_equipped = false }, dereliction = { id = 113, is_equipped = false } } @@ -79,6 +86,12 @@ local kushara_daora_soul_breakpoint = 5; local intrepid_heart_minimal_value = 400; local dereliction_breakpoints = {100, 50}; +local maximum_might_delay_timer = nil; +local maximum_might_previous_timer_value = 0; + +local frenzied_bloodlust_duration = 0; +local frenzied_bloodlust_sheathed_duration = 0; + local wind_mantle_duration = 15; local wind_mantle_breakpoints = { 20, 10 }; -- Sword & Shield, Lance, Hammer, Switch Axe, Insect Glaive, Long Sword, Hunting Horn local wind_mantle_special_breakpoints = { @@ -129,6 +142,12 @@ local onibi_powerup_timer_field = player_data_type_def:get_field("_OnibiPowerUpT local challenge_timer_field = player_data_type_def:get_field("_ChallengeTimer"); -- Furious local furious_skill_stamina_buff_second_timer_field = player_data_type_def:get_field("_FuriousSkillStaminaBuffSecondTimer"); +-- Maximum Might +local whole_body_timer_field = player_data_type_def:get_field("_WholeBodyTimer"); +-- Frenzied Bloodlust +local equip_skill_231_wire_num_timer_field = player_data_type_def:get_field("_EquipSkill231_WireNumTimer"); +local equip_skill_231_wp_off_timer_field = player_data_type_def:get_field("_EquipSkill231_WpOffTimer"); + @@ -155,6 +174,10 @@ local equip_skill_226_attack_count_field = player_quest_base_type_def:get_field( local equip_skill_226_attack_off_timer_field = player_quest_base_type_def:get_field("_EquipSkill226AttackOffTimer"); -- Heaven-Sent local is_active_equip_skill_230_method = player_quest_base_type_def:get_method("isActiveEquipSkill230"); +-- Frenzied Bloodlust +local get_hunter_wire_skill_231_num_method = player_quest_base_type_def:get_method("get_HunterWireSkill231Num"); + +local qeree = {}; function this.update(player, player_data) --local item_parameter = get_ref_item_parameter_method:call(singletons.player_manager); @@ -163,10 +186,33 @@ function this.update(player, player_data) -- return; --end + -- local fields = player_quest_base_type_def:get_fields(); + + -- xy = "" + -- for i = 1, 999 do + -- local field = fields[i]; + -- if field == nil then + -- break; + -- end + + -- local value = field:get_data(player); + + -- if qeree[field] == nil then + -- qeree[field] = value; + -- end + + -- if qeree[field] ~= value then + -- xy = string.format("%s%d %s = %s\n", xy, i, field:get_name(), tostring(value)); + -- end + -- end + this.update_equipped_skill_data(player); this.update_dereliction(player_data); this.update_wind_mantle(player); + this.update_maximum_might(player_data); + this.update_bloodlust(); + this.update_frenzied_bloodlust(player, player_data); this.update_generic_number_value_field("burst", player_data, rengeki_power_up_count_field, rengeki_power_up_timer_field, false, nil, burst_breakpoint); @@ -200,6 +246,14 @@ function this.update_equipped_skill_data(player) return; end + -- xy = "" + -- for i = 0, 999 do + -- local has_skill = has_skill_method:call(player_skill_list, i, 1); + -- if has_skill then + -- xy = string.format("%s%d = %s\n", xy, i, tostring(has_skill)); + -- end + -- end + for skill_key, skill_data in pairs(skill_data_list) do local has_skill = has_skill_method:call(player_skill_list, skill_data.id, 1); if has_skill == nil then @@ -218,6 +272,7 @@ function this.update_generic_timer(skill_key, timer_owner, timer_field, is_infin local skill_data = skill_data_list[skill_key]; if skill_data ~= nil and not skill_data.is_equipped then + this.list[skill_key] = nil; return; end @@ -251,6 +306,7 @@ function this.update_generic_number_value_field(skill_key, timer_owner, value_fi local skill_data = skill_data_list[skill_key]; if skill_data ~= nil and not skill_data.is_equipped then + this.list[skill_key] = nil; return; end @@ -303,6 +359,7 @@ function this.update_generic_boolean_value_field(skill_key, timer_owner, value_f local skill_data = skill_data_list[skill_key]; if skill_data ~= nil and not skill_data.is_equipped then + this.list[skill_key] = nil; return; end @@ -350,6 +407,7 @@ function this.update_generic_number_value_method(skill_key, timer_owner, value_m local skill_data = skill_data_list[skill_key]; if skill_data ~= nil and not skill_data.is_equipped then + this.list[skill_key] = nil; return; end @@ -402,6 +460,7 @@ function this.update_generic_boolean_value_method(skill_key, timer_owner, value_ local skill_data = skill_data_list[skill_key]; if skill_data ~= nil and not skill_data.is_equipped then + this.list[skill_key] = nil; return; end @@ -442,12 +501,14 @@ function this.update_generic_boolean_value_method(skill_key, timer_owner, value_ this.update_generic(skill_key, 1, timer); end -function this.update_generic(skill_key, level, timer) +function this.update_generic(skill_key, level, timer, duration) + duration = duration or timer; + local skill = this.list[skill_key]; if skill == nil then local name = language.current_language.skills[skill_key]; - skill = buffs.new(buffs.types.skill, skill_key, name, level, timer); + skill = buffs.new(buffs.types.skill, skill_key, name, level, timer, duration); this.list[skill_key] = skill; else skill.level = level; @@ -459,6 +520,11 @@ function this.update_generic(skill_key, level, timer) end function this.update_dereliction(player_data) + if not skill_data_list.dereliction.is_equipped then + this.list.dereliction = nil; + return; + end + local dereliction_value = symbiosis_skill_lost_vital_field:get_data(player_data); if dereliction_value == nil then error_handler.report("skills.update_derelection", "Failed to access Data: dereliction_value"); @@ -529,15 +595,139 @@ function this.update_wind_mantle(player) end end - local buff = this.list.wind_mantle; - if buff == nil then + local skill = this.list.wind_mantle; + if skill == nil then local name = language.current_language.skills.wind_mantle; - buff = buffs.new(buffs.types.skill, "wind_mantle", name, level, wind_mantle_duration); - this.list.wind_mantle = buff; + skill = buffs.new(buffs.types.skill, "wind_mantle", name, level, wind_mantle_duration); + this.list.wind_mantle = skill; else - buff.level = level; - buffs.update_timer(buff, wind_mantle_duration - (wind_mantle_timer / 60)); + skill.level = level; + buffs.update_timer(skill, wind_mantle_duration - (wind_mantle_timer / 60)); + end +end + +function this.update_maximum_might(player_data) + if not skill_data_list.maximum_might.is_equipped then + this.list.maximum_might = nil; + return; + end + + local whole_body_timer = whole_body_timer_field:get_data(player_data); + if whole_body_timer == nil then + error_handler.report("skills.update_maximum_might", "Failed to access Data: whole_body_timer"); + return; + end + + if player_info.list.max_stamina == -1 then + return; + end + + local skill = this.list.maximum_might; + local is_timer_zero = utils.number.is_equal(whole_body_timer, 0); + + if player_info.list.stamina ~= player_info.list.max_stamina then + if skill ~= nil and whole_body_timer < maximum_might_previous_timer_value then + this.list.maximum_might = nil; + end + + elseif skill == nil then + local name = language.current_language.skills.maximum_might; + + if whole_body_timer < maximum_might_previous_timer_value then + skill = buffs.new(type, "maximum_might", name, 1); + this.list.maximum_might = skill; + + elseif is_timer_zero then + if maximum_might_delay_timer == nil then + maximum_might_delay_timer = time.new_delay_timer(function() + maximum_might_delay_timer = nil; + + skill = buffs.new(type, "maximum_might", name, 1); + this.list.maximum_might = skill; + end, 3.5); + end + + else + time.remove_delay_timer(maximum_might_delay_timer); + end + end + + maximum_might_previous_timer_value = whole_body_timer; +end + +function this.update_bloodlust() + if not skill_data_list.bloodlust.is_equipped then + this.list.bloodlust = nil; + return; + end + + if not abnormal_statuses.list.frenzy_infection + and not abnormal_statuses.list.frenzy_overcome then + this.list.bloodlust = nil; + return; + end + + if this.list.bloodlust == nil then + local name = language.current_language.skills.bloodlust; + this.list.bloodlust = buffs.new(buffs.types.skill, "bloodlust", name, 0); + end +end + +function this.update_frenzied_bloodlust(player, player_data) + local hunter_wire_skill_231_num = get_hunter_wire_skill_231_num_method:call(player); + if hunter_wire_skill_231_num == nil then + error_handler.report("skills.update_frenzied_bloodlust", "Failed to access Data: hunter_wire_skill_231_num"); + return; + end + + if hunter_wire_skill_231_num == 0 then + this.list.frenzied_bloodlust = nil; + frenzied_bloodlust_duration = 0; + frenzied_bloodlust_sheathed_duration = 0; + return; + end + + local equip_skill_231_wire_num_timer = equip_skill_231_wire_num_timer_field:get_data(player_data); + if equip_skill_231_wire_num_timer == nil then + error_handler.report("skills.update_frenzied_bloodlust", "Failed to access Data: equip_skill_231_wire_num_timer"); + return; + end + + local equip_skill_231_wp_off_timer = equip_skill_231_wp_off_timer_field:get_data(player_data); + if equip_skill_231_wp_off_timer == nil then + error_handler.report("skills.update_frenzied_bloodlust", "Failed to access Data: equip_skill_231_wp_off_timer"); + return; + end + + local is_wire_num_timer_zero = utils.number.is_equal(equip_skill_231_wire_num_timer, 0); + if is_wire_num_timer_zero then + this.list.frenzied_bloodlust = nil; + return; + end + + if equip_skill_231_wire_num_timer > frenzied_bloodlust_duration then + frenzied_bloodlust_duration = equip_skill_231_wire_num_timer; + end + + if equip_skill_231_wp_off_timer > frenzied_bloodlust_sheathed_duration then + frenzied_bloodlust_sheathed_duration = equip_skill_231_wp_off_timer; + end + + local is_wp_off_timer_max = utils.number.is_equal(equip_skill_231_wp_off_timer, frenzied_bloodlust_sheathed_duration); + + local timer = equip_skill_231_wire_num_timer; + if not is_wp_off_timer_max then + timer = equip_skill_231_wp_off_timer; + end + + this.update_generic("frenzied_bloodlust", 1, timer / 60); + + local skill = this.list.frenzied_bloodlust; + if is_wp_off_timer_max then + skill.duration = frenzied_bloodlust_duration / 60; + else + skill.duration = frenzied_bloodlust_sheathed_duration / 60; end end @@ -563,6 +753,9 @@ function this.init_dependencies() language = require("MHR_Overlay.Misc.language"); error_handler = require("MHR_Overlay.Misc.error_handler"); env_creature = require("MHR_Overlay.Endemic_Life.env_creature"); + player_info = require("MHR_Overlay.Misc.player_info"); + time = require("MHR_Overlay.Game_Handler.time"); + abnormal_statuses = require("MHR_Overlay.Buffs.abnormal_statuses"); end function this.init_module() diff --git a/reframework/autorun/MHR_Overlay/Misc/language.lua b/reframework/autorun/MHR_Overlay/Misc/language.lua index d0f120f..565daf9 100644 --- a/reframework/autorun/MHR_Overlay/Misc/language.lua +++ b/reframework/autorun/MHR_Overlay/Misc/language.lua @@ -171,11 +171,13 @@ this.default_language = { sleep = "Sleep", stun = "Stun", flash = "Flash", - poison = "Poison", blast = "Blast", exhaust = "Exhaust", ride = "Wyvern Riding", + poison = "Poison", + deadly_poison = "Deadly Poison", + fireblight = "Fireblight", waterblight = "Waterblight", iceblight = "Iceblight", @@ -192,10 +194,12 @@ this.default_language = { dragonblight = "Dragonblight", blastblight = "Blastblight", - bubbleblight = "Bubbleblight", hellfireblight = "Hellfireblight", bloodblight = "Bloodblight", frostblight = "Frostblight", + + minor_bubbleblight = "Minor Bubbleblight", + major_bubbleblight = "Major Bubbleblight", defense_down = "Defense Down", resistance_down = "Resistance Down", @@ -278,7 +282,10 @@ this.default_language = { agitator = "Agitator", furious = "Furious", heroics = "Heroics", - resuscitate = "Resuscitate" + resuscitate = "Resuscitate", + maximum_might = "Maximum Might", + bloodlust = "Bloodlust", + frenzied_bloodlust = "Frenzied Bloodlust" }, dangos = { diff --git a/reframework/autorun/MHR_Overlay/Misc/player_info.lua b/reframework/autorun/MHR_Overlay/Misc/player_info.lua index 9d1ddd0..2ce7a90 100644 --- a/reframework/autorun/MHR_Overlay/Misc/player_info.lua +++ b/reframework/autorun/MHR_Overlay/Misc/player_info.lua @@ -47,7 +47,7 @@ this.list = { affinity = 0; stamina = 0; - max_stamina = 0; + max_stamina = -1; element_type = 0; element_attack = 0; @@ -92,11 +92,14 @@ local get_length_method = system_array_type_def:get_method("get_Length"); local get_value_method = system_array_type_def:get_method("GetValue(System.Int32)"); function this.update() - if not config.current_config.stats_UI.enabled then + if quest_status.flow_state == quest_status.flow_states.NONE then return; end - if quest_status.flow_state == quest_status.flow_states.NONE then + local cached_config = config.current_config; + + if not cached_config.buff_UI.enabled + and not cached_config.stats_UI.enabled then return; end @@ -116,16 +119,20 @@ function this.update() error_handler.report("player_info.update", "Failed to access Data: master_player_data"); end - this.update_generic("attack", master_player_data, attack_field); - this.update_generic("affinity", master_player_data, critical_rate_field); - this.update_generic("defense", master_player_data, defence_field); - this.update_generic("stamina", master_player_data, stamina_field); this.list.stamina = math.floor(this.list.stamina / 30); this.update_generic("max_stamina", master_player_data, stamina_max_field); this.list.max_stamina = math.floor(this.list.max_stamina / 30); + if not cached_config.stats_UI.enabled then + return; + end + + this.update_generic("attack", master_player_data, attack_field); + this.update_generic("affinity", master_player_data, critical_rate_field); + this.update_generic("defense", master_player_data, defence_field); + this.update_generic("element_type", master_player_data, element_type_field); this.update_generic("element_attack", master_player_data, element_attack_field); diff --git a/reframework/data/MHR Overlay/languages/en-us.json b/reframework/data/MHR Overlay/languages/en-us.json index de56555..013cb8a 100644 --- a/reframework/data/MHR Overlay/languages/en-us.json +++ b/reframework/data/MHR Overlay/languages/en-us.json @@ -21,7 +21,7 @@ "blastblight": "Blastblight", "bleeding": "Bleeding", "bloodblight": "Bloodblight", - "bubbleblight": "Bubbleblight", + "deadly_poison": "Deadly Poison", "defense_down": "Defense Down", "dragonblight": "Dragonblight", "dung_bomb": "Dung Bomb", @@ -38,6 +38,8 @@ "hellfireblight": "Hellfireblight", "iceblight": "Iceblight", "leeched": "Leeched", + "major_bubbleblight": "Major Bubbleblight", + "minor_bubbleblight": "Minor Bubbleblight", "muck": "Muck", "paralysis": "Paralysis", "poison": "Poison", @@ -479,10 +481,12 @@ "adrenaline_rush": "Adrenaline Rush", "affinity_sliding": "Affinity Sliding", "agitator": "Agitator", + "bloodlust": "Bloodlust", "burst": "Burst", "coalescence": "Coalescence", "counterstrike": "Counterstrike", "dereliction": "Dereliction", + "frenzied_bloodlust": "Frenzied Bloodlust", "furious": "Furious", "grinder_s": "Grinder (S)", "heaven_sent": "Heaven-Sent", @@ -491,6 +495,7 @@ "intrepid_heart": "Intrepid Heart", "kushala_daora_soul": "Kushala Daora Soul", "latent_power": "Latent Power", + "maximum_might": "Maximum Might", "offensive_guard": "Offensive Guard", "protective_polish": "Protective Polish", "resuscitate": "Resuscitate", diff --git a/reframework/data/MHR Overlay/languages/ja-jp.json b/reframework/data/MHR Overlay/languages/ja-jp.json index 6e90478..5ec55a8 100644 --- a/reframework/data/MHR Overlay/languages/ja-jp.json +++ b/reframework/data/MHR Overlay/languages/ja-jp.json @@ -22,6 +22,7 @@ "bleeding": "Bleeding", "bloodblight": "Bloodblight", "bubbleblight": "Bubbleblight", + "deadly_poison": "Deadly Poison", "defense_down": "Defense Down", "dragonblight": "Dragonblight", "dung_bomb": "悪臭", @@ -38,6 +39,8 @@ "hellfireblight": "Hellfireblight", "iceblight": "氷属性やられ", "leeched": "Leeched", + "major_bubbleblight": "Major Bubbleblight", + "minor_bubbleblight": "Minor Bubbleblight", "muck": "Muck", "paralysis": "麻痺", "poison": "毒", @@ -479,10 +482,12 @@ "adrenaline_rush": "Adrenaline Rush", "affinity_sliding": "Affinity Sliding", "agitator": "Agitator", + "bloodlust": "Bloodlust", "burst": "Burst", "coalescence": "Coalescence", "counterstrike": "Counterstrike", "dereliction": "Dereliction", + "frenzied_bloodlust": "Frenzied Bloodlust", "furious": "Furious", "grinder_s": "Grinder (S)", "heaven_sent": "Heaven-Sent", @@ -491,6 +496,7 @@ "intrepid_heart": "Intrepid Heart", "kushala_daora_soul": "Kushala Daora Soul", "latent_power": "Latent Power", + "maximum_might": "Maximum Might", "offensive_guard": "Offensive Guard", "protective_polish": "Protective Polish", "resuscitate": "Resuscitate", diff --git a/reframework/data/MHR Overlay/languages/ko-kr.json b/reframework/data/MHR Overlay/languages/ko-kr.json index b829e9c..037f9c3 100644 --- a/reframework/data/MHR Overlay/languages/ko-kr.json +++ b/reframework/data/MHR Overlay/languages/ko-kr.json @@ -22,6 +22,7 @@ "bleeding": "Bleeding", "bloodblight": "Bloodblight", "bubbleblight": "Bubbleblight", + "deadly_poison": "Deadly Poison", "defense_down": "Defense Down", "dragonblight": "Dragonblight", "dung_bomb": "거름탄", @@ -38,6 +39,8 @@ "hellfireblight": "Hellfireblight", "iceblight": "진흙구리", "leeched": "Leeched", + "major_bubbleblight": "Major Bubbleblight", + "minor_bubbleblight": "Minor Bubbleblight", "muck": "Muck", "paralysis": "마비", "poison": "독", @@ -480,10 +483,12 @@ "adrenaline_rush": "Adrenaline Rush", "affinity_sliding": "Affinity Sliding", "agitator": "Agitator", + "bloodlust": "Bloodlust", "burst": "Burst", "coalescence": "Coalescence", "counterstrike": "Counterstrike", "dereliction": "Dereliction", + "frenzied_bloodlust": "Frenzied Bloodlust", "furious": "Furious", "grinder_s": "Grinder (S)", "heaven_sent": "Heaven-Sent", @@ -492,6 +497,7 @@ "intrepid_heart": "Intrepid Heart", "kushala_daora_soul": "Kushala Daora Soul", "latent_power": "Latent Power", + "maximum_might": "Maximum Might", "offensive_guard": "Offensive Guard", "protective_polish": "Protective Polish", "resuscitate": "Resuscitate", diff --git a/reframework/data/MHR Overlay/languages/ru-ru.json b/reframework/data/MHR Overlay/languages/ru-ru.json index 8979fb2..feaa49c 100644 --- a/reframework/data/MHR Overlay/languages/ru-ru.json +++ b/reframework/data/MHR Overlay/languages/ru-ru.json @@ -22,6 +22,7 @@ "bleeding": "Bleeding", "bloodblight": "Bloodblight", "bubbleblight": "Bubbleblight", + "deadly_poison": "Deadly Poison", "defense_down": "Defense Down", "dragonblight": "Dragonblight", "dung_bomb": "Навозная бомба", @@ -38,6 +39,8 @@ "hellfireblight": "Hellfireblight", "iceblight": "Ледяная порча", "leeched": "Leeched", + "major_bubbleblight": "Major Bubbleblight", + "minor_bubbleblight": "Minor Bubbleblight", "muck": "Muck", "paralysis": "Паралич", "poison": "Отравление", @@ -480,10 +483,12 @@ "adrenaline_rush": "Adrenaline Rush", "affinity_sliding": "Affinity Sliding", "agitator": "Agitator", + "bloodlust": "Bloodlust", "burst": "Burst", "coalescence": "Coalescence", "counterstrike": "Counterstrike", "dereliction": "Dereliction", + "frenzied_bloodlust": "Frenzied Bloodlust", "furious": "Furious", "grinder_s": "Grinder (S)", "heaven_sent": "Heaven-Sent", @@ -492,6 +497,7 @@ "intrepid_heart": "Intrepid Heart", "kushala_daora_soul": "Kushala Daora Soul", "latent_power": "Latent Power", + "maximum_might": "Maximum Might", "offensive_guard": "Offensive Guard", "protective_polish": "Protective Polish", "resuscitate": "Resuscitate", diff --git a/reframework/data/MHR Overlay/languages/zh-cn.json b/reframework/data/MHR Overlay/languages/zh-cn.json index 076d832..ab950e6 100644 --- a/reframework/data/MHR Overlay/languages/zh-cn.json +++ b/reframework/data/MHR Overlay/languages/zh-cn.json @@ -22,6 +22,7 @@ "bleeding": "Bleeding", "bloodblight": "Bloodblight", "bubbleblight": "Bubbleblight", + "deadly_poison": "Deadly Poison", "defense_down": "Defense Down", "dragonblight": "Dragonblight", "dung_bomb": "异臭球", @@ -38,6 +39,8 @@ "hellfireblight": "Hellfireblight", "iceblight": "冰异常状态", "leeched": "Leeched", + "major_bubbleblight": "Major Bubbleblight", + "minor_bubbleblight": "Minor Bubbleblight", "muck": "Muck", "paralysis": "麻痹", "poison": "中毒", @@ -480,10 +483,12 @@ "adrenaline_rush": "Adrenaline Rush", "affinity_sliding": "Affinity Sliding", "agitator": "Agitator", + "bloodlust": "Bloodlust", "burst": "Burst", "coalescence": "Coalescence", "counterstrike": "Counterstrike", "dereliction": "Dereliction", + "frenzied_bloodlust": "Frenzied Bloodlust", "furious": "Furious", "grinder_s": "Grinder (S)", "heaven_sent": "Heaven-Sent", @@ -492,6 +497,7 @@ "intrepid_heart": "Intrepid Heart", "kushala_daora_soul": "Kushala Daora Soul", "latent_power": "Latent Power", + "maximum_might": "Maximum Might", "offensive_guard": "Offensive Guard", "protective_polish": "Protective Polish", "resuscitate": "Resuscitate", diff --git a/reframework/data/MHR Overlay/languages/zh-tw.json b/reframework/data/MHR Overlay/languages/zh-tw.json index dd9b445..e232e6b 100644 --- a/reframework/data/MHR Overlay/languages/zh-tw.json +++ b/reframework/data/MHR Overlay/languages/zh-tw.json @@ -22,6 +22,7 @@ "bleeding": "Bleeding", "bloodblight": "Bloodblight", "bubbleblight": "Bubbleblight", + "deadly_poison": "Deadly Poison", "defense_down": "Defense Down", "dragonblight": "Dragonblight", "dung_bomb": "異臭", @@ -38,6 +39,8 @@ "hellfireblight": "Hellfireblight", "iceblight": "冰屬性異常", "leeched": "Leeched", + "major_bubbleblight": "Major Bubbleblight", + "minor_bubbleblight": "Minor Bubbleblight", "muck": "Muck", "paralysis": "麻痺", "poison": "毒", @@ -480,10 +483,12 @@ "adrenaline_rush": "Adrenaline Rush", "affinity_sliding": "Affinity Sliding", "agitator": "Agitator", + "bloodlust": "Bloodlust", "burst": "Burst", "coalescence": "Coalescence", "counterstrike": "Counterstrike", "dereliction": "Dereliction", + "frenzied_bloodlust": "Frenzied Bloodlust", "furious": "Furious", "grinder_s": "Grinder (S)", "heaven_sent": "Heaven-Sent", @@ -492,6 +497,7 @@ "intrepid_heart": "Intrepid Heart", "kushala_daora_soul": "Kushala Daora Soul", "latent_power": "Latent Power", + "maximum_might": "Maximum Might", "offensive_guard": "Offensive Guard", "protective_polish": "Protective Polish", "resuscitate": "Resuscitate",