5 Commits

Author SHA1 Message Date
GreenComfyTea
6723091294 Bump version to 2.4.1 2023-02-07 20:01:42 +02:00
GreenComfyTea
650eba5568 Mapped TU4 Monsters: Velkhana and Risen Valstrax 2023-02-07 20:01:27 +02:00
GreenComfyTea
80b6977e0f Localization fixes 2023-02-07 19:41:50 +02:00
GreenComfyTea
ce250961fe Localization fixes 2023-02-07 19:41:38 +02:00
GreenComfyTea
09d82dea54 Add Buff UI (visuals only/commented out) 2023-02-07 19:41:08 +02:00
15 changed files with 821 additions and 140 deletions

View File

@@ -43,6 +43,8 @@ local table_helpers = require("MHR_Overlay.Misc.table_helpers");
local unicode_helpers = require("MHR_Overlay.Misc.unicode_helpers"); local unicode_helpers = require("MHR_Overlay.Misc.unicode_helpers");
local part_names = require("MHR_Overlay.Misc.part_names"); local part_names = require("MHR_Overlay.Misc.part_names");
--local buffs = require("MHR_Overlay.Buffs.buffs");
local players = require("MHR_Overlay.Damage_Meter.players"); local players = require("MHR_Overlay.Damage_Meter.players");
local non_players = require("MHR_Overlay.Damage_Meter.non_players"); local non_players = require("MHR_Overlay.Damage_Meter.non_players");
local damage_hook = require("MHR_Overlay.Damage_Meter.damage_hook"); local damage_hook = require("MHR_Overlay.Damage_Meter.damage_hook");
@@ -63,6 +65,7 @@ local large_monster_UI = require("MHR_Overlay.UI.Modules.large_monster_UI");
local small_monster_UI = require("MHR_Overlay.UI.Modules.small_monster_UI"); local small_monster_UI = require("MHR_Overlay.UI.Modules.small_monster_UI");
local time_UI = require("MHR_Overlay.UI.Modules.time_UI"); local time_UI = require("MHR_Overlay.UI.Modules.time_UI");
local env_creature_UI = require("MHR_Overlay.UI.Modules.env_creature_UI"); local env_creature_UI = require("MHR_Overlay.UI.Modules.env_creature_UI");
--local buff_UI = require("MHR_Overlay.UI.Modules.buff_UI");
local body_part_UI_entity = require("MHR_Overlay.UI.UI_Entities.body_part_UI_entity"); local body_part_UI_entity = require("MHR_Overlay.UI.UI_Entities.body_part_UI_entity");
local damage_UI_entity = require("MHR_Overlay.UI.UI_Entities.damage_UI_entity"); local damage_UI_entity = require("MHR_Overlay.UI.UI_Entities.damage_UI_entity");
@@ -71,6 +74,7 @@ local stamina_UI_entity = require("MHR_Overlay.UI.UI_Entities.stamina_UI_entity"
local rage_UI_entity = require("MHR_Overlay.UI.UI_Entities.rage_UI_entity"); local rage_UI_entity = require("MHR_Overlay.UI.UI_Entities.rage_UI_entity");
local ailment_UI_entity = require("MHR_Overlay.UI.UI_Entities.ailment_UI_entity"); local ailment_UI_entity = require("MHR_Overlay.UI.UI_Entities.ailment_UI_entity");
local ailment_buildup_UI_entity = require("MHR_Overlay.UI.UI_Entities.ailment_buildup_UI_entity"); local ailment_buildup_UI_entity = require("MHR_Overlay.UI.UI_Entities.ailment_buildup_UI_entity");
--local buff_UI_entity = require("MHR_Overlay.UI.UI_Entities.buff_UI_entity");
local customization_menu = require("MHR_Overlay.UI.customization_menu"); local customization_menu = require("MHR_Overlay.UI.customization_menu");
local label_customization = require("MHR_Overlay.UI.Customizations.label_customization"); local label_customization = require("MHR_Overlay.UI.Customizations.label_customization");
@@ -108,6 +112,9 @@ rage_UI_entity.init_module();
ailment_UI_entity.init_module(); ailment_UI_entity.init_module();
ailment_buildup_UI_entity.init_module(); ailment_buildup_UI_entity.init_module();
body_part_UI_entity.init_module(); body_part_UI_entity.init_module();
--buff_UI_entity.init_module();
--buffs.init_module();
damage_hook.init_module(); damage_hook.init_module();
players.init_module(); players.init_module();
@@ -148,6 +155,7 @@ large_monster_UI.init_module();
small_monster_UI.init_module(); small_monster_UI.init_module();
time_UI.init_module(); time_UI.init_module();
env_creature_UI.init_module(); env_creature_UI.init_module();
--buff_UI.init_module();
keyboard.init_module(); keyboard.init_module();
@@ -162,7 +170,7 @@ local function draw_modules(module_visibility_config, flow_state_name)
if module_visibility_config.small_monster_UI and config.current_config.small_monster_UI.enabled then if module_visibility_config.small_monster_UI and config.current_config.small_monster_UI.enabled then
local success = pcall(small_monster_UI.draw); local success = pcall(small_monster_UI.draw);
if not success then if not success then
customization_menu.status = string.format("[%s] Small monster drawing function threw an exception", flow_state_name); customization_menu.status = string.format("[%s] Small Monster UI Drawing Function threw an Exception", flow_state_name);
end end
end end
@@ -178,30 +186,37 @@ local function draw_modules(module_visibility_config, flow_state_name)
if dynamic_enabled or static_enabled or highlighted_enabled then if dynamic_enabled or static_enabled or highlighted_enabled then
local success = pcall(large_monster_UI.draw, dynamic_enabled, static_enabled, highlighted_enabled); local success = pcall(large_monster_UI.draw, dynamic_enabled, static_enabled, highlighted_enabled);
if not success then if not success then
customization_menu.status = string.format("[%s] Large Monster drawing function threw an exception", flow_state_name); customization_menu.status = string.format("[%s] Large Monster UI Drawing Function threw an Exception", flow_state_name);
end end
end end
if config.current_config.time_UI.enabled and module_visibility_config.time_UI then if config.current_config.time_UI.enabled and module_visibility_config.time_UI then
local success = pcall(time_UI.draw); local success = pcall(time_UI.draw);
if not success then if not success then
customization_menu.status = string.format("[%s] Time Drawing function threw an exception", flow_state_name); customization_menu.status = string.format("[%s] Time UI Drawing Function threw an Exception", flow_state_name);
end end
end end
if config.current_config.damage_meter_UI.enabled and module_visibility_config.damage_meter_UI then if config.current_config.damage_meter_UI.enabled and module_visibility_config.damage_meter_UI then
local success = pcall(damage_meter_UI.draw); local success = pcall(damage_meter_UI.draw);
if not success then if not success then
customization_menu.status = string.format("[%s] Damage Meter drawing function threw an exception", flow_state_name); customization_menu.status = string.format("[%s] Damage Meter UI Drawing Function threw an Exception", flow_state_name);
end end
end end
if config.current_config.endemic_life_UI.enabled and module_visibility_config.endemic_life_UI then if config.current_config.endemic_life_UI.enabled and module_visibility_config.endemic_life_UI then
local success = pcall(env_creature_UI.draw); local success = pcall(env_creature_UI.draw);
if not success then if not success then
customization_menu.status = string.format("[%s] Endemic Life drawing function threw an exception", flow_state_name); customization_menu.status = string.format("[%s] Endemic Life UI Drawing Function threw an Exception", flow_state_name);
end end
end end
--[[if config.current_config.buff_UI.enabled and module_visibility_config.buff_UI then
local success = truepcall(buff_UI.draw);
if not success then
customization_menu.status = string.format("[%s] Buff UI Drawing Function threw an Exception", flow_state_name);
end
end]]
end end
local function main_loop() local function main_loop()
@@ -225,24 +240,32 @@ local function main_loop()
if dynamic_enabled or static_enabled or highlighted_enabled then if dynamic_enabled or static_enabled or highlighted_enabled then
local success = pcall(large_monster_UI.draw, dynamic_enabled, static_enabled, highlighted_enabled); local success = pcall(large_monster_UI.draw, dynamic_enabled, static_enabled, highlighted_enabled);
if not success then if not success then
customization_menu.status = "[In Training Area] Large monster drawing function threw an exception"; customization_menu.status = "[In Training Area] Large Monster UI Drawing Function threw an Exception";
end end
end end
if config.current_config.damage_meter_UI.enabled and module_visibility_config.damage_meter_UI then if config.current_config.damage_meter_UI.enabled and module_visibility_config.damage_meter_UI then
local success = pcall(damage_meter_UI.draw); local success = pcall(damage_meter_UI.draw);
if not success then if not success then
customization_menu.status = "[In Training Area] Damage meter drawing function threw an exception"; customization_menu.status = "[In Training Area] Damage Meter UI Drawing Function threw an Exception";
end end
end end
if config.current_config.endemic_life_UI.enabled and module_visibility_config.endemic_life_UI then if config.current_config.endemic_life_UI.enabled and module_visibility_config.endemic_life_UI then
local success = pcall(env_creature_UI.draw); local success = pcall(env_creature_UI.draw);
if not success then if not success then
customization_menu.status = "[In Training Area] Endemic life drawing function threw an exception"; customization_menu.status = "[In Training Area] Endemic Life UI Drawing Function threw an Exception";
end end
end end
--[[if config.current_config.buff_UI.enabled and module_visibility_config.buff_UI then
local success = pcall(buff_UI.draw);
if not success then
customization_menu.status = "[In Training Area] Buff UI Drawing Function threw an Exception";
end
end]]
elseif quest_status.flow_state == quest_status.flow_states.CUTSCENE then elseif quest_status.flow_state == quest_status.flow_states.CUTSCENE then
draw_modules(config.current_config.global_settings.module_visibility.cutscene, "Cutscene"); draw_modules(config.current_config.global_settings.module_visibility.cutscene, "Cutscene");
elseif quest_status.flow_state == quest_status.flow_states.LOADING_QUEST then elseif quest_status.flow_state == quest_status.flow_states.LOADING_QUEST then

View File

@@ -0,0 +1,105 @@
local buffs = {};
local buff_UI_entity;
local config;
local sdk = sdk;
local tostring = tostring;
local pairs = pairs;
local ipairs = ipairs;
local tonumber = tonumber;
local require = require;
local pcall = pcall;
local table = table;
local string = string;
local Vector3f = Vector3f;
local d2d = d2d;
local math = math;
local json = json;
local log = log;
local fs = fs;
local next = next;
local type = type;
local setmetatable = setmetatable;
local getmetatable = getmetatable;
local assert = assert;
local select = select;
local coroutine = coroutine;
local utf8 = utf8;
local re = re;
local imgui = imgui;
local draw = draw;
local Vector2f = Vector2f;
local reframework = reframework;
buffs.list = {};
function buffs.new(name)
local buff = {};
buff.name = name;
buff.timer = 0;
buff.duration = 0;
buff.is_active = true;
buff.timer_percentage = 0;
buff.minutes_left = 0;
buff.seconds_left = 0;
buff.is_infinite = false;
buffs.init_UI(buff);
return buff;
end
function buffs.init_buffs()
buffs.list = {};
end
function buffs.init_UI(buff)
local cached_config = config.current_config.buff_UI;
buff.buff_UI = buff_UI_entity.new(cached_config.bar, cached_config.name_label, cached_config.timer_label);
end
function buffs.draw(buff, buff_UI, position_on_screen, opacity_scale)
buff_UI_entity.draw(buff, buff_UI, position_on_screen, opacity_scale);
end
function buffs.init_module()
config = require("MHR_Overlay.Misc.config");
buff_UI_entity = require("MHR_Overlay.UI.UI_Entities.buff_UI_entity");
local buff = buffs.new("Enviroment Damage Negated");
buff.duration = 90;
buff.timer = 65;
buff.timer_percentage = 0.66;
buff.minutes_left = 1;
buff.seconds_left = 5
buffs.list["Enviroment Damage Negated"] = buff;
local buff = buffs.new("Sharpness Loss Reduced");
buff.duration = 120;
buff.timer = 70;
buff.timer_percentage = 0.583;
buff.minutes_left = 1;
buff.seconds_left = 10
buffs.list["Sharpness Loss Reduced"] = buff;
local buff = buffs.new("Sharpness Loss Reduced 2");
buff.duration = 120;
buff.timer = 70;
buff.timer_percentage = 0.583;
buff.minutes_left = 1;
buff.seconds_left = 10
buff.is_infinite = true;
buffs.list["Sharpness Loss Reduced 2"] = buff;
end
return buffs;

View File

@@ -32,7 +32,7 @@ local draw = draw;
local Vector2f = Vector2f; local Vector2f = Vector2f;
local reframework = reframework; local reframework = reframework;
config.version = "2.4"; config.version = "2.4.1";
config.config_folder = "MHR Overlay\\configs\\"; config.config_folder = "MHR Overlay\\configs\\";
config.current_config_value_file_name = "MHR Overlay\\config.json"; config.current_config_value_file_name = "MHR Overlay\\config.json";
@@ -85,7 +85,8 @@ function config.init_default()
large_monster_static_UI = true, large_monster_static_UI = true,
large_monster_highlighted_UI = true, large_monster_highlighted_UI = true,
damage_meter_UI = true, damage_meter_UI = true,
endemic_life_UI = true endemic_life_UI = true,
--buff_UI = true
}, },
cutscene = { cutscene = {
@@ -95,7 +96,8 @@ function config.init_default()
large_monster_highlighted_UI = false, large_monster_highlighted_UI = false,
time_UI = false, time_UI = false,
damage_meter_UI = false, damage_meter_UI = false,
endemic_life_UI = false endemic_life_UI = false,
--buff_UI = false
}, },
loading_quest = { loading_quest = {
@@ -105,7 +107,8 @@ function config.init_default()
large_monster_highlighted_UI = false, large_monster_highlighted_UI = false,
time_UI = false, time_UI = false,
damage_meter_UI = false, damage_meter_UI = false,
endemic_life_UI = false endemic_life_UI = false,
--buff_UI = false
}, },
quest_start_animation = { quest_start_animation = {
@@ -115,7 +118,8 @@ function config.init_default()
large_monster_highlighted_UI = true, large_monster_highlighted_UI = true,
time_UI = true, time_UI = true,
damage_meter_UI = true, damage_meter_UI = true,
endemic_life_UI = true endemic_life_UI = true,
--buff_UI = true
}, },
playing_quest = { playing_quest = {
@@ -125,7 +129,8 @@ function config.init_default()
large_monster_highlighted_UI = true, large_monster_highlighted_UI = true,
time_UI = true, time_UI = true,
damage_meter_UI = true, damage_meter_UI = true,
endemic_life_UI = true endemic_life_UI = true,
--buff_UI = true
}, },
killcam = { killcam = {
@@ -135,7 +140,8 @@ function config.init_default()
large_monster_highlighted_UI = true, large_monster_highlighted_UI = true,
time_UI = true, time_UI = true,
damage_meter_UI = true, damage_meter_UI = true,
endemic_life_UI = true endemic_life_UI = true,
--buff_UI = true
}, },
quest_end_timer = { quest_end_timer = {
@@ -145,7 +151,8 @@ function config.init_default()
large_monster_highlighted_UI = true, large_monster_highlighted_UI = true,
time_UI = true, time_UI = true,
damage_meter_UI = true, damage_meter_UI = true,
endemic_life_UI = true endemic_life_UI = true,
--buff_UI = true
}, },
quest_end_animation = { quest_end_animation = {
@@ -155,7 +162,8 @@ function config.init_default()
large_monster_highlighted_UI = false, large_monster_highlighted_UI = false,
time_UI = false, time_UI = false,
damage_meter_UI = false, damage_meter_UI = false,
endemic_life_UI = false endemic_life_UI = false,
--buff_UI = false
}, },
quest_end_screen = { quest_end_screen = {
@@ -165,7 +173,8 @@ function config.init_default()
large_monster_highlighted_UI = false, large_monster_highlighted_UI = false,
time_UI = false, time_UI = false,
damage_meter_UI = false, damage_meter_UI = false,
endemic_life_UI = false endemic_life_UI = false,
--buff_UI = false
}, },
reward_screen = { reward_screen = {
@@ -175,7 +184,8 @@ function config.init_default()
large_monster_highlighted_UI = true, large_monster_highlighted_UI = true,
time_UI = true, time_UI = true,
damage_meter_UI = true, damage_meter_UI = true,
endemic_life_UI = false endemic_life_UI = false,
--buff_UI = false
}, },
summary_screen = { summary_screen = {
@@ -185,7 +195,8 @@ function config.init_default()
large_monster_highlighted_UI = true, large_monster_highlighted_UI = true,
time_UI = true, time_UI = true,
damage_meter_UI = true, damage_meter_UI = true,
endemic_life_UI = false endemic_life_UI = false,
--buff_UI = false
}, },
}, },
@@ -5386,7 +5397,99 @@ function config.init_default()
color = 0xFF000000 color = 0xFF000000
} }
} }
} },
--[[buff_UI = {
enabled = true,
settings = {
hide_bar_for_infinite_buffs = true,
hide_timer_for_infinite_buffs = true,
orientation = "Vertical", -- "Vertical" or "Horizontal"
},
spacing = {
x = 260,
y = -24
},
position = {
x = 10,
y = 30,
-- Possible values: "Top-Left", "Top-Right", "Bottom-Left", "Bottom-Right"
anchor = "Bottom-Left"
},
sorting = {
type = "Name", -- "Name" or "Timer" or "Duration"
reversed_order = true
},
name_label = {
visibility = true,
text = "%s",
offset = {
x = 5,
y = 0
},
color = 0xFFFEFF88,
shadow = {
visibility = true,
offset = {
x = 1,
y = 1
},
color = 0xFF000000
}
},
timer_label = {
visibility = true,
text = "%2.0f:%02.0f",
offset = {
x = 200,
y = 0
},
color = 0xFFFFBF81,
shadow = {
visibility = true,
offset = {
x = 1,
y = 1
},
color = 0xFF000000
}
},
bar = {
visibility = true,
offset = {
x = 0,
y = 17
},
size = {
width = 240,
height = 5
},
outline = {
visibility = true,
thickness = 1,
offset = 0,
style = "Center"
},
colors = {
foreground = 0xA76FD456,
background = 0xA7000000,
outline = 0xC0000000
}
}
}]]
}; };
end end

