mirror of
https://github.com/GreenComfyTea/MHR-Overlay.git
synced 2026-01-25 04:48:22 -08:00
Added Support for multiple configs
1) Implemented ailment damage for buddies; 2) Bugfixes;
This commit is contained in:
@@ -13,22 +13,24 @@ local drawing;
|
||||
function ailment_buildup.draw(monster, ailment_buildup_UI, cached_config, ailment_buildups_position_on_screen, opacity_scale)
|
||||
|
||||
local cached_config = cached_config.ailment_buildups;
|
||||
local cached_damage_meter_UI_config = config.current_config.damage_meter_UI;
|
||||
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
|
||||
|
||||
if not cached_config.visibility then
|
||||
return;
|
||||
end
|
||||
|
||||
|
||||
for id, ailment in pairs(monster.ailments) do
|
||||
if id == ailments.stun_id then
|
||||
if not cached_config.filter.stun then
|
||||
--if not cached_config.filter.stun then
|
||||
goto continue
|
||||
end
|
||||
--end
|
||||
|
||||
elseif id == ailments.poison_id then
|
||||
if not cached_config.filter.poison then
|
||||
--if not cached_config.filter.poison then
|
||||
goto continue
|
||||
end
|
||||
--end
|
||||
elseif id == ailments.blast_id then
|
||||
if not cached_config.filter.blast then
|
||||
goto continue
|
||||
@@ -42,24 +44,81 @@ function ailment_buildup.draw(monster, ailment_buildup_UI, cached_config, ailmen
|
||||
goto continue
|
||||
end
|
||||
|
||||
|
||||
local total_buildup = 0;
|
||||
local top_buildup = 0;
|
||||
|
||||
local displayed_players = {};
|
||||
for player_id, player_buildup in pairs(ailment.buildup) do
|
||||
for player, player_buildup in pairs(ailment.buildup) do
|
||||
total_buildup = total_buildup + player_buildup;
|
||||
|
||||
if player_buildup > top_buildup then
|
||||
top_buildup = player_buildup;
|
||||
end
|
||||
|
||||
table.insert(displayed_players,
|
||||
{
|
||||
["buildup"] = player_buildup,
|
||||
["buildup_share"] = ailment.buildup_share[player_id],
|
||||
["id"] = player_id
|
||||
}
|
||||
);
|
||||
displayed_players[player] = {
|
||||
["buildup"] = player_buildup,
|
||||
["buildup_share"] = ailment.buildup_share[player],
|
||||
["id"] = player.id
|
||||
};
|
||||
end
|
||||
|
||||
|
||||
for otomo, otomo_buildup in pairs(ailment.otomo_buildup) do
|
||||
total_buildup = total_buildup + otomo_buildup;
|
||||
|
||||
if otomo_buildup > top_buildup then
|
||||
top_buildup = otomo_buildup;
|
||||
end
|
||||
|
||||
local player = players.get_player(otomo.id);
|
||||
local displayed_player = displayed_players[player];
|
||||
|
||||
|
||||
|
||||
if otomo.type == players.types.my_otomo then
|
||||
|
||||
if cached_damage_meter_UI_config.settings.show_my_otomos_separately then
|
||||
displayed_players[otomo] = {
|
||||
["buildup"] = otomo_buildup,
|
||||
["buildup_share"] = ailment.otomo_buildup_share[otomo],
|
||||
["id"] = otomo.id
|
||||
};
|
||||
|
||||
elseif player ~= nil then
|
||||
displayed_players[player].buildup = displayed_players[player].buildup + otomo_buildup;
|
||||
displayed_players[player].buildup_share = displayed_players[player].buildup_share + ailment.otomo_buildup_share[otomo];
|
||||
end
|
||||
|
||||
elseif otomo.type == players.types.other_player_otomo then
|
||||
|
||||
if cached_damage_meter_UI_config.settings.show_other_player_otomos_separately then
|
||||
displayed_players[otomo] = {
|
||||
["buildup"] = otomo_buildup,
|
||||
["buildup_share"] = ailment.otomo_buildup_share[otomo],
|
||||
["id"] = otomo.id
|
||||
};
|
||||
|
||||
elseif player ~= nil then
|
||||
displayed_players[player].buildup = displayed_players[player].buildup + otomo_buildup;
|
||||
displayed_players[player].buildup_share = displayed_players[player].buildup_share + ailment.otomo_buildup_share[otomo];
|
||||
end
|
||||
|
||||
elseif otomo.type == players.types.servant_otomo then
|
||||
|
||||
if cached_damage_meter_UI_config.settings.show_servant_otomos_separately then
|
||||
|
||||
displayed_players[otomo] = {
|
||||
["buildup"] = otomo_buildup,
|
||||
["buildup_share"] = ailment.otomo_buildup_share[otomo],
|
||||
["id"] = otomo.id
|
||||
};
|
||||
|
||||
elseif player ~= nil then
|
||||
displayed_players[player].buildup = displayed_players[player].buildup + otomo_buildup;
|
||||
displayed_players[player].buildup_share = displayed_players[player].buildup_share + ailment.otomo_buildup_share[otomo];
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if total_buildup == 0 then
|
||||
@@ -98,6 +157,7 @@ function ailment_buildup.draw(monster, ailment_buildup_UI, cached_config, ailmen
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local ailment_name = "";
|
||||
if cached_config.ailment_name_label.include.ailment_name then
|
||||
ailment_name = ailment.name .. " ";
|
||||
@@ -108,20 +168,20 @@ function ailment_buildup.draw(monster, ailment_buildup_UI, cached_config, ailmen
|
||||
|
||||
drawing.draw_label(ailment_buildup_UI.ailment_name_label, ailment_buildups_position_on_screen, opacity_scale, ailment_name);
|
||||
|
||||
local last_j = 0;
|
||||
for j, player in ipairs(displayed_players) do
|
||||
local j = 0;
|
||||
for player, displayed_player in pairs(displayed_players) do
|
||||
local ailment_buildup_position_on_screen = {
|
||||
x = ailment_buildups_position_on_screen.x + cached_config.player_spacing.x * (j - 1) * global_scale_modifier,
|
||||
y = ailment_buildups_position_on_screen.y + cached_config.player_spacing.y * (j - 1) * global_scale_modifier;
|
||||
x = ailment_buildups_position_on_screen.x + cached_config.player_spacing.x * j * global_scale_modifier,
|
||||
y = ailment_buildups_position_on_screen.y + cached_config.player_spacing.y * j * global_scale_modifier;
|
||||
};
|
||||
|
||||
ailment_buildup_UI_entity.draw(player, ailment_buildup_UI, cached_config, ailment_buildup_position_on_screen, opacity_scale, top_buildup);
|
||||
last_j = j;
|
||||
ailment_buildup_UI_entity.draw(player, displayed_player, ailment_buildup_UI, cached_config, ailment_buildup_position_on_screen, opacity_scale, top_buildup);
|
||||
j = j + 1;
|
||||
end
|
||||
|
||||
local total_buildup_position_on_screen = {
|
||||
x = ailment_buildups_position_on_screen.x + cached_config.player_spacing.x * last_j * global_scale_modifier,
|
||||
y = ailment_buildups_position_on_screen.y + cached_config.player_spacing.y * last_j * global_scale_modifier;
|
||||
x = ailment_buildups_position_on_screen.x + cached_config.player_spacing.x * j * global_scale_modifier,
|
||||
y = ailment_buildups_position_on_screen.y + cached_config.player_spacing.y * j * global_scale_modifier;
|
||||
};
|
||||
|
||||
drawing.draw_label(ailment_buildup_UI.total_buildup_label, total_buildup_position_on_screen, opacity_scale, language.current_language.UI.total_buildup);
|
||||
@@ -132,6 +192,7 @@ function ailment_buildup.draw(monster, ailment_buildup_UI, cached_config, ailmen
|
||||
y = total_buildup_position_on_screen.y + 17 + cached_config.ailment_spacing.y * global_scale_modifier
|
||||
};
|
||||
|
||||
|
||||
::continue::
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user