From 9a5e05d229edfeffc948c121f65e71bc11b31d11 Mon Sep 17 00:00:00 2001 From: GreenComfyTea Date: Sat, 2 Jul 2022 14:16:58 +0300 Subject: [PATCH] Initial Sunbreak update. - Added Monster Rank. - Fixed Poison and Blast Damage. --- .../MHR_Overlay/Damage_Meter/player.lua | 59 +++++++++---- .../autorun/MHR_Overlay/Misc/config.lua | 23 +++-- .../autorun/MHR_Overlay/Misc/language.lua | 11 ++- .../MHR_Overlay/Monsters/ailment_hook.lua | 53 ++++++++++-- .../autorun/MHR_Overlay/Monsters/ailments.lua | 26 +----- .../MHR_Overlay/Monsters/large_monster.lua | 7 +- .../MHR_Overlay/Monsters/small_monster.lua | 7 +- .../UI/UI_Entities/damage_UI_entity.lua | 26 ++++-- .../MHR_Overlay/UI/customization_menu.lua | 85 +++++++++++++------ 9 files changed, 206 insertions(+), 91 deletions(-) diff --git a/reframework/autorun/MHR_Overlay/Damage_Meter/player.lua b/reframework/autorun/MHR_Overlay/Damage_Meter/player.lua index 22124b4..b0d4271 100644 --- a/reframework/autorun/MHR_Overlay/Damage_Meter/player.lua +++ b/reframework/autorun/MHR_Overlay/Damage_Meter/player.lua @@ -14,11 +14,12 @@ player.myself = nil; player.myself_position = Vector3f.new(0, 0, 0); player.total = nil; -function player.new(player_id, player_name, player_hunter_rank) +function player.new(player_id, player_name, player_master_rank, player_hunter_rank) local new_player = {}; new_player.id = player_id; new_player.name = player_name; new_player.hunter_rank = player_hunter_rank; + new_player.master_rank = player_master_rank; new_player.join_time = -1; new_player.first_hit_time = -1; @@ -313,8 +314,8 @@ end function player.init() player.list = {}; - player.total = player.new(0, "Total", 0); - player.myself = player.new(-1, "Dummy", -1); + player.total = player.new(0, "Total", 0, 0); + player.myself = player.new(-1, "Dummy", -1, -1); end local lobby_manager_type_def = sdk.find_type_definition("snow.LobbyManager"); @@ -327,6 +328,7 @@ local my_hunter_info_type_def = my_hunter_info_field:get_type(); local name_field = my_hunter_info_type_def:get_field("_name"); local member_index_field = my_hunter_info_type_def:get_field("_memberIndex"); local hunter_rank_field = my_hunter_info_type_def:get_field("_hunterRank"); +local master_rank_field = my_hunter_info_type_def:get_field("_masterRank"); local hunter_info_type_def = hunter_info_field:get_type(); local get_count_method = hunter_info_type_def:get_method("get_Count"); @@ -334,6 +336,8 @@ local get_item_method = hunter_info_type_def:get_method("get_Item"); local progress_manager_type_def = sdk.find_type_definition("snow.progress.ProgressManager"); local get_hunter_rank_method = progress_manager_type_def:get_method("get_HunterRank"); +local get_master_rank_method = progress_manager_type_def:get_method("get_MasterRank"); + local player_manager_type_def = sdk.find_type_definition("snow.player.PlayerManager"); local get_master_player_id_method = player_manager_type_def:get_method("getMasterPlayerID"); @@ -366,11 +370,18 @@ function player.update_player_list_in_village() myself_hunter_rank = 0; end + + local myself_master_rank = get_master_rank_method:call(singletons.progress_manager); + if myself_master_rank == nil then + customization_menu.status = "No myself master rank"; + myself_master_rank = 0; + end + local myself_id = get_master_player_id_method:call(singletons.player_manager); if myself_id == nil then customization_menu.status = "No myself player id"; elseif player.myself == nil or myself_id ~= player.myself.id then - player.myself = player.new(myself_id, myself_player_name, myself_hunter_rank); + player.myself = player.new(myself_id, myself_player_name, myself_master_rank, myself_hunter_rank); player.list[myself_id] = player.myself; end @@ -390,28 +401,33 @@ function player.update_player_list_in_village() for i = 0, count - 1 do local player_info = get_item_method:call(player_info_list, i); if player_info == nil then - goto continue + goto continue; end local player_id = member_index_field:get_data(player_info); if player_id == nil then - goto continue + goto continue; end local player_hunter_rank = hunter_rank_field:get_data(player_info); if player_hunter_rank == nil then - goto continue + goto continue; + end + + local player_master_rank = master_rank_field:get_data(player_info); + if player_hunter_rank == nil then + player_master_rank = 0; end local player_name = name_field:get_data(player_info); if player_name == nil then - goto continue + goto continue; end if player.myself.id == player_id then player.list[player_id] = player.myself; elseif player.list[player_id] == nil or player.list[player_id].name ~= player_name then - player.list[player_id] = player.new(player_id, player_name, player_hunter_rank); + player.list[player_id] = player.new(player_id, player_name, player_master_rank, player_hunter_rank); end ::continue:: @@ -446,11 +462,17 @@ function player.update_player_list_on_quest() myself_hunter_rank = 0; end + local myself_master_rank = get_master_rank_method:call(singletons.progress_manager); + if myself_hunter_rank == nil then + customization_menu.status = "No myself master rank"; + myself_hunter_rank = 0; + end + local myself_id = get_master_player_id_method:call(singletons.player_manager); if myself_id == nil then customization_menu.status = "No myself player id"; elseif player.myself == nil or myself_id ~= player.myself.id then - player.myself = player.new(myself_id, myself_player_name, myself_hunter_rank); + player.myself = player.new(myself_id, myself_player_name, myself_master_rank, myself_hunter_rank); player.list[myself_id] = player.myself; end @@ -470,29 +492,34 @@ function player.update_player_list_on_quest() for i = 0, count - 1 do local player_info = get_item_method:call(player_info_list, i); if player_info == nil then - goto continue + goto continue; end local player_id = member_index_field:get_data(player_info); if player_id == nil then - goto continue + goto continue; end local player_hunter_rank = hunter_rank_field:get_data(player_info); if player_hunter_rank == nil then - goto continue + goto continue; + end + + local player_master_rank = master_rank_field:get_data(player_info); + if player_master_rank == nil then + player_master_rank = 0; end local player_name = name_field:get_data(player_info); if player_name == nil then - goto continue + goto continue; end if player.myself.id == player_id then player.list[player_id] = player.myself; elseif player.list[player_id] == nil or player.list[player_id].name ~= player_name then - player.list[player_id] = player.new(player_id, player_name, player_hunter_rank); + player.list[player_id] = player.new(player_id, player_name, player_master_rank, player_hunter_rank); end ::continue:: @@ -507,7 +534,7 @@ function player.init_UI(_player) cached_config.highlighted_damage_bar, cached_config.player_name_label, cached_config.dps_label, - cached_config.hunter_rank_label, + cached_config.master_hunter_rank_label, cached_config.damage_value_label, cached_config.damage_percentage_label ); diff --git a/reframework/autorun/MHR_Overlay/Misc/config.lua b/reframework/autorun/MHR_Overlay/Misc/config.lua index d447d8e..ac4d75c 100644 --- a/reframework/autorun/MHR_Overlay/Misc/config.lua +++ b/reframework/autorun/MHR_Overlay/Misc/config.lua @@ -3793,6 +3793,7 @@ function config.init() include = { myself = { + master_rank = true, hunter_rank = true, word_player = false, player_id = false, @@ -3800,6 +3801,7 @@ function config.init() }, others = { + master_rank = true, hunter_rank = true, word_player = false, player_id = false, @@ -3824,17 +3826,24 @@ function config.init() } }, - hunter_rank_label = { + master_hunter_rank_label = { visibility = false, - enable_for = { - me = true, - other_players = true + include = { + myself = { + master_rank = true, + hunter_rank = true + }, + + others = { + master_rank = true, + hunter_rank = true + } }, - text = "[%d]", + text = "[%s]", offset = { - x = -35, + x = -65, y = 0 }, color = 0xFFCCF4E1, @@ -4072,7 +4081,7 @@ function config.init_module() config.init(); config.load(); - config.current_config.version = "v1.11"; + config.current_config.version = "v2.0"; language.update(table_helpers.find_index(language.language_names, config.current_config.global_settings.language, false)); diff --git a/reframework/autorun/MHR_Overlay/Misc/language.lua b/reframework/autorun/MHR_Overlay/Misc/language.lua index 16020e0..655360d 100644 --- a/reframework/autorun/MHR_Overlay/Misc/language.lua +++ b/reframework/autorun/MHR_Overlay/Misc/language.lua @@ -61,7 +61,12 @@ language.default_language = { spinning = "Spinning", rock = "Rock", - tail_tip = "Tail Tip" + tail_tip = "Tail Tip", + + left_claw = "Left Claw", + right_claw = "Right Claw", + + unknown = "?" }, ailments = { @@ -340,7 +345,9 @@ language.default_language = { apply = "Apply", - menu_font_change_disclaimer = "Changing Language and Menu Font Size several times will cause a crash!" + menu_font_change_disclaimer = "Changing Language and Menu Font Size several times will cause a crash!", + + master_rank = "Master Rank" } }; diff --git a/reframework/autorun/MHR_Overlay/Monsters/ailment_hook.lua b/reframework/autorun/MHR_Overlay/Monsters/ailment_hook.lua index 21eb39e..f1dbd28 100644 --- a/reframework/autorun/MHR_Overlay/Monsters/ailment_hook.lua +++ b/reframework/autorun/MHR_Overlay/Monsters/ailment_hook.lua @@ -8,6 +8,9 @@ local table_helpers; local enemy_poison_damage_param_type_def = sdk.find_type_definition("snow.enemy.EnemyPoisonDamageParam"); local on_poison_activate_proc_method = enemy_poison_damage_param_type_def:get_method("onActivateProc"); +local enemy_poison_damage_param_type_def = sdk.find_type_definition("snow.enemy.EnemyBlastDamageParam"); +local on_blast_activate_proc_method = enemy_poison_damage_param_type_def:get_method("onActivateProc"); + local enemy_condition_damage_param_base_type_def = sdk.find_type_definition("snow.enemy.EnemyConditionDamageParamBase"); local get_enemy_method = enemy_condition_damage_param_base_type_def:get_method("get_Em"); @@ -17,9 +20,14 @@ local is_boss_enemy_method = enemy_character_base_type_def:get_method("get_isBos local enemy_damage_param_type_def = sdk.find_type_definition("snow.enemy.EnemyDamageParam"); local stock_damage_method = enemy_damage_param_type_def:get_method("stockDamage"); + local poison_param_field = enemy_damage_param_type_def:get_field("_PoisonParam"); local blast_param_field = enemy_damage_param_type_def:get_field("_BlastParam"); +local blast_param_type = blast_param_field:get_type(); +local blast_damage_method = blast_param_type:get_method("get_BlastDamage"); +local blast_adjust_rate_method = blast_param_type:get_method("get_BlastDamageAdjustRateByEnemyLv"); + function ailment_hook.poison_proc(poison_param) if poison_param == nil then return; @@ -46,6 +54,37 @@ function ailment_hook.poison_proc(poison_param) ailments.clear_ailment_contribution(monster, ailments.poison_id); end + +function ailment_hook.blast_proc(blast_param) + if blast_param == nil then + return; + end + + local enemy = get_enemy_method:call(blast_param); + if enemy == nil then + return; + end + + local is_large = is_boss_enemy_method:call(enemy); + if is_large == nil then + return; + end + + local monster; + if is_large then + monster = large_monster.get_monster(enemy); + else + monster = small_monster.get_monster(enemy); + end + + local blast_damage = blast_damage_method:call(blast_param); + local blast_adjust_rate = blast_adjust_rate_method:call(blast_param); + + + ailments.apply_ailment_damage(monster, ailments.blast_id, blast_damage * blast_adjust_rate); + ailments.clear_ailment_contribution(monster, ailments.blast_id); +end + function ailment_hook.stock_damage() for enemy, monster in pairs(large_monster.list) do local damage_param = damage_param_field:get_data(enemy); @@ -54,9 +93,8 @@ function ailment_hook.stock_damage() end local poison_param = poison_param_field:get_data(damage_param); - local blast_param = blast_param_field:get_data(damage_param); - ailments.update_poison_blast(monster, poison_param, blast_param); + ailments.update_poison(monster, poison_param); ::continue:: end @@ -67,9 +105,8 @@ function ailment_hook.stock_damage() end local poison_param = poison_param_field:get_data(damage_param); - local blast_param = blast_param_field:get_data(damage_param); - ailments.update_poison_blast(monster, poison_param, blast_param); + ailments.update_poison(monster, poison_param); ::continue:: end end @@ -82,7 +119,7 @@ function ailment_hook.init_module() table_helpers = require("MHR_Overlay.Misc.table_helpers"); sdk.hook(stock_damage_method, function(args) - pcall(ailment_hook.stock_damage); + pcall(ailment_hook.stock_damage, sdk.to_managed_object(args[2])); end, function(retval) return retval; end); @@ -92,6 +129,12 @@ function ailment_hook.init_module() end, function(retval) return retval; end); + + sdk.hook(on_blast_activate_proc_method, function(args) + pcall(ailment_hook.blast_proc, sdk.to_managed_object(args[2])); + end, function(retval) + return retval; + end); end return ailment_hook; \ No newline at end of file diff --git a/reframework/autorun/MHR_Overlay/Monsters/ailments.lua b/reframework/autorun/MHR_Overlay/Monsters/ailments.lua index dbdb9d5..dd6b9d1 100644 --- a/reframework/autorun/MHR_Overlay/Monsters/ailments.lua +++ b/reframework/autorun/MHR_Overlay/Monsters/ailments.lua @@ -247,9 +247,6 @@ local get_active_timer_method = enemy_condition_damage_param_base_type_def:get_m local poison_damage_field = poison_param_type:get_field("k__BackingField"); local poison_get_is_damage_method = poison_param_type:get_method("get_IsDamage"); -local blast_damage_method = blast_param_type:get_method("get_BlastDamage"); -local blast_adjust_rate_method = blast_param_type:get_method("get_BlastDamageAdjustRateByEnemyLv"); - function ailments.update_ailments(enemy, monster) if enemy == nil then return; @@ -416,7 +413,7 @@ function ailments.update_last_change_time(monster, id) end -- Code by coavins -function ailments.update_poison_blast(monster, poison_param, blast_param) +function ailments.update_poison(monster, poison_param) if monster == nil then return; end @@ -430,20 +427,6 @@ function ailments.update_poison_blast(monster, poison_param, blast_param) ailments.apply_ailment_damage(monster, ailments.poison_id, poison_damage); end end - - if blast_param ~= nil then - -- if applied, then calculate share for blast and apply damage - local activate_count = get_activate_count_method:call(blast_param):get_element(0):get_field("mValue"); - - if activate_count > monster.ailments[ailments.blast_id].activate_count then - monster.ailments[ailments.blast_id].activate_count = activate_count; - local blast_damage = blast_damage_method:call(blast_param); - local blast_adjust_rate = blast_adjust_rate_method:call(blast_param); - - ailments.apply_ailment_damage(monster, ailments.blast_id, blast_damage * blast_adjust_rate); - ailments.clear_ailment_contribution(monster, ailments.blast_id); - end - end end function ailments.draw_dynamic(monster, ailments_position_on_screen, opacity_scale) @@ -815,7 +798,7 @@ function ailments.apply_ailment_damage(monster, ailment_type, ailment_damage) local buildup_share = monster.ailments[ailment_type].buildup_share; if ailment_type == ailments.poison_id then damage_source_type = "poison"; - buildup_share = monster.ailments[ailment_type]._cached_buildup_share; + buildup_share = monster.ailments[ailment_type].cached_buildup_share; elseif ailment_type == ailments.blast_id then damage_source_type = "blast"; else @@ -823,9 +806,8 @@ function ailments.apply_ailment_damage(monster, ailment_type, ailment_damage) end local damage = ailment_damage; - - -- split up damage according to ratio of buildup on boss for this type + xy = "." .. tostring(buildup_share); for attacker_id, percentage in pairs(buildup_share) do local damage_portion = damage * percentage; @@ -843,8 +825,6 @@ function ailments.apply_ailment_damage(monster, ailment_type, ailment_damage) player.update_damage(player.total, damage_source_type, true, damage_object); end - - end function ailments.init_module() diff --git a/reframework/autorun/MHR_Overlay/Monsters/large_monster.lua b/reframework/autorun/MHR_Overlay/Monsters/large_monster.lua index 60d915f..a70b790 100644 --- a/reframework/autorun/MHR_Overlay/Monsters/large_monster.lua +++ b/reframework/autorun/MHR_Overlay/Monsters/large_monster.lua @@ -87,10 +87,11 @@ function large_monster.new(enemy) end function large_monster.get_monster(enemy) - if large_monster.list[enemy] == nil then - return large_monster.new(enemy); + local monster = large_monster.list[enemy]; + if monster == nil then + monster = large_monster.new(enemy); end - return large_monster.list[enemy]; + return monster; end local enemy_character_base_type_def = sdk.find_type_definition("snow.enemy.EnemyCharacterBase"); diff --git a/reframework/autorun/MHR_Overlay/Monsters/small_monster.lua b/reframework/autorun/MHR_Overlay/Monsters/small_monster.lua index ec69996..f408fea 100644 --- a/reframework/autorun/MHR_Overlay/Monsters/small_monster.lua +++ b/reframework/autorun/MHR_Overlay/Monsters/small_monster.lua @@ -48,11 +48,12 @@ function small_monster.new(enemy) end function small_monster.get_monster(enemy) - if small_monster.list[enemy] == nil then - small_monster.list[enemy] = small_monster.new(enemy); + local monster = small_monster.list[enemy]; + if monster == nil then + monster = small_monster.new(enemy); end - return small_monster.list[enemy]; + return monster; end local enemy_character_base_type_def = sdk.find_type_definition("snow.enemy.EnemyCharacterBase"); diff --git a/reframework/autorun/MHR_Overlay/UI/UI_Entities/damage_UI_entity.lua b/reframework/autorun/MHR_Overlay/UI/UI_Entities/damage_UI_entity.lua index 3036acf..d3c35af 100644 --- a/reframework/autorun/MHR_Overlay/UI/UI_Entities/damage_UI_entity.lua +++ b/reframework/autorun/MHR_Overlay/UI/UI_Entities/damage_UI_entity.lua @@ -57,7 +57,11 @@ function damage_UI_entity.draw(_player, position_on_screen, opacity_scale, top_d local player_name_text = ""; - if player_include.hunter_rank then + if player_include.master_rank and player_include.hunter_rank then + player_name_text = string.format("[%d:%d] ", _player.master_rank, _player.hunter_rank); + elseif player_include.master_rank then + player_name_text = string.format("[%d] ", _player.master_rank); + elseif player_include.hunter_rank then player_name_text = string.format("[%d] ", _player.hunter_rank); end @@ -89,6 +93,8 @@ function damage_UI_entity.draw(_player, position_on_screen, opacity_scale, top_d end end + + if _player.id == player.myself.id and cached_config.settings.highlighted_bar == "Me" then drawing.draw_bar(_player.damage_UI.highlighted_bar, position_on_screen, opacity_scale, player_damage_bar_percentage); elseif cached_config.settings.highlighted_bar == "Top Damage" and _player.display.total_damage == top_damage then @@ -100,11 +106,21 @@ function damage_UI_entity.draw(_player, position_on_screen, opacity_scale, top_d end if _player.id == player.myself.id then - if _player.damage_UI.hunter_rank_label.enable_for.me then - drawing.draw_label(_player.damage_UI.hunter_rank_label, position_on_screen, opacity_scale, _player.hunter_rank); + if _player.damage_UI.hunter_rank_label.include.myself.master_rank and _player.damage_UI.hunter_rank_label.include.myself.hunter_rank then + drawing.draw_label(_player.damage_UI.hunter_rank_label, position_on_screen, opacity_scale, string.format("%d:%d", _player.master_rank, _player.hunter_rank)); + elseif _player.damage_UI.hunter_rank_label.include.myself.master_rank then + drawing.draw_label(_player.damage_UI.hunter_rank_label, position_on_screen, opacity_scale, string.format("%d", _player.master_rank)); + elseif _player.damage_UI.hunter_rank_label.include.myself.hunter_rank then + drawing.draw_label(_player.damage_UI.hunter_rank_label, position_on_screen, opacity_scale, string.format("%d", _player.hunter_rank)); + end + else + if _player.damage_UI.hunter_rank_label.include.others.master_rank and _player.damage_UI.hunter_rank_label.include.others.hunter_rank then + drawing.draw_label(_player.damage_UI.hunter_rank_label, position_on_screen, opacity_scale, string.format("%d:%d", _player.master_rank, _player.hunter_rank)); + elseif _player.damage_UI.hunter_rank_label.include.others.master_rank then + drawing.draw_label(_player.damage_UI.hunter_rank_label, position_on_screen, opacity_scale, string.format("%d", _player.master_rank)); + elseif _player.damage_UI.hunter_rank_label.include.others.hunter_rank then + drawing.draw_label(_player.damage_UI.hunter_rank_label, position_on_screen, opacity_scale, string.format("%d", _player.hunter_rank)); end - elseif _player.damage_UI.hunter_rank_label.enable_for.other_players then - drawing.draw_label(_player.damage_UI.hunter_rank_label, position_on_screen, opacity_scale, _player.hunter_rank); end drawing.draw_label(_player.damage_UI.player_name_label, position_on_screen, opacity_scale, player_name_text); diff --git a/reframework/autorun/MHR_Overlay/UI/customization_menu.lua b/reframework/autorun/MHR_Overlay/UI/customization_menu.lua index a26821e..b08cf7d 100644 --- a/reframework/autorun/MHR_Overlay/UI/customization_menu.lua +++ b/reframework/autorun/MHR_Overlay/UI/customization_menu.lua @@ -15271,6 +15271,12 @@ function customization_menu.draw() if imgui.tree_node(language.current_language.customization_menu.include) then if imgui.tree_node(language.current_language.customization_menu.me) then + changed, config.current_config.damage_meter_UI.player_name_label.include.myself.master_rank = imgui.checkbox( + language.current_language.customization_menu.master_rank, + config.current_config.damage_meter_UI.player_name_label.include.myself.master_rank); + config_changed = config_changed or changed; + damage_meter_UI_changed = damage_meter_UI_changed or changed; + changed, config.current_config.damage_meter_UI.player_name_label.include.myself.hunter_rank = imgui.checkbox( language.current_language.customization_menu.hunter_rank, config.current_config.damage_meter_UI.player_name_label.include.myself.hunter_rank); @@ -15299,6 +15305,12 @@ function customization_menu.draw() end if imgui.tree_node(language.current_language.customization_menu.other_players) then + changed, config.current_config.damage_meter_UI.player_name_label.include.others.master_rank = imgui.checkbox( + language.current_language.customization_menu.master_rank, + config.current_config.damage_meter_UI.player_name_label.include.others.master_rank); + config_changed = config_changed or changed; + damage_meter_UI_changed = damage_meter_UI_changed or changed; + changed, config.current_config.damage_meter_UI.player_name_label.include.others.hunter_rank = imgui.checkbox( language.current_language.customization_menu.hunter_rank, config.current_config.damage_meter_UI.player_name_label.include.others.hunter_rank); @@ -15394,39 +15406,58 @@ function customization_menu.draw() end if imgui.tree_node(language.current_language.customization_menu.hunter_rank_label) then - changed, config.current_config.damage_meter_UI.hunter_rank_label.visibility = imgui.checkbox(language.current_language + changed, config.current_config.damage_meter_UI.master_hunter_rank_label.visibility = imgui.checkbox(language.current_language .customization_menu.visible, - config.current_config.damage_meter_UI.hunter_rank_label.visibility); + config.current_config.damage_meter_UI.master_hunter_rank_label.visibility); config_changed = config_changed or changed; damage_meter_UI_changed = damage_meter_UI_changed or changed; - if imgui.tree_node(language.current_language.customization_menu.enable_for) then - changed, config.current_config.damage_meter_UI.hunter_rank_label.enable_for.me = imgui.checkbox( - language.current_language.customization_menu.me, - config.current_config.damage_meter_UI.hunter_rank_label.enable_for.me); - config_changed = config_changed or changed; - damage_meter_UI_changed = damage_meter_UI_changed or changed; + if imgui.tree_node(language.current_language.customization_menu.include) then + if imgui.tree_node(language.current_language.customization_menu.me) then + changed, config.current_config.damage_meter_UI.master_hunter_rank_label.include.myself.master_rank = imgui.checkbox( + language.current_language.customization_menu.master_rank, + config.current_config.damage_meter_UI.player_name_label.include.myself.master_rank); + config_changed = config_changed or changed; + damage_meter_UI_changed = damage_meter_UI_changed or changed; - changed, config.current_config.damage_meter_UI.hunter_rank_label.enable_for.other_players = imgui.checkbox( - language.current_language.customization_menu.other_players, - config.current_config.damage_meter_UI.hunter_rank_label.enable_for.other_players); - config_changed = config_changed or changed; - damage_meter_UI_changed = damage_meter_UI_changed or changed; + changed, config.current_config.damage_meter_UI.master_hunter_rank_label.include.myself.hunter_rank = imgui.checkbox( + language.current_language.customization_menu.hunter_rank, + config.current_config.damage_meter_UI.player_name_label.include.myself.hunter_rank); + config_changed = config_changed or changed; + damage_meter_UI_changed = damage_meter_UI_changed or changed; + imgui.tree_pop(); + end + + if imgui.tree_node(language.current_language.customization_menu.other_players) then + changed, config.current_config.damage_meter_UI.master_hunter_rank_label.include.others.master_rank = imgui.checkbox( + language.current_language.customization_menu.master_rank, + config.current_config.damage_meter_UI.player_name_label.include.others.master_rank); + config_changed = config_changed or changed; + damage_meter_UI_changed = damage_meter_UI_changed or changed; + + changed, config.current_config.damage_meter_UI.master_hunter_rank_label.include.others.hunter_rank = imgui.checkbox( + language.current_language.customization_menu.hunter_rank, + config.current_config.damage_meter_UI.player_name_label.include.others.hunter_rank); + config_changed = config_changed or changed; + damage_meter_UI_changed = damage_meter_UI_changed or changed; + + imgui.tree_pop(); + end imgui.tree_pop(); end if imgui.tree_node(language.current_language.customization_menu.offset) then - changed, config.current_config.damage_meter_UI.hunter_rank_label.offset.x = imgui.drag_float(language.current_language + changed, config.current_config.damage_meter_UI.master_hunter_rank_label.offset.x = imgui.drag_float(language.current_language .customization_menu.x, - config.current_config.damage_meter_UI.hunter_rank_label.offset.x, 0.1, -screen.width, screen.width, "%.1f"); + config.current_config.damage_meter_UI.master_hunter_rank_label.offset.x, 0.1, -screen.width, screen.width, "%.1f"); config_changed = config_changed or changed; damage_meter_UI_changed = damage_meter_UI_changed or changed; - changed, config.current_config.damage_meter_UI.hunter_rank_label.offset.y = imgui.drag_float(language.current_language + changed, config.current_config.damage_meter_UI.master_hunter_rank_label.offset.y = imgui.drag_float(language.current_language .customization_menu.y, - config.current_config.damage_meter_UI.hunter_rank_label.offset.y, 0.1, -screen.height, screen.height, "%.1f"); + config.current_config.damage_meter_UI.master_hunter_rank_label.offset.y, 0.1, -screen.height, screen.height, "%.1f"); config_changed = config_changed or changed; damage_meter_UI_changed = damage_meter_UI_changed or changed; @@ -15434,8 +15465,8 @@ function customization_menu.draw() end if imgui.tree_node(language.current_language.customization_menu.color) then - changed, config.current_config.damage_meter_UI.hunter_rank_label.color = imgui.color_picker_argb("", - config.current_config.damage_meter_UI.hunter_rank_label.color, customization_menu.color_picker_flags); + changed, config.current_config.damage_meter_UI.master_hunter_rank_label.color = imgui.color_picker_argb("", + config.current_config.damage_meter_UI.master_hunter_rank_label.color, customization_menu.color_picker_flags); config_changed = config_changed or changed; damage_meter_UI_changed = damage_meter_UI_changed or changed; @@ -15443,22 +15474,22 @@ function customization_menu.draw() end if imgui.tree_node(language.current_language.customization_menu.shadow) then - changed, config.current_config.damage_meter_UI.hunter_rank_label.shadow.visibility = imgui.checkbox(language.current_language + changed, config.current_config.damage_meter_UI.master_hunter_rank_label.shadow.visibility = imgui.checkbox(language.current_language .customization_menu.visible, - config.current_config.damage_meter_UI.hunter_rank_label.shadow.visibility); + config.current_config.damage_meter_UI.master_hunter_rank_label.shadow.visibility); config_changed = config_changed or changed; damage_meter_UI_changed = damage_meter_UI_changed or changed; if imgui.tree_node(language.current_language.customization_menu.offset) then - changed, config.current_config.damage_meter_UI.hunter_rank_label.shadow.offset.x = imgui.drag_float(language.current_language + changed, config.current_config.damage_meter_UI.master_hunter_rank_label.shadow.offset.x = imgui.drag_float(language.current_language .customization_menu.x, - config.current_config.damage_meter_UI.hunter_rank_label.shadow.offset.x, 0.1, -screen.width, screen.width, "%.1f"); + config.current_config.damage_meter_UI.master_hunter_rank_label.shadow.offset.x, 0.1, -screen.width, screen.width, "%.1f"); config_changed = config_changed or changed; damage_meter_UI_changed = damage_meter_UI_changed or changed; - changed, config.current_config.damage_meter_UI.hunter_rank_label.shadow.offset.y = imgui.drag_float(language.current_language + changed, config.current_config.damage_meter_UI.master_hunter_rank_label.shadow.offset.y = imgui.drag_float(language.current_language .customization_menu.y, - config.current_config.damage_meter_UI.hunter_rank_label.shadow.offset.y, 0.1, -screen.height, screen.height, + config.current_config.damage_meter_UI.master_hunter_rank_label.shadow.offset.y, 0.1, -screen.height, screen.height, "%.1f"); config_changed = config_changed or changed; damage_meter_UI_changed = damage_meter_UI_changed or changed; @@ -15467,8 +15498,8 @@ function customization_menu.draw() end if imgui.tree_node(language.current_language.customization_menu.color) then - changed, config.current_config.damage_meter_UI.hunter_rank_label.shadow.color = imgui.color_picker_argb("", - config.current_config.damage_meter_UI.hunter_rank_label.shadow.color, customization_menu.color_picker_flags); + changed, config.current_config.damage_meter_UI.master_hunter_rank_label.shadow.color = imgui.color_picker_argb("", + config.current_config.damage_meter_UI.master_hunter_rank_label.shadow.color, customization_menu.color_picker_flags); config_changed = config_changed or changed; damage_meter_UI_changed = damage_meter_UI_changed or changed;