View File

@@ -487,7 +487,13 @@ language.default_language = {
new = "New", new = "New",
reset = "Reset", reset = "Reset",
highlighted = "Highlighted" highlighted = "Highlighted",
buff_UI = "Buff UI",
timer = "Timer",
duration = "Duration",
hide_bar_for_infinite_buffs = "Hide Bar for infinite Buffs",
hide_timer_for_infinite_buffs = "Hide Timer for infinite Buffs",
} }
}; };

View File

@@ -849,7 +849,40 @@ function part_names.init()
language.current_language.parts.hind_legs, language.current_language.parts.hind_legs,
language.current_language.parts.wings, language.current_language.parts.wings,
language.current_language.parts.tail language.current_language.parts.tail
} },
--SUNBREAK TITLE UPDATE 4
[124] = -- Velkhana 124
{
language.current_language.parts.head,
language.current_language.parts.body,
language.current_language.parts.forelegs,
language.current_language.parts.hind_legs,
language.current_language.parts.wings,
language.current_language.parts.tail
},
[2134] = -- Risen Crimson Glow Valstrax 2134
{
language.current_language.parts.head,
language.current_language.parts.body,
language.current_language.parts.left_wing,
language.current_language.parts.right_wing,
language.current_language.parts.left_foreleg,
language.current_language.parts.right_foreleg,
language.current_language.parts.tail,
language.current_language.parts.hind_legs,
language.current_language.parts.chest
},
}; };
end end

