32 Commits

Author SHA1 Message Date
GreenComfyTea
f01ec08990 Merge branch 'main' of https://github.com/GreenComfyTea/MHR-Overlay 2023-10-10 12:56:26 +03:00
GreenComfyTea
b6ed4f036a Adjust Dragon Conversion Buff Names 2023-10-10 12:56:18 +03:00
GreenComfyTea
fedf5bc7af Update README.md 2023-10-10 12:54:29 +03:00
GreenComfyTea
009eb9ffb0 Add Missing Might Seed Buff Filter 2023-10-10 12:30:19 +03:00
GreenComfyTea
b8a7f109e0 Add Missing Falling Asleep Buff Filter 2023-10-10 12:28:25 +03:00
GreenComfyTea
51b824e385 Update README.md 2023-10-10 11:08:50 +03:00
GreenComfyTea
c8bd65556e Fix Unicode Ranges 2023-10-10 10:57:07 +03:00
GreenComfyTea
0781662344 Update Unicode Ranges 2023-10-10 10:17:36 +03:00
GreenComfyTea
5bdcd1b9cf Update NotoSans-CJK Fonts to v2.004 2023-10-10 09:55:02 +03:00
GreenComfyTea
305a78b654 Add NotoSansArabic-Bold.otf Font 2023-10-10 09:30:38 +03:00
GreenComfyTea
6236c1e088 Add Missing NotoSans-Bold.otf Font 2023-10-10 09:28:41 +03:00
GreenComfyTea
ba571b0426 Update ru-ru.json to v2.6 + Add Buff Include Name 2023-10-09 17:46:29 +03:00
GreenComfyTea
2c7c229ec9 Add ID to Endemic Life Name Label 2023-10-09 15:19:54 +03:00
GreenComfyTea
39dbd23791 Change Default Customization Menu Font Size to 16 2023-10-09 15:00:42 +03:00
GreenComfyTea
96407c07bf Bump version to v2.6 2023-10-09 14:59:21 +03:00
GreenComfyTea
1f3a7d2bf8 Use Buff Filter Name frrom Localization File
+ Sort Names in English + Use NotoSans-Bold as Default Font
2023-10-09 14:58:10 +03:00
GreenComfyTea
423635400c Implement Buff Customization by Type 2023-09-30 11:03:25 +03:00
GreenComfyTea
17b89d3d7f Fix Include -> Skill Level Not Working 2023-09-30 11:02:38 +03:00
GreenComfyTea
c3d78705a3 Add Missing skill_level Translation String 2023-09-30 11:01:21 +03:00
GreenComfyTea
764b72f0ea Add buff types back 2023-09-30 10:06:04 +03:00
GreenComfyTea
df43908a31 Add Option to Set Infinite Buffs Location 2023-09-26 14:02:48 +03:00
GreenComfyTea
0f72fba92d Remove debug data 2023-09-26 13:15:25 +03:00
GreenComfyTea
e586534c4d Add Timer Delays Customization 2023-09-26 13:14:23 +03:00
GreenComfyTea
0951de24e2 Check for null in time.remove_delay_timer() 2023-09-26 11:32:18 +03:00
GreenComfyTea
480bc9c9b7 Add Buff Filters 2023-09-26 11:31:00 +03:00
GreenComfyTea
cbaa537a0b Improve Error Reporting in the Main Loop Functions 2023-09-26 11:29:14 +03:00
GreenComfyTea
c25ceee3d6 Blood Awakening: Remove Duration Pulling 2023-09-19 14:10:10 +03:00
GreenComfyTea
5a29b60fca Clean Up 2023-09-19 14:02:48 +03:00
GreenComfyTea
41f75d19d3 Refactor player_skill_list 2023-09-19 13:50:21 +03:00
GreenComfyTea
43b2946939 Set default Buff.update Timer to 0.5 2023-09-19 13:49:55 +03:00
GreenComfyTea
43fc14e01e Remove Pulling Duration for Some Buffs
Because only a few of the buff durations were found, I would prefer a simpler, more consistent and more performant code.
2023-09-19 13:47:24 +03:00
GreenComfyTea
66b192717c Misc Buffs: Move/Rename Immunizer to Natural Healing Up 2023-09-19 13:37:24 +03:00
38 changed files with 4802 additions and 2210 deletions

View File

