mirror of
https://github.com/GreenComfyTea/MHR-Overlay.git
synced 2026-01-24 04:18:11 -08:00
Fix poison damage not being accounted due to buildup_share being deep-copied
This commit is contained in:
@@ -203,7 +203,7 @@ function damage_hook.update_damage(enemy, enemy_calc_damage_info)
|
|||||||
player = players.get_player(attacker_id);
|
player = players.get_player(attacker_id);
|
||||||
otomo = non_players.get_otomo(attacker_id);
|
otomo = non_players.get_otomo(attacker_id);
|
||||||
elseif attacker_id == 4 then
|
elseif attacker_id == 4 then
|
||||||
player = players.myself
|
player = players.myself;
|
||||||
otomo = non_players.get_otomo(non_players.my_second_otomo_id);
|
otomo = non_players.get_otomo(non_players.my_second_otomo_id);
|
||||||
else
|
else
|
||||||
player = non_players.get_servant(attacker_id - 1);
|
player = non_players.get_servant(attacker_id - 1);
|
||||||
|
|||||||
@@ -80,8 +80,9 @@ function ailment_hook.poison_proc(poison_param)
|
|||||||
monster = small_monster.get_monster(enemy);
|
monster = small_monster.get_monster(enemy);
|
||||||
end
|
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 = 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);
|
monster.ailments[ailments.poison_id].cached_otomo_buildup_share = monster.ailments[ailments.poison_id].otomo_buildup_share;
|
||||||
|
|
||||||
ailments.clear_ailment_contribution(monster, ailments.poison_id);
|
ailments.clear_ailment_contribution(monster, ailments.poison_id);
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -684,7 +684,6 @@ function ailments.draw(monster, ailment_UI, cached_config, ailments_position_on_
|
|||||||
end
|
end
|
||||||
|
|
||||||
function ailments.apply_ailment_buildup(monster, player, otomo, ailment_type, ailment_buildup)
|
function ailments.apply_ailment_buildup(monster, player, otomo, ailment_type, ailment_buildup)
|
||||||
|
|
||||||
if monster == nil or
|
if monster == nil or
|
||||||
(ailment_type ~= ailments.poison_id and ailment_type ~= ailments.blast_id and ailment_type ~= ailments.stun_id)
|
(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
|
or (ailment_buildup == 0 or ailment_buildup == nil) then
|
||||||
@@ -723,6 +722,10 @@ function ailments.calculate_ailment_contribution(monster, ailment_type)
|
|||||||
total = total + otomo_buildup;
|
total = total + otomo_buildup;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if total == 0 then
|
||||||
|
total = 1;
|
||||||
|
end
|
||||||
|
|
||||||
for player, player_buildup in pairs(monster.ailments[ailment_type].buildup) do
|
for player, player_buildup in pairs(monster.ailments[ailment_type].buildup) do
|
||||||
-- update ratio for this player
|
-- update ratio for this player
|
||||||
monster.ailments[ailment_type].buildup_share[player] = player_buildup / total;
|
monster.ailments[ailment_type].buildup_share[player] = player_buildup / total;
|
||||||
@@ -735,15 +738,11 @@ function ailments.calculate_ailment_contribution(monster, ailment_type)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function ailments.clear_ailment_contribution(monster, ailment_type)
|
function ailments.clear_ailment_contribution(monster, ailment_type)
|
||||||
for player, player_buildup in pairs(monster.ailments[ailment_type].buildup) do
|
monster.ailments[ailment_type].buildup = {};
|
||||||
monster.ailments[ailment_type].buildup_share[player] = 0;
|
monster.ailments[ailment_type].otomo_buildup = {};
|
||||||
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].buildup_share = {};
|
||||||
monster.ailments[ailment_type].otomo_buildup_share[aotomo] = 0;
|
monster.ailments[ailment_type].otomo_buildup_share = {};
|
||||||
monster.ailments[ailment_type].otomo_buildup[aotomo] = 0;
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Code by coavins
|
-- Code by coavins
|
||||||
@@ -781,7 +780,7 @@ function ailments.apply_ailment_damage(monster, ailment_type, ailment_damage)
|
|||||||
damage_object.elemental_damage = 0;
|
damage_object.elemental_damage = 0;
|
||||||
damage_object.ailment_damage = damage_portion;
|
damage_object.ailment_damage = damage_portion;
|
||||||
|
|
||||||
players.update_damage(player, damage_source_type, true, damage_object);
|
players.update_damage(player, damage_source_type, monster.is_large, damage_object);
|
||||||
end
|
end
|
||||||
|
|
||||||
-- split up damage according to ratio of buildup on boss for this type
|
-- split up damage according to ratio of buildup on boss for this type
|
||||||
@@ -797,10 +796,10 @@ function ailments.apply_ailment_damage(monster, ailment_type, ailment_damage)
|
|||||||
local player = players.get_player(otomo.id);
|
local player = players.get_player(otomo.id);
|
||||||
|
|
||||||
if player ~= nil then
|
if player ~= nil then
|
||||||
players.update_damage(player, otomo_damage_source_type, true, damage_object);
|
players.update_damage(player, otomo_damage_source_type, monster.is_large, damage_object);
|
||||||
end
|
end
|
||||||
|
|
||||||
players.update_damage(otomo, otomo_damage_source_type, true, damage_object);
|
players.update_damage(otomo, otomo_damage_source_type, monster.is_large, damage_object);
|
||||||
end
|
end
|
||||||
|
|
||||||
local damage_object = {};
|
local damage_object = {};
|
||||||
@@ -809,7 +808,7 @@ function ailments.apply_ailment_damage(monster, ailment_type, ailment_damage)
|
|||||||
damage_object.elemental_damage = 0;
|
damage_object.elemental_damage = 0;
|
||||||
damage_object.ailment_damage = ailment_damage;
|
damage_object.ailment_damage = ailment_damage;
|
||||||
|
|
||||||
players.update_damage(players.total, damage_source_type, true, damage_object);
|
players.update_damage(players.total, damage_source_type, monster.is_large, damage_object);
|
||||||
end
|
end
|
||||||
|
|
||||||
function ailments.init_module()
|
function ailments.init_module()
|
||||||
|
|||||||
Reference in New Issue
Block a user