View File

@@ -90,6 +90,12 @@ function module_visibility_customization.draw(cached_config)
config_changed = config_changed or changed; config_changed = config_changed or changed;
--[[changed, cached_config.buff_UI = imgui.checkbox(
language.current_language.customization_menu.buff_UI,
cached_config.buff_UI);
config_changed = config_changed or changed;]]
return config_changed; return config_changed;
end end

View File

@@ -0,0 +1,126 @@
local buff_UI = {};
local buff_UI_entity;
local config;
local buffs;
local screen;
local table_helpers;
local sdk = sdk;
local tostring = tostring;
local pairs = pairs;
local ipairs = ipairs;
local tonumber = tonumber;
local require = require;
local pcall = pcall;
local table = table;
local string = string;
local Vector3f = Vector3f;
local d2d = d2d;
local math = math;
local json = json;
local log = log;
local fs = fs;
local next = next;
local type = type;
local setmetatable = setmetatable;
local getmetatable = getmetatable;
local assert = assert;
local select = select;
local coroutine = coroutine;
local utf8 = utf8;
local re = re;
local imgui = imgui;
local draw = draw;
local Vector2f = Vector2f;
local reframework = reframework;
function buff_UI.draw()
local cached_config = config.current_config.buff_UI;
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
local displayed_buffs = {};
for _, buff in pairs(buffs.list) do
if not buff.is_active then
goto continue
end
table.insert(displayed_buffs, buff);
::continue::
end
-- sort
if cached_config.sorting.type == "Name" then
if cached_config.sorting.reversed_order then
table.sort(displayed_buffs, function(left, right)
return left.name > right.name;
end);
else
table.sort(displayed_buffs, function(left, right)
return left.name < right.name;
end);
end
elseif cached_config.sorting.type == "Timer" then
if cached_config.sorting.reversed_order then
table.sort(displayed_buffs, function(left, right)
return left.timer > right.timer;
end);
else
table.sort(displayed_buffs, function(left, right)
return left.timer < right.timer;
end);
end
else
if cached_config.sorting.reversed_order then
table.sort(displayed_buffs, function(left, right)
return left.duration > right.duration;
end);
else
table.sort(displayed_buffs, function(left, right)
return left.duration < right.duration;
end);
end
end
local position_on_screen = screen.calculate_absolute_coordinates(cached_config.position);
-- draw
for _, buff in ipairs(displayed_buffs) do
if not buff.is_active then
goto continue2
end
buffs.draw(buff, buff.buff_UI, position_on_screen, 1);
if cached_config.settings.orientation == "Horizontal" then
position_on_screen.x = position_on_screen.x + cached_config.spacing.x * global_scale_modifier;
else
position_on_screen.y = position_on_screen.y + cached_config.spacing.y * global_scale_modifier;
end
::continue2::
end
end
function buff_UI.init_module()
config = require("MHR_Overlay.Misc.config");
buff_UI_entity = require("MHR_Overlay.UI.UI_Entities.buff_UI_entity");
buffs = require("MHR_Overlay.Buffs.buffs");
--singletons = require("MHR_Overlay.Game_Handler.singletons");
table_helpers = require("MHR_Overlay.Misc.table_helpers");
config = require("MHR_Overlay.Misc.config");
--customization_menu = require("MHR_Overlay.UI.customization_menu");
--players = require("MHR_Overlay.Damage_Meter.players");
--non_players = require("MHR_Overlay.Damage_Meter.non_players");
--quest_status = require("MHR_Overlay.Game_Handler.quest_status");
screen = require("MHR_Overlay.Game_Handler.screen");
--drawing = require("MHR_Overlay.UI.drawing");
end
return buff_UI;

View File

@@ -0,0 +1,88 @@
local buff_UI_entity = {};
local config;
local table_helpers;
local drawing;
local language;
local sdk = sdk;
local tostring = tostring;
local pairs = pairs;
local ipairs = ipairs;
local tonumber = tonumber;
local require = require;
local pcall = pcall;
local table = table;
local string = string;
local Vector3f = Vector3f;
local d2d = d2d;
local math = math;
local json = json;
local log = log;
local fs = fs;
local next = next;
local type = type;
local setmetatable = setmetatable;
local getmetatable = getmetatable;
local assert = assert;
local select = select;
local coroutine = coroutine;
local utf8 = utf8;
local re = re;
local imgui = imgui;
local draw = draw;
local Vector2f = Vector2f;
local reframework = reframework;
function buff_UI_entity.new(bar, name_label, timer_label)
local entity = {};
local global_scale_modifier = config.current_config.global_settings.modifiers.global_scale_modifier;
--entity.visibility = visibility;
entity.bar = table_helpers.deep_copy(bar);
entity.name_label = table_helpers.deep_copy(name_label);
entity.timer_label = table_helpers.deep_copy(timer_label);
entity.bar.offset.x = entity.bar.offset.x * global_scale_modifier;
entity.bar.offset.y = entity.bar.offset.y * global_scale_modifier;
entity.bar.size.width = entity.bar.size.width * global_scale_modifier;
entity.bar.size.height = entity.bar.size.height * global_scale_modifier;
entity.bar.outline.thickness = entity.bar.outline.thickness * global_scale_modifier;
entity.bar.outline.offset = entity.bar.outline.offset * global_scale_modifier;
entity.name_label.offset.x = entity.name_label.offset.x * global_scale_modifier;
entity.name_label.offset.y = entity.name_label.offset.y * global_scale_modifier;
entity.timer_label.offset.x = entity.timer_label.offset.x * global_scale_modifier;
entity.timer_label.offset.y = entity.timer_label.offset.y * global_scale_modifier;
return entity;
end
function buff_UI_entity.draw(buff, buff_UI, position_on_screen, opacity_scale)
local cached_config = config.current_config.buff_UI;
if not buff.is_infinite then
drawing.draw_bar(buff_UI.bar, position_on_screen, opacity_scale, buff.timer_percentage);
elseif not cached_config.settings.hide_bar_for_infinite_buffs then
drawing.draw_bar(buff_UI.bar, position_on_screen, opacity_scale, 1);
end
drawing.draw_label(buff_UI.name_label, position_on_screen, opacity_scale, buff.name);
if not buff.is_infinite then
drawing.draw_label(buff_UI.timer_label, position_on_screen, opacity_scale, buff.minutes_left, buff.seconds_left);
elseif not cached_config.settings.hide_timer_for_infinite_buffs then
drawing.draw_label(buff_UI.timer_label, position_on_screen, opacity_scale, 0, 0);
end
end
function buff_UI_entity.init_module()
table_helpers = require("MHR_Overlay.Misc.table_helpers");
drawing = require("MHR_Overlay.UI.drawing");
config = require("MHR_Overlay.Misc.config");
language = require("MHR_Overlay.Misc.language");
end
return buff_UI_entity;

