mirror of
https://github.com/GreenComfyTea/MHR-Overlay.git
synced 2026-01-25 12:58:06 -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
|
||||
|
||||
|
||||
@@ -50,8 +50,8 @@ function ailment_hook.poison_proc(poison_param)
|
||||
monster = small_monster.get_monster(enemy);
|
||||
end
|
||||
|
||||
monster.ailments[ailments.poison_id].cached_buildup_share = table_helpers.deep_copy(monster.ailments[ailments
|
||||
.poison_id].buildup_share);
|
||||
monster.ailments[ailments.poison_id].cached_buildup_share = table_helpers.deep_copy(monster.ailments[ailments.poison_id].buildup_share);
|
||||
monster.ailments[ailments.poison_id].cached_otomo_buildup_share = table_helpers.deep_copy(monster.ailments[ailments.poison_id].otomo_buildup_share);
|
||||
ailments.clear_ailment_contribution(monster, ailments.poison_id);
|
||||
end
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ local time;
|
||||
local small_monster;
|
||||
local large_monster;
|
||||
local table_helpers;
|
||||
local non_players;
|
||||
|
||||
--0 Paralyze
|
||||
--1 Sleep
|
||||
@@ -50,68 +51,71 @@ ailments.fall_otomo_trap_id = 18;
|
||||
ailments.shock_otomo_trap_id = 19;
|
||||
|
||||
function ailments.new(_ailments, ailment_id)
|
||||
_ailments[ailment_id] = {};
|
||||
local new_ailment = {}
|
||||
new_ailment = {};
|
||||
|
||||
_ailments[ailment_id].is_enable = true;
|
||||
_ailments[ailment_id].id = ailment_id;
|
||||
new_ailment.is_enable = true;
|
||||
new_ailment.id = ailment_id;
|
||||
|
||||
_ailments[ailment_id].total_buildup = 0;
|
||||
_ailments[ailment_id].buildup_limit = 0;
|
||||
_ailments[ailment_id].buildup_percentage = 0;
|
||||
new_ailment.total_buildup = 0;
|
||||
new_ailment.buildup_limit = 0;
|
||||
new_ailment.buildup_percentage = 0;
|
||||
|
||||
_ailments[ailment_id].timer = 0;
|
||||
_ailments[ailment_id].duration = 100000;
|
||||
_ailments[ailment_id].timer_percentage = 0;
|
||||
new_ailment.timer = 0;
|
||||
new_ailment.duration = 100000;
|
||||
new_ailment.timer_percentage = 0;
|
||||
|
||||
_ailments[ailment_id].minutes_left = 0;
|
||||
_ailments[ailment_id].seconds_left = 0;
|
||||
new_ailment.minutes_left = 0;
|
||||
new_ailment.seconds_left = 0;
|
||||
|
||||
_ailments[ailment_id].is_active = false;
|
||||
_ailments[ailment_id].activate_count = 0;
|
||||
new_ailment.is_active = false;
|
||||
new_ailment.activate_count = 0;
|
||||
|
||||
_ailments[ailment_id].last_change_time = time.total_elapsed_script_seconds;
|
||||
new_ailment.last_change_time = time.total_elapsed_script_seconds;
|
||||
|
||||
if ailment_id == ailments.paralyze_id then
|
||||
_ailments[ailment_id].name = language.current_language.ailments.paralysis;
|
||||
new_ailment.name = language.current_language.ailments.paralysis;
|
||||
elseif ailment_id == ailments.sleep_id then
|
||||
_ailments[ailment_id].name = language.current_language.ailments.sleep;
|
||||
new_ailment.name = language.current_language.ailments.sleep;
|
||||
elseif ailment_id == ailments.stun_id then
|
||||
_ailments[ailment_id].name = language.current_language.ailments.stun;
|
||||
new_ailment.name = language.current_language.ailments.stun;
|
||||
elseif ailment_id == ailments.flash_id then
|
||||
_ailments[ailment_id].name = language.current_language.ailments.flash;
|
||||
new_ailment.name = language.current_language.ailments.flash;
|
||||
elseif ailment_id == ailments.poison_id then
|
||||
_ailments[ailment_id].name = language.current_language.ailments.poison;
|
||||
new_ailment.name = language.current_language.ailments.poison;
|
||||
elseif ailment_id == ailments.blast_id then
|
||||
_ailments[ailment_id].name = language.current_language.ailments.blast;
|
||||
new_ailment.name = language.current_language.ailments.blast;
|
||||
elseif ailment_id == ailments.exhaust_id then
|
||||
_ailments[ailment_id].name = language.current_language.ailments.exhaust;
|
||||
new_ailment.name = language.current_language.ailments.exhaust;
|
||||
elseif ailment_id == ailments.ride_id then
|
||||
_ailments[ailment_id].name = language.current_language.ailments.ride;
|
||||
new_ailment.name = language.current_language.ailments.ride;
|
||||
elseif ailment_id == ailments.water_id then
|
||||
_ailments[ailment_id].name = language.current_language.ailments.waterblight;
|
||||
new_ailment.name = language.current_language.ailments.waterblight;
|
||||
elseif ailment_id == ailments.fire_id then
|
||||
_ailments[ailment_id].name = language.current_language.ailments.fireblight;
|
||||
new_ailment.name = language.current_language.ailments.fireblight;
|
||||
elseif ailment_id == ailments.ice_id then
|
||||
_ailments[ailment_id].name = language.current_language.ailments.iceblight;
|
||||
new_ailment.name = language.current_language.ailments.iceblight;
|
||||
elseif ailment_id == ailments.thunder_id then
|
||||
_ailments[ailment_id].name = language.current_language.ailments.thunderblight;
|
||||
new_ailment.name = language.current_language.ailments.thunderblight;
|
||||
elseif ailment_id == ailments.fall_trap_id then
|
||||
_ailments[ailment_id].name = language.current_language.ailments.fall_trap;
|
||||
new_ailment.name = language.current_language.ailments.fall_trap;
|
||||
elseif ailment_id == ailments.shock_trap_id then
|
||||
_ailments[ailment_id].name = language.current_language.ailments.shock_trap;
|
||||
new_ailment.name = language.current_language.ailments.shock_trap;
|
||||
elseif ailment_id == ailments.capture_id then
|
||||
_ailments[ailment_id].name = language.current_language.ailments.tranq_bomb;
|
||||
new_ailment.name = language.current_language.ailments.tranq_bomb;
|
||||
elseif ailment_id == ailments.koyashi_id then
|
||||
_ailments[ailment_id].name = language.current_language.ailments.dung_bomb;
|
||||
new_ailment.name = language.current_language.ailments.dung_bomb;
|
||||
elseif ailment_id == ailments.steel_fang_id then
|
||||
_ailments[ailment_id].name = language.current_language.ailments.steel_fang;
|
||||
new_ailment.name = language.current_language.ailments.steel_fang;
|
||||
elseif ailment_id == ailments.fall_quick_sand_id then
|
||||
_ailments[ailment_id].name = language.current_language.ailments.quick_sand;
|
||||
new_ailment.name = language.current_language.ailments.quick_sand;
|
||||
elseif ailment_id == ailments.fall_otomo_trap_id then
|
||||
_ailments[ailment_id].name = language.current_language.ailments.fall_otomo_trap;
|
||||
new_ailment.name = language.current_language.ailments.fall_otomo_trap;
|
||||
elseif ailment_id == ailments.shock_otomo_trap_id then
|
||||
_ailments[ailment_id].name = language.current_language.ailments.shock_otomo_trap;
|
||||
new_ailment.name = language.current_language.ailments.shock_otomo_trap;
|
||||
end
|
||||
|
||||
_ailments[ailment_id] = new_ailment;
|
||||
end
|
||||
|
||||
function ailments.init_ailments()
|
||||
@@ -149,9 +153,65 @@ function ailments.init_ailments()
|
||||
_ailments[ailments.stun_id].buildup = {};
|
||||
_ailments[ailments.stun_id].buildup_share = {};
|
||||
|
||||
_ailments[ailments.poison_id].otomo_buildup = {};
|
||||
_ailments[ailments.poison_id].otomo_buildup_share = {};
|
||||
_ailments[ailments.poison_id].cached_otomo_buildup_share = {};
|
||||
|
||||
_ailments[ailments.blast_id].otomo_buildup = {};
|
||||
_ailments[ailments.blast_id].otomo_buildup_share = {};
|
||||
|
||||
_ailments[ailments.stun_id].otomo_buildup = {};
|
||||
_ailments[ailments.stun_id].otomo_buildup_share = {};
|
||||
|
||||
return _ailments;
|
||||
end
|
||||
|
||||
function ailments.init_ailment_names(_ailments)
|
||||
for ailment_id, ailment in pairs(_ailments) do
|
||||
if ailment_id == ailments.paralyze_id then
|
||||
ailment.name = language.current_language.ailments.paralysis;
|
||||
elseif ailment_id == ailments.sleep_id then
|
||||
ailment.name = language.current_language.ailments.sleep;
|
||||
elseif ailment_id == ailments.stun_id then
|
||||
ailment.name = language.current_language.ailments.stun;
|
||||
elseif ailment_id == ailments.flash_id then
|
||||
ailment.name = language.current_language.ailments.flash;
|
||||
elseif ailment_id == ailments.poison_id then
|
||||
ailment.name = language.current_language.ailments.poison;
|
||||
elseif ailment_id == ailments.blast_id then
|
||||
ailment.name = language.current_language.ailments.blast;
|
||||
elseif ailment_id == ailments.exhaust_id then
|
||||
ailment.name = language.current_language.ailments.exhaust;
|
||||
elseif ailment_id == ailments.ride_id then
|
||||
ailment.name = language.current_language.ailments.ride;
|
||||
elseif ailment_id == ailments.water_id then
|
||||
ailment.name = language.current_language.ailments.waterblight;
|
||||
elseif ailment_id == ailments.fire_id then
|
||||
ailment.name = language.current_language.ailments.fireblight;
|
||||
elseif ailment_id == ailments.ice_id then
|
||||
ailment.name = language.current_language.ailments.iceblight;
|
||||
elseif ailment_id == ailments.thunder_id then
|
||||
ailment.name = language.current_language.ailments.thunderblight;
|
||||
elseif ailment_id == ailments.fall_trap_id then
|
||||
ailment.name = language.current_language.ailments.fall_trap;
|
||||
elseif ailment_id == ailments.shock_trap_id then
|
||||
ailment.name = language.current_language.ailments.shock_trap;
|
||||
elseif ailment_id == ailments.capture_id then
|
||||
ailment.name = language.current_language.ailments.tranq_bomb;
|
||||
elseif ailment_id == ailments.koyashi_id then
|
||||
ailment.name = language.current_language.ailments.dung_bomb;
|
||||
elseif ailment_id == ailments.steel_fang_id then
|
||||
ailment.name = language.current_language.ailments.steel_fang;
|
||||
elseif ailment_id == ailments.fall_quick_sand_id then
|
||||
ailment.name = language.current_language.ailments.quick_sand;
|
||||
elseif ailment_id == ailments.fall_otomo_trap_id then
|
||||
ailment.name = language.current_language.ailments.fall_otomo_trap;
|
||||
elseif ailment_id == ailments.shock_otomo_trap_id then
|
||||
ailment.name = language.current_language.ailments.shock_otomo_trap;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local enemy_character_base_type_def = sdk.find_type_definition("snow.enemy.EnemyCharacterBase");
|
||||
local enemy_condition_damage_param_base_type_def = sdk.find_type_definition("snow.enemy.EnemyConditionDamageParamBase");
|
||||
|
||||
@@ -593,14 +653,11 @@ function ailments.draw(monster, ailment_UI, cached_config, ailments_position_on_
|
||||
|
||||
end
|
||||
|
||||
function ailments.apply_ailment_buildup(monster, attacker_id, ailment_type, ailment_buildup)
|
||||
function ailments.apply_ailment_buildup(monster, player, otomo, ailment_type, ailment_buildup)
|
||||
|
||||
if monster == nil or
|
||||
(ailment_type ~= ailments.poison_id and ailment_type ~= ailments.blast_id and ailment_type ~= ailments.stun_id) then
|
||||
return;
|
||||
end
|
||||
|
||||
if ailment_buildup == 0 or ailment_buildup == nil then
|
||||
(ailment_type ~= ailments.poison_id and ailment_type ~= ailments.blast_id and ailment_type ~= ailments.stun_id)
|
||||
or (ailment_buildup == 0 or ailment_buildup == nil) then
|
||||
return;
|
||||
end
|
||||
|
||||
@@ -609,8 +666,17 @@ function ailments.apply_ailment_buildup(monster, attacker_id, ailment_type, ailm
|
||||
monster.ailments[ailment_type].buildup = {};
|
||||
end
|
||||
|
||||
-- accumulate this buildup for this attacker
|
||||
monster.ailments[ailment_type].buildup[attacker_id] = (monster.ailments[ailment_type].buildup[attacker_id] or 0) + ailment_buildup;
|
||||
-- get the otomo buildup accumulator for this type
|
||||
if monster.ailments[ailment_type].otomo_buildup == nil then
|
||||
monster.ailments[ailment_type].otomo_buildup = {};
|
||||
end
|
||||
|
||||
if otomo == nil then
|
||||
monster.ailments[ailment_type].buildup[player] = (monster.ailments[ailment_type].buildup[player] or 0) + ailment_buildup;
|
||||
else
|
||||
monster.ailments[ailment_type].otomo_buildup[otomo] = (monster.ailments[ailment_type].otomo_buildup[otomo] or 0) + ailment_buildup;
|
||||
end
|
||||
|
||||
|
||||
ailments.calculate_ailment_contribution(monster, ailment_type);
|
||||
end
|
||||
@@ -619,20 +685,34 @@ end
|
||||
function ailments.calculate_ailment_contribution(monster, ailment_type)
|
||||
-- get total
|
||||
local total = 0;
|
||||
for attacker_id, player_buildup in pairs(monster.ailments[ailment_type].buildup) do
|
||||
for player, player_buildup in pairs(monster.ailments[ailment_type].buildup) do
|
||||
total = total + player_buildup;
|
||||
end
|
||||
|
||||
for attacker_id, player_buildup in pairs(monster.ailments[ailment_type].buildup) do
|
||||
-- update ratio for this attacker
|
||||
monster.ailments[ailment_type].buildup_share[attacker_id] = player_buildup / total;
|
||||
for otomo, otomo_buildup in pairs(monster.ailments[ailment_type].otomo_buildup) do
|
||||
total = total + otomo_buildup;
|
||||
end
|
||||
|
||||
for player, player_buildup in pairs(monster.ailments[ailment_type].buildup) do
|
||||
-- update ratio for this player
|
||||
monster.ailments[ailment_type].buildup_share[player] = player_buildup / total;
|
||||
end
|
||||
|
||||
for otomo, otomo_buildup in pairs(monster.ailments[ailment_type].otomo_buildup) do
|
||||
-- update ratio for this otomo
|
||||
monster.ailments[ailment_type].otomo_buildup_share[otomo] = otomo_buildup / total;
|
||||
end
|
||||
end
|
||||
|
||||
function ailments.clear_ailment_contribution(monster, ailment_type)
|
||||
for attacker_id, player_buildup in pairs(monster.ailments[ailment_type].buildup) do
|
||||
monster.ailments[ailment_type].buildup_share[attacker_id] = 0;
|
||||
monster.ailments[ailment_type].buildup[attacker_id] = 0;
|
||||
for player, player_buildup in pairs(monster.ailments[ailment_type].buildup) do
|
||||
monster.ailments[ailment_type].buildup_share[player] = 0;
|
||||
monster.ailments[ailment_type].buildup[player] = 0;
|
||||
end
|
||||
|
||||
for aotomo, otomo_buildup in pairs(monster.ailments[ailment_type].otomo_buildup) do
|
||||
monster.ailments[ailment_type].otomo_buildup_share[aotomo] = 0;
|
||||
monster.ailments[ailment_type].otomo_buildup[aotomo] = 0;
|
||||
end
|
||||
end
|
||||
|
||||
@@ -644,18 +724,25 @@ function ailments.apply_ailment_damage(monster, ailment_type, ailment_damage)
|
||||
end
|
||||
|
||||
local damage_source_type = "";
|
||||
local otomo_damage_source_type = "";
|
||||
local buildup_share = monster.ailments[ailment_type].buildup_share;
|
||||
local otomo_buildup_share = monster.ailments[ailment_type].otomo_buildup_share;
|
||||
|
||||
if ailment_type == ailments.poison_id then
|
||||
damage_source_type = "poison";
|
||||
otomo_damage_source_type = "otomo poison";
|
||||
buildup_share = monster.ailments[ailment_type].cached_buildup_share;
|
||||
otomo_buildup_share = monster.ailments[ailment_type].cached_otomo_buildup_share;
|
||||
|
||||
elseif ailment_type == ailments.blast_id then
|
||||
damage_source_type = "blast";
|
||||
otomo_damage_source_type = "otomo blast";
|
||||
else
|
||||
return;
|
||||
end
|
||||
|
||||
-- split up damage according to ratio of buildup on boss for this type
|
||||
for attacker_id, percentage in pairs(buildup_share) do
|
||||
for player, percentage in pairs(buildup_share) do
|
||||
local damage_portion = ailment_damage * percentage;
|
||||
|
||||
local damage_object = {};
|
||||
@@ -664,11 +751,26 @@ function ailments.apply_ailment_damage(monster, ailment_type, ailment_damage)
|
||||
damage_object.elemental_damage = 0;
|
||||
damage_object.ailment_damage = damage_portion;
|
||||
|
||||
local attacking_player = players.get_player(attacker_id);
|
||||
players.update_damage(player, damage_source_type, true, damage_object);
|
||||
end
|
||||
|
||||
if attacking_player ~= nil then
|
||||
players.update_damage(attacking_player, damage_source_type, true, damage_object);
|
||||
-- split up damage according to ratio of buildup on boss for this type
|
||||
for otomo, percentage in pairs(otomo_buildup_share) do
|
||||
local damage_portion = ailment_damage * percentage;
|
||||
|
||||
local damage_object = {};
|
||||
damage_object.total_damage = damage_portion;
|
||||
damage_object.physical_damage = 0;
|
||||
damage_object.elemental_damage = 0;
|
||||
damage_object.ailment_damage = damage_portion;
|
||||
|
||||
local player = players.get_player(otomo.id);
|
||||
|
||||
if player ~= nil then
|
||||
players.update_damage(player, otomo_damage_source_type, true, damage_object);
|
||||
end
|
||||
|
||||
players.update_damage(otomo, otomo_damage_source_type, true, damage_object);
|
||||
end
|
||||
|
||||
local damage_object = {};
|
||||
@@ -682,6 +784,7 @@ end
|
||||
|
||||
function ailments.init_module()
|
||||
players = require("MHR_Overlay.Damage_Meter.players");
|
||||
non_players = require("MHR_Overlay.Damage_Meter.non_players");
|
||||
language = require("MHR_Overlay.Misc.language");
|
||||
config = require("MHR_Overlay.Misc.config");
|
||||
ailment_UI_entity = require("MHR_Overlay.UI.UI_Entities.ailment_UI_entity");
|
||||
|
||||
@@ -303,6 +303,8 @@ function large_monster.init_UI(monster, monster_UI, cached_config)
|
||||
cached_config.ailment_buildups.total_buildup_label,
|
||||
cached_config.ailment_buildups.total_buildup_value_label
|
||||
);
|
||||
|
||||
ailments.init_ailment_names(monster.ailments);
|
||||
end
|
||||
|
||||
local physical_param_field = enemy_character_base_type_def:get_field("<PhysicalParam>k__BackingField");
|
||||
|
||||
Reference in New Issue
Block a user