@@ -135,33 +135,34 @@
* **[Troubleshooting](https://github.com/GreenComfyTea/MHR-Overlay/wiki/Troubleshooting)**
# Requirements
1. [REFramework](https://www.nexusmods.com/monsterhunterrise/mods/26) (v1.503+);
2. [REFramework Direct2D](https://www.nexusmods.com/monsterhunterrise/mods/134) (v0.4.0+) - Needed for Unicode Support.
1. **[REFramework](https://www.nexusmods.com/monsterhunterrise/mods/26)** (v1.503+);
2. **[REFramework Direct2D](https://www.nexusmods.com/monsterhunterrise/mods/134)** (v0.4.0+) - Needed for Unicode Support.
# How to install:
1. Install [REFramework](https://www.nexusmods.com/monsterhunterrise/mods/26);
2. Install [REFramework Direct2D](https://www.nexusmods.com/monsterhunterrise/mods/134);
1. Install **[REFramework](https://www.nexusmods.com/monsterhunterrise/mods/26)**;
2. Install **[REFramework Direct2D](https://www.nexusmods.com/monsterhunterrise/mods/134)**;
>**:pushpin: Windows:** Works normally.
>**:pushpin: Linux:** Latest Experimental Proton seems to have it working normally as well (https://github.com/cursey/reframework-d2d/issues/5).
>**:pushpin: Steam Deck:** I've seen people getting it working but I don't have the exact instructions. You will have to figure it out yourself and/or search the nexus pages for information ([REFramework](https://www.nexusmods.com/monsterhunterrise/mods/26?tab=description), [REFramework Direct2D](https://www.nexusmods.com/monsterhunterrise/mods/134), [MHR Overlay](https://www.nexusmods.com/monsterhunterrise/mods/50)).
>**:pushpin: Steam Deck:** I've seen people getting it working but I don't have the exact instructions. You will have to figure it out yourself and/or search the nexus pages for information (**[REFramework](https://www.nexusmods.com/monsterhunterrise/mods/26?tab=description)**, **[REFramework Direct2D](https://www.nexusmods.com/monsterhunterrise/mods/134)**, **[MHR Overlay](https://www.nexusmods.com/monsterhunterrise/mods/50)**).
3. Download the mod:
* Official release can be downloaded from [Nexus Mods](https://www.nexusmods.com/monsterhunterrise/mods/50);
* Nightly builds are available in [this repo](https://github.com/GreenComfyTea/MHR-Overlay) and can contain broken functionality, debugging info on screen, bugs and might require the latest [nightly build](https://github.com/praydog/REFramework-nightly/releases) of [REFramework](https://www.nexusmods.com/monsterhunterrise/mods/26). Use with caution!
4. Extract the mod from the archive and place it in MonsterHunterRise folder. Refer to [FAQ](https://github.com/GreenComfyTea/MHR-Overlay/wiki/FAQ) to verify how the file hierarchy should look like if everything is done correctly.
* Official release can be downloaded from **[Nexus Mods](https://www.nexusmods.com/monsterhunterrise/mods/50)**;
* Nightly builds are available in **[this repo](https://github.com/GreenComfyTea/MHR-Overlay)** and can contain broken functionality, debugging info on screen, bugs and might require the latest **[nightly build](https://github.com/praydog/REFramework-nightly/releases)** of **[REFramework](https://www.nexusmods.com/monsterhunterrise/mods/26)**. Use with caution!
4. Extract the mod from the archive and place it in MonsterHunterRise folder. Refer to **[FAQ](https://github.com/GreenComfyTea/MHR-Overlay/wiki/FAQ)** to verify how the file hierarchy should look like if everything is done correctly.
# Credits
**GreenComfyTea** - creator of the mod and it's main contributor.
**cursecat** - creator of [REFramework](https://www.nexusmods.com/monsterhunterrise/mods/26), [REFramework Direct2D](https://www.nexusmods.com/monsterhunterrise/mods/134) plugin and [Monster Has HP Bar](https://www.nexusmods.com/monsterhunterrise/mods/43) mod, which provided an example on how to retrieve monster HP data.
**praydog2** - creator of [REFramework](https://www.nexusmods.com/monsterhunterrise/mods/26). Contributed huge improvements to the performance of the mod.
**coavins** - creator of [coavins damage meter](https://www.nexusmods.com/monsterhunterrise/mods/68) mod.
**[GreenComfyTea](https://github.com/GreenComfyTea)** - creator of the mod and it's main contributor.
**[cursey](https://github.com/cursey)** - creator of [REFramework](https://www.nexusmods.com/monsterhunterrise/mods/26), [REFramework Direct2D](https://www.nexusmods.com/monsterhunterrise/mods/134) plugin and [Monster Has HP Bar](https://www.nexusmods.com/monsterhunterrise/mods/43) mod, which provided an example on how to retrieve monster HP data.
**[praydog](https://github.com/praydog)** - creator of [REFramework](https://www.nexusmods.com/monsterhunterrise/mods/26). Contributed huge improvements to the performance of the mod.
**[coavins](https://github.com/coavins)** - creator of [coavins damage meter](https://www.nexusmods.com/monsterhunterrise/mods/68) mod.
**[lingsamuel](https://github.com/lingsamuel)** - creator of [Data Reporter and Buff Notification](https://www.nexusmods.com/monsterhunterrise/mods/1609) mod.
**neatnet** - Korean translation.
**s9000008, mcc1** - Traditional Chinese translation.
**etnAtker**, **sukiqwq** - Simplified Chinese translation.
**AKILAND0214** - Japanese translation.
**[neatnet](https://github.com/neatnet)** - Korean translation.
**[s9000008](https://github.com/s9000008)**, **[mcc1](https://github.com/mcc1)** - Traditional Chinese translation.
**[etnAtker](https://github.com/etnAtker)**, **[sukiqwq](https://github.com/sukiqwq)** - Simplified Chinese translation.
**[AKILAND0214](https://github.com/AKILAND0214)** - Japanese translation.
***
# Support

View File

@@ -272,9 +272,9 @@ log.info("[MHR Overlay] Loaded.");
local function update_modules(module_visibility_config, flow_state_name)
if module_visibility_config.small_monster_UI and config.current_config.small_monster_UI.enabled then
local success = pcall(small_monster_UI.update);
local success, error = pcall(small_monster_UI.update);
if not success then
error_handler.report("MHR_Overlay.update_modules", string.format("[%s] Small Monster UI Update Function threw an Exception", flow_state_name));
error_handler.report("MHR_Overlay.update_modules", string.format("[%s] Small Monster UI: %s", flow_state_name, tostring(error)));
end
end
@@ -285,39 +285,39 @@ local function update_modules(module_visibility_config, flow_state_name)
local highlighted_enabled = large_monster_UI_config.highlighted.enabled and module_visibility_config.large_monster_highlighted_UI;
if dynamic_enabled or static_enabled or highlighted_enabled then
local success = pcall(large_monster_UI.update, dynamic_enabled, static_enabled, highlighted_enabled);
local success, error = pcall(large_monster_UI.update, dynamic_enabled, static_enabled, highlighted_enabled);
if not success then
error_handler.report("MHR_Overlay.update_modules", string.format("[%s] Large Monster UI Update Function threw an Exception", flow_state_name));
error_handler.report("MHR_Overlay.update_modules", string.format("[%s] Large Monster UI: %s", flow_state_name, tostring(error)));
end
end
if config.current_config.damage_meter_UI.enabled and module_visibility_config.damage_meter_UI then
local success = pcall(damage_meter_UI.update);
local success, error = pcall(damage_meter_UI.update);
if not success then
error_handler.report("MHR_Overlay.update_modules", string.format("[%s] Damage Meter UI Update Function threw an Exception", flow_state_name));
error_handler.report("MHR_Overlay.update_modules", string.format("[%s] Damage Meter UI: %s", flow_state_name, tostring(error)));
end
end
if config.current_config.endemic_life_UI.enabled and module_visibility_config.endemic_life_UI then
local success = pcall(env_creature_UI.update);
local success, error = pcall(env_creature_UI.update);
if not success then
error_handler.report("MHR_Overlay.update_modules", string.format("[%s] Endemic Life UI Update Function threw an Exception", flow_state_name));
error_handler.report("MHR_Overlay.update_modules", string.format("[%s] Endemic Life UI: %s", flow_state_name, tostring(error)));
end
end
if config.current_config.buff_UI.enabled and module_visibility_config.buff_UI then
local success = pcall(buff_UI.update);
local success, error = pcall(buff_UI.update);
if not success then
error_handler.report("MHR_Overlay.update_modules", string.format("[%s] Buff UI Update Function threw an Exception", flow_state_name));
error_handler.report("MHR_Overlay.update_modules", string.format("[%s] Buff UI: %s", flow_state_name, tostring(error)));
end
end
end
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
local success = pcall(small_monster_UI.draw);
local success, error = pcall(small_monster_UI.draw);
if not success then
error_handler.report("MHR_Overlay.draw_modules", string.format("[%s] Small Monster UI Draw Function threw an Exception", flow_state_name));
error_handler.report("MHR_Overlay.draw_modules", string.format("[%s] Small Monster UI: %s", flow_state_name, tostring(error)));
end
end
@@ -328,44 +328,44 @@ local function draw_modules(module_visibility_config, flow_state_name)
local highlighted_enabled = large_monster_UI_config.highlighted.enabled and module_visibility_config.large_monster_highlighted_UI;
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, error = pcall(large_monster_UI.draw, dynamic_enabled, static_enabled, highlighted_enabled);
if not success then
error_handler.report("MHR_Overlay.draw_modules", string.format("[%s] Large Monster UI Draw Function threw an Exception", flow_state_name));
error_handler.report("MHR_Overlay.draw_modules", string.format("[%s] Large Monster UI: %s", flow_state_name, tostring(error)));
end
end
if config.current_config.time_UI.enabled and module_visibility_config.time_UI then
local success = pcall(time_UI.draw);
local success, error = pcall(time_UI.draw);
if not success then
error_handler.report("MHR_Overlay.draw_modules", string.format("[%s] Time UI Draw Function threw an Exception", flow_state_name));
error_handler.report("MHR_Overlay.draw_modules", string.format("[%s] Time UI: %s", flow_state_name, tostring(error)));
end
end
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, error = pcall(damage_meter_UI.draw);
if not success then
error_handler.report("MHR_Overlay.draw_modules", string.format("[%s] Damage Meter UI Draw Function threw an Exception", flow_state_name));
error_handler.report("MHR_Overlay.draw_modules", string.format("[%s] Damage Meter UI: %s", flow_state_name, tostring(error)));
end
end
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, error = pcall(env_creature_UI.draw);
if not success then
error_handler.report("MHR_Overlay.draw_modules", string.format("[%s] Endemic Life UI Draw Function threw an Exception", flow_state_name));
error_handler.report("MHR_Overlay.draw_modules", string.format("[%s] Endemic Life UI: %s", flow_state_name, tostring(error)));
end
end
if config.current_config.buff_UI.enabled and module_visibility_config.buff_UI then
local success = pcall(buff_UI.draw);
local success, error = pcall(buff_UI.draw);
if not success then
error_handler.report("MHR_Overlay.draw_modules", string.format("[%s] Buff UI Draw Function threw an Exception", flow_state_name));
error_handler.report("MHR_Overlay.draw_modules", string.format("[%s] Buff UI: %s", flow_state_name, tostring(error)));
end
end
if config.current_config.stats_UI.enabled and module_visibility_config.stats_UI then
local success = pcall(stats_UI.draw);
local success, error = pcall(stats_UI.draw);
if not success then
error_handler.report("MHR_Overlay.draw_modules", string.format("[%s] Stats UI Draw Function threw an Exception", flow_state_name));
error_handler.report("MHR_Overlay.draw_modules", string.format("[%s] Stats UI: %s", flow_state_name, tostring(error)));
end
end
end
@@ -381,30 +381,30 @@ local function update_UI()
local highlighted_enabled = large_monster_UI_config.highlighted.enabled and module_visibility_config.large_monster_highlighted_UI;
if dynamic_enabled or static_enabled or highlighted_enabled then
local success = pcall(large_monster_UI.update, dynamic_enabled, static_enabled, highlighted_enabled);
local success, error = pcall(large_monster_UI.update, dynamic_enabled, static_enabled, highlighted_enabled);
if not success then
error_handler.report("MHR_Overlay.update_loop", "[In Training Area] Large Monster UI Update Function threw an Exception");
error_handler.report("MHR_Overlay.update_UI", string.format("[In Training Area] Large Monster UI: %s", tostring(error)));
end
end
if config.current_config.damage_meter_UI.enabled and module_visibility_config.damage_meter_UI then
local success = pcall(damage_meter_UI.update);
local success, error = pcall(damage_meter_UI.update);
if not success then
error_handler.report("MHR_Overlay.update_modules", "[In Training Area] Damage Meter UI Update Function threw an Exception");
error_handler.report("MHR_Overlay.update_UI", string.format("[In Training Area] Damage Meter UI: %s", tostring(error)));
end
end
if config.current_config.endemic_life_UI.enabled and module_visibility_config.endemic_life_UI then
local success = pcall(env_creature_UI.update);
local success, error = pcall(env_creature_UI.update);
if not success then
error_handler.report("MHR_Overlay.update_loop", "[In Training Area] Endemic Life UI Update Function threw an Exception");
error_handler.report("MHR_Overlay.update_UI", string.format("[In Training Area] Endemic Life UI: %s", tostring(error)));
end
end
if config.current_config.buff_UI.enabled and module_visibility_config.buff_UI then
local success = pcall(buff_UI.update);
local success, error = pcall(buff_UI.update);
if not success then
error_handler.report("MHR_Overlay.update_loop", "[In Training Area] Buff UI Update Function threw an Exception");
error_handler.report("MHR_Overlay.update_UI", string.format("[In Training Area] Buff UI: %s", tostring(error)));
end
end
@@ -436,9 +436,9 @@ local function draw_loop()
local module_visibility_config = config.current_config.global_settings.module_visibility.in_lobby;
if config.current_config.stats_UI.enabled and module_visibility_config.stats_UI then
local success = pcall(stats_UI.draw);
local success, error = pcall(stats_UI.draw);
if not success then
error_handler.report("MHR_Overlay.main_loop", "[In Training Area] Stats UI Draw Function threw an Exception");
error_handler.report("MHR_Overlay.main_loop", string.format("[In Training Area] Stats UI: %s", tostring(error)));
end
end
@@ -452,37 +452,37 @@ local function draw_loop()
local highlighted_enabled = large_monster_UI_config.highlighted.enabled and module_visibility_config.large_monster_highlighted_UI;
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, error = pcall(large_monster_UI.draw, dynamic_enabled, static_enabled, highlighted_enabled);
if not success then
error_handler.report("MHR_Overlay.main_loop", "[In Training Area] Large Monster UI Draw Function threw an Exception");
error_handler.report("MHR_Overlay.main_loop", string.format("[In Training Area] Large Monster UI: %s", tostring(error)));
end
end
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, error = pcall(damage_meter_UI.draw);
if not success then
error_handler.report("MHR_Overlay.main_loop", "[In Training Area] Damage Meter UI Draw Function threw an Exception");
error_handler.report("MHR_Overlay.main_loop", string.format("[In Training Area] Damage Meter UI: %s", tostring(error)));
end
end
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, error = pcall(env_creature_UI.draw);
if not success then
error_handler.report("MHR_Overlay.main_loop", "[In Training Area] Endemic Life UI Draw Function threw an Exception");
error_handler.report("MHR_Overlay.main_loop", string.format("[In Training Area] Endemic Life UI: %s", tostring(error)));
end
end
if config.current_config.buff_UI.enabled and module_visibility_config.buff_UI then
local success = pcall(buff_UI.draw);
local success, error = pcall(buff_UI.draw);
if not success then
error_handler.report("MHR_Overlay.main_loop", "[In Training Area] Buff UI Draw Function threw an Exception");
error_handler.report("MHR_Overlay.main_loop", string.format("[In Training Area] Buff UI: %s", tostring(error)));
end
end
if config.current_config.stats_UI.enabled and module_visibility_config.stats_UI then
local success = pcall(stats_UI.draw);
local success, error = pcall(stats_UI.draw);
if not success then
error_handler.report("MHR_Overlay.main_loop", "[In Training Area] Stats UI Draw Function threw an Exception");
error_handler.report("MHR_Overlay.main_loop", string.format("[In Training Area] Stats UI: %s", tostring(error)));
end
end

View File

@@ -45,8 +45,8 @@ local package = package;
this.list = {
fireblight = nil,
waterblight = nil,
iceblight = nil,
thunderblight = nil,
iceblight = nil,
dragonblight = nil,
blastblight = nil,
minor_bubbleblight = nil,
@@ -57,6 +57,7 @@ this.list = {
deadly_poison = nil,
stun = nil,
paralysis = nil,
falling_asleep = nil,
sleep = nil,
defense_down = nil,
resistance_down = nil,
@@ -65,17 +66,52 @@ this.list = {
webbed = nil,
stench = nil,
leeched = nil,
whirlwind = nil,
-- whirlwind = nil,
bleeding = nil,
frenzy = nil,
frenzy_overcome = nil,
frenzy_infection = nil,
engulfed = nil,
frostblight = nil,
muck = nil
};
local ailments_type_name = "ailments";
this.keys = {
"fireblight",
"waterblight",
"thunderblight",
"iceblight",
"dragonblight",
"blastblight",
"minor_bubbleblight",
"major_bubbleblight",
"hellfireblight",
"bloodblight",
"frostblight",
"poison",
"deadly_poison",
"stun",
"paralysis",
"falling_asleep",
"sleep",
"defense_down",
"resistance_down",
"tremor",
"roar",
"webbed",
"stench",
"leeched",
-- "whirlwind",
"bleeding",
"engulfed",
"muck",
"frenzy",
"frenzy_overcome",
"frenzy_infection"
};
this.UI = nil;
local abnormal_statuses_type_name = "abnormal_statuses";
local frenzy_infected_duration = 121;
@@ -85,10 +121,10 @@ local player_quest_base_type_def = sdk.find_type_definition("snow.player.PlayerQ
local fire_duration_timer_field = player_quest_base_type_def:get_field("_FireLDurationTimer");
-- Waterblight
local water_duration_timer_field = player_quest_base_type_def:get_field("_WaterLDurationTimer");
-- Iceblight
local ice_duration_timer_field = player_quest_base_type_def:get_field("_IceLDurationTimer");
-- Thunderblight
local thunder_duration_timer_field = player_quest_base_type_def:get_field("_ThunderLDurationTimer");
-- Iceblight
local ice_duration_timer_field = player_quest_base_type_def:get_field("_IceLDurationTimer");
-- Dragonblight
local dragon_duration_timer_field = player_quest_base_type_def:get_field("_DragonLDurationTimer");
-- blastblight
@@ -149,12 +185,6 @@ local player_data_type_def = sdk.find_type_definition("snow.player.PlayerData");
local virus_overcome_buff_timer_field = player_data_type_def:get_field("_VirusOvercomeBuffTimer");
function this.update(player, player_data)
--local item_parameter = get_ref_item_parameter_method:call(singletons.player_manager);
--if item_parameter == nil then
-- error_handler.report("abnormal_statuses.update", "Failed to access Data: item_parameter");
-- return;
--end
-- Missing:
-- whirlwind?
-- Wind Pressure?
@@ -164,39 +194,63 @@ function this.update(player, player_data)
this.update_muck(player);
this.update_frenzy_infection(player);
buffs.update_generic_buff(this.list, ailments_type_name, "fireblight", this.get_abnormal_status_name, nil, nil, player, fire_duration_timer_field);
buffs.update_generic_buff(this.list, ailments_type_name, "fireblight", this.get_abnormal_status_name, nil, nil, player, fire_duration_timer_field);
buffs.update_generic_buff(this.list, ailments_type_name, "waterblight", this.get_abnormal_status_name, nil, nil, player, water_duration_timer_field);
buffs.update_generic_buff(this.list, ailments_type_name, "iceblight", this.get_abnormal_status_name, nil, nil, player, ice_duration_timer_field);
buffs.update_generic_buff(this.list, ailments_type_name, "thunderblight", this.get_abnormal_status_name, nil, nil, player, thunder_duration_timer_field);
buffs.update_generic_buff(this.list, ailments_type_name, "dragonblight", this.get_abnormal_status_name, nil, nil, player, dragon_duration_timer_field);
buffs.update_generic_buff(this.list, ailments_type_name, "blastblight", this.get_abnormal_status_name, nil, nil, player, bomb_duration_timer_field);
buffs.update_generic_buff(this.list, ailments_type_name, "hellfireblight", this.get_abnormal_status_name, nil, nil, player, oni_bomb_duration_timer_field);
buffs.update_generic_buff(this.list, ailments_type_name, "bloodblight", this.get_abnormal_status_name, nil, nil, player, mystery_debuff_timer_field);
this.update_abnormal_status("fireblight", nil, nil, player, fire_duration_timer_field);
this.update_abnormal_status("waterblight", nil, nil, player, water_duration_timer_field);
this.update_abnormal_status("thunderblight", nil, nil, player, thunder_duration_timer_field);
this.update_abnormal_status("iceblight", nil, nil, player, ice_duration_timer_field);
this.update_abnormal_status("dragonblight", nil, nil, player, dragon_duration_timer_field);
this.update_abnormal_status("blastblight", nil, nil, player, bomb_duration_timer_field);
this.update_abnormal_status("hellfireblight", nil, nil, player, oni_bomb_duration_timer_field);
this.update_abnormal_status("bloodblight", nil, nil, player, mystery_debuff_timer_field);
this.update_abnormal_status("frostblight", player, get_is_frozen_damage_method);
buffs.update_generic_buff(this.list, ailments_type_name, "stun", this.get_abnormal_status_name, nil, nil, player, stun_duration_timer_field);
buffs.update_generic_buff(this.list, ailments_type_name, "paralysis", this.get_abnormal_status_name, nil, nil, player, paralyze_duration_timer_field);
buffs.update_generic_buff(this.list, ailments_type_name, "falling_asleep", this.get_abnormal_status_name, nil, nil, player, get_sleep_movable_timer_method);
buffs.update_generic_buff(this.list, ailments_type_name, "defense_down", this.get_abnormal_status_name, nil, nil, player, defense_down_duration_timer_field);
buffs.update_generic_buff(this.list, ailments_type_name, "resistance_down", this.get_abnormal_status_name, nil, nil, player, resistance_down_duration_timer_field);
this.update_abnormal_status("stun", nil, nil, player, stun_duration_timer_field);
this.update_abnormal_status("paralysis", nil, nil, player, paralyze_duration_timer_field);
this.update_abnormal_status("falling_asleep", nil, nil, player, get_sleep_movable_timer_method);
this.update_abnormal_status("defense_down", nil, nil, player, defense_down_duration_timer_field);
this.update_abnormal_status("resistance_down", nil, nil, player, resistance_down_duration_timer_field);
buffs.update_generic_buff(this.list, ailments_type_name, "tremor", this.get_abnormal_status_name, nil, nil, player, quake_duration_timer_field);
buffs.update_generic_buff(this.list, ailments_type_name, "roar", this.get_abnormal_status_name, nil, nil, player, ear_duration_timer_field);
buffs.update_generic_buff(this.list, ailments_type_name, "webbed", this.get_abnormal_status_name, nil, nil, player, beto_duration_timer_field);
buffs.update_generic_buff(this.list, ailments_type_name, "stench", this.get_abnormal_status_name, nil, nil, player, stink_duration_timer_field);
buffs.update_generic_buff(this.list, ailments_type_name, "leeched", this.get_abnormal_status_name, nil, nil, player, blooding_enemy_timer_field, nil, nil, true);
buffs.update_generic_buff(this.list, ailments_type_name, "bleeding", this.get_abnormal_status_name, nil, nil, player, bleeding_debuff_timer_field);
this.update_abnormal_status("tremor", nil, nil, player, quake_duration_timer_field);
this.update_abnormal_status("roar", nil, nil, player, ear_duration_timer_field);
this.update_abnormal_status("webbed", nil, nil, player, beto_duration_timer_field);
this.update_abnormal_status("stench", nil, nil, player, stink_duration_timer_field);
this.update_abnormal_status("leeched", nil, nil, player, blooding_enemy_timer_field, true);
this.update_abnormal_status("bleeding", nil, nil, player, bleeding_debuff_timer_field);
this.update_abnormal_status("engulfed", player, get_is_vacuum_damage_method);
buffs.update_generic_buff(this.list, ailments_type_name, "frenzy", this.get_abnormal_status_name, nil, nil, player, virus_onset_timer_field);
buffs.update_generic_buff(this.list, ailments_type_name, "frenzy_overcome", this.get_abnormal_status_name, nil, nil, player_data, virus_overcome_buff_timer_field);
buffs.update_generic_buff(this.list, ailments_type_name, "engulfed", this.get_abnormal_status_name, player, get_is_vacuum_damage_method);
buffs.update_generic_buff(this.list, ailments_type_name, "frostblight", this.get_abnormal_status_name, player, get_is_frozen_damage_method);
this.update_abnormal_status("frenzy", nil, nil, player, virus_onset_timer_field);
this.update_abnormal_status("frenzy_overcome", nil, nil, player_data, virus_overcome_buff_timer_field);
this.update_sleep(player);
end
function this.update_abnormal_status(key, value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
return buffs.update_generic_buff(this.list, config.current_config.buff_UI.filter.abnormal_statuses, this.get_abnormal_status_name,
abnormal_statuses_type_name, key, value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints);
end
function this.update_generic(key, level, timer)
return buffs.update_generic(this.list, this.get_abnormal_status_name, abnormal_statuses_type_name, key, level, timer);
end
function this.apply_filter(key)
return buffs.apply_filter(this.list, config.current_config.buff_UI.filter.abnormal_statuses, key);
end
function this.update_poison(player)
local cached_config = config.current_config.buff_UI.filter.abnormal_statuses;
if not cached_config.poison
and not cached_config.deadly_poison then
if this.apply_filter("poison") then
return;
end
if this.apply_filter("deadly_poison") then
return;
end
end
local poison_level = poison_level_field:get_data(player);
if poison_level == nil then
error_handler.report("abnormal_statuses.update_poison", "Failed to access Data: poison_level");
@@ -210,15 +264,28 @@ function this.update_poison(player)
end
if poison_level == 1 then
buffs.update_generic_buff(this.list, ailments_type_name, "poison", this.get_abnormal_status_name, player, poison_duration_timer_field);
this.update_abnormal_status("poison", nil, nil, player, poison_duration_timer_field);
this.list.deadly_poison = nil;
else
buffs.update_generic_buff(this.list, ailments_type_name, "deadly_poison", this.get_abnormal_status_name, player, poison_duration_timer_field);
this.update_abnormal_status("deadly_poison", nil, nil, player, poison_duration_timer_field);
this.list.poison = nil;
end
end
function this.update_bubbleblight(player)
local cached_config = config.current_config.buff_UI.filter.abnormal_statuses;
if not cached_config.minor_bubbleblight
and not cached_config.major_bubbleblight then
if this.apply_filter("minor_bubbleblight") then
return;
end
if this.apply_filter("major_bubbleblight") then
return;
end
end
local bubble_type = bubble_type_field:get_data(player);
if bubble_type == nil then
error_handler.report("abnormal_statuses.update_bubbleblight", "Failed to access Data: bubble_Type");
@@ -232,15 +299,19 @@ function this.update_bubbleblight(player)
end
if bubble_type == 1 then
buffs.update_generic_buff(this.list, ailments_type_name, "minor_bubbleblight", this.get_abnormal_status_name, player, bubble_damage_timer_field);
this.update_abnormal_status("minor_bubbleblight", nil, nil, player, bubble_damage_timer_field);
this.list.major_bubbleblight = nil;
else
buffs.update_generic_buff(this.list, ailments_type_name, "major_bubbleblight", this.get_abnormal_status_name, player, bubble_damage_timer_field);
this.update_abnormal_status("major_bubbleblight", nil, nil, player, bubble_damage_timer_field);
this.list.minor_bubbleblight = nil;
end
end
function this.update_muck(player)
if this.apply_filter("muck") then
return;
end
local is_mud_damage = get_is_mud_damage_method:call(player);
if is_mud_damage == nil then
error_handler.report("abnormal_statuses.update_generic_boolean_value_method", "Failed to access Data: is_mud_damage");
@@ -258,10 +329,14 @@ function this.update_muck(player)
return;
end
buffs.update_generic(ailments_type_name, "muck", this.get_abnormal_status_name);
this.update_generic("muck");
end
function this.update_frenzy_infection(player)
if this.apply_filter("frenzy_infection") then
return;
end
local virus_accumulator_value = virus_accumulator_field:get_data(player);
if virus_accumulator_value == nil then
error_handler.report("abnormal_statuses.update_frenzy_infection", "Failed to access Data: virus_accumulator_value");
@@ -281,28 +356,38 @@ function this.update_frenzy_infection(player)
local timer = frenzy_infected_duration - (virus_accumulator_value + virus_timer / 60);
buffs.update_generic(this.list, ailments_type_name, "frenzy_infection", this.get_abnormal_status_name, 1, timer, frenzy_infected_duration);
this.update_generic("frenzy_infection", 1, timer);
end
function this.update_sleep(player)
if this.apply_filter("sleep") then
return;
end
if this.list.falling_asleep ~= nil then
this.list.sleep = nil;
return;
end
buffs.update_generic_buff(this.list, ailments_type_name, "sleep", this.get_abnormal_status_name, nil, nil, player, sleep_duration_timer_field);
this.update_abnormal_status("sleep", nil, nil, player, sleep_duration_timer_field);
end
function this.init_names()
for abnormal_status_key, debuff in pairs(this.list) do
debuff.name = this.get_abnormal_status_name(abnormal_status_key);
function this.init_all_UI()
for abnormal_status_key, abnormal_status in pairs(this.list) do
buffs.init_UI(abnormal_status);
end
end
function this.get_abnormal_status_name(abnormal_status_key)
local abnormal_status_name = language.current_language.ailments[abnormal_status_key];
function this.init_names()
for abnormal_status_key, abnormal_status in pairs(this.list) do
abnormal_status.name = this.get_abnormal_status_name(abnormal_status_key);
end
end
function this.get_abnormal_status_name(key)
local abnormal_status_name = language.current_language.ailments[key];
if abnormal_status_name == nil then
return abnormal_status_key;
return key;
end
return abnormal_status_name;

View File

@@ -52,40 +52,9 @@ local os = os;
local ValueType = ValueType;
local package = package;
--[[
TODO:
[x] DONE! Wirebug-related skills
[x] DONE! More Dango skills
[x] DONE! Weapon buffs
[x] DONE! Horn music
[x] DONE! abnormal_statuses: Immunity
[x] DONE! item_buffs: Stinkmink
[x] DONE! rampage skills: Chameleos Soul
[x] DONE! skills: powder mantle
[x] DONE! skills: embolden
[x] DONE! skills: strife
[x] DONE! skills: berserk
[x] DONE! skills: dragon conversion
[x] DONE! abnormal_statuses: Pre-Sleep
[x] DONE! skills: charge master
[x] DONE! endemic_life_buffs: Red, Yellow Lampsquid
[x] DONE! weapon skills - Arc Shot: Affinity, Arc Shot: Brace
[x] DONE! Demon Ammo, Armor Ammo
More otomo skills
Add duration detection to skills
Add duration detection to otomo moves
Add duration detection to dango skills
Add duration detection to rampage skills
Add duration detection to endemic life buffs
[x] WONT IMPLEMENT! skills: Furious Buildup
[x] WONT IMPLEMENT! skills: frostcraft
[x] COULDNT FIND! skills: defiance
]]
local player_manager_type_def = sdk.find_type_definition("snow.player.PlayerManager");
local get_player_method = player_manager_type_def:get_method("getPlayer");
local find_master_player_method = player_manager_type_def:get_method("findMasterPlayer");
local get_ref_item_parameter_method = player_manager_type_def:get_method("get_RefItemParameter");
local player_base_type_def = find_master_player_method:get_return_type();
local get_player_data_method = player_base_type_def:get_method("get_PlayerData");
@@ -122,7 +91,7 @@ function this.new(type, key, name, level, duration)
buff.timer = duration;
buff.duration = duration;
buff.is_active = true;
buff.is_visible = true;
buff.timer_percentage = 0;
@@ -142,20 +111,37 @@ function this.init_buffs()
this.list = {};
end
function this.init_all_UI()
abnormal_statuses.init_all_UI();
item_buffs.init_all_UI();
endemic_life_buffs.init_all_UI();
melody_effects.init_all_UI();
dango_skills.init_all_UI();
rampage_skills.init_all_UI();
skills.init_all_UI();
weapon_skills.init_all_UI();
otomo_moves.init_all_UI();
misc_buffs.init_all_UI();
end
function this.init_UI(buff)
local cached_config = config.current_config.buff_UI;
local cached_config = config.current_config.buff_UI[buff.type];
buff.buff_UI = buff_UI_entity.new(cached_config.bar, cached_config.name_label, cached_config.timer_label);
end
function this.init_names()
abnormal_statuses.init_names();
item_buffs.init_names();
endemic_life_buffs.init_names();
melody_effects.init_names();
dango_skills.init_names();
rampage_skills.init_names();
skills.init_names();
weapon_skills.init_names();
otomo_moves.init_names();
misc_buffs.init_names();
end
local tere = {};
function this.update()
if not config.current_config.buff_UI.enabled then
return;
@@ -188,47 +174,40 @@ function this.update()
local weapon_type = player_weapon_type_field:get_data(master_player);
if weapon_type == nil then
error_handler.report("skills.update", "Failed to access Data: weapon_type");
error_handler.report("buffs.update", "Failed to access Data: weapon_type");
return;
end
if singletons.player_manager == nil then
error_handler.report("buffs.update", "Failed to access Data: player_manager");
return;
end
local item_parameter = get_ref_item_parameter_method:call(singletons.player_manager);
if item_parameter == nil then
error_handler.report("buffs.update", "Failed to access Data: item_parameter");
return;
end
local is_player_lobby_base = master_player:get_type_definition() == player_lobby_base_type_def;
item_buffs.update(master_player_data);
otomo_moves.update(master_player_data);
item_buffs.update(master_player_data, item_parameter);
rampage_skills.update(master_player_data);
otomo_moves.update(master_player_data);
if not is_player_lobby_base then
skills.update(master_player, master_player_data, weapon_type);
dango_skills.update(master_player, master_player_data);
endemic_life_buffs.update(master_player, master_player_data);
abnormal_statuses.update(master_player, master_player_data);
endemic_life_buffs.update(master_player, master_player_data);
dango_skills.update(master_player, master_player_data);
skills.update(master_player, master_player_data, weapon_type);
weapon_skills.update(master_player, master_player_data, weapon_type);
misc_buffs.update(master_player, master_player_data);
misc_buffs.update(master_player, master_player_data, item_parameter);
end
-- xy = "";
-- local fields = master_player_data:get_type_definition():get_fields();
-- for i = 1, 999 do
-- if fields[i] ~= nil then
-- local value = fields[i]:get_data(master_player_data);
-- if value ~= nil then
-- pcall(function()
-- if tere[fields[i]] == nil then
-- tere[fields[i]] = value;
-- elseif not utils.number.is_equal(value, tere[fields[i]]) then
-- xy = string.format("%s%s: %s\n", xy, fields[i]:get_name(), tostring(value));
-- end
-- end);
-- end
-- end
-- end
end
function this.update_timer(buff, timer, duration)
function this.update_timer(buff, timer)
buff.is_visible = true;
if timer == nil then
return;
end
@@ -237,10 +216,8 @@ function this.update_timer(buff, timer, duration)
timer = 0;
end
duration = duration or timer;
if duration > buff.duration then
buff.duration = duration;
if timer > buff.duration or timer > buff.timer then
buff.duration = timer;
end
local minutes_left = math.floor(timer / 60);
@@ -254,14 +231,17 @@ function this.update_timer(buff, timer, duration)
end
end
function this.update_generic_buff(buff_list, buff_type, buff_key, get_name_function,
function this.update_generic_buff(buff_list, filter_list, get_name_function,
buff_type, buff_key,
value_owner, value_holder,
timer_owner, timer_holder,
duration_owner, duration_holder,
is_infinite, minimal_value, level_breakpoints)
if this.apply_filter(buff_list, filter_list, buff_key) then
return;
end
if timer_owner == nil then timer_owner = value_owner; end
if duration_owner == nil then duration_owner = value_owner; end
if minimal_value == nil then minimal_value = 1; end
local level = 1;
@@ -327,41 +307,62 @@ function this.update_generic_buff(buff_list, buff_type, buff_key, get_name_funct
end
end
local duration = nil;
if duration_holder ~= nil then
if utils.type.is_REField(duration_holder) then
duration = duration_holder:get_data(duration_owner);
else
duration = duration_holder:call(duration_owner);
end
if duration == nil then
error_handler.report("buffs.update_generic_number", string.format("Failed to access Data: %s_duration", buff_key));
return;
end
end
return this.update_generic(buff_list, buff_type, buff_key, get_name_function, level, timer, duration);
return this.update_generic(buff_list, get_name_function, buff_type, buff_key, level, timer);
end
function this.update_generic(buff_list, buff_type, buff_key, get_name_function, level, timer, duration)
duration = duration or timer;
function this.update_generic(buff_list, get_name_function, buff_type, buff_key, level, timer)
level = level or 1;
local buff = buff_list[buff_key];
if buff == nil then
local name = get_name_function(buff_key);
buff = this.new(buff_type, buff_key, name, level, duration);
buff = this.new(buff_type, buff_key, name, level, timer);
buff_list[buff_key] = buff;
else
if buff.level ~= level then
buff.duration = timer;
end
buff.level = level;
this.update_timer(buff, timer, duration);
this.update_timer(buff, timer);
end
return buff;
end
function this.apply_filter(buff_list, filter_list, buff_key)
if filter_list[buff_key] then
return false;
end
local buff = buff_list[buff_key];
if buff == nil then
return true;
end
if not buff.is_visible then
return true;
end
if buff.is_infinite then
buff_list[buff_key] = nil;
return true;
end
time.new_delay_timer(function()
local _buff = buff_list[buff_key];
if _buff ~= nil and not _buff.is_visible then
buff_list[buff_key] = nil;
end
end, buff.timer);
buff.is_visible = false;
return true;
end
function this.draw(buff, buff_UI, position_on_screen, opacity_scale)
buff_UI_entity.draw(buff, buff_UI, position_on_screen, opacity_scale);
end

View File

@@ -8,6 +8,7 @@ local players;
local utils;
local language;
local error_handler;
local time;
local sdk = sdk;
local tostring = tostring;
@@ -44,17 +45,30 @@ local package = package;
this.list = {
dango_adrenaline = nil,
dango_booster = nil,
dango_connector = nil,
dango_defender = nil,
dango_flyer = nil,
dango_glutton = nil,
dango_hunter = nil,
dango_insurance = nil,
dango_insurance_defense_up = nil,
dango_glutton = nil,
dango_flyer = nil,
dango_defender = nil,
dango_hunter = nil,
dango_connector = nil,
super_recovery_dango = nil
};
local dango_ids = {
this.keys = {
"dango_adrenaline",
"dango_booster",
"dango_connector",
"dango_defender",
"dango_flyer",
"dango_glutton",
"dango_hunter",
"dango_insurance",
"dango_insurance_defense_up",
"super_recovery_dango"
};
local dango_skill_ids = {
-- dango_polisher = 1,
-- dango_rider = 2,
dango_adrenaline = 3,
@@ -84,7 +98,7 @@ local dango_ids = {
-- dango_trainer = 27,
dango_booster = 28,
-- dango_feet = 29,
-- dango_bulker = 30,
dango_bulker = 30,
dango_insurance = 31,
-- dango_reviver = 32,
-- dango_summoner = 33,
@@ -113,24 +127,21 @@ local dango_ids = {
super_recovery_dango = 56
};
this.is_dango_adrenaline_active = false;
local dango_skills_type_name = "dango_skills";
local dango_bulker_attack_up = 15;
local previous_super_recovery_dango_timer = 0;
local player_manager_type_def = sdk.find_type_definition("snow.player.PlayerManager");
local get_player_data_method = player_manager_type_def:get_method("get_PlayerData");
local get_player_skill_method = player_manager_type_def:get_method("get_PlayerSkill");
local get_ref_item_parameter_method = player_manager_type_def:get_method("get_RefItemParameter");
local player_user_data_item_parameter_type_def = get_ref_item_parameter_method:get_return_type();
local has_anyone_kitchen_skill_in_quest_method = player_manager_type_def:get_method("hasAnyoneKitchenSkillInQuest");
local player_data_type_def = sdk.find_type_definition("snow.player.PlayerData");
-- Dango Defender
local is_enable_kitchen_skill_048_reduce_method = player_data_type_def:get_field("_IsEnable_KitchenSkill048_Reduce");
local is_enable_kitchen_skill_048_reduce_field = player_data_type_def:get_field("_IsEnable_KitchenSkill048_Reduce");
-- Dango Booster
local kitchen_skill_027_timer_field = player_data_type_def:get_field("_KitchenSkill027Timer");
-- Dango Glutton
@@ -146,17 +157,14 @@ local kitchen_skill_054_timer_field = player_data_type_def:get_field("_KitchenSk
local player_base_type_def = sdk.find_type_definition("snow.player.PlayerBase");
-- Dango Adrenaline
local is_kitchen_skill_predicament_powerup_method = player_base_type_def:get_method("isKitchenSkillPredicamentPowerUp");
-- local is_kitchen_skill_predicament_powerup_method = player_base_type_def:get_method("isKitchenSkillPredicamentPowerUp");
-- Dango Flyer
local get_is_kitchen_skill_wire_stop_heal_spd_method = player_base_type_def:get_method("get_IsKitchenSkill_WireStop_HealSpd");
local get_is_kitchen_skill_wire_stop_regene_method = player_base_type_def:get_method("get_IsKitchenSkill_WireStop_Regene");
-- Super Recovery Dango
local get_kitchen_skill_surume_regene_timer_method = player_base_type_def:get_method("get_KitchenSkill_Surume_RegeneTimer");
local player_quest_base_type_def = sdk.find_type_definition("snow.player.PlayerQuestBase");
local player_skill_list_type_def = sdk.find_type_definition("snow.player.PlayerSkillList");
local has_kitchen_skill_method = player_skill_list_type_def:get_method("hasKitchenSkill");
local data_shortcut_type_def = sdk.find_type_definition("snow.data.DataShortcut");
local get_name_method = data_shortcut_type_def:get_method("getName(snow.data.DataDef.PlKitchenSkillId)");
@@ -165,18 +173,7 @@ local quest_manager_type_def = sdk.find_type_definition("snow.QuestManager");
local flag_cat_skill_insurance_field = quest_manager_type_def:get_field("_FlagCatSkillInsurance");
local is_cat_skill_insurance_method = quest_manager_type_def:get_method("isCatSkillInsurance");
local system_array_type_def = sdk.find_type_definition("System.Array");
local get_length_method = system_array_type_def:get_method("get_Length");
local get_value_method = system_array_type_def:get_method("GetValue(System.Int32)");
function this.update(player, player_data)
local item_parameter = get_ref_item_parameter_method:call(singletons.player_manager);
if item_parameter == nil then
error_handler.report("dango_skills.update", "Failed to access Data: item_parameter");
return;
end
this.update_dango_adrenaline();
this.update_dango_hunter(player_data);
this.update_dango_insurance();
@@ -184,29 +181,44 @@ function this.update(player, player_data)
this.update_dango_flyer(player);
this.update_super_recovery_dango(player);
buffs.update_generic_buff(this.list, dango_skills_type_name, "dango_defender", this.get_dango_name,
player_data, is_enable_kitchen_skill_048_reduce_method, nil, nil, nil, nil, true);
this.update_dango_skill("dango_booster", nil, nil, player_data, kitchen_skill_027_timer_field);
this.update_dango_skill("dango_defender", player_data, is_enable_kitchen_skill_048_reduce_field, nil, nil, true);
this.update_dango_skill("dango_glutton", nil, nil, player_data, kitchen_skill_045_timer_field);
this.update_dango_skill("dango_connector", nil, nil, player_data, kitchen_skill_054_timer_field);
end
buffs.update_generic_buff(this.list, dango_skills_type_name, "dango_booster", this.get_dango_name,
nil, nil, player_data, kitchen_skill_027_timer_field);
function this.update_dango_skill(key, value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
return buffs.update_generic_buff(this.list, config.current_config.buff_UI.filter.dango_skills, this.get_dango_skill_name,
dango_skills_type_name, key,
value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints);
end
buffs.update_generic_buff(this.list, dango_skills_type_name, "dango_glutton", this.get_dango_name,
nil, nil, player_data, kitchen_skill_045_timer_field);
function this.update_generic(key, level, timer)
return buffs.update_generic(this.list, this.get_dango_skill_name, dango_skills_type_name, key, level, timer);
end
buffs.update_generic_buff(this.list, dango_skills_type_name, "dango_connector", this.get_dango_name,
nil, nil, player_data, kitchen_skill_054_timer_field);
function this.apply_filter(key)
return buffs.apply_filter(this.list, config.current_config.buff_UI.filter.dango_skills, key);
end
function this.update_dango_adrenaline()
if this.apply_filter("dango_adrenaline") then
return;
end
if not this.is_dango_adrenaline_active then
this.list.dango_adrenaline = nil;
return;
end
buffs.update_generic(this.list, dango_skills_type_name, "dango_adrenaline", this.get_dango_name);
this.update_generic("dango_adrenaline");
end
function this.update_dango_insurance()
if this.apply_filter("dango_insurance") then
return;
end
if singletons.player_manager == nil then
error_handler.report("dango_skills.update_dango_insurance", "Failed to access Data: player_manager");
return;
@@ -217,46 +229,7 @@ function this.update_dango_insurance()
return;
end
local player_skill_list_array = get_player_skill_method:call(singletons.player_manager);
if player_skill_list_array == nil then
error_handler.report("dango_skills.update_dango_insurance", "Failed to access Data: player_skill_list_array");
return;
end
local player_skill_list_array_length = get_length_method:call(player_skill_list_array);
if player_skill_list_array_length == nil then
error_handler.report("dango_skills.update_dango_insurance", "Failed to access Data: player_skill_array_list_length");
return;
end
local length = player_skill_list_array_length - 1;
local has_insurance_skill = false;
for player_id = 0, length do
if players.list[player_id] == nil then
goto continue;
end
local player_skill_list = get_value_method:call(player_skill_list_array, player_id);
if player_skill_list_array_length == nil then
error_handler.report("dango_skills.update_dango_insurance", "Failed to access Data: player_skill_list No. " .. tostring(player_id));
goto continue;
end
local kitchen_skill = has_kitchen_skill_method:call(player_skill_list, dango_ids.dango_insurance);
if kitchen_skill == nil then
error_handler.report("dango_skills.update_dango_insurance", "Failed to access Data: kitchen_skill No. " .. tostring(player_id));
goto continue;
end
if kitchen_skill then
has_insurance_skill = true;
break;
end
::continue::
end
local has_insurance_skill = has_anyone_kitchen_skill_in_quest_method:call(singletons.player_manager, dango_skill_ids.dango_insurance);
local flag_cat_skill_insurance = flag_cat_skill_insurance_field:get_data(singletons.quest_manager);
if flag_cat_skill_insurance == nil then
@@ -275,10 +248,14 @@ function this.update_dango_insurance()
return;
end
buffs.update_generic(this.list, dango_skills_type_name, "dango_insurance", this.get_dango_name, 1);
this.update_generic("dango_insurance");
end
function this.update_dango_insurance_defense_up(player_data)
if this.apply_filter("dango_insurance_defense_up") then
return;
end
local level = 3;
local insurance_def_up_lv3 = kitchen_skill_insurance_def_up_lv3_field:get_data(player_data);
@@ -303,10 +280,14 @@ function this.update_dango_insurance_defense_up(player_data)
level = 4;
end
buffs.update_generic(this.list, dango_skills_type_name, "dango_insurance_defense_up", this.get_dango_name, level);
this.update_generic("dango_insurance_defense_up", level);
end
function this.update_dango_flyer(player)
if this.apply_filter("dango_flyer") then
return;
end
local level = 4;
local is_kitchen_skill_wire_stop_regene = get_is_kitchen_skill_wire_stop_regene_method:call(player);
@@ -331,19 +312,22 @@ function this.update_dango_flyer(player)
level = 3;
end
buffs.update_generic(this.list, dango_skills_type_name, "dango_flyer", this.get_dango_name, level);
this.update_generic("dango_flyer", level);
end
function this.update_dango_hunter(player_data)
local dango_hunter_buff = buffs.update_generic_buff(this.list, dango_skills_type_name, "dango_hunter", this.get_dango_name,
nil, nil, player_data, kitchen_skill_051_atk_up_timer_field);
local dango_hunter_buff = this.update_dango_skill("dango_hunter", nil, nil, player_data, kitchen_skill_051_atk_up_timer_field);
if dango_hunter_buff then
if dango_hunter_buff ~= nil then
dango_hunter_buff.level = 4;
end
end
function this.update_super_recovery_dango(player)
if this.apply_filter("super_recovery_dango") then
return;
end
local kitchen_skill_surume_regene_timer = get_kitchen_skill_surume_regene_timer_method:call(player);
if kitchen_skill_surume_regene_timer == nil then
error_handler.report("dango_skills.update_super_recovery_dango", "Failed to access Data: kitchen_skill_surume_regene_timer");
@@ -351,31 +335,43 @@ function this.update_super_recovery_dango(player)
end
if utils.number.is_equal(kitchen_skill_surume_regene_timer, 0)
and utils.number.is_equal(previous_super_recovery_dango_timer, 0) then
and utils.number.is_equal(previous_super_recovery_dango_timer, 0) then
this.list.super_recovery_dango = nil;
return;
end
previous_super_recovery_dango_timer = kitchen_skill_surume_regene_timer;
buffs.update_generic(this.list, dango_skills_type_name, "super_recovery_dango", this.get_dango_name);
this.update_generic("super_recovery_dango");
end
function this.get_dango_name(dango_key)
if dango_ids[dango_key] == nil then
function this.init_all_UI()
for dango_skill_key, dango_skill in pairs(this.list) do
buffs.init_UI(dango_skill);
end
end
local dango_skill_name = language.current_language.dango_skills[dango_key];
function this.init_names()
for dango_skill_key, dango_skill in pairs(this.list) do
dango_skill.name = this.get_dango_skill_name(dango_skill_key);
end
end
function this.get_dango_skill_name(key)
local dango_skill_id = dango_skill_ids[key];
if dango_skill_id == nil then
local dango_skill_name = language.current_language.dango_skills[key];
if dango_skill_name == nil then
return dango_key;
return key;
end
return dango_skill_name;
end
local dango_skill_name = get_name_method:call(nil, dango_ids[dango_key]);
local dango_skill_name = get_name_method:call(nil, dango_skill_id);
if dango_skill_name == nil then
error_handler.report("dango_skills.get_dango_name", string.format("Failed to access Data: %s_name", dango_key));
return dango_key;
error_handler.report("dango_skills.get_dango_name", string.format("Failed to access Data: %s_name", key));
return key;
end
return dango_skill_name;
@@ -390,6 +386,7 @@ function this.init_dependencies()
players = require("MHR_Overlay.Damage_Meter.players");
language = require("MHR_Overlay.Misc.language");
error_handler = require("MHR_Overlay.Misc.error_handler");
time = require("MHR_Overlay.Game_Handler.time");
end

View File

@@ -10,6 +10,7 @@ local language;
local error_handler;
local env_creature;
local item_buffs;
local time;
local sdk = sdk;
local tostring = tostring;
@@ -44,33 +45,38 @@ local ValueType = ValueType;
local package = package;
this.list = {
cutterfly = nil,
clothfly = nil,
stinkmink = nil,
butterflame = nil,
-- peepersects = nil,
cutterfly = nil,
stinkmink = nil,
ruby_wirebug = nil,
gold_wirebug = nil,
red_lampsquid = nil,
yellow_lampsquid = nil
};
this.keys = {
"cutterfly",
"clothfly",
"butterflame",
-- "peepersects",
"stinkmink",
"ruby_wirebug",
"gold_wirebug",
"red_lampsquid",
"yellow_lampsquid"
};
this.peepersects_duration = 90;
this.butterflame_attack_up = 25;
local endemic_life_buffs_type_name = "endemic_life_buffs";
local marionette_mode_types = { "ruby_wirebug", "gold_wirebug" };
local butterflame_attack_up = 25;
local player_manager_type_def = sdk.find_type_definition("snow.player.PlayerManager");
local get_player_data_method = player_manager_type_def:get_method("get_PlayerData");
local get_ref_item_parameter_method = player_manager_type_def:get_method("get_RefItemParameter");
local player_user_data_item_parameter_type_def = get_ref_item_parameter_method:get_return_type();
local demondrug_atk_up_field = player_user_data_item_parameter_type_def:get_field("_DemondrugAtkUp");
local player_data_type_def = sdk.find_type_definition("snow.player.PlayerData");
-- Cutterfly
local crit_up_ec_second_timer_field = player_data_type_def:get_field("_CritUpEcSecondTimer");
@@ -100,25 +106,41 @@ function this.update(player, player_data, item_parameter)
this.update_ruby_and_gold_wirebugs(player, player_data);
this.update_butterflame(player_data);
buffs.update_generic_buff(this.list, endemic_life_buffs_type_name, "cutterfly", this.get_endemic_life_name,
nil, nil, player_data, crit_up_ec_second_timer_field);
this.update_endemic_life_buff("cutterfly", nil, nil, player_data, crit_up_ec_second_timer_field);
this.update_endemic_life_buff("clothfly", nil, nil, player_data, def_up_buff_second_rate_timer_field);
this.update_endemic_life_buff("stinkmink", nil, nil, player_data, lead_enemy_timer_field);
this.update_endemic_life_buff("red_lampsquid", nil, nil, player_data, atk_up_ec_second_timer_field);
this.update_endemic_life_buff("yellow_lampsquid", nil, nil, player_data, def_up_ec_second_timer_field);
end
buffs.update_generic_buff(this.list, endemic_life_buffs_type_name, "clothfly", this.get_endemic_life_name,
nil, nil, player_data, def_up_buff_second_rate_timer_field);
buffs.update_generic_buff(this.list, endemic_life_buffs_type_name, "stinkmink", this.get_endemic_life_name,
nil, nil, player_data, lead_enemy_timer_field);
buffs.update_generic_buff(this.list, endemic_life_buffs_type_name, "red_lampsquid", this.get_endemic_life_name,
nil, nil, player_data, atk_up_ec_second_timer_field);
buffs.update_generic_buff(this.list, endemic_life_buffs_type_name, "yellow_lampsquid", this.get_endemic_life_name,
nil, nil, player_data, def_up_ec_second_timer_field);
function this.update_endemic_life_buff(key, value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
return buffs.update_generic_buff(this.list, config.current_config.buff_UI.filter.endemic_life_buffs, this.get_endemic_life_name,
endemic_life_buffs_type_name, key,
value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
end
function this.update_generic(key, level, timer)
return buffs.update_generic(this.list, this.get_endemic_life_name, endemic_life_buffs_type_name, key, level, timer);
end
function this.apply_filter(key)
return buffs.apply_filter(this.list, config.current_config.buff_UI.filter.endemic_life_buffs, key);
end
function this.update_ruby_and_gold_wirebugs(player, player_data)
local cached_config = config.current_config.buff_UI.filter.endemic_life_buffs;
if not cached_config.ruby_wirebug
and not cached_config.gold_wirebug then
if this.apply_filter("ruby_wirebug") then
return;
end
if this.apply_filter("gold_wirebug") then
return;
end
end
local marionette_mode_type = get_marionette_mode_type_method:call(player);
if marionette_mode_type == nil then
error_handler.report("endemic_life_buffs.update_ruby_and_gold_wirebugs", "Failed to access Data: marionette_mode_type");
@@ -135,68 +157,50 @@ function this.update_ruby_and_gold_wirebugs(player, player_data)
end
local endemic_life_buff_key = marionette_mode_types[marionette_mode_type];
buffs.update_generic_buff(this.list, endemic_life_buffs_type_name, endemic_life_buff_key, this.get_endemic_life_name,
nil, nil, player_data, wirebug_powerup_timer_field);
this.update_endemic_life_buff(endemic_life_buff_key, nil, nil, player_data, wirebug_powerup_timer_field);
end
function this.update_butterflame(player_data)
if this.apply_filter("butterflame") then
return;
end
local atk_up_buff_second = atk_up_buff_second_field:get_data(player_data);
if atk_up_buff_second == nil then
error_handler.report("item_buffs.update_butterflame", "Failed to access Data: atk_up_buff_second");
return;
end
if atk_up_buff_second ~= butterflame_attack_up then
if atk_up_buff_second ~= this.butterflame_attack_up then
this.list.butterflame = nil;
return;
end
buffs.update_generic_buff(this.list, endemic_life_buffs_type_name, "butterflame", this.get_endemic_life_name,
nil, nil, player_data, atk_up_buff_second_timer_field);
this.update_endemic_life_buff("butterflame", nil, nil, player_data, atk_up_buff_second_timer_field);
end
function this.update_peepersects(player_data)
local stamina_up_buff_second_timer = stamina_up_buff_second_timer_field:get_data(player_data);
if stamina_up_buff_second_timer == nil then
error_handler.report("item_buffs.update_peepersects", "Failed to access Data: stamina_up_buff_second_timer");
return;
function this.init_all_UI()
for endemic_life_key, endemic_life in pairs(this.list) do
buffs.init_UI(endemic_life);
end
if utils.number.is_equal(stamina_up_buff_second_timer, 0) then
this.list.peepersects = nil;
return;
end
local timer = stamina_up_buff_second_timer / 60;
local peepersects_buff = this.list.peepersects;
if peepersects_buff == nil and item_buffs.list.dash_juice ~= nil and timer <= item_buffs.list.dash_juice.timer then
return;
end
if peepersects_buff == nil
or (peepersects_buff ~= nil and timer > peepersects_buff.timer) then
local timer_percentage = timer / this.peepersects_duration;
if timer_percentage < 0.95 or timer_percentage > 1.05 then
this.list.peepersects = nil;
return;
end
end
buffs.update_generic(this.list, endemic_life_buffs_type_name, "peepersects", this.get_endemic_life_name, 1, timer, this.peepersects_duration);
end
function this.get_endemic_life_name(endemic_life_buff_key)
function this.init_names()
for endemic_life_key, endemic_life in pairs(this.list) do
endemic_life.name = this.get_endemic_life_name(endemic_life_key);
end
end
function this.get_endemic_life_name(key)
if singletons.message_manager == nil then
error_handler.report("endemic_life_buffs.get_endemic_life_name", "Failed to access Data: message_manager");
return endemic_life_buff_key;
return key;
end
local endemic_life_name = get_env_creature_name_message_method:call(singletons.message_manager, env_creature.creature_ids[endemic_life_buff_key]);
local endemic_life_name = get_env_creature_name_message_method:call(singletons.message_manager, env_creature.creature_ids[key]);
if endemic_life_name == nil then
error_handler.report("endemic_life_buffs.get_endemic_life_name", string.format("Failed to access Data: %s_name", endemic_life_buff_key));
return endemic_life_buff_key;
error_handler.report("endemic_life_buffs.get_endemic_life_name", string.format("Failed to access Data: %s_name", key));
return key;
end
return endemic_life_name;
@@ -213,6 +217,7 @@ function this.init_dependencies()
error_handler = require("MHR_Overlay.Misc.error_handler");
env_creature = require("MHR_Overlay.Endemic_Life.env_creature");
item_buffs = require("MHR_Overlay.Buffs.item_buffs");
time = require("MHR_Overlay.Game_Handler.time");
end
function this.init_module()

View File

@@ -47,13 +47,31 @@ this.list = {
mega_demondrug = nil,
armorskin = nil,
mega_armorskin = nil,
-- might_seed = nil,
might_seed = nil,
-- adamant_seed = nil,
demon_powder = nil,
hardshell_powder = nil,
immunizer = nil,
-- immunizer = nil,
-- dash_juice = nil,
gourmet_fish = nil,
demon_ammo = nil,
armor_ammo = nil
};
this.keys = {
"demondrug",
"mega_demondrug",
"armorskin",
"mega_armorskin",
"might_seed",
-- "adamant_seed",
"demon_powder",
"hardshell_powder",
-- "immunizer",
-- "dash_juice",
"gourmet_fish",
"demon_ammo",
"armor_ammo"
};
local item_ids = {
@@ -61,53 +79,35 @@ local item_ids = {
mega_demondrug = 68157918,
armorskin = 68157922,
mega_armorskin = 68157923,
--might_seed = 68157919,
--adamant_seed = 68157924,
might_seed = 68157919,
-- adamant_seed = 68157924,
demon_powder = 68157920,
hardshell_powder = 68157925,
immunizer = 68157911,
--dash_juice = 68157913,
-- immunizer = 68157911,
-- dash_juice = 68157913,
gourmet_fish = 68157909,
demon_ammo = 68157595,
armor_ammo = 68157596
}
this.might_seed_attack_up = 10;
local item_buffs_type_name = "item_buffs";
local player_manager_type_def = sdk.find_type_definition("snow.player.PlayerManager");
local get_player_data_method = player_manager_type_def:get_method("get_PlayerData");
local get_ref_item_parameter_method = player_manager_type_def:get_method("get_RefItemParameter");
local player_user_data_item_parameter_type_def = get_ref_item_parameter_method:get_return_type();
local demondrug_atk_up_field = player_user_data_item_parameter_type_def:get_field("_DemondrugAtkUp");
local great_demondrug_atk_up_field = player_user_data_item_parameter_type_def:get_field("_GreatDemondrugAtkUp");
local armorskin_def_up_field = player_user_data_item_parameter_type_def:get_field("_ArmorSkinDefUp");
local great_armorskin_def_up_field = player_user_data_item_parameter_type_def:get_field("_GreatArmorSkinDefUp");
local might_seed_atk_up_field = player_user_data_item_parameter_type_def:get_field("_MightSeedAtkUp");
local might_seed_timer_field = player_user_data_item_parameter_type_def:get_field("_MightSeedTimer");
local adamant_seed_timer_field = player_user_data_item_parameter_type_def:get_field("_AdamantSeedTimer");
local demondrug_powder_timer_field = player_user_data_item_parameter_type_def:get_field("_DemondrugPowderTimer");
local armorskin_powder_timer_field = player_user_data_item_parameter_type_def:get_field("_ArmorSkinPowderTimer");
local vitalizer_timer_const_field = player_user_data_item_parameter_type_def:get_field("_VitalizerTimer");
local stamina_up_buff_second_field = player_user_data_item_parameter_type_def:get_field("_StaminaUpBuffSecond");
local player_data_type_def = sdk.find_type_definition("snow.player.PlayerData");
-- Demondrug/Mega Demondrug
local atk_up_alive_field = player_data_type_def:get_field("_AtkUpAlive");
-- Armorskin/Mega Armorskin
local def_up_alive_field = player_data_type_def:get_field("_DefUpAlive");
-- Might Seed
local atk_up_buff_second_field = player_data_type_def:get_field("_AtkUpBuffSecond");
local atk_up_buff_second_timer_field = player_data_type_def:get_field("_AtkUpBuffSecondTimer");
-- Demon Powder
local atk_up_item_second_field = player_data_type_def:get_field("_AtkUpItemSecond");
local atk_up_item_second_timer_field = player_data_type_def:get_field("_AtkUpItemSecondTimer");
-- Hardshell Powder
local def_up_item_second_field = player_data_type_def:get_field("_DefUpItemSecond");
local def_up_item_second_timer_field = player_data_type_def:get_field("_DefUpItemSecondTimer");
-- Immunizer
local vitalizer_timer_field = player_data_type_def:get_field("_VitalizerTimer");
-- Gourmet Fish
local fish_regene_enable_field = player_data_type_def:get_field("_FishRegeneEnableTimer");
-- Demon Ammo
@@ -115,41 +115,59 @@ local kijin_bullet_timer_field = player_data_type_def:get_field("_KijinBulletTim
-- Armor Ammo
local kouka_bullet_timer_field = player_data_type_def:get_field("_KoukaBulletTimer");
local player_manager_type_def = sdk.find_type_definition("snow.player.PlayerManager");
local get_ref_item_parameter_method = player_manager_type_def:get_method("get_RefItemParameter");
local player_user_data_item_parameter_type_def = get_ref_item_parameter_method:get_return_type();
-- Demondrug/Mega Demondrug
local demondrug_atk_up_field = player_user_data_item_parameter_type_def:get_field("_DemondrugAtkUp");
local great_demondrug_atk_up_field = player_user_data_item_parameter_type_def:get_field("_GreatDemondrugAtkUp");
-- Armorskin/Mega Armorskin
local armorskin_def_up_field = player_user_data_item_parameter_type_def:get_field("_ArmorSkinDefUp");
local great_armorskin_def_up_field = player_user_data_item_parameter_type_def:get_field("_GreatArmorSkinDefUp");
-- Might Seed
local might_seed_atk_up_field = player_user_data_item_parameter_type_def:get_field("_MightSeedAtkUp");
local data_shortcut_type_def = sdk.find_type_definition("snow.data.DataShortcut");
local get_name_method = data_shortcut_type_def:get_method("getName(snow.data.ContentsIdSystem.ItemId)");
function this.update(player_data)
local item_parameter = get_ref_item_parameter_method:call(singletons.player_manager);
if item_parameter == nil then
error_handler.report("item_buffs.update", "Failed to access Data: item_parameter");
return;
end
local cached_language = language.current_language;
function this.update(player_data, item_parameter)
this.update_demondrug(player_data, item_parameter);
this.update_armorskin(player_data, item_parameter);
this.update_might_seed(player_data, item_parameter);
buffs.update_generic_buff(this.list, item_buffs_type_name, "demon_powder", this.get_item_name,
player_data, atk_up_item_second_field, player_data, atk_up_item_second_timer_field, item_parameter, demondrug_powder_timer_field);
this.update_item_buff("demon_powder", player_data, atk_up_item_second_field, player_data, atk_up_item_second_timer_field);
this.update_item_buff("hardshell_powder", player_data, def_up_item_second_field, player_data, def_up_item_second_timer_field);
this.update_item_buff("gourmet_fish", nil, nil, player_data, fish_regene_enable_field);
this.update_item_buff("demon_ammo", nil, nil, player_data, kijin_bullet_timer_field);
this.update_item_buff("armor_ammo", nil, nil, player_data, kouka_bullet_timer_field);
end
buffs.update_generic_buff(this.list, item_buffs_type_name, "hardshell_powder", this.get_item_name,
player_data, def_up_item_second_field, player_data, def_up_item_second_timer_field, item_parameter, armorskin_powder_timer_field);
function this.update_item_buff(key, value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
return buffs.update_generic_buff(this.list, config.current_config.buff_UI.filter.item_buffs, this.get_item_buff_name,
item_buffs_type_name, key,
value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
end
buffs.update_generic_buff(this.list, item_buffs_type_name, "immunizer", this.get_item_name,
nil, nil, player_data, vitalizer_timer_field, item_parameter, vitalizer_timer_const_field);
function this.update_generic(key, level, timer)
return buffs.update_generic(this.list, this.get_item_buff_name, item_buffs_type_name, key, level, timer);
end
buffs.update_generic_buff(this.list, item_buffs_type_name, "gourmet_fish", this.get_item_name,
nil, nil, player_data, fish_regene_enable_field);
buffs.update_generic_buff(this.list, item_buffs_type_name, "demon_ammo", this.get_item_name,
nil, nil, player_data, kijin_bullet_timer_field);
buffs.update_generic_buff(this.list, item_buffs_type_name, "armor_ammo", this.get_item_name,
nil, nil, player_data, kouka_bullet_timer_field);
function this.apply_filter(key)
return buffs.apply_filter(this.list, config.current_config.buff_UI.filter.item_buffs, key);
end
function this.update_demondrug(player_data, item_parameter)
local cached_config = config.current_config.buff_UI.filter.item_buffs;
if not cached_config.demondrug and not cached_config.mega_demondrug then
this.list.demondrug = nil;
this.list.mega_demondrug = nil;
return;
end
local demondrug_value = atk_up_alive_field:get_data(player_data);
if demondrug_value == nil then
error_handler.report("item_buffs.update_demondrug", "Failed to access Data: demondrug_value");
@@ -184,10 +202,23 @@ function this.update_demondrug(player_data, item_parameter)
this.list.demondrug = nil;
end
buffs.update_generic(this.list, item_buffs_type_name, item_key, this.get_item_name);
if not cached_config[item_key] then
this.list[item_key] = nil;
return;
end
this.update_generic(item_key);
end
function this.update_armorskin(player_data, item_parameter)
local cached_config = config.current_config.buff_UI.filter.item_buffs;
if not cached_config.armorskin and not cached_config.mega_armorskin then
this.list.armorskin = nil;
this.list.mega_armorskin = nil;
return;
end
local armorskin_value = def_up_alive_field:get_data(player_data);
if armorskin_value == nil then
error_handler.report("item_buffs.update_armorskin", "Failed to access Data: armorskin_value");
@@ -222,17 +253,59 @@ function this.update_armorskin(player_data, item_parameter)
this.list.armorskin = nil;
end
buffs.update_generic(this.list, item_buffs_type_name, item_key, this.get_item_name);
end
function this.get_item_name(item_key)
local item_name = get_name_method:call(nil, item_ids[item_key]);
if item_name == nil then
error_handler.report("item_buffs.get_item_name", string.format("Failed to access Data: %s_name", item_key));
return item_key;
if not cached_config[item_key] then
this.list[item_key] = nil;
return;
end
return item_name;
this.update_generic(item_key);
end
function this.update_might_seed(player_data, item_parameter)
if this.apply_filter("might_seed") then
return;
end
local atk_up_buff_second = atk_up_buff_second_field:get_data(player_data);
if atk_up_buff_second == nil then
error_handler.report("item_buffs.update_might_seed", "Failed to access Data: atk_up_buff_second");
return;
end
local might_seed_atk_up = might_seed_atk_up_field:get_data(item_parameter);
if might_seed_atk_up == nil then
error_handler.report("item_buffs.update_might_seed", "Failed to access Data: might_seed_atk_up");
return;
end
if atk_up_buff_second ~= might_seed_atk_up then
this.list.might_seed = nil;
return;
end
this.update_item_buff("might_seed", nil, nil, player_data, atk_up_buff_second_timer_field);
end
function this.init_all_UI()
for item_buff_key, item_buff in pairs(this.list) do
buffs.init_UI(item_buff);
end
end
function this.init_names()
for item_buff_key, item_buff in pairs(this.list) do
item_buff.name = this.get_item_buff_name(item_buff_key);
end
end
function this.get_item_buff_name(key)
local item_buff_name = get_name_method:call(nil, item_ids[key]);
if item_buff_name == nil then
error_handler.report("item_buffs.get_item_buff_name", string.format("Failed to access Data: %s_name", key));
return key;
end
return item_buff_name;
end
function this.init_dependencies()

View File

@@ -8,6 +8,7 @@ local players;
local utils;
local language;
local error_handler;
local time;
local sdk = sdk;
local tostring = tostring;
@@ -72,8 +73,41 @@ local package = package;
sharpness_extension = 27
};]]
this.keys = {
"self_improvement",
"attack_up",
"defense_up",
"affinity_up",
"elemental_attack_boost",
"attack_and_defense_up",
"attack_and_affinity_up",
"knockbacks_negated",
"earplugs_s",
"earplugs_l",
"tremors_negated",
"wind_pressure_negated",
"stun_negated",
"blight_negated",
"divine_protection",
"health_recovery_s",
"health_recovery_l",
"health_recovery_s_antidote",
"health_regeneration",
"stamina_use_reduced",
"stamina_recovery_up",
"sharpness_loss_reduced",
"environment_damage_negated",
"sonic_wave",
"sonic_barrier",
"infernal_melody",
"sharpness_regeneration",
"sharpness_extension"
};
this.list = {};
local melody_effects_type_name = "melody_effects";
local player_manager_type_def = sdk.find_type_definition("snow.player.PlayerManager");
local find_master_player_method = player_manager_type_def:get_method("findMasterPlayer");
@@ -97,30 +131,40 @@ function this.update(master_player)
return;
end
local length = get_length_method:call(music_data_array) - 1;
local length = get_length_method:call(music_data_array);
if length == nil then
error_handler.report("melody_effects.update", "Failed to access Data: music_data_array -> length");
return;
end
for i = 0, length do
local music_data = get_value_method:call(music_data_array, i);
if music_data == nil then
error_handler.report("melody_effects.update", "Failed to access Data: music_data No." .. tostring(i));
length = length - 1;
for id = 0, length do
local lua_index = id + 1;
local melody_effect = this.list[lua_index];
local key = this.keys[lua_index];
if this.apply_filter(key, lua_index) then
goto continue;
end
this.update_melody_effect(i, music_data);
local music_data = get_value_method:call(music_data_array, id);
if music_data == nil then
error_handler.report("melody_effects.update", "Failed to access Data: music_data No." .. tostring(id));
goto continue;
end
this.update_melody_effect(lua_index, id, key, melody_effect, music_data);
::continue::
end
end
function this.update_melody_effect(index, melody_data)
local lua_index = index + 1;
function this.update_melody_effect(lua_index, id, key, melody_effect, melody_data)
local melody_timer = time_field:get_data(melody_data);
if melody_timer == nil then
error_handler.report("melody_effects.update_melody_effect", "Failed to access Data: melody_timer No. " .. tostring(index));
error_handler.report("melody_effects.update_melody_effect", "Failed to access Data: melody_timer No. " .. tostring(id));
return;
end
@@ -129,21 +173,64 @@ function this.update_melody_effect(index, melody_data)
return;
end
local melody_effect = this.list[lua_index];
if melody_effect == nil then
local melody_effect_name = this.get_melody_effect_name(index);
local melody_effect_name = this.get_melody_effect_name(id);
melody_effect = buffs.new("melody_effects", lua_index, melody_effect_name, 1, melody_timer / 60);
melody_effect = buffs.new(melody_effects_type_name, key, melody_effect_name, 1, melody_timer / 60);
this.list[lua_index] = melody_effect;
else
buffs.update_timer(melody_effect, melody_timer / 60);
end
end
function this.get_melody_effect_name(melody_effect_id)
local melody_effect_name = get_name_method:call(nil, melody_effect_id);
function this.apply_filter(key, lua_index)
if config.current_config.buff_UI.filter.melody_effects[key] then
return false;
end
local buff = this.list[lua_index];
if buff == nil then
return true;
end
if not buff.is_visible then
return true;
end
if buff.is_infinite then
this.list[lua_index] = nil;
return true;
end
time.new_delay_timer(function()
local _buff = this.list[lua_index];
if _buff ~= nil and not _buff.is_visible then
this.list[lua_index] = nil;
end
end, buff.timer);
buff.is_visible = false;
return true;
end
function this.init_all_UI()
for melody_effect_id, melody_effect in pairs(this.list) do
buffs.init_UI(melody_effect);
end
end
function this.init_names()
for melody_effect_id, melody_effect in pairs(this.list) do
melody_effect.name = this.get_melody_effect_name(melody_effect_id - 1);
end
end
function this.get_melody_effect_name(id)
local melody_effect_name = get_name_method:call(nil, id);
if melody_effect_name == nil then
local name = string.format("Melody Effect No. %d", melody_effect_id);
local name = string.format("Melody Effect No. %d", id);
error_handler.report("melody_effects.get_melody_effect_name", "Failed to access Data: " .. melody_effect_name);
return name;
end
@@ -160,6 +247,7 @@ function this.init_dependencies()
players = require("MHR_Overlay.Damage_Meter.players");
language = require("MHR_Overlay.Misc.language");
error_handler = require("MHR_Overlay.Misc.error_handler");
time = require("MHR_Overlay.Game_Handler.time");
end
function this.init_module()

View File

@@ -47,14 +47,23 @@ this.list = {
attack_up = nil,
defense_up = nil,
stamina_use_down = nil,
natural_healing_up = nil,
immunity = nil
};
local misc_buffs_type_name = "misc_buffs";
this.keys = {
"attack_up",
"defense_up",
"stamina_use_down",
"natural_healing_up",
"immunity"
};
-- Attack Up
-- Might Seed +10 3min
-- Might Seed +10 3min -- Separated
-- Dango Bulker + 15 30sec
-- Chameleos Souls +15 30sec
-- Chameleos Soul +15 30sec
-- Butterflame +25 1min -- Separated
-- Defense Up
-- Adamant Seed +20 3min
@@ -65,7 +74,14 @@ local misc_buffs_type_name = "misc_buffs";
-- Peepersects 1.5min
-- Chameleos Soul 30sec
-- Natural Healing Up
-- Immunizer 5min
-- Vase of Vitality 20sec
local misc_buffs_type_name = "misc_buffs";
local player_data_type_def = sdk.find_type_definition("snow.player.PlayerData");
-- Attack Up
local atk_up_buff_second_field = player_data_type_def:get_field("_AtkUpBuffSecond");
local atk_up_buff_second_timer_field = player_data_type_def:get_field("_AtkUpBuffSecondTimer");
@@ -76,31 +92,78 @@ local def_up_buff_second_timer_field = player_data_type_def:get_field("_DefUpBuf
local stamina_up_buff_second_timer_field = player_data_type_def:get_field("_StaminaUpBuffSecondTimer");
-- Immunity
local debuff_prevention_timer_field = player_data_type_def:get_field("_DebuffPreventionTimer");
-- Immunizer
local vitalizer_timer_field = player_data_type_def:get_field("_VitalizerTimer");
function this.update(player, player_data)
buffs.update_generic_buff(this.list, misc_buffs_type_name, "stamina_use_down", this.get_misc_buff_name,
nil, nil, player_data, stamina_up_buff_second_timer_field);
local player_manager_type_def = sdk.find_type_definition("snow.player.PlayerManager");
local get_ref_item_parameter_method = player_manager_type_def:get_method("get_RefItemParameter");
buffs.update_generic_buff(this.list, misc_buffs_type_name, "attack_up", this.get_misc_buff_name,
player_data, atk_up_buff_second_field, player_data, atk_up_buff_second_timer_field);
local player_user_data_item_parameter_type_def = get_ref_item_parameter_method:get_return_type();
buffs.update_generic_buff(this.list, misc_buffs_type_name, "defense_up", this.get_misc_buff_name,
player_data, def_up_buff_second_field, player_data, def_up_buff_second_timer_field);
-- Might Seed
local might_seed_atk_up_field = player_user_data_item_parameter_type_def:get_field("_MightSeedAtkUp");
buffs.update_generic_buff(this.list, misc_buffs_type_name, "immunity", this.get_misc_buff_name,
nil, nil, player_data, debuff_prevention_timer_field);
function this.update(player, player_data, item_parameter)
this.update_attack_up(player_data, item_parameter);
--this.update_misc_buff("attack_up", player_data, atk_up_buff_second_field, player_data, atk_up_buff_second_timer_field);
this.update_misc_buff("defense_up", player_data, def_up_buff_second_field, player_data, def_up_buff_second_timer_field);
this.update_misc_buff("stamina_use_down", nil, nil, player_data, stamina_up_buff_second_timer_field);
this.update_misc_buff("natural_healing_up", nil, nil, player_data, vitalizer_timer_field);
this.update_misc_buff("immunity", nil, nil, player_data, debuff_prevention_timer_field);
end
function this.init_names()
for misc_buff_key, dango in pairs(this.list) do
dango.name = this.get_misc_buff_name(misc_buff_key);
function this.update_misc_buff(key, value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
return buffs.update_generic_buff(this.list, config.current_config.buff_UI.filter.misc_buffs, this.get_misc_buff_name,
misc_buffs_type_name, key,
value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints);
end
function this.apply_filter(key)
return buffs.apply_filter(this.list, config.current_config.buff_UI.filter.misc_buffs, key);
end
function this.update_attack_up(player_data, item_parameter)
if this.apply_filter("attack_up") then
return;
end
local atk_up_buff_second = atk_up_buff_second_field:get_data(player_data);
if atk_up_buff_second == nil then
error_handler.report("item_buffs.update_attack_up", "Failed to access Data: atk_up_buff_second");
return;
end
local might_seed_atk_up = might_seed_atk_up_field:get_data(item_parameter);
if might_seed_atk_up == nil then
error_handler.report("item_buffs.update_might_seed", "Failed to access Data: might_seed_atk_up");
return;
end
if atk_up_buff_second == might_seed_atk_up or atk_up_buff_second == endemic_life_buffs.butterflame_attack_up then
this.list.attack_up = nil;
return;
end
this.update_misc_buff("attack_up", nil, nil, player_data, atk_up_buff_second_timer_field);
end
function this.init_all_UI()
for misc_buff_key, misc_buff in pairs(this.list) do
buffs.init_UI(misc_buff);
end
end
function this.get_misc_buff_name(misc_buff_key)
local misc_buff_name = language.current_language.misc_buffs[misc_buff_key];
function this.init_names()
for misc_buff_key, misc_buff in pairs(this.list) do
misc_buff.name = this.get_misc_buff_name(misc_buff_key);
end
end
function this.get_misc_buff_name(key)
local misc_buff_name = language.current_language.misc_buffs[key];
if misc_buff_name == nil then
return misc_buff_key;
return key;
end
return misc_buff_name;

View File

@@ -46,48 +46,51 @@ local ValueType = ValueType;
local package = package;
this.list = {
rousing_roar = nil,
go_fight_win = nil,
power_drum = nil
power_drum = nil,
rousing_roar = nil
};
this.keys = {
"go_fight_win",
"power_drum",
"rousing_roar"
};
local otomo_moves_ids = {
herbaceous_healing = 1,
felyne_silkbind = 2,
felyne_wyvernblast = 3,
-- herbaceous_healing = 1,
-- felyne_silkbind = 2,
-- felyne_wyvernblast = 3,
rousing_roar = 4,
endemic_life_barrage = 5,
health_horn = 6,
healing_bubble = 7,
-- endemic_life_barrage = 5,
-- health_horn = 6,
-- healing_bubble = 7,
vase_of_vitality = 8,
furbidden_acorn = 9,
poison_purr_ison = 10,
summeown_endemic_life = 11,
shock_purr_ison = 12,
-- furbidden_acorn = 9,
-- poison_purr_ison = 10,
-- summeown_endemic_life = 11,
-- shock_purr_ison = 12,
go_fight_win = 13,
giga_barrel_bombay = 14,
flash_bombay = 15,
anti_monster_mine = 16,
zap_blast_spinner = 17,
furr_ious = 18,
-- giga_barrel_bombay = 14,
-- flash_bombay = 15,
-- anti_monster_mine = 16,
-- zap_blast_spinner = 17,
-- furr_ious = 18,
power_drum = 19,
fleet_foot_feat = 20,
whirlwind_assault = 21,
pilfer = 22,
shock_tripper = 23,
mega_boomerang = 24,
camouflage = 25,
healing_clover_bat = 26,
felyne_firewors = 27,
lottery_box = 28,
felyne_powered_up = 29,
ameowzing_mist = 30
-- fleet_foot_feat = 20,
-- whirlwind_assault = 21,
-- pilfer = 22,
-- shock_tripper = 23,
-- mega_boomerang = 24,
-- camouflage = 25,
-- healing_clover_bat = 26,
-- felyne_firewors = 27,
-- lottery_box = 28,
-- felyne_powered_up = 29,
-- ameowzing_mist = 30
};
local otomo_moves_type_name = "otomo_moves";
local player_manager_type_def = sdk.find_type_definition("snow.player.PlayerManager");
local get_player_data_method = player_manager_type_def:get_method("get_PlayerData");
local otomo_moves_type_name = "otomo_moves"
local player_data_type_def = sdk.find_type_definition("snow.player.PlayerData");
-- Palico: Rousing Roar
@@ -101,21 +104,38 @@ local data_shortcut_type_def = sdk.find_type_definition("snow.data.DataShortcut"
local get_name_method = data_shortcut_type_def:get_method("getName(snow.data.DataDef.OtSupportActionId)");
function this.update(player_data)
buffs.update_generic_buff(this.list, otomo_moves_type_name, "rousing_roar", this.get_otomo_move_name,
nil, nil, player_data, beast_roar_otomo_timer_field);
buffs.update_generic_buff(this.list, otomo_moves_type_name, "go_fight_win", this.get_otomo_move_name,
nil, nil, player_data, runhigh_otomo_timer_field);
buffs.update_generic_buff(this.list, otomo_moves_type_name, "power_drum", this.get_otomo_move_name,
nil, nil, player_data, kijin_otomo_timer_field);
this.update_otomo_move("rousing_roar", nil, nil, player_data, beast_roar_otomo_timer_field);
this.update_otomo_move("go_fight_win", nil, nil, player_data, runhigh_otomo_timer_field);
this.update_otomo_move("power_drum", nil, nil, player_data, kijin_otomo_timer_field);
end
function this.get_otomo_move_name(otomo_move_key)
local otomo_move_name = get_name_method:call(nil, otomo_moves_ids[otomo_move_key]);
function this.update_otomo_move(key, value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
return buffs.update_generic_buff(this.list, config.current_config.buff_UI.filter.otomo_moves, this.get_otomo_move_name,
otomo_moves_type_name, key,
value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
end
function this.apply_filter(key)
return buffs.apply_filter(this.list, config.current_config.buff_UI.filter.otomo_moves, key);
end
function this.init_all_UI()
for otomo_move_key, otomo_move in pairs(this.list) do
buffs.init_UI(otomo_move);
end
end
function this.init_names()
for otomo_move_key, otomo_move in pairs(this.list) do
otomo_move.name = this.get_otomo_move_name(otomo_move_key);
end
end
function this.get_otomo_move_name(key)
local otomo_move_name = get_name_method:call(nil, otomo_moves_ids[key]);
if otomo_move_name == nil then
error_handler.report("otomo_moves.get_otomo_move_name", string.format("Failed to access Data: %s_name", otomo_move_key));
return otomo_move_key;
error_handler.report("otomo_moves.get_otomo_move_name", string.format("Failed to access Data: %s_name", key));
return key;
end
return otomo_move_name;

View File

@@ -46,59 +46,24 @@ local ValueType = ValueType;
local package = package;
this.list = {
burst = nil,
chameleos_soul = nil,
kushala_daora_soul = nil,
intrepid_heart = nil,
dereliction = nil,
latent_power = nil,
protective_polish = nil,
wind_mantle = nil,
grinder_s = nil,
counterstrike = nil,
affinity_sliding = nil,
coalescence = nil,
adrenaline_rush = nil,
wall_runner = nil,
offensive_guard = nil,
hellfire_cloak = nil,
agitator = nil,
furious = nil,
status_trigger = nil,
heaven_sent = nil,
heroics = nil,
resuscitate = nil,
maximum_might = nil,
bloodlust = nil,
frenzied_bloodlust = nil,
peak_performance = nil,
dragonheart = nil,
resentment = nil,
bladescale_hone = nil,
spiribirds_call = nil,
embolden = nil,
berserk = nil,
powder_mantle_red = nil,
powder_mantle_blue = nil,
strife = nil,
inspiration = nil,
blood_awakening = nil
};
local rampage_skills_type_name = "rampage_skills";
this.keys = {
"chameleos_soul",
"kushala_daora_soul",
};
local rampage_skill_ids = {
chameleos_soul = 250,
kushala_daora_soul = 251,
};
local rampage_skills_type_name = "rampage_skills";
local kushara_daora_soul_breakpoint = 5;
local player_manager_type_def = sdk.find_type_definition("snow.player.PlayerManager");
local get_player_data_method = player_manager_type_def:get_method("get_PlayerData");
local get_ref_item_parameter_method = player_manager_type_def:get_method("get_RefItemParameter");
local player_user_data_item_parameter_type_def = get_ref_item_parameter_method:get_return_type();
local player_data_type_def = sdk.find_type_definition("snow.player.PlayerData");
-- Kushala Daora Soul
local hyakuryu_dragon_power_up_count_field = player_data_type_def:get_field("_HyakuryuDragonPowerUpCnt");
@@ -110,30 +75,39 @@ local data_shortcut_type_def = sdk.find_type_definition("snow.data.DataShortcut"
local get_name_method = data_shortcut_type_def:get_method("getName(snow.data.DataDef.PlHyakuryuSkillId)");
function this.update(player_data)
--local item_parameter = get_ref_item_parameter_method:call(singletons.player_manager);
--if item_parameter == nil then
-- error_handler.report("skills.update", "Failed to access Data: item_parameter");
-- return;
--end
this.update_rampage_skill("kushala_daora_soul", player_data, hyakuryu_dragon_power_up_count_field,
player_data, hyakuryu_dragon_power_up_timer_field, false, nil, {kushara_daora_soul_breakpoint});
buffs.update_generic_buff(this.list, rampage_skills_type_name, "kushala_daora_soul", this.get_skill_name,
player_data, hyakuryu_dragon_power_up_count_field, player_data, hyakuryu_dragon_power_up_timer_field, nil, nil, false, nil, {kushara_daora_soul_breakpoint});
buffs.update_generic_buff(this.list, rampage_skills_type_name, "chameleos_soul", this.get_skill_name,
nil, nil, player_data, hyakuryu_onazuti_power_up_interval_field);
this.update_rampage_skill("chameleos_soul", nil, nil, player_data, hyakuryu_onazuti_power_up_interval_field);
end
function this.init_names()
for rampage_skill_key, skill in pairs(this.list) do
skill.name = this.get_skill_name(rampage_skill_key);
function this.update_rampage_skill(key, value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
return buffs.update_generic_buff(this.list, config.current_config.buff_UI.filter.rampage_skills, this.get_rampage_skill_name,
rampage_skills_type_name, key,
value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
end
function this.apply_filter(key)
return this.apply_filter(this.list, config.current_config.buff_UI.filter.rampage_skills, key);
end
function this.init_all_UI()
for rampage_skill_key, rampage_skill in pairs(this.list) do
buffs.init_UI(rampage_skill);
end
end
function this.get_skill_name(rampage_skill_key)
local rampage_skill_name = get_name_method:call(nil, rampage_skill_ids[rampage_skill_key]);
function this.init_names()
for rampage_skill_key, rampage_skill in pairs(this.list) do
rampage_skill.name = this.get_rampage_skill_name(rampage_skill_key);
end
end
function this.get_rampage_skill_name(key)
local rampage_skill_name = get_name_method:call(nil, rampage_skill_ids[key]);
if rampage_skill_name == nil then
error_handler.report("skills.get_skill_name", string.format("Failed to access Data: %s_name", rampage_skill_key));
return rampage_skill_key;
error_handler.report("rampage_skills.get_rampage_skill_name", string.format("Failed to access Data: %s_name", key));
return key;
end
return rampage_skill_name;

View File

@@ -46,42 +46,85 @@ local ValueType = ValueType;
local package = package;
this.list = {
burst = nil,
intrepid_heart = nil,
dereliction = nil,
latent_power = nil,
protective_polish = nil,
wind_mantle = nil,
grinder_s = nil,
counterstrike = nil,
affinity_sliding = nil,
coalescence = nil,
adrenaline_rush = nil,
wall_runner = nil,
offensive_guard = nil,
hellfire_cloak = nil,
affinity_sliding = nil,
agitator = nil,
furious = nil,
status_trigger = nil,
heaven_sent = nil,
heroics = nil,
resuscitate = nil,
maximum_might = nil,
bloodlust = nil,
frenzied_bloodlust = nil,
peak_performance = nil,
dragonheart = nil,
resentment = nil,
bladescale_hone = nil,
spiribirds_call = nil,
embolden = nil,
berserk = nil,
bladescale_hone = nil,
blood_awakening = nil,
bloodlust = nil,
burst = nil,
coalescence = nil,
counterstrike = nil,
dereliction = nil,
dragon_conversion_elemental_attack_up = nil,
dragon_conversion_elemental_res_up = nil,
dragonheart = nil,
embolden = nil,
frenzied_bloodlust = nil,
furious = nil,
grinder_s = nil,
heaven_sent = nil,
hellfire_cloak = nil,
heroics = nil,
inspiration = nil,
intrepid_heart = nil,
latent_power = nil,
maximum_might = nil,
offensive_guard = nil,
partbreaker = nil,
peak_performance = nil,
powder_mantle_red = nil,
powder_mantle_blue = nil,
protective_polish = nil,
resentment = nil,
resuscitate = nil,
spiribirds_call = nil,
status_trigger = nil,
strife = nil,
inspiration = nil,
blood_awakening = nil,
partbreaker = nil
wall_runner = nil,
wind_mantle = nil,
};
this.keys = {
"adrenaline_rush",
"affinity_sliding",
"agitator",
"berserk",
"bladescale_hone",
"blood_awakening",
"bloodlust",
"burst",
"coalescence",
"counterstrike",
"dereliction",
"dragon_conversion_elemental_attack_up",
"dragon_conversion_elemental_res_up",
"dragonheart",
"embolden",
"frenzied_bloodlust",
"furious",
"grinder_s",
"heaven_sent",
"hellfire_cloak",
"heroics",
"inspiration",
"intrepid_heart",
"latent_power",
"maximum_might",
"offensive_guard",
"partbreaker",
"peak_performance",
"powder_mantle_red",
"powder_mantle_blue",
"protective_polish",
"resentment",
"resuscitate",
"spiribirds_call",
"status_trigger",
"strife",
"wall_runner",
"wind_mantle"
};
local skills_type_name = "skills";
@@ -177,7 +220,7 @@ local skill_data_list = {
-- item_prolonger = { id = 88 },
-- wide_range = { id = 89 },
-- free_meal = { id = 90 },
heroics = { id = 91, level = 0, is_equipped = false },
heroics = { id = 91, level = 0, is_equipped = false },
-- fortify = { id = 92 },
-- flinch_free = { id = 93 },
-- jump_master = { id = 94 },
@@ -227,7 +270,7 @@ local skill_data_list = {
wind_mantle = { id = 138 },
-- powder_mantle = { id = 139 },
-- frostcraft = { id = 140 },
-- dragon_conversion = { id = 141 },
-- dragon_conversion = { id = 141 }, -- implemented
heaven_sent = { id = 142 },
frenzied_bloodlust = { id = 143 },
blood_awakening = { id = 144 },
@@ -236,6 +279,7 @@ local skill_data_list = {
inspiration = { id = 147 },
}
this.is_heroics_active = false;
local intrepid_heart_minimal_value = 400;
@@ -265,12 +309,6 @@ local spiribirds_call_duration = 60;
local wind_mantle_duration = 15;
local player_manager_type_def = sdk.find_type_definition("snow.player.PlayerManager");
local get_player_data_method = player_manager_type_def:get_method("get_PlayerData");
local get_ref_item_parameter_method = player_manager_type_def:get_method("get_RefItemParameter");
local player_user_data_item_parameter_type_def = get_ref_item_parameter_method:get_return_type();
local player_data_type_def = sdk.find_type_definition("snow.player.PlayerData");
-- Burst
local rengeki_power_up_count_field = player_data_type_def:get_field("_RengekiPowerUpCnt");
@@ -321,7 +359,6 @@ local equip_skill_232_timer_field = player_data_type_def:get_field("_EquipSkill2
local player_base_type_def = sdk.find_type_definition("snow.player.PlayerBase");
local player_weapon_type_field = player_base_type_def:get_field("_playerWeaponType");
local get_player_skill_list_method = player_base_type_def:get_method("get_PlayerSkillList");
-- Latent Power
@@ -329,7 +366,7 @@ local power_freedom_timer_field = player_base_type_def:get_field("_PowerFreedomT
-- Protective Polish
local sharpness_gauge_boost_timer_field = player_base_type_def:get_field("_SharpnessGaugeBoostTimer");
-- Heroics
local is_predicament_power_up_method = player_base_type_def:get_method("isPredicamentPowerUp");
--local is_predicament_power_up_method = player_base_type_def:get_method("isPredicamentPowerUp");
-- Berserk
local get_is_enable_equip_skill_225_method = player_base_type_def:get_method("get_IsEnableEquipSkill225");
-- Dragon Conversion
@@ -337,7 +374,7 @@ local equip_skill_229_sum_resist_field = player_base_type_def:get_field("_EquipS
-- Resuscitate
local is_debuff_state_method = player_base_type_def:get_method("isDebuffState");
local player_skill_list_type_def = get_player_skill_list_method:get_return_type();
local player_skill_list_type_def = sdk.find_type_definition("snow.player.PlayerSkillList");
local get_skill_data_method = player_skill_list_type_def:get_method("getSkillData");
local skill_data_type_def = get_skill_data_method:get_return_type();
@@ -362,11 +399,6 @@ local equip_skill_229_use_up_flag_field = player_quest_base_type_def:get_field("
local get_affinity_equip_skill_233_method = player_quest_base_type_def:get_method("getAffinityEquipSkill233");
-- Blood Awakening
local get_equip_skill_232_lv_method = player_quest_base_type_def:get_method("getEquipSkill232Lv");
local get_equip_skill_232_param_method = player_quest_base_type_def:get_method("getEquipSkill232Param");
local equip_skill_232_param_type_def = get_equip_skill_232_param_method:get_return_type();
local activation_time_lv_1_field = equip_skill_232_param_type_def:get_field("_ActivationTime_Lv1");
local activation_time_lv_2_field = equip_skill_232_param_type_def:get_field("_ActivationTime_Lv2");
local bow_type_def = sdk.find_type_definition("snow.player.Bow");
local _equip_skill_216_bottle_up_timer_field = bow_type_def:get_field("_EquipSkill216_BottleUpTimer");
@@ -375,12 +407,6 @@ local data_shortcut_type_def = sdk.find_type_definition("snow.data.DataShortcut"
local get_name_method = data_shortcut_type_def:get_method("getName(snow.data.DataDef.PlEquipSkillId)");
function this.update(player, player_data, weapon_type)
--local item_parameter = get_ref_item_parameter_method:call(singletons.player_manager);
--if item_parameter == nil then
-- error_handler.report("skills.update", "Failed to access Data: item_parameter");
-- return;
--end
this.update_equipped_skill_data(player);
this.update_wind_mantle(player, weapon_type);
@@ -388,6 +414,7 @@ function this.update(player, player_data, weapon_type)
this.update_bloodlust();
this.update_frenzied_bloodlust(player, player_data);
this.update_peak_performance();
this.update_heroics();
this.update_dragonheart();
this.update_resentment(player_data);
this.update_bladescale_hone(player, weapon_type);
@@ -395,62 +422,57 @@ function this.update(player, player_data, weapon_type)
this.update_powder_mantle(player_data);
this.update_blood_awakening(player, player_data);
this.update_generic_skill("dereliction", player_data, symbiosis_skill_lost_vital_field,
nil, nil, nil, nil, true, nil, dereliction_breakpoints);
this.update_generic_skill("burst", player_data, rengeki_power_up_count_field,
player_data, rengeki_power_up_timer_field, nil, nil, false, nil, burst_breakpoints);
this.update_generic_skill("intrepid_heart", player_data, equip_skill_223_accumulator_field,
nil, nil, nil, nil, true, intrepid_heart_minimal_value);
this.update_generic_skill("latent_power", nil, nil, player, power_freedom_timer_field);
this.update_generic_skill("protective_polish", nil, nil, player, sharpness_gauge_boost_timer_field);
this.update_generic_skill("grinder_s", nil, nil, player_data, brand_new_sharpness_adjust_up_timer_field);
this.update_generic_skill("counterstrike", nil, nil, player_data, counterattack_powerup_timer_field);
this.update_generic_skill("affinity_sliding", nil, nil, player_data, sliding_powerup_timer_field);
this.update_generic_skill("coalescence", nil, nil, player_data, disaster_turn_powerup_timer_field);
this.update_generic_skill("adrenaline_rush", nil, nil, player_data, equip_skill_208_atk_up_field);
this.update_generic_skill("wall_runner", nil, nil, player_data, wall_run_powerup_timer_field);
this.update_generic_skill("offensive_guard", nil, nil, player_data, equip_skill_036_timer_field);
this.update_generic_skill("hellfire_cloak", nil, nil, player_data, onibi_powerup_timer_field);
this.update_generic_skill("agitator", nil, nil, player_data, challenge_timer_field, nil, nil, true);
this.update_generic_skill("furious", nil, nil, player_data, furious_skill_stamina_buff_second_timer_field);
this.update_generic_skill("status_trigger", nil, nil, player_data, equip_skill_222_timer_field);
this.update_generic_skill("inspiration", nil, nil, player_data, equip_skill_235_atk_up_second_timer_field);
this.update_generic_skill("heaven_sent", player, is_active_equip_skill_230_method);
this.update_generic_skill("heroics", player, is_predicament_power_up_method);
this.update_generic_skill("resuscitate", player, is_debuff_state_method);
this.update_generic_skill("embolden", player, get_active_equip_209_method);
this.update_generic_skill("berserk", player, get_is_enable_equip_skill_225_method);
this.update_generic_skill("dragon_conversion_elemental_attack_up", player, equip_skill_229_sum_resist_field);
this.update_generic_skill("dragon_conversion_elemental_res_up", player, equip_skill_229_use_up_flag_field);
this.update_generic_skill("partbreaker", nil, nil, nil, nil, nil, nil, true);
this.update_generic_skill("strife", player, get_affinity_equip_skill_233_method,
nil, nil, nil, nil, nil, nil, strife_breakpoints[skill_data_list.strife.level]);
this.update_skill("dereliction", player_data, symbiosis_skill_lost_vital_field, nil, nil, true, nil, dereliction_breakpoints);
this.update_skill("burst", player_data, rengeki_power_up_count_field, player_data, rengeki_power_up_timer_field, false, nil, burst_breakpoints);
this.update_skill("intrepid_heart", player_data, equip_skill_223_accumulator_field, nil, nil, true, intrepid_heart_minimal_value);
this.update_skill("latent_power", nil, nil, player, power_freedom_timer_field);
this.update_skill("protective_polish", nil, nil, player, sharpness_gauge_boost_timer_field);
this.update_skill("grinder_s", nil, nil, player_data, brand_new_sharpness_adjust_up_timer_field);
this.update_skill("counterstrike", nil, nil, player_data, counterattack_powerup_timer_field);
this.update_skill("affinity_sliding", nil, nil, player_data, sliding_powerup_timer_field);
this.update_skill("coalescence", nil, nil, player_data, disaster_turn_powerup_timer_field);
this.update_skill("adrenaline_rush", nil, nil, player_data, equip_skill_208_atk_up_field);
this.update_skill("wall_runner", nil, nil, player_data, wall_run_powerup_timer_field);
this.update_skill("offensive_guard", nil, nil, player_data, equip_skill_036_timer_field);
this.update_skill("hellfire_cloak", nil, nil, player_data, onibi_powerup_timer_field);
this.update_skill("agitator", nil, nil, player_data, challenge_timer_field, nil, nil, true);
this.update_skill("furious", nil, nil, player_data, furious_skill_stamina_buff_second_timer_field);
this.update_skill("status_trigger", nil, nil, player_data, equip_skill_222_timer_field);
this.update_skill("inspiration", nil, nil, player_data, equip_skill_235_atk_up_second_timer_field);
this.update_skill("heaven_sent", player, is_active_equip_skill_230_method);
this.update_skill("resuscitate", player, is_debuff_state_method);
this.update_skill("embolden", player, get_active_equip_209_method);
this.update_skill("berserk", player, get_is_enable_equip_skill_225_method);
this.update_skill("dragon_conversion_elemental_attack_up", player, equip_skill_229_sum_resist_field);
this.update_skill("dragon_conversion_elemental_res_up", player, equip_skill_229_use_up_flag_field);
this.update_skill("partbreaker", nil, nil, nil, nil, true);
this.update_skill("strife", player, get_affinity_equip_skill_233_method, nil, nil, nil, nil, strife_breakpoints[skill_data_list.strife.level]);
end
function this.update_generic_skill(skill_key, value_owner, value_holder, timer_owner, timer_holder, duration_owner, duration_holder,
is_infinite, minimal_value, level_breakpoints)
local skill_data = skill_data_list[skill_key];
function this.update_skill(key, value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints)
local skill_data = skill_data_list[key];
if skill_data ~= nil and skill_data.is_equipped ~= nil and not skill_data.is_equipped then
this.list[skill_key] = nil;
return;
this.list[key] = nil;
return nil;
end
buffs.update_generic_buff(this.list, skills_type_name, skill_key, this.get_skill_name,
value_owner, value_holder, timer_owner, timer_holder, duration_owner, duration_holder,
is_infinite, minimal_value, level_breakpoints);
return buffs.update_generic_buff(this.list, config.current_config.buff_UI.filter.skills, this.get_skill_name,
skills_type_name, key,
value_owner, value_holder, timer_owner, timer_holder, is_infinite, minimal_value, level_breakpoints);
end
function this.update_generic(key, level, timer)
return buffs.update_generic(this.list, this.get_skill_name, skills_type_name, key, level, timer);
end
function this.apply_filter(key)
return buffs.apply_filter(this.list, config.current_config.buff_UI.filter.skills, key);
end
function this.update_equipped_skill_data(player)
local player_skill_list = get_player_skill_list_method:call(player);
if player_skill_list == nil then
error_handler.report("skills.update_equipped_skill_data", "Failed to access Data: player_skill_list");
error_handler.report("this.update_equipped_skill_data", "Failed to access Data: player_skill_list");
return;
end
@@ -472,7 +494,6 @@ function this.update_equipped_skill_data(player)
goto continue;
end
if skill_level <= 0 then
skill_data.is_equipped = false;
skill_data.level = 0;
@@ -487,6 +508,10 @@ function this.update_equipped_skill_data(player)
end
function this.update_wind_mantle(player, weapon_type)
if this.apply_filter("wind_mantle") then
return;
end
local is_wind_mantle_enable = is_equip_skill_226_enable_field:get_data(player);
if is_wind_mantle_enable == nil then
error_handler.report("skills.update_wind_mantle", "Failed to access Data: is_wind_mantle_enable");
@@ -522,10 +547,16 @@ function this.update_wind_mantle(player, weapon_type)
end
end
buffs.update_generic(this.list, skills_type_name, "wind_mantle", this.get_skill_name, level, wind_mantle_duration - (wind_mantle_timer / 60), wind_mantle_duration);
this.update_generic("wind_mantle", level, wind_mantle_duration - (wind_mantle_timer / 60));
end
function this.update_maximum_might(player_data)
if not config.current_config.buff_UI.filter.skills.maximum_might then
this.list.maximum_might = nil;
maximum_might_previous_timer_value = 0;
return;
end
if not skill_data_list.maximum_might.is_equipped then
this.list.maximum_might = nil;
return;
@@ -541,21 +572,20 @@ function this.update_maximum_might(player_data)
return;
end
local skill = this.list.maximum_might;
local is_timer_zero = utils.number.is_equal(whole_body_timer, 0);
local maximum_might = this.list.maximum_might;
if player_info.list.stamina ~= player_info.list.max_stamina then
if skill ~= nil and whole_body_timer < maximum_might_previous_timer_value then
if whole_body_timer < maximum_might_previous_timer_value then
this.list.maximum_might = nil;
end
elseif skill == nil then
elseif maximum_might == nil then
local maximum_might_name = this.get_skill_name("maximum_might");
if whole_body_timer < maximum_might_previous_timer_value then
this.list.maximum_might = buffs.new(skills_type_name, "maximum_might", maximum_might_name, 1);
elseif is_timer_zero then
elseif utils.number.is_equal(whole_body_timer, 0) then
if maximum_might_delay_timer == nil then
maximum_might_delay_timer = time.new_delay_timer(function()
maximum_might_delay_timer = nil;
@@ -570,9 +600,18 @@ function this.update_maximum_might(player_data)
end
maximum_might_previous_timer_value = whole_body_timer;
if maximum_might ~= nil then
maximum_might.is_visible = true;
end
end
function this.update_bloodlust()
if not config.current_config.buff_UI.filter.skills.bloodlust then
this.list.bloodlust = nil;
return;
end
if not skill_data_list.bloodlust.is_equipped then
this.list.bloodlust = nil;
return;
@@ -584,18 +623,25 @@ function this.update_bloodlust()
return;
end
if this.list.bloodlust == nil then
local bloodlust = this.list.bloodlust;
if bloodlust == nil then
local bloodlust_name = this.get_skill_name("bloodlust");
if bloodlust_name == nil then
error_handler.report("skills.update_generic_buff", "Failed to access Data: bloodlust_name");
error_handler.report("skills.update_bloodlust", "Failed to access Data: bloodlust_name");
return;
end
this.list.bloodlust = buffs.new(skills_type_name, "bloodlust", bloodlust_name);
end
this.list.bloodlust.is_visible = true;
end
function this.update_frenzied_bloodlust(player, player_data)
if this.apply_filter("frenzied_bloodlust") then
return;
end
local hunter_wire_skill_231_num = get_hunter_wire_skill_231_num_method:call(player);
if hunter_wire_skill_231_num == nil then
error_handler.report("skills.update_frenzied_bloodlust", "Failed to access Data: hunter_wire_skill_231_num");
@@ -642,7 +688,7 @@ function this.update_frenzied_bloodlust(player, player_data)
timer = equip_skill_231_wp_off_timer;
end
local skill = buffs.update_generic(this.list, skills_type_name, "frenzied_bloodlust", this.get_skill_name, 1, timer / 60);
local skill = this.update_generic("frenzied_bloodlust", 1, timer / 60);
if is_wp_off_timer_max then
skill.duration = frenzied_bloodlust_duration / 60;
@@ -652,6 +698,11 @@ function this.update_frenzied_bloodlust(player, player_data)
end
function this.update_peak_performance()
if not config.current_config.buff_UI.filter.skills.peak_performance then
this.list.peak_performance = nil;
return;
end
if not skill_data_list.peak_performance.is_equipped then
this.list.peak_performance = nil;
return;
@@ -662,10 +713,28 @@ function this.update_peak_performance()
return;
end
buffs.update_generic(this.list, skills_type_name, "peak_performance", this.get_skill_name);
this.update_generic("peak_performance");
end
function this.update_heroics()
if this.apply_filter("heroics") then
return;
end
if not this.is_heroics_active then
this.list.heroics = nil;
return;
end
this.update_generic("heroics");
end
function this.update_dragonheart()
if not config.current_config.buff_UI.filter.skills.dragonheart then
this.list.dragonheart = nil;
return;
end
if not skill_data_list.dragonheart.is_equipped then
this.list.dragonheart = nil;
return;
@@ -685,10 +754,15 @@ function this.update_dragonheart()
return;
end
buffs.update_generic(this.list, skills_type_name, "dragonheart", this.get_skill_name);
this.update_generic("dragonheart");
end
function this.update_resentment(player_data)
if not config.current_config.buff_UI.filter.skills.resentment then
this.list.resentment = nil;
return;
end
if not skill_data_list.resentment.is_equipped then
this.list.resentment = nil;
return;
@@ -705,7 +779,7 @@ function this.update_resentment(player_data)
return;
end
buffs.update_generic(this.list, skills_type_name, "resentment", this.get_skill_name);
this.update_generic("resentment");
end
function this.update_bladescale_hone(player, weapon_type)
@@ -714,10 +788,18 @@ function this.update_bladescale_hone(player, weapon_type)
return;
end
this.update_generic_skill("bladescale_hone", nil, nil, player, _equip_skill_216_bottle_up_timer_field);
if this.apply_filter("bladescale_hone") then
return;
end
this.update_skill("bladescale_hone", nil, nil, player, _equip_skill_216_bottle_up_timer_field);
end
function this.update_spiribirds_call(player_data)
if this.apply_filter("spiribirds_call") then
return;
end
local equip_skill_211_timer = equip_skill_211_timer_field:get_data(player_data);
if equip_skill_211_timer == nil then
error_handler.report("skills.update_spiribirds_call", "Failed to access Data: equip_skill_211_timer");
@@ -731,43 +813,34 @@ function this.update_spiribirds_call(player_data)
local timer = spiribirds_call_duration - (equip_skill_211_timer / 60);
buffs.update_generic(this.list, skills_type_name, "spiribirds_call", this.get_skill_name, 1, timer, spiribirds_call_duration);
this.update_generic("spiribirds_call", 1, timer);
end
function this.update_powder_mantle(player_data)
this.update_generic_skill("powder_mantle_blue", player_data, equip_skill_227_state_field,
player_data, equip_skill_227_state_timer_field, nil, nil, nil, 2);
if not this.apply_filter("powder_mantle_blue") then
this.update_skill("powder_mantle_blue", player_data, equip_skill_227_state_field, player_data, equip_skill_227_state_timer_field, nil, 2);
end
if this.list.powder_mantle_blue ~= nil then
this.list.powder_mantle_red = nil;
return;
end
this.update_generic_skill("powder_mantle_red", player_data, equip_skill_227_state_field,
player_data, equip_skill_227_state_timer_field, nil, nil, nil);
end
function this.update_blood_awakening(player, player_data)
this.update_generic_skill("blood_awakening", player, get_equip_skill_232_lv_method,
player_data, equip_skill_232_timer_field,
nil, nil,
nil, nil, blood_awakening_breakpoints);
local blood_awakening = this.list.blood_awakening;
if this.list.blood_awakening == nil then
if this.apply_filter("powder_mantle_red") then
return;
end
local activation_time_field = activation_time_lv_1_field;
if blood_awakening.level == 2 then
activation_time_field = activation_time_lv_2_field;
this.update_skill("powder_mantle_red", player_data, equip_skill_227_state_field, player_data, equip_skill_227_state_timer_field);
end
function this.update_blood_awakening(player, player_data)
this.update_skill("blood_awakening", player, get_equip_skill_232_lv_method, player_data, equip_skill_232_timer_field, nil, nil, blood_awakening_breakpoints);
end
function this.init_all_UI()
for skill_key, skill in pairs(this.list) do
buffs.init_UI(skill);
end
local blood_awakening_param = get_equip_skill_232_param_method:call(player);
local blood_awakening_duration = activation_time_field:get_data(blood_awakening_param);
blood_awakening.duration = blood_awakening_duration / 60;
end
function this.init_names()
@@ -776,23 +849,22 @@ function this.init_names()
end
end
function this.get_skill_name(skill_key)
local skill_data = skill_data_list[skill_key];
function this.get_skill_name(key)
local skill_data = skill_data_list[key];
if skill_data == nil then
local skill_name = language.current_language.skills[skill_key];
local skill_name = language.current_language.skills[key];
if skill_name == nil then
return skill_key;
return key;
end
return skill_name;
end
local skill_name = get_name_method:call(nil, skill_data_list[skill_key].id);
local skill_name = get_name_method:call(nil, skill_data_list[key].id);
if skill_name == nil then
error_handler.report("skills.get_skill_name", string.format("Failed to access Data: %s_name", skill_key));
return skill_key;
error_handler.report("skills.get_skill_name", string.format("Failed to access Data: %s_name", key));
return key;
end
return skill_name;

File diff suppressed because it is too large Load Diff

View File

@@ -231,33 +231,6 @@ function this.update_damage(enemy, enemy_calc_damage_info)
players.update_damage(players.total, damage_source_type, is_large_monster, damage_object);
players.update_damage(player, damage_source_type, is_large_monster, damage_object);
--[[xy = string.format(
PhysicalPartsVitalDamage(): %s
PhysicalPartsBreakVitalDamage(): %s
PhysicalPartsLossVitalDamage(): %s
PhysicalMultiPartsVitalDamage(): %s
ElementPartsVitalDamage(): %s
ElementPartsBreakVitalDamage(): %s
ElementPartsLossVitalDamage(): %s
ElementMultiPartsVitalDamage(): %s
IsBreakPartsDamage(): %s
,
tostring(enemy_calc_damage_info:get_PhysicalPartsVitalDamage()),
tostring(enemy_calc_damage_info:get_PhysicalPartsBreakVitalDamage()),
tostring(enemy_calc_damage_info:get_PhysicalPartsLossVitalDamage()),
tostring(enemy_calc_damage_info:get_PhysicalMultiPartsVitalDamage()),
tostring(enemy_calc_damage_info:get_ElementPartsVitalDamage()),
tostring(enemy_calc_damage_info:get_ElementPartsBreakVitalDamage()),
tostring(enemy_calc_damage_info:get_ElementPartsLossVitalDamage()),
tostring(enemy_calc_damage_info:get_ElementMultiPartsVitalDamage()),
tostring(enemy_calc_damage_info:get_IsBreakPartsDamage())
);]]
end
function this.cart(dead_player_id, flag_cat_skill_insurance)

View File

@@ -156,7 +156,18 @@ function this.draw(creature, position_on_screen, opacity_scale)
position_on_screen.x = position_on_screen.x - text_width / 2;
end
drawing.draw_label(creature.name_label, position_on_screen, opacity_scale, creature.name .. " " .. creature.id);
local cached_config = config.current_config.endemic_life_UI.creature_name_label.include;
local name_text = "";
if cached_config.name then
name_text = string.format("%s ", creature.name);
end
if cached_config.id then
name_text = string.format("%s%s ", name_text, tostring(creature.id));
end
drawing.draw_label(creature.name_label, position_on_screen, opacity_scale, name_text);
end
function this.init_list()

View File

@@ -48,166 +48,166 @@ this.game_keyboard = nil;
this.scene_manager = nil;
this.game_manager = nil;
function this.init()
this.init_message_manager();
this.init_enemy_manager();
this.init_lobby_manager()
this.init_progress_manager();
this.init_quest_manager();
this.init_player_manager();
this.init_village_area_manager();
this.init_gui_manager();
this.init_game_keyboard();
this.init_scene_manager();
this.init_game_manager();
this.init_servant_manager();
this.init_otomo_manager();
this.init_long_sword_shell_manager();
this.init_light_bowgun_shell_manager();
this.init_horn_shell_manager();
function this.update()
this.update_message_manager();
this.update_enemy_manager();
this.update_lobby_manager()
this.update_progress_manager();
this.update_quest_manager();
this.update_player_manager();
this.update_village_area_manager();
this.update_gui_manager();
this.update_game_keyboard();
this.update_scene_manager();
this.update_game_manager();
this.update_servant_manager();
this.update_otomo_manager();
this.update_long_sword_shell_manager();
this.update_light_bowgun_shell_manager();
this.update_horn_shell_manager();
end
function this.init_message_manager()
function this.update_message_manager()
this.message_manager = sdk.get_managed_singleton("snow.gui.MessageManager");
if this.message_manager == nil then
error_handler.report("singletons.init_message_manager", "Failed to access Data: message_manager");
error_handler.report("singletons.update_message_manager", "Failed to access Data: message_manager");
end
return this.message_manager;
end
function this.init_enemy_manager()
function this.update_enemy_manager()
this.enemy_manager = sdk.get_managed_singleton("snow.enemy.EnemyManager");
if this.enemy_manager == nil then
error_handler.report("singletons.init_enemy_manager", "Failed to access Data: enemy_manager");
error_handler.report("singletons.update_enemy_manager", "Failed to access Data: enemy_manager");
end
return this.enemy_manager;
end
function this.init_lobby_manager()
function this.update_lobby_manager()
this.lobby_manager = sdk.get_managed_singleton("snow.LobbyManager");
if this.lobby_manager == nil then
error_handler.report("singletons.init_lobby_manager", "Failed to access Data: lobby_manager");
error_handler.report("singletons.update_lobby_manager", "Failed to access Data: lobby_manager");
return false;
end
return this.lobby_manager;
end
function this.init_progress_manager()
function this.update_progress_manager()
this.progress_manager = sdk.get_managed_singleton("snow.progress.ProgressManager");
if this.progress_manager == nil then
error_handler.report("singletons.init_lobby_manager", "Failed to access Data: progress_manager");
error_handler.report("singletons.update_progress_manager", "Failed to access Data: progress_manager");
return false;
end
return this.progress_manager;
end
function this.init_quest_manager()
function this.update_quest_manager()
this.quest_manager = sdk.get_managed_singleton("snow.QuestManager");
if this.quest_manager == nil then
error_handler.report("singletons.init_quest_manager", "Failed to access Data: quest_manager");
error_handler.report("singletons.update_quest_manager", "Failed to access Data: quest_manager");
end
return this.quest_manager;
end
function this.init_player_manager()
function this.update_player_manager()
this.player_manager = sdk.get_managed_singleton("snow.player.PlayerManager");
if this.player_manager == nil then
error_handler.report("singletons.init_player_manager", "Failed to access Data: player_manager");
error_handler.report("singletons.update_player_manager", "Failed to access Data: player_manager");
end
return this.player_manager;
end
function this.init_village_area_manager()
function this.update_village_area_manager()
this.village_area_manager = sdk.get_managed_singleton("snow.VillageAreaManager");
if this.village_area_manager == nil then
error_handler.report("singletons.init_village_area_manager", "Failed to access Data: village_area_manager");
error_handler.report("singletons.update_village_area_manager", "Failed to access Data: village_area_manager");
end
return this.village_area_manager;
end
function this.init_gui_manager()
function this.update_gui_manager()
this.gui_manager = sdk.get_managed_singleton("snow.gui.GuiManager");
if this.gui_manager == nil then
error_handler.report("singletons.init_gui_manager", "Failed to access Data: gui_manager");
error_handler.report("singletons.update_gui_manager", "Failed to access Data: gui_manager");
end
return this.gui_manager;
end
function this.init_game_keyboard()
function this.update_game_keyboard()
this.game_keyboard = sdk.get_managed_singleton("snow.GameKeyboard");
if this.game_keyboard == nil then
error_handler.report("singletons.init_game_keyboard", "Failed to access Data: game_keyboard");
error_handler.report("singletons.update_game_keyboard", "Failed to access Data: game_keyboard");
end
return this.game_keyboard;
end
function this.init_scene_manager()
function this.update_scene_manager()
this.scene_manager = sdk.get_native_singleton("via.SceneManager");
if this.scene_manager == nil then
error_handler.report("singletons.init_scene_manager", "Failed to access Data: scene_manager");
error_handler.report("singletons.update_scene_manager", "Failed to access Data: scene_manager");
end
return this.scene_manager;
end
function this.init_game_manager()
function this.update_game_manager()
this.game_manager = sdk.get_managed_singleton("snow.SnowGameManager");
if this.game_manager == nil then
error_handler.report("singletons.init_game_manager", "Failed to access Data: game_manager");
error_handler.report("singletons.update_game_manager", "Failed to access Data: game_manager");
end
return this.game_manager;
end
function this.init_servant_manager()
function this.update_servant_manager()
this.servant_manager = sdk.get_managed_singleton("snow.ai.ServantManager");
if this.servant_manager == nil then
error_handler.report("singletons.init_servant_manager", "Failed to access Data: servant_manager");
error_handler.report("singletons.update_servant_manager", "Failed to access Data: servant_manager");
end
return this.servant_manager;
end
function this.init_otomo_manager()
function this.update_otomo_manager()
this.otomo_manager = sdk.get_managed_singleton("snow.otomo.OtomoManager");
if this.otomo_manager == nil then
error_handler.report("singletons.init_otomo_manager", "Failed to access Data: otomo_manager");
error_handler.report("singletons.update_otomo_manager", "Failed to access Data: otomo_manager");
end
return this.otomo_manager;
end
function this.init_long_sword_shell_manager()
function this.update_long_sword_shell_manager()
this.long_sword_shell_manager = sdk.get_managed_singleton("snow.shell.LongSwordShellManager");
if this.long_sword_shell_manager == nil then
error_handler.report("singletons.init_long_sword_shell_manager", "Failed to access Data: long_sword_shell_manager");
error_handler.report("singletons.update_long_sword_shell_manager", "Failed to access Data: long_sword_shell_manager");
end
return this.long_sword_shell_manager;
end
function this.init_light_bowgun_shell_manager()
function this.update_light_bowgun_shell_manager()
this.light_bowgun_shell_manager = sdk.get_managed_singleton("snow.shell.LightBowgunShellManager");
if this.light_bowgun_shell_manager == nil then
error_handler.report("singletons.init_light_bowgun_shell_manager", "Failed to access Data: light_bowgun_shell_manager");
error_handler.report("singletons.update_light_bowgun_shell_manager", "Failed to access Data: light_bowgun_shell_manager");
end
return this.light_bowgun_shell_manager;
end
function this.init_horn_shell_manager()
function this.update_horn_shell_manager()
this.horn_shell_manager = sdk.get_managed_singleton("snow.shell.HornShellManager");
if this.horn_shell_manager == nil then
error_handler.report("singletons.init_horn_shell_manager", "Failed to access Data: horn_shell_manager");
error_handler.report("singletons.update_horn_shell_manager", "Failed to access Data: horn_shell_manager");
end
return this.horn_shell_manager;
@@ -221,7 +221,7 @@ function this.init_dependencies()
end
function this.init_module()
this.init();
this.update();
end
return this;

View File

@@ -72,7 +72,6 @@ function this.new_timer(callback, cooldown_seconds, start_offset_seconds)
timer.last_trigger_time = os.clock() + start_offset_seconds;
this.timer_list[callback] = timer;
end
function this.new_delay_timer(callback, delay)
@@ -89,22 +88,29 @@ function this.new_delay_timer(callback, delay)
this.delay_timer_list[callback] = delay_timer;
return delay_timer;
end
function this.remove_delay_timer(delay_timer)
if delay_timer == nil then
return;
end
this.delay_timer_list[delay_timer.callback] = nil;
end
function this.init_global_timers()
this.new_timer(singletons.init, 1);
this.new_timer(screen.update_window_size, 1);
this.new_timer(quest_status.update_is_online, 1);
this.new_timer(this.update_quest_time, 1 / 60);
this.new_timer(players.update_players, 0.5);
this.new_timer(players.update_myself_position, 1);
this.new_timer(buffs.update, 1/60);
this.new_timer(player_info.update, 0.5);
local cached_config = config.current_config.global_settings.performance.timer_delays;
this.timer_list = {};
this.new_timer(singletons.update, cached_config.update_singletons_delay);
this.new_timer(screen.update_window_size, cached_config.update_window_size_delay);
this.new_timer(quest_status.update_is_online, cached_config.update_is_online_delay);
this.new_timer(this.update_quest_time, cached_config.update_quest_time_delay);
this.new_timer(players.update_players, cached_config.update_players_delay);
this.new_timer(players.update_myself_position, cached_config.update_myself_position_delay);
this.new_timer(buffs.update, cached_config.update_buffs_delay);
this.new_timer(player_info.update, cached_config.update_player_info_delay);
end
function this.update_timers()

File diff suppressed because it is too large Load Diff

View File

@@ -37,47 +37,53 @@ local package = package;
this.language_folder = "MHR Overlay\\languages\\";
--[[
EXAMPLE:
unicode_glyph_ranges = {
0x0020, 0x00FF, -- Basic Latin + Latin Supplement
0x2000, 0x206F, -- General Punctuation
0x3000, 0x30FF, -- CJK Symbols and Punctuations, Hiragana, Katakana
0x31F0, 0x31FF, -- Katakana Phonetic Extensions
0x4e00, 0x9FAF, -- CJK Ideograms
0xFF00, 0xFFEF, -- Half-width characters
0
},
]]
-- this.chinese_ranges = {
-- 0x0020, 0x00FF, -- Basic Latin + Latin Supplement
-- 0x2000, 0x206F, -- General Punctuations
-- 0x2E80, 0x2EFF, -- CJK Radicals Supplement
-- 0x3000, 0x303F, -- CJK Symbols and Punctuations
-- 0x3200, 0x4DBF, -- Enclosed CJK Letters and Months, CJK Compatibility, CJK Unified Ideographs Extension A
-- 0x4E00, 0x9FFF, -- CJK Unified Ideograms
-- 0xF900, 0xFAFF, -- CJK Compatibility Ideographs
-- 0xFE30, 0xFE4F, -- CJK Compatibility Forms
-- 0xFF00, 0xFFEF, -- Half-width characters
-- 0
-- };
--[[
EXAMPLE:
unicode_glyph_ranges = {
0x0020, 0x00FF, -- Basic Latin + Latin Supplement
0x0400, 0x052F, -- Cyrillic
0x2000, 0x206F, -- General Punctuation
0xFF00, 0xFFEF, -- Half-width characters
0
},
]]
-- this.japanese_glyph_ranges = {
-- 0x0020, 0x00FF, -- Basic Latin + Latin Supplement
-- 0x2000, 0x206F, -- General Punctuation
-- 0x2E80, 0x2EFF, -- CJK Radicals Supplement
-- 0x3000, 0x30FF, -- CJK Symbols and Punctuations, Hiragana, Katakana
-- 0x31F0, 0x4DBF, -- Katakana Phonetic Extensions, Enclosed CJK Letters and Months, CJK Compatibility, CJK Unified Ideographs Extension A
-- 0x4E00, 0x9FFF, -- CJK Unified Ideograms
-- 0xF900, 0xFAFF, -- CJK Compatibility Ideographs
-- 0xFE30, 0xFE4F, -- CJK Compatibility Forms
-- 0xFF00, 0xFFEF, -- Half-width characters
-- 0
-- };
--[[
EXAMPLE:
unicode_glyph_ranges = {
0x0020, 0x00FF, -- Basic Latin + Latin Supplement
0x1100, 0x11FF, -- Hangul Jamo
0x2000, 0x206F, -- General Punctuation
0x3130, 0x318F, -- Hangul Compatibility Jamo
0xAC00, 0xD7AF, -- Hangul Syllables
0xFF00, 0xFFEF, -- Half-width characters
0
},
]]
-- this.korean_glyph_ranges = {
-- 0x0020, 0x00FF, -- Basic Latin + Latin Supplement
-- 0x1100, 0x11FF, -- Hangul Jamo
-- 0x2000, 0x206F, -- General Punctuation
-- 0x2E80, 0x2EFF, -- CJK Radicals Supplement
-- 0x3000, 0x303F, -- CJK Symbols and Punctuations
-- 0x3130, 0x318F, -- Hangul Compatibility Jamo
-- 0x3200, 0x4DBF, -- Enclosed CJK Letters and Months, CJK Compatibility, CJK Unified Ideographs Extension A
-- 0x4E00, 0x9FFF, -- CJK Unified Ideograms
-- 0xAC00, 0xD7AF, -- Hangul Syllables
-- 0xF900, 0xFAFF, -- CJK Compatibility Ideographs
-- 0xFE30, 0xFE4F, -- CJK Compatibility Forms
-- 0xFF00, 0xFFEF, -- Half-width characters
-- 0
-- }
this.current_language = {};
this.default_language = {
font_name = "",
unicode_glyph_ranges = {0},
font_name = nil,
unicode_glyph_ranges = nil,
parts = {
head = "Head",
neck = "Neck",
@@ -180,8 +186,8 @@ this.default_language = {
fireblight = "Fireblight",
waterblight = "Waterblight",
iceblight = "Iceblight",
thunderblight = "Thunderblight",
iceblight = "Iceblight",
fall_trap = "Fall Trap",
shock_trap = "Shock Trap",
@@ -218,75 +224,238 @@ this.default_language = {
frenzy_overcome = "Frenzy Overcome"
},
item_buffs = {
demondrug = "Demondrug",
mega_demondrug = "Mega Demondrug",
armorskin = "Armorskin",
mega_armorskin = "Mega Armorskin",
might_seed = "Might Seed",
adamant_seed = "Adamant Seed",
demon_powder = "Demon Powder",
hardshell_powder = "Hardshell Powder",
immunizer = "Immunizer",
dash_juice = "Dash Juice",
gourmet_fish = "Gourmet Fish",
demon_ammo = "Demon Ammo",
armor_ammo = "Armor Ammo",
},
endemic_life = {
cutterfly = "Cutterfly",
clothfly = "Clothfly",
butterflame = "Butterflame",
peepersects = "Peepersects",
stinkmink = "Stinkmink",
ruby_wirebug = "Ruby Wirebug",
gold_wirebug = "Gold Wirebug",
red_lampsquid = "Red Lampsquid",
yellow_lampsquid = "Yellow Lampsquid"
},
melody_effects = {
self_improvement = "Self-Improvement",
attack_up = "Attack Up",
defense_up ="Defense Up",
affinity_up = "Affinity Up",
elemental_attack_boost = "Elemental Attack Boost",
attack_and_defense_up = "Attack and Defense Up",
attack_and_affinity_up = "Attack and Affinity Up",
knockbacks_negated = "Knockbacks Negated",
earplugs_s = "Earplugs (S)",
earplugs_l = "Earplugs (L)",
tremors_negated = "Tremors Negated",
wind_pressure_negated = "Wind Pressure Negated",
stun_negated = "Stun Negated",
blight_negated = "Blight Negated",
divine_protection = "Divine Protection",
health_recovery_s = "Health Recovery (S)",
health_recovery_l = "Health Recovery (L)",
health_recovery_s_antidote = "Health Recovery (S) + Antidote",
health_regeneration = "Health Regeneration",
stamina_use_reduced = "Stamina Use Reduced",
stamina_recovery_up = "Stamina Recovery Up",
sharpness_loss_reduced = "Sharpness Loss Reduced",
environment_damage_negated = "Environment Damage Negated",
sonic_wave = "Sonic Wave",
sonic_barrier = "Sonic Barrier",
infernal_melody = "Infernal Melody",
sharpness_regeneration = "Sharpness Regeneration",
sharpness_extension = "Sharpness Extension",
},
dango_skills = {
dango_insurance_defense_up = "Dango Insurance Defense Up"
dango_adrenaline = "Dango Adrenaline",
dango_booster = "Dango Booster",
dango_bulker = "Dango Bulker",
dango_connector = "Dango Connector",
dango_defender = "Dango Defender",
dango_flyer = "Dango Flyer",
dango_glutton = "Dango Glutton",
dango_hunter = "Dango Hunter",
dango_insurance = "Dango Insurance",
dango_insurance_defense_up = "Dango Insurance Defense Up",
super_recovery_dango = "Super Recovery Dango"
},
rampage_skills = {
chameleos_soul = "Chameleos Soul",
kushala_daora_soul = "Kushala Daora Soul"
},
skills = {
adrenaline_rush = "Adrenaline Rush",
affinity_sliding = "Affinity Sliding",
agitator = "Agitator",
berserk = "Berserk",
bladescale_hone = "Bladescale Hone",
blood_awakening = "Blood Awakening",
bloodlust = "Bloodlust",
burst = "Burst",
coalescence = "Coalescence",
counterstrike = "Counterstrike",
dereliction = "Dereliction",
dragon_conversion_elemental_attack_up = "Dragon Conversion: Elem. Atk Up",
dragon_conversion_elemental_res_up = "Dragon Conversion: Elem. Res Up",
dragonheart = "Dragonheart",
embolden = "Embolden",
frenzied_bloodlust = "Frenzied Bloodlust",
furious = "Furious",
grinder_s = "Grinder (S)",
heaven_sent = "Heaven-Sent",
hellfire_cloak = "Hellfire Cloak",
heroics = "Heroics",
inspiration = "Inspiration",
intrepid_heart = "Intrepid Heart",
latent_power = "Latent Power",
maximum_might = "Maximum Might",
offensive_guard = "Offensive Guard",
partbreaker = "Partbreaker",
peak_performance = "Peak Performance",
powder_mantle_red = "Powder Mantle (Red)",
powder_mantle_blue = "Powder Mantle (Blue)",
dragon_conversion_elemental_attack_up = "Dragon Conversion Elem. Atk Up",
dragon_conversion_elemental_res_up = "Dragon Conversion Elem. Res Up",
protective_polish = "Protective Polish",
resentment = "Resentment",
resuscitate = "Resuscitate",
spiribirds_call = "Spiribird's Call",
status_trigger = "Status Trigger",
strife = "Strife",
wall_runner = "Wall Runner",
wind_mantle = "Wind Mantle"
},
weapons = {
great_sword = "Great Sword",
long_sword = "Long Sword",
sword_and_shield = "Sword & Shield",
dual_blades = "Dual Blades",
lance = "Lance",
gunlance = "Gunlance",
hammer = "Hammer",
hunting_horn = "Hunting Horn",
switch_axe = "Switch Axe",
charge_blade = "Charge Blade",
insect_glaive = "Insect Glaive",
light_bowgun = "Light Bowgun",
heavy_bowgun = "Heavy Bowgun",
bow = "Bow"
},
weapon_skills = {
-- Great Sword
power_sheathe = "Power Sheathe",
-- Switch Axe
amped_state = "Amped State",
switch_charger = "Switch Charger",
axe_heavy_slam = "Axe: Heavy Slam",
great_sword = {
power_sheathe = "Power Sheathe"
},
-- Long Sword
spirit_gauge_autofill = "Spirit Gauge Autofill", -- Soaring Kick, Iai Slash
spirit_gauge = "Spirit Gauge",
--harvest_moon = "Harvest Moon",
-- Light Bowgun
--fanning_maneuver = "Fanning Maneuver",
wyvernblast_reload = "Wyvernblast Reload",
-- Heavy Bowgun
--counter_charger = "Counter Charger",
--rising_moon = "Rising Moon",
--setting_sun = "Setting Sun",
overheat = "Overheat",
wyvernsnipe_reload = "Wyvernsnipe Reload",
-- Hammer
--impact_burst = "Impact Burst",
-- Gunlance
--ground_splitter = "Ground Splitter",
--erupting_cannon = "Erupting Cannon",
-- Lance
--anchor_rage = "Anchor Rage",
--spiral_thrust = "Spiral Thrust",
twin_wine = "Twin Wine",
long_sword = {
harvest_moon = "Harvest Moon",
iai_slash = "Iai Slash",
soaring_kick = "Soaring Kick",
spirit_gauge = "Spirit Gauge",
spirit_gauge_autofill = "Spirit Gauge Autofill", -- Soaring Kick, Iai Slash
},
-- Sword & Shield
--destroyer_oil = "Destroyer Oil",
sword_and_shield = {
destroyer_oil = "Destroyer Oil"
},
-- Dual Blades
ironshine_silk = "Ironshine Silk",
archdemon_mode = "Archdemon Mode",
dual_blades = {
archdemon_mode = "Archdemon Mode",
ironshine_silk = "Ironshine Silk"
},
-- Lance
lance = {
anchor_rage = "Anchor Rage",
spiral_thrust = "Spiral Thrust",
twin_wine = "Twin Wine"
},
-- Gunlance
gunlance = {
erupting_cannon = "Erupting Cannon",
ground_splitter = "Ground Splitter"
},
-- Hammer
hammer = {
impact_burst = "Impact Burst"
},
-- Hunting Horn
--silkbind_shockwave = "Silkbind Shockwave",
--bead_of_resonance = "Bead of Resonance",
--sonic_bloom = "Sonic Bloom",
hunting_horn = {
bead_of_resonance = "Bead of Resonance",
silkbind_shockwave = "Silkbind Shockwave",
sonic_bloom = "Sonic Bloom"
},
-- Switch Axe
switch_axe = {
amped_state = "Amped State",
axe_heavy_slam = "Axe: Heavy Slam",
switch_charger = "Switch Charger"
},
-- Charge Blade
element_boost = "Element Boost",
sword_boost_mode ="Sword Boost Mode",
charge_blade = {
element_boost = "Element Boost",
sword_boost_mode = "Sword Boost Mode"
},
-- Insect Glaive
red_extract = "Red Extract",
white_extract = "White Extract",
orange_extract = "Orange Extract",
all_extracts_mix = "All Extracts Mix",
insect_glaive = {
red_extract = "Red Extract",
white_extract = "White Extract",
orange_extract = "Orange Extract",
all_extracts_mix = "All Extracts Mix"
},
-- Light Bowgun
light_bowgun = {
fanning_maneuver = "Fanning Maneuver",
wyvernblast_reload = "Wyvernblast Reload"
},
-- Heavy Bowgun
heavy_bowgun = {
counter_charger = "Counter Charger",
overheat = "Overheat",
rising_moon = "Rising Moon",
setting_sun = "Setting Sun",
wyvernsnipe_reload = "Wyvernsnipe Reload"
},
-- Bow
herculean_draw = "Herculean Draw",
--bolt_boost = "Bolt Boost",
arc_shot_affinity = "Arc Shot: Affinity",
arc_shot_brace = "Arc Shot: Brace",
bow = {
arc_shot_affinity = "Arc Shot: Affinity",
arc_shot_brace = "Arc Shot: Brace",
bolt_boost = "Bolt Boost",
herculean_draw = "Herculean Draw"
}
},
otomo_moves = {
go_fight_win = "Go, Fight, Win",
power_drum = "Power Drum",
rousing_roar = "Rousing Roar",
vase_of_vitality = "Vase of Vitality",
},
misc_buffs = {
attack_up = "Attack Up",
defense_up = "Defense Up",
stamina_use_down = "Stamina Use Down",
immunity = "Immunity"
immunity = "Immunity",
natural_healing_up = "Natural Healing Up"
},
UI = {
@@ -310,6 +479,26 @@ this.default_language = {
lv = ""
},
stats = {
attack = "Attack",
defense = "Defense",
affinity = "Affinity",
fire_resistance = "Fire Res";
water_resistance = "Water Res";
thunder_resistance = "Thunder Res";
ice_resistance = "Ice Res";
dragon_resistance = "Dragon Res";
stamina = "Stamina",
fire = "Fire",
water = "Water",
thunder = "Thunder",
ice = "Ice",
dragon = "Dragon",
},
customization_menu = {
mod_name = "MHR Overlay";
status = "Status",
@@ -687,31 +876,36 @@ this.default_language = {
ice_resistance_label = "Ice Resistance Label",
dragon_resistance_label = "Dragon Resistance Label",
element_label = "Element Label",
element_2_label = "Element 2 Label"
element_2_label = "Element 2 Label",
abnormal_statuses = "Abnormal Statuses",
item_buffs = "Item Buffs",
endemic_life_buffs = "Endemic Life Buffs",
melody_effects = "Melody Effects",
dango_skills = "Dango Skills",
rampage_skills = "Rampage Skills",
skills = "Skills",
weapon_skills = "Weapon Skills",
otomo_moves = "Buddy Moves",
misc_buffs = "Misc Buffs",
timer_delays = "Timer Delays",
update_singletons_delay = "Update Singletons (seconds)",
update_window_size_delay = "Update Window Size (seconds)",
update_quest_time_delay = "Update Quest Time (seconds)",
update_is_online_delay = "Update Is Online (seconds)",
update_players_delay = "Update Players (seconds)",
update_myself_position_delay = "Update Myself Position (seconds)",
update_player_info_delay = "Update Player Info (seconds)",
update_buffs_delay = "Update Buffs (seconds)",
infinite_buffs_location = "Infinite Buffs Location",
effect_level = "Effect Level",
},
stats = {
attack = "Attack",
defense = "Defense",
affinity = "Affinity",
fire_resistance = "Fire Res";
water_resistance = "Water Res";
thunder_resistance = "Thunder Res";
ice_resistance = "Ice Res";
dragon_resistance = "Dragon Res";
stamina = "Stamina",
fire = "Fire",
water = "Water",
thunder = "Thunder",
ice = "Ice",
dragon = "Dragon",
}
};
this.language_names = { "default"};
this.language_names = { "default" };
this.languages = { this.default_language };
function this.load()
@@ -765,9 +959,21 @@ function this.init_dependencies()
end
function this.init_module()
this.save_default();
this.load();
this.current_language = this.default_language;
this.default_language.font_name = "NotoSans-Bold.otf";
this.default_language.unicode_glyph_ranges = {
0x0020, 0x00FF, -- Basic Latin + Latin Supplement
0x0100, 0x024F, -- Latin Extended-A, Latin Extended-B,
0x0400, 0x052F, -- Cyrillic, Cyrillic Supplementary
0x1E00, 0x1EFF, -- Latin Extended Additional
0x2000, 0x206F, -- General Punctuation
0xFF00, 0xFFEF, -- Halfwidth and Fullwidth Forms
0
};
this.save_default();
end
return this;

View File

@@ -9,6 +9,7 @@ local error_handler;
local quest_status;
local time;
local dango_skills;
local skills;
local sdk = sdk;
local tostring = tostring;
@@ -104,6 +105,8 @@ local player_quest_base_update_method = player_quest_base_type_def:get_method("u
local is_master_player_method = player_quest_base_type_def:get_method("isMasterPlayer");
local player_base_type_def = sdk.find_type_definition("snow.player.PlayerBase");
-- Heroics
local is_predicament_power_up_method = player_base_type_def:get_method("isPredicamentPowerUp");
-- Dango Adrenaline
local is_kitchen_skill_predicament_powerup_method = player_base_type_def:get_method("isKitchenSkillPredicamentPowerUp");
@@ -273,6 +276,7 @@ function this.on_pre_player_update(quest_player_base)
end
this.update_health(quest_player_base);
this.update_heroics(quest_player_base);
this.update_dango_adrenaline(quest_player_base);
should_health_update = false;
@@ -288,7 +292,25 @@ function this.update_health(quest_player_base)
this.list.health = vital;
end
function this.update_heroics(quest_player_base)
if not config.current_config.buff_UI.filter.skills.heroics then
return;
end
local is_predicament_power_up = is_predicament_power_up_method:call(master_player_ref);
if is_predicament_power_up == nil then
error_handler.report("player_info.update_heroics", "Failed to access Data: is_predicament_power_up");
return;
end
skills.is_heroics_active = is_predicament_power_up;
end
function this.update_dango_adrenaline(quest_player_base)
if not config.current_config.buff_UI.filter.dango_skills.dango_adrenaline then
return;
end
local is_kitchen_skill_predicament_powerup = is_kitchen_skill_predicament_powerup_method:call(master_player_ref);
if is_kitchen_skill_predicament_powerup == nil then
error_handler.report("player_info.update_dango_adrenaline", "Failed to access Data: is_kitchen_skill_predicament_powerup");
@@ -313,6 +335,7 @@ function this.init_dependencies()
quest_status = require("MHR_Overlay.Game_Handler.quest_status");
time = require("MHR_Overlay.Game_Handler.time");
dango_skills = require("MHR_Overlay.Buffs.dango_skills");
skills = require("MHR_Overlay.Buffs.skills");
end
function this.init_module()

View File

@@ -56,143 +56,274 @@ function this.update()
local _displayed_buffs = {};
for key, abnormal_status in pairs(abnormal_statuses.list) do
if abnormal_status.is_visible then
table.insert(_displayed_buffs, abnormal_status);
end
end
for key, item_buff in pairs(item_buffs.list) do
if not item_buff.is_active then
goto continue;
if item_buff.is_visible then
table.insert(_displayed_buffs, item_buff);
end
end
table.insert(_displayed_buffs, item_buff);
for key, endemic_life_buff in pairs(endemic_life_buff.list) do
::continue::
if endemic_life_buff.is_visible then
table.insert(_displayed_buffs, endemic_life_buff);
end
end
for _, melody_effect in pairs(melody_effects.list) do
if not melody_effect.is_active then
goto continue2;
if melody_effect.is_visible then
table.insert(_displayed_buffs, melody_effect);
end
table.insert(_displayed_buffs, melody_effect);
::continue2::
end
for key, endemic_life_buff in pairs(endemic_life_buff.list) do
if not endemic_life_buff.is_active then
goto continue3;
end
table.insert(_displayed_buffs, endemic_life_buff);
::continue3::
end
for key, skill in pairs(skills.list) do
if not skill.is_active then
goto continue4;
end
table.insert(_displayed_buffs, skill);
::continue4::
end
for key, dango_skill in pairs(dango_skills.list) do
if not dango_skill.is_active then
goto continue5;
if dango_skill.is_visible then
table.insert(_displayed_buffs, dango_skill);
end
table.insert(_displayed_buffs, dango_skill);
::continue5::
end
for key, abnormal_status in pairs(abnormal_statuses.list) do
if not abnormal_status.is_active then
goto continue6;
end
table.insert(_displayed_buffs, abnormal_status);
::continue6::
end
for key, otomo_move in pairs(otomo_moves.list) do
if not otomo_move.is_active then
goto continue7;
end
table.insert(_displayed_buffs, otomo_move);
::continue7::
end
for key, weapon_skill in pairs(weapon_skills.list) do
if not weapon_skill.is_active then
goto continue8;
end
table.insert(_displayed_buffs, weapon_skill);
::continue8::
end
for key, rampage_skill in pairs(rampage_skills.list) do
if not rampage_skill.is_active then
goto continue9;
if rampage_skill.is_visible then
table.insert(_displayed_buffs, rampage_skill);
end
end
table.insert(_displayed_buffs, rampage_skill);
for key, skill in pairs(skills.list) do
::continue9::
if skill.is_visible then
table.insert(_displayed_buffs, skill);
end
end
for key, weapon_skill in pairs(weapon_skills.list) do
if weapon_skill.is_visible then
table.insert(_displayed_buffs, weapon_skill);
end
end
for key, otomo_move in pairs(otomo_moves.list) do
if otomo_move.is_visible then
table.insert(_displayed_buffs, otomo_move);
end
end
for key, misc_buffs in pairs(misc_buffs.list) do
if not misc_buffs.is_active then
goto continue10;
if misc_buffs.is_visible then
table.insert(_displayed_buffs, misc_buffs);
end
table.insert(_displayed_buffs, misc_buffs);
::continue10::
end
displayed_buffs = this.sort_buffs(_displayed_buffs, cached_config);
end
function this.sort_buffs(_displayed_buffs, cached_config)
local infinite_buffs_location = cached_config.settings.infinite_buffs_location;
cached_config = cached_config.sorting;
if cached_config.type == "Name" then
if cached_config.reversed_order then
table.sort(_displayed_buffs, function(left, right)
return left.name > right.name;
if infinite_buffs_location == "First" then
if left.is_infinite and right.is_infinite then
return left.name < right.name;
elseif left.is_infinite then
return true;
elseif right.is_infinite then
return false;
else
return left.name < right.name;
end
elseif infinite_buffs_location == "Last" then
if left.is_infinite and right.is_infinite then
return left.name < right.name;
elseif left.is_infinite then
return false;
elseif right.is_infinite then
return true;
else
return left.name < right.name;
end
else
return left.name < right.name;
end
end);
else
table.sort(_displayed_buffs, function(left, right)
return left.name < right.name;
if infinite_buffs_location == "First" then
if left.is_infinite and right.is_infinite then
return left.name > right.name;
elseif left.is_infinite then
return false;
elseif right.is_infinite then
return true;
else
return left.name > right.name;
end
elseif infinite_buffs_location == "Last" then
if left.is_infinite and right.is_infinite then
return left.name > right.name;
elseif left.is_infinite then
return true;
elseif right.is_infinite then
return false;
else
return left.name > right.name;
end
else
return left.name > right.name;
end
end);
end
elseif cached_config.type == "Timer" then
if cached_config.reversed_order then
table.sort(_displayed_buffs, function(left, right)
return left.timer > right.timer;
if infinite_buffs_location == "First" then
if left.is_infinite and right.is_infinite then
return left.timer < right.timer;
elseif left.is_infinite then
return true;
elseif right.is_infinite then
return false;
else
return left.timer < right.timer;
end
elseif infinite_buffs_location == "Last" then
if left.is_infinite and right.is_infinite then
return left.timer < right.timer;
elseif left.is_infinite then
return false;
elseif right.is_infinite then
return true;
else
return left.timer < right.timer;
end
else
return left.timer < right.timer;
end
end);
else
table.sort(_displayed_buffs, function(left, right)
return left.timer < right.timer;
if infinite_buffs_location == "First" then
if left.is_infinite and right.is_infinite then
return left.timer > right.timer;
elseif left.is_infinite then
return false;
elseif right.is_infinite then
return true;
else
return left.timer > right.timer;
end
elseif infinite_buffs_location == "Last" then
if left.is_infinite and right.is_infinite then
return left.timer > right.timer;
elseif left.is_infinite then
return true;
elseif right.is_infinite then
return false;
else
return left.timer > right.timer;
end
else
return left.timer > right.timer;
end
end);
end
else
else -- Duration
if cached_config.reversed_order then
table.sort(_displayed_buffs, function(left, right)
return left.duration > right.duration;
if infinite_buffs_location == "First" then
if left.is_infinite and right.is_infinite then
return left.duration < right.duration;
elseif left.is_infinite then
return true;
elseif right.is_infinite then
return false;
else
return left.duration < right.duration;
end
elseif infinite_buffs_location == "Last" then
if left.is_infinite and right.is_infinite then
return left.duration < right.duration;
elseif left.is_infinite then
return false;
elseif right.is_infinite then
return true;
else
return left.duration < right.duration;
end
else
return left.duration < right.duration;
end
end);
else
table.sort(_displayed_buffs, function(left, right)
return left.duration < right.duration;
if infinite_buffs_location == "First" then
if left.is_infinite and right.is_infinite then
return left.duration > right.duration;
elseif left.is_infinite then
return false;
elseif right.is_infinite then
return true;
else
return left.duration > right.duration;
end
elseif infinite_buffs_location == "Last" then
if left.is_infinite and right.is_infinite then
return left.duration > right.duration;
elseif left.is_infinite then
return true;
elseif right.is_infinite then
return false;
else
return left.duration > right.duration;
end
else
return left.duration > right.duration;
end
end);
end
end

View File

@@ -73,9 +73,13 @@ function this.draw(buff, buff_UI, position_on_screen, opacity_scale)
drawing.draw_bar(buff_UI.bar, position_on_screen, opacity_scale, 1);
end
local buff_name = buff.name;
if cached_config.name_label.include.skill_level and buff.level > 1 then
buff_name = string.format("%s %s%d", buff_name, language.current_language.UI.lv, buff.level);
local buff_name = "";
if buff_UI.name_label.include.name then
buff_name = string.format("%s ", buff.name);
end
if buff_UI.name_label.include.effect_level and buff.level > 1 then
buff_name = string.format("%s%s%d", buff_name, language.current_language.UI.lv, buff.level);
end
drawing.draw_label(buff_UI.name_label, position_on_screen, opacity_scale, buff_name);

View File

@@ -13,11 +13,22 @@ local time_UI;
local keyboard;
local non_players;
local quest_status;
local buffs;
local error_handler;
local time;
local stats_UI;
local buffs;
local item_buffs;
local melody_effects;
local endemic_life_buffs;
local skills;
local dango_skills;
local abnormal_statuses;
local otomo_moves;
local weapon_skills;
local rampage_skills;
local misc_buffs;
local label_customization;
local bar_customization;
local large_monster_UI_customization;
@@ -88,6 +99,9 @@ this.displayed_monster_UI_sorting_types = {};
this.buff_UI_sorting_types = {};
this.displayed_buff_UI_sorting_types = {};
this.buff_UI_infinite_buffs_location_types = {};
this.displayed_buff_UI_infinite_buffs_location_types = {};
this.damage_meter_UI_highlighted_entity_types = {};
this.displayed_damage_meter_UI_highlighted_entity_types = {};
@@ -226,6 +240,20 @@ function this.init()
current.duration
};
this.buff_UI_infinite_buffs_location_types =
{
default.normal,
default.first,
default.last
};
this.displayed_buff_UI_infinite_buffs_location_types =
{
current.normal,
current.first,
current.last
};
this.damage_meter_UI_highlighted_entity_types =
{
default.top_damage,
@@ -360,6 +388,7 @@ function this.draw()
local modifiers_changed = false;
local modules_changed = false;
local global_settings_changed = false;
local timer_delays_changed = false;
local small_monster_UI_changed = false;
local large_monster_dynamic_UI_changed = false;
local large_monster_static_UI_changed = false;
@@ -394,7 +423,7 @@ function this.draw()
config_changed, apply_font_requested = this.draw_config();
modules_changed = this.draw_modules();
this.draw_hotkeys();
global_settings_changed, modifiers_changed, apply_font_requested, language_changed = this.draw_global_settings(apply_font_requested, config_changed);
global_settings_changed, modifiers_changed, timer_delays_changed, apply_font_requested, language_changed = this.draw_global_settings(apply_font_requested, config_changed);
small_monster_UI_changed = this.draw_small_monster_UI();
if imgui.tree_node(language.current_language.customization_menu.large_monster_UI) then
@@ -471,15 +500,17 @@ function this.draw()
end
if buff_UI_changed or modifiers_changed or config_changed then
for _, buff in pairs(buffs.list) do
buffs.init_UI(buff);
end
buffs.init_all_UI();
buffs.init_names();
end
if stats_UI_changed or modifiers_changed or config_changed then
stats_UI.init_UI();
end
if timer_delays_changed then
time.init_global_timers();
end
if this.menu_font_changed and (apply_font_requested or config_changed) then
this.menu_font_changed = false;
@@ -858,6 +889,7 @@ function this.draw_global_settings(apply_font_requested, language_changed)
local changed = false;
local config_changed = false;
local modifiers_changed = false;
local timer_delays_changed = false;
local index = 1;
@@ -997,6 +1029,67 @@ function this.draw_global_settings(apply_font_requested, language_changed)
config_changed = config_changed or changed;
if imgui.tree_node(language.current_language.customization_menu.timer_delays) then
changed, cached_config.performance.timer_delays.update_singletons_delay = imgui.drag_float(
language.current_language.customization_menu.update_singletons_delay,
cached_config.performance.timer_delays.update_singletons_delay, 0.001, 0.001, screen.width, "%.3f");
config_changed = config_changed or changed;
timer_delays_changed = timer_delays_changed or changed;
changed, cached_config.performance.timer_delays.update_window_size_delay = imgui.drag_float(
language.current_language.customization_menu.update_window_size_delay,
cached_config.performance.timer_delays.update_window_size_delay, 0.001, 0.001, screen.width, "%.3f");
config_changed = config_changed or changed;
timer_delays_changed = timer_delays_changed or changed;
changed, cached_config.performance.timer_delays.update_quest_time_delay = imgui.drag_float(
language.current_language.customization_menu.update_quest_time_delay,
cached_config.performance.timer_delays.update_quest_time_delay, 0.001, 0.001, screen.width, "%.3f");
config_changed = config_changed or changed;
timer_delays_changed = timer_delays_changed or changed;
changed, cached_config.performance.timer_delays.update_is_online_delay = imgui.drag_float(
language.current_language.customization_menu.update_is_online_delay,
cached_config.performance.timer_delays.update_is_online_delay, 0.001, 0.001, screen.width, "%.3f");
config_changed = config_changed or changed;
timer_delays_changed = timer_delays_changed or changed;
changed, cached_config.performance.timer_delays.update_players_delay = imgui.drag_float(
language.current_language.customization_menu.update_players_delay,
cached_config.performance.timer_delays.update_players_delay, 0.001, 0.001, screen.width, "%.3f");
config_changed = config_changed or changed;
timer_delays_changed = timer_delays_changed or changed;
changed, cached_config.performance.timer_delays.update_myself_position_delay = imgui.drag_float(
language.current_language.customization_menu.update_myself_position_delay,
cached_config.performance.timer_delays.update_myself_position_delay, 0.001, 0.001, screen.width, "%.3f");
config_changed = config_changed or changed;
timer_delays_changed = timer_delays_changed or changed;
changed, cached_config.performance.timer_delays.update_player_info_delay = imgui.drag_float(
language.current_language.customization_menu.update_player_info_delay,
cached_config.performance.timer_delays.update_player_info_delay, 0.001, 0.001, screen.width, "%.3f");
config_changed = config_changed or changed;
timer_delays_changed = timer_delays_changed or changed;
changed, cached_config.performance.timer_delays.update_buffs_delay = imgui.drag_float(
language.current_language.customization_menu.update_buffs_delay,
cached_config.performance.timer_delays.update_buffs_delay, 0.001, 0.001, screen.width, "%.3f");
config_changed = config_changed or changed;
timer_delays_changed = timer_delays_changed or changed;
imgui.tree_pop();
end
imgui.tree_pop();
end
@@ -1136,7 +1229,7 @@ function this.draw_global_settings(apply_font_requested, language_changed)
imgui.tree_pop();
end
return config_changed, modifiers_changed, apply_font_requested, language_changed;
return config_changed, modifiers_changed, timer_delays_changed, apply_font_requested, language_changed;
end
function this.draw_small_monster_UI()
@@ -1287,9 +1380,7 @@ function this.draw_small_monster_UI()
imgui.tree_pop();
end
changed = label_customization.draw(language.current_language.customization_menu.monster_name_label,
cached_config.monster_name_label);
changed = label_customization.draw(language.current_language.customization_menu.monster_name_label, cached_config.monster_name_label);
config_changed = config_changed or changed;
changed = health_customization.draw(cached_config.health);
@@ -1316,8 +1407,7 @@ function this.draw_large_monster_dynamic_UI()
if imgui.tree_node(language.current_language.customization_menu.dynamically_positioned) then
local cached_config = config.current_config.large_monster_UI.dynamic;
changed, cached_config.enabled = imgui.checkbox(
language.current_language.customization_menu.enabled, cached_config.enabled);
changed, cached_config.enabled = imgui.checkbox(language.current_language.customization_menu.enabled, cached_config.enabled);
config_changed = config_changed or changed;
@@ -2240,6 +2330,17 @@ function this.draw_buff_UI()
cached_config.settings.orientation = this.orientation_types[index];
end
changed, index = imgui.combo(
language.current_language.customization_menu.infinite_buffs_location,
utils.table.find_index(this.buff_UI_infinite_buffs_location_types, cached_config.settings.infinite_buffs_location),
this.displayed_buff_UI_infinite_buffs_location_types);
config_changed = config_changed or changed;
if changed then
cached_config.settings.infinite_buffs_location = this.buff_UI_infinite_buffs_location_types[index];
end
imgui.tree_pop();
end
@@ -2302,14 +2403,327 @@ function this.draw_buff_UI()
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;
if imgui.tree_node(language.current_language.customization_menu.filter) then
changed = label_customization.draw(language.current_language.customization_menu.timer_label, cached_config.timer_label);
config_changed = config_changed or changed;
if imgui.tree_node(language.current_language.customization_menu.abnormal_statuses) then
changed = bar_customization.draw(language.current_language.customization_menu.bar, cached_config.bar);
config_changed = config_changed or changed;
for _, key in ipairs(abnormal_statuses.keys) do
changed, cached_config.filter.abnormal_statuses[key] = imgui.checkbox(
abnormal_statuses.get_abnormal_status_name(key), cached_config.filter.abnormal_statuses[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.item_buffs) then
local cached_language = language.current_language.item_buffs;
for _, key in ipairs(item_buffs.keys) do
changed, cached_config.filter.item_buffs[key] = imgui.checkbox(cached_language[key], cached_config.filter.item_buffs[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.endemic_life_buffs) then
local cached_language = language.current_language.endemic_life;
for _, key in ipairs(endemic_life_buffs.keys) do
changed, cached_config.filter.endemic_life_buffs[key] = imgui.checkbox(cached_language[key], cached_config.filter.endemic_life_buffs[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.melody_effects) then
local cached_language = language.current_language.melody_effects;
for lua_index, key in ipairs(melody_effects.keys) do
-- Health Recovery (S), Health Recovery (L), Health Recovery (S) + (Antidote), Sonic Wave
if (lua_index >= 16 and lua_index <= 18) or lua_index == 24 then
goto continue;
end
changed, cached_config.filter.melody_effects[key] = imgui.checkbox(cached_language[key], cached_config.filter.melody_effects[key]);
config_changed = config_changed or changed;
::continue::
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.dango_skills) then
local cached_language = language.current_language.dango_skills;
for _, key in ipairs(dango_skills.keys) do
changed, cached_config.filter.dango_skills[key] = imgui.checkbox(cached_language[key], cached_config.filter.dango_skills[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.rampage_skills) then
local cached_language = language.current_language.rampage_skills;
for _, key in ipairs(rampage_skills.keys) do
changed, cached_config.filter.rampage_skills[key] = imgui.checkbox(cached_language[key], cached_config.filter.rampage_skills[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.skills) then
local cached_language = language.current_language.skills;
for _, key in ipairs(skills.keys) do
changed, cached_config.filter.skills[key] = imgui.checkbox(cached_language[key], cached_config.filter.skills[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.weapon_skills) then
for _, weapon in ipairs(weapon_skills.keys) do
if imgui.tree_node(language.current_language.weapons[weapon.key]) then
local cached_weapon_filter = cached_config.filter.weapon_skills[weapon.key];
local cached_language = language.current_language.weapon_skills[weapon.key];
for _, key in ipairs(weapon.skill_keys) do
local name = cached_language[key];
if key == "spirit_gauge_autofill" then
local soaring_kick_name = tostring(cached_language.soaring_kick);
local iai_slash_name = tostring(cached_language.iai_slash);
name = string.format("%s (%s, %s)", name, soaring_kick_name, iai_slash_name);
end
changed, cached_weapon_filter[key] = imgui.checkbox(
name, cached_weapon_filter[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.otomo_moves) then
local cached_language = language.current_language.otomo_moves;
for _, key in ipairs(otomo_moves.keys) do
changed, cached_config.filter.otomo_moves[key] = imgui.checkbox(cached_language[key], cached_config.filter.otomo_moves[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.misc_buffs) then
local cached_language = language.current_language.misc_buffs;
for _, key in ipairs(misc_buffs.keys) do
local name = cached_language[key];
if key == "attack_up" then
local might_seed_name = tostring(language.current_language.item_buffs.might_seed);
local dango_bulker_name = tostring(language.current_language.dango_skills.dango_bulker);
local chameleos_soul_name = tostring(language.current_language.rampage_skills.chameleos_soul);
name = string.format("%s (%s, %s, %s)", name, might_seed_name, dango_bulker_name, chameleos_soul_name);
elseif key == "defense_up" then
local adamant_seed_name = tostring(language.current_language.item_buffs.adamant_seed);
local chameleos_soul_name = tostring(language.current_language.rampage_skills.chameleos_soul);
name = string.format("%s (%s, %s)", name, adamant_seed_name, chameleos_soul_name);
elseif key == "stamina_use_down" then
local dash_juice_name = tostring(language.current_language.item_buffs.dash_juice);
local peepersects_name = tostring(language.current_language.endemic_life.peepersects);
local chameleos_soul_name = tostring(language.current_language.rampage_skills.chameleos_soul);
name = string.format("%s (%s, %s, %s)", name, dash_juice_name, peepersects_name, chameleos_soul_name);
elseif key == "natural_healing_up" then
local immunizer_name = tostring(language.current_language.item_buffs.immunizer);
local vase_of_vitality_name = tostring(language.current_language.otomo_moves.vase_of_vitality);
name = string.format("%s (%s, %s)", name, immunizer_name, vase_of_vitality_name);
end
changed, cached_config.filter.misc_buffs[key] = imgui.checkbox(name, cached_config.filter.misc_buffs[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.abnormal_statuses) then
changed = label_customization.draw(language.current_language.customization_menu.name_label, cached_config.abnormal_statuses.name_label);
config_changed = config_changed or changed;
changed = label_customization.draw(language.current_language.customization_menu.timer_label, cached_config.abnormal_statuses.timer_label);
config_changed = config_changed or changed;
changed = bar_customization.draw(language.current_language.customization_menu.bar, cached_config.abnormal_statuses.bar);
config_changed = config_changed or changed;
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.item_buffs) then
changed = label_customization.draw(language.current_language.customization_menu.name_label, cached_config.item_buffs.name_label);
config_changed = config_changed or changed;
changed = label_customization.draw(language.current_language.customization_menu.timer_label, cached_config.item_buffs.timer_label);
config_changed = config_changed or changed;
changed = bar_customization.draw(language.current_language.customization_menu.bar, cached_config.item_buffs.bar);
config_changed = config_changed or changed;
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.endemic_life_buffs) then
changed = label_customization.draw(language.current_language.customization_menu.name_label, cached_config.endemic_life_buffs.name_label);
config_changed = config_changed or changed;
changed = label_customization.draw(language.current_language.customization_menu.timer_label, cached_config.endemic_life_buffs.timer_label);
config_changed = config_changed or changed;
changed = bar_customization.draw(language.current_language.customization_menu.bar, cached_config.endemic_life_buffs.bar);
config_changed = config_changed or changed;
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.melody_effects) then
changed = label_customization.draw(language.current_language.customization_menu.name_label, cached_config.melody_effects.name_label);
config_changed = config_changed or changed;
changed = label_customization.draw(language.current_language.customization_menu.timer_label, cached_config.melody_effects.timer_label);
config_changed = config_changed or changed;
changed = bar_customization.draw(language.current_language.customization_menu.bar, cached_config.melody_effects.bar);
config_changed = config_changed or changed;
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.dango_skills) then
changed = label_customization.draw(language.current_language.customization_menu.name_label, cached_config.dango_skills.name_label);
config_changed = config_changed or changed;
changed = label_customization.draw(language.current_language.customization_menu.timer_label, cached_config.dango_skills.timer_label);
config_changed = config_changed or changed;
changed = bar_customization.draw(language.current_language.customization_menu.bar, cached_config.dango_skills.bar);
config_changed = config_changed or changed;
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.rampage_skills) then
changed = label_customization.draw(language.current_language.customization_menu.name_label, cached_config.rampage_skills.name_label);
config_changed = config_changed or changed;
changed = label_customization.draw(language.current_language.customization_menu.timer_label, cached_config.rampage_skills.timer_label);
config_changed = config_changed or changed;
changed = bar_customization.draw(language.current_language.customization_menu.bar, cached_config.rampage_skills.bar);
config_changed = config_changed or changed;
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.skills) then
changed = label_customization.draw(language.current_language.customization_menu.name_label, cached_config.skills.name_label);
config_changed = config_changed or changed;
changed = label_customization.draw(language.current_language.customization_menu.timer_label, cached_config.skills.timer_label);
config_changed = config_changed or changed;
changed = bar_customization.draw(language.current_language.customization_menu.bar, cached_config.skills.bar);
config_changed = config_changed or changed;
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.weapon_skills) then
changed = label_customization.draw(language.current_language.customization_menu.name_label, cached_config.weapon_skills.name_label);
config_changed = config_changed or changed;
changed = label_customization.draw(language.current_language.customization_menu.timer_label, cached_config.weapon_skills.timer_label);
config_changed = config_changed or changed;
changed = bar_customization.draw(language.current_language.customization_menu.bar, cached_config.weapon_skills.bar);
config_changed = config_changed or changed;
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.otomo_moves) then
changed = label_customization.draw(language.current_language.customization_menu.name_label, cached_config.otomo_moves.name_label);
config_changed = config_changed or changed;
changed = label_customization.draw(language.current_language.customization_menu.timer_label, cached_config.otomo_moves.timer_label);
config_changed = config_changed or changed;
changed = bar_customization.draw(language.current_language.customization_menu.bar, cached_config.otomo_moves.bar);
config_changed = config_changed or changed;
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.misc_buffs) then
changed = label_customization.draw(language.current_language.customization_menu.name_label, cached_config.misc_buffs.name_label);
config_changed = config_changed or changed;
changed = label_customization.draw(language.current_language.customization_menu.timer_label, cached_config.misc_buffs.timer_label);
config_changed = config_changed or changed;
changed = bar_customization.draw(language.current_language.customization_menu.bar, cached_config.misc_buffs.bar);
config_changed = config_changed or changed;
imgui.tree_pop();
end
imgui.tree_pop();
end
@@ -2467,11 +2881,22 @@ function this.init_dependencies()
keyboard = require("MHR_Overlay.Game_Handler.keyboard");
non_players = require("MHR_Overlay.Damage_Meter.non_players");
quest_status = require("MHR_Overlay.Game_Handler.quest_status");
buffs = require("MHR_Overlay.Buffs.buffs");
error_handler = require("MHR_Overlay.Misc.error_handler");
time = require("MHR_Overlay.Game_Handler.time");
stats_UI = require("MHR_Overlay.UI.Modules.stats_UI");
buffs = require("MHR_Overlay.Buffs.buffs");
item_buffs = require("MHR_Overlay.Buffs.item_buffs");
melody_effects = require("MHR_Overlay.Buffs.melody_effects");
endemic_life_buffs = require("MHR_Overlay.Buffs.endemic_life_buffs");
skills = require("MHR_Overlay.Buffs.skills");
dango_skills = require("MHR_Overlay.Buffs.dango_skills");
abnormal_statuses = require("MHR_Overlay.Buffs.abnormal_statuses");
otomo_moves = require("MHR_Overlay.Buffs.otomo_moves");
weapon_skills = require("MHR_Overlay.Buffs.weapon_skills");
rampage_skills = require("MHR_Overlay.Buffs.rampage_skills");
misc_buffs = require("MHR_Overlay.Buffs.misc_buffs");
label_customization = require("MHR_Overlay.UI.Customizations.label_customization");
bar_customization = require("MHR_Overlay.UI.Customizations.bar_customization");
large_monster_UI_customization = require("MHR_Overlay.UI.Customizations.large_monster_UI_customization");

View File

@@ -64,6 +64,7 @@
"customization_menu": {
"UI_font": "UI Font",
"UI_font_notice": "Any changes to the font require script reload!",
"abnormal_statuses": "Abnormal Statuses",
"activation_count": "Activation Count",
"affinity_label": "Affinity Label",
"ailment_buildups": "Ailment Buildups",
@@ -126,6 +127,7 @@
"damage_meter_UI": "Damage Meter UI",
"damage_percentage_label": "Damage Percentage Label",
"damage_value_label": "Damage Value Label",
"dango_skills": "Dango Skills",
"debug": "Debug",
"default_state": "Default State",
"defense_label": "Defense Label",
@@ -139,12 +141,14 @@
"duration": "Duration",
"dynamic_positioning": "Dynamic Positioning",
"dynamically_positioned": "Dynamically Positioned",
"effect_level": "Effect Level",
"element_2_label": "Element 2 Label",
"element_label": "Element Label",
"enable_for": "Enable for",
"enabled": "Enabled",
"endemic_life": "Endemic Life",
"endemic_life_UI": "Endemic Life UI",
"endemic_life_buffs": "Endemic Life Buffs",
"everything_seems_to_be_ok": "Everything seems to be OK!",
"family": "Family",
"farthest": "Farthest",
@@ -208,9 +212,11 @@
"in_lobby": "In Lobby",
"in_training_area": "In Training Area",
"include": "Include",
"infinite_buffs_location": "Infinite Buffs Location",
"inside": "Inside",
"installations": "Installations",
"italic": "Italic",
"item_buffs": "Item Buffs",
"join_time": "Join Time",
"killcam": "Killcam",
"kunai": "Kunai",
@@ -234,8 +240,10 @@
"max_monster_updates_per_tick": "Max Monster Updates per Tick",
"max_value": "Max Value",
"me": "Me",
"melody_effects": "Melody Effects",
"menu_font": "Menu Font",
"menu_font_change_disclaimer": "Changing Language and Menu Font Size several times will cause a crash!",
"misc_buffs": "Misc Buffs",
"mod_name": "MHR Overlay",
"mode": "Mode",
"modifiers": "Modifiers",
@@ -261,6 +269,7 @@
"other": "Other",
"other_player_otomos": "Other Player Buddies",
"other_players": "Other Players",
"otomo_moves": "Buddy Moves",
"otomos": "Buddies",
"outline": "Outline",
"outside": "Outside",
@@ -284,6 +293,7 @@
"quest_start_animation": "Quest Start Animation",
"quest_time": "Quest Time",
"rage": "Rage",
"rampage_skills": "Rampage Skills",
"reframework_outdated": "Installed REFramework version is outdated. Please, update. Otherwise, MHR Overlay won't work correctly.",
"relative_offset": "Relative Offset",
"rename": "Rename",
@@ -306,6 +316,7 @@
"show_other_player_otomos_separately": "Show Other Player Buddies separately",
"show_servant_otomos_separately": "Show Follower Buddies separately",
"size": "Size",
"skills": "Skills",
"small_monster_UI": "Small Monster UI",
"small_monsters": "Small Monsters",
"sorting": "Sorting",
@@ -328,6 +339,7 @@
"time_label": "Time Label",
"time_limit": "Time Limit (seconds)",
"timer": "Timer",
"timer_delays": "Timer Delays",
"timer_label": "Timer Label",
"top_buildup": "Top Buildup",
"top_damage": "Top Damage",
@@ -350,6 +362,14 @@
"tracked_damage_types": "Tracked Damage Types",
"tracked_monster_types": "Tracked Monster Types",
"type": "Type",
"update_buffs_delay": "Update Buffs (seconds)",
"update_is_online_delay": "Update Is Online (seconds)",
"update_myself_position_delay": "Update Myself Position (seconds)",
"update_player_info_delay": "Update Player Info (seconds)",
"update_players_delay": "Update Players (seconds)",
"update_quest_time_delay": "Update Quest Time (seconds)",
"update_singletons_delay": "Update Singletons (seconds)",
"update_window_size_delay": "Update Window Size (seconds)",
"use_d2d_if_available": "Use Direct2D if available",
"value": "Value",
"value_label": "Value Label",
@@ -357,6 +377,7 @@
"viewport_offset": "Viewport Offset",
"visible": "Visible",
"water_resistance_label": "Water Resistance Label",
"weapon_skills": "Weapon Skills",
"width": "Width",
"world_offset": "World Offset",
"wyvern_riding": "Wyvern Riding",
@@ -365,15 +386,88 @@
"z": "Z"
},
"dango_skills": {
"dango_insurance_defense_up": "Dango Insurance Defense Up"
"dango_adrenaline": "Dango Adrenaline",
"dango_booster": "Dango Booster",
"dango_bulker": "Dango Bulker",
"dango_connector": "Dango Connector",
"dango_defender": "Dango Defender",
"dango_flyer": "Dango Flyer",
"dango_glutton": "Dango Glutton",
"dango_hunter": "Dango Hunter",
"dango_insurance": "Dango Insurance",
"dango_insurance_defense_up": "Dango Insurance Defense Up",
"super_recovery_dango": "Super Recovery Dango"
},
"endemic_life": {
"butterflame": "Butterflame",
"clothfly": "Clothfly",
"cutterfly": "Cutterfly",
"gold_wirebug": "Gold Wirebug",
"peepersects": "Peepersects",
"red_lampsquid": "Red Lampsquid",
"ruby_wirebug": "Ruby Wirebug",
"stinkmink": "Stinkmink",
"yellow_lampsquid": "Yellow Lampsquid"
},
"font_name": "NotoSans-Bold.otf",
"item_buffs": {
"adamant_seed": "Adamant Seed",
"armor_ammo": "Armor Ammo",
"armorskin": "Armorskin",
"dash_juice": "Dash Juice",
"demon_ammo": "Demon Ammo",
"demon_powder": "Demon Powder",
"demondrug": "Demondrug",
"gourmet_fish": "Gourmet Fish",
"hardshell_powder": "Hardshell Powder",
"immunizer": "Immunizer",
"mega_armorskin": "Mega Armorskin",
"mega_demondrug": "Mega Demondrug",
"might_seed": "Might Seed"
},
"melody_effects": {
"affinity_up": "Affinity Up",
"attack_and_affinity_up": "Attack and Affinity Up",
"attack_and_defense_up": "Attack and Defense Up",
"attack_up": "Attack Up",
"blight_negated": "Blight Negated",
"defense_up": "Defense Up",
"divine_protection": "Divine Protection",
"earplugs_l": "Earplugs (L)",
"earplugs_s": "Earplugs (S)",
"elemental_attack_boost": "Elemental Attack Boost",
"environment_damage_negated": "Environment Damage Negated",
"health_recovery_l": "Health Recovery (L)",
"health_recovery_s": "Health Recovery (S)",
"health_recovery_s_antidote": "Health Recovery (S) + Antidote",
"health_regeneration": "Health Regeneration",
"infernal_melody": "Infernal Melody",
"knockbacks_negated": "Knockbacks Negated",
"self_improvement": "Self-Improvement",
"sharpness_extension": "Sharpness Extension",
"sharpness_loss_reduced": "Sharpness Loss Reduced",
"sharpness_regeneration": "Sharpness Regeneration",
"sonic_barrier": "Sonic Barrier",
"sonic_wave": "Sonic Wave",
"stamina_recovery_up": "Stamina Recovery Up",
"stamina_use_reduced": "Stamina Use Reduced",
"stun_negated": "Stun Negated",
"tremors_negated": "Tremors Negated",
"wind_pressure_negated": "Wind Pressure Negated"
},
"font_name": "",
"misc_buffs": {
"attack_up": "Attack Up",
"defense_up": "Defense Up",
"immunity": "Immunity",
"natural_healing_up": "Natural Healing Up",
"stamina_use_down": "Stamina Use Down"
},
"otomo_moves": {
"go_fight_win": "Go, Fight, Win",
"power_drum": "Power Drum",
"rousing_roar": "Rousing Roar",
"vase_of_vitality": "Vase of Vitality"
},
"parts": {
"abdomen": "Abdomen",
"amatsu_unknown": "?",
@@ -443,11 +537,49 @@
"wingclaws": "Wingclaws",
"wings": "Wings"
},
"rampage_skills": {
"chameleos_soul": "Chameleos Soul",
"kushala_daora_soul": "Kushala Daora Soul"
},
"skills": {
"dragon_conversion_elemental_attack_up": "Dragon Conversion Elem. Atk Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion Elem. Res Up",
"adrenaline_rush": "Adrenaline Rush",
"affinity_sliding": "Affinity Sliding",
"agitator": "Agitator",
"berserk": "Berserk",
"bladescale_hone": "Bladescale Hone",
"blood_awakening": "Blood Awakening",
"bloodlust": "Bloodlust",
"burst": "Burst",
"coalescence": "Coalescence",
"counterstrike": "Counterstrike",
"dereliction": "Dereliction",
"dragon_conversion_elemental_attack_up": "Dragon Conversion: Elem. Atk Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion: Elem. Res Up",
"dragonheart": "Dragonheart",
"embolden": "Embolden",
"frenzied_bloodlust": "Frenzied Bloodlust",
"furious": "Furious",
"grinder_s": "Grinder (S)",
"heaven_sent": "Heaven-Sent",
"hellfire_cloak": "Hellfire Cloak",
"heroics": "Heroics",
"inspiration": "Inspiration",
"intrepid_heart": "Intrepid Heart",
"latent_power": "Latent Power",
"maximum_might": "Maximum Might",
"offensive_guard": "Offensive Guard",
"partbreaker": "Partbreaker",
"peak_performance": "Peak Performance",
"powder_mantle_blue": "Powder Mantle (Blue)",
"powder_mantle_red": "Powder Mantle (Red)"
"powder_mantle_red": "Powder Mantle (Red)",
"protective_polish": "Protective Polish",
"resentment": "Resentment",
"resuscitate": "Resuscitate",
"spiribirds_call": "Spiribird's Call",
"status_trigger": "Status Trigger",
"strife": "Strife",
"wall_runner": "Wall Runner",
"wind_mantle": "Wind Mantle"
},
"stats": {
"affinity": "Affinity",
@@ -466,29 +598,102 @@
"water_resistance": "Water Res"
},
"unicode_glyph_ranges": [
32,
255,
256,
591,
1024,
1327,
7680,
7935,
8192,
8303,
65280,
65519,
0
],
"weapon_skills": {
"all_extracts_mix": "All Extracts Mix",
"amped_state": "Amped State",
"arc_shot_affinity": "Arc Shot: Affinity",
"arc_shot_brace": "Arc Shot: Brace",
"archdemon_mode": "Archdemon Mode",
"axe_heavy_slam": "Axe: Heavy Slam",
"element_boost": "Element Boost",
"herculean_draw": "Herculean Draw",
"ironshine_silk": "Ironshine Silk",
"orange_extract": "Orange Extract",
"overheat": "Overheat",
"power_sheathe": "Power Sheathe",
"red_extract": "Red Extract",
"spirit_gauge": "Spirit Gauge",
"spirit_gauge_autofill": "Spirit Gauge Autofill",
"switch_charger": "Switch Charger",
"sword_boost_mode": "Sword Boost Mode",
"twin_wine": "Twin Wine",
"white_extract": "White Extract",
"wyvernblast_reload": "Wyvernblast Reload",
"wyvernsnipe_reload": "Wyvernsnipe Reload"
"bow": {
"arc_shot_affinity": "Arc Shot: Affinity",
"arc_shot_brace": "Arc Shot: Brace",
"bolt_boost": "Bolt Boost",
"herculean_draw": "Herculean Draw"
},
"charge_blade": {
"element_boost": "Element Boost",
"sword_boost_mode": "Sword Boost Mode"
},
"dual_blades": {
"archdemon_mode": "Archdemon Mode",
"ironshine_silk": "Ironshine Silk"
},
"great_sword": {
"power_sheathe": "Power Sheathe"
},
"gunlance": {
"erupting_cannon": "Erupting Cannon",
"ground_splitter": "Ground Splitter"
},
"hammer": {
"impact_burst": "Impact Burst"
},
"heavy_bowgun": {
"counter_charger": "Counter Charger",
"overheat": "Overheat",
"rising_moon": "Rising Moon",
"setting_sun": "Setting Sun",
"wyvernsnipe_reload": "Wyvernsnipe Reload"
},
"hunting_horn": {
"bead_of_resonance": "Bead of Resonance",
"silkbind_shockwave": "Silkbind Shockwave",
"sonic_bloom": "Sonic Bloom"
},
"insect_glaive": {
"all_extracts_mix": "All Extracts Mix",
"orange_extract": "Orange Extract",
"red_extract": "Red Extract",
"white_extract": "White Extract"
},
"lance": {
"anchor_rage": "Anchor Rage",
"spiral_thrust": "Spiral Thrust",
"twin_wine": "Twin Wine"
},
"light_bowgun": {
"fanning_maneuver": "Fanning Maneuver",
"wyvernblast_reload": "Wyvernblast Reload"
},
"long_sword": {
"harvest_moon": "Harvest Moon",
"iai_slash": "Iai Slash",
"soaring_kick": "Soaring Kick",
"spirit_gauge": "Spirit Gauge",
"spirit_gauge_autofill": "Spirit Gauge Autofill"
},
"switch_axe": {
"amped_state": "Amped State",
"axe_heavy_slam": "Axe: Heavy Slam",
"switch_charger": "Switch Charger"
},
"sword_and_shield": {
"destroyer_oil": "Destroyer Oil"
}
},
"weapons": {
"bow": "Bow",
"charge_blade": "Charge Blade",
"dual_blades": "Dual Blades",
"great_sword": "Great Sword",
"gunlance": "Gunlance",
"hammer": "Hammer",
"heavy_bowgun": "Heavy Bowgun",
"hunting_horn": "Hunting Horn",
"insect_glaive": "Insect Glaive",
"lance": "Lance",
"light_bowgun": "Light Bowgun",
"long_sword": "Long Sword",
"switch_axe": "Switch Axe",
"sword_and_shield": "Sword & Shield"
}
}

View File

@@ -3,7 +3,7 @@
"HP": "HP:",
"buildup": "蓄積値:",
"gold": "金冠",
"lv": "Lv.",
"lv": "",
"mini": "小型",
"otomo": "Buddy",
"part_anomaly_core": "Anomaly Core",
@@ -22,7 +22,6 @@
"blastblight": "Blastblight",
"bleeding": "Bleeding",
"bloodblight": "Bloodblight",
"bubbleblight": "Bubbleblight",
"deadly_poison": "Deadly Poison",
"defense_down": "Defense Down",
"dragonblight": "Dragonblight",
@@ -62,22 +61,10 @@
"waterblight": "水属性やられ",
"webbed": "Webbed"
},
"consumables": {
"adamant_seed": "Adamant Seed",
"armorskin": "Armorskin",
"dash_juice": "Dash Juice",
"demon_powder": "Demon Powder",
"demondrug": "Demondrug",
"gourmet_fish": "Gourmet Fish",
"hardshell_powder": "Hardshell Powder",
"immunizer": "Immunizer",
"mega_armorskin": "Mega Armorskin",
"mega_demondrug": "Mega Demondrug",
"might_seed": "Might Seed"
},
"customization_menu": {
"UI_font": "UI フォント",
"UI_font_notice": "フォントの変更後はスクリプトリセットを行ってください。",
"abnormal_statuses": "Abnormal Statuses",
"activation_count": "適用までのカウント",
"affinity_label": "Affinity Label",
"ailment_buildups": "状態異常の蓄積値",
@@ -140,6 +127,7 @@
"damage_meter_UI": "ダメージメーターUI",
"damage_percentage_label": "ダメージ割合()ラベル",
"damage_value_label": "ダメージラベル",
"dango_skills": "Dango Skills",
"debug": "Debug",
"default_state": "Default State",
"defense_label": "Defense Label",
@@ -153,12 +141,14 @@
"duration": "Duration",
"dynamic_positioning": "動的な場所",
"dynamically_positioned": "モンスターに追随して表示",
"effect_level": "Effect Level",
"element_2_label": "Element 2 Label",
"element_label": "Element Label",
"enable_for": "有効にする",
"enabled": "有効",
"endemic_life": "Endemic Life",
"endemic_life_UI": "環境生物UI",
"endemic_life_buffs": "Endemic Life Buffs",
"everything_seems_to_be_ok": "Everything seems to be OK!",
"family": "Family",
"farthest": "Farthest",
@@ -222,9 +212,11 @@
"in_lobby": "In Lobby",
"in_training_area": "In Training Area",
"include": "含める情報",
"infinite_buffs_location": "Infinite Buffs Location",
"inside": "Inside",
"installations": "Installations",
"italic": "イタリック",
"item_buffs": "Item Buffs",
"join_time": "参加時間",
"killcam": "Killcam",
"kunai": "Kunai",
@@ -248,8 +240,10 @@
"max_monster_updates_per_tick": "モンスター情報をアップデートする間隔",
"max_value": "Max Value",
"me": "自分",
"melody_effects": "Melody Effects",
"menu_font": "メニューで使うフォント",
"menu_font_change_disclaimer": "言語とメニューのフォントサイズを何度も変更すると、クラッシュが発生します。",
"misc_buffs": "Misc Buffs",
"mod_name": "MHR Overlay",
"mode": "Mode",
"modifiers": "全体的な調整",
@@ -275,6 +269,7 @@
"other": "Other",
"other_player_otomos": "Other Player Buddies",
"other_players": "他のプレイヤー",
"otomo_moves": "Buddy Moves",
"otomos": "Buddies",
"outline": "Outline",
"outside": "Outside",
@@ -298,6 +293,7 @@
"quest_start_animation": "Quest Start Animation",
"quest_time": "クエスト時間",
"rage": "怒り値",
"rampage_skills": "Rampage Skills",
"reframework_outdated": "Installed REFramework version is outdated. Please, update. Otherwise, MHR Overlay won't work correctly.",
"relative_offset": "相対的な表示位置",
"rename": "Rename",
@@ -320,6 +316,7 @@
"show_other_player_otomos_separately": "Show Other Player Buddies separately",
"show_servant_otomos_separately": "Show Follower Buddies separately",
"size": "サイズ",
"skills": "Skills",
"small_monster_UI": "小型モンスターUI",
"small_monsters": "小型モンスター",
"sorting": "ソート",
@@ -342,6 +339,7 @@
"time_label": "タイムラベル",
"time_limit": "タイムリミット(s.)",
"timer": "Timer",
"timer_delays": "Timer Delays",
"timer_label": "タイマーラベル",
"top_buildup": "最高蓄積値",
"top_damage": "最高ダメージ",
@@ -364,6 +362,14 @@
"tracked_damage_types": "ダメージタイプでの追跡",
"tracked_monster_types": "モンスタータイプでの追跡",
"type": "タイプ",
"update_buffs_delay": "Update Buffs (seconds)",
"update_is_online_delay": "Update Is Online (seconds)",
"update_myself_position_delay": "Update Myself Position (seconds)",
"update_player_info_delay": "Update Player Info (seconds)",
"update_players_delay": "Update Players (seconds)",
"update_quest_time_delay": "Update Quest Time (seconds)",
"update_singletons_delay": "Update Singletons (seconds)",
"update_window_size_delay": "Update Window Size (seconds)",
"use_d2d_if_available": "Use Direct2D if available",
"value": "Value",
"value_label": "バリューラベル",
@@ -371,6 +377,7 @@
"viewport_offset": "表示領域からの位置",
"visible": "表示する",
"water_resistance_label": "Water Resistance Label",
"weapon_skills": "Weapon Skills",
"width": "幅",
"world_offset": "表示位置",
"wyvern_riding": "Wyvern Riding",
@@ -379,55 +386,45 @@
"z": "Z"
},
"dango_skills": {
"dango_insurance_defense_up": "Dango Insurance Defense Up"
},
"dangos": {
"dango_adrenaline": "Dango Adrenaline",
"dango_bombardier": "Dango Bombardier",
"dango_booster": "Dango Booster",
"dango_bulker": "Dango Bulker",
"dango_connector": "Dango Connector",
"dango_defender": "Dango Defender",
"dango_defender_hi": "Dango Defender (Hi)",
"dango_deflector": "Dango Deflector",
"dango_dragon_res": "Dango Dragon Res",
"dango_dragon_res_hi": "Dango Dragon Res (Hi)",
"dango_driver": "Dango Driver",
"dango_feet": "Dango Feet",
"dango_fighter": "Dango Fighter",
"dango_fire_res": "Dango Fire Res",
"dango_fire_res_hi": "Dango Fire Res (Hi)",
"dango_flyer": "Dango Flyer",
"dango_glutton": "Dango Glutton",
"dango_guard": "Dango Guard",
"dango_hunter": "Dango Hunter",
"dango_hurler": "Dango Hurler",
"dango_ice_res": "Dango Ice Res",
"dango_ice_res_hi": "Dango Ice Res (Hi)",
"dango_immunizer": "Dango Immunizer",
"dango_insurance": "Dango Insurance",
"dango_insurance_defense_up": "Dango Insurance Defense Up",
"dango_marksman": "Dango Marksman",
"dango_medic": "Dango Medic",
"dango_medic_hi": "Dango Medic (Hi)",
"dango_moxie": "Dango Moxie",
"dango_polisher": "Dango Polisher",
"dango_pyro": "Dango Pyro",
"dango_reviver": "Dango Reviver",
"dango_rider": "Dango Rider",
"dango_shifter": "Dango Shifter",
"dango_slugger": "Dango Slugger",
"dango_specialist": "Dango Specialist",
"dango_temper": "Dango Temper",
"dango_thunder_res": "Dango Thunder Res ",
"dango_thunder_res_hi": "Dango Thunder Res (Hi)",
"dango_wall_runner": "Dango Wall Runner",
"dango_water_res": "Dango Water Res",
"dango_water_res_hi": "Dango Water Res (Hi)",
"dango_weakener": "Dango Weakener",
"super_recovery_dango": "Super Recovery Dango"
},
"endemic_life": {
"butterflame": "Butterflame",
"clothfly": "Clothfly",
"cutterfly": "Cutterfly",
"gold_wirebug": "Gold Wirebug",
"peepersects": "Peepersects",
"red_lampsquid": "Red Lampsquid",
"ruby_wirebug": "Ruby Wirebug",
"stinkmink": "Stinkmink",
"yellow_lampsquid": "Yellow Lampsquid"
},
"font_name": "NotoSansJP-Bold.otf",
"item_buffs": {
"adamant_seed": "Adamant Seed",
"armor_ammo": "Armor Ammo",
"armorskin": "Armorskin",
"dash_juice": "Dash Juice",
"demon_ammo": "Demon Ammo",
"demon_powder": "Demon Powder",
"demondrug": "Demondrug",
"gourmet_fish": "Gourmet Fish",
"hardshell_powder": "Hardshell Powder",
"immunizer": "Immunizer",
"mega_armorskin": "Mega Armorskin",
"mega_demondrug": "Mega Demondrug",
"might_seed": "Might Seed"
},
"melody_effects": {
"affinity_up": "Affinity Up",
"attack_and_affinity_up": "Attack and Affinity Up",
@@ -460,15 +457,16 @@
},
"misc_buffs": {
"attack_up": "Attack Up",
"defense_down": "Defense Down",
"defense_up": "Defense Up",
"immunity": "Immunity",
"natural_healing_up": "Natural Healing Up",
"stamina_use_down": "Stamina Use Down"
},
"otomo_moves": {
"go_fight_win": "Go, Fight, Win",
"power_drum": "Power Drum",
"rousing_roar": "Rousing Roar"
"rousing_roar": "Rousing Roar",
"vase_of_vitality": "Vase of Vitality"
},
"parts": {
"abdomen": "腹部",
@@ -539,30 +537,38 @@
"wingclaws": "Wingclaws",
"wings": "翼"
},
"rampage_skills": {
"chameleos_soul": "Chameleos Soul",
"kushala_daora_soul": "Kushala Daora Soul"
},
"skills": {
"adrenaline_rush": "Adrenaline Rush",
"affinity_sliding": "Affinity Sliding",
"agitator": "Agitator",
"berserk": "Berserk",
"bladescale_hone": "Bladescale Hone",
"blood_awakening": "Blood Awakening",
"bloodlust": "Bloodlust",
"burst": "Burst",
"coalescence": "Coalescence",
"counterstrike": "Counterstrike",
"dereliction": "Dereliction",
"dragon_conversion_elemental_attack_up": "Dragon Conversion Elem. Attack Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion Elem. Res. Up",
"dragon_conversion_elemental_attack_up": "Dragon Conversion: Elem. Atk Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion: Elem. Res Up",
"dragonheart": "Dragonheart",
"embolden": "Embolden",
"frenzied_bloodlust": "Frenzied Bloodlust",
"furious": "Furious",
"grinder_s": "Grinder (S)",
"heaven_sent": "Heaven-Sent",
"hellfire_cloak": "Hellfire Cloak",
"heroics": "Heroics",
"inspiration": "Inspiration",
"intrepid_heart": "Intrepid Heart",
"kushala_daora_soul": "Kushala Daora Soul",
"latent_power": "Latent Power",
"maximum_might": "Maximum Might",
"offensive_guard": "Offensive Guard",
"partbreaker": "Partbreaker",
"peak_performance": "Peak Performance",
"powder_mantle_blue": "Powder Mantle (Blue)",
"powder_mantle_red": "Powder Mantle (Red)",
@@ -571,6 +577,7 @@
"resuscitate": "Resuscitate",
"spiribirds_call": "Spiribird's Call",
"status_trigger": "Status Trigger",
"strife": "Strife",
"wall_runner": "Wall Runner",
"wind_mantle": "Wind Mantle"
},
@@ -595,56 +602,104 @@
255,
8192,
8303,
11904,
12031,
12288,
12543,
12784,
12799,
19903,
19968,
40879,
40959,
63744,
64255,
65072,
65103,
65280,
65519,
0
],
"weapon_skills": {
"all_extracts_mix": "All Extracts Mix",
"amped_state": "Amped State",
"anchor_rage": "Anchor Rage",
"arc_shot_affinity": "Arc Shot: Affinity",
"arc_shot_brace": "Arc Shot: Brace",
"archdemon_mode": "Archdemon Mode",
"axe_heavy_slam": "Axe: Heavy Slam",
"bead_of_resonance": "Bead of Resonance",
"bolt_boost": "Bolt Boost",
"counter_charger": "Counter Charger",
"destroyer_oil": "Destroyer Oil",
"element_boost": "Element Boost",
"erupting_cannon": "Erupting Cannon",
"fanning_maneuver": "Fannin Maneuver",
"ground_splitter": "Ground Splitter",
"harvest_moon": "Harvest Moon",
"herculean_draw": "Herculean Draw",
"iai_slash": "Iai Slash",
"impact_burst": "Impact Burst",
"ironshine_silk": "Ironshine Silk",
"orange_extract": "O Extract",
"overheat": "Overheat",
"power_sheathe": "Power Sheathe",
"red_extract": "Red Extract",
"rising_moon": "Rising Moon",
"setting_sun": "Setting Sun",
"shield_charge": "Shield Charge",
"silkbind_shockwave": "Silkbind Shockwave",
"soaring_kick": "Soaring Kick",
"sonic_bloom": "Sonic Bloom",
"spiral_thrust": "Spiral Thrust",
"spirit_gauge": "Spirit Gauge",
"spirit_gauge_autofill": "Spirit Gauge Autofill",
"switch_charger": "Switch Charger",
"sword_boost_mode": "Sword Boost Mode",
"sword_charge": "Sword Charge",
"twin_wine": "Twin Wine",
"white_extract": "White Extract",
"wyvernblast_reload": "Wyvernblast Reload",
"wyvernsnipe_reload": "Wyvernsnipe Reload"
"bow": {
"arc_shot_affinity": "Arc Shot: Affinity",
"arc_shot_brace": "Arc Shot: Brace",
"bolt_boost": "Bolt Boost",
"herculean_draw": "Herculean Draw"
},
"charge_blade": {
"element_boost": "Element Boost",
"sword_boost_mode": "Sword Boost Mode"
},
"dual_blades": {
"archdemon_mode": "Archdemon Mode",
"ironshine_silk": "Ironshine Silk"
},
"great_sword": {
"power_sheathe": "Power Sheathe"
},
"gunlance": {
"erupting_cannon": "Erupting Cannon",
"ground_splitter": "Ground Splitter"
},
"hammer": {
"impact_burst": "Impact Burst"
},
"heavy_bowgun": {
"counter_charger": "Counter Charger",
"overheat": "Overheat",
"rising_moon": "Rising Moon",
"setting_sun": "Setting Sun",
"wyvernsnipe_reload": "Wyvernsnipe Reload"
},
"hunting_horn": {
"bead_of_resonance": "Bead of Resonance",
"silkbind_shockwave": "Silkbind Shockwave",
"sonic_bloom": "Sonic Bloom"
},
"insect_glaive": {
"all_extracts_mix": "All Extracts Mix",
"orange_extract": "Orange Extract",
"red_extract": "Red Extract",
"white_extract": "White Extract"
},
"lance": {
"anchor_rage": "Anchor Rage",
"spiral_thrust": "Spiral Thrust",
"twin_wine": "Twin Wine"
},
"light_bowgun": {
"fanning_maneuver": "Fanning Maneuver",
"wyvernblast_reload": "Wyvernblast Reload"
},
"long_sword": {
"harvest_moon": "Harvest Moon",
"iai_slash": "Iai Slash",
"soaring_kick": "Soaring Kick",
"spirit_gauge": "Spirit Gauge",
"spirit_gauge_autofill": "Spirit Gauge Autofill"
},
"switch_axe": {
"amped_state": "Amped State",
"axe_heavy_slam": "Axe: Heavy Slam",
"switch_charger": "Switch Charger"
},
"sword_and_shield": {
"destroyer_oil": "Destroyer Oil"
}
},
"weapons": {
"bow": "Bow",
"charge_blade": "Charge Blade",
"dual_blades": "Dual Blades",
"great_sword": "Great Sword",
"gunlance": "Gunlance",
"hammer": "Hammer",
"heavy_bowgun": "Heavy Bowgun",
"hunting_horn": "Hunting Horn",
"insect_glaive": "Insect Glaive",
"lance": "Lance",
"light_bowgun": "Light Bowgun",
"long_sword": "Long Sword",
"switch_axe": "Switch Axe",
"sword_and_shield": "Sword & Shield"
}
}

View File

@@ -3,7 +3,7 @@
"HP": "체력:",
"buildup": "누적치:",
"gold": "금관",
"lv": "Lv.",
"lv": "",
"mini": "최소",
"otomo": "동반자",
"part_anomaly_core": "괴이핵",
@@ -22,7 +22,6 @@
"blastblight": "Blastblight",
"bleeding": "Bleeding",
"bloodblight": "Bloodblight",
"bubbleblight": "Bubbleblight",
"deadly_poison": "Deadly Poison",
"defense_down": "Defense Down",
"dragonblight": "Dragonblight",
@@ -62,22 +61,10 @@
"waterblight": "진흙구리",
"webbed": "Webbed"
},
"consumables": {
"adamant_seed": "Adamant Seed",
"armorskin": "Armorskin",
"dash_juice": "Dash Juice",
"demon_powder": "Demon Powder",
"demondrug": "Demondrug",
"gourmet_fish": "Gourmet Fish",
"hardshell_powder": "Hardshell Powder",
"immunizer": "Immunizer",
"mega_armorskin": "Mega Armorskin",
"mega_demondrug": "Mega Demondrug",
"might_seed": "Might Seed"
},
"customization_menu": {
"UI_font": "UI 글꼴",
"UI_font_notice": "글꼴 변경시 스크립트를 리로드 해야합니다!",
"abnormal_statuses": "Abnormal Statuses",
"activation_count": "활성 횟수",
"affinity_label": "Affinity Label",
"ailment_buildups": "상태이상 누적치",
@@ -140,8 +127,8 @@
"damage_meter_UI": "대미지 미터 UI",
"damage_percentage_label": "대미지 비율 정보",
"damage_value_label": "대미지 값 정보",
"dango_skills": "Dango Skills",
"debug": "Debug",
"debug_errors": "Debug Errors",
"default_state": "기본 상태",
"defense_label": "Defense Label",
"delete": "삭제하기",
@@ -154,12 +141,14 @@
"duration": "지속시간",
"dynamic_positioning": "유동 위치",
"dynamically_positioned": "유동 위치 UI",
"effect_level": "Effect Level",
"element_2_label": "Element 2 Label",
"element_label": "Element Label",
"enable_for": "표시 대상",
"enabled": "사용함",
"endemic_life": "환경생물",
"endemic_life_UI": "환경생물 UI",
"endemic_life_buffs": "Endemic Life Buffs",
"everything_seems_to_be_ok": "Everything seems to be OK!",
"family": "글꼴",
"farthest": "가장 멀리있는",
@@ -223,9 +212,11 @@
"in_lobby": "로비 내",
"in_training_area": "훈련구역 내",
"include": "포함",
"infinite_buffs_location": "Infinite Buffs Location",
"inside": "내부",
"installations": "설치",
"italic": "기울임",
"item_buffs": "Item Buffs",
"join_time": "참가 시간",
"killcam": "처치 영상",
"kunai": "쿠나이",
@@ -249,8 +240,10 @@
"max_monster_updates_per_tick": "틱당 최대 몬스터 갱신 횟수",
"max_value": "최대값",
"me": "나",
"melody_effects": "Melody Effects",
"menu_font": "메뉴 글꼴",
"menu_font_change_disclaimer": "언어 및 메뉴 글꼴 크기를 여러 번 변경하면 비정상 종료가 될 수 있습니다!",
"misc_buffs": "Misc Buffs",
"mod_name": "MHR Overlay",
"mode": "모드",
"modifiers": "설정 배율",
@@ -276,6 +269,7 @@
"other": "기타",
"other_player_otomos": "다른 플레이어 동반자",
"other_players": "다른 헌터",
"otomo_moves": "Buddy Moves",
"otomos": "동반자",
"outline": "외곽선",
"outside": "외부",
@@ -299,6 +293,7 @@
"quest_start_animation": "퀘스트 시작 영상",
"quest_time": "퀘스트 시간",
"rage": "분노",
"rampage_skills": "Rampage Skills",
"reframework_outdated": "설치된 REFramework가 구버전입니다. 업데이트 하지 않으면 MHR Overlay가 제대로 동작하지 않을 수 있습니다.",
"relative_offset": "상대적 위치 오프셋",
"rename": "이름 변경",
@@ -321,6 +316,7 @@
"show_other_player_otomos_separately": "다른 플레이어의 동반자를 따로",
"show_servant_otomos_separately": "맹우의 동반자를 따로",
"size": "크기",
"skills": "Skills",
"small_monster_UI": "소형 몬스터 UI",
"small_monsters": "소형 몬스터",
"sorting": "정렬방법",
@@ -343,6 +339,7 @@
"time_label": "시간 정보",
"time_limit": "시간 제한 (단위: 초)",
"timer": "타이머",
"timer_delays": "Timer Delays",
"timer_label": "타이머 정보",
"top_buildup": "총 누적치",
"top_damage": "최고 대미지",
@@ -365,6 +362,14 @@
"tracked_damage_types": "추적할 대미지 종류",
"tracked_monster_types": "추적할 몬스터 타입",
"type": "종류",
"update_buffs_delay": "Update Buffs (seconds)",
"update_is_online_delay": "Update Is Online (seconds)",
"update_myself_position_delay": "Update Myself Position (seconds)",
"update_player_info_delay": "Update Player Info (seconds)",
"update_players_delay": "Update Players (seconds)",
"update_quest_time_delay": "Update Quest Time (seconds)",
"update_singletons_delay": "Update Singletons (seconds)",
"update_window_size_delay": "Update Window Size (seconds)",
"use_d2d_if_available": "가능한 Direct2D를 사용함",
"value": "Value",
"value_label": "값 정보",
@@ -372,6 +377,7 @@
"viewport_offset": "뷰포트 오프셋",
"visible": "표시함",
"water_resistance_label": "Water Resistance Label",
"weapon_skills": "Weapon Skills",
"width": "너비",
"world_offset": "전역 오프셋",
"wyvern_riding": "용조종",
@@ -380,55 +386,45 @@
"z": "Z"
},
"dango_skills": {
"dango_insurance_defense_up": "Dango Insurance Defense Up"
},
"dangos": {
"dango_adrenaline": "Dango Adrenaline",
"dango_bombardier": "Dango Bombardier",
"dango_booster": "Dango Booster",
"dango_bulker": "Dango Bulker",
"dango_connector": "Dango Connector",
"dango_defender": "Dango Defender",
"dango_defender_hi": "Dango Defender (Hi)",
"dango_deflector": "Dango Deflector",
"dango_dragon_res": "Dango Dragon Res",
"dango_dragon_res_hi": "Dango Dragon Res (Hi)",
"dango_driver": "Dango Driver",
"dango_feet": "Dango Feet",
"dango_fighter": "Dango Fighter",
"dango_fire_res": "Dango Fire Res",
"dango_fire_res_hi": "Dango Fire Res (Hi)",
"dango_flyer": "Dango Flyer",
"dango_glutton": "Dango Glutton",
"dango_guard": "Dango Guard",
"dango_hunter": "Dango Hunter",
"dango_hurler": "Dango Hurler",
"dango_ice_res": "Dango Ice Res",
"dango_ice_res_hi": "Dango Ice Res (Hi)",
"dango_immunizer": "Dango Immunizer",
"dango_insurance": "Dango Insurance",
"dango_insurance_defense_up": "Dango Insurance Defense Up",
"dango_marksman": "Dango Marksman",
"dango_medic": "Dango Medic",
"dango_medic_hi": "Dango Medic (Hi)",
"dango_moxie": "Dango Moxie",
"dango_polisher": "Dango Polisher",
"dango_pyro": "Dango Pyro",
"dango_reviver": "Dango Reviver",
"dango_rider": "Dango Rider",
"dango_shifter": "Dango Shifter",
"dango_slugger": "Dango Slugger",
"dango_specialist": "Dango Specialist",
"dango_temper": "Dango Temper",
"dango_thunder_res": "Dango Thunder Res ",
"dango_thunder_res_hi": "Dango Thunder Res (Hi)",
"dango_wall_runner": "Dango Wall Runner",
"dango_water_res": "Dango Water Res",
"dango_water_res_hi": "Dango Water Res (Hi)",
"dango_weakener": "Dango Weakener",
"super_recovery_dango": "Super Recovery Dango"
},
"endemic_life": {
"butterflame": "Butterflame",
"clothfly": "Clothfly",
"cutterfly": "Cutterfly",
"gold_wirebug": "Gold Wirebug",
"peepersects": "Peepersects",
"red_lampsquid": "Red Lampsquid",
"ruby_wirebug": "Ruby Wirebug",
"stinkmink": "Stinkmink",
"yellow_lampsquid": "Yellow Lampsquid"
},
"font_name": "NotoSansKR-Bold.otf",
"item_buffs": {
"adamant_seed": "Adamant Seed",
"armor_ammo": "Armor Ammo",
"armorskin": "Armorskin",
"dash_juice": "Dash Juice",
"demon_ammo": "Demon Ammo",
"demon_powder": "Demon Powder",
"demondrug": "Demondrug",
"gourmet_fish": "Gourmet Fish",
"hardshell_powder": "Hardshell Powder",
"immunizer": "Immunizer",
"mega_armorskin": "Mega Armorskin",
"mega_demondrug": "Mega Demondrug",
"might_seed": "Might Seed"
},
"melody_effects": {
"affinity_up": "Affinity Up",
"attack_and_affinity_up": "Attack and Affinity Up",
@@ -461,15 +457,16 @@
},
"misc_buffs": {
"attack_up": "Attack Up",
"defense_down": "Defense Down",
"defense_up": "Defense Up",
"immunity": "Immunity",
"natural_healing_up": "Natural Healing Up",
"stamina_use_down": "Stamina Use Down"
},
"otomo_moves": {
"go_fight_win": "Go, Fight, Win",
"power_drum": "Power Drum",
"rousing_roar": "Rousing Roar"
"rousing_roar": "Rousing Roar",
"vase_of_vitality": "Vase of Vitality"
},
"parts": {
"abdomen": "배",
@@ -540,30 +537,38 @@
"wingclaws": "날개발톱",
"wings": "날개"
},
"rampage_skills": {
"chameleos_soul": "Chameleos Soul",
"kushala_daora_soul": "Kushala Daora Soul"
},
"skills": {
"adrenaline_rush": "Adrenaline Rush",
"affinity_sliding": "Affinity Sliding",
"agitator": "Agitator",
"berserk": "Berserk",
"bladescale_hone": "Bladescale Hone",
"blood_awakening": "Blood Awakening",
"bloodlust": "Bloodlust",
"burst": "Burst",
"coalescence": "Coalescence",
"counterstrike": "Counterstrike",
"dereliction": "Dereliction",
"dragon_conversion_elemental_attack_up": "Dragon Conversion Elem. Attack Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion Elem. Res. Up",
"dragon_conversion_elemental_attack_up": "Dragon Conversion: Elem. Atk Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion: Elem. Res Up",
"dragonheart": "Dragonheart",
"embolden": "Embolden",
"frenzied_bloodlust": "Frenzied Bloodlust",
"furious": "Furious",
"grinder_s": "Grinder (S)",
"heaven_sent": "Heaven-Sent",
"hellfire_cloak": "Hellfire Cloak",
"heroics": "Heroics",
"inspiration": "Inspiration",
"intrepid_heart": "Intrepid Heart",
"kushala_daora_soul": "Kushala Daora Soul",
"latent_power": "Latent Power",
"maximum_might": "Maximum Might",
"offensive_guard": "Offensive Guard",
"partbreaker": "Partbreaker",
"peak_performance": "Peak Performance",
"powder_mantle_blue": "Powder Mantle (Blue)",
"powder_mantle_red": "Powder Mantle (Red)",
@@ -572,6 +577,7 @@
"resuscitate": "Resuscitate",
"spiribirds_call": "Spiribird's Call",
"status_trigger": "Status Trigger",
"strife": "Strife",
"wall_runner": "Wall Runner",
"wind_mantle": "Wind Mantle"
},
@@ -598,54 +604,108 @@
4607,
8192,
8303,
11904,
12031,
12288,
12351,
12592,
12687,
12800,
19903,
19968,
40959,
44032,
55215,
63744,
64255,
65072,
65103,
65280,
65519,
0
],
"weapon_skills": {
"all_extracts_mix": "All Extracts Mix",
"amped_state": "Amped State",
"anchor_rage": "Anchor Rage",
"arc_shot_affinity": "Arc Shot: Affinity",
"arc_shot_brace": "Arc Shot: Brace",
"archdemon_mode": "Archdemon Mode",
"axe_heavy_slam": "Axe: Heavy Slam",
"bead_of_resonance": "Bead of Resonance",
"bolt_boost": "Bolt Boost",
"counter_charger": "Counter Charger",
"destroyer_oil": "Destroyer Oil",
"element_boost": "Element Boost",
"erupting_cannon": "Erupting Cannon",
"fanning_maneuver": "Fannin Maneuver",
"ground_splitter": "Ground Splitter",
"harvest_moon": "Harvest Moon",
"herculean_draw": "Herculean Draw",
"iai_slash": "Iai Slash",
"impact_burst": "Impact Burst",
"ironshine_silk": "Ironshine Silk",
"orange_extract": "O Extract",
"overheat": "Overheat",
"power_sheathe": "Power Sheathe",
"red_extract": "Red Extract",
"rising_moon": "Rising Moon",
"setting_sun": "Setting Sun",
"shield_charge": "Shield Charge",
"silkbind_shockwave": "Silkbind Shockwave",
"soaring_kick": "Soaring Kick",
"sonic_bloom": "Sonic Bloom",
"spiral_thrust": "Spiral Thrust",
"spirit_gauge": "Spirit Gauge",
"spirit_gauge_autofill": "Spirit Gauge Autofill",
"switch_charger": "Switch Charger",
"sword_boost_mode": "Sword Boost Mode",
"sword_charge": "Sword Charge",
"twin_wine": "Twin Wine",
"white_extract": "White Extract",
"wyvernblast_reload": "Wyvernblast Reload",
"wyvernsnipe_reload": "Wyvernsnipe Reload"
"bow": {
"arc_shot_affinity": "Arc Shot: Affinity",
"arc_shot_brace": "Arc Shot: Brace",
"bolt_boost": "Bolt Boost",
"herculean_draw": "Herculean Draw"
},
"charge_blade": {
"element_boost": "Element Boost",
"sword_boost_mode": "Sword Boost Mode"
},
"dual_blades": {
"archdemon_mode": "Archdemon Mode",
"ironshine_silk": "Ironshine Silk"
},
"great_sword": {
"power_sheathe": "Power Sheathe"
},
"gunlance": {
"erupting_cannon": "Erupting Cannon",
"ground_splitter": "Ground Splitter"
},
"hammer": {
"impact_burst": "Impact Burst"
},
"heavy_bowgun": {
"counter_charger": "Counter Charger",
"overheat": "Overheat",
"rising_moon": "Rising Moon",
"setting_sun": "Setting Sun",
"wyvernsnipe_reload": "Wyvernsnipe Reload"
},
"hunting_horn": {
"bead_of_resonance": "Bead of Resonance",
"silkbind_shockwave": "Silkbind Shockwave",
"sonic_bloom": "Sonic Bloom"
},
"insect_glaive": {
"all_extracts_mix": "All Extracts Mix",
"orange_extract": "Orange Extract",
"red_extract": "Red Extract",
"white_extract": "White Extract"
},
"lance": {
"anchor_rage": "Anchor Rage",
"spiral_thrust": "Spiral Thrust",
"twin_wine": "Twin Wine"
},
"light_bowgun": {
"fanning_maneuver": "Fanning Maneuver",
"wyvernblast_reload": "Wyvernblast Reload"
},
"long_sword": {
"harvest_moon": "Harvest Moon",
"iai_slash": "Iai Slash",
"soaring_kick": "Soaring Kick",
"spirit_gauge": "Spirit Gauge",
"spirit_gauge_autofill": "Spirit Gauge Autofill"
},
"switch_axe": {
"amped_state": "Amped State",
"axe_heavy_slam": "Axe: Heavy Slam",
"switch_charger": "Switch Charger"
},
"sword_and_shield": {
"destroyer_oil": "Destroyer Oil"
}
},
"weapons": {
"bow": "Bow",
"charge_blade": "Charge Blade",
"dual_blades": "Dual Blades",
"great_sword": "Great Sword",
"gunlance": "Gunlance",
"hammer": "Hammer",
"heavy_bowgun": "Heavy Bowgun",
"hunting_horn": "Hunting Horn",
"insect_glaive": "Insect Glaive",
"lance": "Lance",
"light_bowgun": "Light Bowgun",
"long_sword": "Long Sword",
"switch_axe": "Switch Axe",
"sword_and_shield": "Sword & Shield"
}
}

View File

@@ -3,7 +3,7 @@
"HP": "ОЗ:",
"buildup": "Накопление",
"gold": "Золото",
"lv": "Lv.",
"lv": "",
"mini": "Мини",
"otomo": "Cпутник",
"part_anomaly_core": "Ядро аномалии",
@@ -19,67 +19,54 @@
},
"ailments": {
"blast": "Взрыв",
"blastblight": "Blastblight",
"bleeding": "Bleeding",
"bloodblight": "Bloodblight",
"bubbleblight": "Bubbleblight",
"deadly_poison": "Deadly Poison",
"defense_down": "Defense Down",
"dragonblight": "Dragonblight",
"blastblight": "Взрывная порча",
"bleeding": "Кровотечение",
"bloodblight": "Кровавая порча",
"deadly_poison": "Смертельный яд",
"defense_down": "Защита снижена",
"dragonblight": "Драконья Порча",
"dung_bomb": "Навозная бомба",
"engulfed": "Engulfed",
"engulfed": "Окутывание",
"exhaust": "Усталость",
"fall_otomo_trap": "Волчья яма спутника",
"fall_trap": "Волчья яма",
"falling_asleep": "Falling Asleep",
"falling_asleep": "Засыпание",
"fireblight": "Огненная порча",
"flash": "Оглушение",
"frenzy": "Frenzy",
"frenzy_infection": "Frenzy Infection",
"frenzy_overcome": "Frenzy Overcome",
"frostblight": "Frostblight",
"hellfireblight": "Hellfireblight",
"frenzy": "Бешенство",
"frenzy_infection": "Инфекция бешенства",
"frenzy_overcome": "Преодоление бешенства",
"frostblight": "Ледяная (морозная) порча",
"hellfireblight": "Порча адского пламени",
"iceblight": "Ледяная порча",
"leeched": "Leeched",
"major_bubbleblight": "Major Bubbleblight",
"minor_bubbleblight": "Minor Bubbleblight",
"muck": "Muck",
"leeched": "Истощение",
"major_bubbleblight": "Великая пузырьковая порча",
"minor_bubbleblight": "Малая пузырьковая порча",
"muck": "Грязь",
"paralysis": "Паралич",
"poison": "Отравление",
"quick_sand": "Зыбучий песок",
"resistance_down": "Resistance Down",
"resistance_down": "Сопротивление снижено",
"ride": "Езда на виверне",
"roar": "Roar",
"roar": "Рык",
"shock_otomo_trap": "Шоковая ловушка спутника",
"shock_trap": "Шоковая ловушка",
"sleep": "Сон",
"steel_fang": "Стальной клык",
"stench": "Stench",
"stench": "Зловоние",
"stun": "Оглушение",
"thunderblight": "Грозовая порча",
"tranq_bomb": "Снотворная порча",
"tremor": "Tremor",
"tremor": "Тряска",
"waterblight": "Водяная порча",
"webbed": "Webbed"
},
"consumables": {
"adamant_seed": "Adamant Seed",
"armorskin": "Armorskin",
"dash_juice": "Dash Juice",
"demon_powder": "Demon Powder",
"demondrug": "Demondrug",
"gourmet_fish": "Gourmet Fish",
"hardshell_powder": "Hardshell Powder",
"immunizer": "Immunizer",
"mega_armorskin": "Mega Armorskin",
"mega_demondrug": "Mega Demondrug",
"might_seed": "Might Seed"
"webbed": "В паутине"
},
"customization_menu": {
"UI_font": "Шрифт интерфейса",
"UI_font_notice": "Любые изменения шрифта требуют перезагрузку скрипта!",
"abnormal_statuses": "Аномальные статусы",
"activation_count": "Кол-во активаций",
"affinity_label": "Affinity Label",
"affinity_label": "Метка мастерства",
"ailment_buildups": "Накопление аномального статуса",
"ailment_name": "Название аномального статуса",
"ailment_name_label": "Метка названия аномального статуса",
@@ -93,7 +80,7 @@
"anomaly_health_percentage": "Здоровье ядра аномалии в процентах",
"apply": "Применить",
"assign_new_key": "Привязать клавишу",
"attack_label": "Attack Label",
"attack_label": "Метка Атаки",
"auto_highlight": "Автофокус",
"background": "Фон",
"bar": "Шкала",
@@ -112,7 +99,7 @@
"break_max_count": "Максимальное кол-во повреждений",
"break_sever_anomaly_filter": "Повреждение + Отсечение + Ядро аномалии",
"break_sever_filter": "Повреждение + Отсечение",
"buff_UI": "Интерфейс баффов",
"buff_UI": "Интерфейс эффектов",
"buildup": "Накопление",
"buildup_bar": "Шкала накопления",
"buildup_bars_are_relative_to": "Шкалы накопления расположены относительно к",
@@ -131,7 +118,7 @@
"crown": "Корона",
"crown_thresholds": "Лимиты корон",
"current_state": "Текущее состояние",
"current_time": "Current Time",
"current_time": "Текущее время",
"current_value": "Текущее значение",
"cutscene": "Катсцена",
"damage": "Урон",
@@ -140,34 +127,36 @@
"damage_meter_UI": "Интерфейс модуля урона",
"damage_percentage_label": "Метка урона в процентах",
"damage_value_label": "Метка значений урона",
"debug": "Debug",
"debug_errors": "Debug Errors",
"dango_skills": "Навыки данго",
"debug": "Отладка",
"default_state": "Состояние по умолчанию",
"defense_label": "Defense Label",
"defense_label": "Метка защиты",
"delete": "Удалить",
"distance": "Расстояние",
"dps": "Урон в секунду",
"dps_label": "Метка урона в секунду",
"dps_mode": "Режим урона в секунду",
"dragon_resistance_label": "Dragon Resistance Label",
"dragon_resistance_label": "Метка сопротивления дракону",
"duplicate": "Дублировать",
"duration": "Продолжительность",
"dynamic_positioning": "Динамическое позиционирование",
"dynamically_positioned": "Рассположенный динамично",
"element_2_label": "Element 2 Label",
"element_label": "Element Label",
"effect_level": "Уровень эффекта",
"element_2_label": "Метка элемента 2",
"element_label": "Метка элемента",
"enable_for": "Показывать для",
"enabled": "Включить",
"endemic_life": "Местная живность",
"endemic_life_UI": "Интерфейс местной живности",
"everything_seems_to_be_ok": "Everything seems to be OK!",
"endemic_life_buffs": "Эффекты местной живности",
"everything_seems_to_be_ok": "Кажется, всё в порядке!",
"family": "Семейство",
"farthest": "Самый дальний",
"fight_time": "Время в бою",
"fill_direction": "Направление заполнения",
"filter": "Фильтр",
"filter_mode": "Режим Фильтра",
"fire_resistance_label": "Fire Resistance Label",
"fire_resistance_label": "Метка сопротивления огню",
"first": "Первый",
"first_hit": "Первый удар",
"flinch_count": "Кол-во вздрагиваний",
@@ -183,7 +172,7 @@
"health_break_sever_anomaly_filter": "Здоровье + Повреждение + Отсечение + Ядро аномалии",
"health_break_sever_filter": "Здоровье + Повреждение + Отсечение",
"health_filter": "Здоровье",
"health_label": "Health Label",
"health_label": "Метка здоровья",
"health_percentage": "Здоровье в процентах",
"health_sever_anomaly_filter": "Здоровье + Отсечение + Ядро аномалии",
"health_sever_filter": "Здоровье + Отсечение",
@@ -191,7 +180,7 @@
"hide_ailments_with_zero_buildup": "Скрыть аномальный статус, если накопление равно 0",
"hide_all_active_ailments": "Скрыть все активные аномальные статусы",
"hide_all_inactive_ailments": "Скрыть все неактивные аномальные статусы",
"hide_bar_for_infinite_buffs": "Скрыть шкалу у бесконечных баффов",
"hide_bar_for_infinite_buffs": "Скрыть шкалу у бесконечных эффектов",
"hide_dead_or_captured": "Скрыть мёртвых и захваченных монстров",
"hide_disabled_ailments": "Скрыть отключенные аномальные статусы",
"hide_inactive_ailments_with_no_buildup_support": "Скрыть неактивные аномальные статусы без поддержки накопления",
@@ -201,7 +190,7 @@
"hide_other_players": "Скрыть остальных игроков",
"hide_player_if_player_damage_is_zero": "Скрыть игрока, если его урон равен 0",
"hide_servants": "Скрыть последователей",
"hide_timer_for_infinite_buffs": "Скрыть таймер у бесконечных баффов",
"hide_timer_for_infinite_buffs": "Скрыть таймер у бесконечных эффектов",
"hide_total_damage": "Скрыть общий урон",
"hide_total_if_total_damage_is_zero": "Скрыть общий урон, если он равен 0",
"hide_undamaged_parts": "Скрыть неповреждённые части тела",
@@ -212,20 +201,22 @@
"highlighted_buildup_bar": "Помеченная шкала накопления",
"highlighted_damage_bar": "Помеченная шкала урона",
"highlighted_targeted": "Помеченный",
"history": "History",
"history_size": "History Size",
"history": "История",
"history_size": "Размер истории",
"horizontal": "Горизонтально",
"hotkeys": "Горячие клавиши",
"hunter_rank": "Ранг охотника",
"hunter_rank_label": "Метка ранга охотника",
"ice_resistance_label": "Ice Resistance Label",
"ice_resistance_label": "Метка сопротивления льду",
"id": "ID",
"in_lobby": "В лобби",
"in_training_area": "В тренировочной зоне",
"include": "Элементы",
"infinite_buffs_location": "Позиция бесконечных эффектов",
"inside": "Внутри",
"installations": "Установки",
"italic": "Курсив",
"item_buffs": "Эффекты предметов",
"join_time": "Время присоединения",
"killcam": "Камера смерти",
"kunai": "Кунаи",
@@ -249,8 +240,10 @@
"max_monster_updates_per_tick": "Макс. кол-во обновлений за тик",
"max_value": "Максимальное значение",
"me": "Я",
"melody_effects": "Эффекты мелодии",
"menu_font": "Шрифт меню",
"menu_font_change_disclaimer": "Изменение языка и размера шрифта меню несколько раз приведёт к вылету!",
"misc_buffs": "Разные эффекты",
"mod_name": "MHR Overlay",
"mode": "Режим",
"modifiers": "Модификаторы",
@@ -276,6 +269,7 @@
"other": "Другое",
"other_player_otomos": "Спутники других игроков",
"other_players": "Другие игроки",
"otomo_moves": "Навыки спутника",
"otomos": "Спутники",
"outline": "Обводка",
"outside": "Снаружи",
@@ -299,6 +293,7 @@
"quest_start_animation": "Анимация начала квеста",
"quest_time": "Время квеста",
"rage": "Ярость",
"rampage_skills": "Навыки буйства",
"reframework_outdated": "Установленная версия REFramework устарела. Пожалуйста, обновитесь, иначе MHR Overlay будет работать некорректно.",
"relative_offset": "Относительный сдвиг",
"rename": "Переименовать",
@@ -321,28 +316,30 @@
"show_other_player_otomos_separately": "Показывать спутников других игроков отдельно",
"show_servant_otomos_separately": "Показывать спутников последователей отдельно",
"size": "Размер",
"skills": "Навыки",
"small_monster_UI": "Интерфейс малых монстров",
"small_monsters": "Малые монстры",
"sorting": "Сортировка",
"spacing": "Расстояние между элементами",
"stamina": "Выносливость",
"stamina_label": "Stamina Label",
"stamina_label": "Метка выносливости",
"static_orientation": "Статичная ориентация",
"static_position": "Статичное расположение",
"static_sorting": "Статичная сортировка",
"static_spacing": "Статичное расстояние между элементами",
"statically_positioned": "Рассположенный статично",
"stats_UI": "Stats UI",
"stats_UI": "Интерфейс статуса",
"status": "Статус",
"style": "Стиль",
"summary_screen": "Экран Результатов",
"summary_screen": "Экран результатов",
"text_label": "Текстовая метка",
"thickness": "Толщина",
"thunder_resistance_label": "Thunder Resistance Label",
"thunder_resistance_label": "Метка сопротивления грозе",
"time_UI": "Интерфейс времени",
"time_label": "Метка времени",
"time_limit": "Ограничение по времени (cек.)",
"timer": "Таймер",
"timer_delays": "Задержка таймеров",
"timer_label": "Метка таймера",
"top_buildup": "Наибольшее накопление",
"top_damage": "Наибольший урон",
@@ -365,13 +362,22 @@
"tracked_damage_types": "Отслеживаемые типы урона",
"tracked_monster_types": "Отслеживаемые типы монстров",
"type": "Тип",
"update_buffs_delay": "Обновление эффектов (cек.)",
"update_is_online_delay": "Обновление онлайн статуса (cек.)",
"update_myself_position_delay": "Обновление собственных координат (cек.)",
"update_player_info_delay": "Обновление информации об игроке (cек.)",
"update_players_delay": "Обновление списка игроков (cек.)",
"update_quest_time_delay": "Обновление продолжительности задания (cек.)",
"update_singletons_delay": "Обновление синглтонов (cек.)",
"update_window_size_delay": "Обновление размеров окна (cек.)",
"use_d2d_if_available": "Использовать Direct2D, если доступен",
"value": "Value",
"value": "Значение",
"value_label": "Метка значений",
"vertical": "Вертикально",
"viewport_offset": "Сдвиг в экранном пространстве",
"visible": "Включить",
"water_resistance_label": "Water Resistance Label",
"water_resistance_label": "Метка сопротивления воде",
"weapon_skills": "Навыки оружия",
"width": "Ширина",
"world_offset": "Сдвиг в игровом пространстве",
"wyvern_riding": "Езда на виверне",
@@ -380,96 +386,87 @@
"z": "Z"
},
"dango_skills": {
"dango_insurance_defense_up": "Dango Insurance Defense Up"
"dango_adrenaline": "Данго-адреналин",
"dango_booster": "Данго-усилитель",
"dango_bulker": "Данго-пижон",
"dango_connector": "Данго-сцепщик",
"dango_defender": "Данго-защитник",
"dango_flyer": "Данго-пилот",
"dango_glutton": "Данго-обжора",
"dango_hunter": "Данго-охотник",
"dango_insurance": "Данго-страховщик",
"dango_insurance_defense_up": "Данго-страховщик: усил. защиты",
"super_recovery_dango": "Супервосстан. данго"
},
"dangos": {
"dango_adrenaline": "Dango Adrenaline",
"dango_bombardier": "Dango Bombardier",
"dango_booster": "Dango Booster",
"dango_bulker": "Dango Bulker",
"dango_connector": "Dango Connector",
"dango_defender": "Dango Defender",
"dango_defender_hi": "Dango Defender (Hi)",
"dango_deflector": "Dango Deflector",
"dango_dragon_res": "Dango Dragon Res",
"dango_dragon_res_hi": "Dango Dragon Res (Hi)",
"dango_driver": "Dango Driver",
"dango_feet": "Dango Feet",
"dango_fighter": "Dango Fighter",
"dango_fire_res": "Dango Fire Res",
"dango_fire_res_hi": "Dango Fire Res (Hi)",
"dango_flyer": "Dango Flyer",
"dango_glutton": "Dango Glutton",
"dango_guard": "Dango Guard",
"dango_hunter": "Dango Hunter",
"dango_hurler": "Dango Hurler",
"dango_ice_res": "Dango Ice Res",
"dango_ice_res_hi": "Dango Ice Res (Hi)",
"dango_immunizer": "Dango Immunizer",
"dango_insurance": "Dango Insurance",
"dango_insurance_defense_up": "Dango Insurance Defense Up",
"dango_marksman": "Dango Marksman",
"dango_medic": "Dango Medic",
"dango_medic_hi": "Dango Medic (Hi)",
"dango_moxie": "Dango Moxie",
"dango_polisher": "Dango Polisher",
"dango_pyro": "Dango Pyro",
"dango_reviver": "Dango Reviver",
"dango_rider": "Dango Rider",
"dango_shifter": "Dango Shifter",
"dango_slugger": "Dango Slugger",
"dango_specialist": "Dango Specialist",
"dango_temper": "Dango Temper",
"dango_thunder_res": "Dango Thunder Res ",
"dango_thunder_res_hi": "Dango Thunder Res (Hi)",
"dango_wall_runner": "Dango Wall Runner",
"dango_water_res": "Dango Water Res",
"dango_water_res_hi": "Dango Water Res (Hi)",
"dango_weakener": "Dango Weakener",
"super_recovery_dango": "Super Recovery Dango"
"endemic_life": {
"butterflame": "Огнебабочка",
"clothfly": "Тканебабочка",
"cutterfly": "Стрекоза-нож",
"gold_wirebug": "Золотой Протожук",
"peepersects": "Глазобабочки",
"red_lampsquid": "Крс. Лампокальм.",
"ruby_wirebug": "Рубиновый Протожук",
"stinkmink": "Пахучка",
"yellow_lampsquid": "Жлт. Лампокальм."
},
"font_name": "NotoSans-Bold.otf",
"item_buffs": {
"adamant_seed": "Адамант. зерно",
"armor_ammo": "Защитные снаряды",
"armorskin": "Бронир. кожа",
"dash_juice": "Сок бодрости",
"demon_ammo": "Демон. снаряды",
"demon_powder": "Демон. порошок",
"demondrug": "Демон. снадобье",
"gourmet_fish": "Вкусная рыба",
"hardshell_powder": "Пор. из скорлупы",
"immunizer": "Иммунатор",
"mega_armorskin": "Мегабронир. кожа",
"mega_demondrug": "Мегадемон. снад.",
"might_seed": "Зер. могущества"
},
"font_name": "NotoSansKR-Bold.otf",
"melody_effects": {
"affinity_up": "Affinity Up",
"attack_and_affinity_up": "Attack and Affinity Up",
"attack_and_defense_up": "Attack and Defense Up",
"attack_up": "Attack Up",
"blight_negated": "Blight Negated",
"defense_up": "Defense Up",
"divine_protection": "Divine Protection",
"earplugs_l": "Earplugs (L)",
"earplugs_s": "Earplugs (S)",
"elemental_attack_boost": "Elemental Attack Boost",
"environment_damage_negated": "Environment Damage Negated",
"health_recovery_l": "Health Recovery (L)",
"health_recovery_s": "Health Recovery (S)",
"health_recovery_s_antidote": "Health Recovery (S) + Antidote",
"health_regeneration": "Health Regeneration",
"infernal_melody": "Infernal Melody",
"knockbacks_negated": "Knockbacks Negated",
"self_improvement": "Self-Improvement",
"sharpness_extension": "Sharpness Extension",
"sharpness_loss_reduced": "Sharpness Loss Reduced",
"sharpness_regeneration": "Sharpness Regeneration",
"sonic_barrier": "Sonic Barrier",
"sonic_wave": "Sonic Wave",
"stamina_recovery_up": "Stamina Recovery Up",
"stamina_use_reduced": "Stamina Use Reduced",
"stun_negated": "Stun Negated",
"tremors_negated": "Tremors Negated",
"wind_pressure_negated": "Wind Pressure Negated"
"affinity_up": "Усиление мастерства",
"attack_and_affinity_up": "Усиление атаки и мастерства",
"attack_and_defense_up": "Усиление атаки и защиты",
"attack_up": "Усиление атаки",
"blight_negated": "Снятие порчи",
"defense_up": "Усиление защиты",
"divine_protection": "Божественная защита",
"earplugs_l": "Наушники (L)",
"earplugs_s": "Наушники (S)",
"elemental_attack_boost": "Усиление атаки стихией",
"environment_damage_negated": "Отмена урона окружением",
"health_recovery_l": "Восст. здоровья (L)",
"health_recovery_s": "Восст. здоровья (S)",
"health_recovery_s_antidote": "Восст. здоровья (S) + по-ядие",
"health_regeneration": "Регенерация ",
"infernal_melody": "Песня яростного пламени",
"knockbacks_negated": "Нейтрализация сбив. с ног",
"self_improvement": "Самосовершенствование",
"sharpness_extension": "Увеличение остроты",
"sharpness_loss_reduced": "Замедление затупления",
"sharpness_regeneration": "Регенерация остроты",
"sonic_barrier": "Звуковой барьер",
"sonic_wave": "Звуковая волна",
"stamina_recovery_up": "Улучш. восст. выносливости",
"stamina_use_reduced": "Усиление выносливости",
"stun_negated": "Нейтрализация оглушения",
"tremors_negated": "Нейтрализация тряски",
"wind_pressure_negated": "Отмена давления ветра"
},
"misc_buffs": {
"attack_up": "Attack Up",
"defense_down": "Defense Down",
"defense_up": "Defense Up",
"immunity": "Immunity",
"stamina_use_down": "Stamina Use Down"
"attack_up": "Усиление атаки",
"defense_up": "Усиление защиты",
"immunity": "Устойчивость",
"natural_healing_up": "Естественное лечение",
"stamina_use_down": "Уменьшение расхода выносливости"
},
"otomo_moves": {
"go_fight_win": "Go, Fight, Win",
"power_drum": "Power Drum",
"rousing_roar": "Rousing Roar"
"go_fight_win": "Сражайся, побеждай",
"power_drum": "Барабан силы",
"rousing_roar": "Воодушевляющий рев",
"vase_of_vitality": "Ваза живучести"
},
"parts": {
"abdomen": "Брюхо",
@@ -540,108 +537,169 @@
"wingclaws": "Крыло-коготь",
"wings": "Крылья"
},
"rampage_skills": {
"chameleos_soul": "Душа Хамелеоса",
"kushala_daora_soul": "Душа Кушалы Даоры"
},
"skills": {
"adrenaline_rush": "Adrenaline Rush",
"affinity_sliding": "Affinity Sliding",
"agitator": "Agitator",
"bladescale_hone": "Bladescale Hone",
"bloodlust": "Bloodlust",
"burst": "Burst",
"coalescence": "Coalescence",
"counterstrike": "Counterstrike",
"dereliction": "Dereliction",
"dragon_conversion_elemental_attack_up": "Dragon Conversion Elem. Attack Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion Elem. Res. Up",
"dragonheart": "Dragonheart",
"frenzied_bloodlust": "Frenzied Bloodlust",
"furious": "Furious",
"grinder_s": "Grinder (S)",
"heaven_sent": "Heaven-Sent",
"hellfire_cloak": "Hellfire Cloak",
"heroics": "Heroics",
"intrepid_heart": "Intrepid Heart",
"kushala_daora_soul": "Kushala Daora Soul",
"latent_power": "Latent Power",
"maximum_might": "Maximum Might",
"offensive_guard": "Offensive Guard",
"peak_performance": "Peak Performance",
"powder_mantle_blue": "Powder Mantle (Blue)",
"powder_mantle_red": "Powder Mantle (Red)",
"protective_polish": "Protective Polish",
"resentment": "Resentment",
"resuscitate": "Resuscitate",
"spiribirds_call": "Spiribird's Call",
"status_trigger": "Status Trigger",
"wall_runner": "Wall Runner",
"wind_mantle": "Wind Mantle"
"adrenaline_rush": "Прилив адреналина",
"affinity_sliding": "Мастерский подкат",
"agitator": "Подстрекатель",
"berserk": "Безумец",
"bladescale_hone": "Острая чешуя",
"blood_awakening": "Пробуждение крови",
"bloodlust": "Кровожадность",
"burst": "Выброс",
"coalescence": "Сращивание",
"counterstrike": "Контрудар",
"dereliction": "Упущение",
"dragon_conversion_elemental_attack_up": "Преобраз-е дракона: усил. эл. атаки",
"dragon_conversion_elemental_res_up": "Преобраз-е дракона: усил. сопротивл.",
"dragonheart": "Драконье сердце",
"embolden": "Воодушевление",
"frenzied_bloodlust": "Буйная кровожадность",
"furious": "Гнев",
"grinder_s": "Дробилка (S)",
"heaven_sent": "Божий посланник",
"hellfire_cloak": "Завеса ад. пламени",
"heroics": "Героизм",
"inspiration": "Вдохновение",
"intrepid_heart": "бесстрашное сердце",
"latent_power": "Скрытая энергия",
"maximum_might": "Макс. могущество",
"offensive_guard": "Агрессивная защита",
"partbreaker": "Рассекатель",
"peak_performance": "На высоте",
"powder_mantle_blue": "Порошковый покров (синий)",
"powder_mantle_red": "Порошковый покров (красный)",
"protective_polish": "Защитная полировка",
"resentment": "Презрение",
"resuscitate": "Оживление",
"spiribirds_call": "Зов Духоптицы",
"status_trigger": "Смена статуса",
"strife": "Борьба",
"wall_runner": "Бегун по стенам",
"wind_mantle": "Мантия ветра"
},
"stats": {
"affinity": "Affinity",
"attack": "Attack",
"defense": "Defense",
"dragon": "Dragon",
"dragon_resistance": "Dragon Res",
"fire": "Fire",
"fire_resistance": "Fire Res",
"ice": "Ice",
"ice_resistance": "Ice Res",
"stamina": "Stamina",
"thunder": "Thunder",
"thunder_resistance": "Thunder Res",
"water": "Water",
"water_resistance": "Water Res"
"affinity": "Мастерство",
"attack": "Атака",
"defense": "Защита",
"dragon": "Дракон",
"dragon_resistance": "Сопрот. дракону",
"fire": "Огонь",
"fire_resistance": "Сопрот. огню",
"ice": "Лед",
"ice_resistance": "Сопрот. льду",
"stamina": "Выносливость",
"thunder": "Гроза",
"thunder_resistance": "Сопрот. грозе",
"water": "Вода",
"water_resistance": "Сопрот. воде"
},
"unicode_glyph_ranges": [
32,
255,
256,
383,
1024,
1241,
1327,
7680,
7935,
8192,
8303,
65280,
65519,
0,
64255,
65072,
65103,
65280,
65519,
0
],
"weapon_skills": {
"all_extracts_mix": "All Extracts Mix",
"amped_state": "Amped State",
"anchor_rage": "Anchor Rage",
"arc_shot_affinity": "Arc Shot: Affinity",
"arc_shot_brace": "Arc Shot: Brace",
"archdemon_mode": "Archdemon Mode",
"axe_heavy_slam": "Axe: Heavy Slam",
"bead_of_resonance": "Bead of Resonance",
"bolt_boost": "Bolt Boost",
"counter_charger": "Counter Charger",
"destroyer_oil": "Destroyer Oil",
"element_boost": "Element Boost",
"erupting_cannon": "Erupting Cannon",
"fanning_maneuver": "Fannin Maneuver",
"ground_splitter": "Ground Splitter",
"harvest_moon": "Harvest Moon",
"herculean_draw": "Herculean Draw",
"iai_slash": "Iai Slash",
"impact_burst": "Impact Burst",
"ironshine_silk": "Ironshine Silk",
"orange_extract": "O Extract",
"overheat": "Overheat",
"power_sheathe": "Power Sheathe",
"red_extract": "Red Extract",
"rising_moon": "Rising Moon",
"setting_sun": "Setting Sun",
"shield_charge": "Shield Charge",
"silkbind_shockwave": "Silkbind Shockwave",
"soaring_kick": "Soaring Kick",
"sonic_bloom": "Sonic Bloom",
"spiral_thrust": "Spiral Thrust",
"spirit_gauge": "Spirit Gauge",
"spirit_gauge_autofill": "Spirit Gauge Autofill",
"switch_charger": "Switch Charger",
"sword_boost_mode": "Sword Boost Mode",
"sword_charge": "Sword Charge",
"twin_wine": "Twin Wine",
"white_extract": "White Extract",
"wyvernblast_reload": "Wyvernblast Reload",
"wyvernsnipe_reload": "Wyvernsnipe Reload"
"bow": {
"arc_shot_affinity": "Выстрел дугой: мастерство",
"arc_shot_brace": "Выстрел дугой: сгруппир.",
"bolt_boost": "Усиление снарядов",
"herculean_draw": "Натяжение Геркулеса"
},
"charge_blade": {
"element_boost": "Усиление стихии",
"sword_boost_mode": "Режим усиления меча"
},
"dual_blades": {
"archdemon_mode": "Режим архидемона",
"ironshine_silk": "Блестящий шелк"
},
"great_sword": {
"power_sheathe": "Мощное убирание оружия"
},
"gunlance": {
"erupting_cannon": "Вулканическая пушка",
"ground_splitter": "Раскол земли"
},
"hammer": {
"impact_burst": "Взрыв от удара"
},
"heavy_bowgun": {
"counter_charger": "Заряженная контратака",
"overheat": "Перегрев",
"rising_moon": "Восходящая луна",
"setting_sun": "Заходящее солнце",
"wyvernsnipe_reload": "Перезарядка меткости виверны"
},
"hunting_horn": {
"bead_of_resonance": "Бусина резонанса",
"silkbind_shockwave": "Волна паутины",
"sonic_bloom": "Звуковой цветов"
},
"insect_glaive": {
"all_extracts_mix": "Смесь всех экстрактов",
"orange_extract": "Оранжевый экстракт",
"red_extract": "Красный экстракт",
"white_extract": "Белый экстракт"
},
"lance": {
"anchor_rage": "Опорный гнев",
"spiral_thrust": "Спиральный выпад",
"twin_wine": "Побеги-близнецы"
},
"light_bowgun": {
"fanning_maneuver": "Веерный маневр",
"wyvernblast_reload": "Перезарядка взрыва виверны"
},
"long_sword": {
"harvest_moon": "Луна урожая",
"iai_slash": "Удар на выхвате",
"soaring_kick": "Парящий удар ногой",
"spirit_gauge": "Шкала духа",
"spirit_gauge_autofill": "Самозаполнение шкалы духа"
},
"switch_axe": {
"amped_state": "Усил. состояние",
"axe_heavy_slam": "Топор: Неистовый удар",
"switch_charger": "Выкидной заряд"
},
"sword_and_shield": {
"destroyer_oil": "Масло уничтожения"
}
},
"weapons": {
"bow": "Лук",
"charge_blade": "Силовой клинок",
"dual_blades": "Два клинка",
"great_sword": "Двуручный меч",
"gunlance": "Копьепушка",
"hammer": "Молот",
"heavy_bowgun": "Тяжелое лукорудие",
"hunting_horn": "Охотничий рог",
"insect_glaive": "Глефа насекомых",
"lance": "Копье",
"light_bowgun": "Легкое лукорудие",
"long_sword": "Бастард",
"switch_axe": "Выкидной топор",
"sword_and_shield": "Меч и щит"
}
}

View File

@@ -3,10 +3,10 @@
"HP": "生命:",
"buildup": "积累值:",
"gold": "金冠",
"lv": "Lv.",
"lv": "",
"mini": "小型",
"otomo": "随从",
"part_anomaly_core": "怪异核",
"part_anomaly_core": "Anomaly Core",
"part_break": "部位破坏",
"part_sever": "部位切断",
"player": "玩家",
@@ -22,7 +22,6 @@
"blastblight": "Blastblight",
"bleeding": "Bleeding",
"bloodblight": "Bloodblight",
"bubbleblight": "Bubbleblight",
"deadly_poison": "Deadly Poison",
"defense_down": "Defense Down",
"dragonblight": "Dragonblight",
@@ -62,22 +61,10 @@
"waterblight": "水异常状态",
"webbed": "Webbed"
},
"consumables": {
"adamant_seed": "Adamant Seed",
"armorskin": "Armorskin",
"dash_juice": "Dash Juice",
"demon_powder": "Demon Powder",
"demondrug": "Demondrug",
"gourmet_fish": "Gourmet Fish",
"hardshell_powder": "Hardshell Powder",
"immunizer": "Immunizer",
"mega_armorskin": "Mega Armorskin",
"mega_demondrug": "Mega Demondrug",
"might_seed": "Might Seed"
},
"customization_menu": {
"UI_font": "UI字体",
"UI_font_notice": "当更改字体时,请重新加载脚本!",
"abnormal_statuses": "Abnormal Statuses",
"activation_count": "激活次数",
"affinity_label": "Affinity Label",
"ailment_buildups": "状态异常积累值",
@@ -87,10 +74,10 @@
"ailments": "状态异常",
"all_UI": "所有UI",
"anchor": "锚点",
"anomaly_cores": "怪异核",
"anomaly_filter": "怪异核",
"anomaly_health": "怪异核破坏值",
"anomaly_health_percentage": "怪异核破坏百分比",
"anomaly_cores": "Anomaly Cores",
"anomaly_filter": "Anomaly Core",
"anomaly_health": "Anomaly Core Health",
"anomaly_health_percentage": "Anomaly Core Health Percentage",
"apply": "应用",
"assign_new_key": "指定新按键",
"attack_label": "Attack Label",
@@ -100,17 +87,17 @@
"blast": "爆破",
"body_parts": "身体部位",
"bold": "粗体",
"bombs": "爆桶",
"bombs": "Bombs",
"bottom_left": "左下",
"bottom_right": "右下",
"bottom_to_top": "从下到上",
"break_anomaly_filter": "破坏+怪异核",
"bottom_to_top": "Bottom to Top",
"break_anomaly_filter": "Break + Anomaly Core",
"break_count": "破坏次数",
"break_filter": "破坏",
"break_health": "破坏值",
"break_health_percentage": "破坏值百分比",
"break_max_count": "最大破坏次数",
"break_sever_anomaly_filter": "破坏+切断+怪异核",
"break_sever_anomaly_filter": "Break + Sever + Anomaly Core",
"break_sever_filter": "破坏+切断",
"buff_UI": "Buff UI",
"buildup": "积累值",
@@ -140,8 +127,8 @@
"damage_meter_UI": "伤害统计UI",
"damage_percentage_label": "伤害百分比标签",
"damage_value_label": "伤害量标签",
"dango_skills": "Dango Skills",
"debug": "Debug",
"debug_errors": "Debug Errors",
"default_state": "默认阶段",
"defense_label": "Defense Label",
"delete": "删除",
@@ -154,17 +141,19 @@
"duration": "持续时间",
"dynamic_positioning": "动态位置",
"dynamically_positioned": "动态位置",
"effect_level": "Effect Level",
"element_2_label": "Element 2 Label",
"element_label": "Element Label",
"enable_for": "开启",
"enabled": "开启",
"endemic_life": "环境生物",
"endemic_life": "Endemic Life",
"endemic_life_UI": "环境生物UI",
"endemic_life_buffs": "Endemic Life Buffs",
"everything_seems_to_be_ok": "Everything seems to be OK!",
"family": "字体",
"farthest": "最远",
"fight_time": "战斗时间",
"fill_direction": "填充方向",
"fill_direction": "Fill Direction",
"filter": "筛选器",
"filter_mode": "筛选方式",
"fire_resistance_label": "Fire Resistance Label",
@@ -177,15 +166,15 @@
"global_scale_modifier": "全局比例更改",
"global_settings": "全局设定",
"health": "生命",
"health_anomaly_filter": "生命+怪异核",
"health_break_anomaly_filter": "生命+破坏+怪异核",
"health_anomaly_filter": "Health + Anomaly Core",
"health_break_anomaly_filter": "Health + Break + Anomaly Core",
"health_break_filter": "生命+破坏",
"health_break_sever_anomaly_filter": "生命+破坏+切断+怪异核",
"health_break_sever_anomaly_filter": "Health + Break + Sever + Anomaly Core",
"health_break_sever_filter": "生命+破坏+切断",
"health_filter": "生命",
"health_label": "Health Label",
"health_percentage": "生命百分比",
"health_sever_anomaly_filter": "生命+切断+怪异核",
"health_sever_anomaly_filter": "Health + Sever + Anomaly Core",
"health_sever_filter": "生命+切断",
"height": "高度",
"hide_ailments_with_zero_buildup": "当积累值为0时隐藏该状态异常",
@@ -223,12 +212,14 @@
"in_lobby": "在大厅",
"in_training_area": "在修炼场",
"include": "包含",
"infinite_buffs_location": "Infinite Buffs Location",
"inside": "里面",
"installations": "狩猎设备",
"installations": "Installations",
"italic": "斜体",
"item_buffs": "Item Buffs",
"join_time": "加入时间",
"killcam": "击杀镜头",
"kunai": "苦无",
"kunai": "Kunai",
"language": "语言",
"large_monster_UI": "大型怪物UI",
"large_monster_dynamic_UI": "大型怪物浮动UI",
@@ -236,7 +227,7 @@
"large_monster_static_UI": "大型怪物固定UI",
"large_monsters": "大型怪物群",
"last": "最后",
"left_to_right": "从左到右",
"left_to_right": "Left to Right",
"level": "等级",
"level_label": "等级标签",
"loading_quest": "任务加载中",
@@ -249,8 +240,10 @@
"max_monster_updates_per_tick": "每次更新的最大怪物数量",
"max_value": "最大值",
"me": "我",
"melody_effects": "Melody Effects",
"menu_font": "菜单字体",
"menu_font_change_disclaimer": "多次改变字体或语言会导致崩溃!",
"misc_buffs": "Misc Buffs",
"mod_name": "MHR Overlay",
"mode": "模式",
"modifiers": "更改项",
@@ -260,7 +253,7 @@
"monster_id": "怪物ID",
"monster_name": "怪物名",
"monster_name_label": "怪物名标签",
"monsters": "怪物",
"monsters": "Monsters",
"my_damage_bar_location": "我的伤害条位置",
"my_otomos": "我的随从",
"myself": "我自己",
@@ -273,10 +266,11 @@
"offset_is_relative_to_parts": "根据部位偏移",
"opacity_falloff": "透明度增加",
"orientation": "方向",
"other": "其它",
"other": "Other",
"other_player_otomos": "其他玩家的随从",
"other_players": "其他玩家",
"otomos": "随从",
"otomo_moves": "Buddy Moves",
"otomos": "Buddies",
"outline": "轮廓",
"outside": "外面",
"part_health": "部位生命值",
@@ -287,7 +281,7 @@
"player_name_label": "玩家名标签",
"player_name_size_limit": "玩家名长度限制",
"player_spacing": "玩家间距",
"players": "玩家",
"players": "Players",
"playing_quest": "操作界面/正常游玩时",
"poison": "中毒",
"position": "位置",
@@ -299,28 +293,30 @@
"quest_start_animation": "任务开始动画",
"quest_time": "任务时间",
"rage": "愤怒",
"rampage_skills": "Rampage Skills",
"reframework_outdated": "已安装的REFramework版本过低请更新。否则MHR Overlay不能正常工作。",
"relative_offset": "相对偏移",
"rename": "重命名",
"render_highlighted_monster": "渲染高亮怪物",
"render_inactive_anomaly_cores": "渲染不活跃的怪异核",
"render_inactive_anomaly_cores": "Render Inactive Anomaly Cores",
"render_not_highlighted_monsters": "渲染非高亮怪物",
"renderer": "渲染器",
"reset": "重置",
"reversed_order": "逆向排序",
"reward_screen": "奖励界面",
"right_alignment_shift": "右对齐偏移距离",
"right_to_left": "从右到左",
"right_alignment_shift": "Right Alignment Shift",
"right_to_left": "Right to Left",
"servant_otomos": "盟友随从",
"servants": "盟友",
"settings": "设定",
"sever_anomaly_filter": "切断+怪异核",
"sever_anomaly_filter": "Sever + Anomaly Core",
"sever_filter": "切断",
"shadow": "阴影",
"show_my_otomos_separately": "分开显示我的随从",
"show_other_player_otomos_separately": "分开显示其他玩家的随从",
"show_servant_otomos_separately": "分开显示盟友的随从",
"size": "大小",
"skills": "Skills",
"small_monster_UI": "小型怪物UI",
"small_monsters": "小型怪物群",
"sorting": "排序方式",
@@ -343,13 +339,14 @@
"time_label": "时间标签",
"time_limit": "时间限制(秒)",
"timer": "计时器",
"timer_delays": "Timer Delays",
"timer_label": "计时器标签",
"top_buildup": "最高积累值",
"top_damage": "最高伤害",
"top_damage": "Top Damage",
"top_dps": "最高DPS",
"top_left": "左上",
"top_right": "右上",
"top_to_bottom": "从上到下",
"top_to_bottom": "Top to Bottom",
"total": "总计",
"total_buildup": "总积累值",
"total_buildup_label": "总积累值标签",
@@ -365,6 +362,14 @@
"tracked_damage_types": "跟踪的伤害类型",
"tracked_monster_types": "跟踪的怪物类型",
"type": "类型",
"update_buffs_delay": "Update Buffs (seconds)",
"update_is_online_delay": "Update Is Online (seconds)",
"update_myself_position_delay": "Update Myself Position (seconds)",
"update_player_info_delay": "Update Player Info (seconds)",
"update_players_delay": "Update Players (seconds)",
"update_quest_time_delay": "Update Quest Time (seconds)",
"update_singletons_delay": "Update Singletons (seconds)",
"update_window_size_delay": "Update Window Size (seconds)",
"use_d2d_if_available": "可用时使用Direct2D",
"value": "Value",
"value_label": "数字",
@@ -372,63 +377,54 @@
"viewport_offset": "窗口偏移",
"visible": "可见",
"water_resistance_label": "Water Resistance Label",
"weapon_skills": "Weapon Skills",
"width": "宽度",
"world_offset": "整体偏移",
"wyvern_riding": "御龙",
"wyvern_riding": "Wyvern Riding",
"x": "X轴",
"y": "Y轴",
"z": "Z轴"
},
"dango_skills": {
"dango_insurance_defense_up": "Dango Insurance Defense Up"
},
"dangos": {
"dango_adrenaline": "Dango Adrenaline",
"dango_bombardier": "Dango Bombardier",
"dango_booster": "Dango Booster",
"dango_bulker": "Dango Bulker",
"dango_connector": "Dango Connector",
"dango_defender": "Dango Defender",
"dango_defender_hi": "Dango Defender (Hi)",
"dango_deflector": "Dango Deflector",
"dango_dragon_res": "Dango Dragon Res",
"dango_dragon_res_hi": "Dango Dragon Res (Hi)",
"dango_driver": "Dango Driver",
"dango_feet": "Dango Feet",
"dango_fighter": "Dango Fighter",
"dango_fire_res": "Dango Fire Res",
"dango_fire_res_hi": "Dango Fire Res (Hi)",
"dango_flyer": "Dango Flyer",
"dango_glutton": "Dango Glutton",
"dango_guard": "Dango Guard",
"dango_hunter": "Dango Hunter",
"dango_hurler": "Dango Hurler",
"dango_ice_res": "Dango Ice Res",
"dango_ice_res_hi": "Dango Ice Res (Hi)",
"dango_immunizer": "Dango Immunizer",
"dango_insurance": "Dango Insurance",
"dango_insurance_defense_up": "Dango Insurance Defense Up",
"dango_marksman": "Dango Marksman",
"dango_medic": "Dango Medic",
"dango_medic_hi": "Dango Medic (Hi)",
"dango_moxie": "Dango Moxie",
"dango_polisher": "Dango Polisher",
"dango_pyro": "Dango Pyro",
"dango_reviver": "Dango Reviver",
"dango_rider": "Dango Rider",
"dango_shifter": "Dango Shifter",
"dango_slugger": "Dango Slugger",
"dango_specialist": "Dango Specialist",
"dango_temper": "Dango Temper",
"dango_thunder_res": "Dango Thunder Res ",
"dango_thunder_res_hi": "Dango Thunder Res (Hi)",
"dango_wall_runner": "Dango Wall Runner",
"dango_water_res": "Dango Water Res",
"dango_water_res_hi": "Dango Water Res (Hi)",
"dango_weakener": "Dango Weakener",
"super_recovery_dango": "Super Recovery Dango"
},
"endemic_life": {
"butterflame": "Butterflame",
"clothfly": "Clothfly",
"cutterfly": "Cutterfly",
"gold_wirebug": "Gold Wirebug",
"peepersects": "Peepersects",
"red_lampsquid": "Red Lampsquid",
"ruby_wirebug": "Ruby Wirebug",
"stinkmink": "Stinkmink",
"yellow_lampsquid": "Yellow Lampsquid"
},
"font_name": "NotoSansSC-Bold.otf",
"item_buffs": {
"adamant_seed": "Adamant Seed",
"armor_ammo": "Armor Ammo",
"armorskin": "Armorskin",
"dash_juice": "Dash Juice",
"demon_ammo": "Demon Ammo",
"demon_powder": "Demon Powder",
"demondrug": "Demondrug",
"gourmet_fish": "Gourmet Fish",
"hardshell_powder": "Hardshell Powder",
"immunizer": "Immunizer",
"mega_armorskin": "Mega Armorskin",
"mega_demondrug": "Mega Demondrug",
"might_seed": "Might Seed"
},
"melody_effects": {
"affinity_up": "Affinity Up",
"attack_and_affinity_up": "Attack and Affinity Up",
@@ -461,15 +457,16 @@
},
"misc_buffs": {
"attack_up": "Attack Up",
"defense_down": "Defense Down",
"defense_up": "Defense Up",
"immunity": "Immunity",
"natural_healing_up": "Natural Healing Up",
"stamina_use_down": "Stamina Use Down"
},
"otomo_moves": {
"go_fight_win": "Go, Fight, Win",
"power_drum": "Power Drum",
"rousing_roar": "Rousing Roar"
"rousing_roar": "Rousing Roar",
"vase_of_vitality": "Vase of Vitality"
},
"parts": {
"abdomen": "腹部",
@@ -540,30 +537,38 @@
"wingclaws": "翼爪",
"wings": "翼"
},
"rampage_skills": {
"chameleos_soul": "Chameleos Soul",
"kushala_daora_soul": "Kushala Daora Soul"
},
"skills": {
"adrenaline_rush": "Adrenaline Rush",
"affinity_sliding": "Affinity Sliding",
"agitator": "Agitator",
"berserk": "Berserk",
"bladescale_hone": "Bladescale Hone",
"blood_awakening": "Blood Awakening",
"bloodlust": "Bloodlust",
"burst": "Burst",
"coalescence": "Coalescence",
"counterstrike": "Counterstrike",
"dereliction": "Dereliction",
"dragon_conversion_elemental_attack_up": "Dragon Conversion Elem. Attack Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion Elem. Res. Up",
"dragon_conversion_elemental_attack_up": "Dragon Conversion: Elem. Atk Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion: Elem. Res Up",
"dragonheart": "Dragonheart",
"embolden": "Embolden",
"frenzied_bloodlust": "Frenzied Bloodlust",
"furious": "Furious",
"grinder_s": "Grinder (S)",
"heaven_sent": "Heaven-Sent",
"hellfire_cloak": "Hellfire Cloak",
"heroics": "Heroics",
"inspiration": "Inspiration",
"intrepid_heart": "Intrepid Heart",
"kushala_daora_soul": "Kushala Daora Soul",
"latent_power": "Latent Power",
"maximum_might": "Maximum Might",
"offensive_guard": "Offensive Guard",
"partbreaker": "Partbreaker",
"peak_performance": "Peak Performance",
"powder_mantle_blue": "Powder Mantle (Blue)",
"powder_mantle_red": "Powder Mantle (Red)",
@@ -572,6 +577,7 @@
"resuscitate": "Resuscitate",
"spiribirds_call": "Spiribird's Call",
"status_trigger": "Status Trigger",
"strife": "Strife",
"wall_runner": "Wall Runner",
"wind_mantle": "Wind Mantle"
},
@@ -596,56 +602,104 @@
255,
8192,
8303,
11904,
12031,
12288,
12543,
12784,
12799,
12351,
12800,
19903,
19968,
40879,
40959,
63744,
64255,
65072,
65103,
65280,
65519,
0
],
"weapon_skills": {
"all_extracts_mix": "All Extracts Mix",
"amped_state": "Amped State",
"anchor_rage": "Anchor Rage",
"arc_shot_affinity": "Arc Shot: Affinity",
"arc_shot_brace": "Arc Shot: Brace",
"archdemon_mode": "Archdemon Mode",
"axe_heavy_slam": "Axe: Heavy Slam",
"bead_of_resonance": "Bead of Resonance",
"bolt_boost": "Bolt Boost",
"counter_charger": "Counter Charger",
"destroyer_oil": "Destroyer Oil",
"element_boost": "Element Boost",
"erupting_cannon": "Erupting Cannon",
"fanning_maneuver": "Fannin Maneuver",
"ground_splitter": "Ground Splitter",
"harvest_moon": "Harvest Moon",
"herculean_draw": "Herculean Draw",
"iai_slash": "Iai Slash",
"impact_burst": "Impact Burst",
"ironshine_silk": "Ironshine Silk",
"orange_extract": "O Extract",
"overheat": "Overheat",
"power_sheathe": "Power Sheathe",
"red_extract": "Red Extract",
"rising_moon": "Rising Moon",
"setting_sun": "Setting Sun",
"shield_charge": "Shield Charge",
"silkbind_shockwave": "Silkbind Shockwave",
"soaring_kick": "Soaring Kick",
"sonic_bloom": "Sonic Bloom",
"spiral_thrust": "Spiral Thrust",
"spirit_gauge": "Spirit Gauge",
"spirit_gauge_autofill": "Spirit Gauge Autofill",
"switch_charger": "Switch Charger",
"sword_boost_mode": "Sword Boost Mode",
"sword_charge": "Sword Charge",
"twin_wine": "Twin Wine",
"white_extract": "White Extract",
"wyvernblast_reload": "Wyvernblast Reload",
"wyvernsnipe_reload": "Wyvernsnipe Reload"
"bow": {
"arc_shot_affinity": "Arc Shot: Affinity",
"arc_shot_brace": "Arc Shot: Brace",
"bolt_boost": "Bolt Boost",
"herculean_draw": "Herculean Draw"
},
"charge_blade": {
"element_boost": "Element Boost",
"sword_boost_mode": "Sword Boost Mode"
},
"dual_blades": {
"archdemon_mode": "Archdemon Mode",
"ironshine_silk": "Ironshine Silk"
},
"great_sword": {
"power_sheathe": "Power Sheathe"
},
"gunlance": {
"erupting_cannon": "Erupting Cannon",
"ground_splitter": "Ground Splitter"
},
"hammer": {
"impact_burst": "Impact Burst"
},
"heavy_bowgun": {
"counter_charger": "Counter Charger",
"overheat": "Overheat",
"rising_moon": "Rising Moon",
"setting_sun": "Setting Sun",
"wyvernsnipe_reload": "Wyvernsnipe Reload"
},
"hunting_horn": {
"bead_of_resonance": "Bead of Resonance",
"silkbind_shockwave": "Silkbind Shockwave",
"sonic_bloom": "Sonic Bloom"
},
"insect_glaive": {
"all_extracts_mix": "All Extracts Mix",
"orange_extract": "Orange Extract",
"red_extract": "Red Extract",
"white_extract": "White Extract"
},
"lance": {
"anchor_rage": "Anchor Rage",
"spiral_thrust": "Spiral Thrust",
"twin_wine": "Twin Wine"
},
"light_bowgun": {
"fanning_maneuver": "Fanning Maneuver",
"wyvernblast_reload": "Wyvernblast Reload"
},
"long_sword": {
"harvest_moon": "Harvest Moon",
"iai_slash": "Iai Slash",
"soaring_kick": "Soaring Kick",
"spirit_gauge": "Spirit Gauge",
"spirit_gauge_autofill": "Spirit Gauge Autofill"
},
"switch_axe": {
"amped_state": "Amped State",
"axe_heavy_slam": "Axe: Heavy Slam",
"switch_charger": "Switch Charger"
},
"sword_and_shield": {
"destroyer_oil": "Destroyer Oil"
}
},
"weapons": {
"bow": "Bow",
"charge_blade": "Charge Blade",
"dual_blades": "Dual Blades",
"great_sword": "Great Sword",
"gunlance": "Gunlance",
"hammer": "Hammer",
"heavy_bowgun": "Heavy Bowgun",
"hunting_horn": "Hunting Horn",
"insect_glaive": "Insect Glaive",
"lance": "Lance",
"light_bowgun": "Light Bowgun",
"long_sword": "Long Sword",
"switch_axe": "Switch Axe",
"sword_and_shield": "Sword & Shield"
}
}

View File

@@ -3,7 +3,7 @@
"HP": "生命:",
"buildup": "累積值:",
"gold": "金冠",
"lv": "Lv.",
"lv": "",
"mini": "小型",
"otomo": "Buddy",
"part_anomaly_core": "Anomaly Core",
@@ -22,7 +22,6 @@
"blastblight": "Blastblight",
"bleeding": "Bleeding",
"bloodblight": "Bloodblight",
"bubbleblight": "Bubbleblight",
"deadly_poison": "Deadly Poison",
"defense_down": "Defense Down",
"dragonblight": "Dragonblight",
@@ -62,22 +61,10 @@
"waterblight": "水屬性異常",
"webbed": "Webbed"
},
"consumables": {
"adamant_seed": "Adamant Seed",
"armorskin": "Armorskin",
"dash_juice": "Dash Juice",
"demon_powder": "Demon Powder",
"demondrug": "Demondrug",
"gourmet_fish": "Gourmet Fish",
"hardshell_powder": "Hardshell Powder",
"immunizer": "Immunizer",
"mega_armorskin": "Mega Armorskin",
"mega_demondrug": "Mega Demondrug",
"might_seed": "Might Seed"
},
"customization_menu": {
"UI_font": "UI 字型",
"UI_font_notice": "當更改文字時,請重新載入",
"abnormal_statuses": "Abnormal Statuses",
"activation_count": "觸發次數",
"affinity_label": "Affinity Label",
"ailment_buildups": "異常狀態累積值",
@@ -140,8 +127,8 @@
"damage_meter_UI": "傷害量計算 UI",
"damage_percentage_label": "傷害量百分比",
"damage_value_label": "傷害量",
"dango_skills": "Dango Skills",
"debug": "Debug",
"debug_errors": "Debug Errors",
"default_state": "Default State",
"defense_label": "Defense Label",
"delete": "Delete",
@@ -154,12 +141,14 @@
"duration": "Duration",
"dynamic_positioning": "浮動的資訊位置",
"dynamically_positioned": "浮動的魔物資訊",
"effect_level": "Effect Level",
"element_2_label": "Element 2 Label",
"element_label": "Element Label",
"enable_for": "啟用對象",
"enabled": "啟用",
"endemic_life": "Endemic Life",
"endemic_life_UI": "環境生物 UI",
"endemic_life_buffs": "Endemic Life Buffs",
"everything_seems_to_be_ok": "Everything seems to be OK!",
"family": "字體",
"farthest": "最遠的",
@@ -223,9 +212,11 @@
"in_lobby": "In Lobby",
"in_training_area": "In Training Area",
"include": "細部資訊調整",
"infinite_buffs_location": "Infinite Buffs Location",
"inside": "內部",
"installations": "Installations",
"italic": "斜體",
"item_buffs": "Item Buffs",
"join_time": "加入時間",
"killcam": "Killcam",
"kunai": "Kunai",
@@ -249,8 +240,10 @@
"max_monster_updates_per_tick": "每次更新的最大魔物數量",
"max_value": "Max Value",
"me": "我",
"melody_effects": "Melody Effects",
"menu_font": "選單字體大小",
"menu_font_change_disclaimer": "重複變更語言和選單字型大小有可能會當機!",
"misc_buffs": "Misc Buffs",
"mod_name": "MHR Overlay",
"mode": "Mode",
"modifiers": "更改項",
@@ -276,6 +269,7 @@
"other": "Other",
"other_player_otomos": "Other Player Buddies",
"other_players": "其他玩家",
"otomo_moves": "Buddy Moves",
"otomos": "Buddies",
"outline": "描邊",
"outside": "外部",
@@ -299,6 +293,7 @@
"quest_start_animation": "Quest Start Animation",
"quest_time": "任務時間",
"rage": "憤怒度",
"rampage_skills": "Rampage Skills",
"reframework_outdated": "已安裝的 REFramework 版本已過期. 麻煩請更新版本, 否則 MHR Overlay 無法正確作用.",
"relative_offset": "相對偏移",
"rename": "Rename",
@@ -321,6 +316,7 @@
"show_other_player_otomos_separately": "Show Other Player Buddies separately",
"show_servant_otomos_separately": "Show Follower Buddies separately",
"size": "大小",
"skills": "Skills",
"small_monster_UI": "小型魔物 UI",
"small_monsters": "小型魔物群",
"sorting": "排序方式",
@@ -343,6 +339,7 @@
"time_label": "時間",
"time_limit": "時限 (秒)",
"timer": "Timer",
"timer_delays": "Timer Delays",
"timer_label": "計時器",
"top_buildup": "最高累積值",
"top_damage": "最高傷害",
@@ -365,6 +362,14 @@
"tracked_damage_types": "追蹤的傷害類型",
"tracked_monster_types": "追蹤的魔物類型",
"type": "類型",
"update_buffs_delay": "Update Buffs (seconds)",
"update_is_online_delay": "Update Is Online (seconds)",
"update_myself_position_delay": "Update Myself Position (seconds)",
"update_player_info_delay": "Update Player Info (seconds)",
"update_players_delay": "Update Players (seconds)",
"update_quest_time_delay": "Update Quest Time (seconds)",
"update_singletons_delay": "Update Singletons (seconds)",
"update_window_size_delay": "Update Window Size (seconds)",
"use_d2d_if_available": "Use Direct2D if available",
"value": "Value",
"value_label": "數字",
@@ -372,6 +377,7 @@
"viewport_offset": "視窗的位置",
"visible": "可見",
"water_resistance_label": "Water Resistance Label",
"weapon_skills": "Weapon Skills",
"width": "寬度",
"world_offset": "地圖中的位置",
"wyvern_riding": "Wyvern Riding",
@@ -380,55 +386,45 @@
"z": "Z軸"
},
"dango_skills": {
"dango_insurance_defense_up": "Dango Insurance Defense Up"
},
"dangos": {
"dango_adrenaline": "Dango Adrenaline",
"dango_bombardier": "Dango Bombardier",
"dango_booster": "Dango Booster",
"dango_bulker": "Dango Bulker",
"dango_connector": "Dango Connector",
"dango_defender": "Dango Defender",
"dango_defender_hi": "Dango Defender (Hi)",
"dango_deflector": "Dango Deflector",
"dango_dragon_res": "Dango Dragon Res",
"dango_dragon_res_hi": "Dango Dragon Res (Hi)",
"dango_driver": "Dango Driver",
"dango_feet": "Dango Feet",
"dango_fighter": "Dango Fighter",
"dango_fire_res": "Dango Fire Res",
"dango_fire_res_hi": "Dango Fire Res (Hi)",
"dango_flyer": "Dango Flyer",
"dango_glutton": "Dango Glutton",
"dango_guard": "Dango Guard",
"dango_hunter": "Dango Hunter",
"dango_hurler": "Dango Hurler",
"dango_ice_res": "Dango Ice Res",
"dango_ice_res_hi": "Dango Ice Res (Hi)",
"dango_immunizer": "Dango Immunizer",
"dango_insurance": "Dango Insurance",
"dango_insurance_defense_up": "Dango Insurance Defense Up",
"dango_marksman": "Dango Marksman",
"dango_medic": "Dango Medic",
"dango_medic_hi": "Dango Medic (Hi)",
"dango_moxie": "Dango Moxie",
"dango_polisher": "Dango Polisher",
"dango_pyro": "Dango Pyro",
"dango_reviver": "Dango Reviver",
"dango_rider": "Dango Rider",
"dango_shifter": "Dango Shifter",
"dango_slugger": "Dango Slugger",
"dango_specialist": "Dango Specialist",
"dango_temper": "Dango Temper",
"dango_thunder_res": "Dango Thunder Res ",
"dango_thunder_res_hi": "Dango Thunder Res (Hi)",
"dango_wall_runner": "Dango Wall Runner",
"dango_water_res": "Dango Water Res",
"dango_water_res_hi": "Dango Water Res (Hi)",
"dango_weakener": "Dango Weakener",
"super_recovery_dango": "Super Recovery Dango"
},
"endemic_life": {
"butterflame": "Butterflame",
"clothfly": "Clothfly",
"cutterfly": "Cutterfly",
"gold_wirebug": "Gold Wirebug",
"peepersects": "Peepersects",
"red_lampsquid": "Red Lampsquid",
"ruby_wirebug": "Ruby Wirebug",
"stinkmink": "Stinkmink",
"yellow_lampsquid": "Yellow Lampsquid"
},
"font_name": "NotoSansTC-Bold.otf",
"item_buffs": {
"adamant_seed": "Adamant Seed",
"armor_ammo": "Armor Ammo",
"armorskin": "Armorskin",
"dash_juice": "Dash Juice",
"demon_ammo": "Demon Ammo",
"demon_powder": "Demon Powder",
"demondrug": "Demondrug",
"gourmet_fish": "Gourmet Fish",
"hardshell_powder": "Hardshell Powder",
"immunizer": "Immunizer",
"mega_armorskin": "Mega Armorskin",
"mega_demondrug": "Mega Demondrug",
"might_seed": "Might Seed"
},
"melody_effects": {
"affinity_up": "Affinity Up",
"attack_and_affinity_up": "Attack and Affinity Up",
@@ -461,15 +457,16 @@
},
"misc_buffs": {
"attack_up": "Attack Up",
"defense_down": "Defense Down",
"defense_up": "Defense Up",
"immunity": "Immunity",
"natural_healing_up": "Natural Healing Up",
"stamina_use_down": "Stamina Use Down"
},
"otomo_moves": {
"go_fight_win": "Go, Fight, Win",
"power_drum": "Power Drum",
"rousing_roar": "Rousing Roar"
"rousing_roar": "Rousing Roar",
"vase_of_vitality": "Vase of Vitality"
},
"parts": {
"abdomen": "腹部",
@@ -540,30 +537,38 @@
"wingclaws": "翼爪",
"wings": "翅膀"
},
"rampage_skills": {
"chameleos_soul": "Chameleos Soul",
"kushala_daora_soul": "Kushala Daora Soul"
},
"skills": {
"adrenaline_rush": "Adrenaline Rush",
"affinity_sliding": "Affinity Sliding",
"agitator": "Agitator",
"berserk": "Berserk",
"bladescale_hone": "Bladescale Hone",
"blood_awakening": "Blood Awakening",
"bloodlust": "Bloodlust",
"burst": "Burst",
"coalescence": "Coalescence",
"counterstrike": "Counterstrike",
"dereliction": "Dereliction",
"dragon_conversion_elemental_attack_up": "Dragon Conversion Elem. Attack Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion Elem. Res. Up",
"dragon_conversion_elemental_attack_up": "Dragon Conversion: Elem. Atk Up",
"dragon_conversion_elemental_res_up": "Dragon Conversion: Elem. Res Up",
"dragonheart": "Dragonheart",
"embolden": "Embolden",
"frenzied_bloodlust": "Frenzied Bloodlust",
"furious": "Furious",
"grinder_s": "Grinder (S)",
"heaven_sent": "Heaven-Sent",
"hellfire_cloak": "Hellfire Cloak",
"heroics": "Heroics",
"inspiration": "Inspiration",
"intrepid_heart": "Intrepid Heart",
"kushala_daora_soul": "Kushala Daora Soul",
"latent_power": "Latent Power",
"maximum_might": "Maximum Might",
"offensive_guard": "Offensive Guard",
"partbreaker": "Partbreaker",
"peak_performance": "Peak Performance",
"powder_mantle_blue": "Powder Mantle (Blue)",
"powder_mantle_red": "Powder Mantle (Red)",
@@ -572,6 +577,7 @@
"resuscitate": "Resuscitate",
"spiribirds_call": "Spiribird's Call",
"status_trigger": "Status Trigger",
"strife": "Strife",
"wall_runner": "Wall Runner",
"wind_mantle": "Wind Mantle"
},
@@ -596,56 +602,104 @@
255,
8192,
8303,
11904,
12031,
12288,
12543,
12784,
12799,
12351,
12800,
19903,
19968,
40879,
40959,
63744,
64255,
65072,
65103,
65280,
65519,
0
],
"weapon_skills": {
"all_extracts_mix": "All Extracts Mix",
"amped_state": "Amped State",
"anchor_rage": "Anchor Rage",
"arc_shot_affinity": "Arc Shot: Affinity",
"arc_shot_brace": "Arc Shot: Brace",
"archdemon_mode": "Archdemon Mode",
"axe_heavy_slam": "Axe: Heavy Slam",
"bead_of_resonance": "Bead of Resonance",
"bolt_boost": "Bolt Boost",
"counter_charger": "Counter Charger",
"destroyer_oil": "Destroyer Oil",
"element_boost": "Element Boost",
"erupting_cannon": "Erupting Cannon",
"fanning_maneuver": "Fannin Maneuver",
"ground_splitter": "Ground Splitter",
"harvest_moon": "Harvest Moon",
"herculean_draw": "Herculean Draw",
"iai_slash": "Iai Slash",
"impact_burst": "Impact Burst",
"ironshine_silk": "Ironshine Silk",
"orange_extract": "O Extract",
"overheat": "Overheat",
"power_sheathe": "Power Sheathe",
"red_extract": "Red Extract",
"rising_moon": "Rising Moon",
"setting_sun": "Setting Sun",
"shield_charge": "Shield Charge",
"silkbind_shockwave": "Silkbind Shockwave",
"soaring_kick": "Soaring Kick",
"sonic_bloom": "Sonic Bloom",
"spiral_thrust": "Spiral Thrust",
"spirit_gauge": "Spirit Gauge",
"spirit_gauge_autofill": "Spirit Gauge Autofill",
"switch_charger": "Switch Charger",
"sword_boost_mode": "Sword Boost Mode",
"sword_charge": "Sword Charge",
"twin_wine": "Twin Wine",
"white_extract": "White Extract",
"wyvernblast_reload": "Wyvernblast Reload",
"wyvernsnipe_reload": "Wyvernsnipe Reload"
"bow": {
"arc_shot_affinity": "Arc Shot: Affinity",
"arc_shot_brace": "Arc Shot: Brace",
"bolt_boost": "Bolt Boost",
"herculean_draw": "Herculean Draw"
},
"charge_blade": {
"element_boost": "Element Boost",
"sword_boost_mode": "Sword Boost Mode"
},
"dual_blades": {
"archdemon_mode": "Archdemon Mode",
"ironshine_silk": "Ironshine Silk"
},
"great_sword": {
"power_sheathe": "Power Sheathe"
},
"gunlance": {
"erupting_cannon": "Erupting Cannon",
"ground_splitter": "Ground Splitter"
},
"hammer": {
"impact_burst": "Impact Burst"
},
"heavy_bowgun": {
"counter_charger": "Counter Charger",
"overheat": "Overheat",
"rising_moon": "Rising Moon",
"setting_sun": "Setting Sun",
"wyvernsnipe_reload": "Wyvernsnipe Reload"
},
"hunting_horn": {
"bead_of_resonance": "Bead of Resonance",
"silkbind_shockwave": "Silkbind Shockwave",
"sonic_bloom": "Sonic Bloom"
},
"insect_glaive": {
"all_extracts_mix": "All Extracts Mix",
"orange_extract": "Orange Extract",
"red_extract": "Red Extract",
"white_extract": "White Extract"
},
"lance": {
"anchor_rage": "Anchor Rage",
"spiral_thrust": "Spiral Thrust",
"twin_wine": "Twin Wine"
},
"light_bowgun": {
"fanning_maneuver": "Fanning Maneuver",
"wyvernblast_reload": "Wyvernblast Reload"
},
"long_sword": {
"harvest_moon": "Harvest Moon",
"iai_slash": "Iai Slash",
"soaring_kick": "Soaring Kick",
"spirit_gauge": "Spirit Gauge",
"spirit_gauge_autofill": "Spirit Gauge Autofill"
},
"switch_axe": {
"amped_state": "Amped State",
"axe_heavy_slam": "Axe: Heavy Slam",
"switch_charger": "Switch Charger"
},
"sword_and_shield": {
"destroyer_oil": "Destroyer Oil"
}
},
"weapons": {
"bow": "Bow",
"charge_blade": "Charge Blade",
"dual_blades": "Dual Blades",
"great_sword": "Great Sword",
"gunlance": "Gunlance",
"hammer": "Hammer",
"heavy_bowgun": "Heavy Bowgun",
"hunting_horn": "Hunting Horn",
"insect_glaive": "Insect Glaive",
"lance": "Lance",
"light_bowgun": "Light Bowgun",
"long_sword": "Long Sword",
"switch_axe": "Switch Axe",
"sword_and_shield": "Sword & Shield"
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.