View File

@@ -13,6 +13,7 @@ local time_UI;
local keyboard; local keyboard;
local non_players; local non_players;
local quest_status; local quest_status;
local buffs;
local label_customization; local label_customization;
local bar_customization; local bar_customization;
@@ -79,6 +80,7 @@ customization_menu.displayed_ailments_sorting_types = {};
customization_menu.displayed_ailment_buildups_sorting_types = {}; customization_menu.displayed_ailment_buildups_sorting_types = {};
customization_menu.displayed_highlighted_buildup_bar_types = {}; customization_menu.displayed_highlighted_buildup_bar_types = {};
customization_menu.displayed_buildup_bar_relative_types = {}; customization_menu.displayed_buildup_bar_relative_types = {};
customization_menu.displayed_buff_UI_sorting_types = {};
customization_menu.displayed_damage_meter_UI_highlighted_entity_types = {}; customization_menu.displayed_damage_meter_UI_highlighted_entity_types = {};
customization_menu.displayed_damage_meter_UI_damage_bar_relative_types = {}; customization_menu.displayed_damage_meter_UI_damage_bar_relative_types = {};
@@ -98,6 +100,7 @@ customization_menu.ailments_sorting_types = {};
customization_menu.ailment_buildups_sorting_types = {}; customization_menu.ailment_buildups_sorting_types = {};
customization_menu.highlighted_buildup_bar_types = {}; customization_menu.highlighted_buildup_bar_types = {};
customization_menu.buildup_bar_relative_types = {}; customization_menu.buildup_bar_relative_types = {};
customization_menu.buff_UI_sorting_types = {};
customization_menu.damage_meter_UI_highlighted_entity_types = {}; customization_menu.damage_meter_UI_highlighted_entity_types = {};
customization_menu.damage_meter_UI_damage_bar_relative_types = {}; customization_menu.damage_meter_UI_damage_bar_relative_types = {};
@@ -108,6 +111,8 @@ customization_menu.damage_meter_UI_dps_modes = {};
customization_menu.auto_highlight_modes = {}; customization_menu.auto_highlight_modes = {};
customization_menu.fonts = {"Arial", "Arial Black", "Bahnschrift", "Calibri", "Cambria", "Cambria Math", "Candara", customization_menu.fonts = {"Arial", "Arial Black", "Bahnschrift", "Calibri", "Cambria", "Cambria Math", "Candara",
"Comic Sans MS", "Consolas", "Constantia", "Corbel", "Courier New", "Ebrima", "Comic Sans MS", "Consolas", "Constantia", "Corbel", "Courier New", "Ebrima",
"Franklin Gothic Medium", "Gabriola", "Gadugi", "Georgia", "HoloLens MDL2 Assets", "Impact", "Franklin Gothic Medium", "Gabriola", "Gadugi", "Georgia", "HoloLens MDL2 Assets", "Impact",
@@ -145,136 +150,159 @@ function customization_menu.reload_font(pop_push)
end end
function customization_menu.init() function customization_menu.init()
customization_menu.displayed_orientation_types = {language.current_language.customization_menu.horizontal, local current = language.current_language.customization_menu;
language.current_language.customization_menu.vertical}; local default = language.default_language.customization_menu;
customization_menu.displayed_anchor_types = {language.current_language.customization_menu.top_left,
language.current_language.customization_menu.top_right,
language.current_language.customization_menu.bottom_left,
language.current_language.customization_menu.bottom_right};
customization_menu.displayed_outline_styles = {language.current_language.customization_menu.inside, customization_menu.displayed_orientation_types = { current.horizontal,
language.current_language.customization_menu.center, current.vertical};
language.current_language.customization_menu.outside};
customization_menu.displayed_monster_UI_sorting_types = {language.current_language.customization_menu.normal,
language.current_language.customization_menu.health,
language.current_language.customization_menu.health_percentage,
language.current_language.customization_menu.distance};
customization_menu.displayed_monster_UI_parts_sorting_types = customization_menu.orientation_types = { default.horizontal,
{language.current_language.customization_menu.normal, language.current_language.customization_menu.health, default.vertical};
language.current_language.customization_menu.health_percentage,
language.current_language.customization_menu.flinch_count, language.current_language.customization_menu.break_health,
language.current_language.customization_menu.break_health_percentage,
language.current_language.customization_menu.break_count, language.current_language.customization_menu.loss_health,
language.current_language.customization_menu.loss_health_percentage};
customization_menu.displayed_ailments_sorting_types = {language.current_language.customization_menu.normal, customization_menu.displayed_anchor_types = { current.top_left,
language.current_language.customization_menu.buildup, current.top_right,
language.current_language.customization_menu.buildup_percentage}; current.bottom_left,
customization_menu.displayed_ailment_buildups_sorting_types = current.bottom_right};
{language.current_language.customization_menu.normal, language.current_language.customization_menu.buildup,
language.current_language.customization_menu.buildup_percentage};
customization_menu.displayed_highlighted_buildup_bar_types =
{language.current_language.customization_menu.me, language.current_language.customization_menu.top_buildup,
language.current_language.customization_menu.none};
customization_menu.displayed_buildup_bar_relative_types = {language.current_language.customization_menu.total_buildup,
language.current_language.customization_menu.top_buildup};
customization_menu.displayed_damage_meter_UI_highlighted_entity_types =
{language.current_language.customization_menu.top_damage,
language.current_language.customization_menu.top_dps, language.current_language.customization_menu.none};
customization_menu.displayed_damage_meter_UI_damage_bar_relative_types = customization_menu.anchor_types = { default.top_left,
{language.current_language.customization_menu.total_damage, language.current_language.customization_menu.top_damage}; default.top_right,
default.bottom_left,
default.bottom_right};
customization_menu.displayed_damage_meter_UI_my_damage_bar_location_types = {language.current_language customization_menu.displayed_outline_styles = { current.inside,
.customization_menu.normal, language.current_language.customization_menu.first, current.center,
language.current_language current.outside};
.customization_menu.last};
customization_menu.displayed_damage_meter_UI_total_damage_location_types = { customization_menu.outline_styles = { default.inside,
language.current_language.customization_menu.first, default.center,
language.current_language.customization_menu.last}; default.outside};
customization_menu.displayed_damage_meter_UI_sorting_types = customization_menu.displayed_monster_UI_sorting_types = { current.normal,
{language.current_language.customization_menu.normal, language.current_language.customization_menu.damage, current.health,
language.current_language.customization_menu.dps}; current.health_percentage,
customization_menu.displayed_damage_meter_UI_dps_modes = {language.current_language.customization_menu.first_hit, current.distance};
language.current_language.customization_menu.quest_time,
language.current_language.customization_menu.join_time};
customization_menu.displayed_auto_highlight_modes = {language.current_language.customization_menu.closest, customization_menu.monster_UI_sorting_types = { default.normal,
language.current_language.customization_menu.farthest, default.health,
language.current_language.customization_menu.lowest_health, default.health_percentage,
language.current_language.customization_menu.highest_health, default.distance};
language.current_language.customization_menu.lowest_health_percentage,
language.current_language.customization_menu.highest_health_percentage};
customization_menu.orientation_types = {language.default_language.customization_menu.horizontal, customization_menu.displayed_monster_UI_parts_sorting_types = { current.normal,
language.default_language.customization_menu.vertical}; current.health,
customization_menu.anchor_types = {language.default_language.customization_menu.top_left, current.health_percentage,
language.default_language.customization_menu.top_right, current.flinch_count,
language.default_language.customization_menu.bottom_left, current.break_health,
language.default_language.customization_menu.bottom_right}; current.break_health_percentage,
current.break_count,
current.loss_health,
current.loss_health_percentage};
customization_menu.outline_styles = {language.default_language.customization_menu.inside, customization_menu.large_monster_UI_parts_sorting_types = { default.normal,
language.default_language.customization_menu.center, default.health,
language.default_language.customization_menu.outside}; default.health_percentage,
customization_menu.monster_UI_sorting_types = {language.default_language.customization_menu.normal, default.flinch_count,
language.default_language.customization_menu.health, default.break_health,
language.default_language.customization_menu.health_percentage, default.break_health_percentage,
language.default_language.customization_menu.distance}; default.break_count,
default.loss_health,
default.loss_health_percentage};
customization_menu.large_monster_UI_parts_sorting_types = {language.default_language.customization_menu.normal, customization_menu.displayed_ailments_sorting_types = { current.normal,
language.default_language.customization_menu.health, current.buildup,
language.default_language.customization_menu current.buildup_percentage};
.health_percentage, language.default_language.customization_menu.flinch_count,
language.default_language.customization_menu.break_health,
language.default_language.customization_menu
.break_health_percentage, language.default_language.customization_menu.break_count,
language.default_language.customization_menu.loss_health,
language.default_language.customization_menu
.loss_health_percentage};
customization_menu.ailments_sorting_types = {language.default_language.customization_menu.normal, customization_menu.ailments_sorting_types = { default.normal,
language.default_language.customization_menu.buildup, default.buildup,
language.default_language.customization_menu.buildup_percentage}; default.buildup_percentage};
customization_menu.ailment_buildups_sorting_types = {language.default_language.customization_menu.normal,
language.default_language.customization_menu.buildup,
language.default_language.customization_menu.buildup_percentage};
customization_menu.highlighted_buildup_bar_types = {language.default_language.customization_menu.me,
language.default_language.customization_menu.top_buildup,
language.default_language.customization_menu.none};
customization_menu.buildup_bar_relative_types = {language.default_language.customization_menu.total_buildup,
language.default_language.customization_menu.top_buildup};
customization_menu.damage_meter_UI_highlighted_entity_types = {language.default_language.customization_menu.top_damage, customization_menu.displayed_buff_UI_sorting_types = { current.name,
language.default_language.customization_menu.top_dps, current.timer,
language.default_language.customization_menu.none}; current.duration};
customization_menu.damage_meter_UI_damage_bar_relative_types =
{language.default_language.customization_menu.total_damage, language.default_language.customization_menu.top_damage};
customization_menu.damage_meter_UI_my_damage_bar_location_types = customization_menu.buff_UI_sorting_types = { default.name,
{language.default_language.customization_menu.normal, language.default_language.customization_menu.first, default.timer,
language.default_language.customization_menu.last}; default.duration};
customization_menu.damage_meter_UI_total_damage_location_types = { customization_menu.displayed_ailment_buildups_sorting_types = { current.normal,
language.current_language.customization_menu.first, current.buildup,
language.current_language.customization_menu.last}; current.buildup_percentage};
customization_menu.damage_meter_UI_sorting_types = {language.default_language.customization_menu.normal, customization_menu.ailment_buildups_sorting_types = { default.normal,
language.default_language.customization_menu.damage, default.buildup,
language.default_language.customization_menu.dps}; default.buildup_percentage};
customization_menu.damage_meter_UI_dps_modes = {language.default_language.customization_menu.first_hit,
language.default_language.customization_menu.quest_time,
language.default_language.customization_menu.join_time};
customization_menu.auto_highlight_modes = {language.default_language.customization_menu.closest, customization_menu.displayed_highlighted_buildup_bar_types = { current.me,
language.default_language.customization_menu.farthest, current.top_buildup,
language.default_language.customization_menu.lowest_health, current.none};
language.default_language.customization_menu.highest_health,
language.default_language.customization_menu.lowest_health_percentage, customization_menu.highlighted_buildup_bar_types = { default.me,
language.default_language.customization_menu.highest_health_percentage}; default.top_buildup,
default.none};
customization_menu.displayed_buildup_bar_relative_types = { current.total_buildup,
current.top_buildup};
customization_menu.buildup_bar_relative_types = { default.total_buildup,
default.top_buildup};
customization_menu.displayed_damage_meter_UI_highlighted_entity_types = { current.top_damage,
current.top_dps,
current.none};
customization_menu.damage_meter_UI_highlighted_entity_types = { default.top_damage,
default.top_dps,
default.none};
customization_menu.displayed_damage_meter_UI_damage_bar_relative_types = { current.total_damage,
current.top_damage};
customization_menu.damage_meter_UI_damage_bar_relative_types = { default.total_damage,
default.top_damage};
customization_menu.displayed_damage_meter_UI_my_damage_bar_location_types = { current.normal,
current.first,
current.last};
customization_menu.damage_meter_UI_my_damage_bar_location_types = { default.normal,
default.first,
default.last};
customization_menu.displayed_damage_meter_UI_total_damage_location_types = { current.first,
current.last};
customization_menu.damage_meter_UI_total_damage_location_types = { default.first,
default.last};
customization_menu.displayed_damage_meter_UI_sorting_types = { current.normal,
current.damage,
current.dps};
customization_menu.damage_meter_UI_sorting_types = { default.normal,
default.damage,
default.dps};
customization_menu.displayed_damage_meter_UI_dps_modes = { current.first_hit,
current.quest_time,
current.join_time};
customization_menu.damage_meter_UI_dps_modes = { default.first_hit,
default.quest_time,
default.join_time};
customization_menu.displayed_auto_highlight_modes = { current.closest,
current.farthest,
current.lowest_health,
current.highest_health,
current.lowest_health_percentage,
current.highest_health_percentage};
customization_menu.auto_highlight_modes = { default.closest,
default.farthest,
default.lowest_health,
default.highest_health,
default.lowest_health_percentage,
default.highest_health_percentage};
end end
function customization_menu.draw() function customization_menu.draw()
@@ -304,6 +332,7 @@ function customization_menu.draw()
local time_UI_changed = false; local time_UI_changed = false;
local damage_meter_UI_changed = false; local damage_meter_UI_changed = false;
local endemic_life_UI_changed = false; local endemic_life_UI_changed = false;
local buff_UI_changed = false;
local apply_font_requested = false; local apply_font_requested = false;
local status_string = tostring(customization_menu.status); local status_string = tostring(customization_menu.status);
@@ -326,6 +355,7 @@ function customization_menu.draw()
time_UI_changed = customization_menu.draw_time_UI(); time_UI_changed = customization_menu.draw_time_UI();
damage_meter_UI_changed = customization_menu.draw_damage_meter_UI(); damage_meter_UI_changed = customization_menu.draw_damage_meter_UI();
endemic_life_UI_changed = customization_menu.draw_endemic_life_UI() endemic_life_UI_changed = customization_menu.draw_endemic_life_UI()
--buff_UI_changed = customization_menu.draw_buff_UI();
imgui.pop_font(); imgui.pop_font();
imgui.end_window(); imgui.end_window();
@@ -384,6 +414,12 @@ function customization_menu.draw()
end end
end end
--[[if buff_UI_changed or modifiers_changed or config_changed then
for _, buff in pairs(buffs.list) do
buffs.init_UI(buff);
end
end]]
if customization_menu.menu_font_changed and (apply_font_requested or config_changed) then if customization_menu.menu_font_changed and (apply_font_requested or config_changed) then
customization_menu.menu_font_changed = false; customization_menu.menu_font_changed = false;
customization_menu.reload_font(false); customization_menu.reload_font(false);
@@ -391,7 +427,7 @@ function customization_menu.draw()
if modules_changed or global_settings_changed or small_monster_UI_changed or large_monster_dynamic_UI_changed or if modules_changed or global_settings_changed or small_monster_UI_changed or large_monster_dynamic_UI_changed or
large_monster_static_UI_changed or large_monster_highlighted_UI_changed or time_UI_changed or damage_meter_UI_changed or large_monster_static_UI_changed or large_monster_highlighted_UI_changed or time_UI_changed or damage_meter_UI_changed or
endemic_life_UI_changed or modifiers_changed or config_changed then endemic_life_UI_changed or buff_UI_changed or modifiers_changed or config_changed then
config.save_current(); config.save_current();
end end
end end
@@ -512,6 +548,11 @@ function customization_menu.draw_modules()
changed, config.current_config.endemic_life_UI.enabled = imgui.checkbox( changed, config.current_config.endemic_life_UI.enabled = imgui.checkbox(
language.current_language.customization_menu.endemic_life_UI, config.current_config.endemic_life_UI.enabled); language.current_language.customization_menu.endemic_life_UI, config.current_config.endemic_life_UI.enabled);
config_changed = config_changed or changed; config_changed = config_changed or changed;
--[[changed, config.current_config.buff_UI.enabled = imgui.checkbox(
language.current_language.customization_menu.buff_UI, config.current_config.buff_UI.enabled);
config_changed = config_changed or changed;]]
imgui.tree_pop(); imgui.tree_pop();
end end
@@ -939,6 +980,13 @@ function customization_menu.draw_global_settings(apply_font_requested, language_
cached_config.module_visibility.in_training_area.endemic_life_UI); cached_config.module_visibility.in_training_area.endemic_life_UI);
config_changed = config_changed or changed; config_changed = config_changed or changed;
--[[changed, cached_config.module_visibility.in_training_area.buff_UI = imgui.checkbox(
language.current_language.customization_menu.buff_UI,
cached_config.module_visibility.in_training_area.buff_UI);
config_changed = config_changed or changed;]]
imgui.tree_pop(); imgui.tree_pop();
end end
@@ -2077,6 +2125,118 @@ function customization_menu.draw_endemic_life_UI()
return config_changed; return config_changed;
end end
function customization_menu.draw_buff_UI()
local changed = false;
local config_changed = false;
local index = 0;
if imgui.tree_node(language.current_language.customization_menu.buff_UI) then
local cached_config = config.current_config.buff_UI;
changed, cached_config.enabled = imgui.checkbox(
language.current_language.customization_menu.enabled, cached_config.enabled);
config_changed = config_changed or changed;
if imgui.tree_node(language.current_language.customization_menu.settings) then
changed, cached_config.settings.hide_bar_for_infinite_buffs = imgui.checkbox(
language.current_language.customization_menu.hide_bar_for_infinite_buffs, cached_config.settings.hide_bar_for_infinite_buffs);
config_changed = config_changed or changed;
changed, cached_config.settings.hide_timer_for_infinite_buffs = imgui.checkbox(
language.current_language.customization_menu.hide_timer_for_infinite_buffs, cached_config.settings.hide_timer_for_infinite_buffs);
config_changed = config_changed or changed;
changed, index = imgui.combo(
language.current_language.customization_menu.orientation,
table_helpers.find_index(customization_menu.orientation_types, cached_config.settings.orientation),
customization_menu.displayed_orientation_types);
config_changed = config_changed or changed;
if changed then
cached_config.settings.orientation = customization_menu.orientation_types[index];
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.spacing) then
changed, cached_config.spacing.x = imgui.drag_float(
language.current_language.customization_menu.x, cached_config.spacing.x, 0.1, -screen.width, screen.width, "%.1f");
config_changed = config_changed or changed;
changed, cached_config.spacing.y = imgui.drag_float(
language.current_language.customization_menu.y, cached_config.spacing.y, 0.1, -screen.height, screen.height, "%.1f");
config_changed = config_changed or changed;
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.position) then
changed, cached_config.position.x = imgui.drag_float(
language.current_language.customization_menu.x, cached_config.position.x, 0.1, 0, screen.width, "%.1f");
config_changed = config_changed or changed;
changed, cached_config.position.y = imgui.drag_float(
language.current_language.customization_menu.y, cached_config.position.y, 0.1, 0, screen.height, "%.1f");
config_changed = config_changed or changed;
changed, index = imgui.combo(
language.current_language.customization_menu.anchor,
table_helpers.find_index(customization_menu.anchor_types, cached_config.position.anchor),
customization_menu.displayed_anchor_types);
config_changed = config_changed or changed;
if changed then
cached_config.position.anchor = customization_menu.anchor_types[index];
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.sorting) then
changed, index = imgui.combo(
language.current_language.customization_menu.type,
table_helpers.find_index(customization_menu.buff_UI_sorting_types, cached_config.sorting.type),
customization_menu.displayed_buff_UI_sorting_types);
config_changed = config_changed or changed;
if changed then
cached_config.sorting.type = customization_menu.buff_UI_sorting_types[index];
end
changed, cached_config.sorting.reversed_order = imgui.checkbox(
language.current_language.customization_menu.reversed_order, cached_config.sorting.reversed_order);
config_changed = config_changed or changed;
imgui.tree_pop();
end
changed = label_customization.draw(language.current_language.customization_menu.name_label, cached_config.name_label);
config_changed = config_changed or changed;
changed = label_customization.draw(language.current_language.customization_menu.timer_label, cached_config.timer_label);
config_changed = config_changed or changed;
changed = bar_customization.draw(language.current_language.customization_menu.bar, cached_config.bar);
config_changed = config_changed or changed;
imgui.tree_pop();
end
return config_changed;
end
function customization_menu.init_module() function customization_menu.init_module()
table_helpers = require("MHR_Overlay.Misc.table_helpers"); table_helpers = require("MHR_Overlay.Misc.table_helpers");
language = require("MHR_Overlay.Misc.language"); language = require("MHR_Overlay.Misc.language");
@@ -2091,6 +2251,7 @@ function customization_menu.init_module()
keyboard = require("MHR_Overlay.Game_Handler.keyboard"); keyboard = require("MHR_Overlay.Game_Handler.keyboard");
non_players = require("MHR_Overlay.Damage_Meter.non_players"); non_players = require("MHR_Overlay.Damage_Meter.non_players");
quest_status = require("MHR_Overlay.Game_Handler.quest_status"); quest_status = require("MHR_Overlay.Game_Handler.quest_status");
buffs = require("MHR_Overlay.Buffs.buffs");
label_customization = require("MHR_Overlay.UI.Customizations.label_customization"); label_customization = require("MHR_Overlay.UI.Customizations.label_customization");
bar_customization = require("MHR_Overlay.UI.Customizations.bar_customization"); bar_customization = require("MHR_Overlay.UI.Customizations.bar_customization");

