Release v1.11

1) Cache config access function-wide where possible;
2) Break and Sever values added to parts;
3) Hooks are now applied in init_module instead of global space;
4) Added checks for submodule (health, stamina, etc) visibility. If not visible, do not pull data.
This commit is contained in:
GreenComfyTea
2022-06-20 13:01:10 +03:00
parent 286c54aa55
commit f64d6c84d3
31 changed files with 1617 additions and 1539 deletions

View File

@@ -22,12 +22,6 @@ local get_elemental_damage_method = enemy_calc_damage_info_type_def:get_method("
local get_condition_damage_method = enemy_calc_damage_info_type_def:get_method("get_ConditionDamage");
local get_condition_type_method = enemy_calc_damage_info_type_def:get_method("get_ConditionDamageType");
sdk.hook(enemy_character_base_after_calc_damage_damage_side, function(args)
pcall(damage_hook.update_damage, args);
end, function(retval)
return retval;
end);
function damage_hook.update_damage(args)
local enemy = sdk.to_managed_object(args[2]);
if enemy == nil then
@@ -109,9 +103,6 @@ function damage_hook.update_damage(args)
end
local attacking_player = player.get_player(attacker_id);
if attacking_player == nil then
--return;
end
local monster;
if is_large_monster then
@@ -138,6 +129,12 @@ function damage_hook.init_module()
small_monster = require("MHR_Overlay.Monsters.small_monster");
large_monster = require("MHR_Overlay.Monsters.large_monster");
ailments = require("MHR_Overlay.Monsters.ailments");
sdk.hook(enemy_character_base_after_calc_damage_damage_side, function(args)
pcall(damage_hook.update_damage, args);
end, function(retval)
return retval;
end);
end
return damage_hook;

View File

@@ -191,70 +191,72 @@ function player.update_display(_player)
_player.display.elemental_damage = 0;
_player.display.ailment_damage = 0;
if config.current_config.damage_meter_UI.tracked_monster_types.small_monsters then
if config.current_config.damage_meter_UI.tracked_damage_types.player_damage then
local cached_config = config.current_config.damage_meter_UI;
if cached_config.tracked_monster_types.small_monsters then
if cached_config.tracked_damage_types.player_damage then
player.merge_damage(_player.display, _player.small_monsters);
end
if config.current_config.damage_meter_UI.tracked_damage_types.bomb_damage then
if cached_config.tracked_damage_types.bomb_damage then
player.merge_damage(_player.display, _player.small_monsters.bombs);
end
if config.current_config.damage_meter_UI.tracked_damage_types.kunai_damage then
if cached_config.tracked_damage_types.kunai_damage then
player.merge_damage(_player.display, _player.small_monsters.kunai);
end
if config.current_config.damage_meter_UI.tracked_damage_types.installation_damage then
if cached_config.tracked_damage_types.installation_damage then
player.merge_damage(_player.display, _player.small_monsters.installations);
end
if config.current_config.damage_meter_UI.tracked_damage_types.otomo_damage then
if cached_config.tracked_damage_types.otomo_damage then
player.merge_damage(_player.display, _player.small_monsters.otomo);
end
if config.current_config.damage_meter_UI.tracked_damage_types.monster_damage then
if cached_config.tracked_damage_types.monster_damage then
player.merge_damage(_player.display, _player.small_monsters.monster);
end
if config.current_config.damage_meter_UI.tracked_damage_types.poison_damage then
if cached_config.tracked_damage_types.poison_damage then
player.merge_damage(_player.display, _player.small_monsters.poison);
end
if config.current_config.damage_meter_UI.tracked_damage_types.blast_damage then
if cached_config.tracked_damage_types.blast_damage then
player.merge_damage(_player.display, _player.small_monsters.blast);
end
end
if config.current_config.damage_meter_UI.tracked_monster_types.large_monsters then
if config.current_config.damage_meter_UI.tracked_damage_types.player_damage then
if cached_config.tracked_monster_types.large_monsters then
if cached_config.tracked_damage_types.player_damage then
player.merge_damage(_player.display, _player.large_monsters);
end
if config.current_config.damage_meter_UI.tracked_damage_types.bomb_damage then
if cached_config.tracked_damage_types.bomb_damage then
player.merge_damage(_player.display, _player.large_monsters.bombs);
end
if config.current_config.damage_meter_UI.tracked_damage_types.kunai_damage then
if cached_config.tracked_damage_types.kunai_damage then
player.merge_damage(_player.display, _player.large_monsters.kunai);
end
if config.current_config.damage_meter_UI.tracked_damage_types.installation_damage then
if cached_config.tracked_damage_types.installation_damage then
player.merge_damage(_player.display, _player.large_monsters.installations);
end
if config.current_config.damage_meter_UI.tracked_damage_types.otomo_damage then
if cached_config.tracked_damage_types.otomo_damage then
player.merge_damage(_player.display, _player.large_monsters.otomo);
end
if config.current_config.damage_meter_UI.tracked_damage_types.monster_damage then
if cached_config.tracked_damage_types.monster_damage then
player.merge_damage(_player.display, _player.large_monsters.monster);
end
if config.current_config.damage_meter_UI.tracked_damage_types.poison_damage then
if cached_config.tracked_damage_types.poison_damage then
player.merge_damage(_player.display, _player.large_monsters.poison);
end
if config.current_config.damage_meter_UI.tracked_damage_types.blast_damage then
if cached_config.tracked_damage_types.blast_damage then
player.merge_damage(_player.display, _player.large_monsters.blast);
end
end
@@ -498,32 +500,37 @@ function player.update_player_list_on_quest()
end
function player.init_UI(_player)
local cached_config = config.current_config.damage_meter_UI;
_player.damage_UI = damage_UI_entity.new(
config.current_config.damage_meter_UI.damage_bar,
config.current_config.damage_meter_UI.highlighted_damage_bar,
config.current_config.damage_meter_UI.player_name_label,
config.current_config.damage_meter_UI.dps_label,
config.current_config.damage_meter_UI.hunter_rank_label,
config.current_config.damage_meter_UI.damage_value_label,
config.current_config.damage_meter_UI.damage_percentage_label
cached_config.damage_bar,
cached_config.highlighted_damage_bar,
cached_config.player_name_label,
cached_config.dps_label,
cached_config.hunter_rank_label,
cached_config.damage_value_label,
cached_config.damage_percentage_label
);
end
function player.init_total_UI(_player)
local cached_config = config.current_config.damage_meter_UI;
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
_player.damage_UI = {
total_damage_label = table_helpers.deep_copy(config.current_config.damage_meter_UI.total_damage_label),
total_damage_value_label = table_helpers.deep_copy(config.current_config.damage_meter_UI.total_damage_value_label),
total_dps_label = table_helpers.deep_copy(config.current_config.damage_meter_UI.total_dps_label)
total_damage_label = table_helpers.deep_copy(cached_config.total_damage_label),
total_damage_value_label = table_helpers.deep_copy(cached_config.total_damage_value_label),
total_dps_label = table_helpers.deep_copy(cached_config.total_dps_label)
};
_player.damage_UI.total_damage_label.offset.x = _player.damage_UI.total_damage_label.offset.x * config.current_config.global_settings.modifiers.global_scale_modifier;
_player.damage_UI.total_damage_label.offset.y = _player.damage_UI.total_damage_label.offset.y * config.current_config.global_settings.modifiers.global_scale_modifier;
_player.damage_UI.total_damage_label.offset.x = _player.damage_UI.total_damage_label.offset.x * global_scale_modifier;
_player.damage_UI.total_damage_label.offset.y = _player.damage_UI.total_damage_label.offset.y * global_scale_modifier;
_player.damage_UI.total_damage_value_label.offset.x = _player.damage_UI.total_damage_value_label.offset.x * config.current_config.global_settings.modifiers.global_scale_modifier;
_player.damage_UI.total_damage_value_label.offset.y = _player.damage_UI.total_damage_value_label.offset.y * config.current_config.global_settings.modifiers.global_scale_modifier;
_player.damage_UI.total_damage_value_label.offset.x = _player.damage_UI.total_damage_value_label.offset.x * global_scale_modifier;
_player.damage_UI.total_damage_value_label.offset.y = _player.damage_UI.total_damage_value_label.offset.y * global_scale_modifier;
_player.damage_UI.total_dps_label.offset.x = _player.damage_UI.total_dps_label.offset.x * config.current_config.global_settings.modifiers.global_scale_modifier;
_player.damage_UI.total_dps_label.offset.y = _player.damage_UI.total_dps_label.offset.y * config.current_config.global_settings.modifiers.global_scale_modifier;
_player.damage_UI.total_dps_label.offset.x = _player.damage_UI.total_dps_label.offset.x * global_scale_modifier;
_player.damage_UI.total_dps_label.offset.y = _player.damage_UI.total_dps_label.offset.y * global_scale_modifier;
end
function player.draw(_player, position_on_screen, opacity_scale, top_damage, top_dps)