mirror of
https://github.com/GreenComfyTea/MHR-Overlay.git
synced 2026-01-24 04:18:11 -08:00
Add option to Freeze DPS on Quest Clear
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
local time = {};
|
||||
local singletons;
|
||||
local customization_menu;
|
||||
local quest_status;
|
||||
local player;
|
||||
local config;
|
||||
local small_monster;
|
||||
@@ -47,28 +48,25 @@ function time.tick()
|
||||
if time.total_elapsed_script_seconds - time.last_elapsed_script_seconds > 1 then
|
||||
time.last_elapsed_script_seconds = time.total_elapsed_script_seconds;
|
||||
time.update_players_dps();
|
||||
--time.update_small_monsters();
|
||||
end
|
||||
end
|
||||
|
||||
function time.update_players_dps()
|
||||
local cached_config = config.current_config.damage_meter_UI.settings;
|
||||
|
||||
local myself_updated = false;
|
||||
|
||||
if cached_config.freeze_dps_on_quest_clear and quest_status.is_quest_clear then
|
||||
return;
|
||||
end
|
||||
|
||||
local new_total_dps = 0;
|
||||
for _, _player in pairs(player.list) do
|
||||
if _player == player.myself then
|
||||
myself_updated = true;
|
||||
end
|
||||
|
||||
if _player.join_time == -1 then
|
||||
_player.join_time = time.total_elapsed_script_seconds;
|
||||
end
|
||||
|
||||
if cached_config.dps_mode == "Quest Time" then
|
||||
if time.total_elapsed_seconds > 0 then
|
||||
player.myself.dps = player.myself.display.total_damage / time.total_elapsed_seconds;
|
||||
_player.dps = _player.display.total_damage / time.total_elapsed_seconds;
|
||||
end
|
||||
elseif cached_config.dps_mode == "Join Time" then
|
||||
if time.total_elapsed_script_seconds - _player.join_time > 0 then
|
||||
@@ -82,45 +80,17 @@ function time.update_players_dps()
|
||||
|
||||
new_total_dps = new_total_dps + _player.dps;
|
||||
end
|
||||
|
||||
if not myself_updated then
|
||||
if player.myself.join_time == -1 then
|
||||
player.myself.join_time = time.total_elapsed_script_seconds;
|
||||
end
|
||||
|
||||
if cached_config.dps_mode == "Quest Time" then
|
||||
if time.total_elapsed_seconds > 0 then
|
||||
player.myself.dps = player.myself.display.total_damage / time.total_elapsed_seconds;
|
||||
end
|
||||
elseif cached_config.dps_mode == "Join Time" then
|
||||
if time.total_elapsed_script_seconds - player.myself.join_time > 0 then
|
||||
player.myself.dps = player.myself.display.total_damage / (time.total_elapsed_script_seconds - player.myself.join_time);
|
||||
end
|
||||
elseif cached_config.dps_mode == "First Hit" then
|
||||
if time.total_elapsed_script_seconds - player.myself.first_hit_time > 0 then
|
||||
player.myself.dps = player.myself.display.total_damage / (time.total_elapsed_script_seconds - player.myself.first_hit_time);
|
||||
end
|
||||
end
|
||||
|
||||
new_total_dps = new_total_dps + player.myself.dps;
|
||||
end
|
||||
|
||||
player.total.dps = new_total_dps;
|
||||
end
|
||||
|
||||
function time.update_small_monsters()
|
||||
for enemy, monster in pairs(small_monster.list) do
|
||||
small_monster.update(enemy, monster);
|
||||
end
|
||||
end
|
||||
|
||||
function time.init_module()
|
||||
player = require("MHR_Overlay.Damage_Meter.player");
|
||||
singletons = require("MHR_Overlay.Game_Handler.singletons");
|
||||
customization_menu = require("MHR_Overlay.UI.customization_menu");
|
||||
time = require("MHR_Overlay.Game_Handler.time");
|
||||
config = require("MHR_Overlay.Misc.config");
|
||||
small_monster = require("MHR_Overlay.Monsters.small_monster");
|
||||
quest_status = require("MHR_Overlay.Game_Handler.quest_status");
|
||||
end
|
||||
|
||||
return time;
|
||||
@@ -3740,21 +3740,26 @@ function config.init()
|
||||
},
|
||||
|
||||
settings = {
|
||||
orientation = "Vertical", -- "Vertical" or "Horizontal"
|
||||
|
||||
|
||||
hide_myself = false,
|
||||
hide_other_players = false,
|
||||
hide_total_damage = false,
|
||||
|
||||
hide_module_if_total_damage_is_zero = false,
|
||||
hide_player_if_player_damage_is_zero = false,
|
||||
hide_total_if_total_damage_is_zero = false,
|
||||
total_damage_offset_is_relative = true,
|
||||
|
||||
freeze_dps_on_quest_clear = true,
|
||||
|
||||
orientation = "Vertical", -- "Vertical" or "Horizontal"
|
||||
highlighted_bar = "Me",
|
||||
damage_bar_relative_to = "Top Damage", -- "total damage" or "top damage"
|
||||
my_damage_bar_location = "First", -- "normal" or "first" or "last"
|
||||
dps_mode = "First Hit",
|
||||
|
||||
hide_myself = false,
|
||||
hide_other_players = false,
|
||||
hide_total_damage = false,
|
||||
|
||||
|
||||
player_name_size_limit = 150
|
||||
},
|
||||
|
||||
@@ -382,6 +382,8 @@ language.default_language = {
|
||||
|
||||
prioritize_large_monsters = "Large Monsters on High Priority",
|
||||
max_monster_updates_per_tick = "Max Monster Updates per Tick",
|
||||
|
||||
freeze_dps_on_quest_clear = "Freeze DPS when Quest is cleared"
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -15018,6 +15018,12 @@ function customization_menu.draw()
|
||||
config_changed = config_changed or changed;
|
||||
damage_meter_UI_changed = damage_meter_UI_changed or changed;
|
||||
|
||||
changed, config.current_config.damage_meter_UI.settings.freeze_dps_on_quest_clear = imgui.checkbox(
|
||||
language.current_language.customization_menu.freeze_dps_on_quest_clear,
|
||||
config.current_config.damage_meter_UI.settings.freeze_dps_on_quest_clear);
|
||||
config_changed = config_changed or changed;
|
||||
damage_meter_UI_changed = damage_meter_UI_changed or changed;
|
||||
|
||||
changed, customization_menu.damage_meter_UI_orientation_index = imgui.combo(language.current_language.customization_menu
|
||||
.orientation,
|
||||
customization_menu.damage_meter_UI_orientation_index, customization_menu.displayed_orientation_types);
|
||||
|
||||
Reference in New Issue
Block a user