View File

@@ -65,6 +65,7 @@
"break_health_percentage": "Break Health Percentage", "break_health_percentage": "Break Health Percentage",
"break_max_count": "Break Max Count", "break_max_count": "Break Max Count",
"break_severe_filter": "Break + Severe", "break_severe_filter": "Break + Severe",
"buff_UI": "Buff UI",
"buildup": "Buildup", "buildup": "Buildup",
"buildup_bar": "Buildup Bar", "buildup_bar": "Buildup Bar",
"buildup_bars_are_relative_to": "Buildup Bars are relative to", "buildup_bars_are_relative_to": "Buildup Bars are relative to",
@@ -95,6 +96,7 @@
"dps_label": "DPS Label", "dps_label": "DPS Label",
"dps_mode": "DPS Mode", "dps_mode": "DPS Mode",
"duplicate": "Duplicate", "duplicate": "Duplicate",
"duration": "Duration",
"dynamic_positioning": "Dynamic Positioning", "dynamic_positioning": "Dynamic Positioning",
"dynamically_positioned": "Dynamically Positioned", "dynamically_positioned": "Dynamically Positioned",
"enable_for": "Enable for", "enable_for": "Enable for",
@@ -123,6 +125,7 @@
"hide_ailments_with_zero_buildup": "Hide Ailments when Buildup is 0", "hide_ailments_with_zero_buildup": "Hide Ailments when Buildup is 0",
"hide_all_active_ailments": "Hide All Active Ailments", "hide_all_active_ailments": "Hide All Active Ailments",
"hide_all_inactive_ailments": "Hide All Inactive Ailments", "hide_all_inactive_ailments": "Hide All Inactive Ailments",
"hide_bar_for_infinite_buffs": "Hide Bar for infinite Buffs",
"hide_dead_or_captured": "Hide Dead or Captured", "hide_dead_or_captured": "Hide Dead or Captured",
"hide_disabled_ailments": "Hide Disabled Ailments by Game", "hide_disabled_ailments": "Hide Disabled Ailments by Game",
"hide_inactive_ailments_with_no_buildup_support": "Hide Inactive Ailments with no Buildup Support", "hide_inactive_ailments_with_no_buildup_support": "Hide Inactive Ailments with no Buildup Support",
@@ -132,6 +135,7 @@
"hide_other_players": "Hide Other Players", "hide_other_players": "Hide Other Players",
"hide_player_if_player_damage_is_zero": "Hide Player if Player Damage is 0", "hide_player_if_player_damage_is_zero": "Hide Player if Player Damage is 0",
"hide_servants": "Hide Followers", "hide_servants": "Hide Followers",
"hide_timer_for_infinite_buffs": "Hide Timer for infinite Buffs",
"hide_total_damage": "Hide Total Damage", "hide_total_damage": "Hide Total Damage",
"hide_total_if_total_damage_is_zero": "Hide Total if Total Damage is 0", "hide_total_if_total_damage_is_zero": "Hide Total if Total Damage is 0",
"hide_undamaged_parts": "Hide Undamaged Parts", "hide_undamaged_parts": "Hide Undamaged Parts",
@@ -260,6 +264,7 @@
"time_UI": "Time UI", "time_UI": "Time UI",
"time_label": "Time Label", "time_label": "Time Label",
"time_limit": "Time Limit (seconds)", "time_limit": "Time Limit (seconds)",
"timer": "Timer",
"timer_label": "Timer Label", "timer_label": "Timer Label",
"top_buildup": "Top Buildup", "top_buildup": "Top Buildup",
"top_damage": "Top Damage", "top_damage": "Top Damage",

View File

@@ -65,6 +65,7 @@
"break_health_percentage": "部位破壊までのダメージ状況()", "break_health_percentage": "部位破壊までのダメージ状況()",
"break_max_count": "最大破壊数", "break_max_count": "最大破壊数",
"break_severe_filter": "Break + Severe", "break_severe_filter": "Break + Severe",
"buff_UI": "Buff UI",
"buildup": "蓄積値", "buildup": "蓄積値",
"buildup_bar": "蓄積値バー", "buildup_bar": "蓄積値バー",
"buildup_bars_are_relative_to": "相対的な蓄積バー", "buildup_bars_are_relative_to": "相対的な蓄積バー",
@@ -95,6 +96,7 @@
"dps_label": "DPSラベル", "dps_label": "DPSラベル",
"dps_mode": "DPS モード", "dps_mode": "DPS モード",
"duplicate": "Duplicate", "duplicate": "Duplicate",
"duration": "Duration",
"dynamic_positioning": "動的な場所", "dynamic_positioning": "動的な場所",
"dynamically_positioned": "モンスターに追随して表示", "dynamically_positioned": "モンスターに追随して表示",
"enable_for": "有効にする", "enable_for": "有効にする",
@@ -123,6 +125,7 @@
"hide_ailments_with_zero_buildup": "蓄積値がゼロの時に状態異常の表示を隠す", "hide_ailments_with_zero_buildup": "蓄積値がゼロの時に状態異常の表示を隠す",
"hide_all_active_ailments": "全ての有効な状態異常を隠す", "hide_all_active_ailments": "全ての有効な状態異常を隠す",
"hide_all_inactive_ailments": "全ての無効な状態異常を隠す", "hide_all_inactive_ailments": "全ての無効な状態異常を隠す",
"hide_bar_for_infinite_buffs": "Hide Bar for infinite Buffs",
"hide_dead_or_captured": "討伐済み、または捕獲済みも表示する", "hide_dead_or_captured": "討伐済み、または捕獲済みも表示する",
"hide_disabled_ailments": "無効な状態異常を隠す", "hide_disabled_ailments": "無効な状態異常を隠す",
"hide_inactive_ailments_with_no_buildup_support": "累積値がなく、非活性な異常状態を隠す", "hide_inactive_ailments_with_no_buildup_support": "累積値がなく、非活性な異常状態を隠す",
@@ -132,6 +135,7 @@
"hide_other_players": "ほかのプレイヤーの表示を隠す", "hide_other_players": "ほかのプレイヤーの表示を隠す",
"hide_player_if_player_damage_is_zero": "プレイヤーのダメージが0の場合、プレイヤーの表示を隠す", "hide_player_if_player_damage_is_zero": "プレイヤーのダメージが0の場合、プレイヤーの表示を隠す",
"hide_servants": "Hide Followers", "hide_servants": "Hide Followers",
"hide_timer_for_infinite_buffs": "Hide Timer for infinite Buffs",
"hide_total_damage": "合計ダメージの表示を隠す", "hide_total_damage": "合計ダメージの表示を隠す",
"hide_total_if_total_damage_is_zero": "合計ダメージが0の場合、合計の表示を隠す", "hide_total_if_total_damage_is_zero": "合計ダメージが0の場合、合計の表示を隠す",
"hide_undamaged_parts": "攻撃していない部位の表示を隠す", "hide_undamaged_parts": "攻撃していない部位の表示を隠す",
@@ -260,6 +264,7 @@
"time_UI": "タイムUI", "time_UI": "タイムUI",
"time_label": "タイムラベル", "time_label": "タイムラベル",
"time_limit": "タイムリミット(s.)", "time_limit": "タイムリミット(s.)",
"timer": "Timer",
"timer_label": "タイマーラベル", "timer_label": "タイマーラベル",
"top_buildup": "最高蓄積値", "top_buildup": "最高蓄積値",
"top_damage": "最高ダメージ", "top_damage": "最高ダメージ",

View File

@@ -65,6 +65,7 @@
"break_health_percentage": "파괴 수치 비율", "break_health_percentage": "파괴 수치 비율",
"break_max_count": "최대 파괴 횟수", "break_max_count": "최대 파괴 횟수",
"break_severe_filter": "파괴 + 절단", "break_severe_filter": "파괴 + 절단",
"buff_UI": "Buff UI",
"buildup": "누적치", "buildup": "누적치",
"buildup_bar": "누적치 바", "buildup_bar": "누적치 바",
"buildup_bars_are_relative_to": "기준으로 누적치 바", "buildup_bars_are_relative_to": "기준으로 누적치 바",
@@ -95,6 +96,7 @@
"dps_label": "DPS 정보", "dps_label": "DPS 정보",
"dps_mode": "DPS 모드", "dps_mode": "DPS 모드",
"duplicate": "Duplicate", "duplicate": "Duplicate",
"duration": "Duration",
"dynamic_positioning": "유동 위치", "dynamic_positioning": "유동 위치",
"dynamically_positioned": "유동 위치 UI", "dynamically_positioned": "유동 위치 UI",
"enable_for": "표시 대상", "enable_for": "표시 대상",
@@ -123,6 +125,7 @@
"hide_ailments_with_zero_buildup": "누적치가 0이면 상태이상 숨김", "hide_ailments_with_zero_buildup": "누적치가 0이면 상태이상 숨김",
"hide_all_active_ailments": "걸린 상태이상 모두 숨김", "hide_all_active_ailments": "걸린 상태이상 모두 숨김",
"hide_all_inactive_ailments": "걸리지 않은 상태이상 모두 숨김", "hide_all_inactive_ailments": "걸리지 않은 상태이상 모두 숨김",
"hide_bar_for_infinite_buffs": "Hide Bar for infinite Buffs",
"hide_dead_or_captured": "토벌되거나 포획되면 숨김", "hide_dead_or_captured": "토벌되거나 포획되면 숨김",
"hide_disabled_ailments": "비활성화된 상태이상 숨김", "hide_disabled_ailments": "비활성화된 상태이상 숨김",
"hide_inactive_ailments_with_no_buildup_support": "누적치가 없고 걸리지 않은 상태이상 숨김", "hide_inactive_ailments_with_no_buildup_support": "누적치가 없고 걸리지 않은 상태이상 숨김",
@@ -132,6 +135,7 @@
"hide_other_players": "다른 헌터 정보 숨김", "hide_other_players": "다른 헌터 정보 숨김",
"hide_player_if_player_damage_is_zero": "헌터 대미지가 0이면 헌터 숨김", "hide_player_if_player_damage_is_zero": "헌터 대미지가 0이면 헌터 숨김",
"hide_servants": "Hide Followers", "hide_servants": "Hide Followers",
"hide_timer_for_infinite_buffs": "Hide Timer for infinite Buffs",
"hide_total_damage": "모든 대미지 숨김", "hide_total_damage": "모든 대미지 숨김",
"hide_total_if_total_damage_is_zero": "총 대미지가 0이면 모두 숨김이 높은", "hide_total_if_total_damage_is_zero": "총 대미지가 0이면 모두 숨김이 높은",
"hide_undamaged_parts": "피해를 입히지 않은 부위 숨김", "hide_undamaged_parts": "피해를 입히지 않은 부위 숨김",
@@ -260,6 +264,7 @@
"time_UI": "시간 UI", "time_UI": "시간 UI",
"time_label": "시간 정보", "time_label": "시간 정보",
"time_limit": "시간 제한 (단위: 초)", "time_limit": "시간 제한 (단위: 초)",
"timer": "Timer",
"timer_label": "타이머 정보", "timer_label": "타이머 정보",
"top_buildup": "총 누적치", "top_buildup": "총 누적치",
"top_damage": "최고 대미지", "top_damage": "최고 대미지",

View File

@@ -65,6 +65,7 @@
"break_health_percentage": "Повреждение части в процентах", "break_health_percentage": "Повреждение части в процентах",
"break_max_count": "Максимальное кол-во повреждений", "break_max_count": "Максимальное кол-во повреждений",
"break_severe_filter": "Повреждение + Отсечение", "break_severe_filter": "Повреждение + Отсечение",
"buff_UI": "Интерфейс баффов",
"buildup": "Накопление", "buildup": "Накопление",
"buildup_bar": "Шкала накопления", "buildup_bar": "Шкала накопления",
"buildup_bars_are_relative_to": "Шкалы накопления расположены относительно к", "buildup_bars_are_relative_to": "Шкалы накопления расположены относительно к",
@@ -95,6 +96,7 @@
"dps_label": "Метка урона в секунду", "dps_label": "Метка урона в секунду",
"dps_mode": "Режим урона в секунду", "dps_mode": "Режим урона в секунду",
"duplicate": "Дублировать", "duplicate": "Дублировать",
"duration": "Продолжительность",
"dynamic_positioning": "Динамическое позиционирование", "dynamic_positioning": "Динамическое позиционирование",
"dynamically_positioned": "Рассположенный динамично", "dynamically_positioned": "Рассположенный динамично",
"enable_for": "Показывать для", "enable_for": "Показывать для",
@@ -123,6 +125,7 @@
"hide_ailments_with_zero_buildup": "Скрыть аномальный статус, если накопление равно 0", "hide_ailments_with_zero_buildup": "Скрыть аномальный статус, если накопление равно 0",
"hide_all_active_ailments": "Скрыть все активные аномальные статусы", "hide_all_active_ailments": "Скрыть все активные аномальные статусы",
"hide_all_inactive_ailments": "Скрыть все неактивные аномальные статусы", "hide_all_inactive_ailments": "Скрыть все неактивные аномальные статусы",
"hide_bar_for_infinite_buffs": "Скрыть шкалу у бесконечных баффов",
"hide_dead_or_captured": "Скрыть мёртвых и захваченных монстров", "hide_dead_or_captured": "Скрыть мёртвых и захваченных монстров",
"hide_disabled_ailments": "Скрыть отключенные аномальные статусы", "hide_disabled_ailments": "Скрыть отключенные аномальные статусы",
"hide_inactive_ailments_with_no_buildup_support": "Скрыть неактивные аномальные статусы без поддержки накопления", "hide_inactive_ailments_with_no_buildup_support": "Скрыть неактивные аномальные статусы без поддержки накопления",
@@ -131,7 +134,8 @@
"hide_myself": "Скрыть себя", "hide_myself": "Скрыть себя",
"hide_other_players": "Скрыть остальных игроков", "hide_other_players": "Скрыть остальных игроков",
"hide_player_if_player_damage_is_zero": "Скрыть игрока, если его урон равен 0", "hide_player_if_player_damage_is_zero": "Скрыть игрока, если его урон равен 0",
"hide_servants": "Hide Followers", "hide_servants": "Скрыть последователей",
"hide_timer_for_infinite_buffs": "Скрыть таймер у бесконечных баффов",
"hide_total_damage": "Скрыть общий урон", "hide_total_damage": "Скрыть общий урон",
"hide_total_if_total_damage_is_zero": "Скрыть общий урон, если он равен 0", "hide_total_if_total_damage_is_zero": "Скрыть общий урон, если он равен 0",
"hide_undamaged_parts": "Скрыть неповреждённые части тела", "hide_undamaged_parts": "Скрыть неповреждённые части тела",
@@ -260,6 +264,7 @@
"time_UI": "Интерфейс времени", "time_UI": "Интерфейс времени",
"time_label": "Метка времени", "time_label": "Метка времени",
"time_limit": "Ограничение по времени (cек.)", "time_limit": "Ограничение по времени (cек.)",
"timer": "Таймер",
"timer_label": "Метка таймера", "timer_label": "Метка таймера",
"top_buildup": "Наибольшее накопление", "top_buildup": "Наибольшее накопление",
"top_damage": "Наибольший урон", "top_damage": "Наибольший урон",

View File

@@ -65,6 +65,7 @@
"break_health_percentage": "Break Health Percentage", "break_health_percentage": "Break Health Percentage",
"break_max_count": "Break Max Count", "break_max_count": "Break Max Count",
"break_severe_filter": "Break + Severe", "break_severe_filter": "Break + Severe",
"buff_UI": "Buff UI",
"buildup": "积累值", "buildup": "积累值",
"buildup_bar": "积累值条", "buildup_bar": "积累值条",
"buildup_bars_are_relative_to": "积累值条基于", "buildup_bars_are_relative_to": "积累值条基于",
@@ -95,6 +96,7 @@
"dps_label": "DPS标签", "dps_label": "DPS标签",
"dps_mode": "DPS模式", "dps_mode": "DPS模式",
"duplicate": "Duplicate", "duplicate": "Duplicate",
"duration": "Duration",
"dynamic_positioning": "动态位置", "dynamic_positioning": "动态位置",
"dynamically_positioned": "动态位置", "dynamically_positioned": "动态位置",
"enable_for": "开启", "enable_for": "开启",
@@ -123,6 +125,7 @@
"hide_ailments_with_zero_buildup": "当积累值为0时隐藏该状态异常", "hide_ailments_with_zero_buildup": "当积累值为0时隐藏该状态异常",
"hide_all_active_ailments": "隐藏所有激活的状态异常", "hide_all_active_ailments": "隐藏所有激活的状态异常",
"hide_all_inactive_ailments": "隐藏所有没有激活的状态异常", "hide_all_inactive_ailments": "隐藏所有没有激活的状态异常",
"hide_bar_for_infinite_buffs": "Hide Bar for infinite Buffs",
"hide_dead_or_captured": "隐藏死亡或被捕获的怪物", "hide_dead_or_captured": "隐藏死亡或被捕获的怪物",
"hide_disabled_ailments": "隐藏禁用的状态异常", "hide_disabled_ailments": "隐藏禁用的状态异常",
"hide_inactive_ailments_with_no_buildup_support": "隐藏无积累值的非激活状态异常", "hide_inactive_ailments_with_no_buildup_support": "隐藏无积累值的非激活状态异常",
@@ -132,6 +135,7 @@
"hide_other_players": "Hide Other Players", "hide_other_players": "Hide Other Players",
"hide_player_if_player_damage_is_zero": "当玩家伤害为0时隐藏该玩家", "hide_player_if_player_damage_is_zero": "当玩家伤害为0时隐藏该玩家",
"hide_servants": "Hide Followers", "hide_servants": "Hide Followers",
"hide_timer_for_infinite_buffs": "Hide Timer for infinite Buffs",
"hide_total_damage": "Hide Total Damage", "hide_total_damage": "Hide Total Damage",
"hide_total_if_total_damage_is_zero": "当总伤害为0时隐藏总伤害", "hide_total_if_total_damage_is_zero": "当总伤害为0时隐藏总伤害",
"hide_undamaged_parts": "隐藏没有受到伤害的部位", "hide_undamaged_parts": "隐藏没有受到伤害的部位",
@@ -260,6 +264,7 @@
"time_UI": "时间UI", "time_UI": "时间UI",
"time_label": "时间标签", "time_label": "时间标签",
"time_limit": "时间限制(秒)", "time_limit": "时间限制(秒)",
"timer": "Timer",
"timer_label": "计时器标签", "timer_label": "计时器标签",
"top_buildup": "最高积累值", "top_buildup": "最高积累值",
"top_damage": "最高伤害", "top_damage": "最高伤害",

View File

@@ -65,6 +65,7 @@
"break_health_percentage": "Break Health Percentage", "break_health_percentage": "Break Health Percentage",
"break_max_count": "Break Max Count", "break_max_count": "Break Max Count",
"break_severe_filter": "Break + Severe", "break_severe_filter": "Break + Severe",
"buff_UI": "Buff UI",
"buildup": "累積值", "buildup": "累積值",
"buildup_bar": "累積值條", "buildup_bar": "累積值條",
"buildup_bars_are_relative_to": "累積值條顯示位置調整", "buildup_bars_are_relative_to": "累積值條顯示位置調整",
@@ -95,6 +96,7 @@
"dps_label": "DPS文字", "dps_label": "DPS文字",
"dps_mode": "DPS模式", "dps_mode": "DPS模式",
"duplicate": "Duplicate", "duplicate": "Duplicate",
"duration": "Duration",
"dynamic_positioning": "浮動的資訊位置", "dynamic_positioning": "浮動的資訊位置",
"dynamically_positioned": "浮動的魔物資訊", "dynamically_positioned": "浮動的魔物資訊",
"enable_for": "啟用對象", "enable_for": "啟用對象",
@@ -123,6 +125,7 @@
"hide_ailments_with_zero_buildup": "當累積值為0時,隱藏該異常狀態", "hide_ailments_with_zero_buildup": "當累積值為0時,隱藏該異常狀態",
"hide_all_active_ailments": "隱藏觸發中的異常狀態", "hide_all_active_ailments": "隱藏觸發中的異常狀態",
"hide_all_inactive_ailments": "隱藏尚未被觸發的異常狀態", "hide_all_inactive_ailments": "隱藏尚未被觸發的異常狀態",
"hide_bar_for_infinite_buffs": "Hide Bar for infinite Buffs",
"hide_dead_or_captured": "隱藏死亡或被捕獲的魔物", "hide_dead_or_captured": "隱藏死亡或被捕獲的魔物",
"hide_disabled_ailments": "隱藏並停用所有異常狀態", "hide_disabled_ailments": "隱藏並停用所有異常狀態",
"hide_inactive_ailments_with_no_buildup_support": "隱藏無累積值的非觸發下異常狀態", "hide_inactive_ailments_with_no_buildup_support": "隱藏無累積值的非觸發下異常狀態",
@@ -132,6 +135,7 @@
"hide_other_players": "隱藏其他玩家", "hide_other_players": "隱藏其他玩家",
"hide_player_if_player_damage_is_zero": "當玩家傷害為0時,隱藏玩家傷害", "hide_player_if_player_damage_is_zero": "當玩家傷害為0時,隱藏玩家傷害",
"hide_servants": "Hide Followers", "hide_servants": "Hide Followers",
"hide_timer_for_infinite_buffs": "Hide Timer for infinite Buffs",
"hide_total_damage": "隱藏總傷害", "hide_total_damage": "隱藏總傷害",
"hide_total_if_total_damage_is_zero": "當總傷害為0時,隱藏總傷害", "hide_total_if_total_damage_is_zero": "當總傷害為0時,隱藏總傷害",
"hide_undamaged_parts": "隱藏沒受到傷害的部位", "hide_undamaged_parts": "隱藏沒受到傷害的部位",
@@ -260,6 +264,7 @@
"time_UI": "時間 UI", "time_UI": "時間 UI",
"time_label": "時間", "time_label": "時間",
"time_limit": "時限 (秒)", "time_limit": "時限 (秒)",
"timer": "Timer",
"timer_label": "計時器", "timer_label": "計時器",
"top_buildup": "最高累積值", "top_buildup": "最高累積值",
"top_damage": "最高傷害", "top_damage": "最高傷害",